Jedi.el is a Python auto-completion package for Emacs. It aims at helping your Python coding in a non-destructive way. It also helps you to find information about Python objects, such as docstring, function arguments and code location.

+

+

Jedi is simple to install and it just works.

+

+

See screenshots and get the full documentation : http://tkf.github.io/emacs-jedi/released/

+

+

Jedi's official page: http://jedi.jedidjah.ch/en/latest/

+

+

=== Installation ===

+

+

Install Jedi.el via el-get, Marmalade or MELPA (see install for more info) and add this to your Emacs configuration:

+

(add-hook 'python-mode-hook 'jedi:setup)

+

(setq jedi:setup-keys t) ; optional

+

(setq jedi:complete-on-dot t) ; optional

+

+

or call M-x jedi:setup

+

+

= Code Checker =

== Flymake ==

== Flymake ==

Line 21:

Line 57:

To run pep8, pylint, pyflakes and unit-tests (with nose), you can be interested in using [https://github.com/akaihola/flymake-python flymake-python].

To run pep8, pylint, pyflakes and unit-tests (with nose), you can be interested in using [https://github.com/akaihola/flymake-python flymake-python].

−

== Pymacs ==

+

Don't forget about '''pylint''' too.

−

'''{{ModeLink|Pymacs}}''' is an Emacs extension that enables the use of Python alongside with Emacs Lisp.

+

= Indexing sources: ctags, cscope, pycscope =

−

[http://pymacs.progiciels-bpi.ca/index.html Pymacs homepage]

+

== etags, ctags ==

+

'''Etags''' (Exuberant Ctags) generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Etags is a multilingual implementation of '''ctags'''.

+

The primary use for the tags files is looking up class/method/function/constant/etc declaration/definitions. Cscope is more powerful (see below).

+

+

=== usage ===

+

+

Generate the tags with this command at the root of your project:

+

+

find . -name "*.py" -print | etags -

+

+

it creates the file TAGS.

+

+

Note that projects like [[Projectile]] or [[Helm]] provide an integrated use of etags (finding one, re-generating the index, etc).

+

+

== cscope ==

+

+

'''cscope''' is a much more powerful beast. While it operates on more or less the same principle (generating a file of useful metadata) it allows you do some fancier things like find all references to a symbol, see where a function is being invoked, etc (you can find definitions as well).

+

+

It is originally designed for C and C++, but thanks to version 0.3 of '''pycscope''', pythonista can make use of it.

+

+

=== usage ===

+

+

The following commands should get you running:

+

+

apt-get install cscope

+

pip install pycscope

+

# in project base dir:

+

find . -name '*.py' > cscope.files

+

cscope -R

+

+

now install the '''xcscope''' emacs package with [[ELPA]] and require it:

+

(require 'xcscope)

+

+

When done, you can either enable the mode with '''cscope-minor-mode''' (which will add a menu you are free to explore) or call some functions like {{Command|cscope-find-global-definition}}, {{Command|cscope-find-functions-calling-this-function}}, etc.

+

+

= Debugging =

== Ipdb, ipython debugger ==

== Ipdb, ipython debugger ==

Line 51:

Line 122:

A tool to use in a non-emacs terminal would be [https://pypi.python.org/pypi/pdbpp/ pdbpp]

A tool to use in a non-emacs terminal would be [https://pypi.python.org/pypi/pdbpp/ pdbpp]

−

= All-in-one solutions =

+

= Other tools =

−

== emacs-for-python ==

+

== Pymacs ==

−

'''emacs-for-python''' is a bundle of the above modes (and more), and it's an easy way to turn Emacs into a Python IDE.

+

'''{{ModeLink|Pymacs}}''' is an Emacs extension that enables the use of Python alongside with Emacs Lisp.

Auto-Completion

rope & ropemacs

Jedi

Jedi.el is a Python auto-completion package for Emacs. It aims at helping your Python coding in a non-destructive way. It also helps you to find information about Python objects, such as docstring, function arguments and code location.

Code Checker

Flymake

flymake is a on-the-fly syntax checker for Emacs.
We can use it alongside with flyspell.

To run pep8, pylint, pyflakes and unit-tests (with nose), you can be interested in using flymake-python.

Don't forget about pylint too.

Indexing sources: ctags, cscope, pycscope

etags, ctags

Etags (Exuberant Ctags) generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Etags is a multilingual implementation of ctags.

The primary use for the tags files is looking up class/method/function/constant/etc declaration/definitions. Cscope is more powerful (see below).

usage

Generate the tags with this command at the root of your project:

find . -name "*.py" -print | etags -

it creates the file TAGS.

Note that projects like Projectile or Helm provide an integrated use of etags (finding one, re-generating the index, etc).

cscope

cscope is a much more powerful beast. While it operates on more or less the same principle (generating a file of useful metadata) it allows you do some fancier things like find all references to a symbol, see where a function is being invoked, etc (you can find definitions as well).

It is originally designed for C and C++, but thanks to version 0.3 of pycscope, pythonista can make use of it.

When done, you can either enable the mode with cscope-minor-mode (which will add a menu you are free to explore) or call some functions like M-x cscope-find-global-definition, M-x cscope-find-functions-calling-this-function, etc.

Debugging

Ipdb, ipython debugger

If you call ipdb, the execution will stop and give a nice ipython-looking prompt.
Just add `import ipdb; ipdb.set_trace()`