[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Custom/define-minor-mode problem
From: |
Michael Mauger |
Subject: |
Re: Custom/define-minor-mode problem |
Date: |
Wed, 10 Aug 2005 17:45:43 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
I wrote:
>
> I noticed that my `recentf' menu of recently used files was suddenly
> empty. (It actually has been an issue for a while, I just got around to
> addressing it today.)
>
> Looking at an old copy of my .emacs, I noticed that the mode entry in
> `custom-set-variables' has changed.
>
> Was '(recentf-mode t nil (recentf))
> Now '(recentf-mode t)
>
> Reading the custom code, it makes sense that things are now broken. I
> define the `recentf-save-file' in custom and it's entry appears after the
> `recentf-mode' entry. Entries with a require list (the fourth member of
> the custom entry) are deferred so that all the customizations for the
> mode are complete. There's no longer a require list, so the mode is
> being enabled before its told where the old save file is.
>
> The lack of a require list in the custom entry is problem with all minor
> modes defined via `define-minor-mode'. It is only noticable if the user
> also customizes a variable whose name sorts after the mode variable's
> name and the variable is used when the mode starts.
>
> I spent some time looking at the new `define-minor-mode' code but my head
> exploded. Could someone with more experience with that code take a look
> and see what needs to be done to get the :require property on the
> defcustom for the mode?
>
> Thanks.
>
After reassembling my empty head, I took another look at the `define-minor-
mode' code. Here's an initial attempt at correcting the problem I described
above. This patch works for me, but deserves some more knowledgable review.
Index: emacs/lisp/emacs-lisp/easy-mmode.el
===================================================================
RCS file: /c/cvsroot/emacs/emacs/lisp/emacs-lisp/easy-mmode.el,v
retrieving revision 1.70
diff -c -r1.70 easy-mmode.el
*** emacs/lisp/emacs-lisp/easy-mmode.el 22 Jul 2005 01:26:03 -0000 1.70
--- emacs/lisp/emacs-lisp/easy-mmode.el 10 Aug 2005 16:46:11 -0000
***************
*** 214,220 ****
,@type
,@(cond
((not (and curfile require)) nil)
! ((not (eq require t)) `(:require ,require)))
,@(nreverse extra-keywords))))
;; The actual function.
--- 214,221 ----
,@type
,@(cond
((not (and curfile require)) nil)
! ((not (eq require t)) `(:require ',require))
! (curfile `(:require ',(intern (file-name-sans-extension (file-
name-nondirectory curfile))))))
,@(nreverse extra-keywords))))
;; The actual function.