summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2019-11-05 18:04:20 +0000
committerJoão Távora <joaotavora@gmail.com>2019-11-05 18:04:20 +0000
commit2b0f589134d9427a96ab8cf0d8473715740984ef (patch)
tree0e624d53824f485d4245bd48db68988383ef7cb4
parent162979590d04a7d2fe0d980958d3da4b2940e69a (diff)
downloademacs-scratch/fido-mode.tar.gz
Document fido-modescratch/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.
-rw-r--r--doc/emacs/buffers.texi16
-rw-r--r--etc/NEWS9
-rw-r--r--lisp/icomplete.el18
3 files changed, 36 insertions, 7 deletions
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 74e6211f808..b5a17416d76 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -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
diff --git a/etc/NEWS b/etc/NEWS
index 033cb489788..78ec85c4bb0 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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.
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 777fdce13a0..40f4f0bc688 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -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)))