summaryrefslogtreecommitdiff
path: root/lua/telescope/make_entry.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/telescope/make_entry.lua')
-rw-r--r--lua/telescope/make_entry.lua47
1 files changed, 35 insertions, 12 deletions
diff --git a/lua/telescope/make_entry.lua b/lua/telescope/make_entry.lua
index c714e7b..b9635bb 100644
--- a/lua/telescope/make_entry.lua
+++ b/lua/telescope/make_entry.lua
@@ -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 make_display = function(entry)
- local modified = "TelescopeResultsDiffChange"
- local staged = "TelescopeResultsDiffAdd"
+ local icons = vim.tbl_extend("keep", opts.git_icons or {}, git_icon_defaults)
- if entry.status == "??" then
- modified = "TelescopeResultsDiffDelete"
- staged = "TelescopeResultsDiffDelete"
- end
+ 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 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