diff options
| author | Tino Calancha | 2016-07-08 10:55:22 +0900 |
|---|---|---|
| committer | Tino Calancha | 2016-07-08 10:55:22 +0900 |
| commit | 9bf31d1d3f35880c652f76509d1e27d33e454121 (patch) | |
| tree | 01f10e8079e084fc6b58a7a6952f7d3c8a86f9d5 | |
| parent | ee7bc988603ca16e6ef37fbbc377d82db37954c0 (diff) | |
| download | emacs-9bf31d1d3f35880c652f76509d1e27d33e454121.tar.gz emacs-9bf31d1d3f35880c652f76509d1e27d33e454121.zip | |
Ibuffer change marks
* lisp/ibuffer.el (ibuffer-change-marks): New command.
(ibuffer-mode-map): Bind it to '* c'.
(ibuffer-mode-groups-popup): Update menus.
(ibuffer-mode): Update mode doc.
; * etc/NEWS: Add entry for this new feature.
| -rw-r--r-- | etc/NEWS | 3 | ||||
| -rw-r--r-- | lisp/ibuffer.el | 23 |
2 files changed, 26 insertions, 0 deletions
| @@ -199,6 +199,9 @@ same as in modes where the character is not whitespace. | |||
| 199 | ** Ibuffer | 199 | ** Ibuffer |
| 200 | 200 | ||
| 201 | --- | 201 | --- |
| 202 | *** New command 'ibuffer-change-marks'; bound to '* c'. | ||
| 203 | |||
| 204 | --- | ||
| 202 | *** A new command 'ibuffer-mark-by-locked' to mark | 205 | *** A new command 'ibuffer-mark-by-locked' to mark |
| 203 | all locked buffers; bound to '% L'. | 206 | all locked buffers; bound to '% L'. |
| 204 | 207 | ||
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index d67f95f8454..4f266d909e4 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -480,6 +480,7 @@ directory, like `default-directory'." | |||
| 480 | (define-key map (kbd "DEL") 'ibuffer-unmark-backward) | 480 | (define-key map (kbd "DEL") 'ibuffer-unmark-backward) |
| 481 | (define-key map (kbd "M-DEL") 'ibuffer-unmark-all) | 481 | (define-key map (kbd "M-DEL") 'ibuffer-unmark-all) |
| 482 | (define-key map (kbd "* *") 'ibuffer-unmark-all) | 482 | (define-key map (kbd "* *") 'ibuffer-unmark-all) |
| 483 | (define-key map (kbd "* c") 'ibuffer-change-marks) | ||
| 483 | (define-key map (kbd "U") 'ibuffer-unmark-all-marks) | 484 | (define-key map (kbd "U") 'ibuffer-unmark-all-marks) |
| 484 | (define-key map (kbd "* M") 'ibuffer-mark-by-mode) | 485 | (define-key map (kbd "* M") 'ibuffer-mark-by-mode) |
| 485 | (define-key map (kbd "* m") 'ibuffer-mark-modified-buffers) | 486 | (define-key map (kbd "* m") 'ibuffer-mark-modified-buffers) |
| @@ -724,6 +725,9 @@ directory, like `default-directory'." | |||
| 724 | (define-key-after map [menu-bar mark toggle-marks] | 725 | (define-key-after map [menu-bar mark toggle-marks] |
| 725 | '(menu-item "Toggle marks" ibuffer-toggle-marks | 726 | '(menu-item "Toggle marks" ibuffer-toggle-marks |
| 726 | :help "Unmark marked buffers, and mark unmarked buffers")) | 727 | :help "Unmark marked buffers, and mark unmarked buffers")) |
| 728 | (define-key-after map [menu-bar mark change-marks] | ||
| 729 | '(menu-item "Change marks" ibuffer-change-marks | ||
| 730 | :help "Change OLD mark for marked buffers with NEW")) | ||
| 727 | (define-key-after map [menu-bar mark mark-forward] | 731 | (define-key-after map [menu-bar mark mark-forward] |
| 728 | '(menu-item "Mark" ibuffer-mark-forward | 732 | '(menu-item "Mark" ibuffer-mark-forward |
| 729 | :help "Mark the buffer at point")) | 733 | :help "Mark the buffer at point")) |
| @@ -1379,6 +1383,24 @@ group." | |||
| 1379 | (message "%s buffers marked" count)) | 1383 | (message "%s buffers marked" count)) |
| 1380 | (ibuffer-redisplay t)) | 1384 | (ibuffer-redisplay t)) |
| 1381 | 1385 | ||
| 1386 | (defun ibuffer-change-marks (&optional old new) | ||
| 1387 | "Change all OLD marks to NEW marks. | ||
| 1388 | OLD and NEW are both characters used to mark buffers." | ||
| 1389 | (interactive | ||
| 1390 | (let* ((cursor-in-echo-area t) | ||
| 1391 | (old (progn (message "Change (old mark): ") (read-char))) | ||
| 1392 | (new (progn (message "Change %c marks to (new mark): " old) | ||
| 1393 | (read-char)))) | ||
| 1394 | (list old new))) | ||
| 1395 | (if (or (eq old ?\r) (eq new ?\r)) | ||
| 1396 | (ding) | ||
| 1397 | (let ((count | ||
| 1398 | (ibuffer-map-lines | ||
| 1399 | (lambda (_buf mark) | ||
| 1400 | (when (eq mark old) | ||
| 1401 | (ibuffer-set-mark new) t))))) | ||
| 1402 | (message "%s marks changed" count)))) | ||
| 1403 | |||
| 1382 | (defsubst ibuffer-get-region-and-prefix () | 1404 | (defsubst ibuffer-get-region-and-prefix () |
| 1383 | (let ((arg (prefix-numeric-value current-prefix-arg))) | 1405 | (let ((arg (prefix-numeric-value current-prefix-arg))) |
| 1384 | (if (use-region-p) (list (region-beginning) (region-end) arg) | 1406 | (if (use-region-p) (list (region-beginning) (region-end) arg) |
| @@ -2457,6 +2479,7 @@ Marking commands: | |||
| 2457 | `\\[ibuffer-mark-forward]' - Mark the buffer at point. | 2479 | `\\[ibuffer-mark-forward]' - Mark the buffer at point. |
| 2458 | `\\[ibuffer-toggle-marks]' - Unmark all currently marked buffers, and mark | 2480 | `\\[ibuffer-toggle-marks]' - Unmark all currently marked buffers, and mark |
| 2459 | all unmarked buffers. | 2481 | all unmarked buffers. |
| 2482 | `\\[ibuffer-change-marks]' - Change the mark used on marked buffers. | ||
| 2460 | `\\[ibuffer-unmark-forward]' - Unmark the buffer at point. | 2483 | `\\[ibuffer-unmark-forward]' - Unmark the buffer at point. |
| 2461 | `\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the | 2484 | `\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the |
| 2462 | previous line. | 2485 | previous line. |