Mercurial > hg > xemacs-beta
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))) |