• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/emacs-93/emacs/lisp/

Lines Matching +defs:Buffer +defs:menu +defs:execute

1 ;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
36 ;; Buffer-menu-view: New function
37 ;; Buffer-menu-view-other-window: New function
39 ;; Merged by esr with recent mods to Emacs 19 buff-menu, 23 Mar 1993
43 ;; Added optional backup argument to 'Buffer-menu-unmark' to make it undelete
51 ;;simple scenarios, when you enter the buffer menu, use it, and exit it.
58 ;;But since then, I changed buffer-menu to use the selected window,
61 ;;(defvar Buffer-menu-window-config nil
62 ;; "Window configuration saved from entry to `buffer-menu'.")
64 ;; Put buffer *Buffer List* into proper mode right away
65 ;; so that from now on even list-buffers is enough to get a buffer menu.
67 (defgroup Buffer-menu nil
68 "Show a menu of all buffers in a buffer."
72 (defcustom Buffer-menu-use-header-line t
75 :group 'Buffer-menu)
77 (defface buffer-menu-buffer
79 "Face used to highlight buffer names in the buffer menu."
80 :group 'Buffer-menu)
81 (put 'Buffer-menu-buffer 'face-alias 'buffer-menu-buffer)
83 (defcustom Buffer-menu-buffer+size-width 26
86 :group 'Buffer-menu)
88 (defcustom Buffer-menu-mode-width 16
91 :group 'Buffer-menu)
93 (defcustom Buffer-menu-use-frame-buffer-list t
94 "If non-nil, the Buffer Menu uses the selected frame's buffer list.
96 If the value is nil, the Buffer Menu uses the global buffer list.
97 This variable matters if the Buffer Menu is sorted by visited order,
100 :group 'Buffer-menu
104 (defvar Buffer-menu-sort-column nil
105 "Which column to sort the menu on.
109 (defconst Buffer-menu-buffer-column 4)
111 (defvar Buffer-menu-mode-map nil
112 "Local keymap for `Buffer-menu-mode' buffers.")
114 (defvar Buffer-menu-files-only nil
115 "Non-nil if the current buffer-menu lists only file buffers.
123 (make-variable-buffer-local 'Buffer-menu-files-only)
125 (if Buffer-menu-mode-map
127 (setq Buffer-menu-mode-map (make-keymap))
128 (suppress-keymap Buffer-menu-mode-map t)
129 (define-key Buffer-menu-mode-map "q" 'quit-window)
130 (define-key Buffer-menu-mode-map "v" 'Buffer-menu-select)
131 (define-key Buffer-menu-mode-map "2" 'Buffer-menu-2-window)
132 (define-key Buffer-menu-mode-map "1" 'Buffer-menu-1-window)
133 (define-key Buffer-menu-mode-map "f" 'Buffer-menu-this-window)
134 (define-key Buffer-menu-mode-map "e" 'Buffer-menu-this-window)
135 (define-key Buffer-menu-mode-map "\C-m" 'Buffer-menu-this-window)
136 (define-key Buffer-menu-mode-map "o" 'Buffer-menu-other-window)
137 (define-key Buffer-menu-mode-map "\C-o" 'Buffer-menu-switch-other-window)
138 (define-key Buffer-menu-mode-map "s" 'Buffer-menu-save)
139 (define-key Buffer-menu-mode-map "d" 'Buffer-menu-delete)
140 (define-key Buffer-menu-mode-map "k" 'Buffer-menu-delete)
141 (define-key Buffer-menu-mode-map "\C-d" 'Buffer-menu-delete-backwards)
142 (define-key Buffer-menu-mode-map "\C-k" 'Buffer-menu-delete)
143 (define-key Buffer-menu-mode-map "x" 'Buffer-menu-execute)
144 (define-key Buffer-menu-mode-map " " 'next-line)
145 (define-key Buffer-menu-mode-map "n" 'next-line)
146 (define-key Buffer-menu-mode-map "p" 'previous-line)
147 (define-key Buffer-menu-mode-map "\177" 'Buffer-menu-backup-unmark)
148 (define-key Buffer-menu-mode-map "~" 'Buffer-menu-not-modified)
149 (define-key Buffer-menu-mode-map "?" 'describe-mode)
150 (define-key Buffer-menu-mode-map "u" 'Buffer-menu-unmark)
151 (define-key Buffer-menu-mode-map "m" 'Buffer-menu-mark)
152 (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table)
153 (define-key Buffer-menu-mode-map "%" 'Buffer-menu-toggle-read-only)
154 (define-key Buffer-menu-mode-map "b" 'Buffer-menu-bury)
155 (define-key Buffer-menu-mode-map "g" 'Buffer-menu-revert)
156 (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
157 (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
158 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
159 (define-key Buffer-menu-mode-map [follow-link] 'mouse-face)
162 ;; Buffer Menu mode is suitable only for specially formatted data.
163 (put 'Buffer-menu-mode 'mode-class 'special)
165 (defun Buffer-menu-mode ()
169 \\<Buffer-menu-mode-map>
170 \\[Buffer-menu-mouse-select] -- select buffer you click on, in place of the buffer menu.
171 \\[Buffer-menu-this-window] -- select current line's buffer in place of the buffer menu.
172 \\[Buffer-menu-other-window] -- select that buffer in another window,
173 so the buffer menu buffer remains visible in its window.
174 \\[Buffer-menu-view] -- select current line's buffer, but in view-mode.
175 \\[Buffer-menu-view-other-window] -- select that buffer in
177 \\[Buffer-menu-switch-other-window] -- make another window display that buffer.
178 \\[Buffer-menu-mark] -- mark current line's buffer to be displayed.
179 \\[Buffer-menu-select] -- select current line's buffer.
181 \\[Buffer-menu-1-window] -- select that buffer in full-frame window.
182 \\[Buffer-menu-2-window] -- select that buffer in one window,
184 \\[Buffer-menu-visit-tags-table] -- visit-tags-table this buffer.
185 \\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
186 \\[Buffer-menu-save] -- mark that buffer to be saved, and move down.
187 \\[Buffer-menu-delete] -- mark that buffer to be deleted, and move down.
188 \\[Buffer-menu-delete-backwards] -- mark that buffer to be deleted, and move up.
189 \\[Buffer-menu-execute] -- delete or save marked buffers.
190 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
192 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
193 \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line.
194 \\[Buffer-menu-revert] -- update the list of buffers.
195 \\[Buffer-menu-toggle-files-only] -- toggle whether the menu displays only file buffers.
196 \\[Buffer-menu-bury] -- bury the buffer listed on this line."
198 (use-local-map Buffer-menu-mode-map)
199 (setq major-mode 'Buffer-menu-mode)
200 (setq mode-name "Buffer Menu")
202 'Buffer-menu-revert-function)
207 (run-mode-hooks 'buffer-menu-mode-hook))
209 ;; This function exists so we can make the doc string of Buffer-menu-mode
211 (defun Buffer-menu-revert ()
216 (defun Buffer-menu-revert-function (ignore1 ignore2)
228 ;; We can be called by Auto Revert Mode with the "*Buffer Menu*"
233 (list-buffers-noselect Buffer-menu-files-only))
241 (defun Buffer-menu-toggle-files-only (arg)
242 "Toggle whether the current buffer-menu displays only file buffers.
246 (setq Buffer-menu-files-only
247 (cond ((not arg) (not Buffer-menu-files-only))
253 (defun Buffer-menu-buffer (error-if-non-existent-p)
254 "Return buffer described by this line of buffer menu."
257 (+ (point) Buffer-menu-buffer-column)))
272 (defun buffer-menu (&optional arg)
273 "Make a menu of buffers so you can save, delete or select them.
276 Type q to remove the buffer menu from the display.
289 ;;; (setq Buffer-menu-window-config (current-window-configuration))
294 (defun buffer-menu-other-window (&optional arg)
299 Type q to remove the buffer menu from the display.
300 For more information, see the function `buffer-menu'."
302 ;;; (setq Buffer-menu-window-config (current-window-configuration))
307 (defun Buffer-menu-no-header ()
309 (if (or Buffer-menu-use-header-line
316 (defun Buffer-menu-mark ()
317 "Mark buffer on this line for being displayed by \\<Buffer-menu-mode-map>\\[Buffer-menu-select] command."
319 (when (Buffer-menu-no-header)
325 (defun Buffer-menu-unmark (&optional backup)
329 (when (Buffer-menu-no-header)
330 (let* ((buf (Buffer-menu-buffer t))
338 (defun Buffer-menu-backup-unmark ()
342 (Buffer-menu-unmark)
345 (defun Buffer-menu-delete (&optional arg)
346 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command.
350 (when (Buffer-menu-no-header)
360 (Buffer-menu-no-header))
366 (defun Buffer-menu-delete-backwards (&optional arg)
367 "Mark buffer on this line to be deleted by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command
370 (Buffer-menu-delete (- (or arg 1))))
372 (defun Buffer-menu-save ()
373 "Mark buffer on this line to be saved by \\<Buffer-menu-mode-map>\\[Buffer-menu-execute] command."
375 (when (Buffer-menu-no-header)
382 (defun Buffer-menu-not-modified (&optional arg)
386 (set-buffer (Buffer-menu-buffer t))
396 (defun Buffer-menu-beginning ()
398 (unless Buffer-menu-use-header-line
401 (defun Buffer-menu-execute ()
402 "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
405 (Buffer-menu-beginning)
409 (set-buffer (Buffer-menu-buffer t))
416 (Buffer-menu-beginning)
417 (let ((buff-menu-buffer (current-buffer))
421 (let ((buf (Buffer-menu-buffer nil)))
423 (eq buf buff-menu-buffer)
432 (defun Buffer-menu-select ()
434 You can mark buffers with the \\<Buffer-menu-mode-map>\\[Buffer-menu-mark] command.
438 (let ((buff (Buffer-menu-buffer t))
439 (menu (current-buffer))
442 (Buffer-menu-beginning)
444 (setq tem (Buffer-menu-buffer t))
453 (or (eq menu buff)
454 (bury-buffer menu))
459 ;;; (if Buffer-menu-window-config
461 ;;; (set-window-configuration Buffer-menu-window-config)
462 ;;; (setq Buffer-menu-window-config nil)))
475 (defun Buffer-menu-visit-tags-table ()
478 (let ((file (buffer-file-name (Buffer-menu-buffer t))))
483 (defun Buffer-menu-1-window ()
486 (switch-to-buffer (Buffer-menu-buffer t))
490 (defun Buffer-menu-mouse-select (event)
498 (setq buffer (Buffer-menu-buffer t))))
505 (defun Buffer-menu-this-window ()
508 (switch-to-buffer (Buffer-menu-buffer t)))
510 (defun Buffer-menu-other-window ()
511 "Select this line's buffer in other window, leaving buffer menu visible."
513 (switch-to-buffer-other-window (Buffer-menu-buffer t)))
515 (defun Buffer-menu-switch-other-window ()
522 (display-buffer (Buffer-menu-buffer t))))
524 (defun Buffer-menu-2-window ()
527 (let ((buff (Buffer-menu-buffer t))
528 (menu (current-buffer))
535 (bury-buffer menu)))
537 (defun Buffer-menu-toggle-read-only ()
542 (set-buffer (Buffer-menu-buffer t))
553 (defun Buffer-menu-bury ()
556 (when (Buffer-menu-no-header)
559 (bury-buffer (Buffer-menu-buffer t))
568 (defun Buffer-menu-view ()
571 (view-buffer (Buffer-menu-buffer t)))
574 (defun Buffer-menu-view-other-window ()
577 (view-buffer-other-window (Buffer-menu-buffer t)))
585 The list is displayed in a buffer named `*Buffer List*'.
589 For more information, see the function `buffer-menu'."
593 (defun Buffer-menu-buffer+size (name size &optional name-props size-props)
594 (if (> (+ (length name) (length size) 2) Buffer-menu-buffer+size-width)
598 (- Buffer-menu-buffer+size-width
606 (- Buffer-menu-buffer+size-width
615 (make-string (- Buffer-menu-buffer+size-width
621 (defun Buffer-menu-sort (column)
622 "Sort the buffer menu by COLUMN."
628 (setq Buffer-menu-sort-column column)
631 (Buffer-menu-beginning)
641 (Buffer-menu-revert)
644 (Buffer-menu-beginning)
659 (defun Buffer-menu-sort-by-column (&optional e)
660 "Sort the buffer menu by the column clicked on."
668 (Buffer-menu-sort col)))
670 (defvar Buffer-menu-sort-button-map
673 ;; Buffer-menu-use-header-line.
674 (define-key map [header-line mouse-1] 'Buffer-menu-sort-by-column)
675 (define-key map [header-line mouse-2] 'Buffer-menu-sort-by-column)
676 (define-key map [mouse-2] 'Buffer-menu-sort-by-column)
678 (define-key map "\C-m" 'Buffer-menu-sort-by-column)
680 "Local keymap for Buffer menu sort buttons.")
682 (defun Buffer-menu-make-sort-button (name column)
683 (if (equal column Buffer-menu-sort-column) (setq column nil))
687 (if Buffer-menu-use-header-line
692 'keymap Buffer-menu-sort-button-map))
696 The buffer is named `*Buffer List*'.
703 For more information, see the function `buffer-menu'."
706 (mode-end (make-string (- Buffer-menu-mode-width 2) ?\s))
708 (Buffer-menu-buffer+size
709 (Buffer-menu-make-sort-button "Buffer" 2)
710 (Buffer-menu-make-sort-button "Size" 3))
712 (Buffer-menu-make-sort-button "Mode" 4) mode-end
713 (Buffer-menu-make-sort-button "File" 5) "\n"))
715 (when Buffer-menu-use-header-line
732 (with-current-buffer (get-buffer-create "*Buffer List*")
736 (unless Buffer-menu-use-header-line
748 (when Buffer-menu-use-frame-buffer-list
759 (string= name "*Buffer List*")))
808 (if Buffer-menu-sort-column
810 (if (eq Buffer-menu-sort-column 3)
812 (< (nth Buffer-menu-sort-column a)
813 (nth Buffer-menu-sort-column b)))
815 (string< (nth Buffer-menu-sort-column a)
816 (nth Buffer-menu-sort-column b)))))
824 (Buffer-menu-buffer+size (nth 2 buffer)
828 font-lock-face buffer-menu-buffer
832 (if (> (length (nth 4 buffer)) Buffer-menu-mode-width)
833 (substring (nth 4 buffer) 0 Buffer-menu-mode-width)
836 (indent-to (+ Buffer-menu-buffer-column Buffer-menu-buffer+size-width
837 Buffer-menu-mode-width 4) 1)
840 (Buffer-menu-mode)
841 (when Buffer-menu-use-header-line
847 (setq Buffer-menu-files-only files-only)
852 ;;; buff-menu.el ends here