{"id":46538103,"url":"https://github.com/igankevich/mesonic","last_synced_at":"2026-03-07T00:14:26.485Z","repository":{"id":44863229,"uuid":"56908434","full_name":"igankevich/mesonic","owner":"igankevich","description":"Mesonic: A Vim plugin for Meson build system","archived":false,"fork":false,"pushed_at":"2025-04-01T17:19:41.000Z","size":80,"stargazers_count":50,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T17:49:57.309Z","etag":null,"topics":["meson","vim-plugins"],"latest_commit_sha":null,"homepage":null,"language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igankevich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2016-04-23T08:19:01.000Z","updated_at":"2025-04-01T17:23:57.000Z","dependencies_parsed_at":"2024-05-11T07:48:23.016Z","dependency_job_id":null,"html_url":"https://github.com/igankevich/mesonic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/igankevich/mesonic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igankevich%2Fmesonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igankevich%2Fmesonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igankevich%2Fmesonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igankevich%2Fmesonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igankevich","download_url":"https://codeload.github.com/igankevich/mesonic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igankevich%2Fmesonic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["meson","vim-plugins"],"created_at":"2026-03-07T00:14:25.848Z","updated_at":"2026-03-07T00:14:26.473Z","avatar_url":"https://github.com/igankevich.png","language":"Vim Script","readme":"# Mesonic: A Vim plugin for Meson build system\n\nMesonic is a plugin that uses Vim compiler infrastructure to integrate\n[Meson build system](https://mesonbuild.com/) into an editor with special\nhandling of out-of-source builds. It sets 'makeprg', 'errorformat' options and\nprovides syntax highlighting for ``meson.build`` files.\n\n## Usage\n\nUse ``:MesonInit`` to initialise build directory for the first time. After that\nyou can issue ``:make`` command as usual, which produces correct quickfix list\nno matter what current directory is. All commands work as expected from any\nsubdirectory of your project.\n\nYou can customise meson and ninja commands with the following variables, which\ncan be either global or buffer local. Defaults are listed below.\n\n```vim\nlet b:meson_command = 'meson'\nlet b:meson_ninja_command = 'meson compile'  \" ninja in old Meson versions\n```\n\nIf you want to switch between build directories, issue ``:MesonInit`` command\nwith an argument. For example, to switch to ``build-debug`` directory, issue\n\n```vim\n:MesonInit build-debug         \" switch for the current buffer\n:MesonInit! build-debug        \" switch for the current and new buffers\n:bufdo MesonInit! build-debug  \" switch for all existing and new buffers\n```\n\nThe directory will be initialised if it does not exist or does not contain\n``build.ninja`` file. As of the current version Meson options can be added only\nvia ``b:meson_command`` variable.\n\nMeson options can be changed via ``:MesonConfigure`` command:\n\n```vim\n\" change install prefix to $HOME/.local\n:MesonConfigure -Dprefix=$HOME/.local\n\n\" debug build with address sanitizer\n:MesonConfigure -Dbuildtype=debug -Db_sanitize=address -Dcpp_args=\"\"\n\n\" fully optimised build\n:MesonConfigure -Dbuildtype=release -Db_sanitize=none -Dcpp_args=\"-march=native\"\n\n\" show current configuration\n:MesonConfigure\n```\n\nMeson tests, benchmarks and run targets can be executed via the following commands.\n\n```vim\n:MesonRun cppcheck             \" run ninja cppcheck\n:MesonRun sha1_benchmark 1 2 3 \" run sha1_benchmark executable with arguments 1 2 3\n:MesonRun                      \" show all available targets\n:MesonTest sha1                \" run meson test sha1\n:MesonTest                     \" run all tests\n:MesonTest --suite sha         \" run all tests from suite sha\n:MesonBenchmark                \" run all benchmarks\n:MesonBenchmark sha1           \" run sha1 benchmark\n```\n\nThe plugin completes partially written arguments and current argument values,\njust hit \u003ckbd\u003eTAB\u003c/kbd\u003e at any point in the command line.\n\nThe usual file navigation commands, namely \u003ckbd\u003eg\u003c/kbd\u003e\u003ckbd\u003ef\u003c/kbd\u003e,\n\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ew\u003c/kbd\u003e\u003ckbd\u003ef\u003c/kbd\u003e, and\n\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ew\u003c/kbd\u003e\u003ckbd\u003eg\u003c/kbd\u003e\u003ckbd\u003ef\u003c/kbd\u003e, work for `subdir()`\nconstructs. To go to ``meson.build`` file in the parent directory simply use\n\u003ckbd\u003eg\u003c/kbd\u003e\u003ckbd\u003eb\u003c/kbd\u003e or \u003ckbd\u003eBackspace\u003c/kbd\u003e. Also Mesonic does completion\nfor member functions of all global objects (`meson` and `*_machine`). Type\nobject name, dot and \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ex\u003c/kbd\u003e+\u003ckbd\u003eo\u003c/kbd\u003e to trigger\nfunction name completion.  Further customisations are documented in the\nhelp file: ``:help mesonic``.\n\n### Syntastic integration\n\nMesonic provides a Syntastic syntax checker for the C language. In order to use\nit, put the following (or similar) into your ``.vimrc``.\n\n```vim\n\" If there's a `meson.build` file, use meson for linting.\nautocmd FileType c call ConsiderMesonForLinting()\nfunction ConsiderMesonForLinting()\n    if filereadable('meson.build')\n        let g:syntastic_c_checkers = ['meson']\n    endif\nendfunction\n```\n\n## Limitations\n\nMesonic assumes that build directory is a subdirectory of top-level directory of\nyour project, i.e. build directory is located in the same directory where your\nmain ``meson.build`` file is. In all other cases it may produce wrong file paths\nin quickfix list.\n\n## Contributing\n\nThis plugin was created as a result of my passion for Vim and C++\nprogramming, and as a consequence of reading\n[\"Learn Vimscript the Hard Way\"](http://learnvimscriptthehardway.stevelosh.com/)\nby Steve Losh. Feel free to contribute or post a bug at GitHub project page\n(here).\n\n## License\n\nMesonic is GPL licensed.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figankevich%2Fmesonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figankevich%2Fmesonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figankevich%2Fmesonic/lists"}