From e744c4799964fa69e9190735a64c1ebabb249743 Mon Sep 17 00:00:00 2001 From: Elia Schito Date: Tue, 12 Sep 2023 11:15:48 +0200 Subject: [PATCH] open-quickly: [wip] --- extension.js | 1 + package.json | 8 +++++ src/openQuickly.js | 75 ++++++++++++++++++++++++++++++++++++++++++++ src/openQuickly.json | 16 ++++++++++ 4 files changed, 100 insertions(+) create mode 100644 src/openQuickly.js create mode 100644 src/openQuickly.json diff --git a/extension.js b/extension.js index 1ea76f3..39d6e8b 100644 --- a/extension.js +++ b/extension.js @@ -4,6 +4,7 @@ const features = [ require("./src/closeEditors"), require("./src/openProject"), require("./src/columnMovements"), + require("./src/openQuickly"), ] function activate(context) { diff --git a/package.json b/package.json index 4fc9f9a..94f3730 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,10 @@ { "title": "TextMate: Open Recent Project", "command": "vscode-textmate.openProject" + }, + { + "title": "TextMate: Open Quickly…", + "command": "vscode-textmate.openQuickly" } ], "keybindings": [ @@ -998,6 +1002,10 @@ { "key": "cmd+shift+o", "command": "vscode-textmate.openProject" + }, + { + "key": "cmd+alt+t", + "command": "vscode-textmate.openQuickly" } ] }, diff --git a/src/openQuickly.js b/src/openQuickly.js new file mode 100644 index 0000000..01932f6 --- /dev/null +++ b/src/openQuickly.js @@ -0,0 +1,75 @@ +const vscode = require("vscode") +const path = require("path") + +function activate(context) { + // Register a command to open a quick pick menu + context.subscriptions.push( + vscode.commands.registerCommand("vscode-textmate.openQuickly", async () => { + const workspaceFolders = vscode.workspace.workspaceFolders + if (!workspaceFolders) { + vscode.window.showErrorMessage("No workspace folders found.") + return + } + const searchConfig = vscode.workspace.getConfiguration("search") + const fileUris = await vscode.workspace.findFiles( + "**/*", + searchConfig.get("exclude"), + ) + const items = fileUris.map((uri) => { + const filePath = uri.fsPath + const fileName = path.basename(filePath) + const folderName = path.basename(path.dirname(filePath)) + return { + label: fileName, + description: folderName, + uri, + } + }) + const selectedFiles = [await vscode.window.showQuickPick(items, { + canPickMany: false, + })] + + let activeEditorIndex = vscode.window.visibleTextEditors.findIndex( + (editor) => editor.document === vscode.window?.activeTextEditor?.document, + ) + console.log({ activeEditorIndex, selectedFiles }) + + + selectedFiles.forEach(async (selected) => { + const alreadyOpen = vscode.window.visibleTextEditors.find( + (editor) => editor.document.uri === selected.uri, + ) + + if (alreadyOpen) { + vscode.window.showTextDocument(alreadyOpen.document) + } else { + const document = await vscode.workspace.openTextDocument(selected.uri) + vscode.window.showTextDocument(document, { preview: false }) + } + + // let activeEditorIndex = 0 // vscode.window.tabGroups.activeTabGroup.indexOf(vscode.window.activeTextEditor) + // vscode.window.showTextDocument(document) + // vscode.commands.executeCommand('workbench.action.moveEditor', { to: 'right' }); + // const document = await vscode.workspace.openTextDocument(selected.uri) + // const viewColumn = activeEditor + // ? activeEditor.viewColumn + 1 + // : vscode.ViewColumn.One + + // vscode.window.showTextDocument(document, { preview: false }) + console.log({ activeEditorIndex }) + vscode.commands.executeCommand("moveActiveEditor", { + to: "position", + by: "tab", + value: activeEditorIndex++, + }) + }) + }), + ) +} + +const deactivate = () => {} + +module.exports = { + activate, + deactivate, +} diff --git a/src/openQuickly.json b/src/openQuickly.json new file mode 100644 index 0000000..fdddc99 --- /dev/null +++ b/src/openQuickly.json @@ -0,0 +1,16 @@ +{ + "contributes": { + "commands": [ + { + "title": "TextMate: Open Quickly…", + "command": "vscode-textmate.openQuickly" + } + ], + "keybindings": [ + { + "key": "cmd+alt+t", + "command": "vscode-textmate.openQuickly" + } + ] + } +}