Developer Tools · Cluster
Editors and IDEs
Language servers and editing models.
- 01 Piece Tables, Gap Buffers, and Ropes in Editor Buffers How editors store document text so that typing stays cheap: the gap buffer, the piece table, and the rope, plus the line index that answers offset-to-line queries over each of them.
- 02 Byte Offsets, UTF-16 Code Units, and Editor Positions Why the same cursor sits at several different numbers depending on the encoding counted, how the position encoding for a language server is negotiated, and where the conversions lose alignment.
- 03 Incremental Parsing and Tree Reuse in Editor Syntax Engines How a syntax engine avoids reparsing a whole file on every keystroke: immutable syntax trees, edit-based invalidation, hash-based subtree reuse, and error recovery that has to work on broken text.
- 04 JSON-RPC Framing and the LSP Initialize Handshake How JSON-RPC messages are framed on the wire with a byte-counted header, which message shapes the protocol allows, and how the initialize exchange decides which features exist for the rest of the session.
- 05 Incremental Document Synchronization Between Client and Server How the editor keeps a server copy of the buffer in step with its own: full versus incremental sync, the sequential semantics of change ranges, version numbers, and the divergence that follows an off-by-one.
- 06 Diagnostics Delivery: Push, Pull, and Stale Results How errors and warnings travel from a language server to the editor: the push notification that owns a document, version binding, the pull request with result identifiers, and the ways a squiggle outlives the code it describes.
- 07 Completion Filtering, Ranking, and Lazy Item Resolution Why the editor filters the completion list itself, how the three strings on an item control matching and ordering, and what the resolve round trip buys when documentation is expensive to build.
- 08 Cancellation, Progress, and Partial Results in the Language Server Protocol How a client abandons work that is no longer needed, how a server reports bounded progress on work that is, and why streaming results are framed so that the final reply carries nothing.
- 09 Semantic Tokens: Relative Encoding and Delta Updates How a language server describes highlighting as a flat array of integers, why each token is encoded relative to its predecessor, and how delta edits over that array are applied without corrupting it.
- 10 Coordinating Multiple Language Servers Across Workspace Folders What happens when one buffer is claimed by several servers and one workspace has several roots: document selectors, folder change notifications, per-scope configuration, and watched-file events.