CodeEditApp / CodeEditApp/CodeEdit

Native GitHub Copilot inline completions

オープン
#2,181 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Swift
スター
23k
フォーク
1.2k
PR マージ指標
30日以内にマージされた PR はありません

説明

### Description

Add native GitHub Copilot inline completions to CodeEdit: as you type, the editor shows AI ghost text suggestions and accepts them with Tab. This is the app-level integration that ties together the inline suggestion rendering (`CodeEditTextView`) and the inline completion coordination layer (`CodeEditSourceEditor`).

What it adds:

- A Copilot language-server client and service (`CopilotClient`, `CopilotService`, `CopilotProtocol`) that launches and talks to the official `copilot-language-server` over LSP, including device-flow sign-in, status, and document sync.
- A per-document `CopilotInlineCompletionProvider` that conforms to the editor's `InlineCompletionDelegate`, maps the caret to an LSP position, requests completions, strips already-typed prefixes, and adapts results into the editor's ghost-text model.
- A `CopilotBinaryResolver` that locates `copilot-language-server` (explicit path, `PATH`, or common install dirs) and builds a launch environment that can find `node` (including nvm-managed installs), since the server is a Node script.
- A Settings page (enable toggle, device-flow sign-in UI, optional language-server path) and a status bar item reflecting Copilot state.
- Wiring in `CodeFileDocument` / `CodeFileView` to attach the provider per open document.

Design notes:

- Suggestions render as ghost text via the `CodeEditTextView` overlay primitive and never mutate the document until accepted.
- Disabled by default; opt-in via Settings. Requires a GitHub Copilot subscription.

### Alternatives Considered

- A plugin/extension instead of a built-in. CodeEdit does not yet have an extension API surface for inline completions, and the integration needs the editor's cursor/lifecycle hooks, so a built-in (opt-in, behind settings) is the practical option today.
- Driving the suggestion lifecycle in the app rather than the editor. Rejected; the request/accept/dismiss lifecycle lives in `CodeEditSourceEditor` (see the dependency below), and the app only supplies a concrete provider.

### Additional Context

This is the top layer of a three-repo change for native inline completions:

1. `CodeEditTextView`: inline suggestion (ghost text) rendering primitive (CodeEditApp/CodeEditTextView#124, PR CodeEditApp/CodeEditTextView#125).
2. `CodeEditSourceEditor`: inline completion coordination layer (CodeEditApp/CodeEditSourceEditor#374, PR CodeEditApp/CodeEditSourceEditor#375).
3. `CodeEdit` (this issue): the GitHub Copilot provider and UI.

I have a working, documented implementation. Locally it builds and runs against the two dependency branches via a workspace that references local checkouts, and I have verified end to end against the real `copilot-language-server` (device-flow sign-in and inline ghost text that accepts with Tab). The package pins for `CodeEditTextView` / `CodeEditSourceEditor` need bumping to the releases that include layers 1 and 2 before this can build in CI. Would the maintainers welcome native Copilot support in CodeEdit?

### Screenshots

I will attach a screen recording of the device-flow sign-in and inline ghost text on the PR.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start by reading CodeFileDocument and CodeFileView, then trace the CopilotClient, CopilotService, CopilotProtocol, CopilotInlineCompletionProvider, and CopilotBinaryResolver entry points. Check the CodeEditTextView and CodeEditSourceEditor dependency versions and run the app with the documented local branches. Done means the package pins support the integration, CI builds, and the Settings sign-in flow and Tab-accepted ghost text work end to end.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
github, node.js, swift
領域
ai, desktop, devtools
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。