Merge branch 'master' into ben/electron-sandbox

This commit is contained in:
Benjamin Pasero 2020-05-27 06:51:08 +02:00
commit d637255b17
80 changed files with 422 additions and 273 deletions

View file

@ -16,7 +16,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v16
ref: v17
path: ./actions
- name: Install Actions
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'author-verification-requested')

View file

@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v16
ref: v17
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions

View file

@ -13,7 +13,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: v16
ref: v17
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Commands

View file

@ -13,7 +13,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v16
ref: v17
path: ./actions
- name: Install Actions
if: contains(github.event.issue.labels.*.name, '*english-please')

View file

@ -17,7 +17,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: v16
ref: v17
- name: Install Actions
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
run: npm install --production --prefix ./actions

View file

@ -13,7 +13,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: v16
ref: v17
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Locker

View file

@ -13,7 +13,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: v16
ref: v17
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Needs More Info Closer

View file

@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v16
ref: v17
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions

View file

@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v16
ref: v17
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions

View file

@ -14,7 +14,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
ref: v16
ref: v17
- name: Install Actions
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
run: npm install --production --prefix ./actions

View file

@ -1,3 +1,3 @@
disturl "https://atom.io/download/electron"
target "8.3.0"
target "7.2.4"
runtime "electron"

View file

@ -10,11 +10,11 @@ const path = require('path');
let window = null;
app.once('ready', () => {
window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, webviewTag: true, enableWebSQL: false } });
window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, webviewTag: true } });
window.setMenuBarVisibility(false);
window.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true }));
// window.webContents.openDevTools();
window.once('closed', () => window = null);
});
app.on('window-all-closed', () => app.quit());
app.on('window-all-closed', () => app.quit());

View file

@ -6,7 +6,7 @@
"git": {
"name": "chromium",
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
"commitHash": "052d3b44972e6d94ef40054d46c150b7cdd7a5d8"
"commitHash": "e4745133a1d3745f066e068b8033c6a269b59caf"
}
},
"licenseDetail": [
@ -40,7 +40,7 @@
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
],
"isOnlyProductionDependency": true,
"version": "80.0.3987.165"
"version": "78.0.3904.130"
},
{
"component": {
@ -48,11 +48,11 @@
"git": {
"name": "nodejs",
"repositoryUrl": "https://github.com/nodejs/node",
"commitHash": "42cce5a9d0fd905bf4ad7a2528c36572dfb8b5ad"
"commitHash": "787378879acfb212ed4ff824bf9f767a24a5cb43a"
}
},
"isOnlyProductionDependency": true,
"version": "12.13.0"
"version": "12.8.1"
},
{
"component": {
@ -60,12 +60,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
"commitHash": "426d45cd8569fb7731f213159336cea019829ec5"
"commitHash": "0552e0d5de46ffa3b481d741f1db5c779e201565"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
"version": "8.3.0"
"version": "7.2.4"
},
{
"component": {

View file

@ -488,7 +488,7 @@
"t": "source.batchfile constant.character.escape.batchfile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"
@ -510,7 +510,7 @@
"t": "source.batchfile constant.character.escape.batchfile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"

View file

@ -1555,7 +1555,7 @@
"t": "source.coffee string.regexp.multiline.coffee keyword.control.anchor.regexp",
"r": {
"dark_plus": "keyword.control.anchor.regexp: #DCDCAA",
"light_plus": "keyword.control.anchor.regexp: #FF0000",
"light_plus": "keyword.control.anchor.regexp: #EE0000",
"dark_vs": "keyword.control: #569CD6",
"light_vs": "keyword.control: #0000FF",
"hc_black": "keyword.control: #C586C0"
@ -1605,4 +1605,4 @@
"hc_black": "string.regexp: #D16969"
}
}
]
]

View file

@ -191,7 +191,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -257,7 +257,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -389,7 +389,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.block.struct.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -433,7 +433,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.block.struct.cpp meta.body.struct.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -532,7 +532,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.block.struct.cpp meta.body.struct.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -587,7 +587,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -719,7 +719,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -763,7 +763,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -862,7 +862,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -906,7 +906,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -1027,7 +1027,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp meta.block.namespace.cpp meta.body.namespace.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -1071,7 +1071,7 @@
"t": "source.cpp meta.preprocessor.macro.cpp constant.character.escape.line-continuation.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "meta.preprocessor: #569CD6",
"light_vs": "meta.preprocessor: #0000FF",
"hc_black": "constant.character: #569CD6"
@ -1187,4 +1187,4 @@
"hc_black": "meta.preprocessor: #569CD6"
}
}
]
]

View file

@ -2314,7 +2314,7 @@
"t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.character.escape.cpp",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -2430,4 +2430,4 @@
"hc_black": "default: #FFFFFF"
}
}
]
]

View file

@ -26,6 +26,7 @@
".webmanifest",
".js.map",
".css.map",
".ts.map",
".har",
".jslintrc",
".jsonld"

View file

@ -389,7 +389,7 @@
"t": "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json constant.character.escape.json",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -1165,4 +1165,4 @@
"hc_black": "default: #FFFFFF"
}
}
]
]

View file

@ -136,7 +136,7 @@
"t": "source.makefile meta.scope.target.makefile meta.scope.prerequisites.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"
@ -279,7 +279,7 @@
"t": "source.makefile meta.scope.target.makefile meta.scope.prerequisites.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"
@ -323,7 +323,7 @@
"t": "source.makefile meta.scope.target.makefile meta.scope.prerequisites.makefile comment.line.number-sign.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "comment: #6A9955",
"light_vs": "comment: #008000",
"hc_black": "constant.character: #569CD6"
@ -378,7 +378,7 @@
"t": "source.makefile comment.line.number-sign.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "comment: #6A9955",
"light_vs": "comment: #008000",
"hc_black": "constant.character: #569CD6"
@ -554,7 +554,7 @@
"t": "source.makefile meta.scope.target.makefile meta.scope.prerequisites.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"
@ -884,7 +884,7 @@
"t": "source.makefile meta.scope.recipe.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"
@ -3029,7 +3029,7 @@
"t": "source.makefile constant.character.escape.continuation.makefile",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "constant.character: #569CD6"

View file

@ -1302,7 +1302,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -1324,7 +1324,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -1346,7 +1346,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -1775,7 +1775,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"

View file

@ -389,7 +389,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -411,7 +411,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -433,7 +433,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -455,7 +455,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -477,7 +477,7 @@
"t": "source.perl string.regexp.find.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -675,7 +675,7 @@
"t": "source.perl string.quoted.double.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -950,7 +950,7 @@
"t": "source.perl string.quoted.double.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -1445,7 +1445,7 @@
"t": "source.perl string.quoted.double.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -2281,7 +2281,7 @@
"t": "source.perl string.quoted.double.perl constant.character.escape.perl",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"

View file

@ -279,7 +279,7 @@
"t": "text.html.php meta.embedded.block.html source.js meta.embedded.block.php source.php string.quoted.single.php constant.character.escape.php",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -378,7 +378,7 @@
"t": "text.html.php meta.embedded.block.html source.js meta.embedded.block.php source.php string.quoted.single.php constant.character.escape.php",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"

View file

@ -565,7 +565,7 @@
"t": "source.python string.quoted.single.python constant.character.escape.python",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"

View file

@ -2501,7 +2501,7 @@
"t": "source.ruby string.regexp.classic.ruby meta.group.regexp.ruby constant.character.escape.ruby",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -2523,7 +2523,7 @@
"t": "source.ruby string.regexp.classic.ruby meta.group.regexp.ruby constant.character.escape.ruby",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -2545,7 +2545,7 @@
"t": "source.ruby string.regexp.classic.ruby meta.group.regexp.ruby constant.character.escape.ruby",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"
@ -2578,7 +2578,7 @@
"t": "source.ruby string.regexp.classic.ruby meta.group.regexp.ruby meta.group.regexp.ruby constant.character.escape.ruby",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string.regexp: #D16969",
"light_vs": "string.regexp: #811F3F",
"hc_black": "constant.character: #569CD6"

View file

@ -20761,7 +20761,7 @@
"t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss string.quoted.single.scss constant.character.escape.scss",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -20882,7 +20882,7 @@
"t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss string.quoted.single.scss constant.character.escape.scss",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -20959,7 +20959,7 @@
"t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss string.quoted.double.scss constant.character.escape.scss",
"r": {
"dark_plus": "constant.character.escape: #D7BA7D",
"light_plus": "constant.character.escape: #FF0000",
"light_plus": "constant.character.escape: #EE0000",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"hc_black": "constant.character: #569CD6"
@ -21020,4 +21020,4 @@
"hc_black": "comment: #7CA668"
}
}
]
]

View file

@ -169,7 +169,7 @@
"keyword.control.anchor.regexp"
],
"settings": {
"foreground": "#ff0000"
"foreground": "#EE0000"
}
},
{
@ -181,7 +181,7 @@
{
"scope": "constant.character.escape",
"settings": {
"foreground": "#ff0000"
"foreground": "#EE0000"
}
},
{

View file

@ -42,7 +42,23 @@
"pickerGroup.foreground": "#b0b0b0",
"terminal.ansiWhite": "#ffffff",
"inputOption.activeBorder": "#3655b5",
"focusBorder": "#3655b5"
"focusBorder": "#3655b5",
"terminal.ansiBlack": "#1e1e1e",
"terminal.ansiRed": "#C4265E", // the bright color with ~75% transparent on the background
"terminal.ansiGreen": "#86B42B",
"terminal.ansiYellow": "#B3B42B",
"terminal.ansiBlue": "#6A7EC8",
"terminal.ansiMagenta": "#8C6BC8",
"terminal.ansiCyan": "#56ADBC",
"terminal.ansiWhite": "#e3e3dd",
"terminal.ansiBrightBlack": "#666666",
"terminal.ansiBrightRed": "#f92672",
"terminal.ansiBrightGreen": "#A6E22E",
"terminal.ansiBrightYellow": "#e2e22e", // hue shifted #A6E22E
"terminal.ansiBrightBlue": "#819aff", // hue shifted #AE81FF
"terminal.ansiBrightMagenta": "#AE81FF",
"terminal.ansiBrightCyan": "#66D9EF",
"terminal.ansiBrightWhite": "#f8f8f2"
},
"tokenColors": [
{

View file

@ -6,7 +6,7 @@
"git": {
"name": "seti-ui",
"repositoryUrl": "https://github.com/jesseweed/seti-ui",
"commitHash": "8f22764c37feb7f706465f5186132111a2401b6b"
"commitHash": "f3b2775662b0075aab56e5f0c03269f21f3f0f30"
}
},
"version": "0.1.0"

View file

@ -1030,12 +1030,6 @@
"fontCharacter": "\\E074",
"fontColor": "#cc3e44"
},
"_rmd_light": {
"fontColor": "#498ba7"
},
"_rmd": {
"fontColor": "#519aba"
},
"_rollup_light": {
"fontCharacter": "\\E075",
"fontColor": "#b8383d"
@ -1483,7 +1477,7 @@
"test.tsx": "_react_2",
"re": "_reasonml",
"r": "_R",
"rmd": "_rmd",
"rmd": "_R",
"erb": "_html_erb",
"erb.html": "_html_erb",
"html.erb": "_html_erb",
@ -1678,7 +1672,7 @@
"sql": "_db",
"swift": "_swift",
"typescript": "_typescript",
"typescriptreact": "_react",
"typescriptreact": "_typescript",
"xml": "_xml",
"yaml": "_yml",
"argdown": "_argdown",
@ -1811,7 +1805,7 @@
"test.tsx": "_react_2_light",
"re": "_reasonml_light",
"r": "_R_light",
"rmd": "_rmd_light",
"rmd": "_R_light",
"erb": "_html_erb_light",
"erb.html": "_html_erb_light",
"html.erb": "_html_erb_light",
@ -1949,7 +1943,7 @@
"sql": "_db_light",
"swift": "_swift_light",
"typescript": "_typescript_light",
"typescriptreact": "_react_light",
"typescriptreact": "_typescript_light",
"xml": "_xml_light",
"yaml": "_yml_light",
"argdown": "_argdown_light",
@ -2030,5 +2024,5 @@
"npm-debug.log": "_npm_ignored_light"
}
},
"version": "https://github.com/jesseweed/seti-ui/commit/8f22764c37feb7f706465f5186132111a2401b6b"
"version": "https://github.com/jesseweed/seti-ui/commit/f3b2775662b0075aab56e5f0c03269f21f3f0f30"
}

View file

@ -110,9 +110,10 @@ export class TypeScriptServerSpawner {
private getForkOptions(kind: ServerKind, configuration: TypeScriptServiceConfiguration) {
const debugPort = TypeScriptServerSpawner.getDebugPort(kind);
const inspectFlag = process.env['TSS_DEBUG_BRK'] ? '--inspect-brk' : '--inspect';
const tsServerForkOptions: electron.ForkOptions = {
execArgv: [
...(debugPort ? [`--inspect=${debugPort}`] : []),
...(debugPort ? [`${inspectFlag}=${debugPort}`] : []),
...(configuration.maxTsServerMemory ? [`--max-old-space-size=${configuration.maxTsServerMemory}`] : [])
]
};
@ -200,7 +201,7 @@ export class TypeScriptServerSpawner {
// We typically only want to debug the main semantic server
return undefined;
}
const value = process.env['TSS_DEBUG'];
const value = process.env['TSS_DEBUG_BRK'] || process.env['TSS_DEBUG'];
if (value) {
const port = parseInt(value);
if (!isNaN(port)) {

View file

@ -29,31 +29,34 @@ suite('vscode API - languages', () => {
const doc = await vscode.workspace.openTextDocument(file);
const langIdNow = doc.languageId;
let clock = 0;
const disposables: vscode.Disposable[] = [];
let close = new Promise(resolve => {
vscode.workspace.onDidCloseTextDocument(e => {
disposables.push(vscode.workspace.onDidCloseTextDocument(e => {
if (e === doc) {
assert.equal(doc.languageId, langIdNow);
assert.equal(clock, 0);
clock += 1;
resolve();
}
});
}));
});
let open = new Promise(resolve => {
vscode.workspace.onDidOpenTextDocument(e => {
disposables.push(vscode.workspace.onDidOpenTextDocument(e => {
if (e === doc) { // same instance!
assert.equal(doc.languageId, 'json');
assert.equal(clock, 1);
clock += 1;
resolve();
}
});
}));
});
let change = vscode.languages.setTextDocumentLanguage(doc, 'json');
await Promise.all([change, close, open]);
assert.equal(clock, 2);
assert.equal(doc.languageId, 'json');
disposables.forEach(disposable => disposable.dispose());
disposables.length = 0;
});
test('setTextDocumentLanguage -> error when language does not exist', async function () {

View file

@ -318,10 +318,14 @@ suite('notebook workflow', () => {
// ---- move up and down ---- //
await vscode.commands.executeCommand('notebook.cell.moveDown');
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells.indexOf(vscode.notebook.activeNotebookEditor!.selection!), 1,
`first move down, active cell ${vscode.notebook.activeNotebookEditor!.selection!.uri.toString()}, ${vscode.notebook.activeNotebookEditor!.selection!.source}`);
await vscode.commands.executeCommand('notebook.cell.moveDown');
activeCell = vscode.notebook.activeNotebookEditor!.selection;
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells.indexOf(activeCell!), 2);
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells.indexOf(activeCell!), 2,
`second move down, active cell ${vscode.notebook.activeNotebookEditor!.selection!.uri.toString()}, ${vscode.notebook.activeNotebookEditor!.selection!.source}`);
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells[0].source, 'test');
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells[1].source, '');
assert.equal(vscode.notebook.activeNotebookEditor!.document.cells[2].source, 'test');

View file

@ -100,7 +100,7 @@
"css-loader": "^3.2.0",
"debounce": "^1.0.0",
"deemon": "^1.4.0",
"electron": "8.3.0",
"electron": "7.2.4",
"eslint": "6.8.0",
"eslint-plugin-jsdoc": "^19.1.0",
"event-stream": "3.3.4",

View file

@ -148,11 +148,6 @@ async function handleRoot(req, res) {
if (packageJSON.main && packageJSON.name !== 'vscode-web-playground') {
return; // unsupported
}
if (packageJSON.name === 'scss') {
return; // seems to fail to JSON.parse()?!
}
packageJSON.extensionKind = ['web']; // enable for Web
mapExtensionFolderToExtensionPackageJSON.set(extensionFolder, packageJSON);
@ -171,11 +166,10 @@ async function handleRoot(req, res) {
});
});
const webConfiguration = escapeAttribute(JSON.stringify({ staticExtensions, folderUri: { scheme: 'memfs', path: `/sample-folder` }}));
const data = (await util.promisify(fs.readFile)(WEB_MAIN)).toString()
.replace('{{WORKBENCH_WEB_CONFIGURATION}}', escapeAttribute(JSON.stringify({
staticExtensions,
folderUri: { scheme: 'memfs', path: `/sample-folder` }
})))
.replace('{{WORKBENCH_WEB_CONFIGURATION}}', () => webConfiguration) // use a replace function to avoid that regexp replace patterns ($&, $0, ...) are applied
.replace('{{WEBVIEW_ENDPOINT}}', '')
.replace('{{REMOTE_USER_DATA_URI}}', '');

View file

@ -111,7 +111,10 @@ export function renderMarkdown(markdown: IMarkdownString, options: MarkdownRende
}
href = _href(href, false);
if (options.baseUrl) {
href = resolvePath(options.baseUrl, href).toString();
const hasScheme = /^\w[\w\d+.-]*:/.test(href);
if (!hasScheme) {
href = resolvePath(options.baseUrl, href).toString();
}
}
title = removeMarkdownEscapes(title);
href = removeMarkdownEscapes(href);

View file

@ -41,6 +41,7 @@ export interface IMenuOptions {
enableMnemonics?: boolean;
anchorAlignment?: AnchorAlignment;
expandDirection?: Direction;
useEventAsContext?: boolean;
}
export interface IMenuStyles {
@ -316,7 +317,7 @@ export class Menu extends ActionBar {
return menuActionViewItem;
} else {
const menuItemOptions: IMenuItemOptions = { enableMnemonics: options.enableMnemonics };
const menuItemOptions: IMenuItemOptions = { enableMnemonics: options.enableMnemonics, useEventAsContext: options.useEventAsContext };
if (options.getKeyBinding) {
const keybinding = options.getKeyBinding(action);
if (keybinding) {

View file

@ -945,7 +945,8 @@ export class MenuBar extends Disposable {
actionRunner: this.actionRunner,
enableMnemonics: this.options.alwaysOnMnemonics || (this.mnemonicsInUse && this.options.enableMnemonics),
ariaLabel: withNullAsUndefined(customMenu.buttonElement.getAttribute('aria-label')),
expandDirection: this.options.compactMode !== undefined ? this.options.compactMode : Direction.Right
expandDirection: this.options.compactMode !== undefined ? this.options.compactMode : Direction.Right,
useEventAsContext: true
};
let menuWidget = this._register(new Menu(menuHolder, customMenu.actions, menuOptions));

View file

@ -727,7 +727,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi
mouseSupport: false,
accessibilityProvider: {
getAriaLabel: (element) => element.text,
getWidgetAriaLabel: () => localize('selectBox', "Select Box"),
getWidgetAriaLabel: () => localize({ key: 'selectBox', comment: ['Behave like native select dropdown element.'] }, "Select Box"),
getRole: () => 'option',
getWidgetRole: () => 'listbox'
}

View file

@ -9,10 +9,9 @@ import { ISerializableContextMenuItem, CONTEXT_MENU_CLOSE_CHANNEL, CONTEXT_MENU_
export function registerContextMenuListener(): void {
ipcMain.on(CONTEXT_MENU_CHANNEL, (event: IpcMainEvent, contextMenuId: number, items: ISerializableContextMenuItem[], onClickChannel: string, options?: IPopupOptions) => {
const menu = createMenu(event, onClickChannel, items);
const window = BrowserWindow.fromWebContents(event.sender);
menu.popup({
window: window ? window : undefined,
window: BrowserWindow.fromWebContents(event.sender),
x: options ? options.x : undefined,
y: options ? options.y : undefined,
positioningItem: options ? options.positioningItem : undefined,

View file

@ -59,8 +59,7 @@ export class ProxyAuthHandler extends Disposable {
title: 'VS Code',
webPreferences: {
nodeIntegration: true,
webviewTag: true,
enableWebSQL: false
webviewTag: true
}
};

View file

@ -46,7 +46,6 @@ export class SharedProcess implements ISharedProcess {
images: false,
nodeIntegration: true,
webgl: false,
enableWebSQL: false,
disableBlinkFeatures: 'Auxclick' // do NOT change, allows us to identify this window as shared-process in the process explorer
}
});

View file

@ -166,8 +166,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
preload: URI.parse(this.doGetPreloadUrl()).fsPath,
nodeIntegration: true,
nodeIntegrationInWorker: RUN_TEXTMATE_IN_WORKER,
webviewTag: true,
enableWebSQL: false
webviewTag: true
}
};

View file

@ -82,7 +82,7 @@ export class RenameInputField implements IContentWidget {
const updateLabel = () => {
const [accept, preview] = this._acceptKeybindings;
this._keybindingService.lookupKeybinding(accept);
this._label!.innerText = localize('label', "{0} to Rename, {1} to Preview", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());
this._label!.innerText = localize({ key: 'label', comment: ['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"'] }, "{0} to Rename, {1} to Preview", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());
};
updateLabel();
this._disposables.add(this._keybindingService.onDidUpdateKeybindings(updateLabel));

View file

@ -362,10 +362,9 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
}
const { id, uuid } = extension ? extension.identifier : <IExtensionIdentifier>arg1;
let query = new Query()
.withFlags(Flags.IncludeAssetUri, Flags.IncludeStatistics, Flags.IncludeFiles, Flags.IncludeVersionProperties, Flags.ExcludeNonValidated)
.withFlags(Flags.IncludeAssetUri, Flags.IncludeStatistics, Flags.IncludeFiles, Flags.IncludeVersionProperties)
.withPage(1, 1)
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code')
.withFilter(FilterType.ExcludeWithFlags, flagsToString(Flags.Unpublished));
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code');
if (uuid) {
query = query.withFilter(FilterType.ExtensionId, uuid);
@ -426,8 +425,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
let query = new Query()
.withFlags(Flags.IncludeLatestVersionOnly, Flags.IncludeAssetUri, Flags.IncludeStatistics, Flags.IncludeFiles, Flags.IncludeVersionProperties)
.withPage(1, pageSize)
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code')
.withFilter(FilterType.ExcludeWithFlags, flagsToString(Flags.Unpublished));
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code');
if (text) {
// Use category filter instead of "category:themes"
@ -484,6 +482,11 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
}
private queryGallery(query: Query, token: CancellationToken): Promise<{ galleryExtensions: IRawGalleryExtension[], total: number; }> {
// Always exclude non validated and unpublished extensions
query = query
.withFlags(query.flags, Flags.ExcludeNonValidated)
.withFilter(FilterType.ExcludeWithFlags, flagsToString(Flags.Unpublished));
if (!this.isEnabled()) {
return Promise.reject(new Error('No extension gallery service configured.'));
}
@ -602,10 +605,9 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
getAllVersions(extension: IGalleryExtension, compatible: boolean): Promise<IGalleryExtensionVersion[]> {
let query = new Query()
.withFlags(Flags.IncludeVersions, Flags.IncludeFiles, Flags.IncludeVersionProperties, Flags.ExcludeNonValidated)
.withFlags(Flags.IncludeVersions, Flags.IncludeFiles, Flags.IncludeVersionProperties)
.withPage(1, 1)
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code')
.withFilter(FilterType.ExcludeWithFlags, flagsToString(Flags.Unpublished));
.withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code');
if (extension.identifier.uuid) {
query = query.withFilter(FilterType.ExtensionId, extension.identifier.uuid);

View file

@ -190,8 +190,7 @@ export class IssueMainService implements IIssueService {
backgroundColor: data.styles.backgroundColor || DEFAULT_BACKGROUND_COLOR,
webPreferences: {
preload: URI.parse(require.toUrl('vs/base/parts/sandbox/electron-browser/preload.js')).fsPath,
nodeIntegration: true,
enableWebSQL: false
nodeIntegration: true
}
});
@ -241,8 +240,7 @@ export class IssueMainService implements IIssueService {
title: localize('processExplorer', "Process Explorer"),
webPreferences: {
preload: URI.parse(require.toUrl('vs/base/parts/sandbox/electron-browser/preload.js')).fsPath,
nodeIntegration: true,
enableWebSQL: false
nodeIntegration: true
}
});

6
src/vs/vscode.d.ts vendored
View file

@ -2645,7 +2645,6 @@ declare module 'vscode' {
TypeParameter = 25
}
/**
* Symbol tags are extra annotations that tweak the rendering of a symbol.
*/
@ -3055,7 +3054,6 @@ declare module 'vscode' {
*/
renameFile(oldUri: Uri, newUri: Uri, options?: { overwrite?: boolean, ignoreIfExists?: boolean }, metadata?: WorkspaceEditEntryMetadata): void;
/**
* Get all text edits grouped by resource.
*
@ -3964,7 +3962,6 @@ declare module 'vscode' {
resolveCompletionItem?(item: T, token: CancellationToken): ProviderResult<T>;
}
/**
* A document link is a range in a text document that links to an internal or external resource, like another
* text document or a web site.
@ -5657,7 +5654,6 @@ declare module 'vscode' {
private constructor(id: string, label: string);
}
/**
* A structure that defines a task kind in the system.
* The value must be JSON-stringifyable.
@ -8957,7 +8953,6 @@ declare module 'vscode' {
readonly files: ReadonlyArray<{ oldUri: Uri, newUri: Uri }>;
}
/**
* An event describing a change to the set of [workspace folders](#workspace.workspaceFolders).
*/
@ -10641,7 +10636,6 @@ declare module 'vscode' {
*/
export let breakpoints: Breakpoint[];
/**
* An [event](#Event) which fires when the [active debug session](#debug.activeDebugSession)
* has changed. *Note* that the event also fires when the active debug session changes

View file

@ -78,7 +78,6 @@ declare module 'vscode' {
readonly removed: string[];
}
/**
* Options to be used when getting a session from an [AuthenticationProvider](#AuthenticationProvider).
*/
@ -1018,8 +1017,6 @@ declare module 'vscode' {
//#endregion
//#region Terminal link handlers https://github.com/microsoft/vscode/issues/91606
export namespace window {
@ -1534,7 +1531,6 @@ declare module 'vscode' {
export interface CustomTextEditorProvider {
/**
* Handle when the underlying resource for a custom editor is renamed.
*
@ -1552,7 +1548,6 @@ declare module 'vscode' {
//#endregion
//#region allow QuickPicks to skip sorting: https://github.com/microsoft/vscode/issues/73904
export interface QuickPick<T extends QuickPickItem> extends QuickInput {
@ -1841,7 +1836,6 @@ declare module 'vscode' {
preloads?: Uri[];
}
export interface NotebookCellsChangeData {
readonly start: number;
readonly deletedCount: number;
@ -2040,7 +2034,6 @@ declare module 'vscode' {
//#endregion
//#region @eamodio - timeline: https://github.com/microsoft/vscode/issues/84297
export class TimelineItem {
@ -2273,7 +2266,6 @@ declare module 'vscode' {
//#endregion
//#region https://github.com/microsoft/vscode/issues/91555
export enum StandardTokenType {

View file

@ -10,17 +10,18 @@ import { URI, UriComponents } from 'vs/base/common/uri';
import { ITextModel } from 'vs/editor/common/model';
import { IModelService, shouldSynchronizeModel } from 'vs/editor/common/services/modelService';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { IFileService } from 'vs/platform/files/common/files';
import { IFileService, FileOperation } from 'vs/platform/files/common/files';
import { MainThreadDocumentsAndEditors } from 'vs/workbench/api/browser/mainThreadDocumentsAndEditors';
import { ExtHostContext, ExtHostDocumentsShape, IExtHostContext, MainThreadDocumentsShape } from 'vs/workbench/api/common/extHost.protocol';
import { ITextEditorModel } from 'vs/workbench/common/editor';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { toLocalResource } from 'vs/base/common/resources';
import { toLocalResource, isEqualOrParent } from 'vs/base/common/resources';
import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService';
export class BoundModelReferenceCollection {
private _data = new Array<{ length: number, dispose(): void }>();
private _data = new Array<{ uri: URI, length: number, dispose(): void }>();
private _length = 0;
constructor(
@ -34,10 +35,18 @@ export class BoundModelReferenceCollection {
this._data = dispose(this._data);
}
add(ref: IReference<ITextEditorModel>): void {
remove(uri: URI): void {
for (const entry of [...this._data] /* copy array because dispose will modify it */) {
if (isEqualOrParent(entry.uri, uri)) {
entry.dispose();
}
}
}
add(uri: URI, ref: IReference<ITextEditorModel>): void {
const length = ref.object.textEditorModel.getValueLength();
let handle: any;
let entry: { length: number, dispose(): void };
let entry: { uri: URI, length: number, dispose(): void };
const dispose = () => {
const idx = this._data.indexOf(entry);
if (idx >= 0) {
@ -48,7 +57,7 @@ export class BoundModelReferenceCollection {
}
};
handle = setTimeout(dispose, this._maxAge);
entry = { length, dispose };
entry = { uri, length, dispose };
this._data.push(entry);
this._length += length;
@ -74,7 +83,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
private _modelToDisposeMap: { [modelUrl: string]: IDisposable; };
private readonly _proxy: ExtHostDocumentsShape;
private readonly _modelIsSynced = new Set<string>();
private _modelReferenceCollection = new BoundModelReferenceCollection();
private readonly _modelReferenceCollection = new BoundModelReferenceCollection();
constructor(
documentsAndEditors: MainThreadDocumentsAndEditors,
@ -83,7 +92,8 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
@ITextFileService textFileService: ITextFileService,
@IFileService fileService: IFileService,
@ITextModelService textModelResolverService: ITextModelService,
@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService
@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService,
@IWorkingCopyFileService workingCopyFileService: IWorkingCopyFileService
) {
this._modelService = modelService;
this._textModelResolverService = textModelResolverService;
@ -109,6 +119,12 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
}
}));
this._toDispose.add(workingCopyFileService.onDidRunWorkingCopyFileOperation(e => {
if (e.source && (e.operation === FileOperation.MOVE || e.operation === FileOperation.DELETE)) {
this._modelReferenceCollection.remove(e.source);
}
}));
this._modelToDisposeMap = Object.create(null);
}
@ -199,7 +215,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
private _handleAsResourceInput(uri: URI): Promise<boolean> {
return this._textModelResolverService.createModelReference(uri).then(ref => {
this._modelReferenceCollection.add(ref);
this._modelReferenceCollection.add(uri, ref);
const result = !!ref.object;
return result;
});

View file

@ -27,6 +27,7 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService';
namespace delta {
@ -326,11 +327,12 @@ export class MainThreadDocumentsAndEditors {
@IEditorGroupsService private readonly _editorGroupService: IEditorGroupsService,
@IBulkEditService bulkEditService: IBulkEditService,
@IPanelService panelService: IPanelService,
@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService
@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService,
@IWorkingCopyFileService workingCopyFileService: IWorkingCopyFileService
) {
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostDocumentsAndEditors);
const mainThreadDocuments = this._toDispose.add(new MainThreadDocuments(this, extHostContext, this._modelService, this._textFileService, fileService, textModelResolverService, environmentService));
const mainThreadDocuments = this._toDispose.add(new MainThreadDocuments(this, extHostContext, this._modelService, this._textFileService, fileService, textModelResolverService, environmentService, workingCopyFileService));
extHostContext.set(MainContext.MainThreadDocuments, mainThreadDocuments);
const mainThreadTextEditors = this._toDispose.add(new MainThreadTextEditors(this, extHostContext, codeEditorService, bulkEditService, this._editorService, this._editorGroupService));

View file

@ -35,6 +35,7 @@ export class MainThreadNotebookDocument extends Disposable {
this._textModel = new NotebookTextModel(handle, viewType, uri);
this._register(this._textModel.onDidModelChange(e => {
this._proxy.$acceptModelChanged(this.uri, e);
this._proxy.$acceptEditorPropertiesChanged(uri, { selections: { selections: this._textModel.selections }, metadata: null });
}));
this._register(this._textModel.onDidSelectionChange(e => {
const selectionsChange = e ? { selections: e } : null;

View file

@ -9,10 +9,10 @@ import { MainContext, ExtHostDecorationsShape, MainThreadDecorationsShape, Decor
import { Disposable, Decoration } from 'vs/workbench/api/common/extHostTypes';
import { CancellationToken } from 'vs/base/common/cancellation';
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
import { asArray } from 'vs/base/common/arrays';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
import { ILogService } from 'vs/platform/log/common/log';
import { asArray } from 'vs/base/common/arrays';
interface ProviderData {
provider: vscode.DecorationProvider;
@ -40,7 +40,9 @@ export class ExtHostDecorations implements IExtHostDecorations {
this._proxy.$registerDecorationProvider(handle, extensionId.value);
const listener = provider.onDidChangeDecorations(e => {
this._proxy.$onDidChange(handle, !e ? null : asArray(e));
this._proxy.$onDidChange(handle, !e || (Array.isArray(e) && e.length > 250)
? null
: asArray(e));
});
return new Disposable(() => {

View file

@ -687,7 +687,7 @@ export class MoveFocusedViewAction extends Action {
const quickPick = this.quickInputService.createQuickPick();
quickPick.placeholder = nls.localize('moveFocusedView.selectDestination', "Select a Destination for the View");
quickPick.title = nls.localize('moveFocusedView.title', "View: Move {0}", viewDescriptor.name);
quickPick.title = nls.localize({ key: 'moveFocusedView.title', comment: ['{0} indicates the title of the view the user has selected to move.'] }, "View: Move {0}", viewDescriptor.name);
const items: Array<IQuickPickItem | IQuickPickSeparator> = [];
const currentContainer = this.viewDescriptorService.getViewContainerByViewId(focusedViewId)!;

View file

@ -377,10 +377,10 @@ export abstract class ViewPane extends Pane implements IView {
private calculateTitle(title: string): string {
const viewContainer = this.viewDescriptorService.getViewContainerByViewId(this.id)!;
const model = this.viewDescriptorService.getViewContainerModel(viewContainer);
const viewDescriptor = this.viewDescriptorService.getViewDescriptorById(this.id)!;
const viewDescriptor = this.viewDescriptorService.getViewDescriptorById(this.id);
const isDefault = this.viewDescriptorService.getDefaultContainerById(this.id) === viewContainer;
if (!isDefault && viewDescriptor.containerTitle && model.title !== viewDescriptor.containerTitle) {
if (!isDefault && viewDescriptor?.containerTitle && model.title !== viewDescriptor.containerTitle) {
return `${viewDescriptor.containerTitle}: ${title}`;
}

View file

@ -237,6 +237,11 @@ export interface IAddedViewDescriptorRef extends IViewDescriptorRef {
size?: number;
}
export interface IAddedViewDescriptorState {
viewDescriptor: IViewDescriptor,
collapsed?: boolean;
}
export interface IViewContainerModel {
readonly title: string;

View file

@ -20,6 +20,7 @@ import { IIdentifiedSingleEditOperation } from 'vs/editor/common/model';
import { ConflictDetector } from 'vs/workbench/services/bulkEdit/browser/conflicts';
import { ResourceMap } from 'vs/base/common/map';
import { localize } from 'vs/nls';
import { exturi } from 'vs/base/common/resources';
export class CheckedStates<T extends object> {
@ -209,13 +210,13 @@ export class BulkFileOperations {
}
const insert = (uri: URI, map: Map<string, BulkFileOperation>) => {
let key = uri.toString();
let key = exturi.getComparisonKey(uri, true);
let operation = map.get(key);
// rename
if (!operation && newToOldUri.has(uri)) {
uri = newToOldUri.get(uri)!;
key = uri.toString();
key = exturi.getComparisonKey(uri, true);
operation = map.get(key);
}

View file

@ -100,7 +100,7 @@ const VIEW_CONTAINER: ViewContainer = Registry.as<IViewContainersRegistry>(ViewE
id: OpenDebugConsoleAction.ID,
keybindings: openPanelKb
},
order: 3,
order: 2,
hideIfEmpty: true
}, ViewContainerLocation.Panel);

View file

@ -341,7 +341,7 @@ class DebugHoverAccessibilityProvider implements IListAccessibilityProvider<IExp
}
getAriaLabel(element: IExpression): string {
return nls.localize('variableAriaLabel', "{0}, value {1}, variables, debug", element.name, element.value);
return nls.localize({ key: 'variableAriaLabel', comment: ['Do not translate placholders. Placeholders are name and value of a variable.'] }, "{0}, value {1}, variables, debug", element.name, element.value);
}
}

View file

@ -81,13 +81,18 @@ export class StartDebugQuickAccessProvider extends PickerQuickAccessProvider<IPi
// Entries detected configurations
const dynamicProviders = await configManager.getDynamicProviders();
if (dynamicProviders.length > 0) {
picks.push({ type: 'separator', label: localize('contributed', "contributed") });
picks.push({
type: 'separator', label: localize({
key: 'contributed',
comment: ['contributed is lower case because it looks better like that in UI. Nothing preceeds it. It is a name of the grouping of debug configurations.']
}, "contributed")
});
}
dynamicProviders.forEach(provider => {
picks.push({
label: `$(folder) ${provider.label}...`,
ariaLabel: localize('providerAriaLabel', "{0} contributed configurations", provider.label),
ariaLabel: localize({ key: 'providerAriaLabel', comment: ['Placeholder stands for the provider label. For example "NodeJS".'] }, "{0} contributed configurations", provider.label),
accept: async () => {
const pick = await provider.pick();
if (pick) {

View file

@ -359,7 +359,7 @@ class VariablesAccessibilityProvider implements IListAccessibilityProvider<IExpr
return nls.localize('variableScopeAriaLabel', "Scope {0}", element.name);
}
if (element instanceof Variable) {
return nls.localize('variableAriaLabel', "{0}, value {1}", element.name, element.value);
return nls.localize({ key: 'variableAriaLabel', comment: ['Placeholders are variable name and variable value respectivly. They should not be translated.'] }, "{0}, value {1}", element.name, element.value);
}
return null;

View file

@ -164,7 +164,7 @@ export function prepareCommand(args: DebugProtocol.RunInTerminalRequestArguments
case ShellType.bash:
quote = (s: string) => {
s = s.replace(/(["'\\])/g, '\\$1');
s = s.replace(/(["'\\\$])/g, '\\$1');
return (s.indexOf(' ') >= 0 || s.indexOf(';') >= 0 || s.length === 0) ? `"${s}"` : s;
};

View file

@ -469,10 +469,10 @@ export async function changeCellToKind(kind: CellKind, context: INotebookCellAct
}
export interface INotebookCellActionContext {
cellTemplate?: BaseCellRenderTemplate;
cell: ICellViewModel;
notebookEditor: INotebookEditor;
ui?: boolean;
readonly cellTemplate?: BaseCellRenderTemplate;
readonly cell: ICellViewModel;
readonly notebookEditor: INotebookEditor;
readonly ui?: boolean;
}
abstract class InsertCellCommand extends NotebookAction {

View file

@ -359,11 +359,10 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
}
renderTemplate(container: HTMLElement): MarkdownCellRenderTemplate {
const contextKeyService = this.contextKeyServiceProvider(container);
container.tabIndex = -1;
container.classList.add('markdown-cell-row');
const disposables = new DisposableStore();
const contextKeyService = disposables.add(this.contextKeyServiceProvider(container));
const toolbar = disposables.add(this.createToolbar(container));
const focusIndicator = DOM.append(container, DOM.$('.notebook-cell-focus-indicator'));
focusIndicator.setAttribute('draggable', 'true');
@ -897,11 +896,10 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
}
renderTemplate(container: HTMLElement): CodeCellRenderTemplate {
const contextKeyService = this.contextKeyServiceProvider(container);
container.classList.add('code-cell-row');
container.tabIndex = -1;
const disposables = new DisposableStore();
const contextKeyService = disposables.add(this.contextKeyServiceProvider(container));
const toolbar = disposables.add(this.createToolbar(container));
const focusIndicator = DOM.append(container, DOM.$('.notebook-cell-focus-indicator'));
focusIndicator.setAttribute('draggable', 'true');
@ -914,7 +912,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
const executionOrderLabel = DOM.append(runButtonContainer, $('div.execution-count-label'));
// create a special context key service that set the inCompositeEditor-contextkey
const editorContextKeyService = this.contextKeyServiceProvider(container);
const editorContextKeyService = disposables.add(this.contextKeyServiceProvider(container));
const editorInstaService = this.instantiationService.createChild(new ServiceCollection([IContextKeyService, editorContextKeyService]));
EditorContextKeys.inCompositeEditor.bindTo(editorContextKeyService).set(true);

View file

@ -157,7 +157,11 @@ export function createTOCIterator(model: TOCTreeModel | SettingsTreeGroupElement
class SettingsAccessibilityProvider implements IListAccessibilityProvider<SettingsTreeGroupElement> {
getWidgetAriaLabel(): string {
return localize('settingsTOC', "Settings Table of Contents");
return localize({
key: 'settingsTOC',
comment: ['A label for the table of contents for the full settings list']
},
"Settings Table of Contents");
}
getAriaLabel(element: SettingsTreeElement): string {

View file

@ -89,13 +89,18 @@ function splitMatches(uri: URI, filterData: FuzzyScore | undefined): [IMatch[] |
const allMatches = createMatches(filterData);
for (const match of allMatches) {
if (match.end <= fileName.length) {
matches!.push(match);
if (match.start < fileName.length) {
matches!.push(
{
start: match.start,
end: Math.min(match.end, fileName.length)
}
);
} else {
descriptionMatches!.push(
{
start: match.start - fileName.length,
end: match.end - fileName.length
start: match.start - (fileName.length + 1),
end: match.end - (fileName.length + 1)
}
);
}
@ -403,7 +408,7 @@ export class SCMTreeKeyboardNavigationLabelProvider implements ICompressibleKeyb
const fileName = basename(element.sourceUri);
const filePath = this.labelService.getUriLabel(dirname(element.sourceUri), { relative: true });
return filePath.length !== 0 ? `${fileName}${filePath}` : fileName;
return filePath.length !== 0 ? `${fileName} ${filePath}` : fileName;
}
}

View file

@ -869,7 +869,9 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
// Open to side / below
buttons.push({
iconClass: openSideBySideDirection === 'right' ? Codicon.splitHorizontal.classNames : Codicon.splitVertical.classNames,
tooltip: openSideBySideDirection === 'right' ? localize('openToSide', "Open to the Side") : localize('openToBottom', "Open to the Bottom")
tooltip: openSideBySideDirection === 'right' ?
localize({ key: 'openToSide', comment: ['Open this file in a split editor on the left/right side'] }, "Open to the Side") :
localize({ key: 'openToBottom', comment: ['Open this file in a split editor on the bottom'] }, "Open to the Bottom")
});
// Remove from History

View file

@ -1043,7 +1043,7 @@ export class TerminalTaskSystem implements ITaskSystem {
}
}
// This must be normalized to the OS
shellLaunchConfig.cwd = resources.toLocalResource(URI.from({ scheme: Schemas.file, path: cwd }), this.environmentService.configuration.remoteAuthority);
shellLaunchConfig.cwd = isUNC(cwd) ? cwd : resources.toLocalResource(URI.from({ scheme: Schemas.file, path: cwd }), this.environmentService.configuration.remoteAuthority);
}
if (options.env) {
shellLaunchConfig.env = options.env;

View file

@ -26,7 +26,7 @@ import { URI } from 'vs/base/common/uri';
import { isWindows } from 'vs/base/common/platform';
import { withNullAsUndefined } from 'vs/base/common/types';
import { ITerminalInstance, ITerminalService, Direction } from 'vs/workbench/contrib/terminal/browser/terminal';
import { Action2, registerAction2 } from 'vs/platform/actions/common/actions';
import { Action2, registerAction2, ILocalizedString } from 'vs/platform/actions/common/actions';
import { TerminalQuickAccessProvider } from 'vs/workbench/contrib/terminal/browser/terminalQuickAccess';
import { ToggleViewAction } from 'vs/workbench/browser/actions/layoutActions';
import { IViewsService, IViewDescriptorService } from 'vs/workbench/common/views';
@ -393,13 +393,13 @@ export class ClearTerminalAction extends Action {
}
export function registerTerminalActions() {
const category = TERMINAL_ACTION_CATEGORY;
const category: ILocalizedString = { value: TERMINAL_ACTION_CATEGORY, original: 'Terminal' };
registerAction2(class extends Action2 {
constructor() {
super({
id: TERMINAL_COMMAND_ID.NEW_IN_ACTIVE_WORKSPACE,
title: localize('workbench.action.terminal.newInActiveWorkspace', "Create New Integrated Terminal (In Active Workspace)"),
title: { value: localize('workbench.action.terminal.newInActiveWorkspace', "Create New Integrated Terminal (In Active Workspace)"), original: 'Create New Integrated Terminal (In Active Workspace)' },
f1: true,
category
});
@ -418,7 +418,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FOCUS_PREVIOUS_PANE,
title: localize('workbench.action.terminal.focusPreviousPane', "Focus Previous Pane"),
title: { value: localize('workbench.action.terminal.focusPreviousPane', "Focus Previous Pane"), original: 'Focus Previous Pane' },
f1: true,
category,
keybinding: {
@ -443,7 +443,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FOCUS_NEXT_PANE,
title: localize('workbench.action.terminal.focusNextPane', "Focus Next Pane"),
title: { value: localize('workbench.action.terminal.focusNextPane', "Focus Next Pane"), original: 'Focus Next Pane' },
f1: true,
category,
keybinding: {
@ -468,7 +468,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RESIZE_PANE_LEFT,
title: localize('workbench.action.terminal.resizePaneLeft', "Resize Pane Left"),
title: { value: localize('workbench.action.terminal.resizePaneLeft', "Resize Pane Left"), original: 'Resize Pane Left' },
f1: true,
category,
keybinding: {
@ -487,7 +487,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RESIZE_PANE_RIGHT,
title: localize('workbench.action.terminal.resizePaneRight', "Resize Pane Right"),
title: { value: localize('workbench.action.terminal.resizePaneRight', "Resize Pane Right"), original: 'Resize Pane Right' },
f1: true,
category,
keybinding: {
@ -506,7 +506,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RESIZE_PANE_UP,
title: localize('workbench.action.terminal.resizePaneUp', "Resize Pane Up"),
title: { value: localize('workbench.action.terminal.resizePaneUp', "Resize Pane Up"), original: 'Resize Pane Up' },
f1: true,
category,
keybinding: {
@ -524,7 +524,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RESIZE_PANE_DOWN,
title: localize('workbench.action.terminal.resizePaneDown', "Resize Pane Down"),
title: { value: localize('workbench.action.terminal.resizePaneDown', "Resize Pane Down"), original: 'Resize Pane Down' },
f1: true,
category,
keybinding: {
@ -542,7 +542,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FOCUS,
title: localize('workbench.action.terminal.focus', "Focus Terminal"),
title: { value: localize('workbench.action.terminal.focus', "Focus Terminal"), original: 'Focus Terminal' },
f1: true,
category
});
@ -561,7 +561,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FOCUS_NEXT,
title: localize('workbench.action.terminal.focusNext', "Focus Next Terminal"),
title: { value: localize('workbench.action.terminal.focusNext', "Focus Next Terminal"), original: 'Focus Next Terminal' },
f1: true,
category
});
@ -576,7 +576,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FOCUS_PREVIOUS,
title: localize('workbench.action.terminal.focusPrevious', "Focus Previous Terminal"),
title: { value: localize('workbench.action.terminal.focusPrevious', "Focus Previous Terminal"), original: 'Focus Previous Terminal' },
f1: true,
category
});
@ -591,7 +591,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RUN_SELECTED_TEXT,
title: localize('workbench.action.terminal.runSelectedText', "Run Selected Text In Active Terminal"),
title: { value: localize('workbench.action.terminal.runSelectedText', "Run Selected Text In Active Terminal"), original: 'Run Selected Text In Active Terminal' },
f1: true,
category
});
@ -621,7 +621,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RUN_ACTIVE_FILE,
title: localize('workbench.action.terminal.runActiveFile', "Run Active File In Active Terminal"),
title: { value: localize('workbench.action.terminal.runActiveFile', "Run Active File In Active Terminal"), original: 'Run Active File In Active Terminal' },
f1: true,
category
});
@ -655,7 +655,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_DOWN_LINE,
title: localize('workbench.action.terminal.scrollDown', "Scroll Down (Line)"),
title: { value: localize('workbench.action.terminal.scrollDown', "Scroll Down (Line)"), original: 'Scroll Down (Line)' },
f1: true,
category,
keybinding: {
@ -674,7 +674,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_DOWN_PAGE,
title: localize('workbench.action.terminal.scrollDownPage', "Scroll Down (Page)"),
title: { value: localize('workbench.action.terminal.scrollDownPage', "Scroll Down (Page)"), original: 'Scroll Down (Page)' },
f1: true,
category,
keybinding: {
@ -693,7 +693,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_TO_BOTTOM,
title: localize('workbench.action.terminal.scrollToBottom', "Scroll to Bottom"),
title: { value: localize('workbench.action.terminal.scrollToBottom', "Scroll to Bottom"), original: 'Scroll to Bottom' },
f1: true,
category,
keybinding: {
@ -712,7 +712,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_UP_LINE,
title: localize('workbench.action.terminal.scrollUp', "Scroll Up (Line)"),
title: { value: localize('workbench.action.terminal.scrollUp', "Scroll Up (Line)"), original: 'Scroll Up (Line)' },
f1: true,
category,
keybinding: {
@ -731,7 +731,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_UP_PAGE,
title: localize('workbench.action.terminal.scrollUpPage', "Scroll Up (Page)"),
title: { value: localize('workbench.action.terminal.scrollUpPage', "Scroll Up (Page)"), original: 'Scroll Up (Page)' },
f1: true,
category,
keybinding: {
@ -750,7 +750,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_TO_TOP,
title: localize('workbench.action.terminal.scrollToTop', "Scroll to Top"),
title: { value: localize('workbench.action.terminal.scrollToTop', "Scroll to Top"), original: 'Scroll to Top' },
f1: true,
category,
keybinding: {
@ -769,7 +769,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.NAVIGATION_MODE_EXIT,
title: localize('workbench.action.terminal.navigationModeExit', "Exit Navigation Mode"),
title: { value: localize('workbench.action.terminal.navigationModeExit', "Exit Navigation Mode"), original: 'Exit Navigation Mode' },
f1: true,
category,
keybinding: {
@ -787,7 +787,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.NAVIGATION_MODE_FOCUS_PREVIOUS,
title: localize('workbench.action.terminal.navigationModeFocusPrevious', "Focus Previous Line (Navigation Mode)"),
title: { value: localize('workbench.action.terminal.navigationModeFocusPrevious', "Focus Previous Line (Navigation Mode)"), original: 'Focus Previous Line (Navigation Mode)' },
f1: true,
category,
keybinding: {
@ -808,7 +808,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.NAVIGATION_MODE_FOCUS_NEXT,
title: localize('workbench.action.terminal.navigationModeFocusNext', "Focus Next Line (Navigation Mode)"),
title: { value: localize('workbench.action.terminal.navigationModeFocusNext', "Focus Next Line (Navigation Mode)"), original: 'Focus Next Line (Navigation Mode)' },
f1: true,
category,
keybinding: {
@ -829,7 +829,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.CLEAR_SELECTION,
title: localize('workbench.action.terminal.clearSelection', "Clear Selection"),
title: { value: localize('workbench.action.terminal.clearSelection', "Clear Selection"), original: 'Clear Selection' },
f1: true,
category,
keybinding: {
@ -850,7 +850,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.MANAGE_WORKSPACE_SHELL_PERMISSIONS,
title: localize('workbench.action.terminal.manageWorkspaceShellPermissions', "Manage Workspace Shell Permissions"),
title: { value: localize('workbench.action.terminal.manageWorkspaceShellPermissions', "Manage Workspace Shell Permissions"), original: 'Manage Workspace Shell Permissions' },
f1: true,
category
});
@ -863,7 +863,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RENAME,
title: localize('workbench.action.terminal.rename', "Rename"),
title: { value: localize('workbench.action.terminal.rename', "Rename"), original: 'Rename' },
f1: true,
category
});
@ -884,7 +884,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FIND_FOCUS,
title: localize('workbench.action.terminal.focusFind', "Focus Find"),
title: { value: localize('workbench.action.terminal.focusFind', "Focus Find"), original: 'Focus Find' },
f1: true,
category,
keybinding: {
@ -902,7 +902,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FIND_HIDE,
title: localize('workbench.action.terminal.hideFind', "Hide Find"),
title: { value: localize('workbench.action.terminal.hideFind', "Hide Find"), original: 'Hide Find' },
f1: true,
category,
keybinding: {
@ -921,7 +921,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.QUICK_OPEN_TERM,
title: localize('quickAccessTerminal', "Switch Active Terminal"),
title: { value: localize('quickAccessTerminal', "Switch Active Terminal"), original: 'Switch Active Terminal' },
f1: true,
category
});
@ -934,7 +934,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_TO_PREVIOUS_COMMAND,
title: localize('workbench.action.terminal.scrollToPreviousCommand', "Scroll To Previous Command"),
title: { value: localize('workbench.action.terminal.scrollToPreviousCommand', "Scroll To Previous Command"), original: 'Scroll To Previous Command' },
f1: true,
category,
keybinding: {
@ -955,7 +955,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SCROLL_TO_NEXT_COMMAND,
title: localize('workbench.action.terminal.scrollToNextCommand', "Scroll To Next Command"),
title: { value: localize('workbench.action.terminal.scrollToNextCommand', "Scroll To Next Command"), original: 'Scroll To Next Command' },
f1: true,
category,
keybinding: {
@ -976,7 +976,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SELECT_TO_PREVIOUS_COMMAND,
title: localize('workbench.action.terminal.selectToPreviousCommand', "Select To Previous Command"),
title: { value: localize('workbench.action.terminal.selectToPreviousCommand', "Select To Previous Command"), original: 'Select To Previous Command' },
f1: true,
category,
keybinding: {
@ -997,7 +997,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SELECT_TO_NEXT_COMMAND,
title: localize('workbench.action.terminal.selectToNextCommand', "Select To Next Command"),
title: { value: localize('workbench.action.terminal.selectToNextCommand', "Select To Next Command"), original: 'Select To Next Command' },
f1: true,
category,
keybinding: {
@ -1018,7 +1018,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SELECT_TO_PREVIOUS_LINE,
title: localize('workbench.action.terminal.selectToPreviousLine', "Select To Previous Line"),
title: { value: localize('workbench.action.terminal.selectToPreviousLine', "Select To Previous Line"), original: 'Select To Previous Line' },
f1: true,
category
});
@ -1034,7 +1034,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SELECT_TO_NEXT_LINE,
title: localize('workbench.action.terminal.selectToNextLine', "Select To Next Line"),
title: { value: localize('workbench.action.terminal.selectToNextLine', "Select To Next Line"), original: 'Select To Next Line' },
f1: true,
category
});
@ -1050,7 +1050,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.TOGGLE_ESCAPE_SEQUENCE_LOGGING,
title: localize('workbench.action.terminal.toggleEscapeSequenceLogging', "Toggle Escape Sequence Logging"),
title: { value: localize('workbench.action.terminal.toggleEscapeSequenceLogging', "Toggle Escape Sequence Logging"), original: 'Toggle Escape Sequence Logging' },
f1: true,
category
});
@ -1064,7 +1064,7 @@ export function registerTerminalActions() {
const title = localize('workbench.action.terminal.sendSequence', "Send Custom Sequence To Terminal");
super({
id: TERMINAL_COMMAND_ID.SEND_SEQUENCE,
title,
title: { value: title, original: 'Send Custom Sequence To Terminal' },
category,
description: {
description: title,
@ -1090,7 +1090,7 @@ export function registerTerminalActions() {
const title = localize('workbench.action.terminal.newWithCwd', "Create New Integrated Terminal Starting in a Custom Working Directory");
super({
id: TERMINAL_COMMAND_ID.NEW_WITH_CWD,
title,
title: { value: title, original: 'Create New Integrated Terminal Starting in a Custom Working Directory' },
category,
description: {
description: title,
@ -1125,7 +1125,7 @@ export function registerTerminalActions() {
const title = localize('workbench.action.terminal.renameWithArg', "Rename the Currently Active Terminal");
super({
id: TERMINAL_COMMAND_ID.RENAME_WITH_ARG,
title,
title: { value: title, original: 'Rename the Currently Active Terminal' },
category,
description: {
description: title,
@ -1159,7 +1159,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.TOGGLE_FIND_REGEX,
title: localize('workbench.action.terminal.toggleFindRegex', "Toggle Find Using Regex"),
title: { value: localize('workbench.action.terminal.toggleFindRegex', "Toggle Find Using Regex"), original: 'Toggle Find Using Regex' },
f1: true,
category,
keybinding: {
@ -1179,7 +1179,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.TOGGLE_FIND_WHOLE_WORD,
title: localize('workbench.action.terminal.toggleFindWholeWord', "Toggle Find Using Whole Word"),
title: { value: localize('workbench.action.terminal.toggleFindWholeWord', "Toggle Find Using Whole Word"), original: 'Toggle Find Using Whole Word' },
f1: true,
category,
keybinding: {
@ -1199,7 +1199,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.TOGGLE_FIND_CASE_SENSITIVE,
title: localize('workbench.action.terminal.toggleFindCaseSensitive', "Toggle Find Using Case Sensitive"),
title: { value: localize('workbench.action.terminal.toggleFindCaseSensitive', "Toggle Find Using Case Sensitive"), original: 'Toggle Find Using Case Sensitive' },
f1: true,
category,
keybinding: {
@ -1219,7 +1219,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FIND_NEXT,
title: localize('workbench.action.terminal.findNext', "Find Next"),
title: { value: localize('workbench.action.terminal.findNext', "Find Next"), original: 'Find Next' },
f1: true,
category,
keybinding: [
@ -1245,7 +1245,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.FIND_PREVIOUS,
title: localize('workbench.action.terminal.findPrevious', "Find Previous"),
title: { value: localize('workbench.action.terminal.findPrevious', "Find Previous"), original: 'Find Previous' },
f1: true,
category,
keybinding: [
@ -1271,7 +1271,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.RELAUNCH,
title: localize('workbench.action.terminal.relaunch', "Relaunch Active Terminal"),
title: { value: localize('workbench.action.terminal.relaunch', "Relaunch Active Terminal"), original: 'Relaunch Active Terminal' },
f1: true,
category
});
@ -1284,7 +1284,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TERMINAL_COMMAND_ID.SHOW_ENVIRONMENT_INFORMATION,
title: localize('workbench.action.terminal.showEnvironmentInformation', "Show Environment Information"),
title: { value: localize('workbench.action.terminal.showEnvironmentInformation', "Show Environment Information"), original: 'Show Environment Information' },
f1: true,
category
});

View file

@ -16,17 +16,26 @@ export const terminalConfiguration: IConfigurationNode = {
type: 'object',
properties: {
'terminal.integrated.automationShell.linux': {
markdownDescription: localize('terminal.integrated.automationShell.linux', "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.linux`', '`shellArgs`'),
markdownDescription: localize({
key: 'terminal.integrated.automationShell.linux',
comment: ['{0} and {1} are the `shell` and `shellArgs` settings keys']
}, "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.linux`', '`shellArgs`'),
type: ['string', 'null'],
default: null
},
'terminal.integrated.automationShell.osx': {
markdownDescription: localize('terminal.integrated.automationShell.osx', "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.osx`', '`shellArgs`'),
markdownDescription: localize({
key: 'terminal.integrated.automationShell.osx',
comment: ['{0} and {1} are the `shell` and `shellArgs` settings keys']
}, "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.osx`', '`shellArgs`'),
type: ['string', 'null'],
default: null
},
'terminal.integrated.automationShell.windows': {
markdownDescription: localize('terminal.integrated.automationShell.windows', "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.windows`', '`shellArgs`'),
markdownDescription: localize({
key: 'terminal.integrated.automationShell.windows',
comment: ['{0} and {1} are the `shell` and `shellArgs` settings keys']
}, "A path that when set will override {0} and ignore {1} values for automation-related terminal usage like tasks and debug.", '`terminal.integrated.shell.windows`', '`shellArgs`'),
type: ['string', 'null'],
default: null
},

View file

@ -292,7 +292,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
this.disableSync();
this.notificationService.notify({
severity: Severity.Error,
message: localize('error upgrade required', "Turned off sync because the current version ({0}) of {1} is not compatible with the Preferences Sync Service. Please update and turn on sync to continue syncing.", this.productService.version, this.productService.nameLong),
message: localize('error upgrade required', "Turned off sync because the current version ({0}, {1}) of {2} is not compatible with the Preferences Sync Service. Please update and turn on sync to continue syncing.", this.productService.version, this.productService.commit, this.productService.nameLong),
});
return true;
}

View file

@ -337,7 +337,7 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
private moveViews(views: IViewDescriptor[], from: ViewContainer, to: ViewContainer, skipCacheUpdate?: boolean): void {
this.removeViews(from, views);
this.addViews(to, views);
this.addViews(to, views, true);
const oldLocation = this.getViewContainerLocation(from);
const newLocation = this.getViewContainerLocation(to);
@ -676,14 +676,14 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
});
}
private addViews(container: ViewContainer, views: IViewDescriptor[]): void {
private addViews(container: ViewContainer, views: IViewDescriptor[], expandViews?: boolean): void {
// Update in memory cache
views.forEach(view => {
this.cachedViewInfo.set(view.id, { containerId: container.id });
this.getOrCreateDefaultViewLocationContextKey(view).set(this.getDefaultContainerById(view.id) === container);
});
this.getViewContainerModel(container).add(views);
this.getViewContainerModel(container).add(views.map(view => { return { viewDescriptor: view, collapsed: expandViews ? false : undefined }; }));
}
private removeViews(container: ViewContainer, views: IViewDescriptor[]): void {

View file

@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ViewContainer, IViewsRegistry, IViewDescriptor, Extensions as ViewExtensions, IViewContainerModel, IAddedViewDescriptorRef, IViewDescriptorRef } from 'vs/workbench/common/views';
import { ViewContainer, IViewsRegistry, IViewDescriptor, Extensions as ViewExtensions, IViewContainerModel, IAddedViewDescriptorRef, IViewDescriptorRef, IAddedViewDescriptorState } from 'vs/workbench/common/views';
import { IContextKeyService, IReadableSet } from 'vs/platform/contextkey/common/contextkey';
import { IStorageService, StorageScope, IWorkspaceStorageChangeEvent } from 'vs/platform/storage/common/storage';
import { Registry } from 'vs/platform/registry/common/platform';
@ -461,12 +461,13 @@ export class ViewContainerModel extends Disposable implements IViewContainerMode
});
}
add(viewDescriptors: IViewDescriptor[]): void {
add(addedViewDescriptorStates: IAddedViewDescriptorState[]): void {
const addedItems: IViewDescriptorItem[] = [];
const addedActiveDescriptors: IViewDescriptor[] = [];
const addedVisibleItems: { index: number, viewDescriptor: IViewDescriptor, size?: number, collapsed: boolean; }[] = [];
for (const viewDescriptor of viewDescriptors) {
for (const addedViewDescriptorState of addedViewDescriptorStates) {
const viewDescriptor = addedViewDescriptorState.viewDescriptor;
if (viewDescriptor.when) {
for (const key of viewDescriptor.when.keys()) {
@ -482,13 +483,13 @@ export class ViewContainerModel extends Disposable implements IViewContainerMode
} else {
state.visibleGlobal = isUndefinedOrNull(state.visibleGlobal) ? !viewDescriptor.hideByDefault : state.visibleGlobal;
}
state.collapsed = isUndefinedOrNull(state.collapsed) ? !!viewDescriptor.collapsed : state.collapsed;
state.collapsed = isUndefinedOrNull(addedViewDescriptorState.collapsed) ? (isUndefinedOrNull(state.collapsed) ? !!viewDescriptor.collapsed : state.collapsed) : addedViewDescriptorState.collapsed;
} else {
state = {
active: false,
visibleGlobal: !viewDescriptor.hideByDefault,
visibleWorkspace: !viewDescriptor.hideByDefault,
collapsed: !!viewDescriptor.collapsed,
collapsed: isUndefinedOrNull(addedViewDescriptorState.collapsed) ? !!viewDescriptor.collapsed : addedViewDescriptorState.collapsed,
};
}
this.viewDescriptorsState.set(viewDescriptor.id, state);

View file

@ -7,6 +7,7 @@ import * as assert from 'assert';
import { BoundModelReferenceCollection } from 'vs/workbench/api/browser/mainThreadDocuments';
import { createTextModel } from 'vs/editor/test/common/editorTestUtils';
import { timeout } from 'vs/base/common/async';
import { URI } from 'vs/base/common/uri';
suite('BoundModelReferenceCollection', () => {
@ -20,12 +21,14 @@ suite('BoundModelReferenceCollection', () => {
let didDispose = false;
col.add({
object: <any>{ textEditorModel: createTextModel('farboo') },
dispose() {
didDispose = true;
}
});
col.add(
URI.parse('test://farboo'),
{
object: <any>{ textEditorModel: createTextModel('farboo') },
dispose() {
didDispose = true;
}
});
await timeout(30);
assert.equal(didDispose, true);
@ -35,27 +38,95 @@ suite('BoundModelReferenceCollection', () => {
let disposed: number[] = [];
col.add({
object: <any>{ textEditorModel: createTextModel('farboo') },
dispose() {
disposed.push(0);
}
});
col.add({
object: <any>{ textEditorModel: createTextModel('boofar') },
dispose() {
disposed.push(1);
}
});
col.add(
URI.parse('test://farboo'),
{
object: <any>{ textEditorModel: createTextModel('farboo') },
dispose() {
disposed.push(0);
}
});
col.add({
object: <any>{ textEditorModel: createTextModel(new Array(71).join('x')) },
dispose() {
disposed.push(2);
}
});
col.add(
URI.parse('test://boofar'),
{
object: <any>{ textEditorModel: createTextModel('boofar') },
dispose() {
disposed.push(1);
}
});
col.add(
URI.parse('test://xxxxxxx'),
{
object: <any>{ textEditorModel: createTextModel(new Array(71).join('x')) },
dispose() {
disposed.push(2);
}
});
assert.deepEqual(disposed, [0, 1]);
});
test('dispose uri', () => {
let disposed: number[] = [];
col.add(
URI.parse('test:///farboo'),
{
object: <any>{ textEditorModel: createTextModel('farboo') },
dispose() {
disposed.push(0);
}
});
col.add(
URI.parse('test:///boofar'),
{
object: <any>{ textEditorModel: createTextModel('boofar') },
dispose() {
disposed.push(1);
}
});
col.add(
URI.parse('test:///boo/far1'),
{
object: <any>{ textEditorModel: createTextModel('boo/far1') },
dispose() {
disposed.push(2);
}
});
col.add(
URI.parse('test:///boo/far2'),
{
object: <any>{ textEditorModel: createTextModel('boo/far2') },
dispose() {
disposed.push(3);
}
});
col.add(
URI.parse('test:///boo1/far'),
{
object: <any>{ textEditorModel: createTextModel('boo1/far') },
dispose() {
disposed.push(4);
}
});
col.remove(URI.parse('test:///unknown'));
assert.equal(disposed.length, 0);
col.remove(URI.parse('test:///farboo'));
assert.deepEqual(disposed, [0]);
disposed = [];
col.remove(URI.parse('test:///boo'));
assert.deepEqual(disposed, [2, 3]);
});
});

View file

@ -25,7 +25,7 @@ import { NullLogService } from 'vs/platform/log/common/log';
import { UndoRedoService } from 'vs/platform/undoRedo/common/undoRedoService';
import { TestDialogService } from 'vs/platform/dialogs/test/common/testDialogService';
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { TestTextResourcePropertiesService } from 'vs/workbench/test/common/workbenchTestServices';
import { TestTextResourcePropertiesService, TestWorkingCopyFileService } from 'vs/workbench/test/common/workbenchTestServices';
suite('MainThreadDocumentsAndEditors', () => {
@ -88,7 +88,8 @@ suite('MainThreadDocumentsAndEditors', () => {
return undefined;
}
},
TestEnvironmentService
TestEnvironmentService,
new TestWorkingCopyFileService()
);
});

View file

@ -104,6 +104,7 @@ suite('MainThreadEditors', () => {
};
});
services.set(IWorkingCopyFileService, new class extends mock<IWorkingCopyFileService>() {
onDidRunWorkingCopyFileOperation = Event.None;
move(source: URI, target: URI) {
movedResources.set(source, target);
return Promise.resolve(Object.create(null));

View file

@ -14,8 +14,11 @@ import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, isSingleFolderW
import { ITextResourcePropertiesService } from 'vs/editor/common/services/textResourceConfigurationService';
import { isLinux, isMacintosh } from 'vs/base/common/platform';
import { InMemoryStorageService, IWillSaveStateEvent } from 'vs/platform/storage/common/storage';
import { WorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
import { WorkingCopyService, IWorkingCopy } from 'vs/workbench/services/workingCopy/common/workingCopyService';
import { NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { IWorkingCopyFileService, IWorkingCopyFileOperationParticipant, WorkingCopyFileEvent } from 'vs/workbench/services/workingCopy/common/workingCopyFileService';
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
import { FileOperation, IFileStatWithMetadata } from 'vs/platform/files/common/files';
export class TestTextResourcePropertiesService implements ITextResourcePropertiesService {
@ -121,6 +124,29 @@ export class TestStorageService extends InMemoryStorageService {
export class TestWorkingCopyService extends WorkingCopyService { }
export class TestWorkingCopyFileService implements IWorkingCopyFileService {
_serviceBrand: undefined;
onWillRunWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
onDidFailWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
onDidRunWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
addFileOperationParticipant(participant: IWorkingCopyFileOperationParticipant): IDisposable { return Disposable.None; }
async runFileOperationParticipants(target: URI, source: URI | undefined, operation: FileOperation): Promise<void> { }
async delete(resource: URI, options?: { useTrash?: boolean | undefined; recursive?: boolean | undefined; } | undefined): Promise<void> { }
registerWorkingCopyProvider(provider: (resourceOrFolder: URI) => IWorkingCopy[]): IDisposable { return Disposable.None; }
getDirty(resource: URI): IWorkingCopy[] { return []; }
move(source: URI, target: URI, overwrite?: boolean | undefined): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); }
copy(source: URI, target: URI, overwrite?: boolean | undefined): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); }
}
export function mock<T>(): Ctor<T> {
return function () { } as any;
}

View file

@ -316,7 +316,7 @@ describe(`VSCode Smoke Tests (${opts.web ? 'Web' : 'Electron'})`, () => {
if (!opts.web) { setupDataLossTests(); }
if (!opts.web) { setupDataPreferencesTests(); }
setupDataSearchTests();
setupDataNotebookTests();
if (!opts.web) { setupDataNotebookTests(); }
setupDataLanguagesTests();
setupDataEditorTests();
setupDataStatusbarTests(!!opts.web);

View file

@ -116,7 +116,6 @@ app.on('ready', () => {
nodeIntegration: true,
webSecurity: false,
webviewTag: true,
enableWebSQL: false,
preload: path.join(__dirname, '..', '..', '..', 'src', 'vs', 'base', 'parts', 'sandbox', 'electron-browser', 'preload.js') // ensure similar environment as VSCode as tests may depend on this
}
});

View file

@ -2715,10 +2715,10 @@ electron-to-chromium@^1.2.7:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d"
integrity sha1-eOy4o5kGYYe7N07t412ccFZagD0=
electron@8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-8.3.0.tgz#c2b565a4c10d6d287d20164bcd5a478468b940a9"
integrity sha512-XRjiIJICZCgUr2vKSUI2PTkfP0gPFqCtqJUaTJSfCTuE3nTrxBKOUNeRMuCzEqspKkpFQU3SB3MdbMSHmZARlQ==
electron@7.2.4:
version "7.2.4"
resolved "https://registry.yarnpkg.com/electron/-/electron-7.2.4.tgz#9fc0446dae23ead897af8742470cb18da55c6ce9"
integrity sha512-Z+R692uTzXgP8AHrabE+kkrMlQJ6pnAYoINenwj9QSqaD2YbO8IuXU9DMCcUY0+VpA91ee09wFZJNUKYPMnCKg==
dependencies:
"@electron/get" "^1.0.1"
"@types/node" "^12.0.12"