Choosing Neovim’s Built-in LSP vs External Plugins
Decision guide comparing Neovim’s built-in LSP client with external plugin stacks, including a minimal Lua validation example.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Decision guide comparing Neovim’s built-in LSP client with external plugin stacks, including a minimal Lua validation example.
Neovim exposes two related but distinct channels: the core message system, including the :messages history, and the Lua notification API, vim.notify . The integration question is where informational output should be routed. A plugin can emit vim.notify(..., vim.log.levels.INFO) , while core and plugin messages may also pass through the MsgWrite event; shortm
Choosing between Lua and Vimscript autocommands for filetype detection The goal is to register filetype-specific triggers using either nvim_create_autocmd in Lua or the legacy autocmd command in Vimscript. Lua provides type-safe arguments and direct API integration, while Vimscript is evaluated at runtime by the Vim engine. The main constraint is version sup
I'm setting up Neorg for personal notes and task tracking in Neovim, and I want to understand the relationship between the plugin's concealer module and the Tree-sitter norg parser installed through nvim-treesitter. My understanding is that syntax highlighting, folding, and the concealer's styled rendering of markup all derive from the Tree-sitter parse tree
Integration Boundary Neorg relies on a dedicated Tree-sitter grammar to enable core functionality such as syntax highlighting, folding, and concealing. This requires the norg parser to be compiled and registered with the Neovim built-in Tree-sitter runtime. Compatibility Constraints Because Neovim bundles a specific version of the Tree-sitter library, the pa
The goal is to place an extmark at a column that is computed at runtime (for example, based on the length of virt_text or user‑provided offsets) without triggering the documented "Invalid 'col': out of range" error. The column must stay within the current line’s bounds, taking into account that Neovim measures columns in UTF‑8 character units and that concur
LSP Configuration Synchronization Neovim's built-in LSP client ( vim.lsp ) manages communication with language servers via JSON-RPC. While buffers attach to clients based on filetype, the propagation of configuration changes to a running server is not an automated process. The LSP specification defines the workspace/didChangeConfiguration notification to inf
External Dependency Management in Lua Configs Modern Neovim configurations (v0.5.0+) utilize init.lua to orchestrate editor behavior and plugin integration. Many high-performance plugins rely on external system binaries, such as ripgrep or fd , to provide core functionality like live grepping or fast file searching. A configuration that functions correctly o
Neovim Core ↔ Lua Runtime: Synchronization of Terminal Output The goal is to understand how the core C implementation of Neovim’s terminal emulator coordinates with the Lua runtime when a terminal process emits rapid output. In practice, high‑frequency writes can block the main event loop, causing the editor to freeze or lose keystrokes. The current design r