What's a hook?
A hook is a variable, its value is a list of functions (lisp symbols or lambda).
Each hook is designed to “run” when some event happens. When a hook “run”, all functions in that hook are called.
html-modeis loaded, html-mode-hook's functions are run.
There are hundreds of hooks. Each major mode usually have at least 1 hook, designed to run when the mode is loaded. 〔?see List of Emacs Hooks〕
A hook is similar to the concept of eventsin other systems. Adding function to a hook is similar to adding event handlers. (note: emacs lisp manual also uses the term “event”, but that is lower level events to emacs, not events by emacs.)
Here's example of turning on line number only for some modes:
(add-hook 'emacs-lisp-mode-hook 'linum-mode) (add-hook 'js-mode-hook 'linum-mode) (add-hook 'css-mode-hook 'linum-mode) (add-hook 'html-mode-hook 'linum-mode) (add-hook 'nxml-mode-hook 'linum-mode)
Here's example of use variable-width font for some modes:
;; use variable-width font for some modes (add-hook 'nxml-mode-hook 'variable-pitch-mode) (add-hook 'emacs-lisp-mode-hook 'variable-pitch-mode) (add-hook 'js-mode-hook 'variable-pitch-mode) (add-hook 'css-mode-hook 'variable-pitch-mode) (add-hook 'html-mode-hook 'variable-pitch-mode)
〔?see Emacs: Avoid Lambda in Hook〕
How to find the name of hook?
Most major modes have a hook. If a mode's name is “xyz-mode”, its hook by convention is named “xyz-mode-hook”.
First, be sure you load the mode first. Some hook many not show when the mode isn't loaded or initialized.
describe-variable, then try to type a name you guessed, press Tab ? for completion.
Note: A major mode may have more than 1 hook.
How to see the value of a hook?
describe-variable, then type the hook name, to see its current value.
How to remove a hook?
;; remove a hook (remove-hook 'html-mode-hook 'xyz-function-name)
;; example of binding keys only when html-mode is active (defun my-html-mode-config () "Modify keymaps used by `html-mode'." (local-set-key (kbd "C-c w") 'my-bold-word) (local-set-key (kbd "C-c C-p") nil) ; remove a key (local-set-key (kbd "<C-right>") 'my-html-skip-tag-forward) (local-set-key (kbd "<C-left>") 'my-html-skip-tag-backward) ;; more here ) ;; add to hook (add-hook 'html-mode-hook 'my-html-mode-config)
原文时间: 2016-04-12 20:52
整理时间: 2016-04-22 04:14
本文由 Hick 整理，转载请保留以上信息;
The articles on this site come from Internet, thanks to all the original authors.
If anything about COPYRIGHT, or LEFT, please contact Emacsist at gmail dot com .