feat(previewer): add option for ls --short (#2486)
Co-authored-by: Github Actions <actions@github>
This commit is contained in:
@@ -523,6 +523,10 @@ telescope.setup({opts}) *telescope.setup()*
|
|||||||
- hide_on_startup: Hide previewer when picker starts. Previewer can be toggled
|
- hide_on_startup: Hide previewer when picker starts. Previewer can be toggled
|
||||||
with actions.layout.toggle_preview.
|
with actions.layout.toggle_preview.
|
||||||
Default: false
|
Default: false
|
||||||
|
- ls_short: Determines whether to use the `--short` flag for the `ls`
|
||||||
|
command when previewing directories. Otherwise will result
|
||||||
|
to using `--long`.
|
||||||
|
Default: false
|
||||||
|
|
||||||
|
|
||||||
*telescope.defaults.vimgrep_arguments*
|
*telescope.defaults.vimgrep_arguments*
|
||||||
|
|||||||
@@ -621,6 +621,10 @@ append(
|
|||||||
- hide_on_startup: Hide previewer when picker starts. Previewer can be toggled
|
- hide_on_startup: Hide previewer when picker starts. Previewer can be toggled
|
||||||
with actions.layout.toggle_preview.
|
with actions.layout.toggle_preview.
|
||||||
Default: false
|
Default: false
|
||||||
|
- ls_short: Determines whether to use the `--short` flag for the `ls`
|
||||||
|
command when previewing directories. Otherwise will result
|
||||||
|
to using `--long`.
|
||||||
|
Default: false
|
||||||
]]
|
]]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ color_hash[6] = function(line)
|
|||||||
return color_hash[line:sub(1, 1)]
|
return color_hash[line:sub(1, 1)]
|
||||||
end
|
end
|
||||||
|
|
||||||
local colorize_ls = function(bufnr, data, sections)
|
local colorize_ls_long = function(bufnr, data, sections)
|
||||||
local windows_add = Path.path.sep == "\\" and 2 or 0
|
local windows_add = Path.path.sep == "\\" and 2 or 0
|
||||||
for lnum, line in ipairs(data) do
|
for lnum, line in ipairs(data) do
|
||||||
local section = sections[lnum]
|
local section = sections[lnum]
|
||||||
@@ -117,6 +117,44 @@ local colorize_ls = function(bufnr, data, sections)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local handle_directory_preview = function(filepath, bufnr, opts)
|
||||||
|
opts.preview.ls_short = vim.F.if_nil(opts.preview.ls_short, false)
|
||||||
|
|
||||||
|
local set_colorize_lines
|
||||||
|
if opts.preview.ls_short then
|
||||||
|
set_colorize_lines = function(data, sections)
|
||||||
|
local PATH_SECTION = Path.path.sep == "\\" and 4 or 6
|
||||||
|
local paths = {}
|
||||||
|
for i, line in ipairs(data) do
|
||||||
|
local section = sections[i][PATH_SECTION]
|
||||||
|
local path = line:sub(section.start_index, section.end_index)
|
||||||
|
table.insert(paths, path)
|
||||||
|
end
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, paths)
|
||||||
|
for i, path in ipairs(paths) do
|
||||||
|
local hl = color_hash[6](data[i])
|
||||||
|
vim.api.nvim_buf_add_highlight(bufnr, ns_previewer, hl, i - 1, 0, #path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
set_colorize_lines = function(data, sections)
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, data)
|
||||||
|
colorize_ls_long(bufnr, data, sections)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
pscan.ls_async(filepath, {
|
||||||
|
hidden = true,
|
||||||
|
group_directories_first = true,
|
||||||
|
on_exit = vim.schedule_wrap(function(data, sections)
|
||||||
|
set_colorize_lines(data, sections)
|
||||||
|
if opts.callback then
|
||||||
|
opts.callback(bufnr)
|
||||||
|
end
|
||||||
|
end),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
local search_cb_jump = function(self, bufnr, query)
|
local search_cb_jump = function(self, bufnr, query)
|
||||||
if not query then
|
if not query then
|
||||||
return
|
return
|
||||||
@@ -177,17 +215,7 @@ previewers.file_maker = function(filepath, bufnr, opts)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
if stat.type == "directory" then
|
if stat.type == "directory" then
|
||||||
pscan.ls_async(filepath, {
|
handle_directory_preview(filepath, bufnr, opts)
|
||||||
hidden = true,
|
|
||||||
group_directories_first = true,
|
|
||||||
on_exit = vim.schedule_wrap(function(data, sections)
|
|
||||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, data)
|
|
||||||
colorize_ls(bufnr, data, sections)
|
|
||||||
if opts.callback then
|
|
||||||
opts.callback(bufnr)
|
|
||||||
end
|
|
||||||
end),
|
|
||||||
})
|
|
||||||
else
|
else
|
||||||
if opts.preview.check_mime_type == true and has_file and opts.ft == "" then
|
if opts.preview.check_mime_type == true and has_file and opts.ft == "" then
|
||||||
-- avoid SIGABRT in buffer previewer happening with utils.get_os_command_output
|
-- avoid SIGABRT in buffer previewer happening with utils.get_os_command_output
|
||||||
|
|||||||
Reference in New Issue
Block a user