[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 047c1b1: * lisp/eshell/em-cmpl.el: Use completion-a
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master 047c1b1: * lisp/eshell/em-cmpl.el: Use completion-at-point i.s.o pcomplete |
Date: |
Tue, 19 Mar 2019 23:41:40 -0400 (EDT) |
branch: master
commit 047c1b19353ff58d8cd45935c7b44c911b70e312
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/eshell/em-cmpl.el: Use completion-at-point i.s.o pcomplete
(eshell-cmpl-initialize): Refrain from binding to the `tab` key,
which prevents the tab -> TAB remapping.
Use completion-at-point and completion-help-at-point.
(eshell-complete-commands-list): Use `fboundp` test instead of ugly
gymnastics to try and hide the function call from the compiler.
(eshell-pcomplete): Make it an alias of completion-at-point.
* doc/misc/eshell.texi (Completion): Change wording to reflect
different default behavior.
---
doc/misc/eshell.texi | 17 ++++++++---------
etc/NEWS | 5 +++++
lisp/eshell/em-cmpl.el | 38 ++++++++++++++------------------------
3 files changed, 27 insertions(+), 33 deletions(-)
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index ce3a30c..716b4b7 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -499,15 +499,14 @@ be directories @emph{and} files. Eshell provides
predefined completions
for the built-in functions and some common external commands, and you
can define your own for any command.
-Eshell completion also works for lisp forms and glob patterns. If the
-point is on a lisp form, then @key{TAB} will behave similarly to completion
-in @code{elisp-mode} and @code{lisp-interaction-mode}. For glob
-patterns, If there are few enough possible completions of the patterns,
-they will be cycled when @key{TAB} is pressed, otherwise it will be removed
-from the input line and the possible completions will be listed.
-
-If you want to see the entire list of possible completions when it's
-below the cycling threshold, press @kbd{M-?}.
+Eshell completion also works for lisp forms and glob patterns. If the point is
+on a lisp form, then @key{TAB} will behave similarly to completion in
address@hidden and @code{lisp-interaction-mode}. For glob patterns, the
+pattern will be removed from the input line, and replaced by the
+completion.
+
+If you want to see the entire list of possible completions (e.g. when it's
+below the @code{completion-cycle-threshold}), press @kbd{M-?}.
@subsection pcomplete
Pcomplete, short for programmable completion, is the completion
diff --git a/etc/NEWS b/etc/NEWS
index f955308..6b132eb 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -985,6 +985,11 @@ default, and not just the opening element.
** Eshell
+*** TAB completion uses the standard completion-at-point rather than pcomplete
+Its UI is slightly different but can be customized to behave similarly,
+e.g. Pcomplete's default cycling can be obtained with
+(setq completion-cycle-threshold 5).
+
---
*** Expansion of history event designators is disabled by default.
To restore the old behavior, use
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index cd5c14a..25a6e88 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -288,9 +288,10 @@ to writing a completion function."
(function
(lambda ()
(set (make-local-variable 'comint-file-name-quote-list)
- eshell-special-chars-outside-quoting))) nil t)
- (add-hook 'pcomplete-quote-arg-hook 'eshell-quote-backslash nil t)
- (define-key eshell-mode-map [(meta tab)] 'eshell-complete-lisp-symbol)
+ eshell-special-chars-outside-quoting)))
+ nil t)
+ (add-hook 'pcomplete-quote-arg-hook #'eshell-quote-backslash nil t)
+ ;;(define-key eshell-mode-map [(meta tab)] 'eshell-complete-lisp-symbol) ;
Redundant
(define-key eshell-mode-map [(meta control ?i)] 'eshell-complete-lisp-symbol)
(define-key eshell-command-map [(meta ?h)] 'eshell-completion-help)
(define-key eshell-command-map [tab] 'pcomplete-expand-and-complete)
@@ -298,15 +299,14 @@ to writing a completion function."
'pcomplete-expand-and-complete)
(define-key eshell-command-map [space] 'pcomplete-expand)
(define-key eshell-command-map [? ] 'pcomplete-expand)
- (define-key eshell-mode-map [tab] 'eshell-pcomplete)
- (define-key eshell-mode-map [(control ?i)] 'eshell-pcomplete)
+ ;;(define-key eshell-mode-map [tab] 'completion-at-point) ;Redundant!
+ (define-key eshell-mode-map [(control ?i)] 'completion-at-point)
(add-hook 'completion-at-point-functions
#'pcomplete-completions-at-point nil t)
;; jww (1999-10-19): Will this work on anything but X?
- (if (featurep 'xemacs)
- (define-key eshell-mode-map [iso-left-tab] 'pcomplete-reverse)
- (define-key eshell-mode-map [backtab] 'pcomplete-reverse))
- (define-key eshell-mode-map [(meta ??)] 'pcomplete-list))
+ (define-key eshell-mode-map
+ (if (featurep 'xemacs) [iso-left-tab] [backtab]) 'pcomplete-reverse)
+ (define-key eshell-mode-map [(meta ??)] 'completion-help-at-point))
(defun eshell-completion-command-name ()
"Return the command name, possibly sans globbing."
@@ -442,34 +442,24 @@ to writing a completion function."
(if glob-name
completions
(setq completions
- (append (and (eshell-using-module 'eshell-alias)
- (funcall (symbol-function
'eshell-alias-completions)
- filename))
+ (append (if (fboundp 'eshell-alias-completions)
+ (eshell-alias-completions filename))
(eshell-winnow-list
(mapcar
(function
(lambda (name)
(substring name 7)))
(all-completions (concat "eshell/" filename)
- obarray 'functionp))
+ obarray #'functionp))
nil '(eshell-find-alias-function))
completions))
(append (and (or eshell-show-lisp-completions
(and eshell-show-lisp-alternatives
(null completions)))
- (all-completions filename obarray 'functionp))
+ (all-completions filename obarray #'functionp))
completions)))))))
-(defun eshell-pcomplete (&optional interactively)
- "Eshell wrapper for `pcomplete'."
- (interactive "p")
- ;; Pretend to be pcomplete so that cycling works (bug#13293).
- (setq this-command 'pcomplete)
- (condition-case nil
- (if interactively
- (call-interactively 'pcomplete)
- (pcomplete))
- (text-read-only (completion-at-point)))) ; Workaround for bug#12838.
+(define-obsolete-function-alias 'eshell-pcomplete #'completion-at-point "27.1")
(provide 'em-cmpl)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 047c1b1: * lisp/eshell/em-cmpl.el: Use completion-at-point i.s.o pcomplete,
Stefan Monnier <=