Open Collective
Open Collective
Loading

Scheme Langserver

COLLECTIVE
Open source
scheme
lisp

We're developing the unique LSP(language server protocol) implementation for/with pure r6rs scheme language(a dialect of lisp language).

Contributors


Scheme Langserver is all of us

Our contributors 1

Thank you for supporting Scheme Langserver.

Connect


Let’s get the ball rolling!

News from Scheme Langserver

Updates on our activities and progress.

Scheme-langserver is awarded with "Excellent Project Award" in China

2023/3/19, scheme-langserver is awarded with "Excellent Project Award" in 2022 China Open Source and Innovation Competition(...
Read more
Published on March 28, 2023 by WANG Zheng

About


Implementing support like autocomplete, goto definition, or documentation on hover is a significant effort for programming. However, comparing to other language like java, python, javascript and c, language server protocol implementation for lisp language are just made in a vacuum.  Though lisp always attracts most brilliant brains in computer science world, Geiser, racket langserver and swish-lint etc., which works are based on repl(Read-Eval-Print Loop) or keyword tokenizer, can not satisfy lisp beginner and giant collaborative project. For example, if a programmer was coding on an unaccomplished project, in which the codes are not fully runnable, Geiser or any others would only complete top-level binding identifiers listed by environment-symbols procedure (for Chez). Which means for local bindings and unaccomplished codes, though making effort for programming is supposed of the importance mostly, Geiser and its counterparts help nothing. Familiar cases occur with goto definition and many other functionalities.

A primary cause is, for scheme and other lisp dialects, their abundant data sets and flexible control structures raise program analysis a big challenge. In fact, scheme even don't have commonly acknowledged project management frameworks and corresponding extension system. As for extensions SS, and SCM, most programmers suppose their codes are writing for a running environment and don't provide any library information. Although with Akku and Snow, SLS and SLD files can base a project on a stable library framework, load, load-program and many other procedures which maintain dynamic library linkages make static code analysis telling less.

This package is a language server protocol implementation helping scheme programming. It provides completion, definition and will provide many other functionalities for SLS and SLD files. These functionalities are established on static code analysis with r6rs standard and some obvious rules for unaccomplished codes. This package itself and related libraries are published or going to be published with Akku, which is a package manager for Scheme.

Our team