How to properly setup Jedi with elpy in emacs?

Srv19 picture Srv19 · Apr 22, 2015 · Viewed 9.6k times · Source

I am using emacs with elpy as mode for working with python code. I have also installed Jedi for, mainly, two things: go to definition functionality it provides and autocompletion.

However, I have run into the following problems with this setup:

  1. Jedi completion is not triggered by key commands. It appears automatically, but sometimes too late for my tastes, and i would prefer to try and invoke it earlier. However, despite there being a Jedi: Key complete option in customisation pages, it does not seem to have any effect. From the other hand, elpy's company-mode's shortcut does that on C-M-i.
  2. When both Jedi and company-mode are on, sometimes two completion lists appear (with same contents; i have also company jedi backend installed) - but only one of them allows changing selection (completion list from Jedi), but on Enter selection from company is used. This is not usable.

Is there any way to setup things so that i will have autocompletion from a single source with jedi backend and jedi's go to definition?

This is how i currently setup jedi in my init.el:

(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

Answer

Tinker Sun picture Tinker Sun · Apr 29, 2015

According to the document of elpy, you just need to install elpy package. Then use the config below

(elpy-enable)  
(setq elpy-rpc-backend "jedi")  

That's all. You can visit https://github.com/jorgenschaefer/elpy for more information.