diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2023-12-17 13:33:21 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2023-12-17 13:33:45 -0500 |
commit | b32fcd48242a39318b0410e4f6db4744d27531e8 (patch) | |
tree | 144d66cd496d7f063fd1b7b65b928522501d0e3e /emacs/.config/emacs-kj/lisp/kj-eshell.el | |
parent | 7b2f59667a46891155e2cbf91692f66ef44ff946 (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.el | 37 |
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) |