summaryrefslogtreecommitdiff
path: root/emacs/.config/emacs-kj/lisp/kj-eshell.el
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2023-12-17 13:33:21 -0500
committerKjetil Orbekk <kj@orbekk.com>2023-12-17 13:33:45 -0500
commitb32fcd48242a39318b0410e4f6db4744d27531e8 (patch)
tree144d66cd496d7f063fd1b7b65b928522501d0e3e /emacs/.config/emacs-kj/lisp/kj-eshell.el
parent7b2f59667a46891155e2cbf91692f66ef44ff946 (diff)
updates
add eshell-here binding add open-line customization
Diffstat (limited to 'emacs/.config/emacs-kj/lisp/kj-eshell.el')
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-eshell.el37
1 files changed, 36 insertions, 1 deletions
diff --git a/emacs/.config/emacs-kj/lisp/kj-eshell.el b/emacs/.config/emacs-kj/lisp/kj-eshell.el
index aa8a4d8..d52299c 100644
--- a/emacs/.config/emacs-kj/lisp/kj-eshell.el
+++ b/emacs/.config/emacs-kj/lisp/kj-eshell.el
@@ -19,7 +19,9 @@
(defun kj/eshell-on-load ()
(dolist (command '("htop" "tmux" "vim" "nvim"))
(add-to-list 'eshell-visual-commands
- command)))
+ command))
+
+ (define-key eshell-mode-map (kbd "C-d") 'eshell-life-is-too-much))
(add-to-list 'eshell-complex-commands "ssh")
@@ -44,4 +46,37 @@
(eshell-parse-command "*ssh"
(eshell-stringify-list (flatten-tree args))))))
+(defvar kj/eshell-here-directory)
+
+(defun kj/eshell-buffer-name ()
+ (let ((base (concat "*eshell:" default-directory)))
+ (cond
+ ((not (get-buffer base)) base)
+ (t (cl-loop for n from 2
+ for name = (format "%s<%d>" base n)
+ until (not (get-buffer name))
+ finally return name)))))
+
+(defun kj/eshell-update-buffer-name ()
+ (interactive)
+ (rename-buffer (kj/eshell-buffer-name)))
+(add-hook 'eshell-directory-change-hook 'kj/eshell-update-buffer-name)
+
+(defun kj/new-eshell-here ()
+ (let ((default-directory kj/eshell-here-directory))
+ (eshell t)))
+
+(defun kj/eshell-here ()
+ (interactive)
+ (unless (eq last-command 'kj/eshell-here)
+ (setq kj/eshell-here-directory
+ (if (derived-mode-p 'eshell-mode)
+ (with-current-buffer (other-buffer (current-buffer) t)
+ default-directory)
+ default-directory)))
+ (if (derived-mode-p 'eshell-mode)
+ (kj/new-eshell-here)
+ (eshell))
+ (kj/eshell-update-buffer-name))
+
(provide 'kj-eshell)