guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: LSP Server for Scheme (and more ...)


From: Ricardo G. Herdt
Subject: Re: LSP Server for Scheme (and more ...)
Date: Sat, 11 Jun 2022 07:27:29 +0000

Thank you all, that's exactly my motivation :) If someone wants to add support to a different editor/IDE, feel free to ask for help or share your ideas with me.

Regards,

Ricardo

Am 11.06.2022 04:07 schrieb Aleix Conchillo Flaqué:
Yes!!! This is amazing and things like this can expose Guile to many
more people. Even though I've been using Emacs for many years, I
believe it's not great for newcomers to hear "if you want a good Guile
environment you can only use Emacs".

Congratulations again, this was such an important missing piece!

Best,

Aleix

On Fri, Jun 10, 2022 at 3:05 PM <r.herdt@posteo.de> wrote:

Hi Guilers!

I want to share a couple of things I have being working on that you
may
find useful.

1) I developed an LSP Server for Scheme. For those that don't know
the
Language Server Protocol (LSP), it is meant for adding programming
language support for IDEs and editors that implement the protocol
(nowadays most of them support it).

For now I am focusing on Guile 3 and CHICKEN 5. The idea is to
write as
much R7RS for common code as possible (like representing documents,

fetching word under cursor etc.) and leave implementation specific
code
to dedicated files. So far I managed to implement auto-completion,
fetch
signature, fetch documentation and jump to definition.

Repo: https://codeberg.org/rgherdt/scheme-lsp-server [1]

2) An LSP server without a client is quite useless, so I'm also
sharing
an emacs-lsp client:

Repo: https://codeberg.org/rgherdt/emacs-lsp-scheme [2]

I will create a PR to melpa for this. Until it is merged, you can
clone
the repo somewhere, 'load' it and follow the instructions in the
README
to activate it.

Usage is based on interaction with the REPL, which is based on
Emacs's
built-in scheme inferior-mode. So you have to load the file (say by

typing C-c C-l on a buffer) in order to get access to symbols
imported
from other modules.

Note: for daily use you probably should stick to Geiser, since its
Guile
support is obviously much more mature. It can still become useful
for
other Schemes though, and is a good way to develop the LSP server
without leaving Emacs ;)

3) The whole idea behind LSP is to improve language support across
multiple IDEs/editors. So I started a proof of concept in VS Code:

https://codeberg.org/rgherdt/vscode-scheme-lsp [3]

Since I don't use VS Code, I don't expect spending much time on it.
I
also don't know how a lispy LSP client should/could look like in VS

Code. If you have ideas, or want to contribute/take over this, feel
free
to contact me. It is not documented nor published yet, but already
works
for the functionality mentioned (there are a couple of command to
launch
a REPL and load files on it). I will investigate how to automate
installation of the LSP server before publishing it and let you
know.

Everything is on an early stage of development, and APIs may
change. I
tested it using following software:
- Guile 3.0.8
- Emacs 27.1 and 28.1
- Debian Bullseye and Ubuntu 18.04

Any questions, suggestions, critics and contributions are more than

welcome. We can also reach me on @libera's #guile, #chicken,
#scheme
channels by the name rgherdt.

Have a nice weekend you all!

Ricardo


Links:
------
[1] https://codeberg.org/rgherdt/scheme-lsp-server
[2] https://codeberg.org/rgherdt/emacs-lsp-scheme
[3] https://codeberg.org/rgherdt/vscode-scheme-lsp



reply via email to

[Prev in Thread] Current Thread [Next in Thread]