This package provides:
This package consumes:
Made for Pulsar!
This package was written specifically for Pulsar and did not exist in the Atom package repository.
A unified linting package that combines linting infrastructure with an integrated UI.
To install linter-bundle search for linter-bundle in the Install pane of the Pulsar settings or run ppm install linter-bundle. Alternatively, you can run ppm install asiloisad/pulsar-linter-bundle to install a package directly from the GitHub repository.
| Command | Description |
|---|---|
linter-bundle:lint |
Manually trigger linting on the current file |
linter-bundle:toggle-panel |
Toggle the linter panel visibility |
linter-bundle:inspect |
Show message bubble at cursor position |
linter-bundle:next |
Jump to next linter message |
linter-bundle:previous |
Jump to previous linter message |
linter-bundle:debug |
Show debug information about active linters |
linter-bundle:enable-linter |
Enable a disabled linter provider |
linter-bundle:disable-linter |
Disable a linter provider |
linter-bundle:toggle-active-editor |
Toggle linting for the current editor |
| Setting | Description | Default |
|---|---|---|
lintPreviewTabs |
Lint tabs while in preview status | true |
lintOnOpen |
Lint files when opened | true |
lintOnChange |
Lint while typing (if supported by provider) | true |
lintOnChangeInterval |
Debounce interval for lint-on-change (ms) | 300 |
ignoreGlob |
Glob pattern for files to ignore | **/*.min.{js,css} |
disabledProviders |
List of disabled linter provider names | [] |
defaultSortMethod |
Default sort method for linter panel | position |
showHoverTooltip |
Show linter messages when hovering over issues | true |
largeFileLineCount |
Skip inline decorations for files with more lines | 20000 |
longLineLength |
Skip inline decorations if any line exceeds this length | 4000 |
scrollMapState |
Display linter markers on scroll bar | true |
scrollMapThreshold |
Maximum markers to display (0 = unlimited) | 0 |
linter (v2.0.0)Standard linter provider interface. Packages like linter-eslint, linter-ruff, etc. provide this service.
// Provider example
module.exports = {
provideLinter() {
return {
name: 'my-linter',
scope: 'file', // or 'project'
lintsOnChange: true,
grammarScopes: ['source.js'],
lint(editor) {
return [{
severity: 'error', // 'error' | 'warning' | 'info'
location: {
file: editor.getPath(),
position: [[0, 0], [0, 1]],
},
excerpt: 'Error message',
}];
},
};
},
};
linter-ui (v1.0.0)External UI providers that want to display linter messages. Used by packages like linter-bundle to show linter markers on the scrollbar.
// UI provider example
module.exports = {
provideLinterUI() {
return {
name: 'my-ui',
render({ added, removed, messages }) {
// Handle message updates
},
didBeginLinting({ linter, filePath }) {},
didFinishLinting({ linter, filePath }) {},
dispose() {},
};
},
};
scroll-map (v1.0.0)The package integrates with scroll-map to display linter message markers on the scroll bar. When both packages are installed, error, warning, and info markers appear on the scroll bar for quick navigation to issues.
scrollMapState settingscrollMapThreshold setting (0 = unlimited)To customize the marker appearance, add to your styles.less:
.scroll-map .scroll-item {
&.error { background-color: @text-color-error; }
&.warning { background-color: @text-color-warning; }
&.info { background-color: @text-color-info; }
}
linter-indie (v2.0.0)Indie linter delegate for custom integrations. Allows packages to push linter messages directly without implementing the full linter provider interface.
// Consumer example
module.exports = {
consumeIndie(registerIndie) {
const indie = registerIndie({ name: 'my-indie-linter' });
// Set messages for a specific file
indie.setMessages('/path/to/file.js', [
{
severity: 'warning',
location: {
file: '/path/to/file.js',
position: [[0, 0], [0, 1]],
},
excerpt: 'Warning message',
},
]);
// Or set all messages at once
indie.setAllMessages([/* messages */]);
// Clear all messages
indie.clearMessages();
},
};
Got ideas to make this package better, found a bug, or want to help add new features? Just drop your thoughts on GitHub — any feedback’s welcome!