ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Jedi - Python autocompletion

by srusskih ST2/ST3

awesome Python autocompletion with SublimeText

Details

Installs

  • Total 81K
  • Win 34K
  • OS X 22K
  • Linux 24K
Apr 23 Apr 22 Apr 21 Apr 20 Apr 19 Apr 18 Apr 17 Apr 16 Apr 15 Apr 14 Apr 13 Apr 12 Apr 11 Apr 10 Apr 9 Apr 8 Apr 7 Apr 6 Apr 5 Apr 4 Apr 3 Apr 2 Apr 1 Mar 31 Mar 30 Mar 29 Mar 28 Mar 27 Mar 26 Mar 25 Mar 24 Mar 23 Mar 22 Mar 21 Mar 20 Mar 19 Mar 18 Mar 17 Mar 16 Mar 15 Mar 14 Mar 13 Mar 12 Mar 11 Mar 10 Mar 9
Windows 37 31 46 53 45 53 30 39 27 40 47 33 52 47 38 54 60 56 43 30 78 31 54 35 74 41 54 49 30 28 47 47 51 46 41 38 40 57 46 44 38 54 31 47 45 60
OS X 15 22 23 33 26 31 14 23 23 29 26 25 35 29 19 20 31 17 32 21 23 15 19 23 30 39 35 25 9 11 15 25 22 24 17 14 20 27 30 27 20 16 12 33 24 41
Linux 26 23 31 35 30 23 28 27 21 30 28 32 30 36 16 17 31 23 38 28 33 19 17 42 36 36 32 33 19 21 29 36 50 21 25 22 19 25 24 28 24 24 19 26 27 25

Readme

Source
raw.​githubusercontent.​com

SublimeJEDI

Gitter

SublimeJEDI is a Sublime Text 2 and Sublime Text 3 plugin to the awesome autocomplete library Jedi

Installation

with Git

cd ~/.config/sublime-text-2/Packages/
git clone https://github.com/srusskih/SublimeJEDI.git "Jedi - Python autocompletion"

with Sublime Package Control

  1. Open command pallet (default: ctrl+shift+p)
  2. Type package control install and select command Package Control: Install Package
  3. Type jedi and select “SublimeJEDI”

Additonal info installations you can find here http://wbond.net/sublime_packages/package_control/usage.

Settings

Python interpreter settings

By default SublimeJEDI will use default Python interpreter from the PATH. Also you can set different interpreter for each Sublime Project.

To set project related Python interpreter you have to edit yours project config file. By default project config name is <project name>.sublime-project

You can set Python interpreter, and additional python package directories, using for example the following:

# <project name>.sublime-project
{
    // ...

    "settings": {
        // ...
        "python_interpreter": "$project_path/../../virtual/bin/python",

        "python_package_paths": [
            "$home/.buildout/eggs",
            "$project_path/addons"
            ]
    }
}

When setting paths, Sublime Text Build System Variables and OS environment variables are automatically expanded. Note that using placeholders and substitutions, like in regular Sublime Text Build System paths is not supported.

Autocomplete on DOT

If you want auto-completion on dot, you can define a trigger in the Sublime User or Python preferences:

# User/Preferences.sublime-settings or User/Python.sublime-settings
{
    // ...
    "auto_complete_triggers": [{"selector": "source.python", "characters": "."}],
}

If you want auto-completion ONLY on dot and not while typing, you can set (additionally to the trigger above):

# User/Preferences.sublime-settings or User/Python.sublime-settings
{
    // ...
    "auto_complete_selector": "-",
}

Jedi Goto / Go Definition

Find function / variable / class definition

Shortcuts: CTRL+SHIFT+G

Mouse binding, was disabled, becase it's hard to keep ST default behavior. Now you can bind CTRL + LeftMouseButton by themself in this way:

# User/Default.sublime-mousemap
[{
    "modifiers": ["ctrl"], "button": "button1",
    "command": "sublime_jedi_goto",
    "press_command": "drag_select"
}]

Jedi Find Related Names (“Find Usages”)

Find function / method / variable / class usage, definition.

Shortcut: Alt+Shift+f.

Jedi Show Docstring

Show docstring in output panel.

Exposed command is sublime_jedi_docstring which can be assigned to appropriate shortcut (i.e. F1).

Jedi Show Calltip

Show calltip in status bar.

Exposed command is sublime_jedi_signature.

Function args fill up on completion

SublimeJEDI allow fill up function parameters by default. Thanks to @krya, now you can turn it off. Function parameters completion has 3 different behaviors:

  • insert all function arguments on autocomplete

    # complete result
    func(a, b, c, d=True, e=1, f=None)
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": "all"
    }
    
  • insert only required arguments that don't have default value (default behavior)

    # complete result
    func(a, b, c)
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": "required"
    }
    
  • do not insert any arguments

    # complete result
    func()
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": ""
    }
    

Completion visibility

Sublime Text has a bit strange completion behavior and some times does not adds it's own completion suggestions. Enabling this option to try to bring more comfortable workflow.

  • Suggest only Jedi completion

    # sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "jedi"
    }
    

or

# sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "default"
    }
  • Suggest Jedi completion and Sublime completion in the end of the list

    # sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "list"
    }
    

Please note, if you are using SublimeAllAutocomplete - you should not care about this option.

Logging

To change logging level of the plugin - change logging_level value in settings.

Possible values: “debug”, “info”, “error”

# User/sublime_jedi.sublime-settings
{
    // ...
    "logging_level": "error"
}

Troubleshooting

Auto-complete for import XXXX does not works.

It's a common issue for ST3. All language related settings are stored in Python Package. There is a Completion Rules.tmPreferences file where defined that completion should be canceled after some list of keywords (def, class, import & etc.).

Sublime Jedi plugin already has Completion Rules.tmPreferences file for ST2, but ST3 ignores it.

Some workarounds how to update completion rules:

Copy-Paste
1. Delete your Sublime Text Cache file `Cache/Python/Completion Rules.tmPreferences.cache`
2. Download [Completion Rules.tmPreferences.cache](https://raw.githubusercontent.com/srusskih/SublimeJEDI/master/Completion%20Rules.tmPreferences) to `User/Packages/Python/`
There is package for this…
1. install Package https://packagecontrol.io/packages/PackageResourceViewer
2. cmd+shift+p (Command Pannel)
2.1. type `PackageResourceViewer: Open Resource`
2.2. type `python` and select Python package
2.3. type `Completion Rules.tmPreferences`
2.4. remove `import` from the regexp.
2.5. save

License

MIT