Mercurial > emacs
changeset 2383:b7941d286c3f
(add-hook) Added optional arg to cause hook to be appended rather than
prepended to the hook list. This obviates the 23 different hook-bashing
packages in LCD.
(get-word) Added. Lots of help and default-generator functions in LCD use
it, and it's remarkably difficult to get right, especially given the new
syntax primitives.
author | Eric S. Raymond <esr@snark.thyrsus.com> |
---|---|
date | Sat, 27 Mar 1993 01:58:44 +0000 |
parents | 030b76db285a |
children | 5ab51b7300e4 |
files | lisp/subr.el |
diffstat | 1 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Sat Mar 27 01:58:38 1993 +0000 +++ b/lisp/subr.el Sat Mar 27 01:58:44 1993 +0000 @@ -407,11 +407,12 @@ "Variable by which C primitives find the function `run-hooks'. Don't change it.") -(defun add-hook (hook function) - "Add to the value of HOOK the function FUNCTION unless already present. -HOOK should be a symbol, and FUNCTION may be any valid function. -HOOK's value should be a list of functions, not a single function. -If HOOK is void, it is first set to nil." +(defun add-hook (hook function &optional append) + "Add to the value of HOOK the function FUNCTION unless already present (it +becomes the first hook on the list unless optional APPEND is non-nil, in +which case it becomes the last). HOOK should be a symbol, and FUNCTION may be +any valid function. HOOK's value should be a list of functions, not a single +function. If HOOK is void, it is first set to nil." (or (boundp hook) (set hook nil)) (or (if (consp function) ;; Clever way to tell whether a given lambda-expression @@ -419,7 +420,10 @@ (let ((tail (assoc (cdr function) (symbol-value hook)))) (equal function tail)) (memq function (symbol-value hook))) - (set hook (cons function (symbol-value hook))))) + (set hook + (if append + (nconc (symbol-value hook) (list function)) + (cons function (symbol-value hook)))))) (defun momentary-string-display (string pos &optional exit-char message) "Momentarily display STRING in the buffer at POS.