The idea is to implement Language Server Protocol A.K.A LSP.
Why LSP?
LSP creates the opportunity to reduce the m-times-n complexity problem of providing a high level of support for V language in any editor, IDE, or client endpoint to a simpler m-plus-n problem.
For example, instead of the traditional practice of building a V plugin for VSCode, a V plugin for Sublime Text, a V plugin for Vim, a V plugin for Sourcegraph, and so on, for every language, LSP allows language communities to concentrate their efforts on a single, high performing language server that can provide code completion, hover tooltips, jump-to-definition, find-references, and more, while editor and client communities can concentrate on building a single, high performing, intuitive and idiomatic extension that can communicate with any language server to instantly provide deep language support.
We've talked about this in our Discord server and I really want to build one. But in order to build an LSP server is to have a JSON-RPC server (which I'm currently working on), a parser (which is already available through the compiler module), and lots of time to read the LSP specification.
@nedpals we could use the reference implementation of golang version called gopls.
@itsbalamurali Let's continue the discussion here. #465
Would love for there to be a tracking issue for LSP support, #465 seems to only be focused on syntax.
@nedpals #465 discusses a tool for AST classification and syntax highlighting - this is more or less unrelated to this issue, which is about semantic analysis, online analysis and IDE support, etc. - please reopen this issue. (type inference, for one, can't be done with simple AST analysis.)
After I read the discussion on that issue, I think the LSP discussion might have on its own. Apologies! Reopening it now.
Nice to see this work has started! 馃憤
Good IDE support is after all half the fun in a language with good type safety 馃榿
Yes it will be awesome. It's almost done, and it's using the new AST parser.
Most helpful comment
We've talked about this in our Discord server and I really want to build one. But in order to build an LSP server is to have a JSON-RPC server (which I'm currently working on), a parser (which is already available through the
compilermodule), and lots of time to read the LSP specification.