Inline completion (ghost text) coordination layer
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 32/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- swift
- Área
- developer-experience, tooling
Línea de trabajo
Empieza en el TextViewController de CodeEditSourceEditor y lee la primitiva de renderizado de sugerencias inline en CodeEditTextView; después revisa la API propuesta de InlineCompletionDelegate e InlineCompletionItem. Ejecuta las pruebas unitarias existentes con el flujo documentado de xcodebuild clean test; se considera terminado cuando la solicitud, la visualización, la aceptación, el descarte, el ciclo, el control de Tab y el borrado por cursor/edición se comporten como se describe.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Swift
- Estrellas
- 720
- Forks
- 162
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CodeEditApp/CodeEditSourceEditor
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
CodeEditApp/CodeEditSourceEditor#377 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
CodeEditApp/CodeEditSourceEditor#376 · 1 comentario ·
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
CodeEditApp/CodeEditSourceEditor#378 · 1 comentario ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de CodeEditApp/CodeEditSourceEditor
Issues similares
-
The correction-threshold rationale says 17 restraint cases collide; the current corpus has 16 Abiertoarea:dictation documentation P2
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
uttrflow/uttrflow-swift#1180 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
OneBusAway/onebusaway-ios#1451 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100