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

Previous Next

Package: emacs;

Reported by: Tino Calancha <tino.calancha <at> gmail.com>

Date: Tue, 25 Apr 2017 08:16:02 UTC

Severity: wishlist

Found in version 26.0.50

Done: Tino Calancha <tino.calancha <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 26649 in the body.
You can then email your comments to 26649 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#26649; Package emacs. (Tue, 25 Apr 2017 08:16:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tino Calancha <tino.calancha <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 25 Apr 2017 08:16:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tino Calancha <tino.calancha <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50;
 buffer-command: Return the cmd that started a process in buffer
Date: Tue, 25 Apr 2017 17:15:26 +0900
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 <tino.calancha <at> gmail.com>
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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26649; Package emacs. (Wed, 26 Apr 2017 10:05:01 GMT) Full text and rfc822 format available.

Message #8 received at 26649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Tino Calancha <tino.calancha <at> gmail.com>
Cc: 26649 <at> debbugs.gnu.org
Subject: Re: bug#26649: 26.0.50;
 buffer-command: Return the cmd that started a process in buffer
Date: Wed, 26 Apr 2017 13:03:36 +0300
> From: Tino Calancha <tino.calancha <at> gmail.com>
> Date: Tue, 25 Apr 2017 17:15:26 +0900
> 
> 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?

I don't have an opinion on this, perhaps others will offer theirs.  I
do have a few comments:

> Subject: [PATCH] buffer-command: Return the cmd that started a process in
>  buffer                          ^^^^^^

Not "return", "display".

> * lisp/simple.el (buffer-command): Return command executed to
> start a process in BUFFER (Bug#26649).

Likewise.  Also, we generally use just "new command" in these cases.

> * doc/lispref/processes.texi (Process Information): Document new command.

It is better to mention the name of the command.

> +@deffn Command buffer-command &optional buffer

I think it would be better to have the command's name start with
"process-", so something like process-command-in-buffer.

> +This command calls @code{process-command} on the process associated
> +with @var{buffer}.

This describes the implementation; it should instead describe the
effect of the command.

> +If @var{buffer} is not associated with a running process, then returns
> +@code{nil}.

The value returned by a command is not interesting, you should
describe the effect of invoking this command in a buffer that has n o
associated process.

> +(defun buffer-command (&optional buffer)
> +  "Return the command that was executed to start the process in BUFFER.

Same comment here: describe the effect, not the return value.  If the
returned value is important for non-interactive invocations, it should
be described in addition to the effect of an interactive invocation.

> +Buffer defaults to the current buffer.
   ^^^^^^
BUFFER

> +    (error "Not a living buffer '%S'" buffer))

"Not a live buffer '%S'"

> +    (cond ((null cmd)
> +	       (message "No process in buffer '%s'" (buffer-name buf))

It is better to say something like

  Buffer '%s' is not associated with any process

Btw, why %s here and %S in the error message?

> +          (t
> +           (message "%s" (mapconcat #'identity cmd " "))

What will this produce if some of the command-line arguments include
embedded whitespace?

> +(ert-deftest subr-tests--buffer-command ()
> +  (let ((program (executable-find "sleep"))
> +        (timeout "10") proc)

Instead of bypassing the test where 'sleep' doesn't exist, how about
if you use the Emacs executable instead?  That will always exist.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26649; Package emacs. (Wed, 26 Apr 2017 22:13:02 GMT) Full text and rfc822 format available.

Message #11 received at 26649 <at> debbugs.gnu.org (full text, mbox):

From: Juri Linkov <juri <at> linkov.net>
To: Tino Calancha <tino.calancha <at> gmail.com>
Cc: 26649 <at> debbugs.gnu.org
Subject: Re: bug#26649: 26.0.50;
 buffer-command: Return the cmd that started a process in buffer
Date: Thu, 27 Apr 2017 01:09:12 +0300
> 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’.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26649; Package emacs. (Thu, 27 Apr 2017 03:23:02 GMT) Full text and rfc822 format available.

Message #14 received at 26649 <at> debbugs.gnu.org (full text, mbox):

From: Tino Calancha <tino.calancha <at> gmail.com>
To: Juri Linkov <juri <at> linkov.net>
Cc: 26649 <at> debbugs.gnu.org
Subject: Re: bug#26649: 26.0.50; buffer-command: Return the cmd that started
 a process in buffer
Date: Thu, 27 Apr 2017 12:22:07 +0900 (JST)
[Message part 1 (text/plain, inline)]

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.

Reply sent to Tino Calancha <tino.calancha <at> gmail.com>:
You have taken responsibility. (Wed, 03 May 2017 08:26:02 GMT) Full text and rfc822 format available.

Notification sent to Tino Calancha <tino.calancha <at> gmail.com>:
bug acknowledged by developer. (Wed, 03 May 2017 08:26:02 GMT) Full text and rfc822 format available.

Message #19 received at 26649-done <at> debbugs.gnu.org (full text, mbox):

From: Tino Calancha <tino.calancha <at> gmail.com>
To: 26649-done <at> debbugs.gnu.org
Subject: Re: bug#26649: 26.0.50;
 buffer-command: Return the cmd that started a process in buffer
Date: Wed, 03 May 2017 17:25:47 +0900
Tino Calancha <tino.calancha <at> gmail.com> 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.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 31 May 2017 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 8 years and 23 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.