From 230dcbaf2ff0615d72c5d2ca41edb999b6bc1b87 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 14 Jun 2013 14:37:38 -0400 Subject: [PATCH] * term/xterm.el (xterm--query): Stop after first matching handler. (Bug#14615) --- lisp/ChangeLog | 5 +++++ lisp/term/xterm.el | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6e38e3119f..2605247244 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-06-14 Glenn Morris + + * term/xterm.el (xterm--query): + Stop after first matching handler. (Bug#14615) + 2013-06-14 Ivan Kanis Add support for dired in saveplace. diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index 05a129225e..86f4583b98 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -516,6 +516,9 @@ The relevant features are: (terminal-init-xterm-modify-other-keys)))))) (defun xterm--query (query handlers) + "Send QUERY string to the terminal and watch for a response. +HANDLERS is an alist with elements of the form (STRING . FUNCTION). +We run the first FUNCTION whose STRING matches the input events." ;; We used to query synchronously, but the need to use `discard-input' is ;; rather annoying (bug#6758). Maybe we could always use the asynchronous ;; approach, but it's less tested. @@ -544,7 +547,8 @@ The relevant features are: nil)))) (setq i (1+ i))) (if (= i (length (car handler))) - (funcall (cdr handler)) + (progn (setq handlers nil) + (funcall (cdr handler))) (while (> i 0) (push (aref (car handler) (setq i (1- i))) unread-command-events))))))) -- 2.20.1