* extension now working
* fix diff editor title disappearing and remove border from source and target name boxes
* redoing a bunch of stuff that disappeared after rebasing
* add images and add to extensions.ts
* moving a few changes to the right place after rebase
* formatting
* update toolbar svgs
* addressing comments
* add return types
* Adding PR comments
* Adding light and dark theme icons
* Fixing the diff editor title for dark theme
* runAllCells API
* add comment
* more run cells fixes
* Add integration test
* Add multiple cell SQL notebook test
* Comment out python tests as they fail in the lab
* remove unused imports
* PR comments
* Remove localize
* Return true instead of promise.resolve(true)
* Merge from vscode 37cb23d3dd4f9433d56d4ba5ea3203580719a0bd
* fix issues with merges
* bump node version in azpipe
* replace license headers
* remove duplicate launch task
* fix build errors
* fix build errors
* fix tslint issues
* working through package and linux build issues
* more work
* wip
* fix packaged builds
* working through linux build errors
* wip
* wip
* wip
* fix mac and linux file limits
* iterate linux pipeline
* disable editor typing
* revert series to parallel
* remove optimize vscode from linux
* fix linting issues
* revert testing change
* add work round for new node
* readd packaging for extensions
* fix issue with angular not resolving decorator dependencies
* Fix#4356 New Notebook from connection doesn't connect
Fix new notebook error by passing profile instead of ID.
- I could've just sent the ID over, but this fix sets the stage for disconnected connections to work (since we have enough info to properly connect).
- There's a bug in NotebookModel blocking the disconnected connection part working, but Yurong's in progress fixes will unblock this. Hence checking in as-is and working to properly unblock once that's in.
* Support connection profile in commandline service
- Added new context API for things that want to work on commandline and object explorer
- Refactored commandlineservice slightly to be async & have a simpler execution flow (far fewer if/else statements)
* Fix unit tests
- Fixed 2 issues raised by tests (sholdn't do new query if no profile passed, shouldn't error on new query failing)
- Updated unit tests to pass as expected given changes to the APIs.
* upgrade plan is piped through and returns the xml plan
* Added review deploy plan page
* checkbox validation now working and columns formatted
* formatting and cleaning up code
* refactored populateTable()
* addressing comments
* addressing comments
* updating tooltips
* add padding to table cells to align with headers
* fix problems when going back and forth between pages and changing config options
* bump sqltoolsservice version to 71
* fix localization
- Added `runCell` API. Updated runCell button to listen to events on the model so it'll reflect run cell when called from other sources
- Plumbed through kernelspec info to the extension side so when changed, it's updated
- Fixed bug in ConnectionProfile where it didn't copy from options but instead overrode with empty wrapper functions
Here's the rough test code (it's in the sql-vnext extension and will be out in a separate PR)
```ts
it('Should connect to local notebook server with result 2', async function() {
this.timeout(60000);
let pythonNotebook = Object.assign({}, expectedNotebookContent, { metadata: { kernelspec: { name: "python3", display_name: "Python 3" }}});
let uri = writeNotebookToFile(pythonNotebook);
await ensureJupyterInstalled();
let notebook = await sqlops.nb.showNotebookDocument(uri);
should(notebook.document.cells).have.length(1);
let ran = await notebook.runCell(notebook.document.cells[0]);
should(ran).be.true('Notebook runCell failed');
let cellOutputs = notebook.document.cells[0].contents.outputs;
should(cellOutputs).have.length(1);
let result = (<sqlops.nb.IExecuteResult>cellOutputs[0]).data['text/plain'];
should(result).equal('2');
try {
// TODO support closing the editor. Right now this prompts and there's no override for this. Need to fix in core
// Close the editor using the recommended vscode API
//await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
}
catch (e) {}
});
it('Should connect to remote spark server with result 2', async function() {
this.timeout(240000);
let uri = writeNotebookToFile(expectedNotebookContent);
await ensureJupyterInstalled();
// Given a connection to a server exists
let connectionId = await connectToSparkIntegrationServer();
// When I open a Spark notebook and run the cell
let notebook = await sqlops.nb.showNotebookDocument(uri, {
connectionId: connectionId
});
should(notebook.document.cells).have.length(1);
let ran = await notebook.runCell(notebook.document.cells[0]);
should(ran).be.true('Notebook runCell failed');
// Then I expect to get the output result of 1+1, executed remotely against the Spark endpoint
let cellOutputs = notebook.document.cells[0].contents.outputs;
should(cellOutputs).have.length(4);
let sparkResult = (<sqlops.nb.IStreamResult>cellOutputs[3]).text;
should(sparkResult).equal('2');
try {
// TODO support closing the editor. Right now this prompts and there's no override for this. Need to fix in core
// Close the editor using the recommended vscode API
//await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
}
catch (e) {}
});
});
```
* Added Unified connection support
* Use generic way to do expandNode.
Cleanup the ported code and removed unreference code. Added as needed later.
Resolved PR comments.
* Minor fixes and removed timer for all expanders for now. If any providers can't response, the tree node will spin and wait. We may improve later.
* Change handSessionClose to not thenable.
Added a node to OE to show error message instead of reject. So we could show partial expanded result if get any.
Resolve PR comments
* Minor fixes of PR comments
* Add generate script option to deploy scenario
* add action to summary page and fixed page adding/removing so that summary page will have the correct step number
* updating contract based on change in sqltoolsservice
* added enums to make index checks more clear
* cleaned up onPageChanged()
* bump sqltoolsservice version to 68
* Scenarios work besides loading saved kernel
* Fix compilation issue
* Save and load functional
* Fix loading kernesl issue when sql kernel is not enabled
* Fix language mapping to not be hardcoded any longer
* Remove unnecessary comment
* PR Comments vol. 1
* Code cleanup, use ConnectionProfile instead of IConnectionProfile when accessing serverName
* PR changes vol. 2
* One final comment for PR
* Fix linting issue
* add an extension for integration tests
* setup ads before running test
* test setup
* test cases
* bash script
* shorter temp folder name
* code cleanup
* add commented out original code
* fix test error
* test result path
* rename results file
* change file path
* report smoke test results
* test stablize
* test stablization and configurable test servers
* fix smoke test error
* connection provider
* simplify the integration test script
* add comment
* fix tslint error
* address PR comments
* add temp log to check whether the environment variable is already set
* remove temp log
* move api definition to testapi typing file
* exclude integration tests extension
* address comments
* First crack tsql notebook (no output rendered yet)
* getting messages back
* intellisense working first cell, no connection errors
* sql notebook cell output functioning
* Latest SQL noteobook changes
* Undo change to launch.json
* Plumbing providers through
* Kernels shown from multiple providers, can switch between them. No mementos yet
* Ensure we have a feature flag for SQL notebooks, ensure existing functionality still works
* Fix tslint duplicate imports issue
* Addressing PR comments
* second round of PR feedback to cleanup notebook service manager code
* merge latest from master
- Add edit API that can be used in the extension
- Separated document and editor classes out since this is the point those get big. I can refactor back in if needed to ease code review
- Based this off text editing APIs but tweaked for the fact this is a cell/array based set of edits
* agent feature usage metrics
* generalized feature telemetry via dialogs
* renamed eventName property to dialogName
* made dialogName an optional field
initial support for Notebook extensibility. Fixes#3148 , Fixes#3382.
## Design notes
The extensibility patterns are modeled after the VSCode Document and Editor APIs but need to be different since core editor concepts are different - for example Notebooks have cells, and cells have contents rather than editors which have text lines.
Most importantly, a lot of the code is based on the MainThreadDocumentsAndEditors class, with some related classes (the MainThreadDocuments, and MainThreadEditors) brought in too. Given our current limitations I felt moving to add 3 full sets of extension host API classes was overkill so am currently using one. Will see if we need to change this in the future based on what we add in the additional APIs
## Limitations
The current implementation is limited to visible editors, rather than all documents in the workspace. We are not following the `openDocument` -> `showDocument` pattern, but instead just supporting `showDocument` directly.
## Changes in this PR
- Renamed existing APIs to make clear that they were about notebook contents, not about notebook behavior
- Added new APIs for querying notebook documents and editors
- Added new API for opening a notebook
- Moved `New Notebook` command to an extension, and added an `Open Notebook` command too
- Moved notebook feature flag to the extension
## Not covered in this PR
- Need to actually implement support for defining the provider and connection IDs for a notebook. this will be important to support New Notebook from a big data connection in Object Explorer
- Need to add APIs for adding cells, to support
- Need to implement the metadata for getting full notebook contents. I've only implemented to key APIs needed to make this all work.
Full plumb through of Session support. Also fixed some test issues
- Load session and get necessary information in kernels list
- Run Cell button now works as expected
- Added a ToggleAction base class which can be used for anything that switches icons. I'd still prefer to have this be dynamic and as clean as the extension classes
- Fixed account test unhandled promise rejections (caused by incorrect / invalid tests) that made it hard to see all the test run output.
Implements provider contribution in the MainThreadNotebook, with matching function calls in the ExtHostNotebook class. This will allow us to proxy through notebook providers (specifically, creation of a notebook manager with required content, server managers) from an extension up through to the main process.
Implemented in this PR:
- Callthroughs for content and server manager APIs
- Very basic unit tests covering provider & manager registration
Not implemented:
- Fuller unit tests on the specific callthrough methods for content & server manager.
- Contribution point needed to test this (so we can actually pass through the extension's existing Notebook implementation)
- Defines a new NotebookService in Azure Data Studio which will be used to interact with notebooks. Since notebooks can require per-file instantiation the provider is just used to create & track managers for a given URI.
- Inject this into notebook.component.ts and pass required parameters that'll be used to properly initialize a manger into the method. Actual initialization not done yet.
- Port over & recompile notebook model code
- Define most required APIs in sqlops.proposed.d.ts. In the future, these will be used by extensions to contribute their own providers.
* fixed right click context menu bug in jobs view
* added stepInfo and edit job WIP
* show jobs in job edit
* added schedule description on select schedule
* fetch schedules during history and show in edit job
* added alerts to job histories and show in edit
* made history calls async
* filter menus now close when esc is pressed
* fixed bug where clicking on error row wouldnt populate job details
* added functionality to delete steps in a job
* added real time adding steps in edit job
* Enable the support for post-connection behaviors for openConnectionDialog.
* Fixed bugs.
* Make everything in IConnectionCompletionOptions optional except saveConnection.
* showConnectionDialogOnError & showFirewallRuleOnError default to true.
* Use types.isUndefinedOrNull to do value checking.
* Minor changes.
* Enable notification for accounts change
* Fixed bugs in extHostAccountManagement.test.ts
* Fixed as commented:
1. Removed AccountWithProviderHandle
2. Use a private dictionary _accounts in ExtHostAccountManagement to cache all accounts and corresponding provider handles.
3. getSecurityToken gets provider handle from _accounts for specified account.
4. Added / changed unit tests for getAllAccounts & getSecurityToken
* Add support for clickable links and other webview options
- Added click handling
- Added suport for localResourceRoots to be read in the webview
* Options should not be mandatory
* Ensure the constructor-defined properties are preserved
- This fixes issue where the extensionFolderPath was lost during webview withProperties call in the modelbuilder.
* enableCommandUris should be a getter
* Add position support to webview and to flexContainer
* Fix regressions on editor view caused by merge
* Squash merge commits for 1.26 (#1) (#2323)
* Polish tag search as per feedback (#55269)
* Polish tag search as per feedback
* Updated regex
* Allow users to opt-out of features that send online requests in the background (#55097)
* settings sweep #54690
* Minor css tweaks to enable eoverflow elipsis in more places (#55277)
* fix an issue with titlebarheight when not scaling with zoom
* Settings descriptions update #54690
* fixes#55209
* Settings editor - many padding fixes
* More space above level 2 label
* Fixing Cannot debug npm script using Yarn #55103
* Settings editor - show ellipsis when description overflows
* Settings editor - ... fix measuring around links, relayout
* Setting descriptions
* Settings editor - fix ... for some short lines, fix select container width
* Settings editor - overlay trees so scrollable shadow is full width
* Fix#54133 - missing extension settings after reload
* Settings color token description tweak
* Settings editor - disable overflow indicator temporarily, needs to be faster
* Added command to Run the selected npm script
* fixes#54452
* fixes#54929
* fixes#55248
* prefix command with extension name
* Contribute run selected to the context menu
* node-debug@1.26.6
* Allow terminal rendererType to be swapped out at runtime
Part of #53274Fixes#55344
* Settings editor - fix not focusing search when restoring editor
setInput must be actually async. Will be fixed naturally when we aren't using winJS promises...
* Settings editor - TOC should only expand the section with a selected item
* Bump node-debug2
* Settings editor - Tree focus outlines
* Settings editor - don't blink the scrollbar when toc selection changes
And hide TOC correctly when the editor is narrow
* Settings editor - header rows should not be selectable
* fixes#54877
* change debug assignee to isi
* Settings sweep (#54690)
* workaround for #55051
* Settings sweep (#54690)
* settings sweep
#54690
* Don't try closing tags when you type > after another >
* Describe what implementation code lens does
Fixes#55370
* fix javadoc formatter setting description
* fixes#55325
* update to officical TS version
* Settings editor - Even more padding, use semibold instead of bold
* Fix#55357 - fix TOC twistie
* fixes#55288
* explorer: refresh on di change file system provider registration
fixes#53256
* Disable push to Linux repo to test standalone publisher
* New env var to notify log level to extensions #54001
* Disable snippets in extension search (when not in suggest dropdown) (#55281)
* Disable snippits in extension search (when not in suggest dropdown)
* Add monaco input contributions
* Fix bug preventing snippetSuggestions from taking effect in sub-editors
* Latest emmet helper to fix#52366
* Fix comment updates for threads within same file
* Allow extensions to log telemetry to log files #54001
* Pull latest css grammar
* files.exclude control - use same style for "add" vs "edit"
* files.exclude control - focus/keyboard behavior
* don't show menubar too early
* files.exclude - better styling
* Place cursor at end of extensions search box on autofill (#55254)
* Place cursor at end of extensions search box on autofill
* Use position instead of selection
* fix linux build issue (empty if block)
* Settings editor - fix extension category prefixes
* Settings editor - add simple ellipsis for first line that overflows, doesn't cover case when first line does not overflow but there is more text, TODO
* File/Text search provider docs
* Fixes#52655
* Include epoch (#55008)
* Fixes#53385
* Fixes#49480
* VS Code Insiders (Users) not opening Fixes#55353
* Better handling of the case when the extension host fails to start
* Fixes#53966
* Remove confusing Start from wordPartLeft commands ID
* vscode-xterm@3.6.0-beta12
Fixes#55488
* Initial size is set to infinity!! Fixes#55461
* Polish embeddedEditorBackground
* configuration service misses event
* Fix#55224 - fix duplicate results in multiroot workspace from splitting the diskseach query
* Select all not working in issue reporter on mac, fixes#55424
* Disable fuzzy matching for extensions autosuggest (#55498)
* Fix clipping of extensions search border in some third party themes (#55504)
* fixes#55538
* Fix bug causing an aria alert to not be shown the third time
(and odd numbers thereafter)
* Settings editor - work around rendering glitch with webkit-line-clamp
* Settings editor - revert earlier '...' changes
* Settings editor - move enumDescription to its own div, because it disturbs -webkit-line-clamp for some reason
* Settings editor - better overflow indicator
* Don't show existing filters in autocomplete (#55495)
* Dont show existing filters in autocomplete
* Simplify
* Settings Editor: Add aria labels for input elements Fixes: #54836 (#55543)
* fixes#55223
* Update vscode-css-languageservice to 3.0.10-next.1
* Fix#55509 - settings navigation
* Fix#55519
* Fix#55520
* FIx#55524
* Fix#55556 - include wordSeparators in all search queries, so findTextInFiles can respect isWordMatch correctly
* oss updates for endgame
* Fix unit tests
* fixes#55522
* Avoid missing manifest error from bubbling up #54757
* Settings format crawl
* Search provider - Fix FileSearchProvider to return array, not progress
* Fix#55598
* Settings editor - fix NPE rendering settings with no description
* dont render inden guides in search box (#55600)
* fixes#55454
* More settings crawl
* Another change for #55598 - maxResults applies to FileSearch and TextSearch but not FileIndex
* Fix FileSearchProvider unit tests for progress change
* fixes#55561
* Settings description update for #54690
* Update setting descriptions for online services
* Minor edits
* fixes#55513
* fixes#55451
* Fix#55612 - fix findTextInFiles cancellation
* fixes#55539
* More setting description tweaks
* Setting to disable online experiments #54354
* fixes#55507
* fixes#55515
* Show online services action only in Insiders for now
* Settings editor - change toc behavior default to 'filter'
* Settings editor - nicer filter count style during search
* Fix#55617 - search viewlet icons
* Settings editor - better styling for element count indicator
* SearchProvider - fix NPE when searching extraFileResources
* Allow extends to work without json suffix
Fixes#16905
* Remove accessability options logic entirely
Follow up on #55451
* use latest version of DAP
* fixes#55490
* fixes#55122
* fixes#52332
* Avoid assumptions about git: URIs (fixes#36236)
* relative path for descriptions
* resourece: get rid of isFile context key
fixes#48275
* Register previous ids for compatibility (#53497)
* more tuning for #48275
* no need to always re-read "files explorer"
fixes#52003
* read out active composites properly
fixes#51967
* Update link colors for hc theme to meet color contrast ratio, fixes#55651
Also updated link color for `textLinkActiveForeground` to be the same as `textLinkForeground` as it wasn't properly updated
* detect 'winpty-agent.exe'; fixes#55672
* node-debug@1.26.7
* reset counter on new label
* Settings editor - fix multiple setting links in one description
* Settings editor - color code blocks in setting descriptions, fix#55532
* Settings editor - hover color in TOC
* Settings editor - fix navigation NPE
* Settings editor - fix text control width
* Settings editor - maybe fix#55684
* Fix bug causing cursor to not move on paste
* fixes#53582
* Use ctrlCmd instead of ctrl for go down from search box
* fixes#55264
* fixes#55456
* filter for spcaes before triggering search (#55611)
* Fix#55698 - don't lose filtered TOC counts when refreshing TOC
* fixes#55421
* fixes#28979
* fixes#55576
* only add check for updates to windows/linux help
* readonly files: append decoration to label
fixes#53022
* debug: do not show toolbar while initialising
fixes#55026
* Opening launch.json should not activate debug extensions
fixes#55029
* fixes#55435
* fixes#55434
* fixes#55439
* trigger menu only on altkey up
* Fix#50555 - fix settings editor memory leak
* Fix#55712 - no need to focus 'a' anymore when restoring control focus after tree render
* fixes#55335
* proper fix for readonly model
fixes#53022
* improve FoldingRangeKind spec (for #55686)
* Use class with static fields (fixes#55494)
* Fixes#53671
* fixes#54630
* [html] should disable ionic suggestions by default. Currently forces deprecated Ionic v1 suggestions in .html files while typing. Fixes#53324
* cleanup deps
* debug issues back to andre
* update electron for smoketest
* Fix#55757 - prevent settings tabs from overflowing
* Fix#53897 - revert setting menu defaults to old editor
* Add enum descriptions to `typescript.preferences.importModuleSpecifier`
* Fix#55767 - leaking style elements from settings editor
* Fix#55521 - prevent flashing when clicking in exclude control
* Update Git modified color for contrast ratio, fixes#53140
* Revert "Merge branch 'master' of github.com:Microsoft/vscode"
This reverts commit bf46b6bfbae0cab99c2863e1244a916181fa9fbc, reversing
changes made to e275a424483dfb4ed33b428c97d5e2c441d6b917.
* Revert "Revert "Merge branch 'master' of github.com:Microsoft/vscode""
This reverts commit 53949d963f39e40757557c6526332354a31d9154.
* don't ask to install an incomplete menu
* Fix NPE in terminal AccessibilityManager
Fixes#55744
* don't display fallback menu unless we've closed the last window
* fixes#55547
* Fix smoke tests for extension search box
* Update OSSREADME.json for Electron 2.0.5
* Update distro
Includes Chromium license changes
* fix#55455
* fix#55865
* fixes#55893
* Fix bug causing workspace recommendations to go away upon ignoring a recommendation (#55805)
* Fix bug causing workspace recommendations to go away upon ignoring a recommendation
* ONly show on @recommended or @recommended:workspace
* Make more consistant
* Fix#55911
* Understand json activity (#55926)
* Understand json file activity
* Refactoring
* adding composer.json
* Distro update for experiments
* use terminal.processId for auto-attach; fixes#55918
* Reject invalid URI with vscode.openFolder (for #55891)
* improve win32 setup system vs user detection
fixes#55840fixes#55840
delay winreg import
related to #55840
show notification earlier
related to #55840fix#55840
update inno setup message
related to #55840
* Fix#55593 - this code only operates on local paths, so use fsPath and Uri.file instead
* Bring back the old menu due to electron 2.0 issues (#55913)
* add the old menu back for native menus
* make menu labels match
* `vscode.openFolder`: treat missing URI schema gracefully (for #55891)
* delay EH reattach; fixes#55955
* Mark all json files under appSettingsHome as settings
* Use localized strings for telemetry opt-out
* Exception when saving file editor opened from remote file provider (fixes#55051)
* Remove terminal menu from stable
Fixes 56003
* VSCode Insiders crashes on open with TypeError: Cannot read property 'lastIndexOf' of undefined. Fixes#54933
* improve fix for #55891
* fix#55916
* Improve #55891
* increase EH debugging restart delay; fixes#55955
* Revert "Don't include non-resource entries in history quick pick"
This reverts commit 37209a838e9f7e9abe6dc53ed73cdf1e03b72060.
* Diff editor: horizontal scrollbar height is smaller (fixes#56062)
* improve openFolder uri fix (correctly treat backslashes)
* fixes#56116
repair ipc for native menubar keybindings
* Fix#56240 - Open the JSON settings editor instead of the UI editor
* Fix#55536
* uriDisplay: if no formatter is registered fall back to getPathlabel
fixes#56104
* VSCode hangs when opening python file. Fixes#56377
* VS Code Hangs When Opening Specific PowerShell File. Fixes#56430
* Fix#56433 - search extraFileResources even when no folders open
* Workaround #55649
* Fix in master #56371
* Fix tests #56371
* Fix in master #56317
* increase version to 1.26.1
* Fixes#56387: Handle SIGPIPE in extension host
* fixes#56185
* Fix merge issues (part 1)
* Fix build breaks (part 1)
* Build breaks (part 2)
* Build breaks (part 3)
* More build breaks (part 4)
* Fix build breaks (part 5)
* WIP
* Fix menus
* Render query result and message panels (#2363)
* Put back query editor hot exit changes
* Fix grid changes that broke profiler (#2365)
* Update APIs for saving query editor state
* Fix restore view state for profiler and edit data
* Updating custom default themes to support 4.5:1 contrast ratio
* Test updates
* Fix Extension Manager and Windows Setup
* Update license headers
* Add appveyor and travis files back
* Fix hidden modal dropdown issue
* 1.Added following functions to namespace accounts
function getAllAccounts(): Thenable<AccountWithProviderHandle[]>;
function getSecurityToken(account: AccountWithProviderHandle): Thenable<{}>;
2.Added class AccountWithProviderHandle as the wrapper for Account
3.Changed function openConnectionDialog of namespace connection to allow connection dialog initialized with specified parameters, i.e., server name, database name, etc.
function openConnectionDialog(provider?: string[], initialConnectionProfile?: IConnectionProfile): Thenable<connection.Connection>;
* Added unit tests for ExtHostAccountManagement.$getAllAccounts
* connection string
* formatting
* change serailize reponse type to match connect params
* add connection string serialization
* readd the connection string to the connection widget
* format
* remove unnecessary change
* update serializer to require provider
* update name of function
* fix function name
* bump dataprotocol and sqltools
* revert unnecessary change
* remove more unnecessary chagnes
* bump sqltoolsserivce
* adde configuration for auto parsing the clipboard