]> code.delx.au - gnu-emacs/commitdiff
(Buffer-menu-toggle-read-only) Added, per Rob Austein's suggestion
authorEric S. Raymond <esr@snark.thyrsus.com>
Sat, 27 Mar 1993 01:58:22 +0000 (01:58 +0000)
committerEric S. Raymond <esr@snark.thyrsus.com>
Sat, 27 Mar 1993 01:58:22 +0000 (01:58 +0000)
in the LCD package bm-toggle.el.

lisp/buff-menu.el

index e722df90953558fa0cc2fc0037a05e2a3cfd8277..c70e9a0aba807a965ef91d2273c89d560c460379 100644 (file)
@@ -83,7 +83,9 @@ restore window configuration when only one buffer is selected.")
   (define-key Buffer-menu-mode-map "?" 'describe-mode)
   (define-key Buffer-menu-mode-map "u" 'Buffer-menu-unmark)
   (define-key Buffer-menu-mode-map "m" 'Buffer-menu-mark)
-  (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table))
+  (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table)
+  (define-key Buffer-menu-mode-map "%" 'Buffer-menu-toggle-read-only)
+)
 
 ;; Buffer Menu mode is suitable only for specially formatted data.
 (put 'Buffer-menu-mode 'mode-class 'special)
@@ -111,7 +113,8 @@ Letters do not insert themselves; instead, they are commands.
 \\[Buffer-menu-execute] -- delete or save marked buffers.
 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
   With prefix argument, also move up one line.
-\\[Buffer-menu-backup-unmark] -- back up a line and remove marks."
+\\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
+\\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line."
   (kill-all-local-variables)
   (use-local-map Buffer-menu-mode-map)
   (setq truncate-lines t)
@@ -355,4 +358,20 @@ The current window remains selected."
     (pop-to-buffer buff)
     (bury-buffer menu)))
 
+(defun Buffer-menu-toggle-read-only ()
+  "Toggle read-only status of buffer on this line."
+  (interactive)
+  (let (char)
+    (save-excursion
+      (set-buffer (Buffer-menu-buffer t))
+      (toggle-read-only)
+      (setq char (if buffer-read-only ?% ? )))
+    (save-excursion
+      (beginning-of-line)
+      (forward-char 2)
+      (if (/= (following-char) char)
+          (let (buffer-read-only)
+            (delete-char 1)
+            (insert char))))))
+
 ;;; buff-menu.el ends here