diff --git a/lua/snacks/picker/config/highlights.lua b/lua/snacks/picker/config/highlights.lua index 9a40c64c..73683292 100644 --- a/lua/snacks/picker/config/highlights.lua +++ b/lua/snacks/picker/config/highlights.lua @@ -44,6 +44,8 @@ Snacks.util.set_hl({ KeymapNowait = "@variable.builtin", BufNr = "Number", BufFlags = "NonText", + BufType = "Function", + FileType = "String", KeymapRhs = "NonText", Time = "Special", UndoAdded = "Added", diff --git a/lua/snacks/picker/format.lua b/lua/snacks/picker/format.lua index c16e5bd3..2b39528a 100644 --- a/lua/snacks/picker/format.lua +++ b/lua/snacks/picker/format.lua @@ -58,6 +58,9 @@ function M.filename(item, picker) local icon, hl = Snacks.util.icon(name, cat, { fallback = picker.opts.icons.files, }) + if item.buftype == "terminal" then + icon, hl = " ", "Special" + end if item.dir and item.open then icon = picker.opts.icons.files.dir_open end @@ -637,7 +640,27 @@ function M.buffer(item, picker) ret[#ret + 1] = { " " } ret[#ret + 1] = { Snacks.picker.util.align(item.flags, 2, { align = "right" }), "SnacksPickerBufFlags" } ret[#ret + 1] = { " " } + vim.list_extend(ret, M.filename(item, picker)) + + if item.buftype ~= "" then + ret[#ret + 1] = { " " } + vim.list_extend(ret, { + { "[", "SnacksPickerDelim" }, + { item.buftype, "SnacksPickerBufType" }, + { "]", "SnacksPickerDelim" }, + }) + end + + if item.name == "" and item.filetype ~= "" then + ret[#ret + 1] = { " " } + vim.list_extend(ret, { + { "[", "SnacksPickerDelim" }, + { item.filetype, "SnacksPickerFileType" }, + { "]", "SnacksPickerDelim" }, + }) + end + return ret end diff --git a/lua/snacks/picker/source/buffers.lua b/lua/snacks/picker/source/buffers.lua index 95a96712..7a6df890 100644 --- a/lua/snacks/picker/source/buffers.lua +++ b/lua/snacks/picker/source/buffers.lua @@ -22,7 +22,7 @@ function M.buffers(opts, ctx) if keep then local name = vim.api.nvim_buf_get_name(buf) if name == "" then - name = "[No Name]" .. (vim.bo[buf].filetype ~= "" and " " .. vim.bo[buf].filetype or "") + name = "[Scratch]" end local info = vim.fn.getbufinfo(buf)[1] local mark = vim.api.nvim_buf_get_mark(buf, '"') @@ -35,6 +35,9 @@ function M.buffers(opts, ctx) table.insert(items, { flags = table.concat(flags), buf = buf, + name = vim.api.nvim_buf_get_name(buf), + buftype = vim.bo[buf].buftype, + filetype = vim.bo[buf].filetype, text = buf .. " " .. name, file = name, info = info,