mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-25 10:47:00 +00:00
(last-buffer): Use buffer-list with frame arg.
Create *scratch* if no other choice exists. Fix bugs.
This commit is contained in:
parent
24b01ec4c2
commit
196a1cba66
@ -277,24 +277,24 @@ Keymap for what is displayed by `mode-line-buffer-identification'.")
|
||||
Return the last non-hidden buffer in the buffer list."
|
||||
;; This logic is more or less copied from bury-buffer,
|
||||
;; except that we reverse the buffer list.
|
||||
(let ((fbl (frame-parameter nil 'buffer-list))
|
||||
(list (buffer-list))
|
||||
(let ((list (nreverse (buffer-list (selected-frame))))
|
||||
(pred (frame-parameter nil 'buffer-predicate))
|
||||
found notsogood)
|
||||
;; Merge the frame buffer list with the whole buffer list,
|
||||
;; and reverse it.
|
||||
(dolist (buffer fbl)
|
||||
(setq list (delq buffer list)))
|
||||
(setq list (nreverse (append fbl list)))
|
||||
(while (not found)
|
||||
(while (and list (not found))
|
||||
(unless (or (eq (aref (buffer-name (car list)) 0) ? )
|
||||
;; If the selected frame has a buffer_predicate,
|
||||
;; disregard buffers that don't fit the predicate.
|
||||
(and pred (not (funcall pred (car list)))))
|
||||
(if (get-buffer-window (car list) 'visible)
|
||||
(unless notsogood (setq notsogood (car list)))
|
||||
(setq found (car list)))))
|
||||
(or found notsogood)))
|
||||
(or notsogood (eq (car list) (current-buffer)))
|
||||
(setq found (car list))))
|
||||
(pop list))
|
||||
(or found notsogood
|
||||
(get-buffer "*scratch*")
|
||||
(progn
|
||||
(set-buffer-major-mode
|
||||
(get-buffer-create "*scratch*"))
|
||||
(get-buffer "*scratch*")))))
|
||||
|
||||
(defun unbury-buffer () "\
|
||||
Switch to the last buffer in the buffer list."
|
||||
|
Loading…
Reference in New Issue
Block a user