emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r108669: term.el (term-send-raw-meta)


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r108669: term.el (term-send-raw-meta): Make C-M-<char> keys work (Bug#8172).
Date: Wed, 20 Jun 2012 12:21:57 -0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 108669
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Wed 2012-06-20 12:21:57 -0400
message:
  term.el (term-send-raw-meta): Make C-M-<char> keys work (Bug#8172).
  -------------- This lime and the following will be ignored --------------
  
  modified:
    lisp/ChangeLog
    lisp/term.el
modified:
  lisp/ChangeLog
  lisp/term.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-06-20 15:51:34 +0000
+++ b/lisp/ChangeLog    2012-06-20 16:21:57 +0000
@@ -1,3 +1,7 @@
+2012-06-20  Chong Yidong  <address@hidden>
+
+       * term.el (term-send-raw-meta): Make C-M-<char> keys work (Bug#8172).
+
 2012-06-20  David Röthlisberger  <address@hidden>  (tiny change)
 
        * ido.el (ido-switch-buffer, ido-find-file): Fix up doc of C-j

=== modified file 'lisp/term.el'
--- a/lisp/term.el      2012-06-20 09:21:06 +0000
+++ b/lisp/term.el      2012-06-20 16:21:57 +0000
@@ -1174,21 +1174,21 @@
 (defun term-send-raw-meta ()
   (interactive)
   (let ((char last-input-event))
-    (when (symbolp last-input-event)
+    (when (symbolp char)
       ;; Convert `return' to C-m, etc.
       (let ((tmp (get char 'event-symbol-elements)))
-       (when tmp
-         (setq char (car tmp)))
-       (when (symbolp char)
-         (setq tmp (get char 'ascii-character))
-         (when tmp
-           (setq char tmp)))))
-    (setq char (event-basic-type char))
-    (term-send-raw-string (if (and (numberp char)
-                                  (> char 127)
-                                  (< char 256))
-                             (make-string 1 char)
-                           (format "\e%c" char)))))
+       (if tmp (setq char (car tmp)))
+       (and (symbolp char)
+            (setq tmp (get char 'ascii-character))
+            (setq char tmp))))
+    (when (numberp char)
+      (let ((base (event-basic-type char))
+           (mods (delq 'meta (event-modifiers char))))
+       (if (memq 'control mods)
+           (setq mods (delq 'shift mods)))
+       (term-send-raw-string
+        (format "\e%c"
+                (event-convert-list (append mods (list base)))))))))
 
 (defun term-mouse-paste (click)
   "Insert the primary selection at the position clicked on."


reply via email to

[Prev in Thread] Current Thread [Next in Thread]