elixir-tools / next-ls

The language server for Elixir that just works. Ready for early adopters!
https://www.elixir-tools.dev/next-ls
MIT License
700 stars 40 forks source link

figure out nextension api #57

Open mhanberg opened 1 year ago

mhanberg commented 1 year ago

libraries will be able to provide their own nextensions (next-ls extensions 😎), and they should be able to provide their own hover, completions, code actions, commands, etc.

the api currently enables broadcasting diagnostics (seen in the builtin ElixirExtension and soon to be Credo and Dialyzer extensions), so this needs to be prototyped.

also need to figure out the distribution mechanism for nextensions

also need to figure out an api for when a nextension should activate.

Features

jimsynz commented 1 year ago

We currently have an ElixirSense plugin shipped as part of spark, which provides documentation and completions for spark DSLs. It's very brittle and we have to depend on a specific ref of ElixirSense to ensure that it works.

Open to a discussion of how to do this with next-ls and make it a better experience.

mhanberg commented 1 year ago

Hover is implemented and i am working on completions next, so we should be able to brainstorm some extension APIs soon

i am curious as to how the custom hover stuff you need is used.

i'll take a look at the spark elixir sense plugin to see what's going on 👨‍🔧

biletskyy commented 1 year ago

I'm also interested in brainstorming nextextention api. So count me in for discussion and prototyping.

zachdaniel commented 7 months ago

To show some capabilities of the ElixirLS extension for Spark (used by Ash Framework)

https://github.com/elixir-tools/next-ls/assets/5722339/2e459c07-3729-4426-a563-01c2a0abf760

We use option schemas to autocomplete calls to use Ash.Resource, options list in calls to functions like Ash.create and the DSL itself.