diff options
| author | João Távora | 2019-12-23 23:19:01 +0000 |
|---|---|---|
| committer | João Távora | 2019-12-31 13:31:45 +0000 |
| commit | fe0ed17175306dbcd3217e98fd84af2c2e077ce8 (patch) | |
| tree | 597893c358923b81cc50e4642d06ad22f6497e73 | |
| parent | 5352947d0d40fbbdb2c22037d47f10e55c64c7d8 (diff) | |
| download | emacs-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.el | 39 |
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 | |||
| 234 | completing buffers it means kill the buffer. Both actions | 234 | completing buffers it means kill the buffer. Both actions |
| 235 | require user confirmation." | 235 | require 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)) |