3 # Created 01 September 2003 by Heikki Junes.
4 # Generates lilypond.words.el for (X)Emacs and lilypond.words.vim for Vim.
13 # keywords not otherwise found
14 for line in ['include','maininput','version']:
15 outlines = outlines + [prekw + line]
18 F = open('lily/my-lily-lexer.cc', 'r')
19 for line in F.readlines():
20 m = re.search(r"(\s*{\")(.*)(\",\s*.*},\s*\n)",line)
22 outlines = outlines + [prekw + m.group(2)]
26 F = open('scm/new-markup.scm', 'r')
27 for line in F.readlines():
28 m = re.search(r"^(\s*\(cons\s*)([a-z-]*)(-markup)",line)
30 outlines = outlines + [prekw + m.group(2)]
33 # identifiers and keywords
36 'ly/chord-modifiers-init.ly',
37 'ly/dynamic-scripts-init.ly',
38 'ly/engraver-init.ly',
40 'ly/gregorian-init.ly',
41 'ly/performer-init.ly',
42 'ly/property-init.ly',
43 'ly/scale-definitions-init.ly',
45 'ly/spanners-init.ly',
48 for line in F.readlines():
49 m = re.search(r"^([a-zA-Z]+)(\s*=)",line)
51 outlines = outlines + [prekw + m.group(1)]
56 'ly/declarations-init.ly',
64 'ly/paper-as5-init.ly',
65 'ly/paper-as9-init.ly',
68 'ly/params-as-init.ly',
71 for line in F.readlines():
72 m = re.search(r"^(\s*)([a-zA-Z]+)(\s*=)",line)
74 outlines = outlines + [prekw + m.group(2)]
81 'ly/drumpitch-init.ly',
91 for line in F.readlines():
92 m = re.search(r"^(\s*\()([a-z]+)([^l]+ly:make-pitch)",line)
94 outlines = outlines + ['' + m.group(2)]
99 'share/lilypond/scm/drums.scm'
102 for line in F.readlines():
103 m = re.search(r"^(\s*\([a-z]+\s*)([a-z]+)(\s*,\(ly:make-pitch)",line)
106 outlines = outlines + ['' + 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 outlines = outlines + ['' + m.group(2)]
127 if sys.argv[1:] == []:
128 out = open('lilypond.words.el', 'w')
130 out = open(sys.argv[1]+'/lilypond.words.el', 'w')
132 # the menu in lilypond-mode.el
142 '//center - / << _ >> -',
143 '//column - / << _ >> -',
144 '//context/ Staff/ = - % { _ } -',
145 '//context/ Voice/ = - % { _ } -',
146 '//markup - { _ } -',
148 '//relative - % { _ } -',
149 '//score - { //n /? //simultaneous { //n _ //n } /! //n //paper { } //n /? //midi { } //n /! } //n -',
150 '//simultaneous - { _ } -',
151 '//sustainDown - _ //sustainUp -',
152 '//times - % { _ } -',
153 '//transpose - % { _ } -',
155 # urg. escape char '/' is replaced with '\\' which python writes as a '\'.
156 out.write(string.join(string.split(line,'/'),'\\') + '\n')
158 # alphabetically ordered words
161 for line in outlines:
163 out.write(line + '\n')