diff --git a/extensions/notebook/package.json b/extensions/notebook/package.json index 4ba848c71b..b5cb19d0ee 100644 --- a/extensions/notebook/package.json +++ b/extensions/notebook/package.json @@ -147,6 +147,14 @@ "dark": "resources/dark/save_inverse.svg", "light": "resources/light/save.svg" } + }, + { + "command": "notebook.command.searchBook", + "title": "%title.searchJupyterBook%", + "icon": { + "dark": "resources/dark/manage_inverse.svg", + "light": "resources/light/manage.svg" + } } ], "languages": [ diff --git a/extensions/notebook/package.nls.json b/extensions/notebook/package.nls.json index 38a2fbdd3f..4821920386 100644 --- a/extensions/notebook/package.nls.json +++ b/extensions/notebook/package.nls.json @@ -30,6 +30,7 @@ "title.SQL19PreviewBook": "SQL Server 2019 Guide", "books-preview-category": "Jupyter Books", "title.saveJupyterBook": "Save Book", + "title.searchJupyterBook": "Search Book", "title.SavedBooks": "Saved Books", "title.UntitledBooks": "Untitled Books" } diff --git a/extensions/notebook/src/book/bookTreeItem.ts b/extensions/notebook/src/book/bookTreeItem.ts index 8ca075e00a..29111b5746 100644 --- a/extensions/notebook/src/book/bookTreeItem.ts +++ b/extensions/notebook/src/book/bookTreeItem.ts @@ -42,6 +42,8 @@ export class BookTreeItem extends vscode.TreeItem { this._sections = book.page; if (book.isUntitled) { this.contextValue = 'untitledBook'; + } else { + this.contextValue = 'savedBook'; } } else { this.setPageVariables(); diff --git a/extensions/notebook/src/book/bookTreeView.ts b/extensions/notebook/src/book/bookTreeView.ts index 01adacfd0f..f06d93bd8a 100644 --- a/extensions/notebook/src/book/bookTreeView.ts +++ b/extensions/notebook/src/book/bookTreeView.ts @@ -191,7 +191,13 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider { + if (this.currentBook && this.currentBook.bookPath) { + let filesToIncludeFiltered = path.join(this.currentBook.bookPath, '**', '*.md') + ',' + path.join(this.currentBook.bookPath, '**', '*.ipynb'); + vscode.commands.executeCommand('workbench.action.findInFiles', { filesToInclude: filesToIncludeFiltered, query: '' }); + } } private runThrottledAction(resource: string, action: () => void) { diff --git a/extensions/notebook/src/extension.ts b/extensions/notebook/src/extension.ts index 3d82012e77..3cfd7be951 100644 --- a/extensions/notebook/src/extension.ts +++ b/extensions/notebook/src/extension.ts @@ -34,6 +34,7 @@ export async function activate(extensionContext: vscode.ExtensionContext): Promi extensionContext.subscriptions.push(vscode.commands.registerCommand('bookTreeView.openMarkdown', (resource) => bookTreeViewProvider.openMarkdown(resource))); extensionContext.subscriptions.push(vscode.commands.registerCommand('bookTreeView.openExternalLink', (resource) => bookTreeViewProvider.openExternalLink(resource))); extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.saveBook', () => untitledBookTreeViewProvider.saveJupyterBooks())); + extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.searchBook', () => bookTreeViewProvider.searchJupyterBooks())); extensionContext.subscriptions.push(vscode.commands.registerCommand('_notebook.command.new', (context?: azdata.ConnectedContext) => { let connectionProfile: azdata.IConnectionProfile = undefined;