Godot Shader Language Server

External editor support for .gdshader
files.
[!WARNING]
π§ Early Work in Progress
This project is in its infancy and currently only supports some basic keyword
completion. Feel free to β the repo to track progress and signal to me that
there is interest!
Godot's shader language is powerful, but editing .gdshader
files outside the
Godot editor is painful. This project aims to bring proper language tooling
(autocomplete, hover, references, etc.) to editors like Neovim and VSCode.
π¦ Install
Neovim
-
Install from source:
go install github.com/armsnyder/gdshader-language-server@latest
-
Create a ~/.config/nvim/after/ftplugin/gdshader.lua
file with the following
content, adjusting the path to the gdshader-language-server
binary if
necessary:
vim.lsp.start({
name = "gdshader",
cmd = { vim.fs.expand('~/go/bin/gdshader-language-server') },
capabilities = vim.lsp.protocol.make_client_capabilities(),
})
VSCode
Coming soon? Contributions welcome!
Roadmap
Planned features:
- Basic keyword completion
- Basic shader-type-dependent global built-in completion
(
VERTEX
, NORMAL
, etc.)
- More advanced completion (functions, variables, etc.)
- Go to definition
- Find references
- Formatting
- Hover (show documentation)
- Signature help
- VSCode wrapper extension
π€ Contributing
I love to see issues and pull requests! Just note that this is a side project
for me, and I cannot promise to respond quickly. I will generally accept pull
requests which are relevant to the project goals, are tested, and follow
existing code conventions.
π Code structure
.
βββ main.go # Entry point
βββ internal
βββ app # Main application logic
βββ ast # .gdshader file parser library (application agnostic)
βββ lsp # LSP server library (application agnostic)
βββ testutil # Test utilities for all packages
License
MIT