-
Notifications
You must be signed in to change notification settings - Fork 13
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
A Lightweight IDE for SML/NJ #275
Comments
This issue (#275) is a duplicate of issue #270. See the discussion under that issue for more info. This idea comes up periodically (e.g. Eclipse). Sounds good, but the problem is manpower to pursue such a goal. Looking at the Python IDLE documentation, it looks like it might represent a few man-years of work. Taking the existing Python implementation and translating it into SML (modulo the necessary GUI library) would possibly require a lot less work. Any volunteers? |
Just my thoughts: A full IDE is probably overkill. (as a side note) I don't get why millet uses Rust rather than SML. |
These comments parallel my thinking — I just added a comment to issue #275 at GitHub.com/smlnj/smlnj.
Since I plan to be doing a lot of work on the front end (mainly elaboration) of SML/NJ over the next year or two, it would make sense to try to incorporate a LSP interface at the same time. Would you be willing to advise/collaborate on that?
Dave
On Sep 16, 2023, at 11:48 AM, Manfred Bergmann ***@***.***> wrote:
Just my thoughts:
A full IDE is probably overkill.
An IntelliJ plugin might be doable.
As well as an LSP server written in SML. I've done a rudimentary (supporting showing compile errors, completions and documentation) LFE (Lisp Flavoured Erlang) LSP server in two weeks evenings. It's not super complicated when you know the runtime and environment a bit, and can focus on the task.
LSP clients already exist for many editors.
(as a side note) I don't get why millet uses Rust rather than SML.
—
Reply to this email directly, view it on GitHub <#275 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAGXNPIQFWXIKG27GE4NZBTX2XYBRANCNFSM6AAAAAA4ZF76UY>.
You are receiving this because you commented.
David MacQueen
***@***.***
|
Not sure how much time I can dedicate, familiar with lsp, but first time reading through the base protocol or json-rpc that it is based upon. The first two questions I have is There is a comment in the specification, I'll just quote the beginning of the 2nd paragraph.
from the lsp-specification, which makes me wonder what we would want to be done there. i.e. should it use concurrent ml, and if so |
The json lsp protocol is quite simple. I did not use a dedicated json-rpc library but just did the construction and parsing manually. A JSON library is handy though. In most cases you just have a straight request/response model. But in some cases, like diagnostics, those are notifications and can be sent asynchronously from the server to the client, however usually also triggered by a client request. I.e. when opening existing files and you want to send diagnostics. Maybe this gives some inspiration: https://github.com/mdbergmann/lfe-ls |
To jump into this thread, I've been puttering around with LSP stuff for the past year or so. Since version 3.17 of LSP, there has been a machine-readable description of the protocol (the so-called "meta model"). I've built some code for generating the encoder/decoders from the meta model that might be useful. This project just lives in my dropbox right now, but I can clean it up and make it available if someone wants to build on it. |
@JohnReppy Please publish it publicly as a GitHub repo with a (SML/NJ compatible license so others can take a look, people are more likely to be interested in something they can see. (and don't worry too much about cleaning it up.) |
Description
I wonder if anybody contributing design and code for the development of SML/NJ can also consider building a lightweight IDE modelled after the Processing Language IDE or the Python IDLE IDE.
The text was updated successfully, but these errors were encountered: