aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Kangas2019-07-09 00:50:41 +0200
committerLars Ingebrigtsen2019-07-09 00:53:18 +0200
commit8d8d1d8000b2ac5cac12f23b1b2d270b3340f288 (patch)
treee523056f37e5f3e3caad1547551ab613210cce23
parentfb48eb48f3bd432307821bc7158d1090f0e4bbf0 (diff)
downloademacs-8d8d1d8000b2ac5cac12f23b1b2d270b3340f288.tar.gz
emacs-8d8d1d8000b2ac5cac12f23b1b2d270b3340f288.zip
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).
-rw-r--r--etc/NEWS3
-rw-r--r--lisp/delim-col.el92
2 files changed, 50 insertions, 45 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 852b6e49486..532babd0fa6 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -442,7 +442,8 @@ interface that's more like functions like 'search-forward'.
442 442
443--- 443---
444** More commands support noncontiguous rectangular regions, namely 444** More commands support noncontiguous rectangular regions, namely
445'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp'. 445'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp',
446and 'delimit-columns-region'.
446 447
447+++ 448+++
448** When asked to visit a large file, Emacs now offers visiting it literally. 449** 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 3e309e917d2..b3a773e5b02 100644
--- a/lisp/delim-col.el
+++ b/lisp/delim-col.el
@@ -260,50 +260,54 @@ at the left corner."
260 260
261START and END delimit the text region." 261START and END delimit the text region."
262 (interactive "*r") 262 (interactive "*r")
263 (let ((delimit-columns-str-before 263 (if rectangle-mark-mode
264 (delimit-columns-str delimit-columns-str-before)) 264 ;; Delegate to delimit-columns-rectangle when called with a
265 (delimit-columns-str-separator 265 ;; rectangular region.
266 (delimit-columns-str delimit-columns-str-separator)) 266 (delimit-columns-rectangle start end)
267 (delimit-columns-str-after 267 (let ((delimit-columns-str-before
268 (delimit-columns-str delimit-columns-str-after)) 268 (delimit-columns-str delimit-columns-str-before))
269 (delimit-columns-before 269 (delimit-columns-str-separator
270 (delimit-columns-str delimit-columns-before)) 270 (delimit-columns-str delimit-columns-str-separator))
271 (delimit-columns-after 271 (delimit-columns-str-after
272 (delimit-columns-str delimit-columns-after)) 272 (delimit-columns-str delimit-columns-str-after))
273 (delimit-columns-start 273 (delimit-columns-before
274 (if (natnump delimit-columns-start) 274 (delimit-columns-str delimit-columns-before))
275 delimit-columns-start 275 (delimit-columns-after
276 0)) 276 (delimit-columns-str delimit-columns-after))
277 (delimit-columns-end 277 (delimit-columns-start
278 (if (integerp delimit-columns-end) 278 (if (natnump delimit-columns-start)
279 delimit-columns-end 279 delimit-columns-start
280 1000000)) 280 0))
281 (delimit-columns-limit (make-marker)) 281 (delimit-columns-end
282 (the-end (copy-marker end)) 282 (if (integerp delimit-columns-end)
283 delimit-columns-max) 283 delimit-columns-end
284 (when (<= delimit-columns-start delimit-columns-end) 284 1000000))
285 (save-excursion 285 (delimit-columns-limit (make-marker))
286 (goto-char start) 286 (the-end (copy-marker end))
287 (beginning-of-line) 287 delimit-columns-max)
288 ;; get maximum length for each column 288 (when (<= delimit-columns-start delimit-columns-end)
289 (and delimit-columns-format 289 (save-excursion
290 (save-excursion 290 (goto-char start)
291 (while (< (point) the-end) 291 (beginning-of-line)
292 (delimit-columns-rectangle-max 292 ;; get maximum length for each column
293 (prog1 293 (and delimit-columns-format
294 (point) 294 (save-excursion
295 (end-of-line))) 295 (while (< (point) the-end)
296 (forward-char 1)))) 296 (delimit-columns-rectangle-max
297 ;; prettify columns 297 (prog1
298 (while (< (point) the-end) 298 (point)
299 (delimit-columns-rectangle-line 299 (end-of-line)))
300 (prog1 300 (forward-char 1))))
301 (point) 301 ;; prettify columns
302 (end-of-line))) 302 (while (< (point) the-end)
303 (forward-char 1)) 303 (delimit-columns-rectangle-line
304 ;; nullify markers 304 (prog1
305 (set-marker delimit-columns-limit nil) 305 (point)
306 (set-marker the-end nil))))) 306 (end-of-line)))
307 (forward-char 1))
308 ;; nullify markers
309 (set-marker delimit-columns-limit nil)
310 (set-marker the-end nil))))))
307 311
308 312
309;;;###autoload 313;;;###autoload