Skip to content

Commit 14cc9fc

Browse files
Merge pull request #1735 from Leopotam/optional-format-support
Support for optional formatting.
2 parents b7304ea + 08d5b73 commit 14cc9fc

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@
214214
"configuration": {
215215
"title": "C# configuration",
216216
"properties": {
217+
"csharp.format.enable": {
218+
"type": "boolean",
219+
"default": true,
220+
"description": "Enable/disable default C# formatter (requires restart)."
221+
},
217222
"csharp.suppressDotnetInstallWarning": {
218223
"type": "boolean",
219224
"default": false,
@@ -2139,4 +2144,4 @@
21392144
}
21402145
]
21412146
}
2142-
}
2147+
}

src/omnisharp/extension.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ export function activate(context: vscode.ExtensionContext, reporter: TelemetryRe
3737
scheme: 'file' // only files from disk
3838
};
3939

40+
const options = Options.Read();
41+
4042
const server = new OmniSharpServer(reporter);
4143
const advisor = new Advisor(server); // create before server is started
4244
const disposables: vscode.Disposable[] = [];
@@ -60,8 +62,10 @@ export function activate(context: vscode.ExtensionContext, reporter: TelemetryRe
6062
localDisposables.push(vscode.languages.registerReferenceProvider(documentSelector, new ReferenceProvider(server, reporter)));
6163
localDisposables.push(vscode.languages.registerHoverProvider(documentSelector, new HoverProvider(server, reporter)));
6264
localDisposables.push(vscode.languages.registerRenameProvider(documentSelector, new RenameProvider(server, reporter)));
63-
localDisposables.push(vscode.languages.registerDocumentRangeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter)));
64-
localDisposables.push(vscode.languages.registerOnTypeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter), '}', ';'));
65+
if (options.useFormatting) {
66+
localDisposables.push(vscode.languages.registerDocumentRangeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter)));
67+
localDisposables.push(vscode.languages.registerOnTypeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter), '}', ';'));
68+
}
6569
localDisposables.push(vscode.languages.registerCompletionItemProvider(documentSelector, new CompletionItemProvider(server, reporter), '.'));
6670
localDisposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(server, reporter)));
6771
localDisposables.push(vscode.languages.registerSignatureHelpProvider(documentSelector, new SignatureHelpProvider(server, reporter), '(', ','));
@@ -137,7 +141,6 @@ export function activate(context: vscode.ExtensionContext, reporter: TelemetryRe
137141
// read and store last solution or folder path
138142
disposables.push(server.onBeforeServerStart(path => context.workspaceState.update('lastSolutionPathOrFolder', path)));
139143

140-
const options = Options.Read();
141144
if (options.autoStart) {
142145
server.autoStart(context.workspaceState.get<string>('lastSolutionPathOrFolder'));
143146
}

src/omnisharp/options.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export class Options {
1414
public autoStart?: boolean,
1515
public projectLoadTimeout?: number,
1616
public maxProjectResults?: number,
17-
public useEditorFormattingSettings?: boolean) { }
17+
public useEditorFormattingSettings?: boolean,
18+
public useFormatting?: boolean) { }
1819

1920
public static Read(): Options {
2021
// Extra effort is taken below to ensure that legacy versions of options
@@ -48,6 +49,8 @@ export class Options {
4849
const maxProjectResults = omnisharpConfig.get<number>('maxProjectResults', 250);
4950
const useEditorFormattingSettings = omnisharpConfig.get<boolean>('useEditorFormattingSettings', true);
5051

51-
return new Options(path, useMono, waitForDebugger, loggingLevel, autoStart, projectLoadTimeout, maxProjectResults, useEditorFormattingSettings);
52+
const useFormatting = csharpConfig.get<boolean>('format.enable', true);
53+
54+
return new Options(path, useMono, waitForDebugger, loggingLevel, autoStart, projectLoadTimeout, maxProjectResults, useEditorFormattingSettings, useFormatting);
5255
}
5356
}

0 commit comments

Comments
 (0)