{"id":13898923,"url":"https://github.com/google/vim-maktaba","last_synced_at":"2026-03-12T11:35:03.093Z","repository":{"id":12328782,"uuid":"14967014","full_name":"google/vim-maktaba","owner":"google","description":"Consistent Vimscript","archived":false,"fork":false,"pushed_at":"2023-03-21T11:14:43.000Z","size":803,"stargazers_count":589,"open_issues_count":42,"forks_count":41,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-19T22:27:43.612Z","etag":null,"topics":["vim"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-12-05T21:59:43.000Z","updated_at":"2025-02-17T10:11:30.000Z","dependencies_parsed_at":"2023-10-20T21:11:03.777Z","dependency_job_id":null,"html_url":"https://github.com/google/vim-maktaba","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/google/vim-maktaba","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvim-maktaba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvim-maktaba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvim-maktaba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvim-maktaba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/vim-maktaba/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fvim-maktaba/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265629946,"owners_count":23801494,"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":["vim"],"created_at":"2024-08-06T18:04:32.373Z","updated_at":"2025-12-17T04:32:27.655Z","avatar_url":"https://github.com/google.png","language":"Vim Script","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"readme":"Maktaba is a vimscript plugin library. It is designed for plugin authors.\nFeatures include:\n\n* Plugin objects (for manipulating plugins in vimscript)\n* Plugin flags (used to configure plugins without global settings)\n* Universal logger interface\n* Dependency management tools\n* Real closures\n\nMaktaba advocates a plugin structure that, when adhered to, gives the plugin\naccess to many powerful tools such as configuration flags. Within Google, these\nconventions standardize behavior across a wide variety of plugins.\n\nAlso contained are many utility functions that ease the pain of working with\nvimscript. This includes, among other things:\n\n* Exception handling\n* Variable type enforcement\n* Filepath manipulation\n\n# Usage example\n\nMaktaba plugins can be installed using any plugin manager. However, maktaba\nplugins make heavy use of dependency management, so it's recommended to use a\nplugin manager with dependency management capabilities, like\n[VAM](https://github.com/MarcWeber/vim-addon-manager).\n\nInstallation of a few plugins using VAM looks something like\n```vim\nset runtimepath+=~/.vim/bundle/vim-addon-manager/\n\" Loads glaive, vtd, and their maktaba dependency.\ncall vam#ActivateAddons(['glaive', 'vtd'])\n\" Initializes all maktaba plugins.\ncall maktaba#plugin#Detect()\n```\n\n# Plugins Using Maktaba\n\nSeveral vim plugins are\n[already using maktaba](https://github.com/google/maktaba/wiki/Plugins-Using-Maktaba).\nAs a user, you can generally expect these plugins to be configurable using\n[Glaive](https://github.com/google/glaive) and be more well-behaved in terms of\nthings like defining unwanted global mappings and variables and avoiding\nannoying side-effects like moving your cursor.\n\nPlugin authors should consider developing plugins using maktaba to simplify\ncode, support modular plugins with hassle-free dependency management, and avoid\ncommon pitfalls. If you've written a plugin using maktaba, please add it to the\nlist above and share feedback.\n\n# Further reading\n\nIn the `vroom/` directory you'll find literate test files that walk you through\nmaktaba features in depth. `vroom/main.vroom` is a good place to start.\n\nIn the `examples/` directory you can find an example maktaba plugin to give you\na feel for how maktaba plugins look.\n\nIn the `doc/` directory you'll find helpfiles for maktaba. These are also\navailable via `:help maktaba` if maktaba has been installed and helptags have\nbeen generated. The help files document the maktaba API in its entirety.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fvim-maktaba","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fvim-maktaba","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fvim-maktaba/lists"}