diff --git a/news/1 Enhancements/2690.md b/news/1 Enhancements/2690.md new file mode 100644 index 000000000000..da5a10eec990 --- /dev/null +++ b/news/1 Enhancements/2690.md @@ -0,0 +1 @@ +Enable on-type formatting from language server diff --git a/src/client/activation/jedi.ts b/src/client/activation/jedi.ts index 8eb5608cd30c..f12debb4b0c4 100644 --- a/src/client/activation/jedi.ts +++ b/src/client/activation/jedi.ts @@ -16,6 +16,9 @@ import { PythonReferenceProvider } from '../providers/referenceProvider'; import { PythonRenameProvider } from '../providers/renameProvider'; import { PythonSignatureProvider } from '../providers/signatureProvider'; import { JediSymbolProvider } from '../providers/symbolProvider'; +import { BlockFormatProviders } from '../typeFormatters/blockFormatProvider'; +import { OnTypeFormattingDispatcher } from '../typeFormatters/dispatcher'; +import { OnEnterFormatter } from '../typeFormatters/onEnterFormatter'; import { IUnitTestManagementService } from '../unittests/types'; import { WorkspaceSymbols } from '../workspaceSymbols/main'; import { IExtensionActivator } from './types'; @@ -47,6 +50,15 @@ export class JediExtensionActivator implements IExtensionActivator { context.subscriptions.push(languages.registerCompletionItemProvider(this.documentSelector, new PythonCompletionItemProvider(jediFactory, this.serviceManager), '.')); context.subscriptions.push(languages.registerCodeLensProvider(this.documentSelector, this.serviceManager.get(IShebangCodeLensProvider))); + const onTypeDispatcher = new OnTypeFormattingDispatcher({ + '\n': new OnEnterFormatter(), + ':': new BlockFormatProviders() + }); + const onTypeTriggers = onTypeDispatcher.getTriggerCharacters(); + if (onTypeTriggers) { + context.subscriptions.push(languages.registerOnTypeFormattingEditProvider(PYTHON, onTypeDispatcher, onTypeTriggers.first, ...onTypeTriggers.more)); + } + const serviceContainer = this.serviceManager.get(IServiceContainer); context.subscriptions.push(new WorkspaceSymbols(serviceContainer)); diff --git a/src/client/extension.ts b/src/client/extension.ts index e4d9458d2f52..c5c3d6c6423a 100644 --- a/src/client/extension.ts +++ b/src/client/extension.ts @@ -58,9 +58,6 @@ import { sendTelemetryEvent } from './telemetry'; import { EDITOR_LOAD } from './telemetry/constants'; import { registerTypes as commonRegisterTerminalTypes } from './terminals/serviceRegistry'; import { ICodeExecutionManager, ITerminalAutoActivation } from './terminals/types'; -import { BlockFormatProviders } from './typeFormatters/blockFormatProvider'; -import { OnTypeFormattingDispatcher } from './typeFormatters/dispatcher'; -import { OnEnterFormatter } from './typeFormatters/onEnterFormatter'; import { TEST_OUTPUT_CHANNEL } from './unittests/common/constants'; import { registerTypes as unitTestsRegisterTypes } from './unittests/serviceRegistry'; @@ -137,15 +134,6 @@ export async function activate(context: ExtensionContext): Promise(IFeatureDeprecationManager); deprecationMgr.initialize(); context.subscriptions.push(deprecationMgr);