mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
Merge branch 'master' into joao/build-perf
This commit is contained in:
@@ -30,7 +30,13 @@ steps:
|
||||
|
||||
git remote add distro "https://github.com/$VSCODE_MIXIN_REPO.git"
|
||||
git fetch distro
|
||||
git push distro origin/master:refs/heads/master
|
||||
|
||||
# Push master branch into master and oss/master
|
||||
git push distro origin/master:refs/heads/master origin/master:refs/heads/oss/master
|
||||
|
||||
# Push every release branch into oss/release
|
||||
git for-each-ref --format="%(refname:short)" refs/remotes/origin/release/* | sed 's/^origin\/\(.*\)$/\0:refs\/heads\/oss\/\1/' | xargs git push distro
|
||||
|
||||
git merge $(node -p "require('./package.json').distro")
|
||||
|
||||
displayName: Sync & Merge Distro
|
||||
@@ -112,4 +112,11 @@ jobs:
|
||||
- LinuxAlpine
|
||||
- macOS
|
||||
steps:
|
||||
- template: sync-mooncake.yml
|
||||
- template: sync-mooncake.yml
|
||||
|
||||
schedules:
|
||||
- cron: "0 6 * * Mon-Fri"
|
||||
displayName: Mon-Fri at 6:00
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "code-oss-dev",
|
||||
"version": "1.37.0",
|
||||
"distro": "ae7f4db44d14b2893b3f918843ecb7fd750c8fcc",
|
||||
"distro": "f737a181ef604c1b4f43a4c233607c986878bb20",
|
||||
"author": {
|
||||
"name": "Microsoft Corporation"
|
||||
},
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="3 3 16 16" enable-background="new 3 3 16 16"><polygon fill="#e8e8e8" points="12.597,11.042 15.4,13.845 13.844,15.4 11.042,12.598 8.239,15.4 6.683,13.845 9.485,11.042 6.683,8.239 8.238,6.683 11.042,9.486 13.845,6.683 15.4,8.239"/></svg>
|
||||
|
After Width: | Height: | Size: 307 B |
@@ -31,6 +31,7 @@ import { createAndFillInActionBarActions, MenuEntryActionViewItem } from 'vs/pla
|
||||
import { IMenu, IMenuService, MenuId, MenuItemAction } from 'vs/platform/actions/common/actions';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { FocusSessionAction } from 'vs/workbench/contrib/debug/browser/debugActions';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
|
||||
const DEBUG_TOOLBAR_POSITION_KEY = 'debug.actionswidgetposition';
|
||||
const DEBUG_TOOLBAR_Y_KEY = 'debug.actionswidgety';
|
||||
@@ -54,6 +55,7 @@ export class DebugToolBar extends Themable implements IWorkbenchContribution {
|
||||
private activeActions: IAction[];
|
||||
private updateScheduler: RunOnceScheduler;
|
||||
private debugToolBarMenu: IMenu;
|
||||
private disposeOnUpdate: IDisposable;
|
||||
|
||||
private isVisible: boolean;
|
||||
private isBuilt: boolean;
|
||||
@@ -105,12 +107,17 @@ export class DebugToolBar extends Themable implements IWorkbenchContribution {
|
||||
return this.hide();
|
||||
}
|
||||
|
||||
const actions = DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
|
||||
const { actions, disposable } = DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
|
||||
if (!arrays.equals(actions, this.activeActions, (first, second) => first.id === second.id)) {
|
||||
this.actionBar.clear();
|
||||
this.actionBar.push(actions, { icon: true, label: false });
|
||||
this.activeActions = actions;
|
||||
}
|
||||
if (this.disposeOnUpdate) {
|
||||
dispose(this.disposeOnUpdate);
|
||||
}
|
||||
this.disposeOnUpdate = disposable;
|
||||
|
||||
this.show();
|
||||
}, 20));
|
||||
|
||||
@@ -257,14 +264,17 @@ export class DebugToolBar extends Themable implements IWorkbenchContribution {
|
||||
dom.hide(this.$el);
|
||||
}
|
||||
|
||||
public static getActions(menu: IMenu, debugService: IDebugService, instantiationService: IInstantiationService): IAction[] {
|
||||
public static getActions(menu: IMenu, debugService: IDebugService, instantiationService: IInstantiationService): { actions: IAction[], disposable: IDisposable } {
|
||||
const actions: IAction[] = [];
|
||||
createAndFillInActionBarActions(menu, undefined, actions, () => false);
|
||||
const disposable = createAndFillInActionBarActions(menu, undefined, actions, () => false);
|
||||
if (debugService.getViewModel().isMultiSessionView()) {
|
||||
actions.push(instantiationService.createInstance(FocusSessionAction, FocusSessionAction.ID, FocusSessionAction.LABEL));
|
||||
}
|
||||
|
||||
return actions.filter(a => !(a instanceof Separator)); // do not render separators for now
|
||||
return {
|
||||
actions: actions.filter(a => !(a instanceof Separator)), // do not render separators for now
|
||||
disposable
|
||||
};
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
@@ -274,5 +284,8 @@ export class DebugToolBar extends Themable implements IWorkbenchContribution {
|
||||
this.$el.remove();
|
||||
delete this.$el;
|
||||
}
|
||||
if (this.disposeOnUpdate) {
|
||||
dispose(this.disposeOnUpdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ export class DebugViewlet extends ViewContainerViewlet {
|
||||
private breakpointView: ViewletPanel;
|
||||
private panelListeners = new Map<string, IDisposable>();
|
||||
private debugToolBarMenu: IMenu;
|
||||
private disposeOnTitleUpdate: IDisposable;
|
||||
|
||||
constructor(
|
||||
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
|
||||
@@ -114,7 +115,14 @@ export class DebugViewlet extends ViewContainerViewlet {
|
||||
this.debugToolBarMenu = this.menuService.createMenu(MenuId.DebugToolBar, this.contextKeyService);
|
||||
this._register(this.debugToolBarMenu);
|
||||
}
|
||||
return DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
|
||||
|
||||
const { actions, disposable } = DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
|
||||
if (this.disposeOnTitleUpdate) {
|
||||
dispose(this.disposeOnTitleUpdate);
|
||||
}
|
||||
this.disposeOnTitleUpdate = disposable;
|
||||
|
||||
return actions;
|
||||
}
|
||||
|
||||
get showInitialDebugActions(): boolean {
|
||||
|
||||
@@ -1047,12 +1047,12 @@ export const pasteFileHandler = async (accessor: ServicesAccessor) => {
|
||||
// Cut is done. Make sure to clear cut state.
|
||||
explorerService.setToCopy([], false);
|
||||
}
|
||||
if (stats.length === 1) {
|
||||
if (stats.length >= 1) {
|
||||
const stat = stats[0];
|
||||
if (stat && !stat.isDirectory && stats.length === 1) {
|
||||
await editorService.openEditor({ resource: stat.resource, options: { pinned: true, preserveFocus: true } });
|
||||
}
|
||||
if (stat) {
|
||||
if (!stat.isDirectory) {
|
||||
await editorService.openEditor({ resource: stat.resource, options: { pinned: true, preserveFocus: true } });
|
||||
}
|
||||
await explorerService.select(stat.resource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,7 +388,11 @@ export class RemoteFileDialog {
|
||||
const relativePath = resources.relativePath(currentDisplayUri, directUri);
|
||||
const isSameRoot = (this.filePickBox.value.length > 1 && currentPath.length > 1) ? equalsIgnoreCase(this.filePickBox.value.substr(0, 2), currentPath.substr(0, 2)) : false;
|
||||
if (relativePath && isSameRoot) {
|
||||
const path = resources.joinPath(this.currentFolder, relativePath);
|
||||
let path = resources.joinPath(this.currentFolder, relativePath);
|
||||
const directBasename = resources.basename(directUri);
|
||||
if ((directBasename === '.') || (directBasename === '..')) {
|
||||
path = this.remoteUriFrom(this.pathAppend(path, directBasename));
|
||||
}
|
||||
return resources.hasTrailingPathSeparator(directUri) ? resources.addTrailingPathSeparator(path) : path;
|
||||
} else {
|
||||
return directUri;
|
||||
@@ -479,7 +483,7 @@ export class RemoteFileDialog {
|
||||
} catch (e) {
|
||||
// do nothing
|
||||
}
|
||||
if (statWithoutTrailing && statWithoutTrailing.isDirectory && (resources.basename(valueUri) !== '.')) {
|
||||
if (statWithoutTrailing && statWithoutTrailing.isDirectory) {
|
||||
await this.updateItems(inputUriDirname, false, resources.basename(valueUri));
|
||||
this.badPath = undefined;
|
||||
return UpdateResult.Updated;
|
||||
@@ -689,7 +693,7 @@ export class RemoteFileDialog {
|
||||
this.busy = true;
|
||||
this.userEnteredPathSegment = trailing ? trailing : '';
|
||||
this.autoCompletePathSegment = '';
|
||||
const newValue = trailing ? this.pathFromUri(resources.joinPath(newFolder, trailing)) : this.pathFromUri(newFolder, true);
|
||||
const newValue = trailing ? this.pathAppend(newFolder, trailing) : this.pathFromUri(newFolder, true);
|
||||
this.currentFolder = resources.addTrailingPathSeparator(newFolder, this.separator);
|
||||
return this.createItems(this.currentFolder).then(items => {
|
||||
this.filePickBox.items = items;
|
||||
@@ -728,7 +732,7 @@ export class RemoteFileDialog {
|
||||
private pathAppend(uri: URI, additional: string): string {
|
||||
if ((additional === '..') || (additional === '.')) {
|
||||
const basePath = this.pathFromUri(uri);
|
||||
return basePath + (this.endsWithSlash(basePath) ? '' : this.separator) + additional;
|
||||
return basePath + this.separator + additional;
|
||||
} else {
|
||||
return this.pathFromUri(resources.joinPath(uri, additional));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user