Amelio Vazquez-Reina
Amelio Vazquez-Reina

Reputation: 96274

Running Emacs commands from ansi-term in character mode

I would like to have the ability in Emacs to trigger the standard behavior associated with M-x command RET in character mode on an ansi-term buffer.

I actually used to have this functionality, but for some reason it went away in the last couple of days, even though I have not upgraded Emacs (although I may have inadvertently modified my init file)

Also, I have the following hook that used to work (to switch between windows), but it doesn't anymore.

(global-set-key (kbd "M-J") 'windmove-left)          ; move to left window
(global-set-key (kbd "M-L") 'windmove-right)         ; move " " 
(global-set-key (kbd "M-I") 'windmove-up)            ; move " "
(global-set-key (kbd "M-K") 'windmove-down)          ; move " " 

(add-hook 'term-mode-hook
  (lambda()
    (define-key term-raw-map (kbd "M-J") 'windmove-left)  
    (define-key term-raw-map (kbd "M-L") 'windmove-right) 
    (define-key term-raw-map (kbd "M-I") 'windmove-up)    
    (define-key term-raw-map (kbd "M-K") 'windmove-down)  
    (define-key term-raw-map (kbd "M-F") 'toggle-maximize-buffer) 
    ))

Update:

If I evaluate (lookup-key term-raw-map (read-kbd-macro "\C-x")) prior to opening any ansi-term, I get: term-send-raw, but if I evaluate it after I open an ansi-term, I get:

(keymap #^[nil nil keymap 
#^^[3 0 pop-global-mark nil list-buffers term-send-raw list-directory eval-last-sexp find-file nil nil indent-rigidly ...] #^^[1 0 #^^[2 0 
#^^[3 0 pop-global-mark nil list-buffers term-send-raw list-directory eval-last-sexp find-file nil nil indent-rigidly ...] nil nil nil nil nil nil nil nil nil ...] nil nil nil nil nil nil nil nil nil ...] nil nil nil nil nil nil nil ...] (67108912 . text-scale-adjust) (67108925 . text-scale-adjust) (67108909 . text-scale-adjust) (67108907 . text-scale-adjust) (67108896 . pop-global-mark) (C-left . previous-buffer) (left . previous-buffer) (C-right . next-buffer) (right . next-buffer))

Is this the expected behavior?

Upvotes: 4

Views: 1077

Answers (1)

artscan
artscan

Reputation: 2350

I use such setting:

(define-key term-raw-map (kbd "M-x") 'nil)

then M-x works in term-char-mode as usual. If you use global keybinds for some functions, put 'nil for same keybinds in term-raw-map.

Upvotes: 6

Related Questions