Comments (4)
I'd love to collaborate on LSP Proxy! It's a bit rough around some of the edges but it can be very helpful in understanding all of the messages that are going back and forth between the server and client.
from caramel.
Language Server
[...]
Calling
caramel language-server
should be the equivalent to booting a Merlin daemon, and we'll need a way to create the right .merlin files as well, possibly through a separate command that can be properly guided by a build system (e.g.caramel language-server setup ./path/to/lib/a ./path/to/lib/b ...
)
Besides the fork of Merlin, we'll also need our custom language server supporting the standard MS protocol (and running Merlin behind be scene to do the hard work, as you suggested!)
I suppose we can fork either Erlang LS or OCaml LS, or even Elixir LS which is more mature, and work on that. It's a shame that Erlang LS/Elixir LS don't rely on a shared library implementing a language agnostic LSP.
I guess the biggest challenges will be:
- customizing Merlin with our custom syntax
- supporting interop with at least Elixir and Erlang at the source code level
- handle multiple build systems (rebar3, mix but also, opam/dune?). For that feature, we can eventually use the Build Server Protocol (it is used in Scala LSP for instance)
from caramel.
I've been looking more into the ocaml-lsp
project and I think it makes most sense to vendor since it already comes with Merlin vendored as well.
On top of this, we may get away by submitting a patch to the vscode-ocaml-lsp
plugin that makes the actual lsp binary path configurable so it points to caramel lsp
instead. I can't promise it'll be that easy, but it can't be that hard 🙌🏽
from caramel.
Yes!
We might benefit from looking into that project: https://github.com/axelson/ls_proxy
@axelson recommended it ^^, he's the maintainer of elixir-ls
from caramel.
Related Issues (20)
- Fix windows dependencies cache on CI HOT 1
- Annotating types for function arguments compiles to wrong erlang HOT 1
- Nested let-in expressions compile to wrong erlang HOT 12
- Fun references of operators have the wrong arity and module name HOT 2
- Pipe operator support HOT 4
- Make it clear to see what's different from the standard OCaml lang+runtime HOT 1
- Add a hello world snippet in the frontpage HOT 1
- Make it clear we need Erlang installed
- Idiomatic Elixir wrappers for generated code
- Unclear behavior with externals HOT 1
- Mention caramel parse command in CONTRIBUTING.md
- Support aliases in patterns
- The sources of the following couldn't be obtained, aborting: - erlang.0.0.14
- Generate unique variable names to deal with name shadowing and Erlang bindings escaping expression blocks HOT 2
- Map Literal syntax HOT 2
- Atom/Variant which is just underscore is a Syntax Error HOT 2
- Are parameterized modules/functors available? HOT 3
- Wrong Compiler Version in Release 0.1.1 HOT 1
- Function declarations with explicit type annotations compile to the wrong Erlang code HOT 8
- build with latest ocaml 4.14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from caramel.