summaryrefslogtreecommitdiff
path: root/lisp/icomplete.el
diff options
context:
space:
mode:
authorRasmus <rasmus@gmx.us>2021-11-12 09:02:28 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-11-12 09:02:28 +0100
commit87e53578861a37748cdfc7cb017b73c2bcf572a4 (patch)
treebbc6d12654c3bc3a4c1f3ff297e292513d7c5403 /lisp/icomplete.el
parent81535cd8783d956cedd9a59263e77d2062c70197 (diff)
downloademacs-87e53578861a37748cdfc7cb017b73c2bcf572a4.tar.gz
lisp/icomplete.el (icomplete-fido-backward-updir): Expand "~/"
* lisp/icomplete.el (icomplete-fido-backward-updir): Expand "~/" (bug#43925).
Diffstat (limited to 'lisp/icomplete.el')
-rw-r--r--lisp/icomplete.el18
1 files changed, 11 insertions, 7 deletions
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index a61c9d6354c..f909a3b1771 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -380,13 +380,17 @@ if that doesn't produce a completion match."
(defun icomplete-fido-backward-updir ()
"Delete char before or go up directory, like `ido-mode'."
(interactive)
- (if (and (eq (char-before) ?/)
- (eq (icomplete--category) 'file))
- (save-excursion
- (goto-char (1- (point)))
- (when (search-backward "/" (point-min) t)
- (delete-region (1+ (point)) (point-max))))
- (call-interactively 'backward-delete-char)))
+ (cond ((and (eq (char-before) ?/)
+ (eq (icomplete--category) 'file))
+ (when (string-equal (icomplete--field-string) "~/")
+ (delete-region (icomplete--field-beg) (icomplete--field-end))
+ (insert (expand-file-name "~/"))
+ (goto-char (line-end-position)))
+ (save-excursion
+ (goto-char (1- (point)))
+ (when (search-backward "/" (point-min) t)
+ (delete-region (1+ (point)) (point-max)))))
+ (t (call-interactively 'backward-delete-char))))
(defvar icomplete-fido-mode-map
(let ((map (make-sparse-keymap)))