Inline completion (ghost text) coordination layer
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 32/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- swift
- Domaine
- developer-experience, tooling
Piste de recherche
Commencez dans TextViewController de CodeEditSourceEditor et lisez la primitive de rendu des suggestions inline dans CodeEditTextView, puis examinez l’API proposée de InlineCompletionDelegate et InlineCompletionItem. Exécutez les tests unitaires existants avec le flux xcodebuild clean test documenté ; c’est terminé lorsque la demande, l’affichage, l’acceptation, le rejet, le cycle, le contrôle de Tab et l’effacement lié au curseur/à l’édition se comportent comme décrit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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@MainActorprotocol a host conforms to.inlineCompletionsRequested(textView:cursorPosition:) async -> [InlineCompletionItem]returns suggestions; optionalinlineCompletionDidShow/Accept/Dismisshooks report lifecycle.InlineCompletionItem: the suggestion model (insert text plus the range it applies to).TextViewControllermethods: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 inCodeEditSourceEditorlets 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
CodeEditTextViewprimitive 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.
- Langage dominant
- Swift
- Étoiles
- 720
- Forks
- 162
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de CodeEditApp/CodeEditSourceEditor
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
CodeEditApp/CodeEditSourceEditor#377 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
CodeEditApp/CodeEditSourceEditor#376 · 1 commentaire ·
-
Difficulté 1/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
CodeEditApp/CodeEditSourceEditor#378 · 1 commentaire ·
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Toutes les issues de CodeEditApp/CodeEditSourceEditor
Issues similaires
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
type: docs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100
googleapis/google-cloud-swift#971 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
bitcoindevkit/bdk-ffi#1125 ·
-
Move wallpaper setting Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
mozilla-mobile/firefox-ios#35743 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
manaflow-ai/cmux#13417 ·