This uses the gitsigns _on_attach_pre function to check if the currently attached buffer is file tracked by yadm, highlighting the buffer properly if it is.
Install the plugin with your plugin manager, and then add a _on_attach_pre function to your gitsigns configuration, passing the callback to the yadm_signs function:
require("gitsigns").setup({
_on_attach_pre = function(bufnr, callback)
require("gitsigns-yadm").yadm_signs(callback, { bufnr = bufnr })
end,
-- other gitsigns configuration...
})See below for examples using lazy.
If using a standard yadm setup, you likely won't need to configure anything.
The default computed values are:
{
homedir = os.getenv("HOME"),
yadm_repo_git = vim.fs.normalize("~/.local/share/yadm/repo.git"),
shell_timeout_ms = 2000, -- how many milliseconds to wait for yadm to finish
disable_inside_gitdir = true -- disable if CWD is in a git repository
on_yadm_attach = nil, -- callback function that is called when we successfully attach to a yadm file
}Call setup to override the defaults:
require("gitsigns-yadm").setup({
yadm_repo_git = "~/.config/yadm/repo.git",
shell_timeout_ms = 1000,
})If you want to disable this when yadm is not installed (or optionally disable the check for any other reason), you can do so like this:
_on_attach_pre = function(bufnr, callback)
if vim.fn.executable("yadm") == 1 then
require("gitsigns-yadm").yadm_signs(callback, { bufnr = bufnr })
else
-- if optionally disabling the plugin, make sure to call
-- 'callback' with no arguments
callback()
end
end,If you want to run some custom code when this attaches successfully, you can pass a on_yadm_attach callback function:
{
"purarue/gitsigns-yadm.nvim",
---@module 'gitsigns-yadm'
---@type GitsignsYadm.Config
opts = {
on_yadm_attach = function()
-- set a buffer-local variable so that other code can run custom
-- code if we're editing a yadm file
vim.b.yadm_tracked = true
-- setup vim-fugitive to work with yadm
vim.fn.FugitiveDetect(require("gitsigns-yadm").config.yadm_repo_git)
end,
},
}With lazy:
{
"lewis6991/gitsigns.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
{
"purarue/gitsigns-yadm.nvim",
---@module 'gitsigns-yadm'
---@type GitsignsYadm.Config
opts = {
shell_timeout_ms = 1000,
},
},
},
opts = {
_on_attach_pre = function(bufnr, callback)
require("gitsigns-yadm").yadm_signs(callback, { bufnr = bufnr })
end,
-- other configuration for gitsigns...
},
}Since this doesn't require calling setup (unless you want to configure the defaults), in accordance with lazys best practices you could also do the following:
{
{
"purarue/gitsigns-yadm.nvim",
lazy = true,
},
{
"nvim-lua/plenary.nvim",
lazy = true,
},
{
"lewis6991/gitsigns.nvim",
opts = {
_on_attach_pre = function(bufnr, callback)
require("gitsigns-yadm").yadm_signs(callback, { bufnr = bufnr })
end,
}
}
}