Contributing
September 18, 2025 · View on GitHub
We welcome your contributions and thank you for working to improve the Gno development experience in VS Code.
This guide will explain the process of setting up your development environment to work on the VS Code Gno extension, as well as the process of sending out your change for review.
Our canonical Git repository is located at https://github.com/gnoverse/vscode-gno.
Before you start coding
If you are interested in fixing a bug or contributing a feature, please file an issue first. Wait for a project maintainer to respond before you spend time coding.
If you wish to work on an existing issue, please add a comment saying so, as someone may already be working on it. A project maintainer may respond with advice on how to get started. If you're not sure which issues are available, search for issues with the help wanted label.
Language Server (gnopls)
Many of the language features like auto-completion, documentation, diagnostics are implemented
by the Gno language server (gnopls).
This extension communicates with gnopls using VS Code LSP client library from language/gnoLanguageServer.ts.
For extending the language features or fixing bugs, please follow gnopls's
contribution guide.
Developing
Setup
-
Install node. Note: make sure that you are using
npm v7or higher. The file format forpackage-lock.json(changed significantly)[https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json#file-format] innpm v7. And install Go 1.21 or newer and Gno if you haven't already. -
Clone the repository, run
npm ci, and open VS Code:git clone https://github.com/gnoverse/vscode-gno cd vscode-gno npm ci code .
Lint
You can run npm run lint on the command-line to check for lint errors in your program. You can also use the ESLint plugin to see errors as you code.
Run
To run the extension with your patch, open the Run view (Shift+Ctrl+D or Shift+Cmd+D), select Launch Extension, and click the Play button (F5).
This will open a new VS Code window with the title [Extension Development Host]. You can then open a folder that contains Gno code and try out your changes.
You can also set breakpoints to debug your change.
If you make subsequent edits in the codebase, you can reload (Ctrl+R or ⌘+R) the [Extension Development Host] instance of VS Code, which will load the new code. The debugger will automatically reattach.
⚠️ The tools/generate.go file automatically updates docs/commands.md and docs/settings.md from the package.json.
So if you add new commands and/or settings to the package.json, remember to run tools/generate.go to update the documentation.
Similarly, if you add tools to the allTools.ts.in file, this will update src/gnoToolsInformation.ts.