aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Távora2019-12-23 23:19:01 +0000
committerJoão Távora2019-12-31 13:31:45 +0000
commitfe0ed17175306dbcd3217e98fd84af2c2e077ce8 (patch)
tree597893c358923b81cc50e4642d06ad22f6497e73
parent5352947d0d40fbbdb2c22037d47f10e55c64c7d8 (diff)
downloademacs-fe0ed17175306dbcd3217e98fd84af2c2e077ce8.tar.gz
emacs-fe0ed17175306dbcd3217e98fd84af2c2e077ce8.zip
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)
-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
234completing buffers it means kill the buffer. Both actions 234completing buffers it means kill the buffer. Both actions
235require user confirmation." 235require user confirmation."
236 (interactive) 236 (interactive)
237 (let ((beg (icomplete--field-beg)) (end (icomplete--field-end))) 237 (let ((end (icomplete--field-end)))
238 (if (< (point) end) 238 (if (< (point) end)
239 (call-interactively 'kill-line) 239 (call-interactively 'kill-line)
240 (let* ((md (completion--field-metadata beg)) 240 (let* ((all (completion-all-sorted-completions))
241 (category (alist-get 'category (cdr md)))
242 (all (completion-all-sorted-completions))
243 (thing (car all)) 241 (thing (car all))
244 (action 242 (action
245 (pcase category 243 (pcase (icomplete--category)
246 (`buffer 244 (`buffer
247 (lambda () 245 (lambda ()
248 (when (yes-or-no-p (concat "Kill buffer " thing "? ")) 246 (when (yes-or-no-p (concat "Kill buffer " thing "? "))
@@ -267,11 +265,8 @@ require user confirmation."
267(defun icomplete-fido-delete-char () 265(defun icomplete-fido-delete-char ()
268 "Delete char or maybe call `dired', like `ido-mode'." 266 "Delete char or maybe call `dired', like `ido-mode'."
269 (interactive) 267 (interactive)
270 (let* ((beg (icomplete--field-beg)) 268 (let ((end (icomplete--field-end)))
271 (end (icomplete--field-end)) 269 (if (or (< (point) end) (not (eq (icomplete--category) 'file)))
272 (md (completion--field-metadata beg))
273 (category (alist-get 'category (cdr md))))
274 (if (or (< (point) end) (not (eq category 'file)))
275 (call-interactively 'delete-char) 270 (call-interactively 'delete-char)
276 (dired (file-name-directory (icomplete--field-string))) 271 (dired (file-name-directory (icomplete--field-string)))
277 (exit-minibuffer)))) 272 (exit-minibuffer))))
@@ -279,10 +274,7 @@ require user confirmation."
279(defun icomplete-fido-ret () 274(defun icomplete-fido-ret ()
280 "Exit minibuffer or enter directory, like `ido-mode'." 275 "Exit minibuffer or enter directory, like `ido-mode'."
281 (interactive) 276 (interactive)
282 (let* ((beg (icomplete--field-beg)) 277 (let* ((dir (and (eq (icomplete--category) 'file)
283 (md (completion--field-metadata beg))
284 (category (alist-get 'category (cdr md)))
285 (dir (and (eq category 'file)
286 (file-name-directory (icomplete--field-string)))) 278 (file-name-directory (icomplete--field-string))))
287 (current (car (completion-all-sorted-completions))) 279 (current (car (completion-all-sorted-completions)))
288 (probe (and dir current 280 (probe (and dir current
@@ -297,12 +289,10 @@ require user confirmation."
297(defun icomplete-fido-backward-updir () 289(defun icomplete-fido-backward-updir ()
298 "Delete char before or go up directory, like `ido-mode'." 290 "Delete char before or go up directory, like `ido-mode'."
299 (interactive) 291 (interactive)
300 (let* ((beg (icomplete--field-beg)) 292 (if (and (eq (char-before) ?/)
301 (md (completion--field-metadata beg)) 293 (eq (icomplete--category) 'file))
302 (category (alist-get 'category (cdr md)))) 294 (backward-kill-sexp 1)
303 (if (and (eq (char-before) ?/) (eq category 'file)) 295 (call-interactively 'backward-delete-char)))
304 (backward-kill-sexp 1)
305 (call-interactively 'backward-delete-char))))
306 296
307(defvar icomplete-fido-mode-map 297(defvar icomplete-fido-mode-map
308 (let ((map (make-sparse-keymap))) 298 (let ((map (make-sparse-keymap)))
@@ -392,6 +382,10 @@ completions:
392(defun icomplete--field-end () 382(defun icomplete--field-end ()
393 (if (window-minibuffer-p) (point-max) 383 (if (window-minibuffer-p) (point-max)
394 (nth 1 completion-in-region--data))) 384 (nth 1 completion-in-region--data)))
385(defun icomplete--category ()
386 (let* ((beg (icomplete--field-beg))
387 (md (completion--field-metadata beg)))
388 (alist-get 'category (cdr md))))
395 389
396;;;_ > icomplete-simple-completing-p () 390;;;_ > icomplete-simple-completing-p ()
397(defun icomplete-simple-completing-p () 391(defun icomplete-simple-completing-p ()
@@ -488,10 +482,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'."
488 (sit-for icomplete-compute-delay))) 482 (sit-for icomplete-compute-delay)))
489 (when (and 483 (when (and
490 icomplete-tidy-shadowed-file-names 484 icomplete-tidy-shadowed-file-names
491 (eq (alist-get 'category 485 (eq (icomplete--category) 'file)
492 (cdr (completion--field-metadata
493 (icomplete--field-beg))))
494 'file)
495 rfn-eshadow-overlay (overlay-buffer rfn-eshadow-overlay) 486 rfn-eshadow-overlay (overlay-buffer rfn-eshadow-overlay)
496 (eq this-command 'self-insert-command) 487 (eq this-command 'self-insert-command)
497 (= saved-point (icomplete--field-end)) 488 (= saved-point (icomplete--field-end))