未验证 提交 b8a7c7f4 编写于 作者: U Urange 提交者: GitHub

Merge pull request #1 from microsoft/master

Updating my fork
......@@ -125,7 +125,7 @@ function storeServiceDependency(id: Function, target: Function, index: number, o
/**
* A *only* valid way to create a {{ServiceIdentifier}}.
*/
export function createDecorator<T>(serviceId: string): { (...args: any[]): void; type: T; } {
export function createDecorator<T>(serviceId: string): ServiceIdentifier<T> {
if (_util.serviceIds.has(serviceId)) {
return _util.serviceIds.get(serviceId)!;
......
......@@ -3,43 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
.monaco-editor .codelens-decoration {
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
}
.monaco-editor .codelens-decoration > span,
.monaco-editor .codelens-decoration > a {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
vertical-align: sub;
}
.monaco-editor .codelens-decoration > a {
text-decoration: none;
}
.monaco-editor .codelens-decoration > a:hover {
text-decoration: underline;
cursor: pointer;
}
.monaco-editor .codelens-decoration.invisible-cl {
opacity: 0;
}
@keyframes fadein { 0% { opacity:0; visibility:visible;} 100% { opacity:1; } }
@-moz-keyframes fadein { 0% { opacity:0; visibility:visible;} 100% { opacity:1; } }
@-o-keyframes fadein { 0% { opacity:0; visibility:visible;} 100% { opacity:1; } }
@-webkit-keyframes fadein { 0% { opacity:0; visibility:visible;} 100% { opacity:1; } }
.monaco-editor .codelens-decoration.fadein {
-webkit-animation: fadein 0.5s linear;
-moz-animation: fadein 0.5s linear;
-o-animation: fadein 0.5s linear;
animation: fadein 0.5s linear;
.monaco-editor .code-inset {
z-index: 10;
}
......@@ -155,6 +155,7 @@ export class CodeInsetWidget {
}
const div = document.createElement('div');
div.className = 'code-inset';
webview.mountTo(div);
webview.onMessage((e: { type: string, payload: any }) => {
// The webview contents can use a "size-info" message to report its size.
......
......@@ -201,19 +201,34 @@ async function showFormatterPick(accessor: ServicesAccessor, model: ITextModel,
const overrides = { resource: model.uri, overrideIdentifier: model.getModeId() };
const defaultFormatter = configService.getValue<string>(DefaultFormatter.configName, overrides);
let defaultFormatterPick: IIndexedPick | undefined;
const picks = formatters.map((provider, index) => {
return <IIndexedPick>{
const isDefault = ExtensionIdentifier.equals(provider.extensionId, defaultFormatter);
const pick = <IIndexedPick>{
index,
label: provider.displayName || '',
description: ExtensionIdentifier.equals(provider.extensionId, defaultFormatter) ? nls.localize('def', "(default)") : undefined,
description: isDefault ? nls.localize('def', "(default)") : undefined,
};
if (isDefault) {
// autofocus default pick
defaultFormatterPick = pick;
}
return pick;
});
const configurePick: IQuickPickItem = {
label: nls.localize('config', "Configure Default Formatter...")
};
const pick = await quickPickService.pick([...picks, { type: 'separator' }, configurePick], { placeHolder: nls.localize('format.placeHolder', "Select a formatter") });
const pick = await quickPickService.pick([...picks, { type: 'separator' }, configurePick],
{
placeHolder: nls.localize('format.placeHolder', "Select a formatter"),
activeItem: defaultFormatterPick
}
);
if (!pick) {
// dismissed
return undefined;
......
......@@ -117,7 +117,28 @@ export class TerminalService extends BrowserTerminalService implements ITerminal
});
}
private _detectWindowsShells(): Promise<IQuickPickItem[]> {
/**
* Get the executable file path of shell from registry.
* @param shellName The shell name to get the executable file path
* @returns `[]` or `[ 'path' ]`
*/
private async _getShellPathFromRegistry(shellName: string): Promise<string[]> {
const Registry = await import('vscode-windows-registry');
try {
const shellPath = Registry.GetStringRegKey('HKEY_LOCAL_MACHINE', `SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\${shellName}.exe`, '');
if (shellPath === undefined) {
return [];
}
return [shellPath];
} catch (error) {
return [];
}
}
private async _detectWindowsShells(): Promise<IQuickPickItem[]> {
// Determine the correct System32 path. We want to point to Sysnative
// when the 32-bit version of VS Code is running on a 64-bit machine.
// The reason for this is because PowerShell's important PSReadline
......@@ -134,6 +155,7 @@ export class TerminalService extends BrowserTerminalService implements ITerminal
const expectedLocations = {
'Command Prompt': [`${system32Path}\\cmd.exe`],
PowerShell: [`${system32Path}\\WindowsPowerShell\\v1.0\\powershell.exe`],
'PowerShell Core': await this._getShellPathFromRegistry('pwsh'),
'WSL Bash': [`${system32Path}\\${useWSLexe ? 'wsl.exe' : 'bash.exe'}`],
'Git Bash': [
`${process.env['ProgramW6432']}\\Git\\bin\\bash.exe`,
......
......@@ -290,25 +290,25 @@ suite('FileSearchEngine', () => {
});
});
test('Files: NPE (CamelCase)', function (done: () => void) {
this.timeout(testTimeout);
const engine = new FileSearchEngine({
type: QueryType.File,
folderQueries: ROOT_FOLDER_QUERY,
filePattern: 'NullPE'
});
let count = 0;
engine.search((result) => {
if (result) {
count++;
}
}, () => { }, (error) => {
assert.ok(!error);
assert.equal(count, 1);
done();
});
});
// test('Files: NPE (CamelCase)', function (done: () => void) {
// this.timeout(testTimeout);
// const engine = new FileSearchEngine({
// type: QueryType.File,
// folderQueries: ROOT_FOLDER_QUERY,
// filePattern: 'NullPE'
// });
// let count = 0;
// engine.search((result) => {
// if (result) {
// count++;
// }
// }, () => { }, (error) => {
// assert.ok(!error);
// assert.equal(count, 1);
// done();
// });
// });
test('Files: *.*', function (done: () => void) {
this.timeout(testTimeout);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册