emacslatex

Set variable under specific mode emacs


Looking to set a variable under latex mode. The idea is that the value set under latex mode will override the value of the same variable set in the customise section. I am very new to emacs so these are my attempts:

    (add-hook 'LaTeX-mode-hook '(setq line-move-visual t))
    (add-hook 'latex-mode-hook (lambda () (setq line-move-visual t)))

Why do these not work? What should I do instead?

Clarification: looking to set the variable (setq line-move-visual t) as I have it as (setq line-move-visual nil) for all other files


Solution

  • If you setq the variable in your mode hook, it will also have an effect on any other open buffer. To really constrain the variable's value to that mode, you can use setq-local:

    (add-hook 'LaTeX-mode-hook
          (lambda ()
            (setq-local line-move-visual nil)))
    

    Note: if your Emacs is below version 24.3, you can do it in two steps:

    (add-hook 'LaTeX-mode-hook
          (lambda ()
            (make-local-variable 'line-move-visual)
            (setq line-move-visual nil)))
    

    Lastly, please note that the hook for the default mode for LaTeX in Emacs is called latex-mode-hook but the hook when you are using the (far superior) AUCTeX is called LaTeX-mode-hook.