SaaS & Software·Aug 16, 2026

Protobuf has LSP support. You're welcome

Buf is proud to announce the first fully-featured, production-grade LSP server for Protobuf. The Language Server Protocol is the standard API for integrating language support into your favorite IDE or text editor, such as VSCode, IntelliJ,

Hacker News3 min readSingle source
Protobuf has LSP support. You're welcome
Image · Hacker News
The gist
5-point summary · 1 min

Buf is proud to announce the first fully-featured, production-grade LSP server for Protobuf. The Language Server Protocol is the standard API for integrating language support into your favorite IDE or text editor, such as VSCode, IntelliJ,

  • The Language Server Protocol is the standard API for integrating language support into your favorite IDE or text editor, such as VSCode, IntelliJ, or Neovim.
  • At Buf, we believe that Protobuf is the best schema language, thanks to its established ecosystem of libraries and tools.
  • This will automatically use your installed version of the Buf CLI (which bundles the LSP server), or install one if you need it.
  • Its flexibility makes it easy for us to implement new language features as they are added to Protobuf, such as upcoming features in Editions 2024.
  • At Buf, we will always push the boundary of what you can accomplish with Protobuf, enabling schema-driven development for all!
In this article

Buf is proud to announce the first fully-featured, production-grade LSP server for Protobuf. The Language Server Protocol is the standard API for integrating language support into your favorite IDE or text editor, such as VSCode, IntelliJ, or Neovim. An LSP server provides the smarts that power go to definition, code completion, finding references, and semantics-aware syntax highlighting. Before today, Protobuf lacked the same LSP support other major programming languages enjoy. We don’t want to overstate our own work, but this is a game-changer for Protobuf development: Protobuf now has modern IDE support for the first time, all powered by the Buf CLI. At Buf, we believe that Protobuf is the best schema language, thanks to its established ecosystem of libraries and tools. Protobuf shouldn’t just be the smart choice; it should be the easiest choice too. This is why we’re releasing the Buf LSP server, as part of our family of tools that complete the Protobuf ecosystem, including Protobuf-ES (used in Chromium!), Protovalidate, ConnectRPC, and the Buf Schema Registry. No matter your project or use-case, developing with Protobuf should be the easy, obvious choice. Here’s how you can try it out! Installing the Buf LSP VSCode is one of the most popular graphical editors available, and it has stellar LSP support (LSP originated with VSCode). To use the Buf LSP, just install the Buf extension. This will automatically use your installed version of the Buf CLI (which bundles the LSP server), or install one if you need it. Neovim is Buf engineers’ favorite editor, and the Buf LSP works great with it, too. All you need to do is install the Buf CLI, and configure Neovim to use it as an LSP server. Make sure you’ve installed the nvim-lspconfig repository, which provides default LSP config options. Follow the instructions here. Add lspconfig.buf_ls.setup {} to your.nvimrc. Alternatively, you can add the following somewhere in init.lua (or another config file, if you like): vim.lsp.config('buf-lsp', { cmd = { 'buf', 'lsp', 'serve' }, filetypes = { 'proto' }, root_markers = { 'buf.yaml', '.git' }, }) Then, you can enable it with vim.lsp.enable('buf-lsp') in your.nvimrc. Learn more about LSP and Neovim here. If you’re using another editor, first find out how LSP integration works, and just make sure the buf lsp serve command gets run to spawn the server. Leveraging our toolchain Buf already maintains a Protobuf compiler frontend (the part that parses files and calls plugins, like protoc), which we call protocompile. Our implementation isn’t just fully-compliant, but it is much faster and more flexible than protoc. Our compiler is so good that even Google is using it alongside protoc in some parts of its massive codebase. To build the Buf LSP, we’ve taken protocompile to the next level. We’ve developed a brand-new, query-driven frontend which enables incremental compilation and much better diagnostics. For example, unlike protoc, we correctly diagnose a duplicate repeated modifier: error: encountered more than one type modifier --> testdata/parser/type/repeated.proto:23:14 | 23 | repeated repeated M x4 = 4; | -------- ^^^^^^^^ help: consider removing this | | | first one is here We designed a new AST and intermediate representation for precisely diagnosing these errors, instead of using FileDescriptorProto. Its flexibility makes it easy for us to implement new language features as they are added to Protobuf, such as upcoming features in Editions 2024. It is also memory-efficient, so it can handle workspaces that include very large Buf modules. Our commitment Our work on the Buf LSP is not done. We are always improving our diagnostics, and we’re planning to add more features to the LSP server, too: Adding imports as an automatic fix. Tighter integration with buf.yaml (such as automatically importing modules). Code completion and reference lookup for custom options. Automatic suggestion of field/enum numbers. Dedicated Protovalidate support, including syntax highlighting for CEL snippets. At Buf, we will always push the boundary of what you can accomplish with Protobuf, enabling schema-driven development for all! If you want help enforcing standards on your organization’s data, contact us to see if Buf can help. If building excellent developer tooling excites you, check out our careers page!

Integrity note  ·  Xela does not rewrite or paraphrase article content. The excerpt above is the source publication's own words, sanitized for display. For the full piece — including any quotes, charts, or images — read it at Hacker News. Xela's rewritten version is off for this story, so there's no editorial angle attached — you're getting the source's reporting unfiltered. When the rewrite is on, we add a What this means block underneath with the operator/trader takeaway.

What people are saying

Discussion

Hot takes

0/280

Loading takes…

Comments

Discussion · 0

Sign in to comment, like, and save articles.

Sign in

Loading comments…

Newsletter

Track saas & software every morning.

Daily digest tuned to this beat. The 5 stories most worth your time. Unsubscribe anytime.