mirror of
https://github.com/folke/snacks.nvim
synced 2025-08-04 18:58:12 +00:00
feat(pickers.format): added opts.picker.formatters.file.filename_first
This commit is contained in:
parent
09d563e223
commit
98562ae6a1
2 changed files with 31 additions and 30 deletions
|
@ -33,21 +33,6 @@ local M = {}
|
|||
---@field idx? number
|
||||
---@field score? number
|
||||
|
||||
---@class snacks.picker.sources.Config
|
||||
|
||||
---@class snacks.picker.preview.Config
|
||||
---@field man_pager? string MANPAGER env to use for `man` preview
|
||||
---@field file snacks.picker.preview.file.Config
|
||||
---@field git snacks.picker.preview.git.Config
|
||||
|
||||
---@class snacks.picker.preview.file.Config
|
||||
---@field max_size? number default 1MB
|
||||
---@field max_line_length? number defaults to 500
|
||||
---@field ft? string defaults to auto-detect
|
||||
|
||||
---@class snacks.picker.preview.git.Config
|
||||
---@field native? boolean use terminal or Neovim for previewing git diffs and commits
|
||||
|
||||
---@class snacks.picker.layout.Config
|
||||
---@field layout snacks.layout.Box
|
||||
---@field reverse? boolean when true, the list will be reversed (bottom-up)
|
||||
|
@ -82,7 +67,8 @@ local M = {}
|
|||
---@field icons? snacks.picker.icons
|
||||
---@field prompt? string prompt text / icon
|
||||
--- Preset options
|
||||
---@field previewers? snacks.picker.preview.Config
|
||||
---@field previewers? snacks.picker.previewers.Config|{}
|
||||
---@field formatters? snacks.picker.formatters.Config|{}
|
||||
---@field sources? snacks.picker.sources.Config|{}
|
||||
---@field layouts? table<string, snacks.picker.layout.Config>
|
||||
--- Actions
|
||||
|
@ -103,14 +89,23 @@ local defaults = {
|
|||
end,
|
||||
},
|
||||
ui_select = true, -- replace `vim.ui.select` with the snacks picker
|
||||
---@class snacks.picker.formatters.Config
|
||||
formatters = {
|
||||
file = {
|
||||
filename_first = false, -- display filename before the file path
|
||||
},
|
||||
},
|
||||
---@class snacks.picker.previewers.Config
|
||||
previewers = {
|
||||
git = {
|
||||
native = false, -- use native (terminal) or Neovim for previewing git diffs and commits
|
||||
},
|
||||
file = {
|
||||
max_size = 1024 * 1024, -- 1MB
|
||||
max_line_length = 500,
|
||||
max_line_length = 500, -- max line length
|
||||
ft = nil, ---@type string? filetype for highlighting. Use `nil` for auto detect
|
||||
},
|
||||
man_pager = nil, ---@type string? MANPAGER env to use for `man` preview
|
||||
},
|
||||
win = {
|
||||
-- input window
|
||||
|
|
|
@ -41,18 +41,24 @@ function M.filename(item, picker)
|
|||
end
|
||||
|
||||
local dir, file = path:match("^(.*)/(.+)$")
|
||||
if dir then
|
||||
table.insert(ret, { dir .. "/", "SnacksPickerDir" })
|
||||
table.insert(ret, { file, "SnacksPickerFile" })
|
||||
if file and dir then
|
||||
if picker.opts.formatters.file.filename_first then
|
||||
ret[#ret + 1] = { file, "SnacksPickerFile" }
|
||||
ret[#ret + 1] = { " " }
|
||||
ret[#ret + 1] = { dir, "SnacksPickerDir" }
|
||||
else
|
||||
ret[#ret + 1] = { dir .. "/", "SnacksPickerDir" }
|
||||
ret[#ret + 1] = { file, "SnacksPickerFile" }
|
||||
end
|
||||
else
|
||||
table.insert(ret, { path, "SnacksPickerFile" })
|
||||
ret[#ret + 1] = { path, "SnacksPickerFile" }
|
||||
end
|
||||
if item.pos then
|
||||
table.insert(ret, { ":", "SnacksPickerDelim" })
|
||||
table.insert(ret, { tostring(item.pos[1]), "SnacksPickerRow" })
|
||||
ret[#ret + 1] = { ":", "SnacksPickerDelim" }
|
||||
ret[#ret + 1] = { tostring(item.pos[1]), "SnacksPickerRow" }
|
||||
if item.pos[2] > 0 then
|
||||
table.insert(ret, { ":", "SnacksPickerDelim" })
|
||||
table.insert(ret, { tostring(item.pos[2]), "SnacksPickerCol" })
|
||||
ret[#ret + 1] = { ":", "SnacksPickerDelim" }
|
||||
ret[#ret + 1] = { tostring(item.pos[2]), "SnacksPickerCol" }
|
||||
end
|
||||
end
|
||||
ret[#ret + 1] = { " " }
|
||||
|
@ -63,13 +69,13 @@ function M.file(item, picker)
|
|||
---@type snacks.picker.Highlight[]
|
||||
local ret = {}
|
||||
|
||||
if item.severity then
|
||||
vim.list_extend(ret, M.severity(item, picker))
|
||||
if item.label then
|
||||
ret[#ret + 1] = { item.label, "SnacksPickerLabel" }
|
||||
ret[#ret + 1] = { " ", virtual = true }
|
||||
end
|
||||
|
||||
if item.label then
|
||||
table.insert(ret, 1, { item.label, "SnacksPickerLabel" })
|
||||
table.insert(ret, 2, { " ", virtual = true })
|
||||
if item.severity then
|
||||
vim.list_extend(ret, M.severity(item, picker))
|
||||
end
|
||||
|
||||
vim.list_extend(ret, M.filename(item, picker))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue