如何解决在vs代码工作区中保存文件时,如何获取新修改的行的行号?
我正在开发vs代码扩展。 我正在尝试找到VS Code Extension API或任何其他方式来告知新修改的行的行号 用户添加/更新的内容保存在vscode工作区的文件中。
例如:如果在VSCode工作空间中打开Test.js文件,其内容如下:
export class **App** {
constructor() {
this.html = "<h1>DomSanitizer</h1><script>attackerCode()</script>"
}
}
然后用户将内容修改为如下所示并保存:
export class **Application** {
constructor() {
this.html = "<h1>DomSanitizer</h1><script>attackerCode()</script>"
}
}
是否有任何方法可以获取已修改的行号?例如:在以上示例中,App被修改为Application, 因此输出应为行号1。
解决方法
您可以使用onDidChangeTextDocument事件。在vscode.workspace中:
https://code.visualstudio.com/api/references/vscode-api#workspace
发送到回调的事件参数称为TextDocumentChangeEvent:
https://code.visualstudio.com/api/references/vscode-api#TextDocumentChangeEvent
此事件包含已更改的TextDocument(请参见文章底部)和一个TextDocumentContentChangeEvents数组:
https://code.visualstudio.com/api/references/vscode-api#TextDocumentContentChangeEvent
从此数组中可以获取已更改的行号。 TextDocumentContentChangeEvent包含Range类变量,该变量为您提供了更改的行的开始和结束位置。由于您只关心行号,而不关心行中的修改位置,因此只需要使用“开始/结束”“位置”行变量即可。
https://code.visualstudio.com/api/references/vscode-api#Range
https://code.visualstudio.com/api/references/vscode-api#Position
对于保存文本文档时,可以在vscode.workspace中使用onDidSaveTextDocument:
https://code.visualstudio.com/api/references/vscode-api#workspace
这会将TextDocument发送到回调:
https://code.visualstudio.com/api/references/vscode-api#TextDocument
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。