公开 VSCode 活动 'when Clause Contexts' 的方法

A method to expose the VSCode active 'when Clause Contexts'

我正在寻找一种公开 VSCode active 'when Clause Contexts' 例如 'explorerResourceIsFolder' 的方法。为了让您更好地理解我的用例,这里有一些正在开发 VSCode 扩展的项目的背景。我的分机将有助于通过语音编程和控制 VSCode。

Caster 是一个基于 Dragonfly 的语音编程工具包。 Dragonfly 是一个语音识别框架。它是一个 Python 包,提供高级对象模型并允许其用户轻松编写脚本、宏和使用语音识别的程序。这些项目背后的目标是让那些限制与键盘或鼠标交互的人能够编程或让开发人员提高生产力。

Castor 和 Dragonfly 当前的一些突出限制都通过模拟击键进行交互。这只是列举几个问题。

Adom 编辑器中的一些示例

  1. 在缓冲区中查找": R(Key("c-f"), rdescript="Atom: Find in Buffer") 在 'Find in Buffer' 上下文中只有少数相关命令有用,但 Castor 命令是全局命令,这会降低命令语音识别的准确性并增加语法复杂性。使用 Caster IDE 集成将允许为 IDE 上下文或焦点指定有限的命令集。
  2. "split into lines": R(Key("cs-p") + Text("Split Into Lines") + Pause(atom_palette_wait) + Key("enter"), rdescript ="Atom: Split Into lines"), 并非所有 IDE 函数都可以通过快捷方式调用或在 castor 中轻松重新创建。我尝试在 Adom 中解决这个问题是利用命令面板。虽然这扩展了我触发命令的能力,但它引入了延迟。禁食会触发错误的命令。太慢会降低生产力。索引延迟基于系统负载、系统规格、活动插件的数量和每个命令的字符数。我们试图通过使用 Pause(atom_palette_wait) 来缓解这种情况,但延迟中的变量太复杂了。 Studio Code 也是如此。

Castor 框架IDE 集成


Studio 代码扩展包含三个部分。

  1. 一个 websocket 运行 一个允许与 Castor 双向通信的服务器和客户端。
  2. 执行 'Command_id' 的函数,例如 'editor.debug.action.toggleBreakpoint' 进行中 - 即将完成
  3. 一种公开编辑器的方法 'when Clause Contexts' 例如 'explorerResourceIsFolder' - 搜索方法 - 到目前为止通过 API 没有运气 - 搜索源代码以了解实现。

欢迎提出任何建议。如果您认为这值得在 VSCode 存储库中打开 github 票证,请告诉我。

有一个非 public api 用于获取 when 上下文生效。您可以使用 getValue(key: string)。可以从这个问题票的工作中获得:

Lift setContext from a command to proper API Microsoft/vscode#10471

来源可在此处查看:

contextKeyService.ts

通过使用 getValue(key: string)

截至 2017 年 5 月,它仍在进行中。谢谢。美好的一天。