updates for new format logic

This commit is contained in:
Dagen Brock 2023-02-15 21:33:12 -06:00
parent 5c1390ac57
commit 9083586502
8 changed files with 46 additions and 4 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@
*.2mg
*.po
# merlin assembly listings
*_output.txt
*_output.txt
*.exe

View File

@ -27,10 +27,13 @@ Appy abstracts the tools away from a script mindset, and into a project mindset.
## The project file
Currently it uses an `appy.yaml` file in the current project directory. The format is as follows:
Appy uses an `appy.yaml` file in the current project directory. The basic format is as follows:
```
assemble: [main.s, grafix.s, snd.s, a.s, b.s] # <--- list of files to assemble with Merlin
indent: [c.s] # <--- additional files to indent when running `appy fmt`
assembleflags: "-V" # <--- optional flags to Merlin, including macro directory
indent: [c.s] # <--- optional additional files to indent when running `appy fmt`
formatflags: "mc:10 oc:14 cc:30 ms:1 bs:2" # <--- optional flags to indent
disks: # <--- define disks, can be more than one, handy for 140K + 800K
- name: mydiskimage # <---- each disk has a name (ProDOS volume name)
file: mydiskimage800.2mg # <---- each disk has a filename for the image it creates
@ -78,6 +81,34 @@ $ appy fmt # format/indent your assembly file in appy.yaml
# you can also pass in filename(s) to format
```
### About the built-in code formatter
Appy uses the [MerlinGo](https://github.com/digarok/merlingo) formatter to indent source code. You can override the default indentation with the various options documented here.
- `mc`: mnemonic column, where instructions start
- `oc`: opcode column
- `cc`: comment column
- `ms`: min space, the minimum amount of space it will allow between two columns
You can define these in your `appy.yaml` project file like so:
```
formatflags: "mc:10 oc:14 cc:30 ms:1"
```
You can also set it in files directly by adding it as a comment marked `ed:` on any line of the file like:
```
* ed: mc=40 oc=26 cc=48 ms=5 <- indentation modeline
```
OR
```
org $2000
; ed: mc=40 oc=26 cc=48 ms=5 <- indentation modeline
lda ...
```
Again either comment style works on any line of the file, but don't add more than one modeline per file.
Also, if you set format options at the project AND file level, then Appy will use the project defaults except when a file specifies its own settings, then it will respect the file settings instead.
### Version Notes
This is an early experimental version not intended for public use.

View File

@ -1,5 +1,6 @@
assemble: [testsrc/sp.s, testsrc/pc.s, testsrc/fmt.s]
assembleflags: "-V"
formatflags: "mc:10 oc:14 cc:30 ms:1 bs:2"
indent: [testsrc/fmt2.s]
disks:
- name: mydiskimage

View File

@ -8,6 +8,10 @@ import (
)
func Format(args []string) {
// merlingo.Status()
if project.AppyProj.FormatFlags != "" {
merlingo.ParseModeline(project.AppyProj.FormatFlags)
}
if len(args) == 0 {
// format all assembly files in appy.yaml
for _, filename := range project.AppyProj.Assemble {
@ -26,4 +30,5 @@ func Format(args []string) {
merlingo.FmtFile(filename)
}
}
// merlingo.Status()
}

View File

@ -15,6 +15,7 @@ type Project struct {
Assemble []string
Indent []string
AssembleFlags string
FormatFlags string
}
type Disk struct {

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/digarok/appy
go 1.16
require (
github.com/digarok/merlingo v1.0.3
github.com/digarok/merlingo v1.0.4
github.com/fatih/color v1.13.0
github.com/mitchellh/go-homedir v1.1.0
github.com/spf13/cobra v1.1.3

2
go.sum
View File

@ -39,6 +39,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/digarok/merlingo v1.0.3 h1:W0jtn8PZQsBlkpvfODFO38GSFx91uV4LXDhN1dkK62A=
github.com/digarok/merlingo v1.0.3/go.mod h1:rdReR6enl/63dfkssdM4xwg0gXw3j4QprK9e+e8mX9U=
github.com/digarok/merlingo v1.0.4 h1:9OMF44OFas04cKGh9qql56IvOGrWjjbgri+n8LqLd88=
github.com/digarok/merlingo v1.0.4/go.mod h1:rdReR6enl/63dfkssdM4xwg0gXw3j4QprK9e+e8mX9U=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=

View File

@ -25,3 +25,4 @@ ReallyThisisaLoooooongLabelwith stal $e12000,y ; look at this long line
* TABS....
* $D5 $0008 sequence [Application Specific]
; ed: mc=40 oc=26 cc=48 ms=5 bs=2 <- indentation modeline