]> git.eshelyaron.com Git - emacs.git/commitdiff
Document fido-mode
authorJoão Távora <joaotavora@gmail.com>
Tue, 5 Nov 2019 18:04:20 +0000 (18:04 +0000)
committerJoão Távora <joaotavora@gmail.com>
Tue, 5 Nov 2019 22:59:33 +0000 (22:59 +0000)
* 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.

doc/emacs/buffers.texi
etc/NEWS
lisp/icomplete.el

index 74e6211f8086dd776e0f10b6e314a8cb955251df..b5a17416d76c1a62995a3752a38790f954277a4f 100644 (file)
@@ -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
 
index b6e61c76e2f282b510c534312a4eb1a881cfdf2f..db3434f55b0f8bd8565ca902d1b36aef176d4dd6 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1192,6 +1192,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.
index 777fdce13a032f9014683a31e76bf5d16bec1c47..40f4f0bc6885f2fe6bb3a8ac4e991df967e934c3 100644 (file)
@@ -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)))