Add jump function for eshell
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user