]> git.eshelyaron.com Git - emacs.git/commitdiff
(remove-hook): Don't turn the hook's value into a list.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 21 May 2000 23:24:18 +0000 (23:24 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 21 May 2000 23:24:18 +0000 (23:24 +0000)
lisp/ChangeLog
lisp/subr.el

index 1ebc720cae08584f646d918658f21602e2fe7c0e..159a64ed380aee19fa0be332d87e1faa6601e734 100644 (file)
@@ -1,3 +1,7 @@
+2000-05-21  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * subr.el (remove-hook): Don't turn the hook's value into a list.
+
 2000-05-21  Dave Love  <fx@gnu.org>
 
        * edmacro.el (edmacro-parse-keys): Return vector if any elements
index 65d26d2007a88cbe347ec5a977b964628cedff1d..e33d2b027f51f592c17b3fefe46c4d54665dd6fd 100644 (file)
@@ -733,11 +733,10 @@ To make a hook variable buffer-local, always use
     (unless (and (consp (symbol-value hook)) (memq t (symbol-value hook)))
       (setq local t)))
   (let ((hook-value (if local (symbol-value hook) (default-value hook))))
-    ;; If the hook value is a single function, turn it into a list.
-    (when (or (not (listp hook-value)) (eq (car hook-value) 'lambda))
-      (setq hook-value (list hook-value)))
-    ;; Do the actual removal if necessary
-    (setq hook-value (delete function (copy-sequence hook-value)))
+    ;; Remove the function, for both the list and the non-list cases.
+    (if (or (not (listp hook-value)) (eq (car hook-value) 'lambda))
+       (if (equal hook-value function) (setq hook-value nil))
+      (setq hook-value (delete function (copy-sequence hook-value))))
     ;; If the function is on the global hook, we need to shadow it locally
     ;;(when (and local (member function (default-value hook))
     ;;        (not (member (cons 'not function) hook-value)))