comparison lisp/list-mode.el @ 349:8429d81ab209 r21-1-4

Import from CVS: tag r21-1-4
author cvs
date Mon, 13 Aug 2007 10:54:28 +0200
parents 341dac730539
children 3b3709405255
comparison
equal deleted inserted replaced
348:0843b9714b95 349:8429d81ab209
456 (sort completions #'string-lessp)))))) 456 (sort completions #'string-lessp))))))
457 457
458 (define-derived-mode completion-list-mode list-mode 458 (define-derived-mode completion-list-mode list-mode
459 "Completion List" 459 "Completion List"
460 "Major mode for buffers showing lists of possible completions. 460 "Major mode for buffers showing lists of possible completions.
461 Type \\<completion-list-mode-map>\\[choose-completion] in the completion list\ 461 \\{completion-list-mode-map}"
462 to select the completion near point.
463 Use \\<completion-list-mode-map>\\[mouse-choose-completion] to select one\
464 with the mouse."
465 (make-local-variable 'completion-base-size) 462 (make-local-variable 'completion-base-size)
466 (setq completion-base-size nil)) 463 (setq completion-base-size nil))
467 464
468 (let ((map completion-list-mode-map)) 465 (let ((map completion-list-mode-map))
466 (define-key map 'button2up 'mouse-choose-completion)
467 (define-key map 'button2 'undefined)
468 (define-key map "\C-m" 'choose-completion)
469 (define-key map "\e\e\e" 'delete-completion-window) 469 (define-key map "\e\e\e" 'delete-completion-window)
470 (define-key map "\C-g" 'minibuffer-keyboard-quit) 470 (define-key map "\C-g" 'minibuffer-keyboard-quit)
471 (define-key map "q" 'abort-recursive-edit) 471 (define-key map "q" 'completion-list-mode-quit)
472 (define-key map " " (lambda () (interactive) 472 (define-key map " " 'completion-switch-to-minibuffer)
473 (select-window (minibuffer-window)))) 473 ;; [Tab] used to switch to the minibuffer but since [space] does that and
474 (define-key map "\t" (lambda () (interactive) 474 ;; since most applications in the world use [Tab] to select the next item
475 (select-window (minibuffer-window))))) 475 ;; in a list, do that in the *Completions* buffer too. -- Bob Weiner,
476 ;; BeOpen.com, 06/23/1999.
477 (define-key map "\t" 'next-list-mode-item))
476 478
477 (defvar completion-reference-buffer nil 479 (defvar completion-reference-buffer nil
478 "Record the buffer that was current when the completion list was requested. 480 "Record the buffer that was current when the completion list was requested.
479 This is a local variable in the completion list buffer. 481 This is a local variable in the completion list buffer.
480 Initial value is nil to avoid some compiler warnings.") 482 Initial value is nil to avoid some compiler warnings.")
483 "Number of chars at beginning of minibuffer not involved in completion. 485 "Number of chars at beginning of minibuffer not involved in completion.
484 This is a local variable in the completion list buffer 486 This is a local variable in the completion list buffer
485 but it talks about the buffer in `completion-reference-buffer'. 487 but it talks about the buffer in `completion-reference-buffer'.
486 If this is nil, it means to compare text to determine which part 488 If this is nil, it means to compare text to determine which part
487 of the tail end of the buffer's text is involved in completion.") 489 of the tail end of the buffer's text is involved in completion.")
490
491 ;; These names are referenced in the doc string for `completion-list-mode'.
492 (defalias 'choose-completion 'list-mode-item-keyboard-selected)
493 (defalias 'mouse-choose-completion 'list-mode-item-mouse-selected)
488 494
489 (defun delete-completion-window () 495 (defun delete-completion-window ()
490 "Delete the completion list window. 496 "Delete the completion list window.
491 Go to the window from which completion was requested." 497 Go to the window from which completion was requested."
492 (interactive) 498 (interactive)
493 (let ((buf completion-reference-buffer)) 499 (let ((buf completion-reference-buffer))
494 (delete-window (selected-window)) 500 (delete-window (selected-window))
495 (if (get-buffer-window buf) 501 (if (get-buffer-window buf)
496 (select-window (get-buffer-window buf))))) 502 (select-window (get-buffer-window buf)))))
503
504 (defun completion-switch-to-minibuffer ()
505 "Move from a completions buffer to the active minibuffer window."
506 (interactive)
507 (select-window (minibuffer-window)))
508
509 (defun completion-list-mode-quit ()
510 "Abort any recursive edit and bury the completions buffer."
511 (interactive)
512 (condition-case ()
513 (abort-recursive-edit)
514 (error nil))
515 ;; If there was no recursive edit to abort, simply bury the completions
516 ;; list buffer.
517 (if (eq major-mode 'completion-list-mode) (bury-buffer)))
497 518
498 (defun completion-do-in-minibuffer () 519 (defun completion-do-in-minibuffer ()
499 (interactive "_") 520 (interactive "_")
500 (save-excursion 521 (save-excursion
501 (set-buffer (window-buffer (minibuffer-window))) 522 (set-buffer (window-buffer (minibuffer-window)))