[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 8d8d1d8 2/2: Delegate to rectangle version in delim
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] master 8d8d1d8 2/2: Delegate to rectangle version in delim-col when appropriate |
Date: |
Mon, 8 Jul 2019 18:53:26 -0400 (EDT) |
branch: master
commit 8d8d1d8000b2ac5cac12f23b1b2d270b3340f288
Author: Stefan Kangas <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>
Delegate to rectangle version in delim-col when appropriate
* lisp/delim-col.el (delimit-columns-region): Delegate to
`delimit-columns-rectangle' when called with a rectangular
region (bug#36453).
---
etc/NEWS | 3 +-
lisp/delim-col.el | 92 +++++++++++++++++++++++++++++--------------------------
2 files changed, 50 insertions(+), 45 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 852b6e4..532babd 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -442,7 +442,8 @@ interface that's more like functions like 'search-forward'.
---
** More commands support noncontiguous rectangular regions, namely
-'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp'.
+'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp',
+and 'delimit-columns-region'.
+++
** When asked to visit a large file, Emacs now offers visiting it literally.
diff --git a/lisp/delim-col.el b/lisp/delim-col.el
index 3e309e9..b3a773e 100644
--- a/lisp/delim-col.el
+++ b/lisp/delim-col.el
@@ -260,50 +260,54 @@ at the left corner."
START and END delimit the text region."
(interactive "*r")
- (let ((delimit-columns-str-before
- (delimit-columns-str delimit-columns-str-before))
- (delimit-columns-str-separator
- (delimit-columns-str delimit-columns-str-separator))
- (delimit-columns-str-after
- (delimit-columns-str delimit-columns-str-after))
- (delimit-columns-before
- (delimit-columns-str delimit-columns-before))
- (delimit-columns-after
- (delimit-columns-str delimit-columns-after))
- (delimit-columns-start
- (if (natnump delimit-columns-start)
- delimit-columns-start
- 0))
- (delimit-columns-end
- (if (integerp delimit-columns-end)
- delimit-columns-end
- 1000000))
- (delimit-columns-limit (make-marker))
- (the-end (copy-marker end))
- delimit-columns-max)
- (when (<= delimit-columns-start delimit-columns-end)
- (save-excursion
- (goto-char start)
- (beginning-of-line)
- ;; get maximum length for each column
- (and delimit-columns-format
- (save-excursion
- (while (< (point) the-end)
- (delimit-columns-rectangle-max
- (prog1
- (point)
- (end-of-line)))
- (forward-char 1))))
- ;; prettify columns
- (while (< (point) the-end)
- (delimit-columns-rectangle-line
- (prog1
- (point)
- (end-of-line)))
- (forward-char 1))
- ;; nullify markers
- (set-marker delimit-columns-limit nil)
- (set-marker the-end nil)))))
+ (if rectangle-mark-mode
+ ;; Delegate to delimit-columns-rectangle when called with a
+ ;; rectangular region.
+ (delimit-columns-rectangle start end)
+ (let ((delimit-columns-str-before
+ (delimit-columns-str delimit-columns-str-before))
+ (delimit-columns-str-separator
+ (delimit-columns-str delimit-columns-str-separator))
+ (delimit-columns-str-after
+ (delimit-columns-str delimit-columns-str-after))
+ (delimit-columns-before
+ (delimit-columns-str delimit-columns-before))
+ (delimit-columns-after
+ (delimit-columns-str delimit-columns-after))
+ (delimit-columns-start
+ (if (natnump delimit-columns-start)
+ delimit-columns-start
+ 0))
+ (delimit-columns-end
+ (if (integerp delimit-columns-end)
+ delimit-columns-end
+ 1000000))
+ (delimit-columns-limit (make-marker))
+ (the-end (copy-marker end))
+ delimit-columns-max)
+ (when (<= delimit-columns-start delimit-columns-end)
+ (save-excursion
+ (goto-char start)
+ (beginning-of-line)
+ ;; get maximum length for each column
+ (and delimit-columns-format
+ (save-excursion
+ (while (< (point) the-end)
+ (delimit-columns-rectangle-max
+ (prog1
+ (point)
+ (end-of-line)))
+ (forward-char 1))))
+ ;; prettify columns
+ (while (< (point) the-end)
+ (delimit-columns-rectangle-line
+ (prog1
+ (point)
+ (end-of-line)))
+ (forward-char 1))
+ ;; nullify markers
+ (set-marker delimit-columns-limit nil)
+ (set-marker the-end nil))))))
;;;###autoload