X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Flist-mode.el;h=b2b828b56cb2f55e006108ba77641f5dd3ae3f65;hb=412b4bb45ccba201d450a22ffaef77e99250bc56;hp=8789a14db19b69dd4a89e3ebf4ca9237d0881c05;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git diff --git a/lisp/list-mode.el b/lisp/list-mode.el index 8789a14..b2b828b 100644 --- a/lisp/list-mode.el +++ b/lisp/list-mode.el @@ -77,7 +77,10 @@ (make-local-variable 'next-line-add-newlines) (setq next-line-add-newlines nil) (setq list-mode-extent nil) - (set-specifier text-cursor-visible-p nil (current-buffer)) +;; It is visually disconcerting to have the text cursor disappear within list +;; buffers, especially when moving from window to window, so leave it +;; visible. -- Bob Weiner, 06/20/1999 +; (set-specifier text-cursor-visible-p nil (current-buffer)) (setq buffer-read-only t) (goto-char (point-min)) (run-hooks 'list-mode-hook)) @@ -284,6 +287,7 @@ If `completion-highlight-first-word-only' is non-nil, then only the start :user-data :reference-buffer (:help-string completion-default-help-string) + (:completion-string "Possible completions are:") :window-width) () (let ((old-buffer (current-buffer)) @@ -341,7 +345,8 @@ If `completion-highlight-first-word-only' is non-nil, then only the start (if (/= (% count cols) 0) ; want ceiling... (1+ (/ count cols)) (/ count cols))))))) - (princ (gettext "Possible completions are:")) + (if (stringp cl-completion-string) + (princ (gettext cl-completion-string))) (let ((tail completions) (r 0) (regexp-string @@ -456,21 +461,23 @@ buffer." (define-derived-mode completion-list-mode list-mode "Completion List" "Major mode for buffers showing lists of possible completions. -Type \\\\[choose-completion] in the completion list\ - to select the completion near point. -Use \\\\[mouse-choose-completion] to select one\ - with the mouse." +\\{completion-list-mode-map}" (make-local-variable 'completion-base-size) (setq completion-base-size nil)) (let ((map completion-list-mode-map)) + (define-key map 'button2up 'mouse-choose-completion) + (define-key map 'button2 'undefined) + (define-key map "\C-m" 'choose-completion) (define-key map "\e\e\e" 'delete-completion-window) (define-key map "\C-g" 'minibuffer-keyboard-quit) - (define-key map "q" 'abort-recursive-edit) - (define-key map " " (lambda () (interactive) - (select-window (minibuffer-window)))) - (define-key map "\t" (lambda () (interactive) - (select-window (minibuffer-window))))) + (define-key map "q" 'completion-list-mode-quit) + (define-key map " " 'completion-switch-to-minibuffer) + ;; [Tab] used to switch to the minibuffer but since [space] does that and + ;; since most applications in the world use [Tab] to select the next item + ;; in a list, do that in the *Completions* buffer too. -- Bob Weiner, + ;; BeOpen.com, 06/23/1999. + (define-key map "\t" 'next-list-mode-item)) (defvar completion-reference-buffer nil "Record the buffer that was current when the completion list was requested. @@ -484,6 +491,10 @@ but it talks about the buffer in `completion-reference-buffer'. If this is nil, it means to compare text to determine which part of the tail end of the buffer's text is involved in completion.") +;; These names are referenced in the doc string for `completion-list-mode'. +(defalias 'choose-completion 'list-mode-item-keyboard-selected) +(defalias 'mouse-choose-completion 'list-mode-item-mouse-selected) + (defun delete-completion-window () "Delete the completion list window. Go to the window from which completion was requested." @@ -493,6 +504,21 @@ Go to the window from which completion was requested." (if (get-buffer-window buf) (select-window (get-buffer-window buf))))) +(defun completion-switch-to-minibuffer () + "Move from a completions buffer to the active minibuffer window." + (interactive) + (select-window (minibuffer-window))) + +(defun completion-list-mode-quit () + "Abort any recursive edit and bury the completions buffer." + (interactive) + (condition-case () + (abort-recursive-edit) + (error nil)) + ;; If there was no recursive edit to abort, simply bury the completions + ;; list buffer. + (if (eq major-mode 'completion-list-mode) (bury-buffer))) + (defun completion-do-in-minibuffer () (interactive "_") (save-excursion