NOW LET US – AI RAG SaaS Studio TP.HCM
NOW LET US
Digital Product Studio
Back to news
DEV-TOOLS...2 min read

Show HN: Create a full language server in Go with 3.17 spec support

Share
NOW LET US Article – Show HN: Create a full language server in Go with 3.17 spec support

A Go library for building Language Server Protocol servers that handles JSON-RPC framing and message dispatch, targeting the LSP 3.17 specification.

A Go library for building Language Server Protocol servers. It handles JSON-RPC framing, message dispatch, and LSP type definitions so you can focus on your language logic.

This library targets LSP 3.17. The table below shows which parts of the specification are currently supported.

| Category | Feature | Supported | |---|---|---| Lifecycle | initialize / shutdown / exit | Yes | | $/cancelRequest | Yes | | | $/setTrace | Yes | | Text Document Sync | didOpen / didChange / didClose | Yes | | didSave | Yes | | | willSave / willSaveWaitUntil | Yes | | Language Features | completion | Yes | | completionItem/resolve | Yes | | | hover | Yes | | | signatureHelp | Yes | | | declaration | Yes | | | definition | Yes | | | typeDefinition | Yes | | | implementation | Yes | | | references | Yes | | | documentHighlight | Yes | | | documentSymbol | Yes | | | codeAction | Yes | | | codeAction/resolve | Yes | | | codeLens | Yes | | | codeLens/resolve | Yes | | | documentLink | Yes | | | documentLink/resolve | Yes | | | documentColor / colorPresentation | Yes | | | formatting | Yes | | | rangeFormatting | Yes | | | onTypeFormatting | Yes | | | rename | Yes | | | prepareRename | Yes | | | foldingRange | Yes | | | selectionRange | Yes | | | callHierarchy | Yes | | | semanticTokens (full / delta / range) | Yes | | | linkedEditingRange | Yes | | | moniker | Yes | | Workspace | workspaceSymbol | Yes | | executeCommand | Yes | | | didChangeWorkspaceFolders | Yes | | | didChangeConfiguration | Yes | | | didChangeWatchedFiles | Yes | | | workspace/willCreateFiles | Yes | | | workspace/willRenameFiles | Yes | | | workspace/willDeleteFiles | Yes | | Window | showMessage (server-to-client) | Yes | | showMessageRequest | Yes | | | logMessage | Yes | | | progress | Yes | | | showDocument | Yes | | Diagnostics | publishDiagnostics (server-to-client) | Yes | LSP 3.17 | || Language Features | typeHierarchy (prepare / supertypes / subtypes) | Yes | | inlayHint | Yes | | | inlayHint/resolve | Yes | | | inlineValue | Yes | | | textDocument/diagnostic (pull) | Yes | | Workspace | workspace/diagnostic | Yes | | workspace/codeLens/refresh | Yes | | | workspace/semanticTokens/refresh | Yes | | | workspace/inlayHint/refresh | Yes | | | workspace/inlineValue/refresh | Yes | | | workspace/diagnostic/refresh | Yes |

go get github.com/owenrumney/go-lsp

Define a handler struct that implements server.LifecycleHandler and any optional interfaces you need, then pass it to NewServer.

© 2026 Now Let Us. All rights reserved.

Source: Hacker News

Advertisement
Ad slot ready: 5887729102

More in this category

EXPLORE TOPICS

Discover All Categories

Deep dive into the specific technology sectors that matter most to you.