@@ -81,20 +81,36 @@ export class LinterManager implements ILinterManager {
81
81
if ( ! silent ) {
82
82
await this . enableUnconfiguredLinters ( resource ) ;
83
83
}
84
- return this . linters . filter ( x => x . isEnabled ( resource ) ) ;
84
+ return this . linters . filter ( x => {
85
+ let enabled = x . isEnabled ( resource ) ;
86
+ if ( x . id === 'pylint' ) {
87
+ enabled = enabled === true ;
88
+ }
89
+ return enabled === true ;
90
+ } ) ;
85
91
}
86
92
87
93
public async setActiveLintersAsync ( products : Product [ ] , resource ?: Uri ) : Promise < void > {
88
- const active = await this . getActiveLinters ( true , resource ) ;
89
- for ( const x of active ) {
90
- await x . enableAsync ( false , resource ) ;
91
- }
92
- if ( products . length > 0 ) {
93
- const toActivate = this . linters . filter ( x => products . findIndex ( p => x . product === p ) >= 0 ) ;
94
- for ( const x of toActivate ) {
95
- await x . enableAsync ( true , resource ) ;
94
+ // ensure we only allow valid linters to be set, otherwise leave things alone.
95
+ // filter out any invalid products:
96
+ const validProducts = products . filter ( product => {
97
+ const foundIndex = this . linters . findIndex ( validLinter => validLinter . product === product ) ;
98
+ return foundIndex !== - 1 ;
99
+ } ) ;
100
+
101
+ // if we have valid linter product(s), enable only those
102
+ if ( validProducts . length > 0 ) {
103
+ const active = await this . getActiveLinters ( true , resource ) ;
104
+ for ( const x of active ) {
105
+ await x . enableAsync ( false , resource ) ;
106
+ }
107
+ if ( products . length > 0 ) {
108
+ const toActivate = this . linters . filter ( x => products . findIndex ( p => x . product === p ) >= 0 ) ;
109
+ for ( const x of toActivate ) {
110
+ await x . enableAsync ( true , resource ) ;
111
+ }
112
+ await this . enableLintingAsync ( true , resource ) ;
96
113
}
97
- await this . enableLintingAsync ( true , resource ) ;
98
114
}
99
115
}
100
116
0 commit comments