emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local bindin


From: Alan Mackenzie
Subject: [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky
Date: Tue, 29 Mar 2016 09:52:39 +0000

branch: emacs-25
commit f99b51295b86770e4b16d4717c0e73049191c4c5
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    In M-%, avoid making buffer-local binding of text-property-default-nonsticky
    
    This would happen when that variable already has a buffer local binding.  
Such
    a binding would not be seen by read-from-minibuffer.  This fixes bug #23127.
    
    * lisp/replace.el (query-replace-read-from): Move the binding of
    text-property-default-nonsticky to inside of a new with-current-buffer 
buffer
    form with the minibuffer as argument.
---
 lisp/replace.el |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lisp/replace.el b/lisp/replace.el
index 428be3c..a2344d9 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -167,8 +167,6 @@ wants to replace FROM with TO."
     ;; unavailable while preparing to dump.
     (custom-reevaluate-setting 'query-replace-from-to-separator)
     (let* ((history-add-new-input nil)
-          (text-property-default-nonsticky
-           (cons '(separator . t) text-property-default-nonsticky))
           (separator
            (when query-replace-from-to-separator
              (propertize "\0"
@@ -193,11 +191,18 @@ wants to replace FROM with TO."
            ;; a region in order to specify the minibuffer input.
            ;; That should not clobber the region for the query-replace itself.
            (save-excursion
-             (if regexp-flag
-                 (read-regexp prompt nil 'query-replace-from-to-history)
-               (read-from-minibuffer
-                prompt nil nil nil 'query-replace-from-to-history
-                (car (if regexp-flag regexp-search-ring search-ring)) t))))
+              ;; The `with-current-buffer' ensures that the binding
+              ;; for `text-property-default-nonsticky' isn't a buffer
+              ;; local binding in the current buffer, which
+              ;; `read-from-minibuffer' wouldn't see.
+              (with-current-buffer (window-buffer (minibuffer-window))
+                (let ((text-property-default-nonsticky
+                       (cons '(separator . t) 
text-property-default-nonsticky)))
+                  (if regexp-flag
+                      (read-regexp prompt nil 'query-replace-from-to-history)
+                    (read-from-minibuffer
+                     prompt nil nil nil 'query-replace-from-to-history
+                     (car (if regexp-flag regexp-search-ring search-ring)) 
t))))))
            (to))
       (if (and (zerop (length from)) query-replace-defaults)
          (cons (caar query-replace-defaults)



reply via email to

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