unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Why call font-lock-add-keywords in a mode hook?
@ 2016-01-25 10:03 Marcin Borkowski
  2016-01-25 14:49 ` Michael Heerdegen
  2016-01-26  4:14 ` Stefan Monnier
  0 siblings, 2 replies; 5+ messages in thread
From: Marcin Borkowski @ 2016-01-25 10:03 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list

Hi list,

this I found in the manual:

--8<---------------cut here---------------start------------->8---
 -- Function: font-lock-add-keywords mode keywords &optional how
     This function adds highlighting KEYWORDS, for the current buffer or
     for major mode MODE.  The argument KEYWORDS should be a list with
     the same format as the variable ‘font-lock-keywords’.

     If MODE is a symbol which is a major mode command name, such as
     ‘c-mode’, the effect is that enabling Font Lock mode in MODE will
     add KEYWORDS to ‘font-lock-keywords’.  Calling with a non-‘nil’
     value of MODE is correct only in your ‘~/.emacs’ file.

     If MODE is ‘nil’, this function adds KEYWORDS to
     ‘font-lock-keywords’ in the current buffer.  This way of calling
     ‘font-lock-add-keywords’ is usually used in mode hook functions.
--8<---------------cut here---------------end--------------->8---

My question: why would I want to call this function in a hook if I can
specify the mode in its invocation?  (Assuming that I use it in my
init.el, of course.)

TIA,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Why call font-lock-add-keywords in a mode hook?
  2016-01-25 10:03 Why call font-lock-add-keywords in a mode hook? Marcin Borkowski
@ 2016-01-25 14:49 ` Michael Heerdegen
  2016-01-26  4:14 ` Stefan Monnier
  1 sibling, 0 replies; 5+ messages in thread
From: Michael Heerdegen @ 2016-01-25 14:49 UTC (permalink / raw)
  To: help-gnu-emacs

Marcin Borkowski <mbork@mbork.pl> writes:

> Hi list,
>
> this I found in the manual:
>
>  -- Function: font-lock-add-keywords mode keywords &optional how
>      This function adds highlighting KEYWORDS, for the current buffer or
>      for major mode MODE.  The argument KEYWORDS should be a list with
>      the same format as the variable ‘font-lock-keywords’.
>
>      If MODE is a symbol which is a major mode command name, such as
>      ‘c-mode’, the effect is that enabling Font Lock mode in MODE will
>      add KEYWORDS to ‘font-lock-keywords’.  Calling with a non-‘nil’
>      value of MODE is correct only in your ‘~/.emacs’ file.
>
>      If MODE is ‘nil’, this function adds KEYWORDS to
>      ‘font-lock-keywords’ in the current buffer.  This way of calling
>      ‘font-lock-add-keywords’ is usually used in mode hook functions.
>
> My question: why would I want to call this function in a hook if I can
> specify the mode in its invocation?  (Assuming that I use it in my
> init.el, of course.)

I can think of two reasons at least:

(1)  If MODE has not yet "been initialized", the HOW argument would not
have any effect.  In particular, if you want to append your keywords to
the generic ones, this will only work before the mode had been defined.

(2)  With MODE -> nil, using the function in a hook is a common use
case, I think.


Regards,

Michael.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Why call font-lock-add-keywords in a mode hook?
  2016-01-25 10:03 Why call font-lock-add-keywords in a mode hook? Marcin Borkowski
  2016-01-25 14:49 ` Michael Heerdegen
@ 2016-01-26  4:14 ` Stefan Monnier
  2016-01-26  8:51   ` Marcin Borkowski
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Monnier @ 2016-01-26  4:14 UTC (permalink / raw)
  To: help-gnu-emacs

> My question: why would I want to call this function in a hook if I can
> specify the mode in its invocation?

Because the other use is fundamentally unclean, requiring
a re-implementation of major-mode's inheritance, whereas you get it for
free if you use nil for `mode' and call it from the mode's hook instead.


        Stefan




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Why call font-lock-add-keywords in a mode hook?
  2016-01-26  4:14 ` Stefan Monnier
@ 2016-01-26  8:51   ` Marcin Borkowski
  2016-01-26 13:04     ` Stefan Monnier
  0 siblings, 1 reply; 5+ messages in thread
From: Marcin Borkowski @ 2016-01-26  8:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: help-gnu-emacs


On 2016-01-26, at 05:14, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

>> My question: why would I want to call this function in a hook if I can
>> specify the mode in its invocation?
>
> Because the other use is fundamentally unclean, requiring
> a re-implementation of major-mode's inheritance, whereas you get it for
> free if you use nil for `mode' and call it from the mode's hook instead.

Ah, so that means that if I use a non-nil value for the `mode' argument,
say x-mode, and launch a buffer in y-mode, which derives from x-mode,
then I won't have my keywords there?

>         Stefan

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Why call font-lock-add-keywords in a mode hook?
  2016-01-26  8:51   ` Marcin Borkowski
@ 2016-01-26 13:04     ` Stefan Monnier
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Monnier @ 2016-01-26 13:04 UTC (permalink / raw)
  To: Marcin Borkowski; +Cc: help-gnu-emacs

>>> My question: why would I want to call this function in a hook if I can
>>> specify the mode in its invocation?
>> Because the other use is fundamentally unclean, requiring
>> a re-implementation of major-mode's inheritance, whereas you get it for
>> free if you use nil for `mode' and call it from the mode's hook instead.
> Ah, so that means that if I use a non-nil value for the `mode' argument,
> say x-mode, and launch a buffer in y-mode, which derives from x-mode,
> then I won't have my keywords there?

Yes (unless someone wrote the extra code to try and handle this case).


        Stefan



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-01-26 13:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-25 10:03 Why call font-lock-add-keywords in a mode hook? Marcin Borkowski
2016-01-25 14:49 ` Michael Heerdegen
2016-01-26  4:14 ` Stefan Monnier
2016-01-26  8:51   ` Marcin Borkowski
2016-01-26 13:04     ` Stefan Monnier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).