From b32fcd48242a39318b0410e4f6db4744d27531e8 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 17 Dec 2023 13:33:21 -0500 Subject: updates add eshell-here binding add open-line customization --- emacs/.config/emacs-kj/lisp/kj-eshell.el | 37 +++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'emacs/.config/emacs-kj/lisp/kj-eshell.el') 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) -- cgit v1.2.3