IoannisNezis / sparql-language-server

A Sparql formatter and language server, written in Rust
https://sparql.nezis.de/
MIT License
7 stars 0 forks source link

Fichu

A blazingly fast formatter and language server for SPARQL, written in Rust :crab:.

Getting Started

Installation

Fichu is availible on PyPi:

pipx install fichu

Or on crate.io:

cargo install fichu

You can also build it from source:

git clone https://github.com/IoannisNezis/sparql-language-server.git
cd sparql-language-server
cargo build --release

Usage

To run Fichu as formatter run:

fichu format <PATH>

To run Fichu as lanugage server run:

fichu server

This will create a language server listening on stdio.

Capabilities

Formatting

Status: Full support

Formats SPARQL queries to ensure consistent and readable syntax. Customizable options to align with preferred query styles are also implemented.

Diagnostics

Status: Partial support

Currently provides a few basic diagnostics for syntax errors and simple issues in SPARQL queries. Further enhancements are planned to cover a broader range of semantic and logic-related diagnostics.

Currently provided diagnostics:

Planed diagnostics:

Completion

Status: Rudimentary

Basic auto-completion for SPARQL keywords and variables. Currently not context aware.
Future improvements will expand suggestions to include functions, predicates, and custom completions based on query context.

Code Actions

Status: Planed

Future support for code actions, such as quick fixes and refactoring suggestions, to improve productivity and code quality in SPARQL development.

Planed code actions:

Configuration

Fichu can be configured through a fichu.toml or fichu.yml file.

Here is the full default configuration

[format]
align_predicates = false
align_prefixes = false
separate_prolouge = true
capitalize_keywords = true
insert_spaces = true
tab_size = 2
where_new_line = true

use in web

If you want to connect from a web-based-editor, you can use this package as well.
For this purpouse this can be compiled to wasm and is availible on npm:

npm i @ioannisnezis/sparql-language-server

You will have to wrap this in a Web Worker and provide a language server client. There will be more documentation on this in the future...

Demo

In the mean time, check out the demo.