emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: define-derived-mode


From: Luc Teirlinck
Subject: Re: define-derived-mode
Date: Mon, 9 May 2005 19:07:08 -0500 (CDT)

Lute Kamstra wrote:

   > which was an incompatible change.

   Not compatible with what?

With pre-existing defvars or defcustoms for these hooks.  (Unless you
checked for _all_ uses of `define-generic-mode' that there are none.
But how did you get a list of _all_ outside packages that use it?)

In the case of `define-minor-mode' two concrete examples of variables
with competing defcustoms are auto-revert-mode-hook and
global-auto-revert-mode-hook.  In this particular case, not too much
harm is done, but it is not exactly very clean.

   I primarily wanted to define the mode hook as a variable so that I
   could give it docstring.  I chose defcustom over defvar because
   define-minor-mode and quite some other major modes did that.  I don't
   strongly object to making the defcustom a defvar, but I don't
   understand your problems with the use of defcustom:

I have a problem with _both_ defvar and defcustom.  Hooks do not need
a defvar, most hooks do not have them.  The only reason for a defvar
is to add a docstring.  You use the defvar to give the hook the
docstring: "Hook run when entering Mymode mode.".  This "generic"
docstring contains no info that is not already contained in the hook's
name and it could overwrite _real_ info contained in a handwritten
defvar or defcustom.

If you want to make people aware of the mode hook, it would seem
better to put an additional sentence in the default mode doc:

"Mymode mode.
This a generic mode defined with `define-generic-mode'.
As all such modes, it runs `foo-mode-hook' as the very last thing it does."

   I don't recall the bugs you refer to; could you give me the subject(s)
   of the relevant thread(s)?

It is scattered over several threads.  Threads about Custom tend to be
superlong and unfocused. `find-file-hook as illustration of Custom problems'
is one of the threads, but several other threads about Custom were
going on at the same time and they all intertwined.

There are several problems, related to the fact that hooks have to be
customized using add-hook and remove-hook and not using setq.  But
Custom does use setq.  Here is an example of the type of problems that
occur.  (By no means the only one.)  The user customizes foo-hook
using Custom.  Then in the next Emacs version, a very essential
function badly-needed-fun is added to foo-hook.  The user's
custom-set-variables form overrides the adding of badly-needed-fun to
foo-hook.

These kind of problems are supposed to get fixed in 23 or 24, but it
is too tricky to still get it done for 22. 

Sincerely,

Luc.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]