Merge pull request #1598 from OmniSharp/master

Merge master into release
This commit is contained in:
Dustin Campbell 2017-06-27 10:15:30 -07:00 коммит произвёл GitHub
Родитель 67d2bc131a e1be046e44
Коммит 58c234ddd3
7 изменённых файлов: 62 добавлений и 24 удалений

Просмотреть файл

@ -4,6 +4,17 @@
* There currently is no completion support for package references in csproj files. ([#1156](https://github.com/OmniSharp/omnisharp-vscode/issues/1156)) * There currently is no completion support for package references in csproj files. ([#1156](https://github.com/OmniSharp/omnisharp-vscode/issues/1156))
* .NET Core SDK 2.0-preview2 is not yet supported. ([#1495](https://github.com/OmniSharp/omnisharp-vscode/issues/1495)) * .NET Core SDK 2.0-preview2 is not yet supported. ([#1495](https://github.com/OmniSharp/omnisharp-vscode/issues/1495))
## 1.11.0 _(Not Yet Released)_
#### Completion List
* No longer trigger completion when a '<' character is typed. ([#1521](https://github.com/OmniSharp/omnisharp-vscode/issues/1521), PR: [#1530](https://github.com/OmniSharp/omnisharp-vscode/pull/1530))
* Completion list no longer triggers on space in contexts where a lambda expression could be typed. ([#1524](https://github.com/OmniSharp/omnisharp-vscode/issues/1524), PR: [#1548](https://github.com/OmniSharp/omnisharp-vscode/pull/1548))
#### Other Updates and Fixes
* Allow the ".NET: Restore Packages" command to run on projects targeting full framework. ([#1507](https://github.com/OmniSharp/omnisharp-vscode/pull/1507), PR: [#1545](https://github.com/OmniSharp/omnisharp-vscode/pull/1545)) _(contributed by [@adamhartford](https://github.com/adamhartford))_
## 1.10.0 (May 25, 2017) ## 1.10.0 (May 25, 2017)
#### Completion List #### Completion List
@ -40,6 +51,7 @@
* Added `csharp.unitTestDebugingOptions` setting to pass launch.json-style debug options (example: `justMyCode`) when unit test debugging. * Added `csharp.unitTestDebugingOptions` setting to pass launch.json-style debug options (example: `justMyCode`) when unit test debugging.
#### Debugger #### Debugger
* Resolves crash on OSX when the target process loads an embedded PDB ([#1456](https://github.com/OmniSharp/omnisharp-vscode/issues/1456)). This commonly affects users trying to debug XUnit tests. * Resolves crash on OSX when the target process loads an embedded PDB ([#1456](https://github.com/OmniSharp/omnisharp-vscode/issues/1456)). This commonly affects users trying to debug XUnit tests.
* Enhanced exception peek display to provide additional exception properties. * Enhanced exception peek display to provide additional exception properties.

Просмотреть файл

@ -1,7 +1,7 @@
{ {
"name": "csharp", "name": "csharp",
"publisher": "ms-vscode", "publisher": "ms-vscode",
"version": "1.10.0", "version": "1.11.0-beta4",
"description": "C# for Visual Studio Code (powered by OmniSharp).", "description": "C# for Visual Studio Code (powered by OmniSharp).",
"displayName": "C#", "displayName": "C#",
"author": "Microsoft Corporation", "author": "Microsoft Corporation",
@ -68,7 +68,8 @@
"runtimeDependencies": [ "runtimeDependencies": [
{ {
"description": "Mono Runtime (Linux / x86)", "description": "Mono Runtime (Linux / x86)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/mono.linux-x86-4.8.0.478.zip", "url": "https://omnisharpdownload.azureedge.net/ext/mono.linux-x86-5.2.0-omnisharp1.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/mono.linux-x86-5.2.0-omnisharp1.zip",
"installPath": "./bin", "installPath": "./bin",
"platforms": [ "platforms": [
"linux" "linux"
@ -84,7 +85,8 @@
}, },
{ {
"description": "Mono Runtime (Linux / x64)", "description": "Mono Runtime (Linux / x64)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/mono.linux-x86_64-4.8.0.478.zip", "url": "https://omnisharpdownload.azureedge.net/ext/mono.linux-x86_64-5.2.0-omnisharp1.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/mono.linux-x86_64-5.2.0-omnisharp1.zip",
"installPath": "./bin", "installPath": "./bin",
"platforms": [ "platforms": [
"linux" "linux"
@ -100,7 +102,8 @@
}, },
{ {
"description": "Mono Runtime (macOS)", "description": "Mono Runtime (macOS)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/mono.osx-4.8.0.478.zip", "url": "https://omnisharpdownload.azureedge.net/ext/mono.osx-5.2.0-omnisharp1.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/mono.osx-5.2.0-omnisharp1.zip",
"installPath": "./bin", "installPath": "./bin",
"platforms": [ "platforms": [
"darwin" "darwin"
@ -113,7 +116,8 @@
}, },
{ {
"description": "Mono Framework Assemblies", "description": "Mono Framework Assemblies",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/framework-4.8.0.478.zip", "url": "https://omnisharpdownload.azureedge.net/ext/framework-5.2.0-omnisharp1.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/framework-5.2.0-omnisharp1.zip",
"installPath": "./bin/framework", "installPath": "./bin/framework",
"platforms": [ "platforms": [
"darwin", "darwin",
@ -123,7 +127,8 @@
}, },
{ {
"description": "OmniSharp (.NET 4.6 / x86)", "description": "OmniSharp (.NET 4.6 / x86)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x86-1.19.1.zip", "url": "https://omnisharpdownload.azureedge.net/ext/omnisharp-win-x86-1.21.0.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x86-1.21.0.zip",
"installPath": "./bin/omnisharp", "installPath": "./bin/omnisharp",
"platforms": [ "platforms": [
"win32" "win32"
@ -135,7 +140,8 @@
}, },
{ {
"description": "OmniSharp (.NET 4.6 / x64)", "description": "OmniSharp (.NET 4.6 / x64)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.19.1.zip", "url": "https://omnisharpdownload.azureedge.net/ext/omnisharp-win-x64-1.21.0.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.21.0.zip",
"installPath": "./bin/omnisharp", "installPath": "./bin/omnisharp",
"platforms": [ "platforms": [
"win32" "win32"
@ -147,7 +153,8 @@
}, },
{ {
"description": "OmniSharp (Mono 4.6)", "description": "OmniSharp (Mono 4.6)",
"url": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-mono-1.19.1.zip", "url": "https://omnisharpdownload.azureedge.net/ext/omnisharp-mono-1.21.0.zip",
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-mono-1.21.0.zip",
"installPath": "./bin/omnisharp", "installPath": "./bin/omnisharp",
"platforms": [ "platforms": [
"darwin", "darwin",
@ -360,7 +367,7 @@
], ],
"description": "If the current Linux distribution is not recognized, this option can be used to tell the debugger what version can be used. After changing this option, close VS Code, remove the debugger folder (~/.vscode/extensions/ms-vscode.csharp-<ver>/.debugger) if it has already downloaded, and restart VS Code." "description": "If the current Linux distribution is not recognized, this option can be used to tell the debugger what version can be used. After changing this option, close VS Code, remove the debugger folder (~/.vscode/extensions/ms-vscode.csharp-<ver>/.debugger) if it has already downloaded, and restart VS Code."
}, },
"csharp.unitTestDebugingOptions": { "csharp.unitTestDebuggingOptions": {
"type": "object", "type": "object",
"description": "Options to use with the debugger when launching for unit test debugging. Any launch.json option is valid here.", "description": "Options to use with the debugger when launching for unit test debugging. Any launch.json option is valid here.",
"default": {}, "default": {},
@ -401,7 +408,7 @@
"debugServer": { "debugServer": {
"type": "number", "type": "number",
"description": "For debug extension development only: if a port is specified VS Code tries to connect to a debug adapter running in server mode", "description": "For debug extension development only: if a port is specified VS Code tries to connect to a debug adapter running in server mode",
"default": 4711 "default": 4711
}, },
"logging": { "logging": {
"description": "Optional flags to determine what types of messages should be logged to the output window.", "description": "Optional flags to determine what types of messages should be logged to the output window.",
@ -444,9 +451,9 @@
"description": "Suppress the notification window to perform a 'dotnet restore' when dependencies can't be resolved." "description": "Suppress the notification window to perform a 'dotnet restore' when dependencies can't be resolved."
}, },
"csharp.suppressHiddenDiagnostics": { "csharp.suppressHiddenDiagnostics": {
"type": "boolean", "type": "boolean",
"default": true, "default": true,
"description": "Suppress 'hidden' diagnostics (such as 'unnecessary using directives') from appearing in the editor or the Problems pane." "description": "Suppress 'hidden' diagnostics (such as 'unnecessary using directives') from appearing in the editor or the Problems pane."
}, },
"omnisharp.path": { "omnisharp.path": {
"type": [ "type": [
@ -2271,4 +2278,4 @@
} }
] ]
} }
} }

Просмотреть файл

@ -15,10 +15,15 @@ import {CompletionItemProvider, CompletionItem, CompletionItemKind, Cancellation
export default class OmniSharpCompletionItemProvider extends AbstractSupport implements CompletionItemProvider { export default class OmniSharpCompletionItemProvider extends AbstractSupport implements CompletionItemProvider {
// copied from Roslyn here: https://github.com/dotnet/roslyn/blob/6e8f6d600b6c4bc0b92bc3d782a9e0b07e1c9f8e/src/Features/Core/Portable/Completion/CompletionRules.cs#L166-L169 // copied from Roslyn here: https://github.com/dotnet/roslyn/blob/6e8f6d600b6c4bc0b92bc3d782a9e0b07e1c9f8e/src/Features/Core/Portable/Completion/CompletionRules.cs#L166-L169
private static DefaultCommitCharacters = [ private static AllCommitCharacters = [
' ', '{', '}', '[', ']', '(', ')', '.', ',', ':', ' ', '{', '}', '[', ']', '(', ')', '.', ',', ':',
';', '+', '-', '*', '/', '%', '&', '|', '^', '!', ';', '+', '-', '*', '/', '%', '&', '|', '^', '!',
'~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\']; '~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\'];
private static CommitCharactersWithoutSpace = [
'{', '}', '[', ']', '(', ')', '.', ',', ':',
';', '+', '-', '*', '/', '%', '&', '|', '^', '!',
'~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\'];
public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> { public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> {
@ -55,7 +60,10 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp
completion.documentation = extractSummaryText(response.Description); completion.documentation = extractSummaryText(response.Description);
completion.kind = _kinds[response.Kind] || CompletionItemKind.Property; completion.kind = _kinds[response.Kind] || CompletionItemKind.Property;
completion.insertText = response.CompletionText.replace(/<>/g, ''); completion.insertText = response.CompletionText.replace(/<>/g, '');
completion.commitCharacters = OmniSharpCompletionItemProvider.DefaultCommitCharacters;
completion.commitCharacters = response.IsSuggestionMode
? OmniSharpCompletionItemProvider.CommitCharactersWithoutSpace
: OmniSharpCompletionItemProvider.AllCommitCharacters;
let array = completions[completion.label]; let array = completions[completion.label];
if (!array) { if (!array) {

Просмотреть файл

@ -100,7 +100,7 @@ export function runDotnetTest(testMethod: string, fileName: string, testFramewor
} }
function createLaunchConfiguration(program: string, args: string, cwd: string, debuggerEventsPipeName: string) { function createLaunchConfiguration(program: string, args: string, cwd: string, debuggerEventsPipeName: string) {
let debugOptions = vscode.workspace.getConfiguration('csharp').get('unitTestDebugingOptions'); let debugOptions = vscode.workspace.getConfiguration('csharp').get('unitTestDebuggingOptions');
// Get the initial set of options from the workspace setting // Get the initial set of options from the workspace setting
let result: any; let result: any;

Просмотреть файл

@ -57,7 +57,7 @@ export function activate(context: vscode.ExtensionContext, reporter: TelemetryRe
localDisposables.push(vscode.languages.registerRenameProvider(documentSelector, new RenameProvider(server))); localDisposables.push(vscode.languages.registerRenameProvider(documentSelector, new RenameProvider(server)));
localDisposables.push(vscode.languages.registerDocumentRangeFormattingEditProvider(documentSelector, new FormatProvider(server))); localDisposables.push(vscode.languages.registerDocumentRangeFormattingEditProvider(documentSelector, new FormatProvider(server)));
localDisposables.push(vscode.languages.registerOnTypeFormattingEditProvider(documentSelector, new FormatProvider(server), '}', ';')); localDisposables.push(vscode.languages.registerOnTypeFormattingEditProvider(documentSelector, new FormatProvider(server), '}', ';'));
localDisposables.push(vscode.languages.registerCompletionItemProvider(documentSelector, new CompletionItemProvider(server), '.', '<')); localDisposables.push(vscode.languages.registerCompletionItemProvider(documentSelector, new CompletionItemProvider(server), '.'));
localDisposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(server))); localDisposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(server)));
localDisposables.push(vscode.languages.registerSignatureHelpProvider(documentSelector, new SignatureHelpProvider(server), '(', ',')); localDisposables.push(vscode.languages.registerSignatureHelpProvider(documentSelector, new SignatureHelpProvider(server), '(', ','));
const codeActionProvider = new CodeActionProvider(server); const codeActionProvider = new CodeActionProvider(server);

Просмотреть файл

@ -267,6 +267,7 @@ export interface AutoCompleteResponse {
ReturnType: string; ReturnType: string;
Snippet: string; Snippet: string;
Kind: string; Kind: string;
IsSuggestionMode: boolean;
} }
export interface ProjectInformationResponse { export interface ProjectInformationResponse {
@ -565,6 +566,11 @@ export namespace V2 {
} }
} }
export function findNetFrameworkTargetFramework(project: MSBuildProject): TargetFramework {
let regexp = new RegExp('^net[1-4]');
return project.TargetFrameworks.find(tf => regexp.test(tf.ShortName));
}
export function findNetCoreAppTargetFramework(project: MSBuildProject): TargetFramework { export function findNetCoreAppTargetFramework(project: MSBuildProject): TargetFramework {
return project.TargetFrameworks.find(tf => tf.ShortName.startsWith('netcoreapp')); return project.TargetFrameworks.find(tf => tf.ShortName.startsWith('netcoreapp'));
} }
@ -573,6 +579,12 @@ export function findNetStandardTargetFramework(project: MSBuildProject): TargetF
return project.TargetFrameworks.find(tf => tf.ShortName.startsWith('netstandard')); return project.TargetFrameworks.find(tf => tf.ShortName.startsWith('netstandard'));
} }
export function isDotNetCoreProject(project: MSBuildProject): Boolean {
return findNetCoreAppTargetFramework(project) !== undefined ||
findNetStandardTargetFramework(project) !== undefined ||
findNetFrameworkTargetFramework(project) !== undefined;
}
export interface ProjectDescriptor { export interface ProjectDescriptor {
Name: string; Name: string;
Directory: string; Directory: string;
@ -594,8 +606,7 @@ export function getDotNetCoreProjectDescriptors(info: WorkspaceInformationRespon
if (info.MsBuild && info.MsBuild.Projects.length > 0) { if (info.MsBuild && info.MsBuild.Projects.length > 0) {
for (let project of info.MsBuild.Projects) { for (let project of info.MsBuild.Projects) {
if (findNetCoreAppTargetFramework(project) !== undefined || if (isDotNetCoreProject(project)) {
findNetStandardTargetFramework(project) !== undefined) {
result.push({ result.push({
Name: path.basename(project.Path), Name: path.basename(project.Path),
Directory: path.dirname(project.Path), Directory: path.dirname(project.Path),

Просмотреть файл

@ -3,14 +3,14 @@ OptionsSchema.json defines the type for Launch/Attach options.
# GenerateOptionsSchema # GenerateOptionsSchema
If there are any modifications to the OptionsSchema.json file. Please run `gulp generateOptionsSchema` at the repo root. If there are any modifications to the OptionsSchema.json file. Please run `gulp generateOptionsSchema` at the repo root.
This will call GenerateOptionsSchema and update the package.json file. This will call GenerateOptionsSchema and update the package.json file.
### Important notes: ### Important notes:
1. Any manual changes to package.json's object.contributes.debuggers[0].configurationAttributes will be 1. Any manual changes to package.json's object.contributes.debuggers[0].configurationAttributes will be
replaced by this generator. replaced by this generator.
2. This does **NOT** update the schema for csharp.unitTestDebugingOptions. So if the schema change is something valuable in unit test debugging, consider updating that section of package.json (look for `"csharp.unitTestDebugingOptions"`). The schema will work even if this step is omitted, but users will not get IntelliSense help when editing the new option if this step is skipped. 2. This does **NOT** update the schema for csharp.unitTestDebuggingOptions. So if the schema change is something valuable in unit test debugging, consider updating that section of package.json (look for `"csharp.unitTestDebuggingOptions"`). The schema will work even if this step is omitted, but users will not get IntelliSense help when editing the new option if this step is skipped.
If there is any other type of options added in the future, you will need to modify the GenerateOptionsSchema function If there is any other type of options added in the future, you will need to modify the GenerateOptionsSchema function
to have it appear in package.json. It only adds launch and attach. to have it appear in package.json. It only adds launch and attach.