Skip to content

Commit 563f11d

Browse files
author
Mikhail Arkhipov
authored
Change how we offer to install/disable linters (#973)
* Basic tokenizer * Fixed property names * Tests, round I * Tests, round II * tokenizer test * Remove temorary change * Fix merge issue * Merge conflict * Merge conflict * Completion test * Fix last line * Fix javascript math * Make test await for results * Add license headers * Rename definitions to types * License headers * Fix typo in completion details (typo) * Fix hover test * Russian translations * Update to better translation * Fix typo * #70 How to get all parameter info when filling in a function param list * Fix #70 How to get all parameter info when filling in a function param list * Clean up * Clean imports * CR feedback * Trim whitespace for test stability * More tests * Better handle no-parameters documentation * Better handle ellipsis and Python3 * #385 Auto-Indentation doesn't work after comment * #141 Auto indentation broken when return keyword involved * Undo changes * #627 Docstrings for builtin methods are not parsed correctly * reStructuredText converter * Fix: period is not an operator * Minor fixes * Restructure * Tests * Tests * Code heuristics * Baselines * HTML handling * Lists * State machine * Baselines * Squash * no message * Whitespace difference * Update Jedi to 0.11.1 * Enable Travis * Test fixes * Undo change * Jedi 0.11 with parser * Undo changes * Undo changes * Test fixes * More tests * Tests * Fix pylint search * Handle quote escapes in strings * Escapes in strings * CR feedback * Discover pylintrc better + tests * Fix .pyenv/versions search * Fix multiple linters output * Better handle markdown underscore * Test * Fix 916: PyLint checks wrong files * Test stability * Try increase timeout * Make sure linting is enabled in tests * Try another way of waiting * Simplify * Fix clear diags on close tests * Try writing settings directly * Increase timeout * Measure test time * Measure time * Simplify * Set timeout * Better venv detection * Add test * More reliable check * Fix pylint switch key * Remove incorrect flag * Disable print * Require pylint 1.8 on CI * Fix working directory for standalone files * Use an 'elif' * Separate file for pylint root config * Remove double event listening * Remove test * Revert "Remove test" This reverts commit e240c3f. * Revert "Remove double event listening" This reverts commit af573be. * Explicitly disable linter * New buttons * PR feedback * Revert "PR feedback" This reverts commit d0c7ab5. * PR feedback
1 parent 747e6f2 commit 563f11d

File tree

3 files changed

+8
-18
lines changed

3 files changed

+8
-18
lines changed

src/client/common/installer/productInstaller.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,18 +154,21 @@ class LinterInstaller extends BaseInstaller {
154154
public async promptToInstall(product: Product, resource?: Uri): Promise<InstallerResponse> {
155155
const productName = ProductNames.get(product)!;
156156
const install = 'Install';
157-
const disable = 'Disable linting';
157+
const disableAllLinting = 'Disable linting';
158+
const disableThisLinter = `Disable ${productName}`;
158159

159160
const response = await this.appShell
160-
.showErrorMessage(`Linter ${productName} is not installed.`, install, disable);
161+
.showErrorMessage(`Linter ${productName} is not installed.`, install, disableThisLinter, disableAllLinting);
161162
if (response === install) {
162163
return this.install(product, resource);
163164
}
164165
const lm = this.serviceContainer.get<ILinterManager>(ILinterManager);
165-
if (response === disable) {
166+
if (response === disableAllLinting) {
166167
await lm.enableLintingAsync(false);
167-
} else {
168-
lm.disableSessionLinting();
168+
return InstallerResponse.Disabled;
169+
} else if (response === disableThisLinter) {
170+
await lm.getLinterInfo(product).enableAsync(false);
171+
return InstallerResponse.Disabled;
169172
}
170173
return InstallerResponse.Ignore;
171174
}

src/client/linters/linterManager.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export class LinterManager implements ILinterManager {
3030
private lintingEnabledSettingName = 'enabled';
3131
private linters: ILinterInfo[];
3232
private configService: IConfigurationService;
33-
private disabledForCurrentSession = false;
3433

3534
constructor(@inject(IServiceContainer) serviceContainer: IServiceContainer) {
3635
this.configService = serviceContainer.get<IConfigurationService>(IConfigurationService);
@@ -58,18 +57,11 @@ export class LinterManager implements ILinterManager {
5857
}
5958

6059
public isLintingEnabled(resource?: Uri): boolean {
61-
if (this.disabledForCurrentSession) {
62-
return false;
63-
}
6460
const settings = this.configService.getSettings(resource);
6561
return (settings.linting[this.lintingEnabledSettingName] as boolean) && this.getActiveLinters(resource).length > 0;
6662
}
6763

6864
public async enableLintingAsync(enable: boolean, resource?: Uri): Promise<void> {
69-
if (enable) {
70-
this.disabledForCurrentSession = false;
71-
}
72-
7365
await this.configService.updateSettingAsync(`linting.${this.lintingEnabledSettingName}`, enable, resource);
7466

7567
// If nothing is enabled, fix it up to PyLint (default).
@@ -78,10 +70,6 @@ export class LinterManager implements ILinterManager {
7870
}
7971
}
8072

81-
public disableSessionLinting(): void {
82-
this.disabledForCurrentSession = true;
83-
}
84-
8573
public getActiveLinters(resource?: Uri): ILinterInfo[] {
8674
return this.linters.filter(x => x.isEnabled(resource));
8775
}

src/client/linters/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export interface ILinterManager {
3838
getActiveLinters(resource?: vscode.Uri): ILinterInfo[];
3939
isLintingEnabled(resource?: vscode.Uri): boolean;
4040
enableLintingAsync(enable: boolean, resource?: vscode.Uri): Promise<void>;
41-
disableSessionLinting(): void;
4241
setActiveLintersAsync(products: Product[], resource?: vscode.Uri): Promise<void>;
4342
createLinter(product: Product, outputChannel: vscode.OutputChannel, serviceContainer: IServiceContainer, resource?: vscode.Uri): ILinter;
4443
}

0 commit comments

Comments
 (0)