X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=elisp%2Flilypond-mode.el;h=769331fe0336090e0bdc42368981d316528af836;hb=def21b306e2b8fa2d5630fab0878e9922e197f0c;hp=f91a4c1213e4530109c7e63066ab3e91492399ca;hpb=090125fa1a03c1d72835450deb120ee4223177e0;p=lilypond.git diff --git a/elisp/lilypond-mode.el b/elisp/lilypond-mode.el index f91a4c1213..769331fe03 100644 --- a/elisp/lilypond-mode.el +++ b/elisp/lilypond-mode.el @@ -1,15 +1,15 @@ -;;; -;;; lilypond-mode.el --- Major mode for editing GNU LilyPond music scores -;;; -;;; source file of the GNU LilyPond music typesetter -;;; -;;; (c) 1999--2005 Jan Nieuwenhuizen -;;; -;;; Changed 2001--2003 Heikki Junes -;;; * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001) -;;; * Keyboard shortcuts (12th Sep 2001) -;;; * Inserting tags, inspired on sgml-mode (11th Oct 2001) -;;; * Autocompletion & Info (23rd Nov 2002) +;;;; +;;;; lilypond-mode.el --- Major mode for editing GNU LilyPond music scores +;;;; +;;;; source file of the GNU LilyPond music typesetter +;;;; +;;;; (c) 1999--2007 Jan Nieuwenhuizen +;;;; +;;;; Changed 2001--2003 Heikki Junes +;;;; * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001) +;;;; * Keyboard shortcuts (12th Sep 2001) +;;;; * Inserting tags, inspired on sgml-mode (11th Oct 2001) +;;;; * Autocompletion & Info (23rd Nov 2002) ;;; Inspired on auctex @@ -19,7 +19,7 @@ (require 'easymenu) (require 'compile) -(defconst LilyPond-version "2.3.17" +(defconst LilyPond-version "2.5.20" "`LilyPond-mode' version number.") (defconst LilyPond-help-address "bug-lilypond@gnu.org" @@ -327,18 +327,24 @@ in LilyPond-include-path." :group 'LilyPond :type 'string) -(defcustom LilyPond-xdvi-command "xdvi" +(defcustom LilyPond-dvi-command "xdvi" "Command used to display DVI files." :group 'LilyPond :type 'string) -(defcustom LilyPond-gv-command "gv --watch" +(defcustom LilyPond-ps-command "gv --watch" "Command used to display PS files." :group 'LilyPond :type 'string) +(defcustom LilyPond-pdf-command "xpdf" + "Command used to display PDF files." + + :group 'LilyPond + :type 'string) + (defcustom LilyPond-midi-command "timidity" "Command used to play MIDI files." @@ -361,6 +367,13 @@ in LilyPond-include-path." (interactive) (LilyPond-command (LilyPond-command-menu "MidiAll") 'LilyPond-get-master-file)) +(defun count-matches-as-number (re) + "Count-matches in emacs 22 backwards-incompatibly returns a number" + (let ((result (count-matches re))) + (if (stringp result) + (string-to-number result) + result))) + (defun count-rexp (start end rexp) "Print number of found regular expressions in the region." (interactive "r") @@ -368,7 +381,7 @@ in LilyPond-include-path." (save-restriction (narrow-to-region start end) (goto-char (point-min)) - (count-matches rexp)))) + (count-matches-as-number rexp)))) (defun count-midi-words () "Check number of midi-scores before the curser." @@ -387,8 +400,8 @@ in LilyPond-include-path." (let ((fnameprefix (if (eq LilyPond-command-current 'LilyPond-command-master) (substring (LilyPond-get-master-file) 0 -3); suppose ".ly" LilyPond-region-file-prefix)) - (allcount (string-to-number (substring (count-midi-words) 0 -12))) - (count (string-to-number (substring (count-midi-words-backwards) 0 -12)))) + (allcount (count-midi-words)) + (count (count-midi-words-backwards))) (concat fnameprefix (if (and (> allcount 1) (> count 0)) ; not first score (if (eq count allcount) ; last score @@ -401,7 +414,7 @@ in LilyPond-include-path." (let ((fnameprefix (if (eq LilyPond-command-current 'LilyPond-command-master) (substring (LilyPond-get-master-file) 0 -3); suppose ".ly" LilyPond-region-file-prefix)) - (allcount (string-to-number (substring (count-midi-words) 0 -12)))) + (allcount (count-midi-words))) (concat (if (> allcount 0) ; at least one midi-score (concat fnameprefix ".midi ")) (if (> allcount 1) ; more than one midi-score @@ -416,29 +429,26 @@ in LilyPond-include-path." ;; Should expand this to include possible keyboard shortcuts which ;; could then be mapped to define-key and menu. `( - ("LilyPond" . (,(concat LilyPond-lilypond-command " -ftex %s") "%s" "%l" "View")) - ("TeX" . ("tex '\\nonstopmode\\input %t'" "%t" "%d" "View")) - - ("2Dvi" . (,(concat LilyPond-lilypond-command " -f tex %s") "%s" "%d" "LaTeX")) + ("LilyPond" . (,(concat LilyPond-lilypond-command " %s") "%s" "%l" "View")) + ("TeX" . ("tex '\\nonstopmode\\input %t'" "%t" "%d" "ViewDVI")) + ("2Dvi" . (,(concat LilyPond-lilypond-command " -b tex %s") "%s" "%d" "LaTeX")) ("2PS" . (,(concat LilyPond-lilypond-command " -f ps %s") "%s" "%p" "ViewPS")) - ("2Midi" . (,(concat LilyPond-lilypond-command " -m %s") "%s" "%m" "Midi")) ("2Gnome" . (,(concat LilyPond-lilypond-command " -b gnome %s"))) ("Book" . ("lilypond-book %x" "%x" "%l" "LaTeX")) - ("LaTeX" . ("latex '\\nonstopmode\\input %l'" "%l" "%d" "View")) - - ;; point-n-click (arg: exits upop USR1) - ("SmartView" . ("xdvi %d")) + ("LaTeX" . ("latex '\\nonstopmode\\input %l'" "%l" "%d" "ViewDVI")) ;; refreshes when kicked USR1 - ("View" . (,(concat LilyPond-xdvi-command " %d"))) - ("ViewPS" . (,(concat LilyPond-gv-command " %p"))) + ("View" . (,(concat LilyPond-pdf-command " %f"))) + ("ViewPDF" . (,(concat LilyPond-pdf-command " %f"))) + ("ViewDVI" . (,(concat LilyPond-dvi-command " %d"))) + ("ViewPS" . (,(concat LilyPond-ps-command " %p"))) ;; The following are refreshed in LilyPond-command: ;; - current-midi depends on cursor position and - ("Midi" . (,(concat LilyPond-midi-command " " (LilyPond-string-current-midi)))) ; + ("Midi" . ("")) ; ;; - all-midi depends on number of midi-score. - ("MidiAll" . (,(concat LilyPond-all-midi-command " " (LilyPond-string-all-midi)))) + ("MidiAll" . ("")) ) "AList of commands to execute on the current document. @@ -468,6 +478,7 @@ LilyPond-expand-list. ("%s" . ".ly") ("%t" . ".tex") ("%d" . ".dvi") + ("%f" . ".pdf") ("%p" . ".ps") ("%l" . ".tex") ("%x" . ".tely") @@ -571,26 +582,22 @@ Must be the car of an entry in `LilyPond-command-alist'." (defun LilyPond-command-formatmidi () "Format the midi output of the current document." (interactive) - (LilyPond-command (LilyPond-command-menu "2Midi") 'LilyPond-get-master-file) -) + (LilyPond-command (LilyPond-command-menu "2Midi") 'LilyPond-get-master-file)) -(defun LilyPond-command-smartview () - "View the dvi output of current document." +(defun LilyPond-command-view () + "View the output of current document." (interactive) - (LilyPond-command (LilyPond-command-menu "SmartView") 'LilyPond-get-master-file) -) + (LilyPond-command-viewpdf)) -(defun LilyPond-command-view () - "View the dvi output of current document." +(defun LilyPond-command-viewpdf () + "View the ps output of current document." (interactive) - (LilyPond-command (LilyPond-command-menu "View") 'LilyPond-get-master-file) -) + (LilyPond-command (LilyPond-command-menu "ViewPDF") 'LilyPond-get-master-file)) (defun LilyPond-command-viewps () "View the ps output of current document." (interactive) - (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-get-master-file) -) + (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-get-master-file)) ;; FIXME, this is broken (defun LilyPond-region-file (begin end) @@ -758,8 +765,7 @@ command." (define-key LilyPond-mode-map "\C-c\C-d" 'LilyPond-command-formatdvi) (define-key LilyPond-mode-map "\C-c\C-f" 'LilyPond-command-formatps) (define-key LilyPond-mode-map "\C-c\C-g" 'LilyPond-command-formatgnome) - (define-key LilyPond-mode-map "\C-c\C-s" 'LilyPond-command-smartview) - (define-key LilyPond-mode-map "\C-c\C-v" 'LilyPond-command-view) + (define-key LilyPond-mode-map "\C-c\C-s" 'LilyPond-command-view) (define-key LilyPond-mode-map "\C-c\C-p" 'LilyPond-command-viewps) (define-key LilyPond-mode-map [(control c) return] 'LilyPond-command-current-midi) (define-key LilyPond-mode-map [(control c) (control return)] 'LilyPond-command-all-midi) @@ -983,7 +989,6 @@ command." '([ "LaTeX" (LilyPond-command (LilyPond-command-menu "LaTeX") 'LilyPond-get-master-file) ]) '([ "Kill jobs" LilyPond-kill-jobs t]) '("-----") - '([ "SmartView" LilyPond-command-smartview t]) '([ "View" LilyPond-command-view t]) '([ "ViewPS" LilyPond-command-viewps t]) '("-----") @@ -1099,7 +1104,7 @@ COMMANDS VARIABLES LilyPond-command-alist\t\talist from name to command -LilyPond-xdvi-command\t\tcommand to display dvi files -- bit superfluous" +LilyPond-dvi-command\t\tcommand to display dvi files -- bit superfluous" (interactive) ;; set up local variables (kill-all-local-variables)