Amelio Vazquez-Reina
Amelio Vazquez-Reina

Reputation: 96264

Can't define key bindings with define-key in Emacs

I am trying to bind a few keys for my M-x ansi-term windows in Emacs 24.1. I tried adding the following to my .emacs file:

(define-key term-raw-map (kbd "M-J") 'windomove-left)

But Emacs complains with:

Debugger entered--Lisp error: (void-variable term-raw-map)
  (define-key term-raw-map (kbd "M-J") (quote windmove-left))

Update: Using the construction provided by dkim I can also switch to term-char-mode. Everything works now:

(add-hook 'term-load-hook
  (lambda () 
    (define-key term-raw-map (kbd "M-J") 'windmove-left)  ; Move to the left window
    (define-key term-raw-map (kbd "M-L") 'windmove-right) ; " " right "
    (define-key term-raw-map (kbd "M-I") 'windmove-up)    ; " " above "
    (define-key term-raw-map (kbd "M-K") 'windmove-down)    ; " " above "
    `term-char-mode
    ))

Upvotes: 0

Views: 440

Answers (1)

dkim
dkim

Reputation: 3970

(add-hook 'term-load-hook
  (lambda () (define-key term-raw-map (kbd "M-J") 'windmove-left)))

From the term-load-hook variable's documentation,

term-load-hook

This hook is run when term is loaded in. This is a good place to put keybindings.

Upvotes: 1

Related Questions