unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* LSP Server for Scheme (and more ...)
@ 2022-06-10 22:05 r.herdt
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: r.herdt @ 2022-06-10 22:05 UTC (permalink / raw)
  To: guile-user

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

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

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

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




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-10 22:05 LSP Server for Scheme (and more ...) r.herdt
@ 2022-06-11  2:07 ` Aleix Conchillo Flaqué
  2022-06-11  5:21   ` alex sassmannshausen
                     ` (2 more replies)
  2022-06-11  8:37 ` James Crake-Merani
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 12+ messages in thread
From: Aleix Conchillo Flaqué @ 2022-06-11  2:07 UTC (permalink / raw)
  To: r.herdt; +Cc: guile-user

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
>
> 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
>
> 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
>
> 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
>
>
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
@ 2022-06-11  5:21   ` alex sassmannshausen
  2022-06-11  5:58     ` Jérémy Korwin-Zmijowski
  2022-06-11  7:27   ` Ricardo G. Herdt
  2022-06-11 13:21   ` Luis Felipe
  2 siblings, 1 reply; 12+ messages in thread
From: alex sassmannshausen @ 2022-06-11  5:21 UTC (permalink / raw)
  To: Aleix Conchillo Flaqué; +Cc: r.herdt, guile-user

+1

On Sat, 11 Jun 2022, 04:07 Aleix Conchillo Flaqué, <aconchillo@gmail.com>
wrote:

> 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
> >
> > 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
> >
> > 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
> >
> > 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
> >
> >
> >
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11  5:21   ` alex sassmannshausen
@ 2022-06-11  5:58     ` Jérémy Korwin-Zmijowski
  0 siblings, 0 replies; 12+ messages in thread
From: Jérémy Korwin-Zmijowski @ 2022-06-11  5:58 UTC (permalink / raw)
  To: guile-user, alex sassmannshausen, Aleix Conchillo Flaqué
  Cc: r.herdt, guile-user

+1 haha

Le 11 juin 2022 07:21:11 GMT+02:00, alex sassmannshausen <alex.sassmannshausen@gmail.com> a écrit :
>+1
>
>On Sat, 11 Jun 2022, 04:07 Aleix Conchillo Flaqué, <aconchillo@gmail.com>
>wrote:
>
>> 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
>> >
>> > 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
>> >
>> > 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
>> >
>> > 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
>> >
>> >
>> >
>>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
  2022-06-11  5:21   ` alex sassmannshausen
@ 2022-06-11  7:27   ` Ricardo G. Herdt
  2023-09-27 19:27     ` Christine Lemmer-Webber
  2022-06-11 13:21   ` Luis Felipe
  2 siblings, 1 reply; 12+ messages in thread
From: Ricardo G. Herdt @ 2022-06-11  7:27 UTC (permalink / raw)
  To: guile-user

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



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-10 22:05 LSP Server for Scheme (and more ...) r.herdt
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
@ 2022-06-11  8:37 ` James Crake-Merani
  2022-06-12  2:37 ` Nala Ginrut
  2022-06-16 20:12 ` (
  3 siblings, 0 replies; 12+ messages in thread
From: James Crake-Merani @ 2022-06-11  8:37 UTC (permalink / raw)
  To: r.herdt; +Cc: guile-user

On 22/06/10 10:05pm, 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
> 
> 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
> 
> 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
> 
> 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
> 
> 

Hi,

Thanks for your work on this. As others have made the point, something like this is valuable for making more editors viable for working in Guile. LSP is a great way to do it thanks to its compatibility with most modern editors.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
  2022-06-11  5:21   ` alex sassmannshausen
  2022-06-11  7:27   ` Ricardo G. Herdt
@ 2022-06-11 13:21   ` Luis Felipe
  2022-06-11 16:48     ` Ricardo G. Herdt
  2 siblings, 1 reply; 12+ messages in thread
From: Luis Felipe @ 2022-06-11 13:21 UTC (permalink / raw)
  To: Aleix Conchillo Flaqué; +Cc: r.herdt, guile-user


[-- Attachment #1.1: Type: text/plain, Size: 532 bytes --]

Hi,


On Saturday, June 11th, 2022 at 02:07, Aleix Conchillo Flaqué <aconchillo@gmail.com> wrote:

> 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".

I agree. This is great, Ricardo :)

Personally, I'd like to see Guile support in GNOME Builder some day (https://builder.readthedocs.io/en/latest/plugins/langserv.html).

[-- Attachment #1.2: publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc --]
[-- Type: application/pgp-keys, Size: 1815 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 509 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11 13:21   ` Luis Felipe
@ 2022-06-11 16:48     ` Ricardo G. Herdt
  0 siblings, 0 replies; 12+ messages in thread
From: Ricardo G. Herdt @ 2022-06-11 16:48 UTC (permalink / raw)
  To: guile-user

Hi Luis,

Thanks for pointing this out, I was not aware of GNOME Builder. Since 
I'm a GNOME user myself I'll put that on my TODO list.

Ricardo

Am 11.06.2022 15:21 schrieb Luis Felipe:
> Hi,
> 
> 
> On Saturday, June 11th, 2022 at 02:07, Aleix Conchillo Flaqué
> <aconchillo@gmail.com> wrote:
> 
>> 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".
> 
> I agree. This is great, Ricardo :)
> 
> Personally, I'd like to see Guile support in GNOME Builder some day
> (https://builder.readthedocs.io/en/latest/plugins/langserv.html).



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-10 22:05 LSP Server for Scheme (and more ...) r.herdt
  2022-06-11  2:07 ` Aleix Conchillo Flaqué
  2022-06-11  8:37 ` James Crake-Merani
@ 2022-06-12  2:37 ` Nala Ginrut
  2022-06-16 20:12 ` (
  3 siblings, 0 replies; 12+ messages in thread
From: Nala Ginrut @ 2022-06-12  2:37 UTC (permalink / raw)
  To: r.herdt; +Cc: guile-user

+1 Good project!
Thanks!

On Sat, Jun 11, 2022, 06:05 <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
>
> 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
>
> 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
>
> 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
>
>
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* LSP Server for Scheme (and more ...)
  2022-06-10 22:05 LSP Server for Scheme (and more ...) r.herdt
                   ` (2 preceding siblings ...)
  2022-06-12  2:37 ` Nala Ginrut
@ 2022-06-16 20:12 ` (
  2022-06-17  6:42   ` r.herdt
  3 siblings, 1 reply; 12+ messages in thread
From: ( @ 2022-06-16 20:12 UTC (permalink / raw)
  To: r.herdt, guile-user

Wonderful project! I was thinking about this for a while, and today
whereiseveryone on #guix mentioned the possibility. The idea they had
was to hook up Geiser's backend Guile code to an LSP frontend. Would
that be workable?



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-16 20:12 ` (
@ 2022-06-17  6:42   ` r.herdt
  0 siblings, 0 replies; 12+ messages in thread
From: r.herdt @ 2022-06-17  6:42 UTC (permalink / raw)
  To: guile-user

Am 16.06.2022 22:12 schrieb (:
> Wonderful project! I was thinking about this for a while, and today
> whereiseveryone on #guix mentioned the possibility. The idea they had
> was to hook up Geiser's backend Guile code to an LSP frontend. Would
> that be workable?

Thanks. That could possibly work, actually I took lots of inspiration 
from geiser. One would have to write some sort of adapter code to 
translate between geiser's produced data structures (z.B. s-expr) that 
elisp consumes to LSP's JSON-based data structures. I will give some 
thought to it.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: LSP Server for Scheme (and more ...)
  2022-06-11  7:27   ` Ricardo G. Herdt
@ 2023-09-27 19:27     ` Christine Lemmer-Webber
  0 siblings, 0 replies; 12+ messages in thread
From: Christine Lemmer-Webber @ 2023-09-27 19:27 UTC (permalink / raw)
  To: Ricardo G. Herdt; +Cc: guile-user

I thought I'd re-highlight this thread, given the thread I just greated
and the one on guix-devel. :)

"Ricardo G. Herdt" <r.herdt@posteo.de> writes:

> 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




^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-09-27 19:27 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-10 22:05 LSP Server for Scheme (and more ...) r.herdt
2022-06-11  2:07 ` Aleix Conchillo Flaqué
2022-06-11  5:21   ` alex sassmannshausen
2022-06-11  5:58     ` Jérémy Korwin-Zmijowski
2022-06-11  7:27   ` Ricardo G. Herdt
2023-09-27 19:27     ` Christine Lemmer-Webber
2022-06-11 13:21   ` Luis Felipe
2022-06-11 16:48     ` Ricardo G. Herdt
2022-06-11  8:37 ` James Crake-Merani
2022-06-12  2:37 ` Nala Ginrut
2022-06-16 20:12 ` (
2022-06-17  6:42   ` r.herdt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).