-
Notifications
You must be signed in to change notification settings - Fork 178
Linter API
The Linter API allows you to lint files of different specified scopes.
Note: Linter also supports PUSH style linters with a different API service. See Linter-Indie-API
You will need to add this to your package.json file
"providedServices": {
"linter": {
"versions": {
"1.0.0": "provideLinter"
}
}
}
Here's an example package returning a linter provider
Note: You can return more than one provider at once by wrapping them in an Array
.
'use babel'
module.exports = {
activate() {
console.log('My package was activated')
},
deactivate() {
console.log('My package was deactivated')
},
provideLinter() {
const provider = {
name: 'Some Linter',
grammarScopes: ['source.js', 'source.php'], // ['*'] will get it triggered regardless of grammar
scope: 'file', // or 'project'
lintOnFly: false,
lint: function(textEditor) {
return new Promise(function(resolve, reject) {
// do something async or
return [{
type: 'Error',
text: 'Something went wrong',
range:[[0,0], [0,1]],
filePath: textEditor.getPath()
}]
})
}
}
}
}
If you think that you don't need to be asynchronous, then you can return the direct results instead of returning a Promise
.
{
type: string,
text?: string,
html?: string,
name?: string,
filePath?: string,
range?: Range,
trace?: Array<Trace>
}
Note: You must either provide text
or html
, providing both is an error.
Trace
is another type
that you embed inside an Error
or Warning
.
It can be used to provide traces or references to other files or positions. The type of traces can be anything, but is recommended to be Trace
for visual ease.
// Trace
{
type: "Trace",
text?: string,
html?: string,
name?: string,
filePath: string,
range?: Range,
class?: string
}