Subject: bug#26649: closed (Re: bug#26649: 26.0.50; buffer-command: Return the cmd that started a process in buffer)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 03 May 2017 08:26:02 +0000

Your bug report

#26649: 26.0.50; buffer-command: Return the cmd that started a process in buffer

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].

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

Subject: Re: bug#26649: 26.0.50; buffer-command: Return the cmd that started a process in buffer
From: Tino Calancha <[email-masked]>
To: [email-masked]
Date: Wed, 03 May 2017 17:25:47 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

Tino Calancha <[email-masked]> writes:

> On Thu, 27 Apr 2017, Juri Linkov wrote:
>
>>> Severity: wishlist
>>>
>>> I define in my private customization a command `buffer-command', which
>>> calls `process-command' on the process associated with the current
>>> buffer.
>>> Interactively, it shows in the echo area the command as the last column
>>> of `list-processes' does.
>>> Is anyone interested in adding this feature?
>>
>> The command name ‘buffer-command’ is confusing.  At first I thought it
>> should read a command in the minibuffer like ‘shell-command’ and execute
>> it in the buffer's process.  But actually it just displays the same info
>> that is available in ‘list-processes’.
> Yeah, this command seems very specific to my workflow.  It doesn't add
> nothing to `list-process', so i agree it's worthless adding it into
> Emacs.
There is no general interest in this proposal, so i am closing the report.

Subject: 26.0.50; buffer-command: Return the cmd that started a process in buffer
From: Tino Calancha <[email-masked]>
To: [email-masked]
Date: Tue, 25 Apr 2017 17:15:26 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

Severity: wishlist

I define in my private customization a command `buffer-command', which
calls `process-command' on the process associated with the current
buffer.
Interactively, it shows in the echo area the command as the last column
of `list-processes' does.
Is anyone interested in adding this feature?
--8<-----------------------------cut here---------------start------------->8---
>From 59ee6e113b7ff557ba5208b79ddf57a26b4578b2 Mon Sep 17 00:00:00 2001
From: Tino Calancha <[email-masked]>
Date: Tue, 25 Apr 2017 17:07:07 +0900
Subject: [PATCH] buffer-command: Return the cmd that started a process in
 buffer

* lisp/simple.el (buffer-command): Return command executed to
start a process in BUFFER (Bug#26649).
* doc/lispref/processes.texi (Process Information): Document new command.
* test/lisp/subr-tests.el (subr-tests--buffer-command): Add test
; * etc/NEWS: Add news entry.
---
 doc/lispref/processes.texi |  7 +++++++
 etc/NEWS                   |  4 ++++
 lisp/simple.el             | 18 ++++++++++++++++++
 test/lisp/subr-tests.el    | 11 +++++++++++
 4 files changed, 40 insertions(+)

diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 630853384e..b182842614 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -975,6 +975,13 @@ Process Information
 @end smallexample
 @end defun
 
+@deffn Command buffer-command &optional buffer
+This command calls @code{process-command} on the process associated
+with @var{buffer}.  @var{buffer} defaults to the current buffer.
+If @var{buffer} is not associated with a running process, then returns
+@code{nil}.
+@end deffn
+
 @defun process-contact process &optional key
 This function returns information about how a network, a serial, or a
 pipe connection was set up.  When @var{key} is @code{nil}, it returns
diff --git a/etc/NEWS b/etc/NEWS
index 9d4c72d6dc..87d6c93fa1 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -886,6 +886,10 @@ instead of its first.
 * Lisp Changes in Emacs 26.1
 
 +++
+** New command 'buffer-command' calls 'process-command' on the
+process associated with the current buffer.
+
++++
 ** Emacs now supports records for user-defined types, via the new
 functions 'make-record', 'record', and 'recordp'.  Records are now
 used internally to represent cl-defstruct and defclass instances, for
diff --git a/lisp/simple.el b/lisp/simple.el
index a58164a112..2aed47502e 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3967,6 +3967,24 @@ list-processes
     (tabulated-list-print))
   (display-buffer buffer)
   nil)
+
+(defun buffer-command (&optional buffer)
+  "Return the command that was executed to start the process in BUFFER.
+Buffer defaults to the current buffer.
+This runs `process-command' on the process associated with BUFFER.
+If BUFFER is not associated with a process, then return nil."
+  (interactive)
+  (when (and buffer (not (buffer-live-p (get-buffer buffer))))
+    (error "Not a living buffer '%S'" buffer))
+  (let* ((buf (get-buffer (or buffer (current-buffer))))
+         (proc (get-buffer-process buf))
+	     (cmd (and proc (process-command proc))))
+    (cond ((null cmd)
+	       (message "No process in buffer '%s'" (buffer-name buf))
+           nil)
+          (t
+           (message "%s" (mapconcat #'identity cmd " "))
+           cmd))))
 
 ;;;; Prefix commands
 
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el
index 0d243cc5d8..f4e6640f9c 100644
--- a/test/lisp/subr-tests.el
+++ b/test/lisp/subr-tests.el
@@ -291,5 +291,16 @@ subr-test--frames-1
   (should-error (eval '(dolist "foo") t)
                 :type 'wrong-type-argument))
 
+(ert-deftest subr-tests--buffer-command ()
+  (let ((program (executable-find "sleep"))
+        (timeout "10") proc)
+    (with-temp-buffer
+      (should-not (buffer-command))
+      (when program
+        (setq proc
+              (start-process "sleep" (current-buffer) program timeout))
+        (set-process-query-on-exit-flag proc nil)
+        (should (equal (buffer-command) (list program timeout)))))))
+
 (provide 'subr-tests)
 ;;; subr-tests.el ends here
-- 
2.11.0

--8<-----------------------------cut here---------------end--------------->8---

In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-04-25
Repository revision: 5b0fdefb4ca54b0d3dac3047ac1e4b380beb6ba7