You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two features, one shared foundation:
1. Driver config auto-discovery. Mudlib checkouts usually carry their
config at config.<name> (root) or etc/config.<name> (the fluffos
testsuite uses etc/config.test). lpcc.findDriverConfigs() scans both
spots and validates by CONTENT ('mudlib directory' + 'master file'
lines; values strip trailing '# comment #' chatter), returning
{configFile, runCwd, mudlibRoot} -- runCwd is the checkout root
(a relative 'mudlib directory' is driver-cwd-relative), mudlibRoot
the resolved mudlib dir. Both the extension and the LSP server chain
it after the explicit setting and the .lpc/config scaffold, so a
plain mudlib checkout gets compiler diagnostics with zero settings;
VS Code additionally offers ONCE per workspace to persist the
discovered config into workspace settings, and lpc.initConfig offers
the discovered config before scaffolding. Fixed along the way:
debugLogPath() resolved a mudlib-relative configFile against the
process cwd (same bug as includeDirs earlier) and ignored trailing
config comments.
2. Workspace cross-index (server/indexer.js, vscode-free + dependency-
injected). Definitions indexed eagerly (tokenize+outline of every
.lpc/.c/.h under each workspace folder at 'initialized', re-indexed
from live buffers); references resolved on demand (\bword\b content
prefilter, then tokenize only matching files) so memory stays flat.
Serves: cross-file go-to-definition (falls back from the local
outline), workspace-wide find-references (live buffers beat disk),
workspace/symbol (Ctrl+T), and completion items for symbols from
never-opened files. Caps: 20k files / 1MB each; skips dotdirs,
node_modules, .lpc/.
Verification (all green):
- test.mjs: discovery unit fixtures (content validation, decoys,
comment stripping) + indexer units (build/update/live-buffer
override; #define-body mentions deliberately don't count -- one
directive token).
- test-lsp.mjs (22 checks): cross-file definition into a never-opened
file, 3-location cross-file references, workspace/symbol, workspace
completion, and lpcc diagnostics through an AUTO-DISCOVERED
etc/config.* with no configFile setting (second workspace folder).
- test-nvim.lua (14 checks, real client): ASSERT_EQ resolving into
include/tests.h via the 761-file testsuite index; corpus-scale
workspace/symbol (100+ do_tests hits).
- Full corpus sweep: 762 files, all three phases, 0 failures.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AXqX4Kf55ArA39suS9cdCv
0 commit comments