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 86K
  • Win 36K
  • OS X 23K
  • Linux 26K
Jun 22 Jun 21 Jun 20 Jun 19 Jun 18 Jun 17 Jun 16 Jun 15 Jun 14 Jun 13 Jun 12 Jun 11 Jun 10 Jun 9 Jun 8 Jun 7 Jun 6 Jun 5 Jun 4 Jun 3 Jun 2 Jun 1 May 31 May 30 May 29 May 28 May 27 May 26 May 25 May 24 May 23 May 22 May 21 May 20 May 19 May 18 May 17 May 16 May 15 May 14 May 13 May 12 May 11 May 10 May 9 May 8
Windows 34 37 38 41 28 28 53 47 44 49 49 19 31 56 45 48 50 34 32 33 41 52 36 38 38 17 32 31 43 57 54 47 33 36 46 52 62 51 44 46 24 50 65 72 52 43
OS X 19 13 19 23 18 20 19 19 33 24 28 15 19 25 22 31 19 22 18 21 19 25 11 19 21 19 17 31 17 34 20 31 8 17 28 22 27 34 28 18 21 34 34 98 20 25
Linux 23 35 24 18 14 13 41 23 29 28 24 17 36 29 33 30 42 28 17 26 27 28 32 29 31 21 14 31 25 24 19 34 27 33 29 38 17 33 47 15 11 39 47 61 24 29

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 Jedi - Python autocompletion

Additional info about to use Sublime Package Control 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": "-",
}

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"
}]

Find Related Names (“Find Usages”)

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

Shortcut: ALT+SHIFT+F.

Show Python Docstring

Show docstring as tooltip.

For ST2: Show docstring in output panel.

Shortcut: CTRL+ALT+D.

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 cancelled after a keyword (def, class, import & etc.).

To solve this issue Sublime Jedi plugin already has a proper Completion Rules.tmPreferences file for ST2, but ST3 ignores it.

Some workarounds how to update completion rules and fix the issue:

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 Panel)
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