From 854b22ea18090cc226703c4a828a3fc0bfaa0ccd Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 1 Jul 2014 12:10:02 -0400 Subject: [PATCH] * lisp/xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal) (turn-off-xterm-mouse-tracking-on-terminal): Don't burp if the terminal is suspended. Fixes: debbugs:17857 --- lisp/ChangeLog | 9 +++++++-- lisp/xt-mouse.el | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 776925f28b4..054bef5697d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2014-07-01 Stefan Monnier + + * xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal) + (turn-off-xterm-mouse-tracking-on-terminal): Don't burp if the terminal + is suspended (bug#17857). + 2014-07-01 Michael Albinus * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell): @@ -40,8 +46,7 @@ Don't call c-parse-state when c++-template-syntax-table is active. * progmodes/cc-engine.el (c-guess-continued-construct CASE G) (c-guess-basic-syntax CASE 5D.3): Rearrange so that - c-syntactic-skip-backwards isn't called with the pertinent syntax - table. + c-syntactic-skip-backwards isn't called with the pertinent syntax table. 2014-06-28 Stephen Berman diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index f9e89880dae..e5e77405b02 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -312,7 +312,8 @@ terminals that support it.") "Enable xterm mouse tracking on TERMINAL." (when (and xterm-mouse-mode (eq t (terminal-live-p terminal)) ;; Avoid the initial terminal which is not a termcap device. - ;; FIXME: is there more elegant way to detect the initial terminal? + ;; FIXME: is there more elegant way to detect the initial + ;; terminal? (not (string= (terminal-name terminal) "initial_terminal"))) (unless (terminal-parameter terminal 'xterm-mouse-mode) ;; Simulate selecting a terminal by selecting one of its frames @@ -320,7 +321,13 @@ terminals that support it.") (with-selected-frame (car (frames-on-display-list terminal)) (define-key input-decode-map "\e[M" 'xterm-mouse-translate) (define-key input-decode-map "\e[<" 'xterm-mouse-translate-extended)) - (send-string-to-terminal xterm-mouse-tracking-enable-sequence terminal) + (condition-case err + (send-string-to-terminal xterm-mouse-tracking-enable-sequence + terminal) + ;; FIXME: This should use a dedicated error signal. + (error (if (equal (cadr err) "Terminal is currently suspended") + nil ;The sequence will be sent upon resume. + (signal (car err) (cdr err))))) (push xterm-mouse-tracking-enable-sequence (terminal-parameter nil 'tty-mode-set-strings)) (push xterm-mouse-tracking-disable-sequence @@ -338,7 +345,13 @@ terminals that support it.") ;; command too many times (or to catch an unintended key sequence), than ;; to send it too few times (or to fail to let xterm-mouse events ;; pass by untranslated). - (send-string-to-terminal xterm-mouse-tracking-disable-sequence terminal) + (condition-case err + (send-string-to-terminal xterm-mouse-tracking-disable-sequence + terminal) + ;; FIXME: This should use a dedicated error signal. + (error (if (equal (cadr err) "Terminal is currently suspended") + nil + (signal (car err) (cdr err))))) (setf (terminal-parameter nil 'tty-mode-set-strings) (remq xterm-mouse-tracking-enable-sequence (terminal-parameter nil 'tty-mode-set-strings))) -- 2.39.2