vscode本地无源码远程调试c++项目的插件实现方案
【摘要】 目标是希望自定义scheme实现跳转远程文档例如:sourcefilemap:{"/":"XXX:/"} 方案一:采用vscode.TextDocumentContentProvider验证效果:方案可行,可以正常跳转,但是文件编辑过程体验不佳;实现参考:(采用ssh2读取远程文件)https://code.visualstudio.com/api/extension-guides/virt...
目标是希望自定义scheme实现跳转远程文档
例如:sourcefilemap:{"/":"XXX:/"}
方案一:采用vscode.TextDocumentContentProvider
验证效果:
方案可行,可以正常跳转,但是文件编辑过程体验不佳;
实现参考:(采用ssh2读取远程文件)
https://code.visualstudio.com/api/extension-guides/virtual-documents
Editable TextDocumentContentProvider for extensions
https://github.com/microsoft/vscode/issues/10547
方案二:采用vscode.FileSystemProvider
验证效果:
由于调试插件cpp-tools或者gdb的source路径会被转义\被转义为%5C,不能正常识别scheme;但是可以通过修改vscode workbench修补这个问题;例如用c/c++写个控制台程序,插件active时调用一下即可
具体的就是修改workbench.desktop.main.js中的getUriFromSource的实现,将%5C替换回/,即
function getUriFromSource(raw, path, sessionId) {
try{
if(path.startsWith('XXX')){
path = path.replace(/%5C/g,'/');
raw.path = path;
}
}catch(err){
console.log(err);
}
...
同时移除product.json中的,vs/workbench/workbench.desktop.main.js checksum校验节点;
当然在插件中修改应用这样的操作有些太直接太imba,也可以修改后自行编译vscode版本;
实现参考:(采用ssh2读写远程文件)
Why TextDocumentContentProvider dont call provideTextDocumentContent on update when query params changes?
https://stackoverflow.com/questions/47888617/why-textdocumentcontentprovider-dont-call-providetextdocumentcontent-on-update-w
How to work with FileSystemProvider file systems in Visual Studio Code
https://stackoverflow.com/questions/50198150/how-to-work-with-filesystemprovider-file-systems-in-visual-studio-code
https://github.com/carreath/VSCode-Extension-Showcase/blob/f6b3a1b57bf71d42e4d65e8487bfe11ba660aa8c/fsprovider-sample/src/fileSystemProvider.ts
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)