unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* grep /dev/null
@ 2005-02-03  5:20 Karl Chen
  2005-02-07 19:36 ` Kevin Rodgers
  0 siblings, 1 reply; 6+ messages in thread
From: Karl Chen @ 2005-02-03  5:20 UTC (permalink / raw



I often when using `grep' type a regexp but forget to type a file
glob.  This leads to slightly annoying behavior: it sits waiting
for input on stdin that never arrives.  Once you realize that it's
not searching you have to kill it manually.

I think it would be useful if such grep invocations terminate
immediately.  One easy way would be to always append " /dev/null
(i.e. grep-use-null-device) or " </dev/null".  In fact, it might
be a good idea to add an optional flag to start-process so that
`compilation-start' can reliably pipe from null by default.


-- 
Karl 2005-02-02 21:11

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: grep /dev/null
  2005-02-03  5:20 grep /dev/null Karl Chen
@ 2005-02-07 19:36 ` Kevin Rodgers
  2005-02-07 21:38   ` Andreas Schwab
  2005-02-09  8:10   ` Richard Stallman
  0 siblings, 2 replies; 6+ messages in thread
From: Kevin Rodgers @ 2005-02-07 19:36 UTC (permalink / raw


Karl Chen wrote:
 > I think it would be useful if such grep invocations terminate
 > immediately.  One easy way would be to always append " /dev/null
 > (i.e. grep-use-null-device) or " </dev/null".  In fact, it might
 > be a good idea to add an optional flag to start-process so that
 > `compilation-start' can reliably pipe from null by default.

I don't understand: `M-x grep' does append null-device to the command
line (unless it's been set to nil).

With respect to compile, I posted a patch back in October 1996 that
defines a new variable (compile-disable-input) and sends an EOF to the
compilation process if it is non-nil (which it is, by default).  I also
posted a compilation-mode-hook function (compile-enable-input) that
allows the user to run compilations that require input by emulating
comint-mode in the *compilation* buffer.

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: grep /dev/null
  2005-02-07 19:36 ` Kevin Rodgers
@ 2005-02-07 21:38   ` Andreas Schwab
  2005-02-09  8:10   ` Richard Stallman
  1 sibling, 0 replies; 6+ messages in thread
From: Andreas Schwab @ 2005-02-07 21:38 UTC (permalink / raw
  Cc: emacs-devel

Kevin Rodgers <ihs_4664@yahoo.com> writes:

> Karl Chen wrote:
>> I think it would be useful if such grep invocations terminate
>> immediately.  One easy way would be to always append " /dev/null
>> (i.e. grep-use-null-device) or " </dev/null".  In fact, it might
>> be a good idea to add an optional flag to start-process so that
>> `compilation-start' can reliably pipe from null by default.
>
> I don't understand: `M-x grep' does append null-device to the command
> line (unless it's been set to nil).

Unless grep understands the -H option.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: grep /dev/null
  2005-02-07 19:36 ` Kevin Rodgers
  2005-02-07 21:38   ` Andreas Schwab
@ 2005-02-09  8:10   ` Richard Stallman
  2005-02-09 17:06     ` Kevin Rodgers
  1 sibling, 1 reply; 6+ messages in thread
From: Richard Stallman @ 2005-02-09  8:10 UTC (permalink / raw
  Cc: emacs-devel

    With respect to compile, I posted a patch back in October 1996 that
    defines a new variable (compile-disable-input) and sends an EOF to the
    compilation process if it is non-nil (which it is, by default).  I also
    posted a compilation-mode-hook function (compile-enable-input) that
    allows the user to run compilations that require input by emulating
    comint-mode in the *compilation* buffer.

Could you adapt these to the current version of compile.el?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: grep /dev/null
  2005-02-09  8:10   ` Richard Stallman
@ 2005-02-09 17:06     ` Kevin Rodgers
  2005-02-10 18:41       ` Richard Stallman
  0 siblings, 1 reply; 6+ messages in thread
From: Kevin Rodgers @ 2005-02-09 17:06 UTC (permalink / raw


Richard Stallman wrote:
 >     With respect to compile, I posted a patch back in October 1996 that
 >     defines a new variable (compile-disable-input) and sends an EOF 
to the
 >     compilation process if it is non-nil (which it is, by default). 
I also
 >     posted a compilation-mode-hook function (compile-enable-input) that
 >     allows the user to run compilations that require input by emulating
 >     comint-mode in the *compilation* buffer.
 >
 > Could you adapt these to the current version of compile.el?

Sure, here's the first part:


2005-02-09  Kevin Rodgers  <ihs_4664@yahoo.com>

	* progmodes/compile.el (compilation-disable-input): New option.
	(compilation-start): If it's non-nil, send an EOF to the process.


*** compile.el~	Wed Feb  9 09:41:47 2005
--- compile.el	Wed Feb  9 09:56:59 2005
***************
*** 860,865 ****
--- 860,873 ----
       (compilation-start command nil name-function highlight-regexp)))
   (make-obsolete 'compile-internal 'compilation-start)

+ (defcustom compilation-disable-input t
+   "*If non-nil, send end-of-file as compilation process input.
+ This only affects platforms that support asynchronous processes (see
+ start-process); synchronous compilation processes never accept input."
+   :type 'boolean
+   :group 'compilation
+   :version "22.1")
+
   (defun compilation-start (command &optional mode name-function 
highlight-regexp)
     "Run compilation command COMMAND (low level interface).
   If COMMAND starts with a cd command, that becomes the 
`default-directory'.
***************
*** 974,979 ****
--- 982,989 ----
   						       outbuf command))))
   	      ;; Make the buffer's mode line show process state.
   	      (setq mode-line-process '(":%s"))
+ 	      (when compilation-disable-input
+                 (process-send-eof proc))
   	      (set-process-sentinel proc 'compilation-sentinel)
   	      (set-process-filter proc 'compilation-filter)
   	      (set-marker (process-mark proc) (point) outbuf)

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: grep /dev/null
  2005-02-09 17:06     ` Kevin Rodgers
@ 2005-02-10 18:41       ` Richard Stallman
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Stallman @ 2005-02-10 18:41 UTC (permalink / raw
  Cc: emacs-devel

This change looks reasonable to me.  Does anyone see a problem with it?

    2005-02-09  Kevin Rodgers  <ihs_4664@yahoo.com>

	    * progmodes/compile.el (compilation-disable-input): New option.
	    (compilation-start): If it's non-nil, send an EOF to the process.

However, the code in compilation-start should test the argument COMINT.

This led me to note something confusing in the doc string of
compilation-start.


      "Compile the program including the current buffer.  Default: run `make'.
    Runs COMMAND, a shell command, in a separate process asynchronously
    with output going to the buffer `*compilation*'.

    If optional second arg COMINT is t the buffer will be in Comint mode with
    `compilation-shell-minor-mode'.

    You can then use the command \\[next-error] to find the next error message
    and move to the source code that caused it.


The third paragraph appears to relate only to the case where COMINT is t.
But I think it actually applies regardless of the value of COMINT.
Am I missing something?

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-02-10 18:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-03  5:20 grep /dev/null Karl Chen
2005-02-07 19:36 ` Kevin Rodgers
2005-02-07 21:38   ` Andreas Schwab
2005-02-09  8:10   ` Richard Stallman
2005-02-09 17:06     ` Kevin Rodgers
2005-02-10 18:41       ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).