Extensions¶
Language support and extensions in Zed.
Extension System¶
Zed uses extensions to provide language support, themes, and additional features. Extensions are written in Rust/WebAssembly for performance.
Installing Extensions¶
Via Command Palette¶
- Press Cmd+Shift+P
- Search "zed: extensions"
- Browse and install
Via Settings¶
Enable specific language support:
Language Support¶
Python¶
Required tools:
Configuration:
{
"languages": {
"Python": {
"language_servers": ["pyright", "ruff"],
"format_on_save": "on",
"formatter": [
{ "code_action": "source.organizeImports.ruff" },
{ "code_action": "source.fixAll.ruff" },
{ "language_server": { "name": "ruff" } }
]
}
},
"lsp": {
"pyright": {
"settings": {
"python.analysis": {
"typeCheckingMode": "basic",
"autoImportCompletions": true
}
}
}
}
}
Rust¶
Rust support is built-in via rust-analyzer:
{
"languages": {
"Rust": {
"format_on_save": "on"
}
},
"lsp": {
"rust-analyzer": {
"initialization_options": {
"checkOnSave": {
"command": "clippy"
},
"cargo": {
"features": "all"
}
}
}
}
}
TypeScript/JavaScript¶
Install tools:
Configuration:
{
"languages": {
"TypeScript": {
"language_servers": ["typescript-language-server", "eslint"],
"format_on_save": "on",
"formatter": {
"external": {
"command": "prettier",
"arguments": ["--stdin-filepath", "{buffer_path}"]
}
}
},
"JavaScript": {
"language_servers": ["typescript-language-server", "eslint"],
"format_on_save": "on"
},
"TSX": {
"language_servers": ["typescript-language-server", "eslint"],
"format_on_save": "on"
},
"JSX": {
"language_servers": ["typescript-language-server", "eslint"],
"format_on_save": "on"
}
}
}
Go¶
Install gopls:
Configuration:
{
"languages": {
"Go": {
"language_servers": ["gopls"],
"format_on_save": "on",
"hard_tabs": true,
"tab_size": 4
}
},
"lsp": {
"gopls": {
"initialization_options": {
"hints": {
"assignVariableTypes": true,
"compositeLiteralFields": true,
"functionTypeParameters": true,
"parameterNames": true
}
}
}
}
}
C/C++¶
Install clangd:
Configuration:
{
"languages": {
"C": {
"language_servers": ["clangd"],
"format_on_save": "on"
},
"C++": {
"language_servers": ["clangd"],
"format_on_save": "on"
}
}
}
JSON¶
{
"languages": {
"JSON": {
"format_on_save": "on",
"tab_size": 2
},
"JSONC": {
"format_on_save": "on",
"tab_size": 2
}
}
}
YAML¶
Markdown¶
{
"languages": {
"Markdown": {
"soft_wrap": "preferred_line_length",
"preferred_line_length": 80,
"format_on_save": "off",
"show_whitespaces": "none"
}
}
}
HTML/CSS¶
{
"languages": {
"HTML": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "prettier",
"arguments": ["--stdin-filepath", "{buffer_path}"]
}
}
},
"CSS": {
"format_on_save": "on"
},
"SCSS": {
"format_on_save": "on"
}
}
}
Docker¶
Shell Scripts¶
Install shellcheck and shfmt:
Configuration:
{
"languages": {
"Shell Script": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "shfmt",
"arguments": ["-i", "2", "-"]
}
}
}
}
}
Lua¶
Install lua-language-server:
Configuration:
{
"languages": {
"Lua": {
"language_servers": ["lua-language-server"],
"format_on_save": "on"
}
},
"lsp": {
"lua-language-server": {
"initialization_options": {
"settings": {
"Lua": {
"diagnostics": {
"globals": ["vim"]
}
}
}
}
}
}
}
Themes¶
Installing Themes¶
Themes are available as extensions:
- Cmd+Shift+P > "extensions"
- Search for theme name
- Install and set in settings
Popular Themes¶
Available themes:
One Dark ProTokyo NightCatppuccin Mocha/Catppuccin LatteGruvbox Dark/Gruvbox LightDraculaGitHub Dark/GitHub LightSolarized Dark/Solarized LightNordRose Pine
Theme Switching¶
Quick switch with Command Palette:
- Cmd+Shift+P
- Search "theme"
- Select theme
Icons¶
Multiple Language Servers¶
Run multiple servers for a language:
Disable Language Server¶
Custom Formatters¶
External Formatter¶
{
"languages": {
"Python": {
"formatter": {
"external": {
"command": "black",
"arguments": ["-"]
}
}
}
}
}
Code Actions as Formatter¶
{
"languages": {
"Python": {
"formatter": [
{ "code_action": "source.organizeImports.ruff" },
{ "language_server": { "name": "ruff" } }
]
}
}
}
Extension Development¶
Zed extensions use WebAssembly. See the Zed Extension API for development details.
Troubleshooting¶
Language Server Not Starting¶
- Verify tool is installed:
which pyright - Check Zed logs: Command Palette > "zed: open log"
- Restart language server: Command Palette > "lsp: restart server"
Formatting Not Working¶
- Verify formatter is installed
- Check
format_on_saveis"on" - Check formatter configuration
- Try manual format: Shift+Alt+F