summaryrefslogtreecommitdiff
path: root/lisp/icomplete.el
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2019-12-23 23:19:01 +0000
committerJoão Távora <joaotavora@gmail.com>2019-12-31 13:31:45 +0000
commitfe0ed17175306dbcd3217e98fd84af2c2e077ce8 (patch)
tree597893c358923b81cc50e4642d06ad22f6497e73 /lisp/icomplete.el
parent5352947d0d40fbbdb2c22037d47f10e55c64c7d8 (diff)
downloademacs-fe0ed17175306dbcd3217e98fd84af2c2e077ce8.tar.gz
Slightly simplify lisp/icomplete.el with new icomplete--category helper
* lisp/icomplete.el (icomplete-fido-kill) (icomplete-fido-delete-char, icomplete-fido-ret) (icomplete-fido-backward-updir, icomplete-exhibit): Use icomplete--category. (icomplete--category): New helper. (cherry picked from commit 24a1f520f91c278cb8cc57325ea80285a3b252cf)
Diffstat (limited to 'lisp/icomplete.el')
-rw-r--r--lisp/icomplete.el39
1 files changed, 15 insertions, 24 deletions
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index cd20064be02..4d6dfcd18a1 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -234,15 +234,13 @@ completed. If completing files, it means delete the file. If
completing buffers it means kill the buffer. Both actions
require user confirmation."
(interactive)
- (let ((beg (icomplete--field-beg)) (end (icomplete--field-end)))
+ (let ((end (icomplete--field-end)))
(if (< (point) end)
(call-interactively 'kill-line)
- (let* ((md (completion--field-metadata beg))
- (category (alist-get 'category (cdr md)))
- (all (completion-all-sorted-completions))
+ (let* ((all (completion-all-sorted-completions))
(thing (car all))
(action
- (pcase category
+ (pcase (icomplete--category)
(`buffer
(lambda ()
(when (yes-or-no-p (concat "Kill buffer " thing "? "))
@@ -267,11 +265,8 @@ require user confirmation."
(defun icomplete-fido-delete-char ()
"Delete char or maybe call `dired', like `ido-mode'."
(interactive)
- (let* ((beg (icomplete--field-beg))
- (end (icomplete--field-end))
- (md (completion--field-metadata beg))
- (category (alist-get 'category (cdr md))))
- (if (or (< (point) end) (not (eq category 'file)))
+ (let ((end (icomplete--field-end)))
+ (if (or (< (point) end) (not (eq (icomplete--category) 'file)))
(call-interactively 'delete-char)
(dired (file-name-directory (icomplete--field-string)))
(exit-minibuffer))))
@@ -279,10 +274,7 @@ require user confirmation."
(defun icomplete-fido-ret ()
"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)
+ (let* ((dir (and (eq (icomplete--category) 'file)
(file-name-directory (icomplete--field-string))))
(current (car (completion-all-sorted-completions)))
(probe (and dir current
@@ -297,12 +289,10 @@ require user confirmation."
(defun icomplete-fido-backward-updir ()
"Delete char before or go up directory, like `ido-mode'."
(interactive)
- (let* ((beg (icomplete--field-beg))
- (md (completion--field-metadata beg))
- (category (alist-get 'category (cdr md))))
- (if (and (eq (char-before) ?/) (eq category 'file))
- (backward-kill-sexp 1)
- (call-interactively 'backward-delete-char))))
+ (if (and (eq (char-before) ?/)
+ (eq (icomplete--category) 'file))
+ (backward-kill-sexp 1)
+ (call-interactively 'backward-delete-char)))
(defvar icomplete-fido-mode-map
(let ((map (make-sparse-keymap)))
@@ -392,6 +382,10 @@ completions:
(defun icomplete--field-end ()
(if (window-minibuffer-p) (point-max)
(nth 1 completion-in-region--data)))
+(defun icomplete--category ()
+ (let* ((beg (icomplete--field-beg))
+ (md (completion--field-metadata beg)))
+ (alist-get 'category (cdr md))))
;;;_ > icomplete-simple-completing-p ()
(defun icomplete-simple-completing-p ()
@@ -488,10 +482,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'."
(sit-for icomplete-compute-delay)))
(when (and
icomplete-tidy-shadowed-file-names
- (eq (alist-get 'category
- (cdr (completion--field-metadata
- (icomplete--field-beg))))
- 'file)
+ (eq (icomplete--category) 'file)
rfn-eshadow-overlay (overlay-buffer rfn-eshadow-overlay)
(eq this-command 'self-insert-command)
(= saved-point (icomplete--field-end))