aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Távora2019-12-23 23:19:01 +0000
committerJoão Távora2019-12-23 23:44:02 +0000
commit24a1f520f91c278cb8cc57325ea80285a3b252cf (patch)
tree5ee895d5ffff25a5462e2abe38818903933cdd82
parent9c912049927cfb18b9c8b37039b38ddf51f2fe81 (diff)
downloademacs-24a1f520f91c278cb8cc57325ea80285a3b252cf.tar.gz
emacs-24a1f520f91c278cb8cc57325ea80285a3b252cf.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.
-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))