diff --git a/packages/extension/package.json b/packages/extension/package.json index dd4d5d4db..6980d0fc5 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -290,6 +290,10 @@ "command": "sqltools.copyTextFromTreeItem", "category": "SQLTools Sidebar" }, + { + "title": "Copy Selected Message(s)", + "command": "sqltools.copyTextFromConsoleMessages" + }, { "title": "Generate Insert Query", "command": "sqltools.generateInsertQuery", @@ -1034,6 +1038,10 @@ "command": "sqltools.copyTextFromTreeItem", "when": "false" }, + { + "command": "sqltools.copyTextFromConsoleMessages", + "when": "false" + }, { "command": "sqltools.refreshTree", "when": "false" @@ -1160,9 +1168,9 @@ "group": "sqltools.connectionExplorer.edit@1" }, { - "command": "sqltools.copyTextFromTreeItem", + "command": "sqltools.copyTextFromConsoleMessages", "when": "view == sqltoolsViewConsoleMessages", - "group": "sqltools.connectionExplorer.edit@1" + "group": "sqltools.consoleMessages.edit@1" }, { "command": "sqltools.selectConnection", diff --git a/packages/plugins/connection-manager/explorer/index.ts b/packages/plugins/connection-manager/explorer/index.ts index d939068dc..d1f8a68e0 100644 --- a/packages/plugins/connection-manager/explorer/index.ts +++ b/packages/plugins/connection-manager/explorer/index.ts @@ -105,7 +105,7 @@ export class ConnectionExplorer implements TreeDataProvider, Tr } }); this.messagesTreeViewProvider = new MessagesProvider(); - this.messagesTreeView = window.createTreeView(`${EXT_NAMESPACE}ViewConsoleMessages`, { treeDataProvider: this.messagesTreeViewProvider, canSelectMany: false, showCollapseAll: true }); + this.messagesTreeView = window.createTreeView(`${EXT_NAMESPACE}ViewConsoleMessages`, { treeDataProvider: this.messagesTreeViewProvider, canSelectMany: true, showCollapseAll: true }); Context.subscriptions.push(this.treeView, this.messagesTreeView); } diff --git a/packages/plugins/connection-manager/extension.ts b/packages/plugins/connection-manager/extension.ts index 279473e80..288ea903f 100644 --- a/packages/plugins/connection-manager/extension.ts +++ b/packages/plugins/connection-manager/extension.ts @@ -653,6 +653,10 @@ export class ConnectionManagerPlugin implements IExtensionPlugin { this.updateAttachedConnectionsMap(fileUri); } + private ext_copyTextFromConsoleMessages = async (item, selectedNodes) => { + return commands.executeCommand(`${EXT_NAMESPACE}.copyMessages`, item, selectedNodes); + } + private ext_copyTextFromTreeItem = async () => { const nodes = this.explorer.getSelection(); if (!nodes || nodes.length === 0) return; @@ -792,6 +796,7 @@ export class ConnectionManagerPlugin implements IExtensionPlugin { .registerCommand(`testConnection`, this.ext_testConnection) .registerCommand(`getConnections`, this.ext_getConnections) .registerCommand(`detachConnectionFromFile`, this.ext_detachConnectionFromFile) + .registerCommand(`copyTextFromConsoleMessages`, this.ext_copyTextFromConsoleMessages) .registerCommand(`copyTextFromTreeItem`, this.ext_copyTextFromTreeItem) .registerCommand(`getChildrenForTreeItem`, this.ext_getChildrenForTreeItem) .registerCommand(`getInsertQuery`, this.ext_getInsertQuery); diff --git a/packages/plugins/formatter/extension.ts b/packages/plugins/formatter/extension.ts index 59aec415a..9be84b3b0 100644 --- a/packages/plugins/formatter/extension.ts +++ b/packages/plugins/formatter/extension.ts @@ -55,6 +55,13 @@ function copyTextHandler(item: { value: string } | string, items?: ({ value: str return env.clipboard.writeText(copyText); } +function copyMessagesHandler(item: { value: string } | string, items?: ({ value: string } | string)[]) { + items = items ? items : [item]; + const copyText = items.filter(n => n !== null && typeof n !== 'undefined').map(item => `${(item).label || item} [${(item).description}]`).join('\n'); + if (!copyText) return; + return env.clipboard.writeText(copyText); +} + async function generateInsertQueryHandler(item: SidebarItem) { const columns: NSDatabase.IColumn[] = await commands.executeCommand(`${EXT_NAMESPACE}.getChildrenForTreeItem`, { conn: item.conn, @@ -76,6 +83,7 @@ const register = (extension: IExtension) => { extension.registerTextEditorCommand(`formatSql`, formatSqlHandler) .registerCommand(`insertText`, insertTextHandler) .registerCommand(`copyText`, copyTextHandler) + .registerCommand(`copyMessages`, copyMessagesHandler) .registerCommand(`generateInsertQuery`, generateInsertQueryHandler) .registerCommand(`newSqlFile`, newSqlFileHandler); }