-
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()
}]
})
}
}
return provider
}
}
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>,
fix?: Fix
}
Note: You must either provide text
or html
, providing both is an error.
Trace
objects 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, // Only specify this if you want the name to be something other than your linterProvider.name
filePath: string,
range?: Range,
class?: string
}
Fix
objects allow a linter to suggest a possible fix to the user for a message's issue.
{
range: Range,
newText: string,
oldText?: string
}
Note: Currently not implemented in Linter.