Skip to content

Commit 63b7410

Browse files
lostintangentbrettcannon
authored andcommitted
Restrict language services to file/untitled schemes (#1298)
1 parent 67f42f0 commit 63b7410

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

src/client/activation/classic.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ import { TEST_OUTPUT_CHANNEL } from '../unittests/common/constants';
2020
import * as tests from '../unittests/main';
2121
import { IExtensionActivator } from './types';
2222

23-
const PYTHON: DocumentFilter = { language: 'python' };
24-
2523
export class ClassicExtensionActivator implements IExtensionActivator {
26-
constructor(private serviceManager: IServiceManager, private pythonSettings: IPythonSettings) {
24+
constructor(private serviceManager: IServiceManager, private pythonSettings: IPythonSettings, private documentSelector: DocumentFilter[]) {
2725
}
2826

2927
public async activate(context: ExtensionContext): Promise<boolean> {
@@ -35,20 +33,20 @@ export class ClassicExtensionActivator implements IExtensionActivator {
3533
context.subscriptions.push(...activateGoToObjectDefinitionProvider(jediFactory));
3634

3735
context.subscriptions.push(jediFactory);
38-
context.subscriptions.push(languages.registerRenameProvider(PYTHON, new PythonRenameProvider(this.serviceManager)));
36+
context.subscriptions.push(languages.registerRenameProvider(this.documentSelector, new PythonRenameProvider(this.serviceManager)));
3937
const definitionProvider = new PythonDefinitionProvider(jediFactory);
4038

41-
context.subscriptions.push(languages.registerDefinitionProvider(PYTHON, definitionProvider));
42-
context.subscriptions.push(languages.registerHoverProvider(PYTHON, new PythonHoverProvider(jediFactory)));
43-
context.subscriptions.push(languages.registerReferenceProvider(PYTHON, new PythonReferenceProvider(jediFactory)));
44-
context.subscriptions.push(languages.registerCompletionItemProvider(PYTHON, new PythonCompletionItemProvider(jediFactory, this.serviceManager), '.'));
45-
context.subscriptions.push(languages.registerCodeLensProvider(PYTHON, this.serviceManager.get<IShebangCodeLensProvider>(IShebangCodeLensProvider)));
39+
context.subscriptions.push(languages.registerDefinitionProvider(this.documentSelector, definitionProvider));
40+
context.subscriptions.push(languages.registerHoverProvider(this.documentSelector, new PythonHoverProvider(jediFactory)));
41+
context.subscriptions.push(languages.registerReferenceProvider(this.documentSelector, new PythonReferenceProvider(jediFactory)));
42+
context.subscriptions.push(languages.registerCompletionItemProvider(this.documentSelector, new PythonCompletionItemProvider(jediFactory, this.serviceManager), '.'));
43+
context.subscriptions.push(languages.registerCodeLensProvider(this.documentSelector, this.serviceManager.get<IShebangCodeLensProvider>(IShebangCodeLensProvider)));
4644

4745
const symbolProvider = new PythonSymbolProvider(jediFactory);
48-
context.subscriptions.push(languages.registerDocumentSymbolProvider(PYTHON, symbolProvider));
46+
context.subscriptions.push(languages.registerDocumentSymbolProvider(this.documentSelector, symbolProvider));
4947

5048
if (this.pythonSettings.devOptions.indexOf('DISABLE_SIGNATURE') === -1) {
51-
context.subscriptions.push(languages.registerSignatureHelpProvider(PYTHON, new PythonSignatureProvider(jediFactory), '(', ','));
49+
context.subscriptions.push(languages.registerSignatureHelpProvider(this.documentSelector, new PythonSignatureProvider(jediFactory), '(', ','));
5250
}
5351

5452
const unitTestOutChannel = this.serviceManager.get<OutputChannel>(IOutputChannel, TEST_OUTPUT_CHANNEL);

src/client/extension.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ import { WorkspaceSymbols } from './workspaceSymbols/main';
5757

5858
const activationDeferred = createDeferred<void>();
5959
export const activated = activationDeferred.promise;
60-
const PYTHON: DocumentFilter = { language: 'python' };
60+
61+
const PYTHON_LANGUAGE = 'python';
62+
const PYTHON: DocumentFilter[] = [
63+
{ scheme: 'file', language: PYTHON_LANGUAGE },
64+
{ scheme: 'untitled', language: PYTHON_LANGUAGE }
65+
];
6166

6267
// tslint:disable-next-line:max-func-body-length
6368
export async function activate(context: ExtensionContext) {
@@ -76,7 +81,7 @@ export async function activate(context: ExtensionContext) {
7681

7782
const activator: IExtensionActivator = isPythonAnalysisEngineTest() || !pythonSettings.jediEnabled
7883
? new AnalysisExtensionActivator(serviceManager, pythonSettings)
79-
: new ClassicExtensionActivator(serviceManager, pythonSettings);
84+
: new ClassicExtensionActivator(serviceManager, pythonSettings, PYTHON);
8085

8186
await activator.activate(context);
8287

@@ -104,7 +109,7 @@ export async function activate(context: ExtensionContext) {
104109

105110
// Enable indentAction
106111
// tslint:disable-next-line:no-non-null-assertion
107-
languages.setLanguageConfiguration(PYTHON.language!, {
112+
languages.setLanguageConfiguration(PYTHON_LANGUAGE!, {
108113
onEnterRules: [
109114
{
110115
beforeText: /^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except)\b.*:\s*\S+/,

0 commit comments

Comments
 (0)