Skip to content

ChemicalXandco/openscad-language-server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

openscad-language-server

openscad-language-server is an LSP (Language Server Protocol) server for OpenSCAD. It enables IDE-style features for OpenSCAD code in any editor for which an LSP client is available—i.e., most major modern text editors.

Status: Pretty basic by IDE standards, but functional and well beyond what the built-in OpenSCAD editor provides. Tested primarily with lsp-mode on Emacs on Linux.

Features

  • context-aware completion
  • insertion of useful snippets upon completion
  • live diagnostic messages for syntax errors
  • function/module signatures on hover
  • handling of include/use (of both local and library files)
  • reasonable robustness in the presence of ill-formed input files

Installation

openscad-language-server is written in Rust and does not depend on OpenSCAD. Currently, in order to use it, you need to have a Rust toolchain installed.

To install the server from crates.io (puts the binary into ~/.cargo/bin/openscad-language-server):

cargo install openscad-language-server

To build directly from the repository (puts the binary into target/release/openscad-language-server in the clone):

git clone https://github.com/dzhu/openscad-language-server
cd openscad-language-server
cargo build --release

Usage

Consult the documentation for your editor and its LSP client to configure them to use the server binary for OpenSCAD files. The server communicates over standard input/output.

Acknowledgments

Parsing of OpenSCAD code is handled by tree-sitter and tree-sitter-openscad. Communicating over LSP is handled by lsp-server. Having those crates handling all the dirty details of interacting with the outside world has made it possible to get started on this project quite quickly and stay focused on the interesting parts in the middle.

Related work

About

A Language Server Protocol server for OpenSCAD

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 91.1%
  • OpenSCAD 7.5%
  • Makefile 1.4%