[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 35e0305: Avoid turning on the global-minor-mode r
From: |
Noam Postavsky |
Subject: |
[Emacs-diffs] emacs-26 35e0305: Avoid turning on the global-minor-mode recursively |
Date: |
Tue, 10 Jul 2018 08:17:16 -0400 (EDT) |
branch: emacs-26
commit 35e0305dc2a57cea6fcb515db9e0b0f938daf53a
Author: John Shahid <address@hidden>
Commit: Noam Postavsky <address@hidden>
Avoid turning on the global-minor-mode recursively
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Clear
the buffer-list inside MODE-enable-in-buffers to avoid enabling the
mode recursively. (Bug#31793)
---
lisp/emacs-lisp/easy-mmode.el | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 21ca693..443e03e 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -457,22 +457,26 @@ See `%s' for more information on %s."
;; The function that calls TURN-ON in each buffer.
(defun ,MODE-enable-in-buffers ()
- (dolist (buf ,MODE-buffers)
- (when (buffer-live-p buf)
- (with-current-buffer buf
- (unless ,MODE-set-explicitly
- (unless (eq ,MODE-major-mode major-mode)
- (if ,mode
- (progn
- (,mode -1)
- (funcall #',turn-on))
- (funcall #',turn-on))))
- (setq ,MODE-major-mode major-mode)))))
+ (let ((buffers ,MODE-buffers))
+ ;; Clear MODE-buffers to avoid scanning the same list of
+ ;; buffers in recursive calls to MODE-enable-in-buffers.
+ ;; Otherwise it could lead to infinite recursion.
+ (setq ,MODE-buffers nil)
+ (dolist (buf buffers)
+ (when (buffer-live-p buf)
+ (with-current-buffer buf
+ (unless ,MODE-set-explicitly
+ (unless (eq ,MODE-major-mode major-mode)
+ (if ,mode
+ (progn
+ (,mode -1)
+ (funcall #',turn-on))
+ (funcall #',turn-on))))
+ (setq ,MODE-major-mode major-mode))))))
(put ',MODE-enable-in-buffers 'definition-name ',global-mode)
(defun ,MODE-check-buffers ()
(,MODE-enable-in-buffers)
- (setq ,MODE-buffers nil)
(remove-hook 'post-command-hook ',MODE-check-buffers))
(put ',MODE-check-buffers 'definition-name ',global-mode)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 35e0305: Avoid turning on the global-minor-mode recursively,
Noam Postavsky <=