diff options
| author | Stefan Kangas | 2019-07-09 00:50:41 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2019-07-09 00:53:18 +0200 |
| commit | 8d8d1d8000b2ac5cac12f23b1b2d270b3340f288 (patch) | |
| tree | e523056f37e5f3e3caad1547551ab613210cce23 | |
| parent | fb48eb48f3bd432307821bc7158d1090f0e4bbf0 (diff) | |
| download | emacs-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/NEWS | 3 | ||||
| -rw-r--r-- | lisp/delim-col.el | 92 |
2 files changed, 50 insertions, 45 deletions
| @@ -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', |
| 446 | and '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 | ||
| 261 | START and END delimit the text region." | 261 | START 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 |