Skip to content

Commit eecb4dd

Browse files
jakebaileyDonJayamanne
authored andcommitted
Enable on-type formatting from language server (#2737)
For #2690. Similar to #2612. Note that `:`-based formatting isn't implemented in language server yet (microsoft/python-language-server#165), but it hasn't been enabled in the extension for anyone for a while now either (fixed in #2714/#2724). Since line formatting is relatively new in language server, this likely shouldn't make it out into a release until the language server downloaded by default is new enough to include that functionality. I haven't been monitoring that side of things, so feel free to hold off on merging this until the right time.
1 parent cdd1bf6 commit eecb4dd

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

news/1 Enhancements/2690.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Enable on-type formatting from language server

src/client/activation/jedi.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import { PythonReferenceProvider } from '../providers/referenceProvider';
1616
import { PythonRenameProvider } from '../providers/renameProvider';
1717
import { PythonSignatureProvider } from '../providers/signatureProvider';
1818
import { JediSymbolProvider } from '../providers/symbolProvider';
19+
import { BlockFormatProviders } from '../typeFormatters/blockFormatProvider';
20+
import { OnTypeFormattingDispatcher } from '../typeFormatters/dispatcher';
21+
import { OnEnterFormatter } from '../typeFormatters/onEnterFormatter';
1922
import { IUnitTestManagementService } from '../unittests/types';
2023
import { WorkspaceSymbols } from '../workspaceSymbols/main';
2124
import { IExtensionActivator } from './types';
@@ -47,6 +50,15 @@ export class JediExtensionActivator implements IExtensionActivator {
4750
context.subscriptions.push(languages.registerCompletionItemProvider(this.documentSelector, new PythonCompletionItemProvider(jediFactory, this.serviceManager), '.'));
4851
context.subscriptions.push(languages.registerCodeLensProvider(this.documentSelector, this.serviceManager.get<IShebangCodeLensProvider>(IShebangCodeLensProvider)));
4952

53+
const onTypeDispatcher = new OnTypeFormattingDispatcher({
54+
'\n': new OnEnterFormatter(),
55+
':': new BlockFormatProviders()
56+
});
57+
const onTypeTriggers = onTypeDispatcher.getTriggerCharacters();
58+
if (onTypeTriggers) {
59+
context.subscriptions.push(languages.registerOnTypeFormattingEditProvider(PYTHON, onTypeDispatcher, onTypeTriggers.first, ...onTypeTriggers.more));
60+
}
61+
5062
const serviceContainer = this.serviceManager.get<IServiceContainer>(IServiceContainer);
5163
context.subscriptions.push(new WorkspaceSymbols(serviceContainer));
5264

src/client/extension.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ import { sendTelemetryEvent } from './telemetry';
5858
import { EDITOR_LOAD } from './telemetry/constants';
5959
import { registerTypes as commonRegisterTerminalTypes } from './terminals/serviceRegistry';
6060
import { ICodeExecutionManager, ITerminalAutoActivation } from './terminals/types';
61-
import { BlockFormatProviders } from './typeFormatters/blockFormatProvider';
62-
import { OnTypeFormattingDispatcher } from './typeFormatters/dispatcher';
63-
import { OnEnterFormatter } from './typeFormatters/onEnterFormatter';
6461
import { TEST_OUTPUT_CHANNEL } from './unittests/common/constants';
6562
import { registerTypes as unitTestsRegisterTypes } from './unittests/serviceRegistry';
6663

@@ -137,15 +134,6 @@ export async function activate(context: ExtensionContext): Promise<IExtensionApi
137134
context.subscriptions.push(languages.registerDocumentRangeFormattingEditProvider(PYTHON, formatProvider));
138135
}
139136

140-
const onTypeDispatcher = new OnTypeFormattingDispatcher({
141-
'\n': new OnEnterFormatter(),
142-
':': new BlockFormatProviders()
143-
});
144-
const onTypeTriggers = onTypeDispatcher.getTriggerCharacters();
145-
if (onTypeTriggers) {
146-
context.subscriptions.push(languages.registerOnTypeFormattingEditProvider(PYTHON, onTypeDispatcher, onTypeTriggers.first, ...onTypeTriggers.more));
147-
}
148-
149137
const deprecationMgr = serviceContainer.get<IFeatureDeprecationManager>(IFeatureDeprecationManager);
150138
deprecationMgr.initialize();
151139
context.subscriptions.push(deprecationMgr);

0 commit comments

Comments
 (0)