From 6c9b47ae84ee5e2f4c7e388d8b1b6fd67daeb61b Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 30 Jan 2012 20:35:57 -0800 Subject: [PATCH] Small define-minor-mode fix for variable: keyword. * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Allow named functions to be used as the cdr of variable:. --- lisp/ChangeLog | 4 +++- lisp/emacs-lisp/easy-mmode.el | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e67f90c24b8..865bd7c36fb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -9,7 +9,9 @@ 2012-01-31 Glenn Morris - * 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 diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 7d412f0fcd4..9e1a079df5c 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -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)) -- 2.11.4.GIT