summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorStefan Kangas <stefankangas@gmail.com>2019-07-09 00:50:41 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-07-09 00:53:18 +0200
commit8d8d1d8000b2ac5cac12f23b1b2d270b3340f288 (patch)
treee523056f37e5f3e3caad1547551ab613210cce23 /lisp
parentfb48eb48f3bd432307821bc7158d1090f0e4bbf0 (diff)
downloademacs-8d8d1d8000b2ac5cac12f23b1b2d270b3340f288.tar.gz
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).
Diffstat (limited to 'lisp')
-rw-r--r--lisp/delim-col.el92
1 files changed, 48 insertions, 44 deletions
diff --git a/lisp/delim-col.el b/lisp/delim-col.el
index 3e309e917d2..b3a773e5b02 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