{"id":13447767,"url":"https://github.com/SublimeLinter/SublimeLinter-for-ST2","last_synced_at":"2025-03-22T01:31:18.189Z","repository":{"id":1539596,"uuid":"1844290","full_name":"SublimeLinter/SublimeLinter-for-ST2","owner":"SublimeLinter","description":"[DEPRECATED] Inline lint highlighting for the Sublime Text 2 editor","archived":false,"fork":true,"pushed_at":"2015-08-26T07:22:58.000Z","size":4261,"stargazers_count":2322,"open_issues_count":6,"forks_count":317,"subscribers_count":73,"default_branch":"master","last_synced_at":"2025-01-25T05:31:55.359Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"lunixbochs/sublimelint","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SublimeLinter.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-06-03T20:05:12.000Z","updated_at":"2024-09-27T06:39:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SublimeLinter/SublimeLinter-for-ST2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter-for-ST2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter-for-ST2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter-for-ST2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter-for-ST2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SublimeLinter","download_url":"https://codeload.github.com/SublimeLinter/SublimeLinter-for-ST2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244893438,"owners_count":20527592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T05:01:26.390Z","updated_at":"2025-03-22T01:31:17.833Z","avatar_url":"https://github.com/SublimeLinter.png","language":"JavaScript","readme":"SublimeLinter\n=============\n\n## SublimeLinter 3 has landed!\n\nSublimeLinter for Sublime Text 3 is [here](https://github.com/SublimeLinter/SublimeLinter3), and it’s soooooo much better than before! Install it from Package Control and enjoy!\n\nUnless someone else comes forward, SublimeLinter for Sublime Text 2 will no longer be supported. I strongly encourage everyone to upgrade to Sublime Text 3 and SublimeLinter 3 — you’ll be glad you did! Take a look at the [extensive documentation](http://sublimelinter.readthedocs.org/) to see the great new features in SublimeLinter 3.\n\n## Share the love!\n\nI spent hundreds of hours writing and documenting SublimeLinter 3 to make it the best it can be — easy to use, easy to configure, easy to update, easy to extend. If you use SublimeLinter and feel it is making your coding life better and easier, please consider making a donation to help fund development and support. Thank you!\n\nTo donate: https://github.com/SublimeLinter/SublimeLinter3#share-the-love\n\nThank you for your support!\n\n---\n\nSublimeLinter v1.7 Overview\n---------\n\nSublimeLinter is a plugin that supports \"lint\" programs (known as \"linters\"). SublimeLinter highlights\nlines of code the linter deems to contain (potential) errors. It also\nsupports highlighting special annotations (for example: TODO) so that they\ncan be quickly located.\n\nSublimeLinter has built in linters for the following languages:\n\n* C/C++ - lint via `cppcheck`\n* CoffeeScript - lint via `coffee -s -l`\n* CSS - lint via built-in [csslint](http://csslint.net)\n* Git Commit Messages - lint via built-in module based on [A Note About Git Commit Messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).\n* Haml - syntax check via `haml -c`\n* HTML - lint via `tidy` (actually [tidy for HTML5](http://w3c.github.com/tidy-html5/))\n* Java - lint via `javac -Xlint`\n* JavaScript - lint via built in [jshint](http://jshint.org), [jslint](http://jslint.com), or the [closure linter (gjslint)](https://developers.google.com/closure/utilities/docs/linter_howto) (if installed)\n* Lua - syntax check via `luac`\n* Objective-J - lint via built-in [capp_lint](https://github.com/aparajita/capp_lint)\n* Perl - lint via [Perl::Critic](http://perlcritic.com/) or syntax+deprecation check via `perl -c`\n* PHP - syntax check via `php -l`\n* Puppet - syntax check via `puppet parser validate` or `puppet-lint`\n* Python - native, moderately-complete lint\n* Ruby - syntax check via `ruby -wc`\n* Squirrel - syntax check via `sq`\n* XML - lint via `xmllint`\n\nQuickstart\n------------\n\n* Install using [Package Control ST2 plugin](http://wbond.net/sublime_packages/package_control/installation).\n* `SublimeLinter` runs in the background (by default), linting files for style and potential errors.\n* Season to taste (edit configuration) by editing `Preferences-\u003ePackage Settings-\u003eSublimeLinter-\u003eSettings - User`.\n* Produce better code!\n\n\nInstalling\n----------\n**With the Package Control plugin:** The easiest way to install SublimeLinter is through Package Control, which can be found at this site: http://wbond.net/sublime_packages/package_control\n\nOnce you install Package Control, restart ST2 and bring up the Command Palette (`Command+Shift+P` on OS X, `Control+Shift+P` on Linux/Windows). Select \"Package Control: Install Package\", wait while Package Control fetches the latest package list, then select SublimeLinter when the list appears. The advantage of using this method is that Package Control will automatically keep SublimeLinter up to date with the latest version.\n\n**Without Git:** Download the latest source from [GitHub](https://github.com/SublimeLinter/SublimeLinter) and copy the SublimeLinter folder to your Sublime Text \"Packages\" directory.\n\n**With Git:** Clone the repository in your Sublime Text \"Packages\" directory:\n\n    git clone https://github.com/SublimeLinter/SublimeLinter.git\n\n\nThe \"Packages\" directory is located at:\n\n* OS X:\n\n        ~/Library/Application Support/Sublime Text 2/Packages/\n\n* Linux:\n\n        ~/.config/sublime-text-2/Packages/\n\n* Windows:\n\n        %APPDATA%/Sublime Text 2/Packages/\n\n### JavaScript-based linters\nIf you plan to edit files that use a JavaScript-based linter (JavaScript, CSS), your system\nmust have a JavaScript engine installed. Mac OS X comes with a preinstalled JavaScript engine called\nJavaScriptCore, which is used if Node.js is not installed. On Windows, you **must** install the\nJavaScript engine Node.js, which can be downloaded from [the Node.js site](http://nodejs.org/#download).\n\nOn Mac OS X, you **must** install Node.js if you plan to edit JavaScript or CSS files that\nuse non-ASCII characters in strings or comments, because JavaScriptCore is not Unicode-aware.\n\nAfter installing Node.js, if the Node.js executable (\"node\" on Mac OS X, \"node.exe\" on Windows)\ncannot be found by SublimeLinter, you may have to set the path to the executable in the\n\"sublimelinter\\_executable\\_map\" setting. See the \"Configuring\" section below for info on\nSublimeLinter settings.\n\n\nUsing\n-----\nSublimeLinter runs in one of three modes, which is determined by the \"sublimelinter\" user setting:\n\n* **Background mode (the default)** - When the \"sublimelinter\" setting is true, linting is performed in the background as you modify a file (if the relevant linter supports it). If you like instant feedback, this is the best way to use SublimeLinter. If you want feedback, but not instantly, you can try another mode or set a minimum queue delay with the \"sublimelinter_delay\" setting, so that the linter will only run after a certain amount of idle time.\n* **Load-save mode** - When the \"sublimelinter\" setting is \"load-save\", linting is performed only when a file is loaded and after saving. Errors are cleared as soon as the file is modified.\n* **Save-only mode** - When the \"sublimelinter\" setting is \"save-only\", linting is performed only after a file is saved. Errors are cleared as soon as the file is modified.\n* **On demand mode** - When the \"sublimelinter\" setting is false, linting is performed only when initiated by you. Use the `Control+Command+L` (OS X) or `Control+Alt+L` (Linux/Windows) key equivalent or the Command Palette to lint the current file. If the current file has no associated linter, the command will not be available.\n\nWithin a file whose language/syntax is supported by SublimeLinter, you can control SublimeLinter via the Command Palette (`Command+Shift+P` on OS X, `Control+Shift+P` on Linux/Windows). The available commands are:\n\n* **SublimeLinter: Lint Current File** - Lints the current file, highlights any errors and displays how many errors were found.\n* **SublimeLinter: Show Error List** - Lints the current file, highlights any errors and displays a quick panel with any errors that are found. Selecting an item from the quick panel jumps to that line.\n* **SublimeLinter: Background Linting** - Enables background linting mode for the current view and lints it.\n* **SublimeLinter: Disable Linting** - Disables linting mode for the current view and clears all lint errors.\n* **SublimeLinter: Load-Save Linting** - Enables load-save linting mode for the current view and clears all lint errors.\n* **SublimeLinter: Save-Only Linting** - Enables save-only linting mode for the current view and clears all lint errors.\n* **SublimeLinter: Reset** - Clears all lint errors and sets the linting mode to the value in the SublimeLinter.sublime-settings file.\n\nDepending on the file and the current state of background enabling, some of the commands will not be available.\n\nWhen an error is highlighted by the linter, putting the cursor on the offending line will result in the error message being displayed on the status bar.\n\nIf you want to be shown a popup list of all errors whenever a file is saved, modify the user setting:\n\n    \"sublimelinter_popup_errors_on_save\": true\n\nIf there are errors in the file, a quick panel will appear which shows the error message, line number and source code for each error. The starting location of all errors on the line are marked with \"^\". Selecting an error in the quick panel jumps directly to the location of the first error on that line.\n\nWhile editing a file, you can quickly move to the next/previous lint error with the following key equivalents:\n\n* **OS X**:\n\n        next: Control+Command+E\n        prev: Control+Command+Shift+E\n\n* **Linux, Windows**:\n\n        next: Control+Alt+E\n        prev: Control+Alt+Shift+E\n\nBy default the search will wrap. You can turn wrapping off with the user setting:\n\n    \"sublimelinter_wrap_find\": false\n\nPlease note: these key commands may conflict with other important cmds (such as generating the € character - this was discussed in issue [#182](https://github.com/SublimeLinter/SublimeLinter/issues/182)). If these controls are problematic, you may always adjust your settings by copying the defaults stored in `Preferences-\u003ePackage Settings-\u003eSublimeLinter-\u003eKey Bindings - Default` into `Preferences-\u003eKey Bindings - User` and then modifying the values appropriately.\n\nConfiguring\n-----------\nThere are a number of settings available to customize the behavior of SublimeLinter and its linters. For the latest information on what settings are available, select the menu item `Preferences-\u003ePackage Settings-\u003eSublimeLinter-\u003eSettings - Default`.\n\nDo **NOT** edit the default SublimeLinter settings. Your changes will be lost when SublimeLinter is updated. ALWAYS edit the user SublimeLinter settings by selecting `Preferences-\u003ePackage Settings-\u003eSublimeLinter-\u003eSettings - User`. Note that individual settings you include in your user settings will _completely_ replace the corresponding default setting, so you must provide that setting in its entirety.\n\n### Linter-specific notes\nFollowing are notes specific to individual linters that you should be aware of:\n\n* **C/C++** - The default C/C++ linter is [cppcheck](http://cppcheck.sourceforge.net/), however Google's [cpplint.py](http://google-styleguide.googlecode.com/svn/trunk/cpplint/) is also supported.\n\n  To swap `cppcheck` out for `cpplint.py` you will need to adjust `sublimelinter_syntax_map` and possibly `sublimelinter_executable_map` also. First change the _linter language_ for `C` and `C++` to `c_cpplint` via `sublimelinter_syntax_map`. If `cpplint.py` is not on your system `PATH`, then add an entry for `c_cpplint` into `sublimelinter_executable_map` with the path to the file. As usual add these adjustments to the SublimeLinter **User Settings** file. An example:\n\n      \"sublimelinter_syntax_map\":\n      {\n        \"Python Django\": \"python\",\n        \"Ruby on Rails\": \"ruby\",\n        \"C++\": \"c_cpplint\",\n        \"C\": \"c_cpplint\"\n      },\n      \"sublimelinter_executable_map\":\n      {\n        \"c_cpplint\": \"/Users/[my username]/Desktop/cpplint.py\"\n      }\n\n* **CSS** - This linter runs [csslint](http://csslint.net). This linter requires a JavaScript engine (like Node.js) to be installed (see notes above for the JavaScript linters: \"jshint\" or \"jslint\").\n\n  By default all CSSLint settings are turned on. You may customize CSSLint behavior with the \"csslint_options\" setting. Please select `Preferences-\u003ePackage Settings-\u003eSublimeLinter-\u003eSettings - Default` for more information on turning off or adjusting severity of tests. For more information about options available to CSSLint, see https://github.com/stubbornella/csslint/wiki/Rules.\n\n* **HTML** - This linter will not run unless you have a version of tidy with HTML5 support. To use this linter, please see: https://github.com/w3c/tidy-html5\n\n* **Java** - Because it uses `javac` to do linting, each time you run the linter the entire dependency graph of the current file will be checked. Depending on the number of classes you import, this can be **extremely** slow. Also note that you **must** provide the `-sourcepath`, `-classpath`, `-Xlint` and `{filename}` arguments to `javac` in your per-project settings. See \"Per-project settings\" below for more information.\n\n* **JavaScript** - If the \"javascript_linter\" setting is \"jshint\" or \"jslint\", this linter runs [jshint](http://jshint.org) (or [jslint](http://jslint.com) respectively) using Node.js. See \"JavaScript-based linters\" above for information on how to install Node.js.\n\n  If the \"javascript_linter\" setting is \"gjslint\", this linter runs the [closure linter (gjslint)](https://developers.google.com/closure/utilities/docs/linter_howto). After installation, if gjslint cannot be found by SublimeLinter, you may have to set the path to gjslint in the \"sublimelinter\\_executable\\_map\" setting.\n\n  You may want to modify the options passed to jshint, jslint, or gjslint. This can be done by using the **jshint_options**, **jslint_options**, or **gjslint_options** setting. Refer to the jshint.org site, the jslint.com site, or run `gjslint --help` for more information on the configuration options available.\n\n  SublimeLinter supports `.jshintrc` files. If using JSHint, SublimeLinter will recursively search the directory tree (from the file location to the file-system root directory). This functionality is specified in the [JSHint README](https://github.com/jshint/node-jshint/#within-your-projects-directory-tree).\n\n* **Perl** - Due to a vulnerability (issue [#77](https://github.com/SublimeLinter/SublimeLinter/issues/77)) with the Perl linter, Perl syntax checking is no longer enabled by default. The default linter for Perl has been replaced by Perl::Critic. The standard Perl syntax checker can still be invoked by switching the \"perl_linter\" setting to \"perl\".\n\n* **Puppet** - Optional alternative linter using puppet-lint. Install with `gem install puppet-lint`. Add these adjustments to the SublimeLinter **User Settings** file. An example:\n\"sublimelinter_syntax_map\": { \"Puppet\": \"puppet-lint\" }. Note this only lints on file save.\n\n* **Ruby** - If you are using rvm or rbenv, you will probably have to specify the full path to the ruby you are using in the \"sublimelinter_executable_map\" setting. See \"Configuring\" below for more info.\n\n### Per-project settings\nSublimeLinter supports per-project/per-language settings. This is useful if a linter requires path configuration on a per-project basis. To edit your project settings, select the menu item `Project-\u003eEdit Project`. If there is no \"settings\" object at the top level, add one and then add a \"SublimeLinter\" sub-object, like this:\n\n    {\n        \"folders\":\n        [\n            {\n                \"path\": \"/Users/aparajita/Projects/foo/src\"\n            }\n        ],\n        \"settings\":\n        {\n            \"SublimeLinter\":\n            {\n            }\n        }\n    }\n\nWithin the \"SublimeLinter\" object, you can add a settings object for each language. The language name must match the language item in the linter's CONFIG object, which can be found in the linter's source file in the SublimeLinter/sublimelinter/modules folder. Each language can have two settings:\n\n* \"working_directory\" - If present and a valid absolute directory path, the working directory is set to this path before the linter executes. This is useful if you are providing linter arguments that contain paths and you want to use working directory-relative paths instead of absolute paths.\n* \"lint_args\" - If present, it must be a sequence of string arguments to pass to the linter. If your linter expects a filename as an argument, use the argument \"{filename}\" as a placeholder. If it expects stdin, use \"-\". Note that if you provide this item, you are responsible for passing **all** required arguments to the linter, as it will override default arguments.\n\nFor example, let's say we are editing a Java project and want to use the \"java\" linter, which requires a source path and class path. In addition, we want to ignore serialization errors. Our project settings might look like this:\n\n    {\n        \"folders\":\n        [\n            {\n                \"path\": \"/Users/aparajita/Projects/foo/src\"\n            }\n        ],\n        \"settings\":\n        {\n            \"SublimeLinter\":\n            {\n                \"Java\":\n                {\n                    \"working_directory\": \"/Users/aparajita/Projects/foo\",\n\n                    \"lint_args\":\n                    [\n                        \"-sourcepath\", \"src\",\n                        \"-classpath\", \"libs/log4j-1.2.9.jar:libs/commons-logging-1.1.jar\",\n                        \"-Xlint\", \"-Xlint:-serial\",\n                        \"{filename}\"\n                    ]\n                }\n            }\n        }\n    }\n\nThe jshint follows convention set by node-jshint (though node is not required) and will attempt to locate the configuration file for you starting in pwd. (or \"present working directory\") If this does not yield a .jshintrc file, it will move one level up (..) the directory tree all the way up to the filesystem root. If a file is found, it stops immediately and uses that set of configuration instead of \"jshint_options\".\n\n### Customizing colors\n**IMPORTANT** - The theme style names have recently changed. The old and new color\nnames are:\n\n    Old                     New\n    ---------------------   -----------------------------\n    sublimelinter.\u003ctype\u003e    sublimelinter.outline.\u003ctype\u003e\n    invalid.\u003ctype\u003e          sublimelinter.underline.\u003ctype\u003e\n\nPlease change the names in your color themes accordingly.\n\nThere are three types of \"errors\" flagged by SublimeLinter: illegal,\nviolation, and warning. For each type, SublimeLinter will indicate the offending\nline and the character position at which the error occurred on the line.\n\nBy default SublimeLinter will outline offending lines using the background color\nof the \"sublimelinter.outline.\u003ctype\u003e\" theme style, and underline the character position\nusing the background color of the \"sublimelinter.underline.\u003ctype\u003e\" theme style, where \u003ctype\u003e\nis one of the three error types.\n\nIf these styles are not defined, the color will be black when there is a light\nbackground color and black when there is a dark background color. You may\ndefine a single \"sublimelinter.outline\" or \"sublimelinter.underline\" style to color all three types,\nor define separate substyles for one or more types to color them differently.\n\nIf you want to make the offending lines glaringly obvious (perhaps for those\nwho tend to ignore lint errors), you can set the user setting:\n\n    \"sublimelinter_mark_style\": \"fill\"\n\nWhen this is set true, lines that have errors will be colored with the background\nand foreground color of the \"sublime.outline.\u003ctype\u003e\" theme style. Unless you have defined\nthose styles, this setting should be left as \"outline\".\n\nYou may want to disable drawing of outline boxes entirely. If so, change\nusing the user setting to:\n\n    \"sublimelinter_mark_style\": \"none\"\n\nYou may also mark lines with errors by putting an \"x\" in the gutter with the user setting:\n\n    \"sublimelinter_gutter_marks\": true\n\nTo customize the colors used for highlighting errors and user notes, add the following\nto your theme (adapting the color to your liking):\n\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Annotations\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.annotations\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#FFFFAA\u003c/string\u003e\n            \u003ckey\u003eforeground\u003c/key\u003e\n            \u003cstring\u003e#FFFFFF\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Error Outline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.outline.illegal\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#FF4A52\u003c/string\u003e\n            \u003ckey\u003eforeground\u003c/key\u003e\n            \u003cstring\u003e#FFFFFF\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Error Underline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.underline.illegal\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#FF0000\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Warning Outline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.outline.warning\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#DF9400\u003c/string\u003e\n            \u003ckey\u003eforeground\u003c/key\u003e\n            \u003cstring\u003e#FFFFFF\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Warning Underline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.underline.warning\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#FF0000\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Violation Outline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.outline.violation\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#ffffff33\u003c/string\u003e\n            \u003ckey\u003eforeground\u003c/key\u003e\n            \u003cstring\u003e#FFFFFF\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n    \u003cdict\u003e\n        \u003ckey\u003ename\u003c/key\u003e\n        \u003cstring\u003eSublimeLinter Violation Underline\u003c/string\u003e\n        \u003ckey\u003escope\u003c/key\u003e\n        \u003cstring\u003esublimelinter.underline.violation\u003c/string\u003e\n        \u003ckey\u003esettings\u003c/key\u003e\n        \u003cdict\u003e\n            \u003ckey\u003ebackground\u003c/key\u003e\n            \u003cstring\u003e#FF0000\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/dict\u003e\n\nTroubleshooting\n---------------\nIf a linter does not seem to be working, you can check the ST2 console to see if it was enabled. When SublimeLinter is loaded, you will see messages in the console like this:\n\n    Reloading plugin /Users/aparajita/Library/Application Support/Sublime Text 2/Packages/SublimeLinter/sublimelinter_plugin.py\n    SublimeLinter: JavaScript loaded\n    SublimeLinter: annotations loaded\n    SublimeLinter: Objective-J loaded\n    SublimeLinter: perl loaded\n    SublimeLinter: php loaded\n    SublimeLinter: python loaded\n    SublimeLinter: ruby loaded\n    SublimeLinter: pylint loaded\n\nThe first time a linter is asked to lint, it will check to see if it can be enabled. You will then see messages like this:\n\n    SublimeLinter: JavaScript enabled (using JavaScriptCore)\n    SublimeLinter: Ruby enabled (using \"ruby\" for executable)\n\nLet's say the ruby linter is not working. If you look at the console, you may see a message like this:\n\n    SublimeLinter: ruby disabled (\"ruby\" cannot be found)\n\nThis means that the ruby executable cannot be found on your system, which means it is not installed or not in your executable path.\n\nCreating New Linters\n--------------------\nIf you wish to create a new linter to support a new language, SublimeLinter makes it easy. Here are the steps involved:\n\n* Create a new file in sublimelinter/modules. If your linter uses an external executable, you will probably want to copy perl.py. If your linter uses built in code, copy objective-j.py. The convention is to name the file the same as the language that will be linted.\n\n* Configure the CONFIG dict in your module. See the comments in base\\_linter.py for information on the values in that dict. You only need to set the values in your module that differ from the defaults in base\\_linter.py, as your module's CONFIG is merged with the default. Note that if your linter uses an external executable that does not take stdin, setting 'input\\_method' to INPUT\\_METHOD\\_TEMP\\_FILE will allow interactive linting with that executable.\n\n* If your linter uses built in code, override `built_in_check()` and return the errors found.\n\n* Override `parse_errors()` and process the errors. If your linter overrides `built_in_check()`, `parse_errors()` will receive the result of that method. If your linter uses an external executable, `parse_errors()` receives the raw output of the executable, stripped of leading and trailing whitespace.\n\n* If you linter is powered via JavaScript (eg. Node.js), there are few steps that will simplify the integration.\n\n  Create a folder matching your linter name in the `SublimeLinter/sublimelinter/modules/lib` directory. This folder should include the linting library JS file (eg. jshint.js, csslint-Node.js) and a **linter.js** file. The **linter.js** file should `require()` the actual linter library file and export a `lint()` function. The `lint()` function should return a list of errors back to the python language handler file (via the `errors` parameter to the `parse_errors()` method).\n\n  Although **linter.js** should follow the Node.js api, the linter may also be run via JavaScriptCore on OS X if Node.js is not installed. In the case where JavaScriptCore is used, require + export are shimmed to keep things consistent. However, it is important not to assume that a full Node.js api is available. If you must know what JS engine you are using, you may check for `USING_JSC` to be set as `true` when JavaScriptCore is used.\n\n  For examples of using the JS engines, see **csslint**, **jslint**, and **jshint** in `SublimeLinter/sublimelinter/modules/libs` and the respective python code of **css.py** and **javascript.py** in `SublimeLinter/sublimelinter/modules`.\n\n\nIf your linter has more complex requirements, see the comments for CONFIG in base\\_linter.py, and use the existing linters as guides.\n\nBeta\n----\nThe SublimeLinter Beta package is available via Package Control. The beta version is considered unstable and should only be used for testing the next release. If you like living on the edge, please report any bugs you find on the [SublimeLinter issues](https://github.com/SublimeLinter/SublimeLinter/issues) page.\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSublimeLinter%2FSublimeLinter-for-ST2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSublimeLinter%2FSublimeLinter-for-ST2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSublimeLinter%2FSublimeLinter-for-ST2/lists"}