All Projects → CXuesong → LanguageServer.NET

CXuesong / LanguageServer.NET

Licence: Apache-2.0 license
A .NET Standard server-side implementation of Language Server Protocol 2.0/3.x infrastructure library.

Programming Languages

C#
18002 projects
typescript
32286 projects

Projects that are alternatives of or similar to LanguageServer.NET

Pylance Release
Documentation and issues for Pylance
Stars: ✭ 782 (+902.56%)
Mutual labels:  language-server, language-server-protocol
Fsautocomplete
F# language server using Language Server Protocol
Stars: ✭ 208 (+166.67%)
Mutual labels:  language-server, language-server-protocol
Vscode Intelephense
PHP intellisense for Visual Studio Code
Stars: ✭ 872 (+1017.95%)
Mutual labels:  language-server, language-server-protocol
Lua Lsp
A Lua language server
Stars: ✭ 219 (+180.77%)
Mutual labels:  language-server, language-server-protocol
Lsp4intellij
This language client library provides language server protocol support for IntelliJ IDEA and other Jetbrains IDEs.
Stars: ✭ 121 (+55.13%)
Mutual labels:  language-server, language-server-protocol
Typescript Language Server
TypeScript & JavaScript Language Server
Stars: ✭ 462 (+492.31%)
Mutual labels:  language-server, language-server-protocol
Intelephense
Intellisense for PHP
Stars: ✭ 212 (+171.79%)
Mutual labels:  language-server, language-server-protocol
Erlang ls
The Erlang Language Server
Stars: ✭ 363 (+365.38%)
Mutual labels:  language-server, language-server-protocol
Nvim Lspconfig
Quickstart configurations for the Nvim LSP client
Stars: ✭ 3,410 (+4271.79%)
Mutual labels:  language-server, language-server-protocol
Glsl Language Server
Language server implementation for GLSL
Stars: ✭ 53 (-32.05%)
Mutual labels:  language-server, language-server-protocol
Elm Language Client Vscode
Improving your Elm experience since 2019
Stars: ✭ 162 (+107.69%)
Mutual labels:  language-server, language-server-protocol
Langserver Swift
A Swift implementation of the open Language Server Protocol.
Stars: ✭ 171 (+119.23%)
Mutual labels:  language-server, language-server-protocol
Monaco Languageclient
NPM module to connect Monaco editor with language servers
Stars: ✭ 419 (+437.18%)
Mutual labels:  language-server, language-server-protocol
Python Language Server
Microsoft Language Server for Python
Stars: ✭ 778 (+897.44%)
Mutual labels:  language-server, language-server-protocol
Powershelleditorservices
A common platform for PowerShell development support in any editor or application!
Stars: ✭ 394 (+405.13%)
Mutual labels:  language-server, language-server-protocol
Php Language Server
PHP Implementation of the VS Code Language Server Protocol 🆚↔🖥
Stars: ✭ 1,019 (+1206.41%)
Mutual labels:  language-server, language-server-protocol
camel-language-server
The Apache Camel LSP server implementation
Stars: ✭ 31 (-60.26%)
Mutual labels:  language-server, language-server-protocol
Elm Language Server
Language server implementation for Elm
Stars: ✭ 298 (+282.05%)
Mutual labels:  language-server, language-server-protocol
Protocol Buffers Language Server
[WIP] Protocol Buffers Language Server
Stars: ✭ 44 (-43.59%)
Mutual labels:  language-server, language-server-protocol
Csharp Language Server Protocol
Language Server Protocol in C#
Stars: ✭ 230 (+194.87%)
Mutual labels:  language-server, language-server-protocol

LanguageServer.NET

NuGet version (CXuesong.LanguageServer.VsCode) Gitter

A .NET server-side implementation of Language Server Protocol infrastructure library for VSCode, and hopefully, might also be used with other IDEs that support Language Server Protocol. It provides necessary data structure used for JSON serialization and JSON RPC calls for LSP 3.6 and up.

The library is now available on NuGet. To install the package, run the following command

# Package Manager Console
Install-Package CXuesong.LanguageServer.VsCode
# dotnet CLI
dotnet add package CXuesong.LanguageServer.VsCode

If you found any missing data structures, please open an issue in this repository.

Based on CXuesong/JsonRpc.Standard, this .NET Standard library intends to provide basic interfaces and data structures so that you can write a language server in C#, build it on .NET Core and, with the help of the client-side code of Microsoft/vscode-languageserver-node, use it in VSCode.

For an actual (WIP) Wikitext language server based on this library, please take a look at CXuesong/MwLanguageServer.

To set up the demo

Screenshot of DemoLanguageServer

Prerequesites

  • .NET Core SDK 3.1
  • (Optionally) Visual Studio 2019
  • yarn (or npm)

Steps

  1. Open DemoLanguageServer in VS, choose Debug profile, and build the project.
    • Alternatively, run dotnet build under DemoLanguageServe folder.
  2. Open Client\VsCode folder in VSCode.
  3. Run yarn install in the terminal.
  4. Press F5 and a new VSCode window (Extension Development Host) should show.
  5. Open a folder in the new VSCode window, and create a new file.
  6. Change the file language to Demo Language
  7. Then your editor will work as shown in the screenshot. Enter .net core in the editor and see what happens.

To debug the server application, you may wish to turn WAIT_FOR_DEBUGGER conditional switch on in DemoLanguageServer/Program.cs. After starting up the Extension Development Host, and activating the language server, you may attach VS Debugger to dotnet process and go on debugging.

You may also set the default value of demoLanguageServer.trace.server to "messages" in package.json to make language client show more debugging information.

Notes

  • Though it's not mentioned in MS's official LSP documentation, by default VsCode uses stdin/stdout as JSON RPC transportation channel; thus it's important you SHOULD NOT read from/write to the console from your own code as long as the connection has been established, to avoid interfering the JSON RPC communication.
  • If you are using the LSP client library from vscode-languageserver-node, other transportation channels, such as named pipe (Windows) or Unix domain socket (Linux/MacOS) is possible via client-side configuration; though you will need to write your own server-side implementation.
  • It's worthwhile to be noted that Unix domain socket has been introduced since Windows 10 Build 17063. However, there is currently no means to set up a Unix domain socket client in Node.JS on Windows. Thus it seems that, up till now, we still cannot use Unix domain socket as JSON RPC as transportation channel on Windows. See the tracking issue: CXuesong/JsonRpc.Standard#4.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].