From: Miles Bader Date: Tue, 24 Jul 2007 01:25:28 +0000 (+0000) Subject: Merge from emacs--devo--0 X-Git-Tag: emacs-pretest-23.0.90~11236^2~65 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=492d9f3e3ccd2b640958e840caa451e9e04e86db;p=emacs.git Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 814-823) - Update from CVS - Merge from emacs--rel--22 * emacs--rel--22 (patch 59-69) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 237-238) - Update from CVS Revision: emacs@sv.gnu.org/emacs--multi-tty--0--patch-26 --- 492d9f3e3ccd2b640958e840caa451e9e04e86db diff --cc lisp/bindings.el index 27d27946122,93a28e9cf20..df435ed532f --- a/lisp/bindings.el +++ b/lisp/bindings.el @@@ -292,8 -302,8 +308,9 @@@ Keymap to display on minor modes." "%e" (propertize "-" 'help-echo help-echo) 'mode-line-mule-info + 'mode-line-client 'mode-line-modified + 'mode-line-remote 'mode-line-frame-identification 'mode-line-buffer-identification (propertize " " 'help-echo help-echo) diff --cc lisp/term/xterm.el index 9cc4c6b45d6,5d26b4abd34..3308b50a588 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@@ -396,12 -394,43 +396,42 @@@ ;; Use inheritance to let the main keymap override those defaults. ;; This way we don't override terminfo-derived settings or settings ;; made in the .emacs file. - (set-keymap-parent map (keymap-parent function-key-map)) - (set-keymap-parent function-key-map map)) + (set-keymap-parent map (keymap-parent local-function-key-map)) + (set-keymap-parent local-function-key-map map))) - ;; Do it! (xterm-register-default-colors) ;; This recomputes all the default faces given the colors we've just set up. - (tty-set-up-initial-frame-faces)) + (tty-set-up-initial-frame-faces) + + ;; Try to turn on the modifyOtherKeys feature on modern xterms. + ;; When it is turned on much more key bindings work: things like + ;; C-. C-, etc. + ;; To do that we need to find out if the current terminal supports + ;; modifyOtherKeys. At this time only xterm does. + (let ((coding-system-for-read 'binary) + (chr nil) + (str nil)) + ;; Try to find out the type of terminal by sending a "Secondary + ;; Device Attributes (DA)" query. + (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)) + (setq str (concat str (string chr)))) + (when (string-match ">0;\\([0-9]+\\);0" str) + ;; NUMBER2 is the xterm version number, look for something + ;; greater than 216, the version when modifyOtherKeys was + ;; introduced. + (when (>= (string-to-number + (substring str (match-beginning 1) (match-end 1))) 216) + ;; Make sure that the modifyOtherKeys state is restored when + ;; 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) + (xterm-turn-on-modify-other-keys)))))))) ;; Set up colors, for those versions of xterm that support it. (defvar xterm-standard-colors