* buff-menu.el: Use with-current-buffer and inhibit-read-only.
(Buffer-menu-toggle-read-only): Avoid vc-toggle-read-only. * bs.el: Use with-current-buffer. Simplify. (bs-toggle-readonly): Avoid vc-toggle-read-only.
This commit is contained in:
parent
eafee8f217
commit
70ef885744
3 changed files with 42 additions and 52 deletions
|
@ -1,5 +1,11 @@
|
|||
2008-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* buff-menu.el: Use with-current-buffer and inhibit-read-only.
|
||||
(Buffer-menu-toggle-read-only): Avoid vc-toggle-read-only.
|
||||
|
||||
* bs.el: Use with-current-buffer. Simplify.
|
||||
(bs-toggle-readonly): Avoid vc-toggle-read-only.
|
||||
|
||||
* eshell/esh-cmd.el (eshell-manipulate): Check eshell-debug-command
|
||||
is bound before using it.
|
||||
|
||||
|
|
49
lisp/bs.el
49
lisp/bs.el
|
@ -129,6 +129,8 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
;; ----------------------------------------------------------------------
|
||||
;; Globals for customization
|
||||
;; ----------------------------------------------------------------------
|
||||
|
@ -373,9 +375,7 @@ A value of `always' means to show buffer regardless of the configuration.")
|
|||
|
||||
(defun bs--sort-by-size (b1 b2)
|
||||
"Compare buffers B1 and B2 by buffer size."
|
||||
(save-excursion
|
||||
(< (progn (set-buffer b1) (buffer-size))
|
||||
(progn (set-buffer b2) (buffer-size)))))
|
||||
(< (buffer-size b1) (buffer-size b2)))
|
||||
|
||||
(defcustom bs-sort-functions
|
||||
'(("by name" bs--sort-by-name "Buffer" region)
|
||||
|
@ -814,11 +814,9 @@ Leave Buffer Selection Menu."
|
|||
(defun bs-save ()
|
||||
"Save buffer on current line."
|
||||
(interactive)
|
||||
(let ((buffer (bs--current-buffer)))
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(save-buffer))
|
||||
(bs--update-current-line)))
|
||||
(with-current-buffer (bs--current-buffer)
|
||||
(save-buffer)
|
||||
(bs--update-current-line))
|
||||
|
||||
(defun bs-visit-tags-table ()
|
||||
"Visit the tags table in the buffer on this line.
|
||||
|
@ -832,16 +830,12 @@ See `visit-tags-table'."
|
|||
(defun bs-toggle-current-to-show ()
|
||||
"Toggle status of showing flag for buffer in current line."
|
||||
(interactive)
|
||||
(let ((buffer (bs--current-buffer))
|
||||
res)
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(setq res (cond ((null bs-buffer-show-mark)
|
||||
'never)
|
||||
((eq bs-buffer-show-mark 'never)
|
||||
'always)
|
||||
(t nil)))
|
||||
(setq bs-buffer-show-mark res))
|
||||
(let ((res
|
||||
(with-current-buffer (bs--current-buffer)
|
||||
(setq bs-buffer-show-mark (case bs-buffer-show-mark
|
||||
((nil) 'never)
|
||||
((never) 'always)
|
||||
(t nil))))))
|
||||
(bs--update-current-line)
|
||||
(bs--set-window-height)
|
||||
(bs--show-config-message res)))
|
||||
|
@ -969,21 +963,17 @@ Default is `bs--current-sort-function'."
|
|||
|
||||
(defun bs-toggle-readonly ()
|
||||
"Toggle read-only status for buffer on current line.
|
||||
Uses function `vc-toggle-read-only'."
|
||||
Uses function `toggle-read-only'."
|
||||
(interactive)
|
||||
(let ((buffer (bs--current-buffer)))
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(vc-toggle-read-only))
|
||||
(bs--update-current-line)))
|
||||
(with-current-buffer (bs--current-buffer)
|
||||
(toggle-read-only))
|
||||
(bs--update-current-line))
|
||||
|
||||
(defun bs-clear-modified ()
|
||||
"Set modified flag for buffer on current line to nil."
|
||||
(interactive)
|
||||
(let ((buffer (bs--current-buffer)))
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(set-buffer-modified-p nil)))
|
||||
(with-current-buffer (bs--current-buffer)
|
||||
(set-buffer-modified-p nil))
|
||||
(bs--update-current-line))
|
||||
|
||||
(defun bs--nth-wrapper (count fun &rest args)
|
||||
|
@ -1352,8 +1342,7 @@ normally *buffer-selection*."
|
|||
(let ((string "")
|
||||
(to-much 0)
|
||||
(apply-args (append (list bs--buffer-coming-from bs-current-list))))
|
||||
(save-excursion
|
||||
(set-buffer buffer)
|
||||
(with-current-buffer buffer
|
||||
(dolist (column bs-attributes-list)
|
||||
(let* ((min (bs--get-value (nth 1 column)))
|
||||
(new-string (bs--format-aux (bs--get-value (nth 4 column) ; fun
|
||||
|
|
|
@ -305,7 +305,7 @@ For more information, see the function `buffer-menu'."
|
|||
"Mark buffer on this line for being displayed by \\<Buffer-menu-mode-map>\\[Buffer-menu-select] command."
|
||||
(interactive)
|
||||
(when (Buffer-menu-no-header)
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(delete-char 1)
|
||||
(insert ?>)
|
||||
(forward-line 1))))
|
||||
|
@ -317,8 +317,8 @@ Optional prefix arg means move up."
|
|||
(when (Buffer-menu-no-header)
|
||||
(let* ((buf (Buffer-menu-buffer t))
|
||||
(mod (buffer-modified-p buf))
|
||||
(readonly (save-excursion (set-buffer buf) buffer-read-only))
|
||||
(buffer-read-only nil))
|
||||
(readonly (with-current-buffer buf buffer-read-only))
|
||||
(inhibit-read-only t))
|
||||
(delete-char 3)
|
||||
(insert (if readonly (if mod " %*" " % ") (if mod " *" " ")))))
|
||||
(forward-line (if backup -1 1)))
|
||||
|
@ -336,7 +336,7 @@ Prefix arg is how many buffers to delete.
|
|||
Negative arg means delete backwards."
|
||||
(interactive "p")
|
||||
(when (Buffer-menu-no-header)
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(if (or (null arg) (= arg 0))
|
||||
(setq arg 1))
|
||||
(while (> arg 0)
|
||||
|
@ -361,7 +361,7 @@ and then move up one line. Prefix arg means move that many lines."
|
|||
"Mark buffer on this line to be saved by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
|
||||
(interactive)
|
||||
(when (Buffer-menu-no-header)
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(forward-char 2)
|
||||
(delete-char 1)
|
||||
(insert ?S)
|
||||
|
@ -370,14 +370,13 @@ and then move up one line. Prefix arg means move that many lines."
|
|||
(defun Buffer-menu-not-modified (&optional arg)
|
||||
"Mark buffer on this line as unmodified (no changes to save)."
|
||||
(interactive "P")
|
||||
(save-excursion
|
||||
(set-buffer (Buffer-menu-buffer t))
|
||||
(with-current-buffer (Buffer-menu-buffer t)
|
||||
(set-buffer-modified-p arg))
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(forward-char 2)
|
||||
(if (= (char-after) (if arg ?\s ?*))
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(delete-char 1)
|
||||
(insert (if arg ?* ?\s))))))
|
||||
|
||||
|
@ -393,17 +392,16 @@ and then move up one line. Prefix arg means move that many lines."
|
|||
(Buffer-menu-beginning)
|
||||
(while (re-search-forward "^..S" nil t)
|
||||
(let ((modp nil))
|
||||
(save-excursion
|
||||
(set-buffer (Buffer-menu-buffer t))
|
||||
(with-current-buffer (Buffer-menu-buffer t)
|
||||
(save-buffer)
|
||||
(setq modp (buffer-modified-p)))
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(delete-char -1)
|
||||
(insert (if modp ?* ?\s))))))
|
||||
(save-excursion
|
||||
(Buffer-menu-beginning)
|
||||
(let ((buff-menu-buffer (current-buffer))
|
||||
(buffer-read-only nil))
|
||||
(inhibit-read-only t))
|
||||
(while (re-search-forward "^D" nil t)
|
||||
(forward-char -1)
|
||||
(let ((buf (Buffer-menu-buffer nil)))
|
||||
|
@ -430,7 +428,7 @@ in the selected frame."
|
|||
(Buffer-menu-beginning)
|
||||
(while (re-search-forward "^>" nil t)
|
||||
(setq tem (Buffer-menu-buffer t))
|
||||
(let ((buffer-read-only nil))
|
||||
(let ((inhibit-read-only t))
|
||||
(delete-char -1)
|
||||
(insert ?\s))
|
||||
(or (eq tem buff) (memq tem others) (setq others (cons tem others))))
|
||||
|
@ -478,8 +476,7 @@ in the selected frame."
|
|||
"Select the buffer whose line you click on."
|
||||
(interactive "e")
|
||||
(let (buffer)
|
||||
(save-excursion
|
||||
(set-buffer (window-buffer (posn-window (event-end event))))
|
||||
(with-current-buffer (window-buffer (posn-window (event-end event)))
|
||||
(save-excursion
|
||||
(goto-char (posn-point (event-end event)))
|
||||
(setq buffer (Buffer-menu-buffer t))))
|
||||
|
@ -525,15 +522,14 @@ The current window remains selected."
|
|||
"Toggle read-only status of buffer on this line, perhaps via version control."
|
||||
(interactive)
|
||||
(let (char)
|
||||
(save-excursion
|
||||
(set-buffer (Buffer-menu-buffer t))
|
||||
(vc-toggle-read-only)
|
||||
(with-current-buffer (Buffer-menu-buffer t)
|
||||
(toggle-read-only)
|
||||
(setq char (if buffer-read-only ?% ?\s)))
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(forward-char 1)
|
||||
(if (/= (following-char) char)
|
||||
(let (buffer-read-only)
|
||||
(let ((inhibit-read-only t))
|
||||
(delete-char 1)
|
||||
(insert char))))))
|
||||
|
||||
|
@ -545,7 +541,7 @@ The current window remains selected."
|
|||
(beginning-of-line)
|
||||
(bury-buffer (Buffer-menu-buffer t))
|
||||
(let ((line (buffer-substring (point) (progn (forward-line 1) (point))))
|
||||
(buffer-read-only nil))
|
||||
(inhibit-read-only t))
|
||||
(delete-region (point) (progn (forward-line -1) (point)))
|
||||
(goto-char (point-max))
|
||||
(insert line))
|
||||
|
@ -612,7 +608,7 @@ For more information, see the function `buffer-menu'."
|
|||
(if (< column 2) (setq column 2))
|
||||
(if (> column 5) (setq column 5)))
|
||||
(setq Buffer-menu-sort-column column)
|
||||
(let (buffer-read-only l buf m1 m2)
|
||||
(let ((inhibit-read-only t) l buf m1 m2)
|
||||
(save-excursion
|
||||
(Buffer-menu-beginning)
|
||||
(while (not (eobp))
|
||||
|
@ -625,7 +621,6 @@ For more information, see the function `buffer-menu'."
|
|||
(push (list buf m1 m2) l)))
|
||||
(forward-line)))
|
||||
(Buffer-menu-revert)
|
||||
(setq buffer-read-only)
|
||||
(save-excursion
|
||||
(Buffer-menu-beginning)
|
||||
(while (not (eobp))
|
||||
|
|
Loading…
Add table
Reference in a new issue