]> git.donarmstrong.com Git - lilypond.git/blobdiff - elisp/lilypond-mode.el
Issue 5167/6: Changes: show \markup xxx = ... \etc assignments
[lilypond.git] / elisp / lilypond-mode.el
index b460c4a62bca370598c2728e28db0512b1b989ca..0bf05408e2075240253a54efb23876dc2d3ff236 100644 (file)
@@ -1,7 +1,7 @@
 ;;;; lilypond-mode.el -- Major mode for editing GNU LilyPond music scores
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;  
-;;;; Copyright (C) 1999--2010 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1999--2015 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Changed 2001--2003 Heikki Junes <heikki.junes@hut.fi>
 ;;;;    * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001)
 ;;;;    * Keyboard shortcuts (12th Sep 2001)
@@ -286,15 +286,14 @@ in LilyPond-include-path."
 (defun LilyPond-compile-file (command name)
   ;; We maybe should know what we run here (Lily, lilypond, tex)
   ;; and adjust our error-matching regex ?
-  (compile-internal
+  (compilation-start
    (if (eq LilyPond-command-current 'LilyPond-command-master)
        command
      ;; use temporary directory for Commands on Buffer/Region
      ;; hm.. the directory is set twice, first to default-dir
-     (concat "cd " (LilyPond-temp-directory) "; " command))
-   "No more errors" name))
+     (concat "cd " (LilyPond-temp-directory) "; " command))))
 
-;; do we still need this, now that we're using compile-internal?
+;; do we still need this, now that we're using compilation-start?
 (defun LilyPond-save-buffer ()
   "Save buffer and set default command for compiling."
   (interactive)
@@ -433,18 +432,16 @@ in LilyPond-include-path."
 (defcustom LilyPond-command-alist
   ;; Should expand this to include possible keyboard shortcuts which
   ;; could then be mapped to define-key and menu.
-  `(
-    ("LilyPond" . (,(concat LilyPond-lilypond-command " %s") "%s" "%l" "View"))
-    ("2PS" . (,(concat LilyPond-lilypond-command " -f ps %s") "%s" "%p" "ViewPS"))
-    ("2Gnome" . (,(concat LilyPond-lilypond-command " -b gnome %s")))
-
+  '(
+    ("LilyPond" . ((LilyPond-lilypond-command " %s") "%s" "%l" "View"))
+    ("2PS" . ((LilyPond-lilypond-command " -f ps %s") "%s" "%p" "ViewPS"))
     ("Book" . ("lilypond-book %x" "%x" "%l" "LaTeX"))
     ("LaTeX" . ("latex '\\nonstopmode\\input %l'" "%l" "%d" "ViewDVI"))
 
     ;; refreshes when kicked USR1
-    ("View" . (,(concat LilyPond-pdf-command " %f")))
-    ("ViewPDF" . (,(concat LilyPond-pdf-command " %f")))
-    ("ViewPS" . (,(concat LilyPond-ps-command " %p")))
+    ("View" . ((LilyPond-pdf-command " %f")))
+    ("ViewPDF" . ((LilyPond-pdf-command " %f")))
+    ("ViewPS" . ((LilyPond-ps-command " %p")))
 
     ;; The following are refreshed in LilyPond-command:
     ;; - current-midi depends on cursor position and
@@ -570,11 +567,6 @@ Must be the car of an entry in `LilyPond-command-alist'."
   (LilyPond-command (LilyPond-command-menu "2PS") 'LilyPond-get-master-file)
 )
 
-(defun LilyPond-command-formatgnome ()
-  "Format the gnome output of the current document."
-  (interactive)
-  (LilyPond-command (LilyPond-command-menu "2Gnome") 'LilyPond-get-master-file))
-
 (defun LilyPond-command-formatmidi ()
   "Format the midi output of the current document."
   (interactive)
@@ -624,23 +616,35 @@ Must be the car of an entry in `LilyPond-command-alist'."
   (LilyPond-command-select-buffer)
   (LilyPond-command-region (point-min) (point-max)))
 
-(defun LilyPond-command-expand (string file)
-  (let ((case-fold-search nil))
-    (if (string-match "%" string)
-       (let* ((b (match-beginning 0))
-              (e (+ b 2))
-              (l (split-file-name file))
-              (dir (car l))
-              (base (cadr l)))
-         (LilyPond-command-expand
-          (concat (substring string 0 b)
-                  (shell-quote-argument (concat dir base))
-                  (let ((entry (assoc (substring string b e)
-                                      LilyPond-expand-alist)))
-                    (if entry (cdr entry) ""))
-                  (substring string e))
-          file))
-      string)))
+(defun LilyPond-command-expand (arg file)
+  (cond
+   ((listp arg)
+    (mapconcat (lambda (arg) (LilyPond-command-expand arg file))
+              arg
+              ""))
+   ((and (symbolp arg) (boundp arg)
+        ;; Avoid self-quoting symbols
+        (not (eq (symbol-value arg) arg)))
+    (LilyPond-command-expand (symbol-value arg) file))
+   ((stringp arg)
+    (let ((case-fold-search nil))
+      (if (string-match "%" arg)
+         (let* ((b (match-beginning 0))
+                (e (+ b 2))
+                (l (split-file-name file))
+                (dir (car l))
+                (base (cadr l)))
+           (concat (substring arg 0 b)
+                   (shell-quote-argument (concat dir base))
+                   (LilyPond-command-expand
+                    (concat
+                     (let ((entry (assoc (substring arg b e)
+                                         LilyPond-expand-alist)))
+                       (if entry (cdr entry) ""))
+                     (substring arg e))
+                    file)))
+       arg)))
+   (t (error "Bad expansion `%S'" arg))))
 
 (defun LilyPond-shell-process (name buffer command)
   (let ((old (current-buffer)))
@@ -758,7 +762,6 @@ command."
   (define-key LilyPond-mode-map "\C-c\C-c" 'LilyPond-command-master)
   (define-key LilyPond-mode-map "\C-cm" 'LilyPond-command-formatmidi)
   (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-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)
@@ -995,17 +998,17 @@ command."
 (defun LilyPond-menu-keywords ()
   "Make Insert Tag menu. 
 
-The Insert Tag -menu is splitted into parts if it is long enough."
+The Insert Tag -menu is split into parts if it is long enough."
 
   (let ((li (mapcar 'LilyPond-menu-keywords-item LilyPond-menu-keywords))
        (w (round (sqrt (length LilyPond-menu-keywords))))
-       (splitted '())
+       (split '())
        (imin 0) imax lw rw)
     (while (< imin (length LilyPond-menu-keywords))
       (setq imax (- (min (+ imin w) (length LilyPond-menu-keywords)) 1))
       (setq lw (nth imin LilyPond-menu-keywords)) 
       (setq rw (nth imax LilyPond-menu-keywords))
-      (add-to-list 'splitted
+      (add-to-list 'split
          (let ((l (list (concat (substring lw 0 (min 7 (length lw))) 
                                " ... " 
                                (substring rw 0 (min 7 (length rw)))))))
@@ -1013,7 +1016,7 @@ The Insert Tag -menu is splitted into parts if it is long enough."
             (add-to-list 'l (nth imin li))
             (setq imin (1+ imin)))
           (reverse l))))
-    (if (> (length LilyPond-menu-keywords) 12) (reverse splitted) li)))
+    (if (> (length LilyPond-menu-keywords) 12) (reverse split) li)))
 
 ;;; LilyPond-mode-menu should not be interactive, via "M-x LilyPond-<Tab>"
 (easy-menu-define LilyPond-mode-menu