Search code examples
emacsmodekey-bindings

Emacs Python interpreter tweaks


Having minor issue configuring emacs. I am trying to re-assign the M-Tab key binding for anything code completion as its already bound to ubuntu unity "tab/page viewer".

(require 'anything)
(require 'anything-ipython)
(when (require 'anything-show-completion nil t)
  (use-anything-show-completion 'anything-ipython-complete
                            '(length initial-pattern)))

These are the attempts I have had to rebind it. don't particularly want but I know its not taken by anything else.

;;; (define-key anything-mode-map (kbd "<F9>") 'anything)
;;; (define-key anything-show-completion-mode-map (kbd "<F9>") 'anything)
;;; (define-key anything-show-completion-map (kbd "<F9>") 'anything)

Just can't quite get it right.


Solution

  • I think you'll find that you want to use lower-case "f9": (kbd "<f9>") instead of (kbd "<F9>").

    You can check with C-hkF9 to see what Emacs reports that key as being, and use that same string verbatim as the argument to(kbd).

    Also note that you use ESC as a substitute for Meta -- Emacs will translate it. So ESCTAB will do the same as M-TAB. And in the case of TAB, you can also generate that character code with C-i, so M-C-i is another existing binding.

    I looked up the files you mentioned, and anything-ipython.el seems to be the only one which binds M-TAB, and based on its installation instructions you should already have the following code:

    ;;  Install: 
    ;;  =======
    ;;
    ;; Setup anything python:
    ;; Put this file in your load path.
    ;; Add to .emacs:
    ;;
    ;; (require 'anything-ipython)
    ;; (add-hook 'python-mode-hook #'(lambda ()
    ;;                                 (define-key py-mode-map (kbd "M-<tab>") 'anything-ipython-complete)))
    ;; (add-hook 'ipython-shell-hook #'(lambda ()
    ;;                                   (define-key py-mode-map (kbd "M-<tab>") 'anything-ipython-complete)))
    ;;
    

    So I'm guessing that's what you want to be changing.