Fix term.el handling of ^Z-sequences spanning chunks

Bash will after each command send ?\032 and the current directory "/tmp"
to inform term.el.  Bash output is buffered in 4096 bytes chunks.  If a
command outputs roughly 4096 bytes then the end of the first chunk will
be "/tm" (Bug#13350).

* lisp/term.el (term-emulate-terminal): Change the regexp to find the
end of the ?\032 sequence to use \n instead of $, the latter can match
end of string as well.

Copyright-paperwork-exempt: yes
This commit is contained in:
Johan Claesson 2016-12-28 12:56:11 -05:00 committed by Noam Postavsky
parent 0392f942c7
commit d88cdad284

View file

@ -2903,12 +2903,12 @@ See `term-prompt-regexp'."
(beep t)) (beep t))
((and (eq char ?\032) ((and (eq char ?\032)
(not handled-ansi-message)) (not handled-ansi-message))
(let ((end (string-match "\r?$" str i))) (let ((end (string-match "\r?\n" str i)))
(if end (if end
(funcall term-command-hook (funcall term-command-hook
(decode-coding-string (decode-coding-string
(prog1 (substring str (1+ i) end) (prog1 (substring str (1+ i) end)
(setq i (match-end 0))) (setq i (1- (match-end 0))))
locale-coding-system)) locale-coding-system))
(setq term-terminal-parameter (substring str i)) (setq term-terminal-parameter (substring str i))
(setq term-terminal-state 4) (setq term-terminal-state 4)