From 70c829959c1f6e8a73fa4bb4bda73f373cb9f24e Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Wed, 6 Mar 2024 12:45:32 +0100 Subject: eshell: C-c e opens eshell in another window --- init.el | 1 + lisp/init-eshell.el | 23 +++++++++++++++++++++++ lisp/init-project.el | 6 ++---- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 lisp/init-eshell.el diff --git a/init.el b/init.el index 55e1a0c..68a0b1b 100644 --- a/init.el +++ b/init.el @@ -44,6 +44,7 @@ ;; clients (mpolden/maybe-require 'init-eglot) +(mpolden/maybe-require 'init-eshell) (mpolden/maybe-require 'init-git) (mpolden/maybe-require 'init-restclient) diff --git a/lisp/init-eshell.el b/lisp/init-eshell.el new file mode 100644 index 0000000..952989a --- /dev/null +++ b/lisp/init-eshell.el @@ -0,0 +1,23 @@ +;;; init-eshell.el --- configure eshell -*- lexical-binding:t -*- +;;; Commentary: +;;; Code: + +(defun mpolden/eshell-other-window () + "Create a new Eshell buffer in another window. + +If `default-directory' is determined to be a project by +`project-current', the Eshell buffer will be created with +`project-shell' instead of `eshell'." + (interactive) + (let ((buf (if (project-current) + (project-eshell) + (eshell)))) + (switch-to-buffer (other-buffer buf)) + (switch-to-buffer-other-window buf))) + +(use-package eshell + :bind (("C-c e" . mpolden/eshell-other-window))) + +(provide 'init-eshell) + +;;; init-eshell.el ends here diff --git a/lisp/init-project.el b/lisp/init-project.el index 755d9fd..944db7c 100644 --- a/lisp/init-project.el +++ b/lisp/init-project.el @@ -17,15 +17,13 @@ (project-dired "Dired" ?d) (mpolden/grep "Grep" ?g) (magit-project-status "Magit" ?m) - (project-eshell "Eshell" ?e))) + (mpolden/eshell-other-window "Eshell" ?e))) ;; configure how projects are detected (setq project-find-functions '(mpolden/project-try-go project-try-vc)) :bind (;; C-x f finds file in project ("C-x f" . project-find-file) ;; C-c p switches project - ("C-c p" . project-switch-project) - ;; C-c e starts eshell in project - ("C-c e" . project-eshell))) + ("C-c p" . project-switch-project))) (provide 'init-project) -- cgit v1.2.3