Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language server and integration with an IDE? #722

Open
Kreyren opened this issue Oct 3, 2023 · 6 comments
Open

Language server and integration with an IDE? #722

Kreyren opened this issue Oct 3, 2023 · 6 comments
Labels

Comments

@Kreyren
Copy link

Kreyren commented Oct 3, 2023

Is there any compatible language server that would enable the editor to interact with the chez code or any other recommended configuration/extensions for both emacs and vscodium?

@ufo5260987423
Copy link

ufo5260987423 commented Oct 4, 2023

As the author, I am glad to recommend you with scheme-langserver(https://www.github.com/ufo5260987423/scheme-langserver). Although it's said that language server protocol providing ensurance that implementations can be easily embedded in ides, it doesn't mean there is no barrier.
Currently scheme-langserver only is tested on neovim, and maybe there are other tests on vscode or emacs but I don't know.

If you would like to have a try and publish your experience, it would be very happy for me. If not, according to my schedule, after my current work on new feature(a new type inferencer with dsl), I would develop a vscode plugin so that you may easily use scheme-langserver on vscode.

@Release-Candidate
Copy link

I've made an extension for VS Code and Codium (it's using the REPL instead of a LSP): https://github.com/Release-Candidate/vscode-scheme-repl

For Emacs there is Geiser (-Chez): https://github.com/emacsmirror/geiser

@divyaranjan1905
Copy link

@Kreyren For emacs you don't really need a LSP, you can use geiser that interfaces across different Scheme dialects from Chez, throug Guile to Racket.

@Kreyren
Copy link
Author

Kreyren commented Aug 17, 2024

@divyaranjan1905 for context, the main motivation for the question was to make the language more user-friendly for new developers as i am working on an alternative to GNU Guix built on top of NixOS to try to make the development environment more welcoming and comfortable to use to avoid reactions such as NixOS/nixpkgs#324911 (comment):

Using some language nobody has ever heard of will quadruple the amount of work I need to do, and will also mean nobody else will want to maintain this, out of fear of the all-consuming and (absolutely (non(sensical))) emacs syntax. Lanzaboote and Rust are the way to go here. -- SigmaSquadron (NixOS/nixpkgs#324911 (comment))

As for me learning scheme was a lot of pain and confusion in comparison to something like rust that i learned within a day to try to make the process somewhat less confusing.

So in general emacs is great for scheme, but it seems to lack the language integration in comparison to elisp that i would like to replicate which doesn't seem to be there? Like missing built-in documentation and overall integration with it like e.g. rust does with rustdoc was a major roadblock for me on guile which still doesn't seem to be there? (which is why i want to fork off of chez or steel)

And beyond that lot of the new devs are used to vscode/ium to try to do something comparable to integration of modern languages in it.

@ufo5260987423
Copy link

If you want LSP in Nixos, you may need to know, that scheme-langserver has been released here .

This morning I also update REAMDE.md and anyone could follow it to setup their own IDE.

In addition, if there're anyone who can help making scheme-langserver a vscode plugine, please directly talk with me . I can provide help, but I don't have too much spare time.

@ufo5260987423
Copy link

ufo5260987423 commented Aug 17, 2024

@Kreyren For emacs you don't really need a LSP, you can use geiser that interfaces across different Scheme dialects from Chez, throug Guile to Racket.

Do you really mean Geiser?

Well, for guile, when geiser completes any identifiers, it just dose string-suffix with all valid symbols without any filter. For ChezScheme, it just matches top-level identifiers. Apparently, auto-complete is to help complete programs, not to make trouble.

So, I draw a base line here, all ides, when they're going to help, their auto-complete at least should be able to complete local identifiers. Here, "local" means that additional analysis on identifiers' valid scope makes options head of the complete list. If there're any type information, they could be better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants