changeset 85586:fbdae6f74bf5

(terminal-init-xterm): Experiment with a longer timeout.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 23 Oct 2007 14:24:43 +0000
parents 923d7a3f8eed
children 4e025fb6178b
files lisp/ChangeLog lisp/term/xterm.el
diffstat 2 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Oct 23 08:42:39 2007 +0000
+++ b/lisp/ChangeLog	Tue Oct 23 14:24:43 2007 +0000
@@ -1,3 +1,8 @@
+2007-10-23  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* term/xterm.el (terminal-init-xterm): Experiment with a longer
+	timeout.
+
 2007-10-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* emacs-lisp/advice.el (ad-make-advised-docstring):
--- a/lisp/term/xterm.el	Tue Oct 23 08:42:39 2007 +0000
+++ b/lisp/term/xterm.el	Tue Oct 23 14:24:43 2007 +0000
@@ -480,9 +480,14 @@
       (send-string-to-terminal "\e[>0c")
 
       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
-      (when (equal (read-event nil nil 0.1) ?\e)
-	(when (equal (read-event nil nil 0.1) ?\[)
-	  (while (not (equal (setq chr (read-event nil nil 0.1)) ?c))
+      ;; If the timeout is completely removed for read-event, this
+      ;; might hang for terminals that pretend to be xterm, but don't
+      ;; respond to this escape sequence.  RMS' opinion was to remove
+      ;; it completely.  That might be right, but let's first try to
+      ;; see if by using a longer timeout we get rid of most issues.
+      (when (equal (read-event nil nil 2) ?\e)
+	(when (equal (read-event nil nil 2) ?\[)
+	  (while (not (equal (setq chr (read-event nil nil 2)) ?c))
 	    (setq str (concat str (string chr))))
 	  (when (string-match ">0;\\([0-9]+\\);0" str)
 	    ;; NUMBER2 is the xterm version number, look for something