# GN Language Server
[](https://github.com/google/gn-language-server/actions/workflows/ci.yml)
A [language server](https://microsoft.github.io/language-server-protocol/) for
[GN](https://gn.googlesource.com/gn/),
the build configuration language used in Chromium, Fuchsia, and other projects.
## Features
- Syntax highlighting
- Context-aware completion
- Hover documentation
- Go to definition
- Following imports
- Following dependencies
- Sticky scroll with useful lines
- Outline
- Code folding
- Formatting
- Go to the nearest `BUILD.gn` (VSCode only)
## Installing
### VSCode
You can install from the official marketplace. Search for "GN Language" in the
VSCode's extension window.

### Other Editors/IDEs
You can install the language server with [Cargo](https://doc.rust-lang.org/cargo/).
```sh
cargo install gn-language-server
```
## Gallery
### Syntax highlighting

### Completion

### Hover documentation

### Go to definition

### Following imports

### Following dependencies

### Sticky scroll with useful lines

### Outline

### Code folding

## Building from source
### Language server binary
```sh
cargo build --release
```
### VSCode extension
```sh
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](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions).
That is:
- Pre-release versions are `1.<odd>.x`
- Release versions are `1.<even>.x`
## Disclaimer
This is not an officially supported Google product. This project is not
eligible for the [Google Open Source Software Vulnerability Rewards
Program](https://bughunters.google.com/open-source-security).