3.5 KiB
3.5 KiB
1. Completion Request Contract
- 1.1 Audit the current
textDocument/completionrequest path and extend the master/worker protocol to carry trigger context, requested limit, and normalized client completion capabilities. - 1.2 Store completion-related client capabilities from
initializein the server and thread them into completion requests instead of relying on defaultCodeCompletionOptions. - 1.3 Change completion responses from a raw item vector to a completion-list shape that can represent
isIncompleteand future completion metadata cleanly.
2. Internal Completion Pipeline
- 2.1 Introduce an internal completion-candidate/result model that separates collection, deduplication/bundling, scoring, truncation, and final LSP rendering.
- 2.2 Refactor
src/feature/code_completion.cppso Sema collection populates the internal model instead of directly constructing finalCompletionItems. - 2.3 Implement capability-aware rendering for snippets, signatures/details, documentation, deprecation,
filterText, and stablesortText. - 2.4 Add request-side suppression for obviously spurious auto-triggered completions and preserve correct fallback behavior for manual completion.
3. Candidate Sources And Ranking
- 3.1 Add local-identifier collection from the active buffer/file context and merge those candidates with Sema results.
- 3.2 Implement semantic deduplication and overload bundling based on insertion semantics rather than label-only equality.
- 3.3 Replace raw fuzzy-only ordering with explicit heuristic scoring that incorporates scope visibility, expected type, deprecation, and active compilation-context signals.
- 3.4 Enforce result limits after scoring and verify that truncation drives
isIncompletecorrectly.
4. Index Completion And Completion Edits
- 4.1 Extend completion-relevant index data structures and serialization to store the metadata needed for index-backed completion rendering and ranking.
- 4.2 Add project-index candidate lookup for completion and merge index candidates with Sema/identifier candidates without duplicating visible entries.
- 4.3 Preserve and render Sema fix-it edits as completion-associated edits.
- 4.4 Implement dependency insertion edits for header-backed symbols once index metadata can identify the correct declaration owner and insertion path.
5. clice-Specific Completion Extensions
- 5.1 Bind completion in headers to the active header-context selection model instead of treating shared headers as context-free.
- 5.2 Integrate available PCM/module dependency information into candidate visibility and ranking for module-aware completion.
- 5.3 Implement module-aware dependency insertion policy for completion items that should add
import-style dependencies instead of header includes. - 5.4 Add template-instantiation-aware ranking signals where
clicecan derive concrete instantiation or expected-type compatibility.
6. Validation
- 6.1 Add focused unit tests for completion rendering, capability negotiation, overload bundling, sorting/filtering metadata, and
isIncompletebehavior. - 6.2 Add unit or fixture-based tests for identifier augmentation, index-backed completion, fix-it edits, and dependency insertion edits.
- 6.3 Add integration coverage for shared-header contexts, module-aware completion, and template-heavy completion cases.
- 6.4 Run the relevant completion, worker, index, and integration test targets and fix regressions uncovered during verification.