续前文: VS Code英汉词典进化效果演示: 翻译文件所有命名

vscode"英汉词典"插件地址: 官方链接

现在实现的效果比之前的演示差很多, 因为executeDocumentSymbolProvider返回的标识符比想象中的少很多. 而且像main这样的常用术语还未进行合适的手工翻译.

提取文件中标识符并翻译的相关部分代码:

  provideTextDocumentContent(uri: vscode.Uri): string | Thenable<string> {
// TODO: 如果没有当前活跃编辑器, 返回空
let textEditor = vscode.window.activeTextEditor;
return vscode.commands.executeCommand<vscode.DocumentSymbol[]>('vscode.executeDocumentSymbolProvider', textEditor.document.uri)
.then(
(symbols: Array<vscode.DocumentSymbol>) => {
for (var 标识符 of symbols) {
this.原命名列表.push(释义处理.消除英文小括号内容(标识符.name));
for (var 子标识符 of 标识符.children) {
this.原命名列表.push(释义处理.消除英文小括号内容(子标识符.name));
}
} // 长词先查释义, 以免出现一个命名"xxxxyyyy"先替换了yyyy而xxxx未替换的情况
this.原命名列表.sort(function (a, b) { return b.length - a.length }); var 新内容 = textEditor.document.getText();
for (var 原命名 of this.原命名列表) {
let 中文释义 = 查词.取释义(原命名).释义;
let 翻译 = 释义处理.取字段中所有词(原命名).length > 1
? 中文释义
: 释义处理.首选(中文释义, 词典常量.词性_计算机);
if (翻译) {
新内容 = this._replaceAll(新内容, 原命名, 翻译);
}
}
return 新内容;
}
)
}

-------------- 坑 --------------

之后废了一个小时在这个出现过的这个插件发布才会碰到的问题: Error: Item has already been added. Key in dictionary · Issue #5 · program-in-chinese/vscode_english_chinese_dictionary

初步分析有两个问题:

  • 如果两个中文文件名有同样长度, 比如"查词.ts"和"功用.ts", 在本地打包不会有问题(vsce package), 但是在发布时(vsce publish), 估计服务端在保存到后端时会将这两个文件误识别成重命名.
  • 更隐蔽一点的, 在无数次重命名后发现, 在运行publish时, 它不会清理本地的js输出文件夹(这里是out/). 因此在重命名过程中生成的所有.js文件都仍然存在. 导致这无数次重命名都没有效果.

打算复现并报告第一点这个bug. 对第二点的权宜之计---发布前手动清理out目录!

最新文章

  1. MVC学习系列11---验证系列之客户端验证
  2. JS当心隐式的强制转换
  3. ZeroMQ接口函数之 :zmq_disconnect - 断开一个socket的连接
  4. 设计模式(2)--单例模式(Singleton Pattern)
  5. jQuery最佳实践(不断更新中...)
  6. LeetCode 258
  7. iOS 常见错误:CALayer position contains NaN: [14 nan]
  8. cocos2dx 3.2中的物理引擎初探(一)
  9. 带OpenSSL和MySQL的静态编译版本~
  10. iOS中的三大定时器
  11. 回味Python2.7——笔记3
  12. TF-IDF学习(python实现)
  13. CSS预处理器——Sass、LESS和Stylus实践【未删减版】
  14. LINQ学习系列-----1.3 扩展方法
  15. orale 查询每年、每月、每日统计量的sql语句
  16. 团队作业6——展示博客(Alpha版本)
  17. a标签锚点平滑跳转
  18. [Codeforces543D]Road Improvement
  19. mysql 开发基础系列11 存储引擎memory和merge介绍
  20. base64图片内容下载转为图片保存

热门文章

  1. capwap学习笔记——初识capwap(三)(转)
  2. Spring Boot 使用 AOP 实现页面自适应
  3. rest_framework之解析器、路由控制、分页
  4. canvas学习笔记(一)
  5. python3 [爬虫实战] selenium 爬取安居客
  6. JVM学习②
  7. bzoj 2005 能量采集 莫比乌斯反演
  8. mysql循环插入数据
  9. css中固定宽高div与不固定宽高div垂直居中的处理办法
  10. Django基础四&lt;二&gt;(OneToMany和 ManyToMany,ModelForm)