About
Create vscode extensions with python.
Installation
Stable version:
pip install vscode-ext
Why use this?
Why should you use this for building VScode extensions when you can use typescript? Here are some reasons:
- vscode-ext builds the package.json for you! No need to switch between your extension.py and package.json in order to add commands. It also handles adding Activity Bars, Keybinds and Views.
- vscode-ext provides a more pythonic way of creating the extension. Python also has some powerful modules that Javascript doesn't and you can include these with vscode-ext
- vscode-ext extensions work perfectly with vsce and you can publish your extensions just like you would publish any other extension.
Example Extension
import vscode
ext = vscode.Extension(name = "testpy", display_name = "Test Py", version = "0.0.1")
@ext.event
def on_activate():
return f"The Extension '{ext.name}' has started"
@ext.command()
def hello_world():
vscode.window.show_info_message(f'Hello World from {ext.name}')
@ext.command()
def ask_question():
res = vscode.window.show_info_message('How are you?', 'Great', 'Meh')
if res == "Great":
vscode.window.show_info_message('Woah nice!!')
elif res == "Meh":
vscode.window.show_info_message('Sorry to hear that :(')
vscode.build(ext)
Tutorial
Step 1
Create a python file inside a folder.
Step 2
Write the code for your extension. For this tutorial we have used the Example Extension
Step 3
Run the python file. It will build the files.
Step 4
Press F5. This will run the extension and open a new vscode window in development mode.
Step 5
Finally, test your command.
- Open the command palette with Ctrl+P in the development window.
- Type
>Hello World
- It should show a popup like this in the bottom right corner
Extensions built using vscode-ext
Here's a list of some extensions built using vscode-ext. If you'd like to include your extension here feel free to create a PR.
Documentation
The docs are coming soon! In the meantime you can look at the examples in order to learn how vscode-ext works and what it offers!