aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorJoão Távora2019-11-05 18:04:20 +0000
committerJoão Távora2019-11-05 22:59:33 +0000
commit213643a890913f10bac710ca8537e8b1125941d6 (patch)
tree4622d7be7b2fde5ebb2b301f1761323b979767bb /lisp
parente1d24f3c4cdc052d9ba87801fde09fae0d86d0b3 (diff)
downloademacs-213643a890913f10bac710ca8537e8b1125941d6.tar.gz
emacs-213643a890913f10bac710ca8537e8b1125941d6.zip
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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/icomplete.el18
1 files changed, 11 insertions, 7 deletions
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."
273 (exit-minibuffer)))) 273 (exit-minibuffer))))
274 274
275(defun icomplete-magic-ido-ret () 275(defun icomplete-magic-ido-ret ()
276 "Exit forcing completion or enter directory, like `ido-mode'." 276 "Exit minibuffer or enter directory, like `ido-mode'."
277 (interactive) 277 (interactive)
278 (let* ((beg (icomplete--field-beg)) 278 (let* ((beg (icomplete--field-beg))
279 (md (completion--field-metadata beg)) 279 (md (completion--field-metadata beg))
280 (category (alist-get 'category (cdr md))) 280 (category (alist-get 'category (cdr md)))
281 (dir (and (eq category 'file) 281 (dir (and (eq category 'file)
282 (file-name-directory (icomplete--field-string)))) 282 (file-name-directory (icomplete--field-string))))
283 (current (and dir 283 (current (car (completion-all-sorted-completions)))
284 (car (completion-all-sorted-completions)))) 284 (probe (and dir current
285 (probe (and current
286 (expand-file-name (directory-file-name current) dir)))) 285 (expand-file-name (directory-file-name current) dir))))
287 (if (and probe (file-directory-p probe) (not (string= current "./"))) 286 (cond ((and probe (file-directory-p probe) (not (string= current "./")))
288 (icomplete-force-complete) 287 (icomplete-force-complete))
289 (icomplete-force-complete-and-exit)))) 288 (current
289 (icomplete-force-complete-and-exit))
290 (t
291 (exit-minibuffer)))))
290 292
291(defun icomplete-magic-ido-backward-updir () 293(defun icomplete-magic-ido-backward-updir ()
292 "Delete char before or go up directory, like `ido-mode'." 294 "Delete char before or go up directory, like `ido-mode'."
@@ -330,6 +332,7 @@ more like `ido-mode' than regular `icomplete-mode'."
330 (remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup) 332 (remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
331 (remove-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup) 333 (remove-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup)
332 (when fido-mode 334 (when fido-mode
335 (icomplete-mode -1)
333 (setq icomplete-mode t) 336 (setq icomplete-mode t)
334 (add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup) 337 (add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
335 (add-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup))) 338 (add-hook 'minibuffer-setup-hook #'icomplete--fido-mode-setup)))
@@ -355,6 +358,7 @@ completions:
355 (remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup) 358 (remove-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)
356 (remove-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup) 359 (remove-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup)
357 (when icomplete-mode 360 (when icomplete-mode
361 (fido-mode -1)
358 (when icomplete-in-buffer 362 (when icomplete-in-buffer
359 (add-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup)) 363 (add-hook 'completion-in-region-mode-hook #'icomplete--in-region-setup))
360 (add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup))) 364 (add-hook 'minibuffer-setup-hook #'icomplete-minibuffer-setup)))