Can't remember.  IIRC there were problems where adding keywords to
   comint-mode didn't add them to all derivatives.

So you actually _want_ them added to derivatives.  That was not at all
obvious.  The actual patches I sent will add them to derivatives as
long as the mode conventions are followed.

But it you pass comint-mode as argument _in your .emacs_ (as
recommended in the docs), how will it enable them for derivatives?  I
have not read through every line of font-{lock,core}.el, so I may have
missed something, but `font-lock-set-defaults' does

    (cdr (assq major-mode font-lock-keywords-alist))

So if it contains (comint-mode . ...), it would appear to have no
effect in shell-mode.

So what is the difference between passing a non-nil MODE in your
.emacs or from a Lisp program?

In effect this is what the docstring of font-lock-keywords-alist says:

    Each element has the form (MODE KEYWORDS . APPEND).
    `font-lock-set-defaults' adds the elements in the list KEYWORDS to
    `font-lock-keywords' when Font Lock is turned on in major mode MODE.

It does not say "or in a derivative mode". 

So, instead of the current cryptic difference between .emacs and
programs, maybe the docstring should say to pass a non-nil MODE
argument if you do not want it to apply to derivatives and a nil one
if you do want it to apply to derivatives.  I believe that after such
doc fixes (which I could make) to the font-lock-{add,remove}-keyword
and the Elisp manual, my patches would do exactly what the revised docs
would say.

What happens to keywords in an _interactive_ mode change, that is
during kill-all-local-variables is a separate problem, not related to
`define-global-minor-mode'.

Sincerely,

Luc.



_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to