Subject: bug#41963: closed (Re: bug#41963: 28.0.50; [PATCH] Pop to an existing Eshell buffer in project by default)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 21 Jun 2020 01:22:02 +0000

Your bug report

#41963: 28.0.50; [PATCH] Pop to an existing Eshell buffer in project by default

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
41963: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=41963
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#41963: 28.0.50; [PATCH] Pop to an existing Eshell buffer in project by default
From: Dmitry Gutov <[email-masked]>
To: Theodor Thornhill <[email-masked]>, [email-masked]
Date: Sun, 21 Jun 2020 04:21:06 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Theodor,

On 20.06.2020 13:10, Theodor Thornhill wrote:

> I added the same default behavior recently added to 'project-shell' to
> 'project-eshell'. It is a fairly straight-forward version based on what
> is now found in 'project-shell'.

Pushed, thanks!

> Also, I added a small docstring change, to mention an implementation
> detail in project-shell.

I added some rephrasing on top of it, for both commands. Hope you like it.

Subject: 28.0.50; [PATCH] Pop to an existing Eshell buffer in project by default
From: Theodor Thornhill <[email-masked]>
To: [email-masked]
Date: Sat, 20 Jun 2020 10:10:25 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi!

I added the same default behavior recently added to 'project-shell' to
'project-eshell'. It is a fairly straight-forward version based on what
is now found in 'project-shell'.

Also, I added a small docstring change, to mention an implementation
detail in project-shell.

Theo

From 8e5ec6384beaee3ebc6772c741dc31d1cb2ae6e6 Mon Sep 17 00:00:00 2001
From: Theodor Thornhill <[email-masked]>
Date: Sat, 20 Jun 2020 11:54:22 +0200
Subject: [PATCH] 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.
---
 lisp/progmodes/project.el | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index d35bdf6ce0..3a9e8bcee5 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -716,8 +716,9 @@ project-vc-dir
 ;;;###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 @@ project-shell
 
 ;;;###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" ())
 
-- 
2.27.0