VSCode:活动文本编辑器编码

3

是否有一种方法可以在扩展代码中获取当前文档编码(即底部栏中的编码)?

类似于vscode.window.activeTextEditor.encoding这样的东西。

1个回答

1

这似乎是不可能的。

由于证明否定很难,因此本答案的其余部分记录了我探索的内容。

API文档和从中派生的index.d.ts文件中(截至撰写本文时,使用的是VSCode 1.37.1),字符串“encoding”未以此意义出现。

我深入研究了vscode源代码,以寻找可能的解决方案,但是没有结果。当用户更改编码时执行的代码位于editorStatus.ts中的ChangeEncodingAction类中。它通过textFileEditorModel.ts传递,并设置preferredEncoding。该字段控制文件保存时发生的情况,并用于填充状态指示器,但在其他地方我找不到它的使用。
似乎无法读取状态指示器本身,因为API允许扩展使用window.createStatusBarItem创建新的指示器,但不能枚举现有指示器。并且直接访问DOM不可行
我也在搜索与编码相关的VSCode问题,无论是公开还是关闭的,都没有结果,但只浏览了最近约100个关闭问题的标题。

替代方案

目前我的主要建议是在VSCode Github上提出增强请求。
当然,也可以尝试使用反射进行一些操作,但这可能会很脆弱。
最后,编码控制着内存中文档(字符序列)如何映射到磁盘上的文件(字节序列)。根据您尝试做什么,可能会将文档按多种编码格式进行推测编码,并将每个编码与磁盘上的内容进行比较(只要文件不是脏的),这可能会起作用。

感谢您的调查。已创建功能请求:https://github.com/microsoft/vscode/issues/80215 - Rus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接