Add jump function for eshell

This commit is contained in:
2024-09-15 23:07:37 -07:00
parent bb1b8ecd05
commit 6186ed6686

View File

@@ -48,7 +48,28 @@
(use-package eshell (use-package eshell
:config :config
(setq eshell-destroy-buffer-when-process-dies t)) (setq eshell-destroy-buffer-when-process-dies t)
;; From https://karthinks.com/software/jumping-directories-in-eshell/
(defun eshell/j (&optional regexp)
"Navigate to a previously visited directory in eshell, or to
any directory proferred by `consult-dir'."
(let ((eshell-dirs (delete-dups
(mapcar 'abbreviate-file-name
(ring-elements eshell-last-dir-ring)))))
(cond
((and (not regexp) (featurep 'consult-dir))
(let* ((consult-dir--source-eshell `(:name "Eshell"
:narrow ?e
:category file
:face consult-file
:items ,eshell-dirs))
(consult-dir-sources (cons consult-dir--source-eshell
consult-dir-sources)))
(eshell/cd (substring-no-properties
(consult-dir--pick "Switch directory: ")))))
(t (eshell/cd (if regexp (eshell-find-previous-directory regexp)
(completing-read "cd: " eshell-dirs))))))))
(use-package eshell-toggle (use-package eshell-toggle
:ensure t :ensure t