emacs-devel
[Top][All Lists]
Advanced

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

Re: Clarification on hooks and custom-set-variables


From: Stefan Monnier
Subject: Re: Clarification on hooks and custom-set-variables
Date: Fri, 07 Aug 2015 11:11:28 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

>   (custom-set-variables
>    '(LaTeX-mode-hook '(flyspell-mode LaTeX-math-mode turn-on-reftex)))
[...]
> Now when he starts emacs, the value of `LaTeX-mode-hook' will be
> '(LaTeX-preview-setup).  Huh, where are the configs gone?

Not applied (yet).  What happens after he opens a LaTeX file?

> AUCTeX uses `LaTeX-mode-hook' internally, too.  auctex-autoloads.el adds
> the preview setup function
>   (add-hook 'LaTeX-mode-hook #'LaTeX-preview-setup)

FWIW, this probably made sense back when latex-preview was a separate
package, but now you're better off calling LaTeX-preview-setup
unconditionally from AUCTeX's latex-mode.

> The `custom-set-variables' docs don't tell me when customizations are
> applied when NOW is omitted or nil.  I guess, it'll be done just when
> the corresponding defcustom form is evaluated, right?

Sound be, yes.

> Does that make sense?  Or why does the customized value get lost?  And
> most importantly, how to I fix that?

Custom just sucks at handling vars which are both set via Custom and set
by random Elisp code.  E.g. depending on the circumstances, you could
end up with only (flyspell-mode LaTeX-math-mode turn-on-reftex) in the
hook, i.e. without LaTeX-preview-setup.

The best fixes I can think of:
- don't make it a defcustom.
- split it into a defcustom (only set by the user) and a defvar (only
  set by Elisp code).


        Stefan



reply via email to

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