summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--consult.org40
1 files changed, 40 insertions, 0 deletions
diff --git a/consult.org b/consult.org
index 9939972..8fcf09b 100644
--- a/consult.org
+++ b/consult.org
@@ -29,7 +29,47 @@
(setq selectrum-highlight-candidates-function #'orderless-highlight-matches)
(setq orderless-skip-highlighting (lambda () selectrum-is-active)))
+
+ :config
+ ;; https://github.com/raxod502/selectrum/wiki/Ido,-icomplete(fido)-emulation
+ (defun selectrum-fido-backward-updir ()
+ "Delete char before or go up directory, like `ido-mode'."
+ (interactive)
+ (if (and (eq (char-before) ?/)
+ (eq (selectrum--get-meta 'category) 'file))
+ (save-excursion
+ (goto-char (1- (point)))
+ (when (search-backward "/" (point-min) t)
+ (delete-region (1+ (point)) (point-max))))
+ (call-interactively 'backward-delete-char)))
+
+ (defun selectrum-fido-delete-char ()
+ "Delete char or maybe call `dired', like `ido-mode'."
+ (interactive)
+ (let ((end (point-max)))
+ (if (or (< (point) end) (not (eq (selectrum--get-meta 'category) 'file)))
+ (call-interactively 'delete-char)
+ (dired (file-name-directory (minibuffer-contents)))
+ (exit-minibuffer))))
+
+ (defun selectrum-fido-ret ()
+ "Exit minibuffer or enter directory, like `ido-mode'."
+ (interactive)
+ (let* ((dir (and (eq (selectrum--get-meta 'category) 'file)
+ (file-name-directory (minibuffer-contents))))
+ (current (selectrum-get-current-candidate))
+ (probe (and dir current
+ (expand-file-name (directory-file-name current) dir))))
+ (if (and probe (file-directory-p probe) (not (string= current "./")))
+ (selectrum-insert-current-candidate)
+ (selectrum-select-current-candidate))))
+
+ ;; (define-key selectrum-minibuffer-map (kbd "RET") 'selectrum-fido-ret)
+ (define-key selectrum-minibuffer-map (kbd "DEL") 'selectrum-fido-backward-updir)
+ (define-key selectrum-minibuffer-map (kbd "C-d") 'selectrum-fido-delete-char)
+
:custom ((selectrum-complete-in-buffer t)
+ ;; (selectrum-display-action '(display-buffer-at-bottom))
(selectrum-extend-current-candidate-highlight t)
(selectrum-fix-vertical-window-height nil)
(selectrum-max-window-height 20)