在编辑器中划选文本后,通过 VS Code 原生 CodeAction(💡 灯泡)快速触发"复制选中区域"操作,减少操作路径。
src/codeActionProvider.ts — CodeAction 提供者src/extension.ts — 注册 CodeActionProviderpackage.json注册一个 SourceAction 类型的 CodeActionProvider,当编辑器中有选中文本时提供"Copy to AI: 选中区域"操作。
class CopyAiCodeActionProvider implements vscode.CodeActionProvider {
public static readonly providedCodeActionKinds = [
vscode.CodeActionKind.Source,
];
provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range | vscode.Selection,
): vscode.ProviderResult<vscode.CodeAction[]> {
// 只在有选中内容时提供 action
if (range.isEmpty) return;
const action = new vscode.CodeAction(
'$(clippy) Copy to AI: 选中区域',
vscode.CodeActionKind.Source,
);
action.command = {
command: 'copy-ai-ctx.copySelection',
title: 'Copy to AI: 选中区域',
};
return [action];
}
}
在 extension.ts 的 activate 函数中,按语言类型注册:
// 对所有语言注册
context.subscriptions.push(
vscode.languages.registerCodeActionsProvider(
{ pattern: '**' },
new CopyAiCodeActionProvider(),
{ providedCodeActionKinds: CopyAiCodeActionProvider.providedCodeActionKinds }
),
);
划选文本 → 💡 灯泡出现 → 点击灯泡 → "Copy to AI: 选中区域" → 点击 → 复制完成
SourceAction 类型的 CodeAction 在划选后灯泡会直接亮起,点击灯泡会弹出菜单显示所有可用的 SourceAction,用户选择 "Copy to AI: 选中区域" 即可。
Shift+Alt+C 不变copyContext.ts 不变