mirror of
https://github.com/google/gn-language-server.git
synced 2025-12-23 12:26:43 +00:00
A language server for GN, and a tiny VSCode extension wrapping the server.
This change updates the build process and runtime logic of the IntelliJ plugin to bundle and use a prebuilt gn-language-server binary. - Modified `intellij-gn/build.gradle.kts` to accept a `gnBinaryPath` property and copy the specified binary into the plugin's `bin` directory during the `prepareSandbox` task. - Updated `GnLspServerFactory.kt` to look for the `gn-language-server` executable within the plugin's installation directory. If found, it is used; otherwise, the plugin falls back to using the executable from the system PATH. - Updated `.github/workflows/ci.yml` to build the IntelliJ plugin as part of the CI pipeline, passing the platform-specific rust binary path to the Gradle build, and uploading the resulting plugin artifacts. |
||
|---|---|---|
| .github/workflows | ||
| docs/screenshots | ||
| intellij-gn | ||
| scripts | ||
| src | ||
| testdata/workspaces | ||
| vscode-gn | ||
| .clippy.toml | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| deny.toml | ||
| LICENSE | ||
| README.md | ||
GN Language Server
A language server for GN, the build configuration language used in Chromium, Fuchsia, and other projects.
Features
- Syntax highlighting
- Syntax error reporting
- Context-aware completion and auto-import
- Hover documentation
- Go to definition
- Finding target references
- Following imports
- Following dependencies
- Quick fix
- Sticky scroll with useful lines
- Code lens
- Outline
- Code folding
- Formatting
- Go to the nearest
BUILD.gn(VSCode only)
Installing
VSCode
You can install from the official VSCode marketplace or the OpenVSX marketplace. Search for "GN Language" in the VSCode's extension window.
Other Editors/IDEs
You can install the language server with Cargo.
cargo install gn-language-server
Gallery
Syntax highlighting
Completion and auto-import
Hover documentation
Go to definition
Following imports
Following dependencies
Quick fix
Sticky scroll with useful lines
Code lens
Outline
Code folding
Building from source
Language server binary
cargo build --release
VSCode extension
cd vscode-gn
npm install
npm run build
npm run package
Versioning scheme
We use the versioning scheme recommended by the VSCode's official documentation. That is:
- Pre-release versions are
1.<odd>.x - Release versions are
1.<even>.x
Architecture
For an overview of the project's architecture, see ARCHITECTURE.md.
Disclaimer
This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.











