emacs-diffs
[Top][All Lists]
Advanced

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

master 2017bf0: Fix restoring data in visual-line-mode


From: Lars Ingebrigtsen
Subject: master 2017bf0: Fix restoring data in visual-line-mode
Date: Thu, 1 Oct 2020 12:49:55 -0400 (EDT)

branch: master
commit 2017bf0dd1ddd9b18cb95c42e3ef4098bff69fa9
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Fix restoring data in visual-line-mode
    
    * lisp/simple.el (visual-line-mode): Only save values once, even
    if the mode is switched on twice (bug#43730).  This makes both
    previously set local values for variables like truncate-lines, as
    well as default values for truncate-lines restorable.
    
    * lisp/emulation/cua-base.el (cua-mode): Ditto.
---
 lisp/emulation/cua-base.el |  7 ++++---
 lisp/simple.el             | 22 ++++++++++++----------
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index c4dcb76..926305e 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1379,9 +1379,10 @@ the prefix fallback behavior."
 
   (cond
    (cua-mode
-    (setq cua--saved-state
-         (list
-          (and (boundp 'delete-selection-mode) delete-selection-mode)))
+    (unless cua--saved-state
+      (setq cua--saved-state
+           (list
+            (and (boundp 'delete-selection-mode) delete-selection-mode))))
     (if cua-delete-selection
         (delete-selection-mode 1)
       (if (and (boundp 'delete-selection-mode) delete-selection-mode)
diff --git a/lisp/simple.el b/lisp/simple.el
index fef22c2..05a74d9 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -7275,15 +7275,16 @@ Mode' for details."
   :lighter " Wrap"
   (if visual-line-mode
       (progn
-       (set (make-local-variable 'visual-line--saved-state) nil)
-       ;; Save the local values of some variables, to be restored if
-       ;; visual-line-mode is turned off.
-       (dolist (var '(line-move-visual truncate-lines
-                      truncate-partial-width-windows
-                      word-wrap fringe-indicator-alist))
-         (if (local-variable-p var)
-             (push (cons var (symbol-value var))
-                   visual-line--saved-state)))
+        (unless visual-line--saved-state
+         (setq-local visual-line--saved-state (list nil))
+         ;; Save the local values of some variables, to be restored if
+         ;; visual-line-mode is turned off.
+         (dolist (var '(line-move-visual truncate-lines
+                                         truncate-partial-width-windows
+                                         word-wrap fringe-indicator-alist))
+           (if (local-variable-p var)
+               (push (cons var (symbol-value var))
+                     visual-line--saved-state))))
        (set (make-local-variable 'line-move-visual) t)
        (set (make-local-variable 'truncate-partial-width-windows) nil)
        (setq truncate-lines nil
@@ -7297,7 +7298,8 @@ Mode' for details."
     (kill-local-variable 'truncate-partial-width-windows)
     (kill-local-variable 'fringe-indicator-alist)
     (dolist (saved visual-line--saved-state)
-      (set (make-local-variable (car saved)) (cdr saved)))
+      (when (car saved)
+        (set (make-local-variable (car saved)) (cdr saved))))
     (kill-local-variable 'visual-line--saved-state)))
 
 (defun turn-on-visual-line-mode ()



reply via email to

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