[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 44517b2 3/3: Ibuffer: Mark locked buffers
From: |
Tino Calancha |
Subject: |
[Emacs-diffs] master 44517b2 3/3: Ibuffer: Mark locked buffers |
Date: |
Thu, 7 Jul 2016 16:49:27 +0000 (UTC) |
branch: master
commit 44517b21abc4c243cdc7df264c629d592d9fb4cf
Author: Tino Calancha <address@hidden>
Commit: Tino Calancha <address@hidden>
Ibuffer: Mark locked buffers
* lisp/ibuf-ext.el (ibuffer-locked-buffer-p): New defun.
(ibuffer-mark-by-locked): New command.
(ibuffer-mode-map): Bind it to '% L'; update menus.
(ibuffer-mode): Update mode doc.
;* etc/NEWS: Add NEWS entry for these changes and previous two commits.
---
etc/NEWS | 9 +++++++++
lisp/ibuf-ext.el | 18 ++++++++++++++++++
lisp/ibuffer.el | 5 +++++
3 files changed, 32 insertions(+)
diff --git a/etc/NEWS b/etc/NEWS
index 87ffb43..deb1889 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -199,6 +199,15 @@ same as in modes where the character is not whitespace.
** Ibuffer
---
+*** A new command 'ibuffer-mark-by-locked' to mark
+all locked buffers; bound to '% L'.
+
+---
+*** A new option 'ibuffer-locked-char' to indicate
+locked buffers; Ibuffer shows a new column displaying
+'ibuffer-locked-char' for locked buffers.
+
+---
*** A new command 'ibuffer-unmark-all-marks' to unmark
all buffers without asking confirmation; bound to
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 72fa862..2444dac 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1484,6 +1484,24 @@ You can then feed the file name(s) to other commands
with \\[yank]."
#'(lambda (buf)
(string-match regexp (buffer-name buf)))))
+(defun ibuffer-locked-buffer-p (&optional buf)
+ "Return non-nil if BUF is locked.
+When BUF nil, default to the buffer at current line."
+ (let ((_buffer (or buf (ibuffer-current-buffer)))
+ char)
+ (when _buffer
+ (with-current-buffer _buffer
+ (and (boundp 'emacs-lock-mode) emacs-lock-mode)))))
+
+;;;###autoload
+(defun ibuffer-mark-by-locked ()
+ "Mark all locked buffers."
+ (interactive)
+ (when (featurep 'emacs-lock)
+ (ibuffer-mark-on-buffer
+ (lambda (buf)
+ (ibuffer-locked-buffer-p buf)))))
+
;;;###autoload
(defun ibuffer-mark-by-mode-regexp (regexp)
"Mark all buffers whose major mode matches REGEXP."
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index ff1eb8b..d67f95f 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -556,6 +556,7 @@ directory, like `default-directory'."
(define-key map (kbd "% m") 'ibuffer-mark-by-mode-regexp)
(define-key map (kbd "% f") 'ibuffer-mark-by-file-name-regexp)
(define-key map (kbd "% g") 'ibuffer-mark-by-content-regexp)
+ (define-key map (kbd "% L") 'ibuffer-mark-by-locked)
(define-key map (kbd "C-t") 'ibuffer-visit-tags-table)
@@ -782,6 +783,9 @@ directory, like `default-directory'."
'(menu-item "Mark by content (regexp)..."
ibuffer-mark-by-content-regexp
:help "Mark buffers whose content matches a regexp"))
+ (define-key-after map [menu-bar mark mark-by-locked]
+ '(menu-item "Mark by locked buffers..." ibuffer-mark-by-locked
+ :help "Mark all locked buffers"))
map))
@@ -2476,6 +2480,7 @@ Marking commands:
`\\[ibuffer-mark-by-mode-regexp]' - Mark buffers by their major mode, using
a regexp.
`\\[ibuffer-mark-by-file-name-regexp]' - Mark buffers by their filename,
using a regexp.
`\\[ibuffer-mark-by-content-regexp]' - Mark buffers by their content, using
a regexp.
+ `\\[ibuffer-mark-by-locked]' - Mark all locked buffers.
Filtering commands: