dot-emacs: Fix `term' key bindings.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 3 Jun 2009 10:01:17 +0000 (11:01 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 3 Jun 2009 10:01:17 +0000 (11:01 +0100)
Now it lets M-left and M-right through to the inferior.  This involves a
fair amount of unpleasantness, unfortunately.

dot-emacs.el

index fea06c9..bec40e1 100644 (file)
@@ -2149,14 +2149,30 @@ strip numbers instead."
            'comint-watch-for-password-prompt))
 
 (defun mdw-term-mode-setup ()
-  (setq term-prompt-regexp "^[^]#$%>»}\n]*[]#$%>»}] *")
+  (setq term-prompt-regexp shell-prompt-pattern)
   (make-local-variable 'mouse-yank-at-point)
   (make-local-variable 'transient-mark-mode)
   (setq mouse-yank-at-point t)
-  (setq transient-mark-mode nil)
   (auto-fill-mode -1)
   (setq tab-width 8))
 
+(defun term-send-meta-right () (interactive) (term-send-raw-string "\e\e[C"))
+(defun term-send-meta-left  () (interactive) (term-send-raw-string "\e\e[D"))
+(defun term-send-ctrl-uscore () (interactive) (term-send-raw-string "\C-_"))
+(defun term-send-meta-meta-something ()
+  (interactive)
+  (term-send-raw-string "\e\e")
+  (term-send-raw))
+(eval-after-load 'term
+  '(progn
+     (define-key term-raw-map [?\e ?\e] nil)
+     (define-key term-raw-map [?\e ?\e t] 'term-send-meta-meta-something)
+     (define-key term-raw-map [?\C-/] 'term-send-ctrl-uscore)
+     (define-key term-raw-map [M-right] 'term-send-meta-right)
+     (define-key term-raw-map [?\e ?\M-O ?C] 'term-send-meta-right)
+     (define-key term-raw-map [M-left] 'term-send-meta-left)
+     (define-key term-raw-map [?\e ?\M-O ?D] 'term-send-meta-left)))
+
 ;;;----- That's all, folks --------------------------------------------------
 
 (provide 'dot-emacs)