{"id":13469743,"url":"https://github.com/neomake/neomake","last_synced_at":"2025-05-14T19:03:47.354Z","repository":{"id":23166879,"uuid":"26522697","full_name":"neomake/neomake","owner":"neomake","description":"Asynchronous linting and make framework for Neovim/Vim","archived":false,"fork":false,"pushed_at":"2024-04-05T19:20:22.000Z","size":5293,"stargazers_count":2675,"open_issues_count":206,"forks_count":363,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-04-06T06:05:28.040Z","etag":null,"topics":["async","checker","filetype","linter","linting","neomake","neovim","style-linter","syntax-checker","vim","vim-plugin"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","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/neomake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2014-11-12T06:34:12.000Z","updated_at":"2025-03-26T22:26:30.000Z","dependencies_parsed_at":"2024-07-31T15:11:37.775Z","dependency_job_id":"fdb1e04b-3b15-4120-bc7a-0a7f92ea882c","html_url":"https://github.com/neomake/neomake","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/neomake%2Fneomake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomake%2Fneomake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomake%2Fneomake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomake%2Fneomake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neomake","download_url":"https://codeload.github.com/neomake/neomake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248695437,"owners_count":21146954,"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":["async","checker","filetype","linter","linting","neomake","neovim","style-linter","syntax-checker","vim","vim-plugin"],"created_at":"2024-07-31T15:01:54.311Z","updated_at":"2025-04-13T10:04:44.822Z","avatar_url":"https://github.com/neomake.png","language":"Vim Script","readme":"# [![Neomake](https://cloud.githubusercontent.com/assets/111942/22717189/9e3e1760-ed67-11e6-94c5-e8955869d6d0.png)](#neomake)\n\n[![Build Status](https://circleci.com/gh/neomake/neomake.png?style=shield)](https://circleci.com/gh/neomake/neomake)\n[![codecov](https://codecov.io/gh/neomake/neomake/branch/master/graph/badge.svg)](https://codecov.io/gh/neomake/neomake)\n[![Coveralls](https://coveralls.io/repos/github/neomake/neomake/badge.svg)](https://coveralls.io/github/neomake/neomake)\n\nNeomake is a plugin for [Vim]/[Neovim] to asynchronously run programs.\n\nYou can use it instead of the built-in `:make` command (since it can pick\nup your `'makeprg'` setting), but its focus is on providing an extra layer\nof makers based on the current file (type) or project.\nIts origin is a proof-of-concept for [Syntastic] to be asynchronous.\n\n## Requirements\n\n### Neovim\n\nWith Neovim any release will do (after 0.0.0-alpha+201503292107).\n\n### Vim\n\nThe minimal Vim version supported by Neomake is 7.4.503 (although if you don't\nuse `g:neomake_logfile` older versions will probably work fine as well).\n\nYou need Vim 8.0.0027 or later for asynchronous features.\n\n## Installation\n\nUse your preferred installation method for Vim plugins.\n\nWith [vim-plug](https://github.com/junegunn/vim-plug) that would mean to add\nthe following to your vimrc:\n\n```vim\nPlug 'neomake/neomake'\n```\n\n## Setup\n\nIf you want to run Neomake automatically (in file mode), you can configure it\nin your `vimrc` by using `neomake#configure#automake`, e.g. by picking one of:\n\n```vim\n\" When writing a buffer (no delay).\ncall neomake#configure#automake('w')\n\" When writing a buffer (no delay), and on normal mode changes (after 750ms).\ncall neomake#configure#automake('nw', 750)\n\" When reading a buffer (after 1s), and when writing (no delay).\ncall neomake#configure#automake('rw', 1000)\n\" Full config: when writing or reading a buffer, and on changes in insert and\n\" normal mode (after 500ms; no delay when writing).\ncall neomake#configure#automake('nrwi', 500)\n```\n\n(Any function calls like these need to come after indicating the end of plugins\nto your plugin manager, e.g. after `call plug#end()` with vim-plug.)\n\n### Advanced setup\n\nThe author liked to use the following, which uses different modes based on if\nyour laptop runs on battery (for MacOS or Linux):\n\n```vim\nfunction! MyOnBattery()\n  if has('macunix')\n    return match(system('pmset -g batt'), \"Now drawing from 'Battery Power'\") != -1\n  elseif has('unix')\n    return readfile('/sys/class/power_supply/AC/online') == ['0']\n  endif\n  return 0\nendfunction\n\nif MyOnBattery()\n  call neomake#configure#automake('w')\nelse\n  call neomake#configure#automake('nw', 1000)\nendif\n```\n\nSee `:help neomake-automake` (in [doc/neomake.txt](doc/neomake.txt)) for more\ninformation, e.g. how to configure it based on certain autocommands explicitly,\nand for details about which events get used for the different string-based\nmodes.\n\n## Usage\n\nWhen calling `:Neomake` manually (or automatically through\n`neomake#configure#automake` (see above)) it will populate the window's\nlocation list with any issues that get reported by the maker(s).\n\nYou can then navigate them using the built-in methods like `:lwindow` /\n`:lopen` (to view the list) and `:lprev` / `:lnext` to go back and forth.\n\nYou can configure Neomake to open the list automatically:\n\n```vim\nlet g:neomake_open_list = 2\n```\n\nPlease refer to [`:help neomake.txt`] for more details on configuration.\n\n### Maker types\n\nThere are two types of makers: file makers (acting on the current buffer) and\nproject makers (acting globally).\n\nYou invoke file makers using `:Neomake`, and project makers using `:Neomake!`.\n\nSee [`:help neomake.txt`] for more details.\n\n### Manually run a maker\n\nYou can run a specific maker on the current file by specifying the maker's\nname, e.g. `:Neomake jshint` (you can use Vim's completion here to complete\nmaker names).\n\n## Default makers\n\nFor a list of default makers please see the\n[Makers page in the wiki](https://github.com/neomake/neomake/wiki/Makers).\n\n# Contributing\n\nIf you find this plugin useful, please contribute your maker recipes to the\nrepository! Check out `autoload/neomake/makers/**/*.vim` for existing makers.\n\nThis is a community driven project, and maintainers are wanted.\nPlease contact [@blueyed](https://github.com/blueyed) if you are interested.\nYou should have a good profile of issue triaging and PRs on this repo already.\n\n## Hacking / Testing\n\nWe are using [Vader](https://github.com/junegunn/vader.vim) for our tests.\n\n### Logging\n\nSet `let g:neomake_logfile = '/tmp/neomake.log'` (dynamically or in your vimrc)\nto  enable debug logging to the given file.\nFrom Neomake's source tree you can then run `make tail_log`, which will color\nthe output and pipe it into `less`, which folds long lines by default and will\nfollow the output (like `tail -f`).\nYou can use Ctrl-C to interrupt for scrolling etc, and then F to follow again.\n\n### Running tests\n\n#### Run all tests against your local Neovim and Vim\n\n    make test\n\n#### Run a specific test file\n\n    make tests/integration.vader\n\n#### Run some specific tests for Vim\n\n    make testvim VADER_ARGS=tests/integration.vader\n\n### Dockerized tests\n\nThe `docker_test` target runs tests for a specific Vim version.\nSee `Dockerfile.tests` for the Vim versions provided in the Docker image.\n\nThe image for this gets pulled from Docker Hub via\n[neomake/vims-for-tests](https://hub.docker.com/r/neomake/vims-for-tests/).\n\nNOTE: the Docker image used for tests does not include (different versions)\nof Neovim at the moment.\n\n#### Run all tests for Vim 8.0.586\n\n    make docker_test DOCKER_VIM=vim-8.0.586\n\n#### Run all tests against all Vims in the Docker image\n\n    make docker_test_all\n\n## Donate\n\n * Bitcoin: 1JscK5VaHyBhdE2ayVr63hDc6Mx94m9Y7R\n * Flattr: [![Flattr](http://api.flattr.com/button/flattr-badge-large.png)](\nhttps://flattr.com/submit/auto?user_id=blueyed\u0026url=https://github.com/neomake/neomake\u0026title=Neomake\u0026language=en_GB\u0026tags=github\u0026category=software)\n\n[Neovim]: http://neovim.org/\n[Vim]: http://vim.org/\n[Syntastic]: https://github.com/scrooloose/syntastic\n[cargo]: https://github.com/neomake/neomake/blob/master/autoload/neomake/makers/cargo.vim\n[mvn]: https://github.com/neomake/neomake/blob/master/autoload/neomake/makers/mvn.vim\n[`:help neomake.txt`]: doc/neomake.txt\n","funding_links":[],"categories":["Vim Script","文本编辑器扩展","Vim script"],"sub_categories":["YAML"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomake%2Fneomake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneomake%2Fneomake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomake%2Fneomake/lists"}