Skip to content

Commit

Permalink
Try to fix issue #2504 in eshell completion
Browse files Browse the repository at this point in the history
This fix the default eshell completion based on completion-at-point
which fails to complete a filename not preceded by a meaningful
command like cd or ls.
Pcomplete and helm-eshell are working properly in this case.

Problem is that the base-size returned by completion-all-completions
in this case is always zero (seems it assume we are trying to complete
a command even if the metadata specify a file completion)

To fix it we try here to recalculate the base-size from the last / found.
  • Loading branch information
thierryvolpiatto committed Jun 19, 2022
1 parent 218fa70 commit 452dd1b
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions helm-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -1957,7 +1957,11 @@ Can be used for `completion-in-region-function' by advicing it with an
(string= input ""))
" "))
(file-comp-p (or (eq (completion-metadata-get metadata 'category) 'file)
(helm-mode--in-file-completion-p)
(and (helm-mode--in-file-completion-p)
;; Probably unneeded at this
;; point but never know.
(setq metadata (append metadata '((category . file))))
t)
;; Assume that when `afun' and `predicate' are null
;; we are in filename completion.
(and (null afun) (null predicate))))
Expand All @@ -1978,7 +1982,23 @@ Can be used for `completion-in-region-function' by advicing it with an
metadata))
(last-data (last comps))
(bs (helm-aif (cdr last-data)
(prog1 it
;; Try to fix eshell completion
;; which fails to complete a
;; filename not preceded by
;; a meaningful
;; command like cd or ls
;; (bug #2504) so
;; try to find the last
;; leading / and set
;; base-size from it.
(prog1 (if (and (zerop it) file-comp-p)
(or (helm-aand
(save-excursion
(re-search-backward
"/" start t))
(- (1+ it) start))
it)
it)
;; Remove the last element of
;; comps by side-effect.
(setcdr last-data nil))
Expand Down

0 comments on commit 452dd1b

Please sign in to comment.