【问题标题】:How to check if a document is read-only - VSCode extension API如何检查文档是否为只读 - VSCode 扩展 API
【发布时间】:2018-05-15 13:26:03
【问题描述】:

有什么方法可以查出活动的文本文档是否是只读的?

我在 VSCode namespace API 文档中找不到它。

【问题讨论】:

  • 保存TextDocumentapplyEdit 怎么样,如果promise 返回false,它可能是只读的
  • @Michael 我不想代表用户编辑或保存文档。有没有办法不修改文档?我对 VSCode 扩展开发还很陌生,所以不太了解。

标签: typescript visual-studio-code vscode-extensions


【解决方案1】:

VSCode 在运行在 NodeJS 上的 Electron 上运行,这意味着您无需使用 VSCode API 即可访问文件系统并检查文件权限。

您可以使用fs native 包检查 NodeJS 上的文件权限:

if ((fs.statSync(document.uri.fsPath).mode & 146) == 0) {
  // document is in read-only mode
}

【讨论】:

【解决方案2】:

您应该使用内置的 vscode.workspace.fs API,而不是普通的 node.js fs 包。但即便如此,对于不代表物理文件的TextDocuments 也无济于事。

您可以假设如果是TextDocument.uri.schema === 'file',您可以使用vscode.workspace.fs API 测试它是否可写。

否则,可能会应用一个空的良性编辑,例如按照@Michael 的建议插入一个空字符串将是一个有用的测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多