Subject: 26.1.50; Ibuffer: Add toggle ibuffer-do-toggle-lock

From: Tino Calancha <[email-masked]>
Date: Sun, 12 Aug 2018 01:49:47 +0900

Severity: wishlist

Ibuffer reports locked buffers in its 3rd column.  A toggle for this
might be convenient.
--8<-----------------------------cut here---------------start------------->8---
commit c939fc542675d648d42c66d59b781fa2ab703897
Author: Tino Calancha <[email-masked]>
Date:   Sun Aug 12 01:37:05 2018 +0900

    Ibuffer: Add toggle ibuffer-do-toggle-lock
    
    Toggle the locked status in marked buffers or the buffer
    at point (Bug#32421).
    * lisp/ibuffer.el (ibuffer-do-toggle-lock): New command.
    (ibuffer-mode-map): Bind it to 'L'.
    (ibuffer-mode-operate-map): Add entries for
    `ibuffer-do-toggle-read-only' and `ibuffer-do-toggle-lock'.
    * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 26.2):
    Announce the change.

diff --git a/etc/NEWS b/etc/NEWS
index a1c12a6766..6d432d857e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -45,6 +45,11 @@ often cause crashes.  Set it to nil if you really need those fonts.
 
 * Changes in Specialized Modes and Packages in Emacs 26.2
 
+** Ibuffer
+
+---
+*** New toggle 'ibuffer-do-toggle-lock'.
+
 ** Gnus
 
 ---
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 0a7bfe00a9..8bf089017b 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -590,6 +590,7 @@ ibuffer-mode-map
     (define-key map (kbd "R") 'ibuffer-do-rename-uniquely)
     (define-key map (kbd "S") 'ibuffer-do-save)
     (define-key map (kbd "T") 'ibuffer-do-toggle-read-only)
+    (define-key map (kbd "L") 'ibuffer-do-toggle-lock)
     (define-key map (kbd "r") 'ibuffer-do-replace-regexp)
     (define-key map (kbd "V") 'ibuffer-do-revert)
     (define-key map (kbd "W") 'ibuffer-do-view-and-eval)
@@ -862,6 +863,10 @@ ibuffer-mode-operate-map
       '(menu-item "Print" ibuffer-do-print))
     (define-key-after operate-map [do-toggle-modified]
       '(menu-item "Toggle modification flag" ibuffer-do-toggle-modified))
+    (define-key-after operate-map [do-toggle-read-only]
+      '(menu-item "Toggle read-only flag" ibuffer-do-toggle-read-only))
+    (define-key-after operate-map [do-toggle-lock]
+      '(menu-item "Toggle lock flag" ibuffer-do-toggle-lock))
     (define-key-after operate-map [do-revert]
       '(menu-item "Revert" ibuffer-do-revert
         :help "Revert marked buffers to their associated file"))
@@ -1361,6 +1366,16 @@ ibuffer-do-toggle-read-only
    :modifier-p t)
   (read-only-mode (if (integerp arg) arg 'toggle)))
 
+(define-ibuffer-op ibuffer-do-toggle-lock (&optional arg)
+  "Toggle locked status in marked buffers.
+If optional ARG is a non-negative integer, lock buffers.
+If ARG is a negative integer or 0, unlock buffers.
+Otherwise, toggle lock status."
+  (:opstring "toggled lock status in"
+   :interactive "P"
+   :modifier-p t)
+  (emacs-lock-mode (if (integerp arg) arg 'toggle)))
+
 (define-ibuffer-op ibuffer-do-delete ()
   "Kill marked buffers as with `kill-this-buffer'."
   (:opstring "killed"
@@ -2514,6 +2529,7 @@ ibuffer-mode
   `\\[ibuffer-do-view-other-frame]' - View the marked buffers in another frame.
   `\\[ibuffer-do-revert]' - Revert the marked buffers.
   `\\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers.
+  `\\[ibuffer-do-toggle-lock]' - Toggle lock state of marked buffers.
   `\\[ibuffer-do-delete]' - Kill the marked buffers.
   `\\[ibuffer-do-isearch]' - Do incremental search in the marked buffers.
   `\\[ibuffer-do-isearch-regexp]' - Isearch for regexp in the marked buffers.
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 26.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2018-08-11
Repository revision: ec6f588940e51013435408a456c10d33ddf98fb2
Windowing system distributor 'The X.Org Foundation', version 11.0.11902000
System Description:	Debian GNU/Linux 9.5 (stretch)