emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/subr.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/subr.el
Date: Mon, 20 Oct 2003 19:41:18 -0400

Index: emacs/lisp/subr.el
diff -c emacs/lisp/subr.el:1.364 emacs/lisp/subr.el:1.365
*** emacs/lisp/subr.el:1.364    Thu Oct 16 09:13:29 2003
--- emacs/lisp/subr.el  Mon Oct 20 19:41:18 2003
***************
*** 856,862 ****
              (set (make-local-variable hook) (list t)))
      ;; Detect the case where make-local-variable was used on a hook
      ;; and do what we used to do.
!     (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.
--- 856,864 ----
              (set (make-local-variable hook) (list t)))
      ;; Detect the case where make-local-variable was used on a hook
      ;; and do what we used to do.
!     (when (and (local-variable-p hook)
!              (not (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.
***************
*** 878,908 ****
  list of hooks to run in HOOK, then nothing is done.  See `add-hook'.
  
  The optional third argument, LOCAL, if non-nil, says to modify
! the hook's buffer-local value rather than its default value.
! This makes the hook buffer-local if needed."
    (or (boundp hook) (set hook nil))
    (or (default-boundp hook) (set-default hook nil))
!   (if local (unless (local-variable-if-set-p hook)
!             (set (make-local-variable hook) (list t)))
      ;; Detect the case where make-local-variable was used on a hook
      ;; and do what we used to do.
!     (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))))
!     ;; 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)))
!     ;;  (push (cons 'not function) hook-value))
!     ;; Set the actual variable
!     (if (not local)
!       (set-default hook hook-value)
!       (if (equal hook-value '(t))
!         (kill-local-variable hook)
!       (set hook hook-value)))))
  
  (defun add-to-list (list-var element &optional append)
    "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
--- 880,911 ----
  list of hooks to run in HOOK, then nothing is done.  See `add-hook'.
  
  The optional third argument, LOCAL, if non-nil, says to modify
! the hook's buffer-local value rather than its default value."
    (or (boundp hook) (set hook nil))
    (or (default-boundp hook) (set-default hook nil))
!   ;; Do nothing if LOCAL is t but this hook has no local binding.
!   (unless (and local (not (local-variable-p hook)))
      ;; Detect the case where make-local-variable was used on a hook
      ;; and do what we used to do.
!     (when (and (local-variable-p hook)
!              (not (and (consp (symbol-value hook))
!                        (memq t (symbol-value hook)))))
!       (setq local t))
!     (let ((hook-value (if local (symbol-value hook) (default-value hook))))
!       ;; 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)))
!       ;;  (push (cons 'not function) hook-value))
!       ;; Set the actual variable
!       (if (not local)
!         (set-default hook hook-value)
!       (if (equal hook-value '(t))
!           (kill-local-variable hook)
!         (set hook hook-value))))))
  
  (defun add-to-list (list-var element &optional append)
    "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]