{"id":15032074,"url":"https://github.com/sublimelinter/sublimelinter","last_synced_at":"2025-12-16T19:48:38.730Z","repository":{"id":39261227,"uuid":"13782029","full_name":"SublimeLinter/SublimeLinter","owner":"SublimeLinter","description":"The code linting framework for Sublime Text","archived":false,"fork":false,"pushed_at":"2025-04-10T07:42:13.000Z","size":5851,"stargazers_count":2025,"open_issues_count":21,"forks_count":270,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-04-10T08:21:59.663Z","etag":null,"topics":["linter","python","sublime-text","sublimelinter"],"latest_commit_sha":null,"homepage":"https://www.sublimelinter.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SublimeLinter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"https://paypal.me/herrkaste"}},"created_at":"2013-10-22T18:27:36.000Z","updated_at":"2025-04-10T07:41:02.000Z","dependencies_parsed_at":"2023-11-06T10:28:46.828Z","dependency_job_id":"b03f7231-312c-42a5-8991-89a99393cdc4","html_url":"https://github.com/SublimeLinter/SublimeLinter","commit_stats":{"total_commits":3086,"total_committers":112,"mean_commits":"27.553571428571427","dds":0.5268956578094621,"last_synced_commit":"b71799c0b51fb0effd911794b4df1175e3a51ce3"},"previous_names":["sublimelinter/sublimelinter3"],"tags_count":104,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SublimeLinter%2FSublimeLinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SublimeLinter","download_url":"https://codeload.github.com/SublimeLinter/SublimeLinter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248367952,"owners_count":21092270,"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":["linter","python","sublime-text","sublimelinter"],"created_at":"2024-09-24T20:17:15.874Z","updated_at":"2025-12-16T19:48:38.723Z","avatar_url":"https://github.com/SublimeLinter.png","language":"Python","readme":"SublimeLinter\n=============\n\n[![tests](https://github.com/SublimeLinter/SublimeLinter/actions/workflows/test.yml/badge.svg)](https://github.com/SublimeLinter/SublimeLinter/actions/workflows/test.yml)\n\nThe code linting framework for [Sublime Text](http://sublimetext.com/).\nNo linters included: get them via [Package Control](https://packagecontrol.io/search/SublimeLinter).\n\n\u003cimg width=\"785\" src=\"https://raw.githubusercontent.com/SublimeLinter/SublimeLinter/master/docs/screenshot.png\"/\u003e\n\n\n## Installation \n\n\u003e [!NOTE]\n\u003e\n\u003e We're in a transition phase to the newer ST4 plugin host.  Unless we have\n\u003e more experience for the process, it _may_ be necessary to restart Sublime Text\n\u003e after installing or upgrading _helper packages_.  Just check if everything works\n\u003e or if the console shows permanent errors.  On my machine, no restarts were\n\u003e necessary.\n\n\nProbably don't get fancy and just install SublimeLinter via [Package Control](https://packagecontrol.io/search/SublimeLinter).\nRefer \u003chttps://www.sublimelinter.com/en/latest/installation.html\u003e for further information,\nbut, spoiler!,\nusually you install SublimeLinter, the plugin you're currently looking at,\nsome command line tools, these are the actual linters (e.g. _eslint_ or _flake8_),\nand then some plugins/adapters between both.\nThese are typically named after the linter and should be installed via Package Control\nas well, examples would be [SublimeLinter-eslint](https://packagecontrol.io/packages/SublimeLinter-eslint) or [SublimeLinter-flake8](https://packagecontrol.io/packages/SublimeLinter-flake8).\n\nBy default, SublimeLinter will run in the background and most linters support this\nmode so you should get squiggles immediately.\n\nNote that you find all commands we're installing using the Command Palette\n(\u003ckbd\u003ectrl\u003cem\u003e+\u003c/em\u003eshift\u003cem\u003e+\u003c/em\u003ep\u003c/kbd\u003e). Just search for `SublimeLinter`.\nYou may find \u003chttps://github.com/kaste/SublimeLinter-addon-toggler\u003e\nand/or \u003chttps://github.com/kaste/SublimeLinter-addon-goto-flash\u003e useful.\nThere is also \u003chttps://github.com/kaste/SublimeLinter-any-lsp\u003e to integrate LSP\nservers.\n\n\n## Settings\n\nSettings are documented in the [default settings](https://github.com/SublimeLinter/SublimeLinter/blob/master/SublimeLinter.sublime-settings). \nOpen the settings using the Command Palette (\u003ckbd\u003ectrl\u003cem\u003e+\u003c/em\u003eshift\u003cem\u003e+\u003c/em\u003ep\u003c/kbd\u003e) searching for `Preferences: SublimeLinter Settings` (mnemonic: `sls`).\n\nWhen you open the SublimeLinter settings you'll see the defaults on the left\nor top. Usually that's all that is needed for end-users but some additional information\nis in our docs at [sublimelinter.com](https://www.sublimelinter.com/en/latest/linter_settings.html).\n\n\n## Key Bindings\n\nSublimeLinter comes with some pre-defined keyboard shortcuts. You can customize these via the Package Settings menu.\n\n| Command | Linux \u0026 Windows | MacOS |\n|---|---|---|\n| Lint this view | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003el\u003c/kbd\u003e | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e |\n| Open diagnostics panel | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003ea\u003c/kbd\u003e | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e |\n| Goto next error | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003en\u003c/kbd\u003e | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e |\n| Goto prev error | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003ep\u003c/kbd\u003e | \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e |\n\nTake also a look at the [default bindings](\u003chttps://github.com/SublimeLinter/SublimeLinter/blob/master/keymaps/Default (Windows).sublime-keymap\u003e) because\nwe document other commands and have usually some tricks in there too.\n\nFor example, it is very advisable to bind `sublime_linter_quick_actions`, e.g.\n\n```jsonc\n    // To trigger a quick action\n    // { \"keys\": [\"ctrl+k\", \"ctrl+f\"],\n    //   \"command\": \"sublime_linter_quick_actions\"\n    // },\n```\n\n\n## Quick Actions/Fixers\n\nAs we do *just* linting SublimeLinter naturally does not come with fixers \nand/or code formatters. However, we have a fixer API, see the Command Palette: `SublimeLinter: Quick Action`, and ship (mostly) \n\"fix by ignoring\" actions. These allow you to quickly ignore specific error messages *inline* and ad hoc.[1]\n\nSublimeLinter currently ships actions for\n[eslint](https://github.com/SublimeLinter/SublimeLinter-eslint),\n[stylelint](https://github.com/SublimeLinter/SublimeLinter-stylelint),\n[flake8](https://github.com/SublimeLinter/SublimeLinter-flake8),\n[mypy](https://github.com/fredcallaway/SublimeLinter-contrib-mypy),\nshellcheck,\n[codespell](https://github.com/kaste/SublimeLinter-contrib-codespell)\nand\n[phpcs](https://github.com/SublimeLinter/SublimeLinter-phpcs).\n\nWant to see actions for your favourite linter? Please open a PR with your addition to\n[quick_fix.py](https://github.com/SublimeLinter/SublimeLinter/blob/master/lint/quick_fix.py).\nWe have [tests](https://github.com/SublimeLinter/SublimeLinter/tree/master/tests/test_ignore_fixers.py) for them!\n\n[1]  Why this limitation though? Well it is usually easy to add a semicolon here and a space there, but the inline ignore rules and syntaxes are very cumbersome to type and to remember. And there is basically no project of any size where you don't have to ignore ad-hoc something somewhere once.\n\n\n## Support \u0026 Bugs\n\nYeah, totally! Often if it doesn't work, Sublime will have something in the\nconsole (*View -\u003e Show Console*). Warnings will go there by default.\n\nYou can enable `debug` mode in the settings to get much more information about what's going on.\nEspecially seeing the exact command and working dir SublimeLinter will use\nshould be noted and helpful.\n\nAs some code only runs on startup, it is good practice to restart Sublime Text\nand to examine the console output for anything odd.\n\nIf your issue is specific to a particular linter, please report it on that linter's repository,\notherwise open it right [here](https://github.com/SublimeLinter/SublimeLinter/issues).\n\n\n## Hack on it\n\nSure, you're welcome! Just clone the repository into your Packages folder (*Preferences -\u003e Browse Packages*).\n\n```shell\n\u003e git clone https://github.com/SublimeLinter/SublimeLinter.git\n\u003e subl SublimeLinter\n```\n\nThis will overrule the installed package straight away.  Just delete the folder\nto reverse the process.  The dev requirements can be read in the `pyproject.toml` file.\nJust use `rye` and install them:\n\n```shell\n\u003e rye sync\n```\n\n\n## Creating a linter plugin\n\nUse the [template](https://github.com/SublimeLinter/SublimeLinter-template) to get started on your plugin.\nIt contains a how-to with all the information you need. Refer to \u003chttps://www.sublimelinter.com/en/master/linter_plugin.html\u003e for more detailed information. Of course, take a look at a similar linter plugin and let it inspire you.\n\n\n## Also Support ❤️\n\nSublimeLinter is the kind of software that needs active maintenance all the time.\nIf you find SublimeLinter helpful and would like to show your appreciation, you can support\nits development by buying me a coffee! 😄☕️ \u003chttps://paypal.me/herrkaste\u003e\n\n😏\n","funding_links":["https://paypal.me/herrkaste"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsublimelinter%2Fsublimelinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsublimelinter%2Fsublimelinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsublimelinter%2Fsublimelinter/lists"}