Mercurial > emacs
changeset 42119:cfeff2859949
(comint-dynamic-list-input-ring-select): New function.
Switches back to the old window configuration.
(comint-dynamic-list-input-ring): Bind RET to that function.
(comint-dynamic-list-input-ring-window-conf): New variable.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 18 Dec 2001 04:14:20 +0000 |
parents | b646f4a6326b |
children | 87f989b9dad5 |
files | lisp/comint.el |
diffstat | 1 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/comint.el Tue Dec 18 04:14:07 2001 +0000 +++ b/lisp/comint.el Tue Dec 18 04:14:20 2001 +0000 @@ -906,6 +906,25 @@ (kill-buffer nil)))))) +(defvar comint-dynamic-list-input-ring-window-conf) + +(defun comint-dynamic-list-input-ring-select () + "Choose the input history entry that point is in or next to." + (interactive) + (let (beg end completion (buffer completion-reference-buffer) + (base-size completion-base-size)) + (if (and (not (eobp)) (get-text-property (point) 'mouse-face)) + (setq end (point) beg (1+ (point)))) + (if (and (not (bobp)) (get-text-property (1- (point)) 'mouse-face)) + (setq end (1- (point)) beg (point))) + (if (null beg) + (error "No history entry here")) + (setq beg (previous-single-property-change beg 'mouse-face)) + (setq end (or (next-single-property-change end 'mouse-face) (point-max))) + (setq completion (buffer-substring beg end)) + (set-window-configuration comint-dynamic-list-input-ring-window-conf) + (choose-completion-string completion buffer base-size))) + (defun comint-dynamic-list-input-ring () "List in help buffer the buffer's input history." (interactive) @@ -925,11 +944,16 @@ (with-output-to-temp-buffer history-buffer (display-completion-list history) (set-buffer history-buffer) + (let ((keymap (make-sparse-keymap))) + (set-keymap-parent keymap (current-local-map)) + (define-key keymap "\C-m" 'comint-dynamic-list-input-ring-select) + (use-local-map keymap)) (forward-line 3) (while (search-backward "completion" nil 'move) (replace-match "history reference"))) (sit-for 0) (message "Hit space to flush") + (setq comint-dynamic-list-input-ring-window-conf conf) (let ((ch (read-event))) (if (eq ch ?\ ) (set-window-configuration conf)