gopls / pyright / basedpyright / clangd issue server→client `workspace/configuration` during startup and degrade (or fall back to defaults) without a reply. pmacs advertised `configuration:false`, so it never got the chance. - Advertise `workspace.configuration: true`. - New `settings` field on the spawn spec, threaded through lua_to_lsp_spec → ensure_server (pmacs.lsp.config[lang].settings). - handle_request intercepts `workspace/configuration` (mirrors the publishDiagnostics interception in handle_notification): each item's dotted `section` resolves against the server's settings via resolve_config_section; one array element per item; unknown sections answer `null` (the spec's "not configured" signal, distinct from a configured null). All other server→client requests still surface as a `Request` event for the consumer. - The Python default now ships `python.analysis.typeCheckingMode = "basic"` (+ basedpyright.* alias), so the #12 basedpyright-noise concern is now actually fixed rather than only documented; a project pyrightconfig.json / [tool.pyright] still wins where present. Scoped: `scopeUri` ignored (single-root; same settings regardless of scope) until multi-root, a separate deferred item. Tests: exhaustive resolve_config_section unit test (dotted paths, configured-null vs unknown-null, whole-object for absent section); new `wsconfig` fake mode pulls config at `initialized` and echoes pmacs's answer back; end-to-end test asserts the configured section round-trips. Gate: fmt clean; clippy --all-targets -D warnings clean; lib 1230/0; m4_acceptance 62/0; m9_1 18/0; m8_1/m8_9/m8_10 green. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api | ||
| commands | ||
| hooks | ||
| keymaps | ||
| packages/repl | ||
| runtime | ||