Module: Pikuri::Lsp
- Defined in:
- lib/pikuri-lsp.rb,
lib/pikuri/lsp/uris.rb,
lib/pikuri/lsp/range.rb,
lib/pikuri/lsp/anchor.rb,
lib/pikuri/lsp/mailbox.rb,
lib/pikuri/lsp/refusal.rb,
lib/pikuri/lsp/servers.rb,
lib/pikuri/lsp/sources.rb,
lib/pikuri/lsp/testing.rb,
lib/pikuri/lsp/location.rb,
lib/pikuri/lsp/lsp_tool.rb,
lib/pikuri/lsp/position.rb,
lib/pikuri/lsp/registry.rb,
lib/pikuri/lsp/renderer.rb,
lib/pikuri/lsp/extension.rb,
lib/pikuri/lsp/navigator.rb,
lib/pikuri/lsp/operation.rb,
lib/pikuri/lsp/readiness.rb,
lib/pikuri/lsp/connection.rb,
lib/pikuri/lsp/symbol_name.rb,
lib/pikuri/lsp/client_wrapper.rb,
lib/pikuri/lsp/server_progress.rb,
lib/pikuri/lsp/position_encoding.rb
Overview
Language Server Protocol client: the questions grep cannot answer — where
is this defined, who calls it, what does it inherit from — asked of a real
language server and relayed back verbatim. Read-only by construction; the
moment it applies an edit it needs the Confirmer seam and stops being a
gem you can audit in one sitting.
Three layers, and start reading at the first:
- Connection is the protocol — JSON-RPC over one IO pair, and nothing of LSP's vocabulary.
- Position / Range / Location / ServerProgress are the boundary — the wire shapes messy enough that the rest of the gem should never see them. Coordinates cross it exactly once: 1-based line and character column inside pikuri, 0-based and PositionEncoding-encoded outside.
- LspTool over Navigator is the policy — which server answers a file, whether it advertised the operation, whether its index is built yet, and how much of what it said is worth rendering.
Defined Under Namespace
Modules: PositionEncoding, SymbolName, Testing, Uris Classes: Anchor, ClientWrapper, Connection, Extension, Location, LspTool, Mailbox, Navigator, Operation, Position, Range, Readiness, Refusal, Registry, Renderer, ServerProgress, Servers, Sources
Constant Summary collapse
- LOADER =
Zeitwerk::Loader.new