aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKároly Lőrentey2005-12-16 11:35:25 +0000
committerKároly Lőrentey2005-12-16 11:35:25 +0000
commita74f9094c42fe38bf1142a698e03bf7f4711451d (patch)
tree57c6e052180b05a8cd93bd660b55d68a1690cdf1
parentf46955194797ff50b7210d5397d22b1c5e819ec0 (diff)
downloademacs-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/ChangeLog11
-rw-r--r--lisp/bindings.el27
-rw-r--r--lisp/menu-bar.el4
-rw-r--r--lisp/simple.el71
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 @@
12005-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
12005-12-15 Luc Teirlinck <teirllm@auburn.edu> 122005-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 "\
339Keymap for what is displayed by `mode-line-buffer-identification'.") 339Keymap for what is displayed by `mode-line-buffer-identification'.")
340 340
341(defun last-buffer () "\
342Return 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 () "\
365Switch to the last buffer in the buffer list." 342Switch 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) "\
56Search LIST for a valid buffer to display in FRAME.
57Return nil when all buffers in LIST are undesirable for display,
58otherwise return the first suitable buffer in LIST.
59
60Buffers not visible in windows are preferred to visible buffers,
61unless VISIBLE-OK is non-nil.
62If the optional argument FRAME is nil, it defaults to the selected frame.
63If 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) "\
80Return the last non-hidden displayable buffer in the buffer list.
81If BUFFER is non-nil, last-buffer will ignore that buffer.
82Buffers not visible in windows are preferred to visible buffers,
83unless optional argument VISIBLE-OK is non-nil.
84If the optional third argument FRAME is non-nil, use that frame's
85buffer list instead of the selected frame's buffer list.
86If 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