all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Michael Mauger <mmaug@yahoo.com>
Subject: Re: Custom/define-minor-mode problem
Date: Wed, 10 Aug 2005 17:45:43 +0000 (UTC)	[thread overview]
Message-ID: <loom.20050810T194202-258@post.gmane.org> (raw)
In-Reply-To: 20050809171721.86914.qmail@web60324.mail.yahoo.com

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.

  reply	other threads:[~2005-08-10 17:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-09 17:17 Custom/define-minor-mode problem Michael Mauger
2005-08-10 17:45 ` Michael Mauger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-08-22 18:20 Michael Mauger
2005-08-24  0:10 ` Richard M. Stallman
2005-08-24 11:33   ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=loom.20050810T194202-258@post.gmane.org \
    --to=mmaug@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.