This commit is contained in:
Ray Elliott 2025-12-06 23:50:51 +00:00
parent 2638104bae
commit 6befee365b
1 changed files with 31 additions and 2 deletions

View File

@ -59,7 +59,7 @@ Source of truth for the step-by-step rebuild. Keep this concise and up to date.
- [x] Add core completion stack: `nvim-cmp`, `cmp-nvim-lsp`, `cmp-buffer`, `cmp-path`, `LuaSnip`
## Phase 3.4 — Projectlocal configuration (neoconf)
- [ ] Confirm scope and priorities for this subphase
- [x] Confirm scope and priorities for this subphase
- [x] Choose approach: use `folke/neoconf.nvim` (replaces custom loader)
- [x] Add `folke/neoconf.nvim` plugin spec and minimal setup
- [x] Document `.neoconf.json` usage and example in README
@ -76,6 +76,34 @@ Source of truth for the step-by-step rebuild. Keep this concise and up to date.
- [x] Temporarily inject `intelephense.environment.includePaths` via lspconfig for `WORKSPACE_SIMPLE` to validate goto-definition
- [x] After validation, remove the temporary injection and rely on neoconf
## Phase 3.9 — Neoconf + Root Fix (BLOCKER)
## Phase 3.9.1 — Confirm neoconf merge hook
- [ ] Ensure neoconf lspconfig integration applies before server setup (validate with `jsonls` in `WORKSPACE_SIMPLE`)
- [ ] Decide schema for `intelephense` settings (nested `settings.intelephense.environment.includePaths`)
## Phase 3.9.2 — Temporary merge shim (if needed)
- [ ] Implement minimal per-server merge from `.neoconf.json``lspconfig.intelephense.settings` at setup-time (remove later if neoconf resolves)
## Phase 3.9.3 — Robust PHP root resolver
- [ ] Implement explicit `root_dir` resolver (prefer `.neoconf.json`, `composer.json`, `.nvimroot`, then nearest `.git`) using `vim.fs.find`
- [ ] Keep `single_file_support = false` for `intelephense`
## Phase 3.9.4 — Validate in WORKSPACE_SIMPLE
- [ ] `:LspInfo` shows correct root
- [ ] `gd` works for local and any configured includePaths
## Phase 3.9.5 — Validate in WORKSPACE_TEST + EXTERNAL_TEST
- [ ] With forced workspace root, `gd` still resolves external library symbols via includePaths
- [ ] Confirm behavior after client restart and fresh session
## Phase 3.9.6 — Decision: rooter plugin (optional)
- [ ] If root resolution remains brittle, propose adding a rooter plugin (requires approval), tuned for tab-per-context
## Phase 3.9.7 — Finalize approach
- [ ] If neoconf merge works reliably, remove temporary shim; otherwise retain shim and document
- [ ] Document root marker guidance (`.nvimroot`) and includePaths best practices
## Phase 3.5 — LSP minimal defaults
- [x] Add `nvim-lspconfig` with minimal defaults (no over-configuration)
- [x] Add minimal LSP on-attach keymaps (gd, gr, K, gD, gI)
@ -202,9 +230,10 @@ Notes:
- Prefer simple defaults; only add settings that clearly improve workflow.
- Plugin approval policy: unlisted plugins may be proposed, but must be explicitly confirmed before installation.
Known Issues / Follow-ups:
Known Issues / Follow-ups (tracked by Phase 3.9):
- lua-language-server (lua_ls) from Mason failed to start due to missing shared library `libbfd-2.38-system.so`. Options:
- Install lua-language-server via system package manager compatible with your distro.
- Provide the required `libbfd` or adjust symlink to match expected soname.
- Skip lua_ls for now; neoconf validation can be done with other servers (e.g., jsonls) and PHP (intelephense).
- LSP root detection: In some cases, the parent repository is picked as the root (e.g., when a workspace lives inside another repo). Workaround: create an empty `.git` directory (or a marker like `.nvimroot`) in the intended workspace root to pin the project root for LSPs.
- Neoconf merge + root correctness are a blocker for migration. Address via Phase 3.9 subphases above.