1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Fix misuses of make-local-variable on hooks

* lisp/vc/smerge-mode.el (smerge-ediff):
* lisp/progmodes/python.el (python-pdbtrack-setup-tracking):
* lisp/net/tramp-smb.el (tramp-smb-call-winexe):
* lisp/net/secrets.el (secrets-mode):
* lisp/mail/rmail.el (rmail-variables):
* lisp/ielm.el (inferior-emacs-lisp-mode):
* lisp/erc/erc-log.el (erc-log-setup-logging): Use `add-hook`.

* lisp/eshell/em-unix.el (eshell/diff):
* lisp/eshell/em-hist.el (eshell-hist-initialize): Don't
`make-local-variable` on hooks.
This commit is contained in:
Stefan Monnier 2020-11-04 00:24:45 -05:00
parent 9bcdebd9b7
commit a63d905175
12 changed files with 56 additions and 65 deletions

View file

@ -287,6 +287,9 @@ CREATE-HOOK is a hook to run after creating a frame."
;; Correct use of `temp-buffer-show-function': Bob Weiner ;; Correct use of `temp-buffer-show-function': Bob Weiner
(if (and (boundp 'temp-buffer-show-hook) (if (and (boundp 'temp-buffer-show-hook)
(boundp 'temp-buffer-show-function)) (boundp 'temp-buffer-show-function))
;; FIXME: Doesn't this get us into an inf-loop when the
;; `temp-buffer-show-function' runs `temp-buffer-show-hook'
;; (as is normally the case)?
(progn (make-local-variable 'temp-buffer-show-hook) (progn (make-local-variable 'temp-buffer-show-hook)
(setq temp-buffer-show-hook temp-buffer-show-function))) (setq temp-buffer-show-hook temp-buffer-show-function)))
(make-local-variable 'temp-buffer-show-function) (make-local-variable 'temp-buffer-show-function)

View file

@ -267,7 +267,7 @@ The current buffer is given by BUFFER."
(with-current-buffer buffer (with-current-buffer buffer
(auto-save-mode -1) (auto-save-mode -1)
(setq buffer-file-name nil) (setq buffer-file-name nil)
(set (make-local-variable 'write-file-functions) '(erc-save-buffer-in-logs)) (add-hook 'write-file-functions #'erc-save-buffer-in-logs nil t)
(when erc-log-insert-log-on-open (when erc-log-insert-log-on-open
(ignore-errors (ignore-errors
(save-excursion (save-excursion

View file

@ -75,8 +75,7 @@
(defcustom eshell-hist-load-hook nil (defcustom eshell-hist-load-hook nil
"A list of functions to call when loading `eshell-hist'." "A list of functions to call when loading `eshell-hist'."
:version "24.1" ; removed eshell-hist-initialize :version "24.1" ; removed eshell-hist-initialize
:type 'hook :type 'hook)
:group 'eshell-hist)
(defcustom eshell-hist-unload-hook (defcustom eshell-hist-unload-hook
(list (list
@ -84,8 +83,7 @@
(lambda () (lambda ()
(remove-hook 'kill-emacs-hook 'eshell-save-some-history)))) (remove-hook 'kill-emacs-hook 'eshell-save-some-history))))
"A hook that gets run when `eshell-hist' is unloaded." "A hook that gets run when `eshell-hist' is unloaded."
:type 'hook :type 'hook)
:group 'eshell-hist)
(defcustom eshell-history-file-name (defcustom eshell-history-file-name
(expand-file-name "history" eshell-directory-name) (expand-file-name "history" eshell-directory-name)
@ -93,20 +91,17 @@
See also `eshell-read-history' and `eshell-write-history'. See also `eshell-read-history' and `eshell-write-history'.
If it is nil, Eshell will use the value of HISTFILE." If it is nil, Eshell will use the value of HISTFILE."
:type '(choice (const :tag "Use HISTFILE" nil) :type '(choice (const :tag "Use HISTFILE" nil)
file) file))
:group 'eshell-hist)
(defcustom eshell-history-size 128 (defcustom eshell-history-size 128
"Size of the input history ring. If nil, use envvar HISTSIZE." "Size of the input history ring. If nil, use envvar HISTSIZE."
:type '(choice (const :tag "Use HISTSIZE" nil) :type '(choice (const :tag "Use HISTSIZE" nil)
integer) integer))
:group 'eshell-hist)
(defcustom eshell-hist-ignoredups nil (defcustom eshell-hist-ignoredups nil
"If non-nil, don't add input matching the last on the input ring. "If non-nil, don't add input matching the last on the input ring.
This mirrors the optional behavior of bash." This mirrors the optional behavior of bash."
:type 'boolean :type 'boolean)
:group 'eshell-hist)
(defcustom eshell-save-history-on-exit t (defcustom eshell-save-history-on-exit t
"Determine if history should be automatically saved. "Determine if history should be automatically saved.
@ -118,8 +113,7 @@ If set to `ask', ask if any Eshell buffers are open at exit time.
If set to t, history will always be saved, silently." If set to t, history will always be saved, silently."
:type '(choice (const :tag "Never" nil) :type '(choice (const :tag "Never" nil)
(const :tag "Ask" ask) (const :tag "Ask" ask)
(const :tag "Always save" t)) (const :tag "Always save" t)))
:group 'eshell-hist)
(defcustom eshell-input-filter 'eshell-input-filter-default (defcustom eshell-input-filter 'eshell-input-filter-default
"Predicate for filtering additions to input history. "Predicate for filtering additions to input history.
@ -128,8 +122,7 @@ the input history list. Default is to save anything that isn't all
whitespace." whitespace."
:type '(radio (function-item eshell-input-filter-default) :type '(radio (function-item eshell-input-filter-default)
(function-item eshell-input-filter-initial-space) (function-item eshell-input-filter-initial-space)
(function :tag "Other function")) (function :tag "Other function")))
:group 'eshell-hist)
(put 'eshell-input-filter 'risky-local-variable t) (put 'eshell-input-filter 'risky-local-variable t)
@ -138,31 +131,26 @@ whitespace."
Otherwise, typing <M-p> and <M-n> will always go to the next history Otherwise, typing <M-p> and <M-n> will always go to the next history
element, regardless of any text on the command line. In that case, element, regardless of any text on the command line. In that case,
<C-c M-r> and <C-c M-s> still offer that functionality." <C-c M-r> and <C-c M-s> still offer that functionality."
:type 'boolean :type 'boolean)
:group 'eshell-hist)
(defcustom eshell-hist-move-to-end t (defcustom eshell-hist-move-to-end t
"If non-nil, move to the end of the buffer before cycling history." "If non-nil, move to the end of the buffer before cycling history."
:type 'boolean :type 'boolean)
:group 'eshell-hist)
(defcustom eshell-hist-event-designator (defcustom eshell-hist-event-designator
"^!\\(!\\|-?[0-9]+\\|\\??[^:^$%*?]+\\??\\|#\\)" "^!\\(!\\|-?[0-9]+\\|\\??[^:^$%*?]+\\??\\|#\\)"
"The regexp used to identifier history event designators." "The regexp used to identifier history event designators."
:type 'regexp :type 'regexp)
:group 'eshell-hist)
(defcustom eshell-hist-word-designator (defcustom eshell-hist-word-designator
"^:?\\([0-9]+\\|[$^%*]\\)?\\(-[0-9]*\\|[$^%*]\\)?" "^:?\\([0-9]+\\|[$^%*]\\)?\\(-[0-9]*\\|[$^%*]\\)?"
"The regexp used to identify history word designators." "The regexp used to identify history word designators."
:type 'regexp :type 'regexp)
:group 'eshell-hist)
(defcustom eshell-hist-modifier (defcustom eshell-hist-modifier
"^\\(:\\([hretpqx&g]\\|s/\\([^/]*\\)/\\([^/]*\\)/\\)\\)*" "^\\(:\\([hretpqx&g]\\|s/\\([^/]*\\)/\\([^/]*\\)/\\)\\)*"
"The regexp used to identity history modifiers." "The regexp used to identity history modifiers."
:type 'regexp :type 'regexp)
:group 'eshell-hist)
(defcustom eshell-hist-rebind-keys-alist (defcustom eshell-hist-rebind-keys-alist
'(([(control ?p)] . eshell-previous-input) '(([(control ?p)] . eshell-previous-input)
@ -180,8 +168,7 @@ element, regardless of any text on the command line. In that case,
"History keys to bind differently if point is in input text." "History keys to bind differently if point is in input text."
:type '(repeat (cons (vector :tag "Keys to bind" :type '(repeat (cons (vector :tag "Keys to bind"
(repeat :inline t sexp)) (repeat :inline t sexp))
(function :tag "Command"))) (function :tag "Command"))))
:group 'eshell-hist)
;;; Internal Variables: ;;; Internal Variables:
@ -308,7 +295,6 @@ Returns nil if INPUT is prepended by blank space, otherwise non-nil."
(add-hook 'kill-emacs-hook #'eshell-save-some-history) (add-hook 'kill-emacs-hook #'eshell-save-some-history)
(make-local-variable 'eshell-input-filter-functions)
(add-hook 'eshell-input-filter-functions #'eshell-add-to-history nil t)) (add-hook 'eshell-input-filter-functions #'eshell-add-to-history nil t))
(defun eshell-save-some-history () (defun eshell-save-some-history ()

View file

@ -1007,18 +1007,17 @@ Show wall-clock time elapsed during execution of COMMAND.")
(throw 'eshell-replace-command (throw 'eshell-replace-command
(eshell-parse-command "*diff" orig-args)))) (eshell-parse-command "*diff" orig-args))))
(when (fboundp 'diff-mode) (when (fboundp 'diff-mode)
(make-local-variable 'compilation-finish-functions)
(add-hook (add-hook
'compilation-finish-functions 'compilation-finish-functions
`(lambda (buff msg) (lambda (buff _msg)
(with-current-buffer buff (with-current-buffer buff
(diff-mode) (diff-mode)
(set (make-local-variable 'eshell-diff-window-config) (set (make-local-variable 'eshell-diff-window-config) config)
,config) (local-set-key [?q] #'eshell-diff-quit)
(local-set-key [?q] 'eshell-diff-quit)
(if (fboundp 'turn-on-font-lock-if-enabled) (if (fboundp 'turn-on-font-lock-if-enabled)
(turn-on-font-lock-if-enabled)) (turn-on-font-lock-if-enabled))
(goto-char (point-min)))))) (goto-char (point-min))))
nil t))
(pop-to-buffer (current-buffer)))))) (pop-to-buffer (current-buffer))))))
nil) nil)

View file

@ -365,7 +365,7 @@ textual parts.")
(mm-disable-multibyte) (mm-disable-multibyte)
(buffer-disable-undo) (buffer-disable-undo)
(gnus-add-buffer) (gnus-add-buffer)
(set (make-local-variable 'after-change-functions) nil) (set (make-local-variable 'after-change-functions) nil) ;FIXME: Why?
(set (make-local-variable 'nnimap-object) (set (make-local-variable 'nnimap-object)
(make-nnimap :server (nnoo-current-server 'nnimap) (make-nnimap :server (nnoo-current-server 'nnimap)
:initial-resync 0)) :initial-resync 0))

View file

@ -533,9 +533,10 @@ Customized bindings may be defined in `ielm-map', which currently contains:
(set (make-local-variable 'paragraph-start) comint-prompt-regexp) (set (make-local-variable 'paragraph-start) comint-prompt-regexp)
(setq comint-input-sender 'ielm-input-sender) (setq comint-input-sender 'ielm-input-sender)
(setq comint-process-echoes nil) (setq comint-process-echoes nil)
(set (make-local-variable 'completion-at-point-functions) (dolist (f '(elisp-completion-at-point
'(comint-replace-by-expanded-history ielm-complete-filename
ielm-complete-filename elisp-completion-at-point)) comint-replace-by-expanded-history))
(add-hook 'completion-at-point-functions f nil t))
(add-hook 'eldoc-documentation-functions (add-hook 'eldoc-documentation-functions
#'elisp-eldoc-var-docstring nil t) #'elisp-eldoc-var-docstring nil t)
(add-hook 'eldoc-documentation-functions (add-hook 'eldoc-documentation-functions

View file

@ -1492,8 +1492,7 @@ If so restore the actual mbox message collection."
(setq require-final-newline nil) (setq require-final-newline nil)
(make-local-variable 'version-control) (make-local-variable 'version-control)
(setq version-control 'never) (setq version-control 'never)
(make-local-variable 'kill-buffer-hook) (add-hook 'kill-buffer-hook #'rmail-mode-kill-summary nil t)
(add-hook 'kill-buffer-hook 'rmail-mode-kill-summary)
(make-local-variable 'file-precious-flag) (make-local-variable 'file-precious-flag)
(setq file-precious-flag t) (setq file-precious-flag t)
(make-local-variable 'desktop-save-buffer) (make-local-variable 'desktop-save-buffer)

View file

@ -795,8 +795,8 @@ In this mode, widgets represent the search results.
(set (make-local-variable 'revert-buffer-function) (set (make-local-variable 'revert-buffer-function)
#'secrets-show-collections) #'secrets-show-collections)
;; When we toggle, we must set temporary widgets. ;; When we toggle, we must set temporary widgets.
(set (make-local-variable 'tree-widget-after-toggle-functions) (add-hook 'tree-widget-after-toggle-functions
'(secrets-tree-widget-after-toggle-function))) #'secrets-tree-widget-after-toggle-function nil t))
;; It doesn't make sense to call it interactively. ;; It doesn't make sense to call it interactively.
(put 'secrets-mode 'disabled t) (put 'secrets-mode 'disabled t)

View file

@ -2143,8 +2143,7 @@ Removes smb prompt. Returns nil if an error message has appeared."
"%s %s" "%s %s"
tramp-smb-winexe-shell-command tramp-smb-winexe-shell-command-switch)) tramp-smb-winexe-shell-command tramp-smb-winexe-shell-command-switch))
(set (make-local-variable 'kill-buffer-hook) (add-hook 'kill-buffer-hook #'tramp-smb-kill-winexe-function nil t)
'(tramp-smb-kill-winexe-function))
;; Suppress "^M". Shouldn't we specify utf8? ;; Suppress "^M". Shouldn't we specify utf8?
(set-process-coding-system (tramp-get-connection-process vec) 'raw-text-dos) (set-process-coding-system (tramp-get-connection-process vec) 'raw-text-dos)

View file

@ -4011,8 +4011,8 @@ Argument OUTPUT is a string with the output from the comint process."
"Setup pdb tracking in current buffer." "Setup pdb tracking in current buffer."
(make-local-variable 'python-pdbtrack-buffers-to-kill) (make-local-variable 'python-pdbtrack-buffers-to-kill)
(make-local-variable 'python-pdbtrack-tracked-buffer) (make-local-variable 'python-pdbtrack-tracked-buffer)
(add-to-list (make-local-variable 'comint-input-filter-functions) (add-hook 'comint-input-filter-functions
#'python-pdbtrack-comint-input-filter-function) #'python-pdbtrack-comint-input-filter-function nil t)
(add-to-list (make-local-variable 'comint-output-filter-functions) (add-to-list (make-local-variable 'comint-output-filter-functions)
#'python-pdbtrack-comint-output-filter-function) #'python-pdbtrack-comint-output-filter-function)
(add-function :before (process-sentinel (get-buffer-process (current-buffer))) (add-function :before (process-sentinel (get-buffer-process (current-buffer)))

View file

@ -1352,24 +1352,26 @@ buffer names."
;; Do a few further adjustments and take precautions for exit. ;; Do a few further adjustments and take precautions for exit.
(set (make-local-variable 'smerge-ediff-windows) config) (set (make-local-variable 'smerge-ediff-windows) config)
(set (make-local-variable 'smerge-ediff-buf) buf) (set (make-local-variable 'smerge-ediff-buf) buf)
(set (make-local-variable 'ediff-quit-hook) (add-hook 'ediff-quit-hook
(lambda () (lambda ()
(let ((buffer-A ediff-buffer-A) (let ((buffer-A ediff-buffer-A)
(buffer-B ediff-buffer-B) (buffer-B ediff-buffer-B)
(buffer-C ediff-buffer-C) (buffer-C ediff-buffer-C)
(buffer-Ancestor ediff-ancestor-buffer) (buffer-Ancestor ediff-ancestor-buffer)
(buf smerge-ediff-buf) (buf smerge-ediff-buf)
(windows smerge-ediff-windows)) (windows smerge-ediff-windows))
(ediff-cleanup-mess) (ediff-cleanup-mess)
(with-current-buffer buf (with-current-buffer buf
(erase-buffer) (erase-buffer)
(insert-buffer-substring buffer-C) (insert-buffer-substring buffer-C)
(kill-buffer buffer-A) (kill-buffer buffer-A)
(kill-buffer buffer-B) (kill-buffer buffer-B)
(kill-buffer buffer-C) (kill-buffer buffer-C)
(when (bufferp buffer-Ancestor) (kill-buffer buffer-Ancestor)) (when (bufferp buffer-Ancestor)
(set-window-configuration windows) (kill-buffer buffer-Ancestor))
(message "Conflict resolution finished; you may save the buffer"))))) (set-window-configuration windows)
(message "Conflict resolution finished; you may save the buffer"))))
nil t)
(message "Please resolve conflicts now; exit ediff when done"))) (message "Please resolve conflicts now; exit ediff when done")))
(defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4)

View file

@ -138,7 +138,9 @@ preserve the setting."
;; Variables the user doesn't need to know about. ;; Variables the user doesn't need to know about.
(defvar vc-log-operation nil) (defvar vc-log-operation nil)
(defvar vc-log-after-operation-hook nil) (defvar vc-log-after-operation-hook nil
"Name of the hook run at the end of `vc-finish-logentry'.
BEWARE: Despite its name, this variable is not itself a hook!")
(defvar vc-log-fileset) (defvar vc-log-fileset)
;; In a log entry buffer, this is a local variable ;; In a log entry buffer, this is a local variable