{"id":31558044,"url":"https://github.com/hdoc1509/gh-actions.nvim","last_synced_at":"2026-05-06T09:39:31.101Z","repository":{"id":316852432,"uuid":"1064436131","full_name":"Hdoc1509/gh-actions.nvim","owner":"Hdoc1509","description":"Plugins that improves support for Github Actions files in Neovim.","archived":false,"fork":false,"pushed_at":"2025-09-27T04:23:50.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-27T06:14:39.857Z","etag":null,"topics":["github-actions","neovim","neovim-plugin","parser","tree-sitter","tree-sitter-gh-actions-expressions"],"latest_commit_sha":null,"homepage":"","language":null,"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/Hdoc1509.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-26T03:18:27.000Z","updated_at":"2025-09-27T04:23:53.000Z","dependencies_parsed_at":"2025-09-27T06:14:41.295Z","dependency_job_id":"623efa74-f8ad-4c1d-a04c-e71a2401d28c","html_url":"https://github.com/Hdoc1509/gh-actions.nvim","commit_stats":null,"previous_names":["hdoc1509/gh-actions.nvim"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Hdoc1509/gh-actions.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hdoc1509%2Fgh-actions.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hdoc1509%2Fgh-actions.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hdoc1509%2Fgh-actions.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hdoc1509%2Fgh-actions.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hdoc1509","download_url":"https://codeload.github.com/Hdoc1509/gh-actions.nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hdoc1509%2Fgh-actions.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278391427,"owners_count":25978988,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["github-actions","neovim","neovim-plugin","parser","tree-sitter","tree-sitter-gh-actions-expressions"],"created_at":"2025-10-05T00:12:38.369Z","updated_at":"2026-05-06T09:39:31.094Z","avatar_url":"https://github.com/Hdoc1509.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-actions.nvim\n\nPlugin that improves support for [Github Actions][gh-actions-docs] files\nin Neovim.\n\n![Github Actions Expression syntax highlight](https://i.imgur.com/hE9jucZ.png)\n\n## Features\n\n- Syntax highlighting for Github Actions expressions thanks to\n  [`tree-sitter-gh-actions-expressions`][ts-gh-actions-expressions]. Compatible\n  with [`^0.3.0`][ts-gh-actions-expressions-version]\n- [New predicate](#is-gh-actions-file-predicate) with its [LSP\n  configuration](#lsp-configuration)\n\n## Requirements\n\n- `Neovim \u003e= 0.9.0`\n- [`nvim-treesitter`][nvim-treesitter]\n- [`gitignore` parser][gitignore] (optional): for `hashFiles()` function\n- [`json` parser][json] (optional): for `fromJSON()` function\n- [`yaml` parser][yaml]: injection to its `block_mapping_pair` node\n\n## Install\n\nInstallation examples for [`lazy.nvim`](https://github.com/folke/lazy.nvim) and\n[`packer.nvim`](https://github.com/wbthomason/packer.nvim):\n\n\u003e [!IMPORTANT]\n\u003e This snippet is for neovim \u003e= 0.11.0\n\n```lua\n{\n  \"nvim-treesitter/nvim-treesitter\",\n  lazy = false, -- if using `lazy.nvim`\n  branch = 'main',\n  -- `run` instead of `build` if using `packer.nvim`\n  build = ':TSUpdate',\n  -- `requires` instead of `dependencies` if using `packer.nvim`\n  dependencies = { \"Hdoc1509/gh-actions.nvim\" },\n  config = function()\n    -- NOTE: register parser before installation\n    require(\"gh-actions.tree-sitter\").setup()\n\n    require(\"nvim-treesitter\").install({\n      \"gh_actions_expressions\", -- required\n      \"gitignore\", -- optional\n      \"json\", -- optional\n      \"yaml\", -- required\n    })\n  end,\n}\n```\n\n### Parser installation for previous versions of `nvim-treesitter`\n\n#### `ensure_install` of [`main`][nvim-ts-main-ensure-install] branch\n\n\u003e [!IMPORTANT]\n\u003e This snippet is for neovim \u003e= 0.11.0. See [Minit README](./minit/README.md#nvim-ts-main-ensure-installlua)\n\u003e for some details about possible compatibility for neovim 0.10.\n\n\u003cdetails\u003e\n  \u003csummary\u003eInstallation example\u003c/summary\u003e\n\nUse `install` module instead:\n\n```lua\n{\n  \"nvim-treesitter/nvim-treesitter\",\n  lazy = false, -- if using `lazy.nvim`\n  branch = \"main\",\n  -- `run` instead of `build` if using `packer.nvim`\n  build = \":TSUpdate\",\n  -- prior or equal to:\n  commit = \"73adbe597e8350cdf2773e524eb2199841ea2ab6\",\n  -- posterior or equal to:\n  -- commit = \"0bb981c87604200df6c8fb81e5a411101bdf93af\",\n  -- `requires` instead of `dependencies` if using `packer.nvim`\n  dependencies = { \"Hdoc1509/gh-actions.nvim\" },\n  config = function()\n    -- NOTE: register parser before installation\n    require(\"gh-actions.tree-sitter\").setup()\n\n    require(\"nvim-treesitter.install\").install({\n      \"gh_actions_expressions\", -- required\n      \"gitignore\", -- optional\n      \"json\", -- optional\n      \"yaml\", -- required\n    })\n  end,\n}\n```\n\n\u003c/details\u003e\n\n#### `configs` module of old [`master`][nvim-ts-master] branch\n\n\u003e [!IMPORTANT]\n\u003e This snippet is for neovim \u003e= 0.9.0.\n\n\u003cdetails\u003e\n  \u003csummary\u003eInstallation example\u003c/summary\u003e\n\n```lua\n{\n  \"nvim-treesitter/nvim-treesitter\",\n  lazy = false, -- if using `lazy.nvim`\n  branch = \"master\",\n  -- `run` instead of `build` if using `packer.nvim`\n  build = \":TSUpdate\",\n  -- `requires` instead of `dependencies` if using `packer.nvim`\n  dependencies = { \"Hdoc1509/gh-actions.nvim\" },\n  config = function()\n    -- NOTE: register parser before installation\n    require(\"gh-actions.tree-sitter\").setup()\n\n    require(\"nvim-treesitter.configs\").setup({\n      ensure_installed = {\n        \"gh_actions_expressions\", -- required\n        \"gitignore\", -- optional\n        \"json\", -- optional\n        \"yaml\", -- required\n      },\n    })\n  end,\n}\n```\n\n\u003c/details\u003e\n\n## Default configuration\n\n### `gh-actions.tree-sitter` setup\n\n\u003cdetails\u003e\n  \u003csummary\u003eDefault configuration\u003c/summary\u003e\n\n```lua\n---@type GHActions.TS.Opts\n{\n  -- Whether to `generate` files from the grammar before building it\n  from_grammar = nil,\n  -- Path to local `tree-sitter-gh-actions-expressions`.\n  path = nil,\n  -- Remote url to `tree-sitter-gh-actions-expressions`\n  url = \"https://github.com/Hdoc1509/tree-sitter-gh-actions-expressions\",\n  -- Version or commit of `tree-sitter-gh-actions-expressions`\n  revision = nil,\n  -- Branch of `tree-sitter-gh-actions-expressions`\n  branch = \"release\",\n}\n```\n\n\u003c/details\u003e\n\n## `is-gh-actions-file?` predicate\n\nCheck if the buffer matches the pattern `.github/workflows/*.ya?ml`.\n\n## LSP configuration\n\nThe `gh-actions.ts-query-ls` module exports a configuration for\n[`ts_query_ls`][ts-query-ls] server in order to register the custom\n`is-gh-actions-file?` predicate used by this plugin.\n\n\u003e [!IMPORTANT]\n\u003e This is only needed if you will use the predicates defined by this plugin in\n\u003e your queries and you have set the [`valid_predicates` setting for\n\u003e `ts_query_ls`](https://github.com/ribru17/ts_query_ls#valid_predicates).\n\n---\n\n\u003e [!NOTE]\n\u003e You can check [my config for `ts_query_ls`][nvim-config-ts-query-ls] for\n\u003e reference.\n\n### [nvim-lspconfig][lspconfig] + neovim \u003c 0.11\n\n\u003e [!IMPORTANT]\n\u003e Be sure to set `gh-actions.nvim` as a dependency\n\n```lua\nlocal lspconfig = require(\"lspconfig\")\nlocal gh_actions = require(\"gh-actions.ts-query-ls\")\n\nlspconfig.ts_query_ls.setup(vim.tbl_deep_extend(\"force\", {\n  -- your settings\n}, gh_actions.expressions))\n```\n\n### [vim.lsp.config][vim-lsp-config] + neovim \u003e= 0.11\n\n\u003c!-- TODO: need to check if it works correctlty --\u003e\n\n\u003e [!IMPORTANT]\n\u003e Be sure to load `gh-actions.nvim` before\n\n```lua\nlocal gh_actions = require(\"gh-actions.ts-query-ls\")\n\nvim.lsp.config(\n  \"ts_query_ls\",\n  vim.tbl_deep_extend(\"force\", {\n    -- your settings\n  }, gh_actions.expressions)\n)\nvim.lsp.enable(\"ts_query_ls\")\n```\n\n### `after/lsp/ts_query_ls.lua` + neovim \u003e= 0.11\n\n\u003c!-- TODO: need to check if it works correctlty --\u003e\n\n```lua\nlocal gh_actions = require(\"gh-actions.ts-query-ls\")\n\nreturn vim.tbl_deep_extend(\"force\", {\n  -- your settings\n}, gh_actions.expressions)\n```\n\n\u003e [!IMPORTANT]\n\u003e Be sure to load `vim-map-side.nvim` before calling `vim.lsp.enable()`\n\u003e\n\u003e See [LSP config merge](https://neovim.io/doc/user/lsp.html#lsp-config-merge)\n\nThen, in your `init.lua`:\n\n```lua\nvim.lsp.enable(\"ts_query_ls\")\n```\n\n## Troubleshooting\n\n\u003e [!IMPORTANT]\n\u003e Be sure to run `:checkhealth vim.treesitter` and\n\u003e `:checkhealth nvim-treesitter` before checking the following errors.\n\n### Incompatible ABI version\n\nIf you found the following error:\n\n```checkhealth\n- ERROR Parser \"gh_actions_expressions\" failed to load\n  (path: .../gh_actions_expressions.so): ...: ABI version mismatch for\n  .../gh_actions_expressions.so: supported between X and Y, found Z\n```\n\n\u003c!-- prettier-ignore --\u003e\n\u003e [!NOTE]\n\u003e `X` and `Y` are the interval of ABI versions supported by neovim. `Z` is the\n\u003e ABI version that was used to develop the parser.\n\n1. Install the following tools:\n\n   - [`Node.js`][nodejs]\n   - [`tree-sitter cli`][tree-sitter-cli]\n\n2. Run `:TSInstallFromGrammar gh_actions_expressions` to re-install the parser\n   with the correct ABI version.\n\nIt's also recommended to add the `from_grammar` option to the `setup` of the\n`gh-actions.tree-sitter` module in order to avoid the need to run\n`:TSInstallFromGrammar` every time you update `nvim-treesitter`:\n\n```lua\nrequire(\"gh-actions.tree-sitter\").setup({\n  from_grammar = true,\n})\n```\n\n### Errors not related to neovim\n\nCheck the [Troubleshooting section of\n`tree-sitter-gh-actions-expressions`][ts-gh-actions-expressions-troubleshooting].\n\n## Updates\n\nThis plugin will follow changes of `tree-sitter-gh-actions-expressions`:\n\n- [`queries`][ts-gh-actions-expressions-queries] updates\n- [`grammar`][ts-gh-actions-expressions-grammar] updates\n\n[ts-gh-actions-expressions]: https://github.com/hdoc1509/tree-sitter-gh-actions-expressions\n[ts-gh-actions-expressions-grammar]: https://github.com/hdoc1509/tree-sitter-gh-actions-expressions/tree/master/grammar.js\n[ts-gh-actions-expressions-queries]: https://github.com/hdoc1509/tree-sitter-gh-actions-expressions/tree/master/queries\n[ts-gh-actions-expressions-version]: https://github.com/Hdoc1509/tree-sitter-gh-actions-expressions/blob/master/CHANGELOG.md#030\n[ts-gh-actions-expressions-troubleshooting]: https://github.com/Hdoc1509/tree-sitter-gh-actions-expressions#troubleshooting\n[gitignore]: https://github.com/shunsambongi/tree-sitter-gitignore\n[json]: https://github.com/tree-sitter/tree-sitter-json\n[yaml]: https://github.com/tree-sitter-grammars/tree-sitter-yaml\n[nvim-treesitter]: https://github.com/nvim-treesitter/nvim-treesitter\n[nvim-ts-main-ensure-install]: https://github.com/nvim-treesitter/nvim-treesitter/tree/0bb981c87604200df6c8fb81e5a411101bdf93af#setup\n[nvim-ts-master]: https://github.com/nvim-treesitter/nvim-treesitter/tree/master\n[nodejs]: https://nodejs.org/en/download\n[tree-sitter-cli]: https://github.com/tree-sitter/tree-sitter/tree/master/crates/cli\n[lspconfig]: (https://github.com/neovim/nvim-lspconfig)\n[gh-actions-docs]: https://docs.github.com/en/actions/reference/workflows-and-actions\n[vim-lsp-config]: https://neovim.io/doc/user/lsp.html#lsp-config\n[nvim-config-ts-query-ls]: https://github.com/Hdoc1509/nvim-config/blob/master/lua/plugins/lsp/servers/ts_query_ls/init.lua\n[ts-query-ls]: https://github.com/ribru17/ts_query_ls\n\n\u003c!-- markdownlint-disable-file MD033 --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdoc1509%2Fgh-actions.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhdoc1509%2Fgh-actions.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdoc1509%2Fgh-actions.nvim/lists"}