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 and its derivatives
You can install an extension with prebuilt language server binaries from the official VSCode marketplace or the OpenVSX marketplace. Search for "GN Language" in the VSCode's extension window.

JetBrains IDEs (IntelliJ, CLion, Android Studio, etc.)
You can install a plugin with prebuilt language server binaries from the JetBrains marketplace. Search for "GN Language" in the IDE's plugin window.
Emacs
Install the language server with Cargo.
Then set up gn-mode or any syntax highlighting mode for GN, and add the following to your config:
(use-package gn-mode
:ensure t
:mode ("\\.gn\\'" "\\.gni\\'")
:hook (gn-mode . eglot-ensure)
:config
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs '(gn-mode . ("gn-language-server")))))
Other Editors/IDEs
Install the language server with Cargo.
Then follow editor-specific instructions to install the 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
VSCode extension
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
For Rust releases on crates.io, we use 1.<even>.x-prerelease for pre-releases.
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.