From 19f7322100062b7c1adcde3376063ce6c1d8c72d Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Thu, 30 Jul 2026 23:35:45 -0300 Subject: structure: backends into src/{tty,gui,lsp}, pane kinds and builtins into their own files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The core now lies FLAT at src/ and every subdirectory is one backend, so a file being in no directory at all is what says it is core. Pane-kind bodies leave pardes.zig for term_pane.zig / file_pane.zig / output_pane.zig, leaving it the layout, the event/effect machine and the generic render loop. Builtins are one struct each in builtins.zig, and the enum is folded out of the file's own declaration list at comptime — a zig file IS a struct, so the list of builtins and the builtins themselves are the same text. Adding one is writing a struct. Key paths deliberately stay one table for the config pass. Pure refactor: no golden moved. --- docs/lsp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'docs/lsp.md') diff --git a/docs/lsp.md b/docs/lsp.md index 2a4c8784..91d07231 100644 --- a/docs/lsp.md +++ b/docs/lsp.md @@ -5,7 +5,7 @@ Three things landed together, and only the first two are permanent: 1. **An async execution model.** The core stays a state machine; slow work goes to a worker and comes back as an event. 2. **A helix-exact keymap** for every LSP command. -3. **A seam** (`src/lsp.zig`) with exactly one function behind it, so competing +3. **A seam** (`src/lsp/lsp.zig`) with exactly one function behind it, so competing backends can be swapped, measured, and thrown away. ## The async model @@ -126,7 +126,7 @@ document — which matters precisely when the pane you are in is the problem. ## Writing a backend -`src/lsp.zig` is the seam. An implementation supplies three things and touches +`src/lsp/lsp.zig` is the seam. An implementation supplies three things and touches nothing else: ```zig -- cgit v1.3