summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--emacs/custom/fcuny-eshell.el79
1 files changed, 50 insertions, 29 deletions
diff --git a/emacs/custom/fcuny-eshell.el b/emacs/custom/fcuny-eshell.el
index 8c04eab..6c268f0 100644
--- a/emacs/custom/fcuny-eshell.el
+++ b/emacs/custom/fcuny-eshell.el
@@ -1,5 +1,53 @@
+(defun fcuny/eshell-mode-setup ()
+ (eshell/alias "e" "find-file $1")
+ (eshell/alias "emacs" "find-file $1")
+ (eshell/alias "ee" "find-file-other-window $1")
+
+ (eshell/alias "gs" "magit-status")
+ (eshell/alias "gd" "magit-diff-unstaged")
+ (eshell/alias "gds" "magit-diff-staged")
+ (eshell/alias "d" "dired $1"))
+
+(defun eshell/gst (&rest args)
+ (magit-status (pop args) nil)
+ (eshell/echo)) ;; The echo command suppresses output
+
+(defun fcuny/eshell-here ()
+ "Opens up a new shell in the directory associated with the current
+buffer's file. The eshell is renamed to match that directory to make
+multiple eshell windows easier."
+ (interactive)
+ (let* ((height (/ (window-total-height) 3)))
+ (split-window-vertically (- height))
+ (other-window 1)
+ (eshell "new")
+ (insert (concat "ls"))
+ (eshell-send-input)))
+
+;; eshell time and notification
+(defvar-local eshell-current-command-start-time nil)
+
+;; https://www.birkey.co/2021-06-20-why-eshell-part-1.html
+(defun fcuny/eshell-current-command-start ()
+ (setq eshell-current-command-start-time (current-time)))
+
+(defun fcuny/eshell-current-command-stop ()
+ (when eshell-current-command-start-time
+ (let ((elapsed-time (float-time
+ (time-subtract (current-time)
+ eshell-current-command-start-time))))
+ (if (> elapsed-time 5)
+ (eshell-interactive-print
+ (format "Finished in: %.0fs\n" elapsed-time)))))
+ (setq eshell-current-command-start-time nil))
+
+(defun fcuny/eshell-current-command-time-track ()
+ (add-hook 'eshell-pre-command-hook #'fcuny/eshell-current-command-start nil t)
+ (add-hook 'eshell-post-command-hook #'fcuny/eshell-current-command-stop nil t))
+
(use-package eshell
- :hook (eshell-mode . fcuny/eshell-mode-setup)
+ :hook ((eshell-mode . fcuny/eshell-mode-setup)
+ (eshell-mode . fcuny/eshell-current-command-time-track))
:bind (("C-c e h" . fcuny/eshell-here))
:custom
(eshell-scroll-to-bottom-on-input 'all)
@@ -7,33 +55,6 @@
(eshell-hist-ignoredups t)
(eshell-save-history-on-exit t)
(eshell-prefer-lisp-functions nil)
- (eshell-destroy-buffer-when-process-dies t)
-
- :init
- (defun fcuny/eshell-mode-setup ()
- (eshell/alias "e" "find-file $1")
- (eshell/alias "emacs" "find-file $1")
- (eshell/alias "ee" "find-file-other-window $1")
-
- (eshell/alias "gs" "magit-status")
- (eshell/alias "gd" "magit-diff-unstaged")
- (eshell/alias "gds" "magit-diff-staged")
- (eshell/alias "d" "dired $1"))
-
- (defun eshell/gst (&rest args)
- (magit-status (pop args) nil)
- (eshell/echo)) ;; The echo command suppresses output
-
- (defun fcuny/eshell-here ()
- "Opens up a new shell in the directory associated with the current
-buffer's file. The eshell is renamed to match that directory to make
-multiple eshell windows easier."
- (interactive)
- (let* ((height (/ (window-total-height) 3)))
- (split-window-vertically (- height))
- (other-window 1)
- (eshell "new")
- (insert (concat "ls"))
- (eshell-send-input))))
+ (eshell-destroy-buffer-when-process-dies t))
(provide 'fcuny-eshell)