Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Inline completion (ghost text) coordination layer

Aperta
#374 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
32/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
swift

Direzione di ricerca

Inizia in TextViewController di CodeEditSourceEditor e leggi la primitiva di rendering dei suggerimenti inline in CodeEditTextView, quindi esamina l’API proposta di InlineCompletionDelegate e InlineCompletionItem. Esegui gli unit test esistenti con il flusso xcodebuild clean test documentato; il lavoro è completato quando richiesta, visualizzazione, accettazione, rifiuto, ciclo, controllo di Tab e cancellazione dovuta al cursore/alla modifica si comportano come descritto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

Add an inline completion (ghost text) coordination layer to CodeEditSourceEditor, built on the inline suggestion rendering primitive in CodeEditTextView. This gives the editor a provider-agnostic way to request, show, accept, cycle, and dismiss inline AI suggestions (the GitHub Copilot UI pattern).

Proposed API:

  • InlineCompletionDelegate: a @MainActor protocol a host conforms to. inlineCompletionsRequested(textView:cursorPosition:) async -> [InlineCompletionItem] returns suggestions; optional inlineCompletionDidShow/Accept/Dismiss hooks report lifecycle.
  • InlineCompletionItem: the suggestion model (insert text plus the range it applies to).
  • TextViewController methods: requestInlineSuggestion() (debounced), setInlineSuggestions(_:selectedIndex:), acceptInlineSuggestion(), dismissInlineSuggestion(), selectNext/PreviousInlineSuggestion().
  • Behavior: requests are debounced and skipped while the completion popup is visible (ghost text and popup never co-exist); Tab accepts when a suggestion is active; moving the cursor or editing dismisses the ghost text.
Alternatives Considered
  • Putting this logic in the app target (CodeEdit) directly. Rejected because the request/accept/dismiss lifecycle is tightly coupled to the editor's cursor, selection, and key handling, which live here. Keeping it in CodeEditSourceEditor lets any host provide completions through a small delegate, rather than each host re-implementing the lifecycle.
  • Mutating the document to preview suggestions. Rejected; the underlying CodeEditTextView primitive renders ghost text as an overlay without touching text storage, so previews never pollute undo or layout.
Additional Context

This is the middle layer of a planned native inline-completion feature for the CodeEdit stack: CodeEditTextView provides the rendering primitive (CodeEditApp/CodeEditTextView#124), CodeEditSourceEditor (this issue) coordinates the lifecycle, and CodeEdit wires up a concrete provider such as GitHub Copilot.

I have a working, documented implementation with unit tests covering request/show, accept, dismiss, cycling, Tab-accept gating, and ghost-text clearing on cursor move and edit. It builds and tests pass via xcodebuild ... clean test (against the CodeEditTextView change above), and SwiftLint is clean. Would the maintainers welcome this in CodeEditSourceEditor?

Screenshots

The user-visible ghost text is shown by the app-level integration in CodeEdit; this layer is the coordination API and is covered by unit tests.

Lingua principale
Swift
Stelle
720
Fork
162
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CodeEditApp/CodeEditSourceEditor

Tutte le issue di CodeEditApp/CodeEditSourceEditor

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.