[HN Gopher] Show HN: Multilspy - Cross platform framework to dev...
       ___________________________________________________________________
        
       Show HN: Multilspy - Cross platform framework to develop Language
       Server Clients
        
       multilspy is a cross-platform library that we have built to set up
       and interact with various language servers in a unified and easy
       way. Language servers are tools that perform a variety of static
       analyses on source code and provide useful information such as
       type-directed code completion suggestions, symbol definition
       locations, symbol references, etc., over the Language Server
       Protocol (LSP). multilspy intends to ease the process of using
       language servers, by abstracting the setting up of the language
       servers, performing language-specific configuration and handling
       communication with the server over the json-rpc based protocol,
       while exposing a simple interface to the user.  Since LSP is
       language-agnostic, multilspy can provide the results for static
       analyses of code in different languages over a common interface.
       multilspy is easily extensible to any language that has a Language
       Server and currently supports Java, Rust, C# and Python and we aim
       to support more language servers.  Some of the analyses results
       that multilspy can provide are:  Finding the definition of a
       function or a class (textDocument/definition) Finding the callers
       of a function or the instantiations of a class
       (textDocument/references) Providing type-based dereference
       completions (textDocument/completion) Getting information displayed
       when hovering over symbols, like method signature
       (textDocument/hover) Getting list/tree of all symbols defined in a
       given file, along with symbol type like class, method, etc.
       (textDocument/documentSymbol)
        
       Author : LakshyAAAgrawal
       Score  : 36 points
       Date   : 2024-05-11 06:26 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | zachallaun wrote:
       | Neat!
       | 
       | As someone who has contributed to a language server, I've wanted
       | a language/editor agnostic way to interact with it, primarily for
       | the purposes of black-box testing. I wonder if this could be
       | useful for that?
       | 
       | What's the process for adding support for a new language?
        
       | oDot wrote:
       | That's pretty cool.
       | 
       | I'm the author of vleam[0], which enables Gleam usage in Vue
       | SFCs.
       | 
       | If there's one thing I missed building the LSP is an awesome-
       | list, where I could find stuff like Multispy -- LSP resources
       | weren't easy for me to navigate as a beginner.
       | 
       | [0] https://github.com/vleam/vleam
        
         | antmarti wrote:
         | There is a list of supporting tooling under the official LSP
         | site, but it's not very descriptive:
         | https://microsoft.github.io/language-server-protocol/impleme...
        
           | oDot wrote:
           | That's what I used, indeed not very comprehensive
        
         | mdaniel wrote:
         | It is, of course, hit or miss whether someone chose to add the
         | topic to their repo[1], but I have found that browsing the
         | GitHub topics for things to be a much more up-to-date list than
         | any awesome-list which relies on both submissions _and_ PR
         | approval - like some kind of  "wiki over postal mail"
         | 
         | https://github.com/topics/language-server
         | 
         | https://github.com/topics/lsp
         | 
         | FWIW, GitLab has a similar system
         | https://gitlab.com/explore/projects/topics/language-server
         | 
         | 1: and here's my semi-annual plea to anyone at GitHub to allow
         | submitting repo topics via a PR process, since there are quite
         | a few repos that would really benefit from the discoverability
         | afforded by topics but the repo authors sometimes don't know or
         | can't be bothered, but may very well merge a PR containing
         | (e.g.) .github/topics.yaml
        
           | oDot wrote:
           | That's a great idea, thanks for sharing
        
       | antmarti wrote:
       | I love the idea of a centralized wrapper for spawning various
       | language servers.
       | 
       | As the maintainer of a language server which is primarily used in
       | VSCode, we've relied on community contributions to add support
       | for other editors (NeoVim, Atom, Rider for example). Information
       | about how to do this is spread out, prone to breaking (depending
       | on how well the implementor understood the domain), and also
       | requires the IDE user to follow manual steps in some cases. I
       | don't even know where I would go or who to speak to if (for
       | example) we changed our download URL format, or added new process
       | architectures.
        
       ___________________________________________________________________
       (page generated 2024-05-12 23:02 UTC)