3 # Created 01 September 2003 by Heikki Junes.
4 # Generates lilypond.words.el for (X)Emacs and lilypond.words.vim for Vim.
14 # keywords not otherwise found
15 for line in ['include','maininput','version']:
19 F = open('lily/my-lily-lexer.cc', 'r')
20 for line in F.readlines():
21 m = re.search(r"(\s*{\")(.*)(\",\s*.*},\s*\n)",line)
23 kw = kw + [m.group(2)]
27 F = open('scm/new-markup.scm', 'r')
28 for line in F.readlines():
29 m = re.search(r"^(\s*\(cons\s*)([a-z-]*)(-markup)",line)
31 kw = kw + [m.group(2)]
34 # identifiers and keywords
37 'ly/chord-modifiers-init.ly',
38 'ly/dynamic-scripts-init.ly',
39 'ly/engraver-init.ly',
41 'ly/gregorian-init.ly',
42 'ly/performer-init.ly',
43 'ly/property-init.ly',
44 'ly/scale-definitions-init.ly',
46 'ly/spanners-init.ly',
49 for line in F.readlines():
50 m = re.search(r"^([a-zA-Z]+)(\s*=)",line)
52 kw = kw + [m.group(1)]
57 'ly/declarations-init.ly',
65 'ly/paper-as5-init.ly',
66 'ly/paper-as9-init.ly',
69 'ly/params-as-init.ly',
72 for line in F.readlines():
73 m = re.search(r"^(\s*)([a-zA-Z]+)(\s*=)",line)
75 kw = kw + [m.group(2)]
82 'ly/drumpitch-init.ly',
92 for line in F.readlines():
93 m = re.search(r"^(\s*\()([a-z]+)([^l]+ly:make-pitch)",line)
95 notes = notes + ['' + m.group(2)]
100 'share/lilypond/scm/drums.scm'
103 for line in F.readlines():
104 m = re.search(r"^(\s*\([a-z]+\s*)([a-z]+)(\s*,\(ly:make-pitch)",line)
106 notes = notes + ['' + m.group(2)]
111 'ly/engraver-init.ly',
112 'ly/performer-init.ly',
115 for line in F.readlines():
117 r"^(\s*.consists\s+\")([a-zA-Z_]+)(\")",
118 r"([\\]name\s+[\"]?)([a-zA-Z_]+)([\"]?)",
119 r"(\s+)([a-zA-Z_]+)(\s*[\\]((set)|(override)))",
121 m = re.search(pattern,line)
123 rw = rw + ['' + m.group(2)]
127 if sys.argv[1:] == []:
128 out_el = open('lilypond.words.el', 'w')
129 out_vim = open('lilypond.words.vim', 'w')
131 out_el = open(sys.argv[1]+'/lilypond.words.el', 'w')
132 out_vim = open(sys.argv[1]+'/lilypond.words.vim', 'w')
134 # alphabetically ordered words
138 out_vim.write('syn match lilyKeyword \"[-_^]\\?\\\\\\(');
141 out_el.write('\\\\' + line + '\n')
142 out_vim.write(line + '\\|')
144 out_vim.write('n\\)\\(\\A\\|\\n\\)\"me=e-1\n')
149 out_vim.write('syn match lilyReservedWord \"\\(\\A\\|\\n\\)\\(');
152 out_el.write(line + '\n')
153 out_vim.write(line + '\\|')
155 out_vim.write('Score\\)\\(\\A\\|\\n\\)\"ms=s+1,me=e-1\n')
160 out_vim.write('syn match lilyNote \"\\<\\(\\(\\(');
163 out_el.write(line + '\n')
164 out_vim.write(line + '\\|')
166 out_vim.write('a\\)\\([,\']\\)\\{,4}\\([?!]\\)\\?\\)\\|s\\|r\\)\\(\\(128\\|64\\|32\\|16\\|8\\|4\\|2\\|1\\|\\\\breve\\|\\\\longa\\|\\\\maxima\\)[.]\\{,8}\\)\\?\\(\\A\\|\\n\\)\"me=e-1\n')
168 # the menu in lilypond-mode.el
178 '//center - / << _ >> -',
179 '//column - / << _ >> -',
180 '//context/ Staff/ = - % { _ } -',
181 '//context/ Voice/ = - % { _ } -',
182 '//markup - { _ } -',
184 '//relative - % { _ } -',
185 '//score - { //n /? //simultaneous { //n _ //n } /! //n //paper { } //n /? //midi { } //n /! } //n -',
186 '//simultaneous - { _ } -',
187 '//sustainDown - _ //sustainUp -',
188 '//times - % { _ } -',
189 '//transpose - % { _ } -',
191 # urg. escape char '/' is replaced with '\\' which python writes as a '\'.
192 out_el.write(string.join(string.split(line,'/'),'\\') + '\n')