diff options
| author | Károly Lőrentey | 2005-12-16 11:35:25 +0000 |
|---|---|---|
| committer | Károly Lőrentey | 2005-12-16 11:35:25 +0000 |
| commit | a74f9094c42fe38bf1142a698e03bf7f4711451d (patch) | |
| tree | 57c6e052180b05a8cd93bd660b55d68a1690cdf1 | |
| parent | f46955194797ff50b7210d5397d22b1c5e819ec0 (diff) | |
| download | emacs-a74f9094c42fe38bf1142a698e03bf7f4711451d.tar.gz emacs-a74f9094c42fe38bf1142a698e03bf7f4711451d.zip | |
2005-12-16 Lőrentey Károly <lorentey@elte.hu>
* bindings.el (last-buffer): Move to simple.el.
* simple.el (last-buffer): Move here.
(get-next-valid-buffer): New function.
(next-buffer): Use frame-local buffer list, maintain buried buffer list.
(prev-buffer): Ditto. Rename to `previous-buffer'.
* menu-bar.el (menu-bar-update-buffers): Update references to `prev-buffer'.
* bindings.el (global-map): Ditto.
| -rw-r--r-- | lisp/ChangeLog | 11 | ||||
| -rw-r--r-- | lisp/bindings.el | 27 | ||||
| -rw-r--r-- | lisp/menu-bar.el | 4 | ||||
| -rw-r--r-- | lisp/simple.el | 71 |
4 files changed, 72 insertions, 41 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9c4bb748bc3..f967252d5c0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2005-12-16 L$,1 q(Brentey K,Aa(Broly <lorentey@elte.hu> | ||
| 2 | |||
| 3 | * bindings.el (last-buffer): Move to simple.el. | ||
| 4 | * simple.el (last-buffer): Move here. | ||
| 5 | (get-next-valid-buffer): New function. | ||
| 6 | (next-buffer): Use frame-local buffer list, maintain buried buffer list. | ||
| 7 | (prev-buffer): Ditto. Rename to `previous-buffer'. | ||
| 8 | |||
| 9 | * menu-bar.el (menu-bar-update-buffers): Update references to `prev-buffer'. | ||
| 10 | * bindings.el (global-map): Ditto. | ||
| 11 | |||
| 1 | 2005-12-15 Luc Teirlinck <teirllm@auburn.edu> | 12 | 2005-12-15 Luc Teirlinck <teirllm@auburn.edu> |
| 2 | 13 | ||
| 3 | * cus-edit.el: Introductory comment change. | 14 | * cus-edit.el: Introductory comment change. |
diff --git a/lisp/bindings.el b/lisp/bindings.el index dbab5f00f0b..7e9467b19c5 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el | |||
| @@ -338,29 +338,6 @@ Keymap to display on minor modes.") | |||
| 338 | (defvar mode-line-buffer-identification-keymap nil "\ | 338 | (defvar mode-line-buffer-identification-keymap nil "\ |
| 339 | Keymap for what is displayed by `mode-line-buffer-identification'.") | 339 | Keymap for what is displayed by `mode-line-buffer-identification'.") |
| 340 | 340 | ||
| 341 | (defun last-buffer () "\ | ||
| 342 | Return the last non-hidden buffer in the buffer list." | ||
| 343 | ;; This logic is more or less copied from bury-buffer, | ||
| 344 | ;; except that we reverse the buffer list. | ||
| 345 | (let ((list (nreverse (buffer-list (selected-frame)))) | ||
| 346 | (pred (frame-parameter nil 'buffer-predicate)) | ||
| 347 | found notsogood) | ||
| 348 | (while (and list (not found)) | ||
| 349 | (unless (or (eq (aref (buffer-name (car list)) 0) ? ) | ||
| 350 | ;; If the selected frame has a buffer_predicate, | ||
| 351 | ;; disregard buffers that don't fit the predicate. | ||
| 352 | (and pred (not (funcall pred (car list))))) | ||
| 353 | (if (get-buffer-window (car list) 'visible) | ||
| 354 | (or notsogood (eq (car list) (current-buffer))) | ||
| 355 | (setq found (car list)))) | ||
| 356 | (pop list)) | ||
| 357 | (or found notsogood | ||
| 358 | (get-buffer "*scratch*") | ||
| 359 | (progn | ||
| 360 | (set-buffer-major-mode | ||
| 361 | (get-buffer-create "*scratch*")) | ||
| 362 | (get-buffer "*scratch*"))))) | ||
| 363 | |||
| 364 | (defun unbury-buffer () "\ | 341 | (defun unbury-buffer () "\ |
| 365 | Switch to the last buffer in the buffer list." | 342 | Switch to the last buffer in the buffer list." |
| 366 | (interactive) | 343 | (interactive) |
| @@ -673,8 +650,8 @@ language you are using." | |||
| 673 | 650 | ||
| 674 | (define-key global-map [?\C-x right] 'next-buffer) | 651 | (define-key global-map [?\C-x right] 'next-buffer) |
| 675 | (define-key global-map [?\C-x C-right] 'next-buffer) | 652 | (define-key global-map [?\C-x C-right] 'next-buffer) |
| 676 | (define-key global-map [?\C-x left] 'prev-buffer) | 653 | (define-key global-map [?\C-x left] 'previous-buffer) |
| 677 | (define-key global-map [?\C-x C-left] 'prev-buffer) | 654 | (define-key global-map [?\C-x C-left] 'previous-buffer) |
| 678 | 655 | ||
| 679 | (let ((map minibuffer-local-map)) | 656 | (let ((map minibuffer-local-map)) |
| 680 | (define-key map "\en" 'next-history-element) | 657 | (define-key map "\en" 'next-history-element) |
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 3d226b9258b..9edd38db86d 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el | |||
| @@ -1662,10 +1662,10 @@ Buffers menu is regenerated." | |||
| 1662 | "Next Buffer" | 1662 | "Next Buffer" |
| 1663 | 'next-buffer | 1663 | 'next-buffer |
| 1664 | :help "Switch to the \"next\" buffer in a cyclic order") | 1664 | :help "Switch to the \"next\" buffer in a cyclic order") |
| 1665 | (list 'prev-buffer | 1665 | (list 'previous-buffer |
| 1666 | 'menu-item | 1666 | 'menu-item |
| 1667 | "Previous Buffer" | 1667 | "Previous Buffer" |
| 1668 | 'prev-buffer | 1668 | 'previous-buffer |
| 1669 | :help "Switch to the \"previous\" buffer in a cyclic order") | 1669 | :help "Switch to the \"previous\" buffer in a cyclic order") |
| 1670 | (list 'select-named-buffer | 1670 | (list 'select-named-buffer |
| 1671 | 'menu-item | 1671 | 'menu-item |
diff --git a/lisp/simple.el b/lisp/simple.el index 93f6329a255..ec123c73cd8 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -52,25 +52,68 @@ wait this many seconds after Emacs becomes idle before doing an update." | |||
| 52 | "Highlight (un)matching of parens and expressions." | 52 | "Highlight (un)matching of parens and expressions." |
| 53 | :group 'matching) | 53 | :group 'matching) |
| 54 | 54 | ||
| 55 | (defun get-next-valid-buffer (list &optional buffer visible-ok frame) "\ | ||
| 56 | Search LIST for a valid buffer to display in FRAME. | ||
| 57 | Return nil when all buffers in LIST are undesirable for display, | ||
| 58 | otherwise return the first suitable buffer in LIST. | ||
| 59 | |||
| 60 | Buffers not visible in windows are preferred to visible buffers, | ||
| 61 | unless VISIBLE-OK is non-nil. | ||
| 62 | If the optional argument FRAME is nil, it defaults to the selected frame. | ||
| 63 | If BUFFER is non-nil, ignore occurances of that buffer in LIST." | ||
| 64 | ;; This logic is more or less copied from other-buffer. | ||
| 65 | (setq frame (or frame (selected-frame))) | ||
| 66 | (let ((pred (frame-parameter frame 'buffer-predicate)) | ||
| 67 | found buf) | ||
| 68 | (while (and (not found) list) | ||
| 69 | (setq buf (car list)) | ||
| 70 | (if (and (not (eq buffer buf)) | ||
| 71 | (buffer-live-p buf) | ||
| 72 | (or (null pred) (funcall pred buf)) | ||
| 73 | (not (eq (aref (buffer-name buf) 0) ?\s)) | ||
| 74 | (or visible-ok (null (get-buffer-window buf 'visible)))) | ||
| 75 | (setq found buf) | ||
| 76 | (setq list (cdr list)))) | ||
| 77 | (car list))) | ||
| 78 | |||
| 79 | (defun last-buffer (&optional buffer visible-ok frame) "\ | ||
| 80 | Return the last non-hidden displayable buffer in the buffer list. | ||
| 81 | If BUFFER is non-nil, last-buffer will ignore that buffer. | ||
| 82 | Buffers not visible in windows are preferred to visible buffers, | ||
| 83 | unless optional argument VISIBLE-OK is non-nil. | ||
| 84 | If the optional third argument FRAME is non-nil, use that frame's | ||
| 85 | buffer list instead of the selected frame's buffer list. | ||
| 86 | If no other buffer exists, the buffer `*scratch*' is returned." | ||
| 87 | (setq frame (or frame (selected-frame))) | ||
| 88 | (or (get-next-valid-buffer (frame-parameter frame 'buried-buffer-list) | ||
| 89 | buffer visible-ok frame) | ||
| 90 | (get-next-valid-buffer (nreverse (buffer-list frame)) | ||
| 91 | buffer visible-ok frame) | ||
| 92 | (progn | ||
| 93 | (set-buffer-major-mode (get-buffer-create "*scratch*")) | ||
| 94 | (get-buffer "*scratch*")))) | ||
| 95 | |||
| 55 | (defun next-buffer () | 96 | (defun next-buffer () |
| 56 | "Switch to the next buffer in cyclic order." | 97 | "Switch to the next buffer in cyclic order." |
| 57 | (interactive) | 98 | (interactive) |
| 58 | (let ((buffer (current-buffer))) | 99 | (let ((buffer (current-buffer)) |
| 59 | (switch-to-buffer (other-buffer buffer)) | 100 | (bbl (frame-parameter nil 'buried-buffer-list))) |
| 60 | (bury-buffer buffer))) | 101 | (switch-to-buffer (other-buffer buffer t)) |
| 61 | 102 | (bury-buffer buffer) | |
| 62 | (defun prev-buffer () | 103 | (set-frame-parameter nil 'buried-buffer-list |
| 104 | (cons buffer (delq buffer bbl))))) | ||
| 105 | |||
| 106 | (defun previous-buffer () | ||
| 63 | "Switch to the previous buffer in cyclic order." | 107 | "Switch to the previous buffer in cyclic order." |
| 64 | (interactive) | 108 | (interactive) |
| 65 | (let ((list (nreverse (buffer-list))) | 109 | (let ((buffer (last-buffer (current-buffer) t)) |
| 66 | found) | 110 | (bbl (frame-parameter nil 'buried-buffer-list))) |
| 67 | (while (and (not found) list) | 111 | (switch-to-buffer buffer) |
| 68 | (let ((buffer (car list))) | 112 | ;; Clean up buried-buffer-list up to and including the chosen buffer. |
| 69 | (if (and (not (get-buffer-window buffer)) | 113 | (while (and bbl (not (eq (car bbl) buffer))) |
| 70 | (not (string-match "\\` " (buffer-name buffer)))) | 114 | (setq bbl (cdr bbl))) |
| 71 | (setq found buffer))) | 115 | (set-frame-parameter nil 'buried-buffer-list bbl))) |
| 72 | (setq list (cdr list))) | 116 | |
| 73 | (switch-to-buffer found))) | ||
| 74 | 117 | ||
| 75 | ;;; next-error support framework | 118 | ;;; next-error support framework |
| 76 | 119 | ||