visual-studio-code - 将行分隔符和标签添加到 VS Code 扩展中的 QuickPick

标签 visual-studio-code vscode-extensions

如何将分隔线添加到快速选择菜单,类似于“配置片段”中所做的操作。另外,如何添加“现有片段”和“新片段”标签,如屏幕截图所示?

QuickPick window

最佳答案

现在,在 vscode v1.64 Insiders 中,如果一切顺利,2022 年 2 月初的稳定 v1.64 中将能够向 QuickPicks 添加分隔符和这些分隔符的标签。

参见Test: Finalized API for QuickPickItem separators对于公司 sample 。

我做了一个更真实的代码示例。在您的扩展中:

const currentWorkSpace = await vscode.workspace.getWorkspaceFolder(vscode.window.activeTextEditor.document.uri);

const allFilesFolders = fs.readdirSync(currentWorkSpace.uri.fsPath);

// get workspace folders starting with a 'c'
let  onlyFolders = allFilesFolders.filter(f => fs.statSync(path.join(currentWorkSpace.uri.fsPath, f)).isDirectory() && f.startsWith('c'));

// get workspace files
let  onlyFiles = allFilesFolders.filter(f => fs.statSync(path.join(currentWorkSpace.uri.fsPath, f)).isFile());

// make a separator for the 'Folder' group
const folderSeparator = {
    label: 'Folders',
    kind: vscode.QuickPickItemKind.Separator  // this is new
};

// make a separator for the 'File' group
const fileSeparator = {
    label: 'Files',
    kind: vscode.QuickPickItemKind.Separator
};

// put the Folder separator at the beginning 
onlyFolders.unshift(folderSeparator);

// concat the File separator to the end of the folder array
onlyFolders = onlyFolders.concat(fileSeparator);

// concat the file array to the end of the folder array + separators
onlyFolders = onlyFolders.concat(onlyFiles);

await vscode.window.showQuickPick(onlyFolders, {
    canPickMany: true,
    placeHolder: "Select folders"
}).then(items => {
    if (items) {
        // the selected items
    }
});

或者在最后使用此表格:

const qpSelections =  await vscode.window.showQuickPick(onlyFolders, {
    canPickMany: true,
    placeHolder: "Select folders"
});
// }).then(items => {
//  if (items) {
//      // the items selected
//  }
// });

vscode.window.showInformationMessage(`You selected: ${qpSelections}`);

这会导致:

QuickPick separators and labels demo

顺便说一句,这些colorCustomizations会影响分隔符和标签:

{
  "workbench.colorCustomizations": {

    "pickerGroup.foreground": "#000",  // for QuickPick labels
    "pickerGroup.border": "#ff0000",   // for QuickPick separators
}

要在 Insiders Build 中测试此功能,您需要在扩展程序的 package.json 中添加此内容:

"enabledApiProposals": [
    "quickPickSeparators"
],

这会将建议的 quickPickSeparators API 添加到您的扩展中。

关于visual-studio-code - 将行分隔符和标签添加到 VS Code 扩展中的 QuickPick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58898412/

相关文章:

java - 需要在 Visual Studio Code 中导入 Eclipse Java Formatter 配置文件

visual-studio-code - Visual Studio Code 个人扩展标记为过时

python - 在VS Code API中,如何获取Python环境路径?

visual-studio-code - 如何在输出 channel 中创建可单击的文件位置链接,以在编辑器选项卡中打开文件?

c++ - C++编译错误已自行修复(试图找出原因)

visual-studio-code - 有没有办法让事件标签边框突出显示在顶部而不是底部?

visual-studio-code - 如何在 VS Code 的更改 View 中交换不同的 Pane ?

android - 向 pubspec.yml 添加依赖项后,Flutter 应用程序无法在 android 中编译

visual-studio-code - 如何使用 VS Code 的 API 获取正则表达式匹配的行号和字符位置?

visual-studio-code - 将运行代码选项添加到 VSCode 中的新语言