#42 (SLICE-1, reach): selection-aware Ask-Claude from editor body + tab
Document-edit flow SLICE-1 (specs/coauthoring-document-edit-flow.md §7.2, INV-38): make "Ask Claude to Edit" reachable from the editor body AND the editor tab, selection-aware — a selection routes to editSelection, no selection to editDocument — both gated to markdown/authorable docs, both flowing through the single runEditAndPropose path (no divergent edit code). - package.json: add editSelection + editDocument to editor/context (selection- aware, markdown + file/untitled) and editor/title/context (selection-aware, resourceLangId == markdown). Markdown-gate the existing editor/context editSelection entry to match (its command handler is unchanged; the palette still reaches any authorable doc — see transcript Deferred decisions). - trackChangesPreview.ts: cowriting.editDocument accepts the clicked tab's resource Uri (editor/title/context), targeting THAT document (opening it if needed) and falling back to the active editor when invoked with no arg — mirroring showTrackChangesPreview's #41 clicked-doc resolution. - E2E (test/e2e/suite/f12Reach.test.ts): menu entries present, selection-aware, markdown-gated; editDocument(uri) targets the tab doc not the active editor; no-arg falls back to the active editor. - docs/MANUAL-SMOKE-F12.md: SLICE-1 reach smoke steps. 208 unit + 65/5 host E2E green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -82,10 +82,17 @@ export class TrackChangesPreviewController implements vscode.Disposable {
|
||||
}
|
||||
this.show(vscode.window.activeTextEditor?.document);
|
||||
}),
|
||||
// F11: document-scoped Ask-Claude (also reused by #42's gateway). Edits the
|
||||
// active markdown doc; the rewrite is diffed into per-hunk F4 proposals.
|
||||
vscode.commands.registerCommand("cowriting.editDocument", () => {
|
||||
const doc = vscode.window.activeTextEditor?.document;
|
||||
// F11: document-scoped Ask-Claude (also reused by #42's reach gateways).
|
||||
// Edits a markdown doc; the rewrite is diffed into F4 proposals.
|
||||
// #42 (INV-38): the editor/title/context (tab) entry passes the clicked
|
||||
// tab's resource Uri — target THAT document, opening it if it isn't already
|
||||
// an open buffer (mirrors showTrackChangesPreview's #41 resolution); the
|
||||
// palette / keybinding / editor/context pass nothing → the active editor.
|
||||
vscode.commands.registerCommand("cowriting.editDocument", async (uri?: vscode.Uri) => {
|
||||
const doc = uri
|
||||
? vscode.workspace.textDocuments.find((d) => d.uri.toString() === uri.toString()) ??
|
||||
(await vscode.workspace.openTextDocument(uri))
|
||||
: vscode.window.activeTextEditor?.document;
|
||||
if (!doc || !this.isMarkdown(doc)) {
|
||||
void vscode.window.showWarningMessage("Cowriting: open a Markdown document to ask Claude to edit it.");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user