Commit 2b0f5891 authored by João Távora's avatar João Távora

Document fido-mode

* doc/emacs/buffers.texi (Icomplete): Document Fido Mode.

* etc/NEWS: Mention Fido Mode.

* lisp/icomplete.el (icomplete-mode): Ensure fido-mode is off.
(fido-mode): Ensure icomplete-mode is off.
(icomplete-magic-ido-ret): Don't force completions if no
completions.
parent 16297959
Pipeline #3938 failed with stage
in 90 minutes and 1 second
......@@ -725,6 +725,22 @@ of directories.
the variable @code{icomplete-mode} to @code{t} (@pxref{Easy
Customization}).
@findex fido-mode
@cindex fido mode
An alternative to Icomplete mode is Fido mode. This is very similar
to Icomplete mode, but retains some functionality from a popular
extension called Ido mode (in fact the name is derived from ``Fake
Ido''). Among other things, in Fido mode, @kbd{C-s} and @kbd{C-r} are
also used to rotate the completions list, @kbd{C-k} can be used to
delete files and kill buffers in-list. Another noteworthy aspect is
that @code{flex} is used as the default completion style
(@pxref{Completion Styles}).
To enable Fido mode, type @kbd{M-x fido-mode}, or customize
the variable @code{fido-mode} to @code{t} (@pxref{Easy
Customization}).
@node Buffer Menus
@subsection Customizing Buffer Menus
......
......@@ -1181,6 +1181,15 @@ A new command 'xref-revert-buffer' is bound to 'g'.
---
*** Imenu support has been added to 'xref--xref-buffer-mode'.
** Icomplete
+++
*** A new minor mode based on Icomplete, Fido mode, is made available.
The point of this mode, named after "Fake Ido", is to recover much of
the functionality that still separated the popular ido-mode from
Icomplete, while still cooperating fully with all of Emacs's
completion facilities.
** Ecomplete
*** The ecomplete sorting has changed to a decay-based algorithm.
......
......@@ -273,20 +273,22 @@ require user confirmation."
(exit-minibuffer))))
(defun icomplete-magic-ido-ret ()
"Exit forcing completion or enter directory, like `ido-mode'."
"Exit minibuffer or enter directory, like `ido-mode'."
(interactive)
(let* ((beg (icomplete--field-beg))
(md (completion--field-metadata beg))
(category (alist-get 'category (cdr md)))
(dir (and (eq category 'file)
(file-name-directory (icomplete--field-string))))
(current (and dir
(car (completion-all-sorted-completions))))
(probe (and current
(current (car (completion-all-sorted-completions)))
(probe (and dir current
(expand-file-name (directory-file-name current) dir))))
(if (and probe (file-directory-p probe) (not (string= current "./")))
(icomplete-force-complete)
(icomplete-force-complete-and-exit))))
(cond ((and probe (file-directory-p probe) (not (string= current "./")))
(icomplete-force-complete))
(current
(icomplete-force-complete-and-exit))
(t
(exit-minibuffer)))))
(defun icomplete-magic-ido-backward-updir ()
"Delete char before or go up directory, like `ido-mode'."
......@@ -330,6 +332,7 @@ more like `ido-mode' than regular `icomplete-mode'."
(remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
(remove-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup)
(when fido-mode
(icomplete-mode -1)
(setq icomplete-mode t)
(add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
(add-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup)))
......@@ -355,6 +358,7 @@ completions:
(remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
(remove-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup)
(when icomplete-mode
(fido-mode -1)
(when icomplete-in-buffer
(add-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup))
(add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment