如何在vscode中选择多个文件?

时间:2018-01-09 16:46:22

标签: visual-studio-code vscode-extensions

我想写一个扩展来做一个这样的函数:

  1. 选择两个或多个文件
  2. 右键单击并在merge files
  3. 中选择explore/context之类的命令
  4. 打开一个对话框以保存结果
  5. 我发现似乎vscode没有API来选择explore中的文件。 那么我该如何做select multiple files

    根据extension-points,我发现所有RawContextKey here,我发现条件不符合我的要求。

2 个答案:

答案 0 :(得分:0)

VSCode 1.20介绍了multi select in explorer window。在文档中,我没有找到when条款,您可以使用该条款来查明是选择了2个文件还是只选择了一个,但在源代码中我找到了这些上下文:

const RawWorkbenchListFocusContextKey = new RawContextKey<boolean>('listFocus', true);
export const WorkbenchListSupportsMultiSelectContextKey = new RawContextKey<boolean>('listSupportsMultiselect', true);
export const WorkbenchListFocusContextKey = ContextKeyExpr.and(RawWorkbenchListFocusContextKey, ContextKeyExpr.not(InputFocusedContextKey));
export const WorkbenchListDoubleSelection = new RawContextKey<boolean>('listDoubleSelection', false);
export const WorkbenchListMultiSelection = new RawContextKey<boolean>('listMultiSelection', false);

具体来说,当您选择2个文件时,WorkbenchListDoubleSelection用于上下文菜单中的Compare selected命令。

https://github.com/Microsoft/vscode/blob/9e6944d0edf2e787df110c9f444280e7256d4149/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts#L375-L379

https://github.com/Microsoft/vscode/blob/aa580cae2dc92501df8e1342b72b9dc5c2d8c58f/src/vs/platform/list/browser/listService.ts#L90-L94

答案 1 :(得分:0)

VSCode最近增加了允许在自定义视图中进行多重选择的功能。要允许在自定义视图中进行多重选择,您应该在TreeViewOptions<T>函数调用中指定第二个参数window.createTreeView并将其属性canSelectMany设置为true。
用法示例如下:

window.createTreeView(/*YOUR_VIEW_NAME*/, {
    treeDataProvider: /*YOUR_TREE_DATA_PROVIDER*/,
    canSelectMany: true // enables multi selection
});