diff options
author | Theodor Thornhill <theo@thornhill.no> | 2020-06-20 11:54:22 +0200 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2020-06-21 04:07:44 +0300 |
commit | c1056b0387fb6fda345da51e4e2ee9736c25a358 (patch) | |
tree | ef1f614fd8743928c6dae37567bb5e38be7d2b9b | |
parent | c59475ae1e34332501ea0f5758176a29b2797ba6 (diff) | |
download | emacs-c1056b0387fb6fda345da51e4e2ee9736c25a358.tar.gz emacs-c1056b0387fb6fda345da51e4e2ee9736c25a358.tar.bz2 emacs-c1056b0387fb6fda345da51e4e2ee9736c25a358.zip |
Pop to an existing Eshell buffer by default
* lisp/progmodes/project.el (project-shell): Improve docstring to
include information about an implementation detail.
* list/progmodes/project.el (project-eshell): Modelled after
'project-shell', change default behavior such that we don't create too
many eshell buffers by default. Use universal argument to create
subsequent buffers.
-rw-r--r-- | lisp/progmodes/project.el | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index d35bdf6ce0c..3a9e8bcee54 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -716,8 +716,9 @@ PREDICATE, HIST, and DEFAULT have the same meaning as in ;;;###autoload (defun project-shell () "Start an inferior shell in the current project's root directory. -With \\[universal-argument] prefix, create subsequent shell buffers -with uniquified names." +With \\[universal-argument] prefix, create subsequent shell +buffers with uniquified names. If several Shell buffers exists, +this command jumps to the first created such buffer." (interactive) (let* ((default-directory (project-root (project-current t))) (default-project-shell-name @@ -732,10 +733,21 @@ with uniquified names." ;;;###autoload (defun project-eshell () - "Start Eshell in the current project's root directory." + "Start Eshell in the current project's root directory. +With \\[universal-argument] prefix, create subsequent shell +buffers with uniquified names. If several Eshell buffers exists, +this command jumps to the first created such buffer." (interactive) - (let ((default-directory (project-root (project-current t)))) - (eshell t))) + (let* ((default-directory (project-root (project-current t))) + (eshell-buffer-name + (concat "*" (file-name-nondirectory + (directory-file-name + (file-name-directory default-directory))) + "-eshell*")) + (eshell-buffer (get-buffer eshell-buffer-name))) + (if (and eshell-buffer (not current-prefix-arg)) + (pop-to-buffer eshell-buffer) + (eshell t)))) (declare-function fileloop-continue "fileloop" ()) |