Mercurial > hg > xemacs-beta
diff lisp/electric/ebuff-menu.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | 4b173ad71786 |
children | b9518feda344 |
line wrap: on
line diff
--- a/lisp/electric/ebuff-menu.el Mon Aug 13 09:00:04 2007 +0200 +++ b/lisp/electric/ebuff-menu.el Mon Aug 13 09:02:59 2007 +0200 @@ -1,9 +1,8 @@ ;;; ebuff-menu.el --- electric-buffer-list mode -;; Copyright (C) 1985, 1986, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1992, 1993, 1994 Free Software Foundation, Inc. ;; Author: Richard Mlynarik <mly@ai.mit.edu> -;; Keywords: frames ;; This file is part of XEmacs. @@ -19,10 +18,9 @@ ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the Free -;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -;; 02111-1307, USA. +;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -;;; Synched up with: FSF 19.34. +;;; Synched up with: FSF 19.30. ;;; Commentary: @@ -33,7 +31,6 @@ ;;; Code: (require 'electric) -;; XEmacs change (require 'buff-menu) ;; this depends on the format of list-buffers (from src/buffer.c) and @@ -48,12 +45,13 @@ listing with menuoid buffer selection. If the very next character typed is a space then the buffer list -window disappears. Otherwise, one may move around in the buffer list -window, marking buffers to be selected, saved or deleted. +window disappears. Otherwise, one may move around in the +buffer list window, marking buffers to be selected, saved or deleted. -To exit and select a new buffer, type a space when the cursor is on -the appropriate line of the buffer-list window. Other commands are -much like those of buffer-menu-mode. +To exit and select a new buffer, type a space when the cursor is on the +appropriate line of the buffer-list window. + +Other commands are much like those of buffer-menu-mode. Calls value of `electric-buffer-menu-mode-hook' on entry if non-nil. @@ -66,52 +64,54 @@ (interactive (list (if current-prefix-arg t nil))) (let (select buffer) (save-window-excursion - (save-window-excursion (list-buffers files-only)) - (setq buffer (window-buffer (Electric-pop-up-window "*Buffer List*"))) - (unwind-protect - (progn + (save-excursion + (save-window-excursion + (let ((temp-buffer-show-function 'ignore)) + (list-buffers files-only))) + (setq buffer (window-buffer (Electric-pop-up-window "*Buffer List*"))) + (unwind-protect + (progn + (set-buffer buffer) + (Electric-buffer-menu-mode) + (setq select + (catch 'electric-buffer-menu-select + (message "<<< Press Return to bury the buffer list >>>") + (let ((start-point (point)) + (first (progn (goto-char (point-min)) + (forward-line 2) + (point))) + (last (progn (goto-char (point-max)) + (forward-line -1) + (point))) + (goal-column 0)) + ;; Use start-point if it is meaningful. + (goto-char (if (or (< start-point first) + (> start-point last)) + first + start-point)) + (Electric-command-loop 'electric-buffer-menu-select + nil + t + 'electric-buffer-menu-looper + (cons first last)))))) + (save-excursion (set-buffer buffer) - (Electric-buffer-menu-mode) - (setq select - (catch 'electric-buffer-menu-select - (message "<<< Press Return to bury the buffer list >>>") - ;; XEmacs change - (if (eq (setq unread-command-events - (list (next-command-event))) - ?\ ) - (progn (setq unread-command-events nil) - (throw 'electric-buffer-menu-select nil))) - (let ((start-point (point)) - (first (progn (goto-char (point-min)) - (forward-line 2) - (point))) - (last (progn (goto-char (point-max)) - (forward-line -1) - (point))) - (goal-column 0)) - ;; Use start-point if it is meaningful. - (goto-char (if (or (< start-point first) - (> start-point last)) - first - start-point)) - (Electric-command-loop 'electric-buffer-menu-select - nil - t - 'electric-buffer-menu-looper - (cons first last)))))) - (set-buffer buffer) - (Buffer-menu-mode) - (bury-buffer buffer) - (message ""))) + (Buffer-menu-mode)) + (bury-buffer buffer) + (message nil)))) (if select - (progn (set-buffer buffer) - (let ((opoint (point-marker))) - (Buffer-menu-execute) - (goto-char (point-min)) - (if (prog1 (search-forward "\n>" nil t) - (goto-char opoint) (set-marker opoint nil)) - (Buffer-menu-select) - (switch-to-buffer (Buffer-menu-buffer t)))))))) + (progn + (set-buffer buffer) + (let ((opoint (point-marker))) + (Buffer-menu-execute) + (goto-char (point-min)) + (cond ((prog1 (search-forward "\n>" nil t) + (goto-char opoint) (set-marker opoint nil)) + (Buffer-menu-select)) + ((bufferp select) + (switch-to-buffer select)) + (t + (switch-to-buffer (Buffer-menu-buffer t))))))))) (defun electric-buffer-menu-looper (state condition) (cond ((and condition @@ -156,18 +156,15 @@ (use-local-map electric-buffer-menu-mode-map) (setq mode-name "Electric Buffer Menu") (setq mode-line-buffer-identification "Electric Buffer List") - ;; XEmacs (if (memq 'mode-name mode-line-format) (progn (setq mode-line-format (copy-sequence mode-line-format)) (setcar (memq 'mode-name mode-line-format) "Buffers"))) (make-local-variable 'Helper-return-blurb) (setq Helper-return-blurb "return to buffer editing") (setq truncate-lines t) - ;; XEmacs (setq buffer-scrollbar-height 0) (setq buffer-read-only t) (setq major-mode 'Electric-buffer-menu-mode) - ;; XEmacs (setq mode-motion-hook 'mode-motion-highlight-line) (goto-char (point-min)) (if (search-forward "\n." nil t) (forward-char -1)) @@ -178,29 +175,30 @@ (put 'Electric-buffer-menu-undefined 'suppress-keymap t) (if electric-buffer-menu-mode-map nil - (let ((map (make-keymap)) (submap (make-keymap))) - ;(fillarray (car (cdr map)) 'Electric-buffer-menu-undefined) ; FSF + (let ((map (make-keymap))) + (set-keymap-name map 'electric-buffer-menu-mode-map) + ;;#### Urk! There must be a buffer way in Lucid Emacs. (let ((i 0)) (while (< i 128) (define-key map (make-string 1 i) 'Electric-buffer-menu-undefined) (setq i (1+ i)))) - (define-key map "\e" submap) - ;(fillarray (car (cdr submap)) 'Electric-buffer-menu-undefined) ; FSF + (define-key map "\e" (make-keymap)) (let ((map2 (lookup-key map "\e")) - (i 0)) + (i 0)) (while (< i 128) (define-key map2 (make-string 1 i) 'Electric-buffer-menu-undefined) (setq i (1+ i)))) - (define-key map "\C-z" 'suspend-emacs) +;; (define-key map "\C-z" 'suspend-emacs) (define-key map "v" 'Electric-buffer-menu-mode-view-buffer) - (define-key map (char-to-string help-char) 'Helper-help) +;; (define-key map "\C-h" 'Helper-help) + (define-key map '(control h) 'Helper-help) (define-key map "?" 'Helper-describe-bindings) (define-key map "\C-c" nil) (define-key map "\C-c\C-c" 'Electric-buffer-menu-quit) (define-key map "\C-]" 'Electric-buffer-menu-quit) (define-key map "q" 'Electric-buffer-menu-quit) - (define-key map " " 'Electric-buffer-menu-select) - (define-key map "\C-m" 'Electric-buffer-menu-select) + (define-key map " " 'Electric-buffer-menu-select) + (define-key map "\r" 'Electric-buffer-menu-select) ;; XEmacs change (define-key map "\C-l" 'recenter) (define-key map "s" 'Buffer-menu-save) (define-key map "d" 'Buffer-menu-delete) @@ -208,7 +206,6 @@ (define-key map "\C-d" 'Buffer-menu-delete-backwards) ;(define-key map "\C-k" 'Buffer-menu-delete) (define-key map "\177" 'Buffer-menu-backup-unmark) - ;; XEmacs (define-key map 'backspace 'Buffer-menu-backup-unmark) (define-key map "~" 'Buffer-menu-not-modified) (define-key map "u" 'Buffer-menu-unmark) @@ -235,7 +232,6 @@ (define-key map "\e<" 'beginning-of-buffer) (define-key map "\e\e" nil) (define-key map "\e\e\e" 'Electric-buffer-menu-quit) - ;; XEmacs (define-key map [home] 'beginning-of-buffer) (define-key map [down] 'next-line) (define-key map [up] 'previous-line) @@ -247,7 +243,6 @@ (defun Electric-buffer-menu-exit () (interactive) - ;; XEmacs (setq unread-command-event last-input-event) ;; for robustness (condition-case () @@ -258,13 +253,13 @@ (defun Electric-buffer-menu-select () "Leave Electric Buffer Menu, selecting buffers and executing changes. Saves buffers marked \"S\". Deletes buffers marked \"K\". -Selects buffer at point and displays buffers marked \">\" in other windows." +Selects buffer at point and displays buffers marked \">\" in other +windows." (interactive) (throw 'electric-buffer-menu-select (point))) (defun Electric-buffer-menu-mouse-select (event) (interactive "e") - ;; XEmacs is simpler (mouse-set-point event) (Electric-buffer-menu-select)) @@ -277,15 +272,10 @@ (defun Electric-buffer-menu-undefined () (interactive) (ding) - (message "%s" - (if (and (eq (key-binding "\C-c\C-c") 'Electric-buffer-menu-quit) - (eq (key-binding " ") 'Electric-buffer-menu-select) - (eq (key-binding (char-to-string help-char)) 'Helper-help) - (eq (key-binding "?") 'Helper-describe-bindings)) - (substitute-command-keys "Type C-c C-c to exit, Space to select, + (message (substitute-command-keys "\ Type \\[Electric-buffer-menu-quit] to exit, \ \\[Electric-buffer-menu-select] to select, \ -\\[Helper-help] for help, \\[Helper-describe-bindings] for commands."))) +\\[Helper-help] for help, \\[Helper-describe-bindings] for commands.")) (sit-for 4)) (defun Electric-buffer-menu-mode-view-buffer ()