* buildscripts/lilypond-words.py: add new, renamed file.
Give generated targets and dirs explicitly in arguments.
* GNUmakefile.in, elisp/GNUmakefile, elisp/lilypond-init.el,
elisp/lilypond-mode.el, vim/lilypond-ftplugin.vim,
vim/lilypond-syntax.vim: update to use new lilypond-words.py.
* config.make.in: give '/usr/share/vim' explicitly as $(vimdir).
* vim/GNUmake use --words and --vim targets in lilypond-words.py
+2004-03-23 Heikki Junes <hjunes@cc.hut.fi>
+
+ * buildscripts/lilypond.words.py: remove.
+ * buildscripts/lilypond-words.py: add new, renamed file.
+ Give generated targets and dirs explicitly in arguments.
+
+ * GNUmakefile.in, elisp/GNUmakefile, elisp/lilypond-init.el,
+ elisp/lilypond-mode.el, vim/lilypond-ftplugin.vim,
+ vim/lilypond-syntax.vim: update to use new lilypond-words.py.
+
+ * config.make.in: give '/usr/share/vim' explicitly as $(vimdir).
+
+ * vim/GNUmakefile: use --words and --vim targets in lilypond-words.py
+
2004-03-22 Heikki Junes <hjunes@cc.hut.fi>
* config.make.in: add vimdir.
ln -s ../../../mf/$(outconfbase) tfm && \
ln -s ../../../mf/$(outconfbase) type1
cd $(builddir)/share/lilypond/elisp && \
- ln -sf ../../../elisp/$(outconfbase)/lilypond.words.el . && \
+ ln -sf ../../../elisp/$(outconfbase)/lilypond-words.el . && \
ln -s $(abs-srcdir)/elisp/*.el .
$(foreach i,$(CATALOGS), \
mkdir -p $(builddir)/share/locale/$i/LC_MESSAGES && \
--- /dev/null
+#!@PYTHON@
+
+# Created 01 September 2003 by Heikki Junes.
+# Generates lilypond-words.el for (X)Emacs and lilypond-words[.vim] for Vim.
+
+import string
+import re
+import sys
+
+kw = []
+rw = []
+notes = []
+
+# keywords not otherwise found
+for line in ['include','maininput','version']:
+ kw = kw + [line]
+
+# the main keywords
+F = open('lily/my-lily-lexer.cc', 'r')
+for line in F.readlines():
+ m = re.search(r"(\s*{\")(.*)(\",\s*.*},\s*\n)",line)
+ if m:
+ kw = kw + [m.group(2)]
+F.close()
+
+# keywords in markup
+F = open('scm/new-markup.scm', 'r')
+for line in F.readlines():
+ m = re.search(r"^(\s*\(cons\s*)([a-z-]*)(-markup)",line)
+ if m:
+ kw = kw + [m.group(2)]
+F.close()
+
+# identifiers and keywords
+for name in [
+'ly/a4-init.ly',
+'ly/chord-modifiers-init.ly',
+'ly/dynamic-scripts-init.ly',
+'ly/engraver-init.ly',
+'ly/grace-init.ly',
+'ly/gregorian-init.ly',
+'ly/performer-init.ly',
+'ly/property-init.ly',
+'ly/scale-definitions-init.ly',
+'ly/script-init.ly',
+'ly/spanners-init.ly',
+]:
+ F = open(name, 'r')
+ for line in F.readlines():
+ m = re.search(r"^([a-zA-Z]+)(\s*=)",line)
+ if m:
+ kw = kw + [m.group(1)]
+ F.close()
+
+# more identifiers
+for name in [
+'ly/declarations-init.ly',
+'ly/params-init.ly',
+]:
+ F = open(name, 'r')
+ for line in F.readlines():
+ m = re.search(r"^(\s*)([a-zA-Z]+)(\s*=)",line)
+ if m:
+ kw = kw + [m.group(2)]
+ F.close()
+
+# note names
+for name in [
+'ly/catalan.ly',
+'ly/deutsch.ly',
+'ly/drumpitch-init.ly',
+'ly/english.ly',
+'ly/espanol.ly',
+'ly/italiano.ly',
+'ly/nederlands.ly',
+'ly/norsk.ly',
+'ly/suomi.ly',
+'ly/svenska.ly',
+]:
+ F = open(name, 'r')
+ for line in F.readlines():
+ m = re.search(r"^(\s*\()([a-z]+)([^l]+ly:make-pitch)",line)
+ if m:
+ notes = notes + ['' + m.group(2)]
+ F.close()
+
+
+
+# reserved words
+for name in [
+'ly/engraver-init.ly',
+'ly/performer-init.ly',
+]:
+ F = open(name, 'r')
+ for line in F.readlines():
+ for pattern in [
+ r"^(\s*.consists\s+\")([a-zA-Z_]+)(\")",
+ r"([\\]name\s+[\"]?)([a-zA-Z_]+)([\"]?)",
+ r"(\s+)([a-zA-Z_]+)(\s*[\\]((set)|(override)))",
+ ]:
+ m = re.search(pattern,line)
+ if m:
+ rw = rw + ['' + m.group(2)]
+ F.close()
+
+# the output file
+outdir = '.';
+suffix = ['skip','skip','skip'];
+outs = ['','',''];
+for s in sys.argv[1:]:
+ if s == '--words':
+ suffix[0] = '';
+ if s == '--el':
+ suffix[1] = '.el';
+ if s == '--vim':
+ suffix[2] = '.vim';
+ m = re.search(r"(--dir=)(\S*)",s)
+ if m:
+ outdir = m.group(2)
+
+if '' in suffix:
+ outs[0] = open(outdir+'/lilypond-words'+suffix[0], 'w')
+if '.el' in suffix:
+ outs[1] = open(outdir+'/lilypond-words'+suffix[1], 'w')
+if '.vim' in suffix:
+ outs[2] = open(outdir+'/lilypond-words'+suffix[2], 'w')
+
+# alphabetically ordered words
+kw.sort()
+kw.reverse()
+prevline = ''
+if '.vim' in suffix:
+ outs[2].write('syn match lilyKeyword \"[-_^]\\?\\\\\\(');
+for line in kw:
+ if line != prevline:
+ if '' in suffix:
+ outs[0].write('\\\\' + line + '\n')
+ if '.el' in suffix:
+ outs[1].write('\\\\' + line + '\n')
+ if '.vim' in suffix:
+ outs[2].write(line + '\\|')
+ prevline = line
+if '.vim' in suffix:
+ outs[2].write('n\\)\\(\\A\\|\\n\\)\"me=e-1\n')
+
+rw.sort()
+rw.reverse()
+prevline = ''
+if '.vim' in suffix:
+ outs[2].write('syn match lilyReservedWord \"\\(\\A\\|\\n\\)\\(')
+for line in rw:
+ if line != prevline:
+ if '' in suffix:
+ outs[0].write(line + '\n')
+ if '.el' in suffix:
+ outs[1].write(line + '\n')
+ if '.vim' in suffix:
+ outs[2].write(line + '\\|')
+ prevline = line
+if '.vim' in suffix:
+ outs[2].write('Score\\)\\(\\A\\|\\n\\)\"ms=s+1,me=e-1\n')
+
+notes.sort()
+notes.reverse()
+prevline = ''
+if '.vim' in suffix:
+ outs[2].write('syn match lilyNote \"\\<\\(\\(\\(');
+for line in notes:
+ if line != prevline:
+ if '' in suffix:
+ outs[0].write(line + '\n')
+ if '.el' in suffix:
+ outs[1].write(line + '\n')
+ if '.vim' in suffix:
+ outs[2].write(line + '\\|')
+ prevline = line
+if '.vim' in suffix:
+ outs[2].write('a\\)\\([,\']\\)\\{,4}\\([?!]\\)\\?\\)\\|s\\|r\\)\\(\\(128\\|64\\|32\\|16\\|8\\|4\\|2\\|1\\|\\\\breve\\|\\\\longa\\|\\\\maxima\\)[.]\\{,8}\\)\\?\\(\\A\\|\\n\\)\"me=e-1\n')
+
+# the menu in lilypond-mode.el
+for line in [
+'/( - _ /) -',
+'/[ - _ /] -',
+'< - _ > -',
+'<< - _ >> -',
+'///( - _ ///) -',
+'///[ - _ ///] -',
+'///< - _ ///! -',
+'///> - _ ///! -',
+'//center - / << _ >> -',
+'//column - / << _ >> -',
+'//context/ Staff/ = - % { _ } -',
+'//context/ Voice/ = - % { _ } -',
+'//markup - { _ } -',
+'//notes - { _ } -',
+'//relative - % { _ } -',
+'//score - { //n /? //simultaneous { //n _ //n } /! //n //paper { } //n /? //midi { } //n /! } //n -',
+'//simultaneous - { _ } -',
+'//sustainDown - _ //sustainUp -',
+'//times - % { _ } -',
+'//transpose - % { _ } -',
+]:
+ # urg. escape char '/' is replaced with '\\' which python writes as a '\'.
+ if '.el' in suffix:
+ outs[1].write(string.join(string.split(line,'/'),'\\') + '\n')
+
+if '' in suffix:
+ outs[0].close()
+if '.el' in suffix:
+ outs[1].close()
+if '.vim' in suffix:
+ outs[2].close()
+++ /dev/null
-#!@PYTHON@
-
-# Created 01 September 2003 by Heikki Junes.
-# Generates lilypond.words.el for (X)Emacs and lilypond.words.vim for Vim.
-
-import string
-import re
-import sys
-
-kw = []
-rw = []
-notes = []
-
-# keywords not otherwise found
-for line in ['include','maininput','version']:
- kw = kw + [line]
-
-# the main keywords
-F = open('lily/my-lily-lexer.cc', 'r')
-for line in F.readlines():
- m = re.search(r"(\s*{\")(.*)(\",\s*.*},\s*\n)",line)
- if m:
- kw = kw + [m.group(2)]
-F.close()
-
-# keywords in markup
-F = open('scm/new-markup.scm', 'r')
-for line in F.readlines():
- m = re.search(r"^(\s*\(cons\s*)([a-z-]*)(-markup)",line)
- if m:
- kw = kw + [m.group(2)]
-F.close()
-
-# identifiers and keywords
-for name in [
-'ly/a4-init.ly',
-'ly/chord-modifiers-init.ly',
-'ly/dynamic-scripts-init.ly',
-'ly/engraver-init.ly',
-'ly/grace-init.ly',
-'ly/gregorian-init.ly',
-'ly/performer-init.ly',
-'ly/property-init.ly',
-'ly/scale-definitions-init.ly',
-'ly/script-init.ly',
-'ly/spanners-init.ly',
-]:
- F = open(name, 'r')
- for line in F.readlines():
- m = re.search(r"^([a-zA-Z]+)(\s*=)",line)
- if m:
- kw = kw + [m.group(1)]
- F.close()
-
-# more identifiers
-for name in [
-'ly/declarations-init.ly',
-'ly/params-init.ly',
-]:
- F = open(name, 'r')
- for line in F.readlines():
- m = re.search(r"^(\s*)([a-zA-Z]+)(\s*=)",line)
- if m:
- kw = kw + [m.group(2)]
- F.close()
-
-# note names
-for name in [
-'ly/catalan.ly',
-'ly/deutsch.ly',
-'ly/drumpitch-init.ly',
-'ly/english.ly',
-'ly/espanol.ly',
-'ly/italiano.ly',
-'ly/nederlands.ly',
-'ly/norsk.ly',
-'ly/suomi.ly',
-'ly/svenska.ly',
-]:
- F = open(name, 'r')
- for line in F.readlines():
- m = re.search(r"^(\s*\()([a-z]+)([^l]+ly:make-pitch)",line)
- if m:
- notes = notes + ['' + m.group(2)]
- F.close()
-
-
-
-# reserved words
-for name in [
-'ly/engraver-init.ly',
-'ly/performer-init.ly',
-]:
- F = open(name, 'r')
- for line in F.readlines():
- for pattern in [
- r"^(\s*.consists\s+\")([a-zA-Z_]+)(\")",
- r"([\\]name\s+[\"]?)([a-zA-Z_]+)([\"]?)",
- r"(\s+)([a-zA-Z_]+)(\s*[\\]((set)|(override)))",
- ]:
- m = re.search(pattern,line)
- if m:
- rw = rw + ['' + m.group(2)]
- F.close()
-
-# the output file
-if sys.argv[1:] == []:
- out_el = open('lilypond.words.el', 'w')
- out_vim = open('lilypond.words.vim', 'w')
-else:
- out_el = open(sys.argv[1]+'/lilypond.words.el', 'w')
- out_vim = open(sys.argv[1]+'/lilypond.words.vim', 'w')
-
-# alphabetically ordered words
-kw.sort()
-kw.reverse()
-prevline = ''
-out_vim.write('syn match lilyKeyword \"[-_^]\\?\\\\\\(');
-for line in kw:
- if line != prevline:
- out_el.write('\\\\' + line + '\n')
- out_vim.write(line + '\\|')
- prevline = line
-out_vim.write('n\\)\\(\\A\\|\\n\\)\"me=e-1\n')
-
-rw.sort()
-rw.reverse()
-prevline = ''
-out_vim.write('syn match lilyReservedWord \"\\(\\A\\|\\n\\)\\(');
-for line in rw:
- if line != prevline:
- out_el.write(line + '\n')
- out_vim.write(line + '\\|')
- prevline = line
-out_vim.write('Score\\)\\(\\A\\|\\n\\)\"ms=s+1,me=e-1\n')
-
-notes.sort()
-notes.reverse()
-prevline = ''
-out_vim.write('syn match lilyNote \"\\<\\(\\(\\(');
-for line in notes:
- if line != prevline:
- out_el.write(line + '\n')
- out_vim.write(line + '\\|')
- prevline = line
-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')
-
-# the menu in lilypond-mode.el
-for line in [
-'/( - _ /) -',
-'/[ - _ /] -',
-'< - _ > -',
-'<< - _ >> -',
-'///( - _ ///) -',
-'///[ - _ ///] -',
-'///< - _ ///! -',
-'///> - _ ///! -',
-'//center - / << _ >> -',
-'//column - / << _ >> -',
-'//context/ Staff/ = - % { _ } -',
-'//context/ Voice/ = - % { _ } -',
-'//markup - { _ } -',
-'//notes - { _ } -',
-'//relative - % { _ } -',
-'//score - { //n /? //simultaneous { //n _ //n } /! //n //paper { } //n /? //midi { } //n /! } //n -',
-'//simultaneous - { _ } -',
-'//sustainDown - _ //sustainUp -',
-'//times - % { _ } -',
-'//transpose - % { _ } -',
-]:
- # urg. escape char '/' is replaced with '\\' which python writes as a '\'.
- out_el.write(string.join(string.split(line,'/'),'\\') + '\n')
-
-out_el.close()
-out_vim.close()
docdir = $(datadir)/doc/
omfdir = $(datadir)/omf/
elispdir = $(datadir)/emacs/site-lisp
-vimdir = $(datadir)/vim
+vimdir = /usr/share/vim
+# forced instead of $(datadir)/vim
# move out of config.make.in?
package_datadir = $(datadir)/$(package)
INSTALLATION_FILES=$(EL_FILES)
INSTALLATION_OUT_DIR=$(elispdir)
-INSTALLATION_OUT_FILES=$(outdir)/lilypond.words.el
+INSTALLATION_OUT_FILES=$(outdir)/lilypond-words.el
STEPMAKE_TEMPLATES=elisp install install-out
include $(depth)/make/stepmake.make
-LILYPOND_WORDS = $(outdir)/lilypond.words.el $(outdir)/lilypond.words.vim
+LILYPOND_WORDS = $(outdir)/lilypond-words.el
LILYPOND_WORDS_DEPENDS =\
$(topdir)/lily/my-lily-lexer.cc \
- $(buildscript-dir)/lilypond.words.py \
+ $(buildscript-dir)/lilypond-words.py \
$(topdir)/scm/new-markup.scm \
$(topdir)/ly/engraver-init.ly
$(LILYPOND_WORDS):
- cd $(topdir) && $(PYTHON) buildscripts/lilypond.words.py $(builddir)/elisp/$(outconfbase)
+ cd $(topdir) && $(PYTHON) buildscripts/lilypond-words.py --el --dir=$(builddir)/elisp/$(outconfbase)
all: $(LILYPOND_WORDS)
;; Emacs mode for entering music and running LilyPond is contained in
;; the source archive as `lilypond-mode.el', `lilypond-indent.el',
-;; `lilypond-font-lock.el' and `lilypond.words.el'. You should install
+;; `lilypond-font-lock.el' and `lilypond-words.el'. You should install
;; these files to a directory included in your `load-path'.
;; File `lilypond-init.el' should be placed to `load-path/site-start.d/'
;; or appended to your `~/.emacs' or `~/.emacs.el'.
Finds file lilypond-words.el from load-path."
(let ((fn nil)
(lp load-path)
- (words-file "lilypond.words.el"))
+ (words-file "lilypond-words.el"))
(while (and (> (length lp) 0) (not fn))
(setq fn (concat (car lp) "/" words-file))
(if (not (file-readable-p fn))
(progn (setq fn nil) (setq lp (cdr lp)))))
(if (not fn)
- (progn (message "Warning: `lilypond.words.el' not found in `load-path'. See `lilypond-init.el'.")
+ (progn (message "Warning: `lilypond-words.el' not found in `load-path'. See `lilypond-init.el'.")
(sit-for 5 0)))
fn))
depth = ..
+INSTALLATION_OUT_DIR=$(vimdir)/syntax
+INSTALLATION_OUT_FILES=$(LILYPOND_WORDS)
+# $(outdir)/lilypond-words $(outdir)/lilypond-words.el
+
+STEPMAKE_TEMPLATES=install-out
+
# vimdir defined in config.make
include $(depth)/make/stepmake.make
$(INSTALL) lilypond-syntax.vim $(vimdir)/syntax/lilypond.vim
EXTRA_DIST_FILES=filetype.vim
+
+LILYPOND_WORDS = $(outdir)/lilypond-words $(outdir)/lilypond-words.vim
+LILYPOND_WORDS_DEPENDS =\
+ $(topdir)/lily/my-lily-lexer.cc \
+ $(buildscript-dir)/lilypond-words.py \
+ $(topdir)/scm/new-markup.scm \
+ $(topdir)/ly/engraver-init.ly
+
+$(LILYPOND_WORDS):
+ cd $(topdir) && $(PYTHON) buildscripts/lilypond-words.py --words --vim --dir=$(builddir)/vim/$(outconfbase)
+
+all: $(LILYPOND_WORDS)
+
" Last Change: 2004 March 1
"
" Installed As: vim/ftplugin/lilypond.vim
-" Uses Generated File: vim/syntax/lilypond.words.el
+" Uses Generated File: vim/syntax/lilypond-words.el
"
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
map <buffer> <S-F12> :g/%.*/normal 0x<Return>
"
" Completions in Insert/Replace-mode with <Ctrl-N>
-setlocal dictionary-=~/.vim/syntax/lilypond.words.el dictionary+=~/.vim/syntax/lilypond.words.el
+setlocal dictionary-=$VIM/syntax/lilypond-words dictionary+=$VIM/syntax/lilypond-words
setlocal complete-=k complete+=k
"
setlocal showmatch
" Version: 6.1-1
"
" Installed As: vim/syntax/lilypond.vim
-" Uses Generated File: vim/syntax/lilypond.words.vim
+" Uses Generated File: vim/syntax/lilypond-words.vim
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
" Read the LilyPond syntax match groups:
" lilyKeyword, lilyReservedWord, lilyNote
if version < 600
- so <sfile>:p:h/lilypond.words.vim
+ so <sfile>:p:h/lilypond-words.vim
else
- runtime! syntax/lilypond.words.vim
+ runtime! syntax/lilypond-words.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif