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.fn.expand("~/.local/share/yadm/repo.git"),
shell_timeout_ms = 2000, -- how many milliseconds to wait for yadm to finish
disable_inside_gitdir = true -- disable if currently 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 lazy
s 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,
}
}
}