Hi, I am a newbie struggling to get started. I can see a lot of potential in using Geany to process my ".abc" music files so I am sure once I get going it will be very useful. I am finding the documentation a little frustrating, I spend all my time following links to different parts of the documentation file without ever finding any good examples. What I need right now is a good tutorial on how to get syntax highlighting working on my new filedef.
Here is an example ".abc" file:
X:1 T:24 Carat C:Hilary Herbert N:3Cpl set %%writefields Q 1 L:1/4 M:2/2 Q:1/2=100 K:F V:1 "^A" |: "F"FA/G/ "/E"FC | "/D"FA "/C"c2 | "C"cc/d/ "C7"cB | "F/F"A2 "C"G2 | "F/F"A"/G"B "/A"cf | "C/Bb"ed "/C"c2 | "F/F"f>F "/F"A"/A"F | "C"G2 "F/F"F2"^B" :||: "F"cc/c/ cF | "C"BA GC | "F"cc/c/ cF | "F"A2 "C"G2 | "F/C"FF/F/ F"/F"A | cA FC | "/F"FF/A/ "/A"c"/F"B/A/ | "C"G2 "F"F2 :| V:2 |: "F"A,C "/E"A,2 | "/D"A,C "/C"F2 | "C"EE/F/ "C7"E2 | "F/F"FC "C"EC | "F/F"A"/G"G "/A"F2 | "C/Bb"GF "/C"E2 | "F/F"F>A, "/F"C"/A"A, | "C"EC "F/F"F2 :| |: "F"AC AC | "C"EC C2 | "F"AC AC | "F"FC "C"E2 | "F/C"A,A,/A,/A,C | "/F"FC "/A"C2 | "/F"A,A,/C/ "/A"F"/F"C | "C"EC "F"F2 :|
X:2 T:Abbeygate T:tune: Miss Sulyard's Delight N:Play 16 bars AB, original tune had repeats C:Ron Coxall L:1/8 M:4/4 Q:1/4=100 K:Bb V:1 "^A""Bb"f2 e/d/c/B/ "F"ABcd | "F7"ecBA "Bb7"Bd F>D | "Eb"EGBd egbg | "Bb"fd"C7"cB "F"AcF2 | "Bb"f2 e/d/c/B/ "F"ABcd | "F7"ecBA "Bb7"Bd F>D | "Eb"EGBd egbg | "Bb"fd"F7"eA [Ec]2"Bb"[DB]2 || "^B""F7".FAcA "Bb".Bdfd | "F7"e2d/e/f/e/ "Bb"dfdB | "Cm"Gc=Bc "Eb"e>df>e | "Cm"gec"C7"B "F"AcAF | "F7".FAcA "Bb".Bdfd | "F7"e2d/e/f/e/ "Bb"dfdB | "Eb"gabg "Bb"fd"C7"ec | "Bb"Bd"F"FA "F7"[Ec]2"Bb"[DB]2 |] V:2 B2FD FGAB | cAF2 D2B,2 | G,2E2 G2E2 | D2E2 F2A,2 | B,2FD FGAB | cAF2 D2B,2 | G,2E2 G2E2 | D2C2 A,2B,2 || .A,2A,2 .B,2B,2 | C2F2 B3F | E2C2 G2E2 | C3=E F3A, | .A,2A,2 .B,2B,2 | C2F2 B3F | E2G2 B2G2 | DB,A,C A,2B,2 |]
X:3 T:Aberdeen T:or The De'il's Dead N:Original tune is just A&B parts, played 3x(AABB AABB) N:C&D added by D Bearon 2019 - now play 3x(ABABCCDD) L:1/4 %writefields Q %%chords |:F|Fx2 Bbx2|Fx2 Bbx2|C|F| | Bbx2 Fx2|Gm||F| | | Bbx2 Cx2|F| |Bbx2 Fx2|Gmx2 Gmx2:| %%endchords M:2/2 Q:1/2=110 K:F V:1 |: "^A"F>G Ac | f2 ed | f2 ed | e/f/g GA | F>G Ac | f>g ag | fd cA | G2 d2 || "^B"F>G AB | cF A/B/c/A/ | cF A/B/c/A/ | d/c/B/A/ GA | F>G Ac | f>g ag | fd cA | G2 "Dm"d2 :| V:2 |: A,>C F2 | A2 B2 | A2 B2 | cE2 C | A,>C F2 | A>B c2 | B2 AF | B,D B,G, || A,>C FC | A,2 F2 | A,2F2 | FD EC | A,>C FA | A>G F2 | B2 AF | D4 :| %%newpage %%chords |:Gm| | |Dm|Gm| Gm:|Dm|Gm|:Dm|Gm|] Dm| |C|Gx2 Cx2|Dm|Dmx2 Gmx2| Dmx2 A7x2|Dmx2 A7x2:|Dmx2 Cx2|Bbx2 A7x2|Gmx2 Fx2|Gm|] %%endchords V:1 |: "^C"G>A Bd | gG B/c/d | gG B/c/d | A/B/c BA | G>A Bd | g>a bg |1 fd cA | G2 G2 :|2 fd ba | g2 g2 |] |: "^D"d>e fg | ad f/g/a/f/ | gc e/f/g/e/ | g/f/e/d/ cg |1 d>e fg | ad b2 | a>g fe | d2 a2 :|2 d>e fg | ab ag | fd cA | G2 "(Bb)"d2 |] V:2 |: DG, DG, | DG, DG, | DG, DG, | DA, D2 | DG, DG, | DG, DG, |1 [A,D]3 [A,D] |[G,D]2 [G,D]2 :|2 [A,D]3 [A,D] |[G,D]2 [G,D]2 |] |: AD AD | F2 AD | EG cG | =BG c2 |1 AD AD | F2 G2 | F2 GA | F2 EG :|2 FF EE | DD ^CC | G,B, A,C | B,2 B,2 |]
As can be seen it has a very simple structure. Syntax highlighting would consist of highlighting comment lines (beginning with a single %) - colour A say, start-of-tune lines (X: lines) - colour B, Title (T: lines) - colour C, directive lines (beginning %%) - colour D. Then key words highlighted (M: K: etc) That is about it really, except I would really like to see all my T:'s in the symbols tab so that I can quickly go to those tunes (I guess that is a separate issue of tags that I have not yet delved into)
Here is what I have done so far to make a start: 1) Created an entry in my filetype_extensions file to add: [Extensions] ABC=*.abc;
2) Created a filetypes.ABC.conf file as follows (removing preset comment lines) [styling] comment=#c00;;;true
[keywords] primary=X: T: M: K: C: L: Q: K: V: P: secondary=N S B %%chords endchords staves
[settings] extension=abc lexer_filetype=ABC comment_single=% comment_use_indent=false mime_type=text/vnd.abc
This has no effect as it stands, though it is clearly being read because if I change BOTH [styling] to [styling=C] and "lexer_filetype=ABC" "lexer_filetype=C" then I get some highlighting, though obviously not what I am looking for. It is, however, interesting to note that it then highlights "N", "B", "endchords" but NOT "%%chords" or "X:", "T:" etc - which makes me think that ":" and "%" may need special treatment - escaping in some way.
Clearly I am missing something that I am not doing correctly to get the syntax highlighting to work. Then there is the question of where to go for the symbols.
A noddy guide to getting started, with examples would be very useful. Thanks in advance.
NornB
Clearly I am missing something that I am not doing correctly to get the syntax highlighting to work.
Yes. :)
Syntax highlighting is done by the Scintilla (the editing widget, separate project) lexers, not by Geany. The styling just maps the Scintilla syntactic entities to styles, it does not define the entities. The lexers are C++ code, not something that can be defined by users outside the configuration the lexer code allows.
Some lexers allow keyword lists as you have noticed, but thats within the framework of the language being analysed, not to define a whole new language (well, unless your new language is extremely similar).
Then there is the question of where to go for the symbols.
Symbols are defined by parsers imported from the universal ctags project, and those parsers are C code. Because they parse language semantics to get symbols they are much less flexible than the highlighting lexers.
A noddy guide to getting started, with examples would be very useful. Thanks in advance.
There is no example because lexers are not part of the Geany project, they are just imported from Scintilla every time a new version is included. As the manual says you can define a new filetype using an existing lexer, and/or parser, but you can't define a new one without compiling new code.
Cheers Lex
NornB _______________________________________________ Users mailing list Users@lists.geany.org https://lists.geany.org/cgi-bin/mailman/listinfo/users
Hi Norman, I cannot help you with Geany, but out of curiosity, what music software is using this file format? And you might be better, using one of these: Sibelius/Finale/Notion6 or an affordable alternative like these bellow. Good luck!Eugene Top Best Free Music Notation Software for Windows 2020
| | | | | |
|
| | | | Top Best Free Music Notation Software for Windows 2020
If you are a music composer and use tech to refine your creations, then these Music notations software and Music... |
|
|
On Sunday, April 19, 2020, 7:07:48 PM EDT, Lex Trotman elextr@gmail.com wrote:
Clearly I am missing something that I am not doing correctly to get the syntax highlighting to work.
Yes. :)
Syntax highlighting is done by the Scintilla (the editing widget, separate project) lexers, not by Geany. The styling just maps the Scintilla syntactic entities to styles, it does not define the entities. The lexers are C++ code, not something that can be defined by users outside the configuration the lexer code allows.
Some lexers allow keyword lists as you have noticed, but thats within the framework of the language being analysed, not to define a whole new language (well, unless your new language is extremely similar).
Then there is the question of where to go for the symbols.
Symbols are defined by parsers imported from the universal ctags project, and those parsers are C code. Because they parse language semantics to get symbols they are much less flexible than the highlighting lexers.
A noddy guide to getting started, with examples would be very useful. Thanks in advance.
There is no example because lexers are not part of the Geany project, they are just imported from Scintilla every time a new version is included. As the manual says you can define a new filetype using an existing lexer, and/or parser, but you can't define a new one without compiling new code.
Cheers Lex
NornB _______________________________________________ Users mailing list Users@lists.geany.org https://lists.geany.org/cgi-bin/mailman/listinfo/users
_______________________________________________ Users mailing list Users@lists.geany.org https://lists.geany.org/cgi-bin/mailman/listinfo/users