From d5673cb29e2cba9235097b40c8190807fcb4a048 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 18 Mar 2020 02:36:33 -0700 Subject: [PATCH] Fix and improve ido module - ido will actually be loaded at startup - I'm hoping there's a better way to optimize this. - ido-sort-mtime-mode was fixed - Up/Down were added to get closer to `(setq ido-vertical-define-keys 'C-n-C-p-up-down-left-right)` - Faces were re-enabled - The number of results are now displayed with ido --- modules/completion/ido/config.el | 63 +++++++++++++----------------- modules/completion/ido/packages.el | 1 + 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/modules/completion/ido/config.el b/modules/completion/ido/config.el index 39e53d998..cbb1a0c45 100644 --- a/modules/completion/ido/config.el +++ b/modules/completion/ido/config.el @@ -1,11 +1,13 @@ ;;; completion/ido/config.el -*- lexical-binding: t; -*- -(defun +ido-init-h () +(use-package! ido + :after-call pre-command-hook + :config (setq ido-ignore-buffers '("\\` " "^\\*ESS\\*" "^\\*Messages\\*" "^\\*Help\\*" "^\\*Buffer" "^\\*.*Completions\\*$" "^\\*Ediff" "^\\*tramp" "^\\*cvs-" "_region_" " output\\*$" "^TAGS$" "^\*Ido") - ido-use-faces nil + ido-auto-merge-work-directories-length -1 ido-confirm-unique-completion t ido-case-fold t ido-enable-tramp-completion nil @@ -19,41 +21,30 @@ (push "\\`.DS_Store$" ido-ignore-files) (push "Icon\\?$" ido-ignore-files)) - (define-key! (ido-common-completion-map ido-completion-map ido-file-completion-map) - "\C-n" #'ido-next-match - "\C-p" #'ido-prev-match - "\C-w" #'ido-delete-backward-word-updir - ;; Go to $HOME with ~ - "~" (λ! (if (looking-back "/" (point-min)) - (insert "~/") - (call-interactively #'self-insert-command)))) - - (defadvice! +ido--sort-mtime-a () - "Sort ido filelist by mtime instead of alphabetically." - :override #'ido-sort-mtime - (setq ido-temp-list - (sort ido-temp-list - (lambda (a b) - (time-less-p - (sixth (file-attributes (concat ido-current-directory b))) - (sixth (file-attributes (concat ido-current-directory a))))))) - (ido-to-end ;; move . files to end (again) - (cl-loop for x in ido-temp-list - if (char-equal (string-to-char x) ?.) - collect x))) - (add-hook! '(ido-make-file-list-hook ido-make-dir-list-hook) - #'ido-sort-mtime) + (defun +ido-init-h () + (define-key! (ido-common-completion-map ido-completion-map ido-file-completion-map) + "C-n" #'ido-next-match + "C-p" #'ido-prev-match + "" #'ido-next-match + "" #'ido-prev-match + "TAB" #'ido-exit-minibuffer + "C-w" #'ido-delete-backward-word-updir + ;; Go to $HOME with ~ + "~" (λ! (if (looking-back "/" (point-min)) + (insert "~/") + (call-interactively #'self-insert-command))))) ;; + (add-transient-hook! 'ido-setup-hook (+ido-init-h)) + (ido-mode 1) - (ido-everywhere 1) - (ido-ubiquitous-mode 1) - (ido-vertical-mode 1) - (flx-ido-mode +1) + (ido-everywhere 1)) + +(after! ido + (setq ido-vertical-show-count t) + (crm-custom-mode +1) - - ;; - (remove-hook 'ido-setup-hook #'+ido-init-h)) - -;; -(add-hook 'ido-setup-hook #'+ido-init-h) + (ido-ubiquitous-mode 1) + (ido-sort-mtime-mode 1) + (ido-vertical-mode 1) + (flx-ido-mode +1)) diff --git a/modules/completion/ido/packages.el b/modules/completion/ido/packages.el index e90c485bd..467791d34 100644 --- a/modules/completion/ido/packages.el +++ b/modules/completion/ido/packages.el @@ -3,5 +3,6 @@ (package! flx-ido :pin "17f5c9cb2a") (package! ido-completing-read+ :pin "74861eabd0") +(package! ido-sort-mtime :pin "f638ff0c92") (package! ido-vertical-mode :pin "16c4c1a112") (package! crm-custom :pin "f1aaccf643")