Mercurial > emacs
changeset 83857:110830e39714
(xterm-modify-other-keys-terminal-list): New
variable.
(xterm-turn-on-modify-other-keys): Only turn on modify-other-keys
if the selected frames is in
xterm-modify-other-keys-terminal-list.
(xterm-turn-off-modify-other-keys): Add an optional frame
parameter. Only turn off modify-other-keys if FRAME is in
xterm-modify-other-keys-terminal-list.
(xterm-remove-modify-other-keys): New function.
(terminal-init-xterm): Use it. Deal with delete-frame hook. Add
the selected frame to xterm-modify-other-keys-terminal-list.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Sun, 02 Sep 2007 18:22:41 +0000 |
parents | 0653ddb369cb |
children | 320390e152c5 |
files | lisp/ChangeLog lisp/term/xterm.el |
diffstat | 2 files changed, 42 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Sep 02 17:44:42 2007 +0000 +++ b/lisp/ChangeLog Sun Sep 02 18:22:41 2007 +0000 @@ -1,3 +1,17 @@ +2007-09-02 Dan Nicolaescu <dann@ics.uci.edu> + + * term/xterm.el (xterm-modify-other-keys-terminal-list): New + variable. + (xterm-turn-on-modify-other-keys): Only turn on modify-other-keys + if the selected frames is in + xterm-modify-other-keys-terminal-list. + (xterm-turn-off-modify-other-keys): Add an optional frame + parameter. Only turn off modify-other-keys if FRAME is in + xterm-modify-other-keys-terminal-list. + (xterm-remove-modify-other-keys): New function. + (terminal-init-xterm): Use it. Deal with delete-frame hook. Add + the selected frame to xterm-modify-other-keys-terminal-list. + 2007-09-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * term/x-win.el (x-gtk-stock-map): Map diropen to system-file-manager.
--- a/lisp/term/xterm.el Sun Sep 02 17:44:42 2007 +0000 +++ b/lisp/term/xterm.el Sun Sep 02 18:22:41 2007 +0000 @@ -322,6 +322,9 @@ (define-key xterm-function-map "\e[13~" [f3]) (define-key xterm-function-map "\e[14~" [f4]) +;; List of terminals for which modify-other-keys has been turned on. +(defvar xterm-modify-other-keys-terminal-list nil) + (defun terminal-init-xterm () "Terminal initialization function for xterm." ;; rxvt terminals sometimes set the TERM variable to "xterm", but @@ -430,7 +433,12 @@ ;; suspending, resuming and exiting. (add-hook 'suspend-hook 'xterm-turn-off-modify-other-keys) (add-hook 'suspend-resume-hook 'xterm-turn-on-modify-other-keys) - (add-hook 'kill-emacs-hook 'xterm-turn-off-modify-other-keys) + (add-hook 'kill-emacs-hook 'xterm-remove-modify-other-keys) + (add-hook 'delete-frame-hook 'xterm-remove-modify-other-keys) + ;; Add the selected frame to the list of frames that + ;; need to deal with modify-other-keys. + (push (frame-terminal (selected-frame)) + xterm-modify-other-keys-terminal-list) (xterm-turn-on-modify-other-keys))))))) ;; Set up colors, for those versions of xterm that support it. @@ -551,11 +559,27 @@ (defun xterm-turn-on-modify-other-keys () "Turn on the modifyOtherKeys feature of xterm." - (send-string-to-terminal "\e[>4;1m")) + (let ((frame (selected-frame))) + (when (and (frame-live-p frame) + (memq frame xterm-modify-other-keys-terminal-list)) + (send-string-to-terminal "\e[>4;1m")))) -(defun xterm-turn-off-modify-other-keys () +(defun xterm-turn-off-modify-other-keys (&optional frame) "Turn off the modifyOtherKeys feature of xterm." - (send-string-to-terminal "\e[>4m")) + (setq frame (and frame (selected-frame))) + (when (and (frame-live-p frame) + (memq frame xterm-modify-other-keys-terminal-list)) + (send-string-to-terminal "\e[>4m"))) + +(defun xterm-remove-modify-other-keys (&optional frame) + "Turn off the modifyOtherKeys feature of xterm and remove frame from consideration." + (setq frame (and frame (selected-frame))) + (when (and (frame-live-p frame) + (memq frame xterm-modify-other-keys-terminal-list)) + (setq xterm-modify-other-keys-terminal-list + (delq (frame-terminal frame) + xterm-modify-other-keys-terminal-list)) + (send-string-to-terminal "\e[>4m"))) ;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a ;;; xterm.el ends here