summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2024-03-06 12:45:32 +0100
committerMartin Polden <mpolden@mpolden.no>2024-03-06 12:49:38 +0100
commit70c829959c1f6e8a73fa4bb4bda73f373cb9f24e (patch)
treeec9e2450063d967bd5b03672cc6da7eadc8fcba5
parent0ad26684430e4c5e9cab64d324611c46acfc115d (diff)
eshell: C-c e opens eshell in another window
-rw-r--r--init.el1
-rw-r--r--lisp/init-eshell.el23
-rw-r--r--lisp/init-project.el6
3 files changed, 26 insertions, 4 deletions
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)