# Extension | clice
a powerful and modern C++ language server

Skip to content

# Extension ​

This section covers development and release workflows for the editor extensions (VSCode / Neovim / Zed).

## VSCode ​

The VSCode extension uses the Node/PNPM/VSCE toolchain. Work inside the pixi `node` environment for consistent versions.

shell

    # prepare environment (install pixi first)
    pixi shell -e node

    # install deps (uses pnpm-lock)
    pixi run install-vscode

    # package the extension; outputs editors/vscode/*.vsix
    pixi run build-vscode

Publish to the VSCode Marketplace (`VSCE_PAT` env var required):

shell

    pixi run publish-vscode

TIP

If clice is already built locally, set `clice.executable` in VSCode settings to point the extension to your custom binary.

Develop and debug:

1. `pixi shell -e node`
2. In `editors/vscode`, run `pnpm run watch` for incremental builds
3. In VSCode, use the “Run Extension/Launch Extension” configs, or run `code --extensionDevelopmentPath=$(pwd)/editors/vscode`

Common scripts (inside `pixi shell -e node`):

bash

    pnpm run package # same as pixi run build-vscode
    pnpm run publish # same as pixi run publish-vscode

If you skip pixi, install node.js >= 20 and pnpm yourself, then in `editors/vscode` run:

bash

    pnpm install
    pnpm run package

## Neovim ​

The Neovim extension lives in `editors/nvim` and is written in Lua. It is still evolving.

- Add the repo path to `runtimepath`, e.g. `set rtp+=/path/to/clice/editors/nvim`
- Or create a local symlink: `~/.config/nvim/pack/clice/start/clice` -> `<repo>/editors/nvim`
- Ensure the `clice` executable is discoverable in `$PATH`

Dev tips: the codebase is small—load it directly in Neovim and watch `:messages`/LSP logs; format with `stylua` (config included).

## Zed ​

The Zed extension lives in `editors/zed` and uses Rust plus `zed_extension_api`.

Suggested local verification:

bash

    cd editors/zed
    cargo build --release

Then load the local extension per Zed's official guide (Zed CLI required). Make sure `clice` is on `PATH` before launching. Follow the Zed extension publishing flow when releasing.