Plugin that improves support for Github Actions files in Neovim.
- Syntax highlighting for Github Actions expressions thanks to
tree-sitter-gh-actions-expressions. Compatible with^0.3.0 - New predicate with its LSP configuration
Neovim >= 0.9.0nvim-treesittergitignoreparser (optional): forhashFiles()functionjsonparser (optional): forfromJSON()functionyamlparser: injection to itsblock_mapping_pairnode
Important
These snippets are for neovim >= 0.11.0
{
"nvim-treesitter/nvim-treesitter",
branch = 'main',
dependencies = { "Hdoc1509/gh-actions.nvim" },
config = function()
-- NOTE: register parser before installation
require("gh-actions.tree-sitter").setup()
require("nvim-treesitter").install({
"gh_actions_expressions", -- required
"gitignore", -- optional
"json", -- optional
"yaml", -- required
})
end,
}use({
"nvim-treesitter/nvim-treesitter",
branch = 'main',
requires = { "Hdoc1509/gh-actions.nvim" },
config = function()
-- NOTE: register parser before installation
require("gh-actions.tree-sitter").setup()
require("nvim-treesitter").install({
"gh_actions_expressions", -- required
"gitignore", -- optional
"json", -- optional
"yaml", -- required
})
end,
})ensure_install of main branch
Important
This snippet is for neovim >= 0.11.0. See Minit README for some details about possible compatibility for neovim 0.10.
Use install module instead:
require("nvim-treesitter.install").install({
"gh_actions_expressions", -- required
"gitignore", -- optional
"json", -- optional
"yaml", -- required
})configs module of old master branch
Important
This snippet is for neovim >= 0.9.0.
require("nvim-treesitter.configs").setup({
ensure_installed = {
"gh_actions_expressions", -- required
"gitignore", -- optional
"json", -- optional
"yaml", -- required
}
})---@type GHActions.TS.Opts
{
-- Whether to `generate` files from the grammar before building it
from_grammar = nil,
-- Path to local `tree-sitter-gh-actions-expressions`.
path = nil,
-- Remote url to `tree-sitter-gh-actions-expressions`
url = "https://github.com/Hdoc1509/tree-sitter-gh-actions-expressions",
-- Version or commit of `tree-sitter-gh-actions-expressions`
revision = nil,
-- Branch of `tree-sitter-gh-actions-expressions`
branch = "release",
}Check if the buffer matches the pattern .github/workflows/*.ya?ml.
The gh-actions.ts-query-ls module exports a configuration for
ts_query_ls server in order to register the custom
is-gh-actions-file? predicate used by this plugin.
Note
This is only needed if you will use the is-gh-actions-file? predicate in
your queries.
Important
Be sure to set gh-actions.nvim as a dependency
local lspconfig = require('lspconfig')
local gh_actions = require('gh-actions.ts-query-ls')
lspconfig.ts_query_ls.setup(vim.tbl_deep_extend('force', {
-- your settings
}, gh_actions.expressions))vim.lsp.config + neovim >= 0.11
local gh_actions = require('gh-actions.ts-query-ls')
vim.lsp.config('ts_query_ls', vim.tbl_deep_extend('force', {
-- your settings
}, gh_actions.expressions))
vim.lsp.enable('ts_query_ls')Important
<rtp> is your runtimepath
local gh_actions = require('gh-actions.ts-query-ls')
return vim.tbl_deep_extend('force', {
-- your settings
}, gh_actions.expressions)Then, in your init.lua:
vim.lsp.enable('ts_query_ls')Important
Be sure to run :checkhealth vim.treesitter and
:checkhealth nvim-treesitter before checking the following errors.
If you found the following error:
- ERROR Parser "gh_actions_expressions" failed to load
(path: .../gh_actions_expressions.so): ...: ABI version mismatch for
.../gh_actions_expressions.so: supported between X and Y, found Z
Note
X and Y are the interval of ABI versions supported by neovim. Z is the
ABI version that was used to develop the parser.
-
Install the following tools:
-
Run
:TSInstallFromGrammar gh_actions_expressionsto re-install the parser with the correct ABI version.
It's also recommended to add the from_grammar option to the setup of the
gh-actions.tree-sitter module in order to avoid the need to run
:TSInstallFromGrammar every time you update nvim-treesitter:
require("gh-actions.tree-sitter").setup({
from_grammar = true
})Check the Troubleshooting section of
tree-sitter-gh-actions-expressions.
This plugin will follow changes of tree-sitter-gh-actions-expressions:
