bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#13178: Query-replace fails soon after narrow-to-region


From: Juri Linkov
Subject: bug#13178: Query-replace fails soon after narrow-to-region
Date: Mon, 02 Mar 2015 22:14:17 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (x86_64-pc-linux-gnu)

>> Perhaps the "replace" family of commands ought to ignore the region if it's
>> empty?
>
> It should obey use-empty-active-region.

This patch allows query-replace commands to obey use-empty-active-region:

diff --git a/lisp/replace.el b/lisp/replace.el
index e0636e0..8b62b54 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -312,15 +312,15 @@ (defun query-replace (from-string to-string &optional 
delimited start end backwa
                   (if current-prefix-arg
                       (if (eq current-prefix-arg '-) " backward" " word")
                     "")
-                  (if (and transient-mark-mode mark-active) " in region" ""))
+                  (if (use-region-p) " in region" ""))
           nil)))
      (list (nth 0 common) (nth 1 common) (nth 2 common)
           ;; These are done separately here
           ;; so that command-history will record these expressions
           ;; rather than the values they had this time.
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-beginning))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-end))
           (nth 3 common))))
   (perform-replace from-string to-string t nil delimited nil nil start end 
backward))
@@ -392,15 +392,15 @@ (defun query-replace-regexp (regexp to-string &optional 
delimited start end back
                       (if (eq current-prefix-arg '-) " backward" " word")
                     "")
                   " regexp"
-                  (if (and transient-mark-mode mark-active) " in region" ""))
+                  (if (use-region-p) " in region" ""))
           t)))
      (list (nth 0 common) (nth 1 common) (nth 2 common)
           ;; These are done separately here
           ;; so that command-history will record these expressions
           ;; rather than the values they had this time.
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-beginning))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-end))
           (nth 3 common))))
   (perform-replace regexp to-string t t delimited nil nil start end backward))
@@ -469,9 +469,9 @@ (defun query-replace-regexp-eval (regexp to-expr &optional 
delimited start end)
        ;; and the user might enter a single token.
        (replace-match-string-symbols to)
        (list from (car to) current-prefix-arg
-            (if (and transient-mark-mode mark-active)
+            (if (use-region-p)
                 (region-beginning))
-            (if (and transient-mark-mode mark-active)
+            (if (use-region-p)
                 (region-end))))))
   (perform-replace regexp (cons 'replace-eval-replacement to-expr)
                   t 'literal delimited nil nil start end))
@@ -507,9 +507,9 @@ (defun map-query-replace-regexp (regexp to-strings 
&optional n start end)
      (list from to
           (and current-prefix-arg
                (prefix-numeric-value current-prefix-arg))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-beginning))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-end)))))
   (let (replacements)
     (if (listp to-strings)
@@ -571,12 +571,12 @@ (defun replace-string (from-string to-string &optional 
delimited start end backw
                       (if (eq current-prefix-arg '-) " backward" " word")
                     "")
                   " string"
-                  (if (and transient-mark-mode mark-active) " in region" ""))
+                  (if (use-region-p) " in region" ""))
           nil)))
      (list (nth 0 common) (nth 1 common) (nth 2 common)
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-beginning))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-end))
           (nth 3 common))))
   (perform-replace from-string to-string nil nil delimited nil nil start end 
backward))
@@ -645,12 +645,12 @@ (defun replace-regexp (regexp to-string &optional 
delimited start end backward)
                       (if (eq current-prefix-arg '-) " backward" " word")
                     "")
                   " regexp"
-                  (if (and transient-mark-mode mark-active) " in region" ""))
+                  (if (use-region-p) " in region" ""))
           t)))
      (list (nth 0 common) (nth 1 common) (nth 2 common)
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-beginning))
-          (if (and transient-mark-mode mark-active)
+          (if (use-region-p)
               (region-end))
           (nth 3 common))))
   (perform-replace regexp to-string nil t delimited nil nil start end 
backward))
@@ -816,7 +816,7 @@ (defun keep-lines (regexp &optional rstart rend interactive)
                  (unless (or (bolp) (eobp))
                    (forward-line 0))
                  (point-marker)))))
-    (if (and interactive transient-mark-mode mark-active)
+    (if (and interactive (use-region-p))
        (setq rstart (region-beginning)
              rend (progn
                     (goto-char (region-end))
@@ -885,7 +885,7 @@ (defun flush-lines (regexp &optional rstart rend 
interactive)
       (progn
        (goto-char (min rstart rend))
        (setq rend (copy-marker (max rstart rend))))
-    (if (and interactive transient-mark-mode mark-active)
+    (if (and interactive (use-region-p))
        (setq rstart (region-beginning)
              rend (copy-marker (region-end)))
       (setq rstart (point)
@@ -935,7 +935,7 @@ (defun how-many (regexp &optional rstart rend interactive)
               (setq rend (max rstart rend)))
           (goto-char rstart)
           (setq rend (point-max)))
-      (if (and interactive transient-mark-mode mark-active)
+      (if (and interactive (use-region-p))
          (setq rstart (region-beginning)
                rend (region-end))
        (setq rstart (point)





reply via email to

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