Skip to main content

A formatter for SPARQL queries

Project description

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.

Connect to Neovim

After you installed the language server, add this to your init.lua:

vim.api.nvim_create_autocmd({ 'FileType' }, {
  desc = 'Connect to sparql-language-server',
  pattern = { 'sparql' },
  callback = function()
    vim.lsp.start {
      name = 'fichu',
      cmd = { 'fichu', 'server' },
      root_dir = vim.fn.getcwd(),
      on_attach = function(client, bufnr)
        vim.keymap.set('n', '<leader>f', vim.lsp.buf.format, { buffer = bufnr, desc = 'LSP: ' .. '[F]ormat' })
      end,
    }
  end,
})

Open a .rq file and check that the buffer is attached to th server:

:checkhealth lsp

Configure keymaps in on_attach function.

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:

  • unused namespace (warning): A declared namespace is not used
  • undefined namespace (error): A used namespace is not declared

Planed diagnostics:

  • path compresion possible (info): A declared namespace is not used

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:

  • Consolidate property paths
  • Refactor iris into namespaces
  • Sort Prefixes

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fichu-0.1.14.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fichu-0.1.14-py3-none-manylinux_2_34_x86_64.whl (2.1 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

File details

Details for the file fichu-0.1.14.tar.gz.

File metadata

  • Download URL: fichu-0.1.14.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.1

File hashes

Hashes for fichu-0.1.14.tar.gz
Algorithm Hash digest
SHA256 4c599a22677382db24448922f80ce906fdcca9171a0f8ba406216060c4d2e029
MD5 900c3351b0e8bfcf31caa65ef849e1ca
BLAKE2b-256 be7b44773c35f9843372d09ad93bbbb128c133dfda42baad2b331ff700f6a040

See more details on using hashes here.

File details

Details for the file fichu-0.1.14-py3-none-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for fichu-0.1.14-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 915bf4088e11ab29b3567edd6e14560084ed67a9a6eab25a2c7a9ac4ea88d3aa
MD5 c89f4022980cd910bf86b0508ff6e968
BLAKE2b-256 45d57a01af61a7907bd1aa7166697d21ba5d736d96b28143ad11119a7ca5b3fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page