1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 14:30:50 -08:00

* lisp/comint.el (comint-complete-input-ring): New command (bug#74694).

(comint-mode-map): Bind 'comint-complete-input-ring' to 'C-x <up>'.
This commit is contained in:
Juri Linkov 2024-12-16 20:12:25 +02:00
parent 61f1d7fc68
commit d2986e79b7
2 changed files with 25 additions and 0 deletions

View file

@ -337,6 +337,12 @@ It removes all the buttons in the specified region.
+++ +++
*** Disabling 'button-mode' now removes all buttons in the current buffer. *** Disabling 'button-mode' now removes all buttons in the current buffer.
** Shell
*** New command to complete the shell history.
'comint-complete-input-ring' ('C-x <up>') is like 'minibuffer-complete-history'
but completes on comint inputs.
** Eshell ** Eshell
--- ---

View file

@ -543,6 +543,7 @@ via PTYs.")
(define-key map "\er" 'comint-history-isearch-backward-regexp) (define-key map "\er" 'comint-history-isearch-backward-regexp)
(define-key map [?\C-c ?\M-r] 'comint-previous-matching-input-from-input) (define-key map [?\C-c ?\M-r] 'comint-previous-matching-input-from-input)
(define-key map [?\C-c ?\M-s] 'comint-next-matching-input-from-input) (define-key map [?\C-c ?\M-s] 'comint-next-matching-input-from-input)
(define-key map [?\C-x up] 'comint-complete-input-ring)
(define-key map "\e\C-l" 'comint-show-output) (define-key map "\e\C-l" 'comint-show-output)
(define-key map "\C-m" 'comint-send-input) (define-key map "\C-m" 'comint-send-input)
(define-key map "\C-d" 'comint-delchar-or-maybe-eof) (define-key map "\C-d" 'comint-delchar-or-maybe-eof)
@ -1180,6 +1181,24 @@ See also `comint-read-input-ring'."
(set-window-configuration conf) (set-window-configuration conf)
(push ch unread-command-events)))))) (push ch unread-command-events))))))
(defun comint-complete-input-ring ()
"Complete a list of recent inputs entered into the current buffer.
Like `minibuffer-complete-history' but completes on comint inputs.
This function makes `comint-dynamic-list-input-ring' obsolete."
(interactive)
(let ((completions
(if (and (ring-p comint-input-ring)
(not (ring-empty-p comint-input-ring)))
(ring-elements comint-input-ring)
(user-error "No history available")))
(completion-in-region-mode-predicate
(lambda () (get-buffer-window "*Completions*" 0))))
(completion-in-region
(comint-line-beginning-position) (point-max)
(completion-table-with-metadata
completions '((category . comint-input)
(display-sort-function . identity)
(cycle-sort-function . identity))))))
(defun comint-regexp-arg (prompt) (defun comint-regexp-arg (prompt)
"Return list of regexp and prefix arg using PROMPT." "Return list of regexp and prefix arg using PROMPT."