Make fido-mode behave more like ido-mode when finding directories
Notably C-x d (M-x dired) and C-x v d (M-x vc-dir) behaved quite differently, having regular files as the default instead of ido's usual "./". * lisp/icomplete.el (icomplete--sorted-completions): New helper. (icomplete-completions): Use it.
This commit is contained in:
parent
24a1f520f9
commit
ee914051fb
1 changed files with 19 additions and 2 deletions
|
@ -442,6 +442,24 @@ Usually run by inclusion in `minibuffer-setup-hook'."
|
|||
(cdr tem)))))
|
||||
(add-hook 'pre-command-hook 'icomplete-pre-command-hook nil t)
|
||||
(add-hook 'post-command-hook 'icomplete-post-command-hook nil t)))
|
||||
|
||||
(defun icomplete--sorted-completions ()
|
||||
(let ((all (completion-all-sorted-completions
|
||||
(icomplete--field-beg) (icomplete--field-end))))
|
||||
(if (and fido-mode
|
||||
(window-minibuffer-p)
|
||||
(not minibuffer-default)
|
||||
(eq (icomplete--category) 'file))
|
||||
(cl-loop for l on all
|
||||
while (listp (cdr l))
|
||||
for comp = (cadr l)
|
||||
when (string= comp "./")
|
||||
do (setf (cdr l) (cddr l))
|
||||
and return
|
||||
(setq completion-all-sorted-completions (cons comp all))
|
||||
finally return all)
|
||||
all)))
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -550,8 +568,7 @@ matches exist."
|
|||
(funcall predicate cand))))
|
||||
predicate))
|
||||
(md (completion--field-metadata (icomplete--field-beg)))
|
||||
(comps (completion-all-sorted-completions
|
||||
(icomplete--field-beg) (icomplete--field-end)))
|
||||
(comps (icomplete--sorted-completions))
|
||||
(last (if (consp comps) (last comps)))
|
||||
(base-size (cdr last))
|
||||
(open-bracket (if require-match "(" "["))
|
||||
|
|
Loading…
Add table
Reference in a new issue