【发布时间】:2022-10-21 01:11:49
【问题描述】:
试图了解如何在我的语言扩展中实现简单的源代码控制管理。
与某些特殊文件相比,我需要显示单个文件的快速差异(我的扩展名不适用于文件夹)。
假设我有这个TextDocumentContentProvider 和QuickDiffProvider:
class MyLangDocumentContentProvider implements vscode.TextDocumentContentProvider
{
provideTextDocumentContent(uri: vscode.Uri)
{
return getFileText(uri); // returns text of provided file uri
}
}
class MyLangRepository implements vscode.QuickDiffProvider
{
provideOriginalResource(uri: vscode.Uri)
{
return getOriginalFileUri(uri); // returns uri of the special file to compare with
}
}
然后在activate 扩展方法中初始化它们:
const docProvider = new MyLangDocumentContentProvider();
const gitSCM = vscode.scm.createSourceControl('git', 'Git');
gitSCM.quickDiffProvider = new MyLangRepository();
const workingTree = gitSCM.createResourceGroup('workingTree', 'Changes');
workingTree.resourceStates = [
{ resourceUri: vscode.window.activeTextEditor.document.uri }
];
然后我需要使用一些自定义 uri 方案调用registerTextDocumentContentProvider。那么为什么我需要自定义 uri 方案?我还应该做些什么来跟踪当前文件相对于特殊文件的更改?
我在看vscode-extension-samples/source-control-sample,但它看起来比我的情况更复杂。
感谢您的任何建议!
【问题讨论】:
标签: version-control vscode-extensions