From: Chong Yidong Date: Wed, 20 Jun 2012 16:21:57 +0000 (-0400) Subject: term.el (term-send-raw-meta): Make C-M- keys work (Bug#8172). X-Git-Tag: emacs-24.2.90~1199^2~418 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=297a8f1ddb946903b097fa3bbfa070fcb4a970da;p=emacs.git term.el (term-send-raw-meta): Make C-M- keys work (Bug#8172). -------------- This lime and the following will be ignored -------------- modified: lisp/ChangeLog lisp/term.el --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 882754ecf65..d7716f5fa1a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-06-20 Chong Yidong + + * term.el (term-send-raw-meta): Make C-M- keys work (Bug#8172). + 2012-06-20 David Röthlisberger (tiny change) * ido.el (ido-switch-buffer, ido-find-file): Fix up doc of C-j diff --git a/lisp/term.el b/lisp/term.el index 0dc843c5df7..7461d7443c8 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1174,21 +1174,21 @@ without any interpretation." (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."