问题标签 [vscode-extensions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-code - 如何最好地将偏移位置解析为 vscode DefinitionProvider 中的行、列位置
我正在将用于 ensime 集成的 atom 包移植到 vscode 中。
在尝试做定义提供者时,我遇到了一个问题。ensime-server 为我提供了绝对字符位置,但 DefinitionProvider 协议需要 row,col。只要我有文档就不是问题,因为我可以简单地做document.positionAt(offset)
,document.offsetAt(position)
但是在定义提供者的范围内,我实际上还没有打开任何文档,我认为我不应该只是解决位置,因为它也被 vscode 用于悬停信息......</p>
将字符偏移量解析为所需的 vscode.Position 的最佳选择是什么?有没有我可以使用的快速文件阅读器?我真的不想在外部打开文件。
visual-studio-code - 如何在 vscode 中为 quickPick 菜单设置向上/向下滚动键绑定?
介绍
我在Visual Studio Code中创建了一个扩展,它创建了一个“quickPick”菜单,用户可以从中选择选项:
我可以使用向上和向下箭头滚动列表,但我希望能够将其绑定到对主行更友好的东西,如ctrl-n和ctrl-p。我已经在主命令菜单 (ctrl-shift-p) 上绑定了ctrl-n和ctrl-p来向上/向下滚动,我希望快速选择也符合此规则。不幸的是,我的许多 ctrl-n 上下文绑定都没有生效。
我希望我可以添加到“keybindings.json”中,看起来像:
但是在浏览“默认键盘快捷键”时我看不到这样的东西。
问题
您如何为快速选择列表创建键绑定?
我可以为我的扩展程序创建一个自定义的“何时”上下文吗?然后我可以指定如下内容:
“何时”:“myExtensionIsActive && 等等”
附加文件
以下是我的keybindings.json中所有被覆盖的 ctrl-n 键绑定:
这是我创建 quickPick 的代码:
visual-studio-code - 在 VS Code 扩展中使用集成终端
有多个命令与VS Code 提供的集成终端有关。在我的扩展中,我可以打开它并workbench.action.terminal.focus
使用runSelectedText
. 理想情况下,我希望能够直接运行命令而无需中间文档来模拟选择并能够读取它们的结果。
我发现MainThreadTerminalService似乎提供了我想要的东西,但我不知道如何以及是否可以从扩展中使用它。扫描终端没有产生任何结果,所以我认为这还不可能node_modules/vscode/vscode.d.ts
。
使用TerminalPasteAction来运行命令似乎是一种选择,但我首先必须将命令放入剪贴板,而且无论如何似乎都不是收听结果的好方法。
我知道我可以运行一个子进程并收听它的标准输出和错误,但是由于 VS Code 提供了集成终端窗口,如果用户可以在我独有的单独的集成终端选项卡中看到这些命令,那就太好了扩大。这可能吗?那将会?
json - Microsoft VS Code 上的 JSON 和 tmTheme 主题文件有什么区别?
首先,我尝试将高对比度主题与 Monokai 结合起来。我喜欢高对比度的 UI 外观,但文本颜色是 Visual Studio 的默认深色主题,我想将其更改为 Monokai。
我去“...\Microsoft VS Code\resources\app\extensions..”下寻找主题文件
高对比度 - “..\theme-defaults\themes\hc_black.json”
Monokai - “..\theme-monokai\themes\Monokai.tmTheme”
经检查,这两个文件的属性似乎不同,因此我无法将它们一一映射。在我涉足代码并开始试错方法之前,这些文件在 VS Code 上下文中的主要区别是什么?有没有办法从一个转换到另一个?
visual-studio-code - 您可以创建特定于语言的扩展命令吗?
在开发 VSCode 扩展时,是否可以创建仅适用于某些语言的扩展命令?
在您的package.json
清单中,您可以激活每种语言的扩展程序:
但是,所有扩展的命令面板中仍然有一个命令。在扩展程序被激活之前它不会起作用。
我不知道如何制作命令,只出现在特定语言中......您可以定义这样的命令:
但此命令适用于命令面板中的所有语言。在我的示例中,我想要创建的特定命令实际上只对 HTML 语言有意义。该命令专门在某处查询 API,然后将一些 HTML 插入到当前文件中。因此,显然将此命令用于其他语言(如python
orruby
等)是没有意义的。
是否有可能做到这一点?
visual-studio-code - VSCode 中的动态代码段评估
片段是否可以在 Visual Studio Code 中插入动态计算的完成或片段?
我想要一个用于插入各种格式的日期和时间字符串的片段。例如,如果您键入date
,则 ISO 格式的当前日期将自动扩展。
Sublime Text 中有一个工具可以通过类中的on_query_completions
方法在python API 中执行此操作EventListener
。那里的实现将非常简单:
我已阅读有关User Defined Snippets的文档,但似乎只能插入带有用户填写的制表位和变量的预定义文本。
如果片段 API 公开的功能无法做到这一点,我能否通过较低级别的插件/扩展 API 实现类似的功能?
我确实意识到有一个名为“插入日期和时间”的现有扩展,但这通过命令托盘而不是动态扩展来工作。
node.js - 错误:模块版本不匹配。预期 47,得到 48
我正在编写一个使用本机 node.js 模块的 Visual Studio Code 扩展。当我尝试在 vscode 中调试此扩展时,我在加载本机模块时从上面收到错误消息(注释掉require()
调用时没有出现错误)。它尝试了很多步骤来克服+测试:
npm uninstall native-module
然后是npm install native-module --save-dev
我的 vscode 扩展文件夹中的一个,它完全编译了本机模块并且没有问题。- 完全清理了我的 node_modules 扩展中的文件夹,并再次执行了
npm install --save-dev
. - 再次安装 node.js,包括 LTS 和当前版本。使用 LTS,错误消息更改为:预期 47,得到 46。
- 安装了最新的 vscode(八月恢复版本)
- 在我的 vscode 扩展文件夹中启动了一个节点会话并加载了我的本机模块。这很好用。
- 在此处阅读有关 SO 的各种问题和评论。他们主要推荐我上面描述的内容。
尽管如此,我还是无法让 vscode 接受我的本机模块。我能做些什么?从上述步骤看来,vscode 似乎是使用当前版本和 LTS 之间的 node.js 版本构建的。我可以以某种方式强制我的本机模块使用特定版本吗?
顺便提一句。这些数字 48、47、46 等实际上是什么意思?node.js 版本当然是典型的形式:major.minor.build 和上面的版本号不匹配。
更新:
好的,我发现了这些数字的含义:https ://nodejs.org/en/download/releases/
visual-studio-code - 如何处理 Visual Studio Code 消息框中的点击事件?
根据 API 文档,消息框可以接受第二个参数:一个字符串数组,充当消息框上的操作(通常只有一个关闭按钮/操作):
https://code.visualstudio.com/docs/extensionAPI/vscode-api#_window
所以我尝试了这个:
但这似乎不起作用。我像往常一样收到消息框和关闭按钮。但随后关闭按钮的左侧似乎是另一个没有文本或标题的单个按钮。
另一个函数定义是:
所以我尝试了这样的事情:
但这似乎也不起作用。这方面的文档很少,所以我无法弄清楚。
visual-studio-code - 如何使用 vscode 扩展 API 使用位置和选择文本
我正在尝试为 vscode 编写扩展。功能是选择括号中的文本。但是一开始就卡住了。当我想如下使用位置时,它会抛出异常 var pos = new Position(1, 1);
有人可以分享一些示例代码给我吗?