From 5b2ef61a06001c48a414df3c63f2588c18038f90 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sat, 11 May 2019 12:17:18 +0200 Subject: [PATCH 2/2] 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. --- etc/NEWS | 6 ++++ lisp/delim-col.el | 92 +++++++++++++++++++++++++++++-------------------------- 2 files changed, 54 insertions(+), 44 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index d10a553244..fb70de7902 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1422,6 +1422,12 @@ of an idle Emacs, but may fail on some network file systems; set notification is not supported. The new variable currently has no effect in 'global-auto-revert-mode'. The default value is nil. +** delim-col + +*** 'delimit-columns-region' now delegates to +'delimit-columns-rectangle' when called with a rectangular region +(i.e. using rectangle-mark-mode). + * New Modes and Packages in Emacs 27.1 diff --git a/lisp/delim-col.el b/lisp/delim-col.el index 6904efaad7..a3ba1883af 100644 --- a/lisp/delim-col.el +++ b/lisp/delim-col.el @@ -266,50 +266,54 @@ delimit-columns-region 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 -- 2.11.0