diff --git a/extensions/json-language-features/CONTRIBUTING.md b/extensions/json-language-features/CONTRIBUTING.md index f223cae3b7..90367dec71 100644 --- a/extensions/json-language-features/CONTRIBUTING.md +++ b/extensions/json-language-features/CONTRIBUTING.md @@ -27,9 +27,9 @@ However, within this extension, you can run a development version of `vscode-jso #### Linking `vscode-json-languageservice` in `json-language-features/server/` - Clone [Microsoft/vscode-json-languageservice](https://github.com/Microsoft/vscode-json-languageservice) -- Run `yarn` in `vscode-json-languageservice` -- Run `yarn link` in `vscode-json-languageservice`. This will compile and link `vscode-json-languageservice` -- In `json-language-features/server/`, run `npm link vscode-json-languageservice` +- Run `npm install` in `vscode-json-languageservice` +- Run `npm link` in `vscode-json-languageservice`. This will compile and link `vscode-json-languageservice` +- In `json-language-features/server/`, run `yarn link vscode-json-languageservice` #### Testing the development version of `vscode-json-languageservice` diff --git a/extensions/json-language-features/server/package.json b/extensions/json-language-features/server/package.json index fc2323a773..1f73cea229 100644 --- a/extensions/json-language-features/server/package.json +++ b/extensions/json-language-features/server/package.json @@ -14,7 +14,7 @@ "dependencies": { "jsonc-parser": "^2.0.3", "request-light": "^0.2.4", - "vscode-json-languageservice": "^3.3.0-next.6", + "vscode-json-languageservice": "^3.3.0-next.7", "vscode-languageserver": "^5.3.0-next.2", "vscode-nls": "^4.0.0", "vscode-uri": "^1.0.6" diff --git a/extensions/json-language-features/server/yarn.lock b/extensions/json-language-features/server/yarn.lock index bb8489b6d8..3f0383a8c4 100644 --- a/extensions/json-language-features/server/yarn.lock +++ b/extensions/json-language-features/server/yarn.lock @@ -73,10 +73,10 @@ request-light@^0.2.4: https-proxy-agent "^2.2.1" vscode-nls "^4.0.0" -vscode-json-languageservice@^3.3.0-next.6: - version "3.3.0-next.6" - resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.3.0-next.6.tgz#711f121b44ba443a89f3fb01a01c611f2547079f" - integrity sha512-i1tyLiodWc7y6lR9C4cat+OUSptj8Duk1Ybm1FaMzhNfOTFttSiwrBw1otNb+QwI65VEj7EAEBQHRLeQOWznMw== +vscode-json-languageservice@^3.3.0-next.7: + version "3.3.0-next.7" + resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.3.0-next.7.tgz#3ad4bf31f37fa110676b2c0db69b5f4810bdd4b9" + integrity sha512-uKXnzoZrqNOPRa+FmUdoCpNU5KCLhy7yDGCAzzfn0mocsEllPcspjHcBDu9HJCfT165UkhulZ2gl5vVX5NzBVA== dependencies: jsonc-parser "^2.0.3" vscode-languageserver-types "^3.14.0" diff --git a/extensions/theme-defaults/themes/dark_defaults.json b/extensions/theme-defaults/themes/dark_defaults.json index 276a71d0fd..00c2ac8c36 100644 --- a/extensions/theme-defaults/themes/dark_defaults.json +++ b/extensions/theme-defaults/themes/dark_defaults.json @@ -15,6 +15,8 @@ "settings.textInputBackground": "#292929", "settings.numberInputBackground": "#292929", "menu.background": "#252526", - "menu.foreground": "#CCCCCC" + "menu.foreground": "#CCCCCC", + "statusBarItem.remoteForeground": "#FFF", + "statusBarItem.remoteBackground": "#16825D" } } \ No newline at end of file diff --git a/extensions/theme-defaults/themes/light_defaults.json b/extensions/theme-defaults/themes/light_defaults.json index 91c5fb1d93..e28c9b8ed0 100644 --- a/extensions/theme-defaults/themes/light_defaults.json +++ b/extensions/theme-defaults/themes/light_defaults.json @@ -14,6 +14,8 @@ "list.hoverBackground": "#E8E8E8", "input.placeholderForeground": "#767676", "settings.textInputBorder": "#CECECE", - "settings.numberInputBorder": "#CECECE" + "settings.numberInputBorder": "#CECECE", + "statusBarItem.remoteForeground": "#FFF", + "statusBarItem.remoteBackground": "#16825D" } } \ No newline at end of file diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index eed5499d2c..5244bd43f0 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -789,12 +789,18 @@ class Trait { return; } + this._set(nodes, false, browserEvent); + } + + private _set(nodes: ITreeNode[], silent: boolean, browserEvent?: UIEvent): void { this.nodes = [...nodes]; this.elements = undefined; this._nodeSet = undefined; - const that = this; - this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); + if (!silent) { + const that = this; + this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); + } } get(): T[] { @@ -827,6 +833,7 @@ class Trait { insertedNodes.forEach(node => dfs(node, insertedNodesVisitor)); const nodes: ITreeNode[] = []; + let silent = true; for (const node of this.nodes) { const id = this.identityProvider.getId(node.element).toString(); @@ -839,11 +846,13 @@ class Trait { if (insertedNode) { nodes.push(insertedNode); + } else { + silent = false; } } } - this.set(nodes); + this._set(nodes, silent); } private createNodeSet(): Set> { diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 5ea686b132..8861615198 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -8970,7 +8970,7 @@ declare module 'vscode' { /** * The uri of the document the thread has been created on. */ - readonly resource: Uri; + readonly uri: Uri; /** * The range the comment thread is located within the document. The thread icon will be shown @@ -9003,18 +9003,6 @@ declare module 'vscode' { */ acceptInputCommand?: Command; - /** - * Optional additonal commands. - * - * `additionalCommands` are the secondary actions rendered on Comment Widget. - */ - additionalCommands?: Command[]; - - /** - * The command to be executed when users try to delete the comment thread. Currently, this is only called - * when the user collapses a comment thread that has no comments in it. - */ - deleteCommand?: Command; /** * Dispose this comment thread. @@ -9040,6 +9028,22 @@ declare module 'vscode' { iconPath?: Uri; } + /** + * Author information of a [comment](#Comment) + */ + + export interface CommentAuthorInformation { + /** + * The display name of the author of the comment + */ + name: string; + + /** + * The optional icon path for the author + */ + iconPath?: Uri; + } + /** * A comment is displayed within the editor or the Comments Panel, depending on how it is provided. */ @@ -9074,11 +9078,6 @@ declare module 'vscode' { * The command to be executed when users try to save the edits to the comment */ editCommand?: Command; - - /** - * The command to be executed when users try to delete the comment - */ - deleteCommand?: Command; } /** @@ -9193,7 +9192,7 @@ declare module 'vscode' { * @param range The range the comment thread is located within the document. * @param comments The ordered comments of the thread. */ - createCommentThread(id: string, resource: Uri, range: Range, comments: Comment[]): CommentThread; + createCommentThread(id: string, uri: Uri, range: Range, comments: Comment[]): CommentThread; /** * Dispose this comment controller. diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 9cf1a9e7bb..08bb99320a 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -792,6 +792,11 @@ declare module 'vscode' { */ isDraft?: boolean; + /** + * The command to be executed when users try to delete the comment + */ + deleteCommand?: Command; + /** * Proposed Comment Reaction */ @@ -905,6 +910,26 @@ declare module 'vscode' { toggleReaction?(document: TextDocument, comment: Comment, reaction: CommentReaction): Promise; } + export interface CommentThread { + /** + * The uri of the document the thread has been created on. + */ + readonly resource: Uri; + + /** + * Optional additonal commands. + * + * `additionalCommands` are the secondary actions rendered on Comment Widget. + */ + additionalCommands?: Command[]; + + /** + * The command to be executed when users try to delete the comment thread. Currently, this is only called + * when the user collapses a comment thread that has no comments in it. + */ + deleteCommand?: Command; + } + export interface CommentController { /** diff --git a/src/vs/workbench/api/common/extHostComments.ts b/src/vs/workbench/api/common/extHostComments.ts index 5111faac03..466c45f5e2 100644 --- a/src/vs/workbench/api/common/extHostComments.ts +++ b/src/vs/workbench/api/common/extHostComments.ts @@ -385,7 +385,11 @@ export class ExtHostCommentThread implements vscode.CommentThread { } get resource(): vscode.Uri { - return this._resource; + return this._uri; + } + + get uri(): vscode.Uri { + return this._uri; } private _onDidUpdateCommentThread = new Emitter(); @@ -476,7 +480,7 @@ export class ExtHostCommentThread implements vscode.CommentThread { private readonly _commandsConverter: CommandsConverter, private _commentController: ExtHostCommentController, private _id: string, - private _resource: vscode.Uri, + private _uri: vscode.Uri, private _range: vscode.Range, private _comments: vscode.Comment[] ) { @@ -484,7 +488,7 @@ export class ExtHostCommentThread implements vscode.CommentThread { this._commentController.handle, this.handle, this._id, - this._resource, + this._uri, extHostTypeConverter.Range.from(this._range) ); @@ -513,7 +517,7 @@ export class ExtHostCommentThread implements vscode.CommentThread { this._commentController.handle, this.handle, this._id, - this._resource, + this._uri, commentThreadRange, label, comments, @@ -717,6 +721,7 @@ function convertFromCommentThread(commentThread: modes.CommentThread): vscode.Co return { id: commentThread.threadId!, threadId: commentThread.threadId!, + uri: URI.parse(commentThread.resource!), resource: URI.parse(commentThread.resource!), range: extHostTypeConverter.Range.to(commentThread.range), comments: commentThread.comments ? commentThread.comments.map(convertFromComment) : [], diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.css b/src/vs/workbench/browser/parts/quickinput/quickInput.css index ade738c553..cf3f5cffa1 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.css +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.css @@ -47,7 +47,8 @@ .quick-input-header { display: flex; - padding: 6px 6px 4px 6px; + padding: 6px 6px 0px 6px; + margin-bottom: -2px; } .quick-input-and-message { @@ -98,13 +99,13 @@ .quick-input-action .monaco-text-button { font-size: 85%; - padding: 7px 6px 6px 6px; + padding: 7px 6px 5.5px 6px; line-height: initial; } .quick-input-message { margin-top: -1px; - padding: 6px 5px 2px 5px; + padding: 5px 5px 2px 5px; } .quick-input-progress.monaco-progress-container { diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.ts b/src/vs/workbench/browser/parts/quickinput/quickInput.ts index bf7077e124..879d54d8f1 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.ts @@ -307,9 +307,11 @@ class QuickInput implements IQuickInput { const styles = this.ui.inputBox.stylesForType(severity); this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : null; this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : null; + this.ui.message.style.paddingBottom = '4px'; } else { this.ui.message.style.backgroundColor = ''; this.ui.message.style.border = ''; + this.ui.message.style.paddingBottom = ''; } } diff --git a/src/vs/workbench/common/theme.ts b/src/vs/workbench/common/theme.ts index 8aec8ef9dd..030ec18d67 100644 --- a/src/vs/workbench/common/theme.ts +++ b/src/vs/workbench/common/theme.ts @@ -309,19 +309,6 @@ export const STATUS_BAR_PROMINENT_ITEM_HOVER_BACKGROUND = registerColor('statusB hc: Color.black.transparent(0.3), }, nls.localize('statusBarProminentItemHoverBackground', "Status bar prominent items background color when hovering. Prominent items stand out from other status bar entries to indicate importance. Change mode `Toggle Tab Key Moves Focus` from command palette to see an example. The status bar is shown in the bottom of the window.")); -export const STATUS_BAR_HOST_NAME_BACKGROUND = registerColor('statusBarItem.remoteBackground', { - dark: '#16825D', - light: '#16825D', - hc: '#FFFFFF00' -}, nls.localize('statusBarItemHostBackground', "Background color for the remote indicator on the status bar.")); - -export const STATUS_BAR_HOST_NAME_FOREGROUND = registerColor('statusBarItem.remoteForeground', { - dark: '#FFFFFF', - light: '#FFFFFF', - hc: '#FFFFFF' -}, nls.localize('statusBarItemHostForeground', "Foreground color for the remote indicator on the status bar.")); - - // < --- Activity Bar --- > export const ACTIVITY_BAR_BACKGROUND = registerColor('activityBar.background', { @@ -366,6 +353,21 @@ export const ACTIVITY_BAR_BADGE_FOREGROUND = registerColor('activityBarBadge.for hc: Color.white }, nls.localize('activityBarBadgeForeground', "Activity notification badge foreground color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.")); + +// < --- Remote --- > + +export const STATUS_BAR_HOST_NAME_BACKGROUND = registerColor('statusBarItem.remoteBackground', { + dark: ACTIVITY_BAR_BADGE_BACKGROUND, + light: ACTIVITY_BAR_BADGE_BACKGROUND, + hc: ACTIVITY_BAR_BADGE_BACKGROUND +}, nls.localize('statusBarItemHostBackground', "Background color for the remote indicator on the status bar.")); + +export const STATUS_BAR_HOST_NAME_FOREGROUND = registerColor('statusBarItem.remoteForeground', { + dark: ACTIVITY_BAR_BADGE_FOREGROUND, + light: ACTIVITY_BAR_BADGE_FOREGROUND, + hc: ACTIVITY_BAR_BADGE_FOREGROUND +}, nls.localize('statusBarItemHostForeground', "Foreground color for the remote indicator on the status bar.")); + export const EXTENSION_BADGE_REMOTE_BACKGROUND = registerColor('extensionBadge.remoteBackground', { dark: ACTIVITY_BAR_BADGE_BACKGROUND, light: ACTIVITY_BAR_BADGE_BACKGROUND, diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts index 1b1876b33c..60d3fe6ab8 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts @@ -173,7 +173,7 @@ class OpenExtensionAction extends Action { } } -export class ExtensionsTree extends WorkbenchAsyncDataTree { +export class ExtensionsTree extends WorkbenchAsyncDataTree { constructor( input: IExtensionData, @@ -212,7 +212,9 @@ export class ExtensionsTree extends WorkbenchAsyncDataTree this.setInput(input); this.disposables.push(this.onDidChangeSelection(event => { - extensionsWorkdbenchService.open(event.elements[0], event.browserEvent instanceof MouseEvent && (event.browserEvent.ctrlKey || event.browserEvent.metaKey || event.browserEvent.altKey)); + if (event.browserEvent && event.browserEvent instanceof KeyboardEvent) { + extensionsWorkdbenchService.open(event.elements[0].extension, false); + } })); } } \ No newline at end of file diff --git a/src/vs/workbench/contrib/preferences/electron-browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/electron-browser/settingsEditor2.ts index 0b29e17068..7a17f07c03 100644 --- a/src/vs/workbench/contrib/preferences/electron-browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/electron-browser/settingsEditor2.ts @@ -1066,6 +1066,7 @@ export class SettingsEditor2 extends BaseEditor { } this.tocTree.setFocus([]); + this.viewState.filterToCategory = undefined; this.tocTreeModel.currentSearchModel = this.searchResultModel; this.onSearchModeToggled(); @@ -1207,6 +1208,7 @@ export class SettingsEditor2 extends BaseEditor { } this.tocTree.setFocus([]); + this.viewState.filterToCategory = undefined; this.tocTree.expandAll(); this.renderTree(undefined, true); diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts index 5ce3be26db..84d6eeacd2 100644 --- a/src/vs/workbench/contrib/search/browser/search.contribution.ts +++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts @@ -476,6 +476,14 @@ Registry.as(ViewletExtensions.Viewlets).registerViewlet(new Vie 1 )); +Registry.as(PanelExtensions.Panels).registerPanel(new PanelDescriptor( + SearchPanel, + PANEL_ID, + nls.localize('name', "Search"), + 'search', + 10 +)); + class RegisterSearchViewContribution implements IWorkbenchContribution { constructor(