[ESS] Changing keybindings in the interactive R shell

Vitalie Spinu spinuvit at gmail.com
Fri Oct 31 09:33:48 CET 2014


That makes total sense, of course. How do other Mac users solve this
issue?

  Vitalie

 >>> Lucas Holland on Fri, 31 Oct 2014 09:14:56 +0100 wrote:

 > Hi Vitalie,
 > thanks for your reply. The reason I want to do such a foolish thing is because
 > my keyboard (Mac) doesn’t have a tilde key. By default, Alt-n produces a tilde
 > (this is OS-wide). That’s why I thought it would make sense to stick with that
 > convention for Emacs (so I don’t have a different keybinding for one program)
 > and to bind comint-next-matching-input-from-input to something else other than
 > M-n.

 > What would you do in such a situation?

 > Thanks!

 >> 
 >> 
 >>>>> Lucas Holland on Thu, 30 Oct 2014 11:52:26 +0100 wrote:
 >> 
 >> [...]
 >> 
 >>> (add-hook 'inferior-ess-mode-hook
 >>> '(lambda()
 >>> (local-set-key [\M-n] '(lambda () (interactive) (insert "~")))
 >>> ))
 >> 
 >> This is a wrong syntax. A couple of related points first:
 >> 
 >> - Don't overwrite useful keys like M-n to unrelated commands. If you
 >> go to that path you will have to overwrite them for all other
 >> repls.
 >> 
 >> - How is pressing M-n better than "~"? You are forgoing a handy key for
 >> the sake of a symbol which is already on the keyboard.
 >> 
 >> - M-n is a comint key so you will probably want to hook it into
 >> comint-mode-map to have the same functionality across all repls.
 >> 
 >> So, the right syntax and recommended bindings are:
 >> 
 >> (define-key comint-mode-map [(meta ?p)] 'comint-previous-matching-input-from-input)
 >> (define-key comint-mode-map [(meta ?n)] 'comint-next-matching-input-from-input)
 >> (define-key comint-mode-map [(control meta ?n)] 'comint-next-prompt)
 >> (define-key comint-mode-map [(control meta ?p)] 'comint-previous-prompt)
 >> 
 >> For ess use `inferior-ess-mode-map` instead of `comint-mode-map`.
 >> 
 >> For most people `comint-previous-matching-input-from-input` is one of
 >> the most commonly used commands. You better get used to it also.
 >> 
 >> 
 >> Vitalie



More information about the ESS-help mailing list