2013-08-13 2 views
2

Это хорошая идея, чтобы фактор (add-hook 'LaTeX-mode-hook)? Каковы преимущества и недостатки при этом.Разве это хорошая идея, чтобы разделить LaTeX-режим-крюк?

Например, вы могли бы написать:

(add-hook 'LaTeX-mode-hook (lambda() 
;;(add-to-list [...] 
) 

(add-hook 'LaTeX-mode-hook 'TeX-PDF-mode) 

;;[...lots of other LaTeX config stuff] 

(add-hook 'LaTeX-mode-hook 'flyspell-mode) 

или один может вынести на LaTeX-mode-hook заявление и написать что-то вроде этого:

(add-hook 'LaTeX-mode-hook (lambda() 

;;(add-to-list) [...] 

(TeX-PDF-mode) 

;;[...lots of other LaTeX config stuff] 

(flyspell-mode) 
)) 

ответ

2

Я бы не сказал, что это имеет много: вы можете проверьте это на например оценивая LaTeX-mode-hook в *scratch* с обоими типами утверждений. Он будет выглядеть несколько иначе, но поведение выполнения должно быть одинаковым.

Одним из преимуществ хранения в одном lambda является то, что его проще в обслуживании.

4

На ваш вопрос две составляющие: факторинг и использование лямбда.

Я нахожу, что факторинг - хорошая идея, потому что проще поддерживать файл .emacs, где есть одно место, где добавлен крюк. Однако использование lambda для этой цели слегка нахмурилось. Если вы посмотрите на значение крючка после того, как вы использовали lambda, вы увидите, что он «уродливый». Кроме того, на этом крюке будет труднее работать. Например, вы иногда хотите отключить крючок с помощью remove-hook. Это проще сделать, когда вы назовете свой крючок явно, вместо использования лямбда.

+2

Согласен на 100%. Используйте что-то вроде '(add-hook 'LaTeX-mode-hook' my-LaTeX-mode-hook)' '(defun my-LaTeX-mode-hook() ...)', так что, когда вы хотите внести изменения, может просто переоценить определение этой функции, а не «удалить крюк» из старого выражения лямбда, а затем «добавить крюк» в модифицированную версию. – phils