summaryrefslogtreecommitdiff
path: root/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'emacs')
-rw-r--r--emacs/custom/fcuny-eshell.el23
1 files changed, 22 insertions, 1 deletions
diff --git a/emacs/custom/fcuny-eshell.el b/emacs/custom/fcuny-eshell.el
index 53c3f69..2f53988 100644
--- a/emacs/custom/fcuny-eshell.el
+++ b/emacs/custom/fcuny-eshell.el
@@ -51,6 +51,25 @@
(magit-status (pop args) nil)
(eshell/echo)) ;; The echo command suppresses output
+(defun fcuny/eshell--open-or-cd (path)
+ "Cd to PATH if path is a directory ((file-name-directory path) => t), otherwise open PATH via `find-file'."
+ (interactive)
+ (if (file-directory-p path)
+ (progn
+ (goto-char (point-max))
+ (insert (concat "cd " path))
+ (eshell-send-input))
+ (find-file path)))
+
+(defun fcuny/eshell-open-file-at-point ()
+ (interactive)
+ (let ((filename (symbol-name (symbol-at-point))))
+ (cond
+ ((file-readable-p filename)
+ (fcuny/eshell--open-or-cd filename))
+ ((file-readable-p (expand-file-name filename))
+ (fcuny/eshell--open-or-cd (expand-file-name filename))))))
+
(defun fcuny/shorten-path (path &optional max-len)
"Return a potentially trimmed-down version of the directory PATH, replacing
parent directories with their initial characters to try to get the character
@@ -168,7 +187,9 @@ append to it, while separating multiple outputs with
:commands (eshell eshell-command)
:bind (("C-c e h" . fcuny/eshell-here)
("C-c e e" . fcuny/eshell-export)
- ("C-c r" . counsel-esh-history))
+ ("C-c r" . counsel-esh-history)
+ :map eshell-mode-map
+ ("C-o" . fcuny/eshell-open-file-at-point))
:custom
(eshell-scroll-to-bottom-on-input 'all)
(eshell-error-if-no-glob t)