comparison lisp/emacs-lisp/lucid.el @ 4415:b9ce445fb406

(remove-hook): Doc string added. Change a single function into a list.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Aug 1993 07:23:24 +0000
parents c910eb73b259
children 96c0a97da147
comparison
equal deleted inserted replaced
4414:3356419b94c1 4415:b9ce445fb406
51 (setq tail (cdr tail))) 51 (setq tail (cdr tail)))
52 (if tail 52 (if tail
53 (setcdr tail new-parent)))) 53 (setcdr tail new-parent))))
54 54
55 (defun remove-hook (hook-var function) 55 (defun remove-hook (hook-var function)
56 "Remove a function from a hook, if it is present.
57 First argument HOOK-VAR (a symbol) is the name of a hook, second
58 argument FUNCTION is the function to remove (compared with `eq')."
56 (if (boundp 'hook-var) 59 (if (boundp 'hook-var)
57 (set hook-var (delq function (symbol-value hook-var))))) 60 (let ((old (symbol-value hook-var)))
61 ;; If the hook value is a single function, turn it into a list.
62 (if (or (not (listp old)) (eq (car old) 'lambda))
63 (set hook-var (list old)))
64 ;; Now delete FUNCTION.
65 (set hook-var (delq function (symbol-value hook-var))))))
58 66
59 (defun remprop (symbol prop) 67 (defun remprop (symbol prop)
60 (let ((plist (symbol-plist symbol))) 68 (let ((plist (symbol-plist symbol)))
61 (while (eq (car plist) prop) 69 (while (eq (car plist) prop)
62 (setplist symbol (setq plist (cdr (cdr plist))))) 70 (setplist symbol (setq plist (cdr (cdr plist)))))