]> git.eshelyaron.com Git - emacs.git/commitdiff
Small define-minor-mode fix for variable: keyword.
authorGlenn Morris <rgm@gnu.org>
Tue, 31 Jan 2012 04:35:57 +0000 (20:35 -0800)
committerGlenn Morris <rgm@gnu.org>
Tue, 31 Jan 2012 04:35:57 +0000 (20:35 -0800)
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode):
Allow named functions to be used as the cdr of variable:.

lisp/ChangeLog
lisp/emacs-lisp/easy-mmode.el

index e67f90c24b89b1c9eba556bf909a818662f3649e..865bd7c36fb471c9643000f12e9ac0b6c9c0e73e 100644 (file)
@@ -9,7 +9,9 @@
 
 2012-01-31  Glenn Morris  <rgm@gnu.org>
 
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Fix :variable case.
+       * emacs-lisp/easy-mmode.el (define-minor-mode):
+       Fix :variable handling of mode a symbol not equal to modefun.
+       Allow named functions to be used as the cdr of variable:.
 
 2012-01-30  Glenn Morris  <rgm@gnu.org>
 
index 7d412f0fcd45da7d999c445e49e80078f7cabc46..9e1a079df5c8898eedf7ec6570bc09b90f1e98ac 100644 (file)
@@ -160,7 +160,7 @@ For example, you could write
         (hook (intern (concat mode-name "-hook")))
         (hook-on (intern (concat mode-name "-on-hook")))
         (hook-off (intern (concat mode-name "-off-hook")))
-        keyw keymap-sym)
+        keyw keymap-sym tmp)
 
     ;; Check keys.
     (while (keywordp (setq keyw (car body)))
@@ -177,7 +177,15 @@ For example, you could write
        (:require (setq require (pop body)))
        (:keymap (setq keymap (pop body)))
         (:variable (setq variable (pop body))
-         (if (not (functionp (cdr-safe variable)))
+         (setq tmp (cdr-safe variable))
+         (if (not (or (functionp tmp)
+                      (and tmp
+                           (symbolp tmp)
+                           ;; Hack to allow for named functions not within
+                           ;; eval-when-compile.
+                           ;; Cf define-compilation-mode.
+                           (boundp 'byte-compile-function-environment)
+                           (assq tmp byte-compile-function-environment))))
              ;; PLACE is not of the form (GET . SET).
              (setq mode variable)
            (setq mode (car variable))