aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTino Calancha2016-07-08 10:55:22 +0900
committerTino Calancha2016-07-08 10:55:22 +0900
commit9bf31d1d3f35880c652f76509d1e27d33e454121 (patch)
tree01f10e8079e084fc6b58a7a6952f7d3c8a86f9d5
parentee7bc988603ca16e6ef37fbbc377d82db37954c0 (diff)
downloademacs-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/NEWS3
-rw-r--r--lisp/ibuffer.el23
2 files changed, 26 insertions, 0 deletions
diff --git a/etc/NEWS b/etc/NEWS
index deb18895555..f9fbe03e086 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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
203all locked buffers; bound to '% L'. 206all 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.
1388OLD 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.