feat: add icons to git_status finder (#401)
* add icons to git_status finder * fix lint warning * fix incorrect removed icon * refactor, more states/icons * refactor, widen columns to allow for 3char width icons * attempted col width fix * fixup: small comments Co-authored-by: TJ DeVries <devries.timothyj@gmail.com>
This commit is contained in:
@@ -1019,28 +1019,51 @@ function make_entry.gen_from_autocommands(_)
|
||||
end
|
||||
end
|
||||
|
||||
local git_icon_defaults = {
|
||||
added = "+",
|
||||
changed = "~",
|
||||
copied = ">",
|
||||
deleted = "-",
|
||||
renamed = "➡",
|
||||
unmerged = "‡",
|
||||
untracked = "?"
|
||||
}
|
||||
|
||||
function make_entry.gen_from_git_status(opts)
|
||||
opts = opts or {}
|
||||
|
||||
local col_width = ((opts.git_icons and opts.git_icons.added) and opts.git_icons.added:len() + 2) or 2
|
||||
local displayer = entry_display.create {
|
||||
separator = " ",
|
||||
separator = "",
|
||||
items = {
|
||||
{ width = 1 },
|
||||
{ width = 1 },
|
||||
{ width = col_width},
|
||||
{ width = col_width},
|
||||
{ remaining = true },
|
||||
}
|
||||
}
|
||||
|
||||
local icons = vim.tbl_extend("keep", opts.git_icons or {}, git_icon_defaults)
|
||||
|
||||
local git_abbrev = {
|
||||
["A"] = {icon = icons.added, hl = "TelescopeResultsDiffAdd"},
|
||||
["U"] = {icon = icons.unmerged, hl = "TelescopeResultsDiffAdd"},
|
||||
["M"] = {icon = icons.changed, hl = "TelescopeResultsDiffChange"},
|
||||
["C"] = {icon = icons.copied, hl = "TelescopeResultsDiffChange"},
|
||||
["R"] = {icon = icons.renamed, hl = "TelescopeResultsDiffChange"},
|
||||
["D"] = {icon = icons.deleted, hl = "TelescopeResultsDiffDelete"},
|
||||
["?"] = {icon = icons.untracked, hl = "TelescopeResultsDiffUntracked"},
|
||||
}
|
||||
|
||||
local make_display = function(entry)
|
||||
local modified = "TelescopeResultsDiffChange"
|
||||
local staged = "TelescopeResultsDiffAdd"
|
||||
|
||||
if entry.status == "??" then
|
||||
modified = "TelescopeResultsDiffDelete"
|
||||
staged = "TelescopeResultsDiffDelete"
|
||||
end
|
||||
local x = string.sub(entry.status, 1, 1)
|
||||
local y = string.sub(entry.status, -1)
|
||||
local status_x = git_abbrev[x] or {}
|
||||
local status_y = git_abbrev[y] or {}
|
||||
|
||||
local empty_space = (" ")
|
||||
return displayer {
|
||||
{ string.sub(entry.status, 1, 1), staged },
|
||||
{ string.sub(entry.status, -1), modified },
|
||||
{ status_x.icon or empty_space, status_x.hl},
|
||||
{ status_y.icon or empty_space, status_y.hl},
|
||||
entry.value,
|
||||
}
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user