GNU bug report logs - #4343
comint-carriage-motion for async-shell-command

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> jurta.org>

Date: Fri, 4 Sep 2009 21:25:06 UTC

Severity: normal

Done: Juri Linkov <juri <at> jurta.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (Emacs bug Tracking System)
To: Juri Linkov <juri <at> jurta.org>
Subject: bug#4343: marked as done (comint-carriage-motion for
 async-shell-command)
Date: Thu, 10 Sep 2009 01:05:05 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 10 Sep 2009 03:55:21 +0300
with message-id <87tyzby5xi.fsf <at> mail.jurta.org>
and subject line Re: bug#4343: comint-carriage-motion for async-shell-command
has caused the Emacs bug report #4343,
regarding comint-carriage-motion for async-shell-command
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact help-debbugs <at> gnu.org
immediately.)


-- 
4343: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=4343
Emacs Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Juri Linkov <juri <at> jurta.org>
To: bug-gnu-emacs <at> gnu.org
Subject: comint-carriage-motion for async-shell-command
Date: Sat, 05 Sep 2009 00:02:33 +0300
Often an asynchronous shell command run with M-& produces the output
that looks like garbage when programs use carriage control characters ^M
to display progress with percentages.

Even the `compile' command is better in this regard because its
`compilation-filter' handles carriage motion using the function
`comint-carriage-motion'.

The following patch does the same for asynchronous commands in
`shell-command'.  It seems it was intended to do this anyway because
`*Async Shell Command*' uses `shell-mode'.  But `shell-mode' doesn't set
the filter that processes carriage control characters.  It is the `shell'
command that sets the filter via `comint-exec' before enabling `shell-mode'.
So it's necessary to set the filter explicitly in `shell-command'
after enabling `shell-mode':

Index: lisp/simple.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/simple.el,v
retrieving revision 1.1008
diff -u -r1.1008 simple.el
--- lisp/simple.el	28 Aug 2009 04:21:17 -0000	1.1008
+++ lisp/simple.el	4 Sep 2009 21:02:21 -0000
@@ -2214,7 +2220,11 @@
 		  (setq mode-line-process '(":%s"))
 		  (require 'shell) (shell-mode)
 		  (set-process-sentinel proc 'shell-command-sentinel)
+		  ;; Use the comint filter for proper handling of carriage motion
+		  ;; (see `comint-inhibit-carriage-motion'),.
+		  (set-process-filter proc 'comint-output-filter)
 		  ))
 	    (shell-command-on-region (point) (point) command
 				     output-buffer nil error-buffer)))))))

-- 
Juri Linkov
http://www.jurta.org/emacs/


[Message part 3 (message/rfc822, inline)]
From: Juri Linkov <juri <at> jurta.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 4343-done <at> debbugs.gnu.org
Subject: Re: bug#4343: comint-carriage-motion for async-shell-command
Date: Thu, 10 Sep 2009 03:55:21 +0300
>> Other than setting `comint-output-filter', `comint-exec' also starts
>> a process.  But starting a process is not necessary in `shell-command'
>> that starts it explicitly.
>
> OK, then.
>
>>> And try and move this into a new function `comint-setup-process' which
>>> both compile.el and M-& could then use?
>
>> They can't be merged because `compilation-filter' runs a compile-specific
>> hook `compilation-filter-hook'.
>
> Too bad.  Please install your patch, then.

Done.

-- 
Juri Linkov
http://www.jurta.org/emacs/

This bug report was last modified 15 years and 253 days ago.

Previous Next


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