A LSP (Language Server Protocol) server for OpenSCAD.
inspired by dzhu/openscad-language-server
Tested with VSCode on Mac and Windows. [vscode extension]
Tested with lsp-mode on Emacs on Linux by @Lenbok.
- builtin function/module documents
- code and path auto-completion
- jump to definition
- code snippets
- function/module signatures on hover
- document symbols
- formatter, utilizing clang-format, you need install it yourself, it is not built-in.
- variable / module renaming
- hover and suggestion documentation, read from comments before the function/module.
IDE | Plugin | Note |
---|---|---|
Neovim | mason.nvim | Only tested on Mac and Linux |
Neovim | nvim-lspconfig | Only tested on Mac and Linux |
VS Code | openscad-language-support | Only tested on Mac and Windows |
openscad-LSP is written in Rust, in order to use it, you need to install Rust toolchain.
cargo install openscad-lsp
cd openscad-LSP
cargo build --release
The server communicates over TCP socket (127.0.0.1:3245).
USAGE:
openscad-lsp [OPTIONS]
OPTIONS:
--builtin <BUILTIN> external builtin functions file path, if set, the built-in
builtin functions file will not be used [default: ]
--fmt-exe <FMT_EXE> clang format executable file path [default: clang-format]
--fmt-style <FMT_STYLE> LLVM, GNU, Google, Chromium, Microsoft, Mozilla, WebKit, file
[default: Microsoft]
-h, --help Print help information
--ignore-default exclude default params in auto-completion
--ip <IP> [default: 127.0.0.1]
-p, --port <PORT> [default: 3245]
--stdio use stdio instead of tcp
-V, --version Print version information
To change the config during running, you can send notification workspace/didChangeConfiguration
// example
{
"settings": {
"openscad": {
"search_paths": "/libs",
"fmt_exe": "/usr/bin/clang-format",
"fmt_style": "file",
"default_param": true
}
}
}