GNU bug report logs -
#4343
comint-carriage-motion for async-shell-command
Previous Next
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
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/
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.