GNU bug report logs -
#55234
28.1; replace-string in rectangle regio
Previous Next
Reported by: Paulo Sousa <de.sousa.paulus <at> gmail.com>
Date: Mon, 2 May 2022 23:34:02 UTC
Severity: normal
Found in version 28.1
Fixed in version 29.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
Message #20 received at 55234 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
>> (mapcar 'car (region-bounds))
>
> Sounds reasonable.
Then here is the implementation that is more less in line with
how other rectangular functions are implemented:
[rectangle--region-beginning.patch (text/x-diff, inline)]
diff --git a/lisp/rect.el b/lisp/rect.el
index 15d636f074..cb545f473a 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -754,17 +754,42 @@ rectangle-previous-line
(rectangle--col-pos col 'point)))
+(defun rectangle--region-beginning (orig)
+ "Like `region-beginning' but supports rectangular regions."
+ (cond
+ ((not rectangle-mark-mode)
+ (funcall orig))
+ (t
+ (caar (region-bounds)))))
+
+(advice-add 'region-beginning :around #'rectangle--region-beginning)
+
+(defun rectangle--region-end (orig)
+ "Like `region-end' but supports rectangular regions."
+ (cond
+ ((not rectangle-mark-mode)
+ (funcall orig))
+ (t
+ (cdar (last (region-bounds))))))
+
+(advice-add 'region-end :around #'rectangle--region-end)
+
(defun rectangle--extract-region (orig &optional delete)
(cond
((not rectangle-mark-mode)
(funcall orig delete))
((eq delete 'bounds)
- (extract-rectangle-bounds (region-beginning) (region-end)))
+ (extract-rectangle-bounds
+ ;; Avoid recursive calls
+ (let (rectangle-mark-mode) (region-beginning))
+ (let (rectangle-mark-mode) (region-end))))
(t
(let* ((strs (funcall (if delete
#'delete-extract-rectangle
#'extract-rectangle)
- (region-beginning) (region-end)))
+ ;; Avoid recursive calls
+ (let (rectangle-mark-mode) (region-beginning))
+ (let (rectangle-mark-mode) (region-end))))
(str (mapconcat #'identity strs "\n")))
(when (eq last-command 'kill-region)
;; Try to prevent kill-region from appending this to some
This bug report was last modified 3 years and 41 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.