Skip to content
@coc-plugin

coc-plugin

coc-plugin

Run VS Code extensions in coc.nvim without source forks.
Browse available extensions →


Quick start

:CocInstall coc-vscode-loader
:CocCommand loader.open

Browse, install, and manage extensions through the TUI — or define them in your config:

" .vimrc
let g:coc_loader_global_extensions = ['vscode-pyright', 'vscode-eslint']

How it works

VS Code extensions consist of a thin API client and often a language server (LSP). Instead of patching source code by hand, coc-vscode-loader intercepts VS Code API calls at install time and rewrites them to coc.nvim equivalents. The extension runs unmodified.

The converter pipeline: git clone → AST transforms → LanguageClient injection → npm install → esbuild → register to coc.

5 step generators handle different plugin types (language-client, source, bridge, snippets, mark-unsupported), and 6 AST transforms handle API mapping (import-mapping, class-to-factory, provider-register, enum-offset, language-client, strip-volar).

What works: language servers (completion, diagnostics, formatting, hover, go-to-definition), direct-API plugins, snippets.

Not yet supported: extensions depending on VS Code-specific UI (webviews, panels, custom editors).

Projects

Core

  • coc-vscode-loader — Converter CLI + Plugin TUI. Converts VS Code extensions to coc.nvim plugins at install time, with a Mason-style package manager. Supports binary server download, Go/Rust source compilation, pip packages, and VSIX prebuilt extraction. Daily CI monitors 134 upstream repos for API-breaking changes.
  • coc-vscode-registry — Extension registry + browseable website. Each entry specifies source, plugin type, server kind, conversion steps, and system dependencies. See the live site.

Ported extensions

Converted VS Code extensions maintained under this organization:

Language serverscoc-nix · coc-mlir · coc-meson · coc-bitbake · coc-awk · coc-graphviz · coc-alex · coc-write-good

Utilitiescoc-variables · coc-nerdfont · coc-emoji-shortcodes · coc-license

Adding extensions to the registry

The registry is community-driven. To add a new extension:

  1. Check if the converter can handle it (most LSP-based extensions work out of the box)
  2. Fork coc-vscode-registry, add an entry to registry.json
  3. Run npm run test:smoke to validate the conversion
  4. Open a PR

The registry update checker runs daily — if the upstream extension changes, an automated PR is created with the updated output.

Links

Popular repositories Loading

  1. coc-vscode-loader coc-vscode-loader Public

    Run VS Code extensions seamlessly in coc.nvim

    TypeScript 7

  2. coc-mlir coc-mlir Public

    Forked from llvm/vscode-mlir

    Port vscode-mlir to vim.

    TypeScript 2

  3. coc-bitbake coc-bitbake Public

    Forked from yoctoproject/vscode-bitbake

    Port vscode-bitbake to vim

    TypeScript 2

  4. coc-license coc-license Public

    Add licenses by coc-list

    TypeScript 1

  5. coc-nix coc-nix Public

    Forked from nix-community/vscode-nix-ide

    Port vscode-nix-ide to vim [maintainer: @Freed-Wu]

    TypeScript 1

  6. coc-graphviz coc-graphviz Public

    Forked from joaompinto/vscode-graphviz

    Port vscode-graphviz to vim

    TypeScript 1

Repositories

Showing 10 of 15 repositories

Top languages

Loading…

Most used topics

Loading…