feat: All buffer previewers are now async and more config options (#354)
Configure preview window with:
autocmd User TelescopePreviewerLoaded setlocal wrap
autocmd User TelescopePreviewerLoaded setlocal number
file_maker example: Use regex highlighting for certain filetype like `*min.js` because they slow
down things with treesitter highlighter. Just a snippet for tests. We will do an extension :)
local previewers = require('telescope.previewers')
local putils = require('telescope.previewers.utils')
local pfiletype = require('plenary.filetype')
local _bad = { '.*%.min%.js' }
local bad_files = function(filepath)
for _, v in ipairs(_bad) do
if filepath:match(v) then
return true
end
end
return false
end
local new_maker = function(filepath, bufnr, bufname, use_ft_detect, callback)
if use_ft_detect == nil then use_ft_detect = true end
if bad_files(filepath) then
previewers.buffer_previewer_maker(filepath, bufnr, bufname, false, callback)
local ft = pfiletype.detect(filepath)
putils.regex_highlighter(bufnr, ft)
else
previewers.buffer_previewer_maker(filepath, bufnr, bufname, use_ft_detect, callback)
end
end
require('telescope').setup {
defaults = {
buffer_previewer_maker = new_maker,
}
}
This commit is contained in:
@@ -187,15 +187,18 @@ previewers.new_termopen_previewer = function(opts)
|
||||
return opts.get_command(entry, st)
|
||||
else
|
||||
local env = {}
|
||||
local cmd = opts.get_command(entry, st)
|
||||
if not cmd then return end
|
||||
for k, v in pairs(termopen_env) do
|
||||
table.insert(env, k .. '=' .. v)
|
||||
end
|
||||
return table.concat(env, ' ') .. ' ' .. table.concat(opts.get_command(entry, st), ' ')
|
||||
return table.concat(env, ' ') .. ' ' .. table.concat(cmd, ' ')
|
||||
end
|
||||
end
|
||||
|
||||
putils.with_preview_window(status, bufnr, function()
|
||||
set_term_id(self, vim.fn.termopen(get_cmd(status), term_opts))
|
||||
local cmd = get_cmd(status)
|
||||
if cmd then set_term_id(self, vim.fn.termopen(cmd, term_opts)) end
|
||||
end)
|
||||
|
||||
vim.api.nvim_buf_set_name(bufnr, tostring(bufnr))
|
||||
@@ -228,34 +231,6 @@ previewers.new_termopen_previewer = function(opts)
|
||||
return Previewer:new(opts)
|
||||
end
|
||||
|
||||
previewers.git_commit_diff = defaulter(function(_)
|
||||
return previewers.new_termopen_previewer {
|
||||
get_command = function(entry)
|
||||
local sha = entry.value
|
||||
return { 'git', '-p', 'diff', sha .. '^!' }
|
||||
end
|
||||
}
|
||||
end, {})
|
||||
|
||||
previewers.git_branch_log = defaulter(function(_)
|
||||
return previewers.new_termopen_previewer {
|
||||
get_command = function(entry)
|
||||
return { 'git', '-p', 'log', '--graph',
|
||||
"--pretty=format:" .. add_quotes .. "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset"
|
||||
.. add_quotes,
|
||||
'--abbrev-commit', '--date=relative', entry.value }
|
||||
end
|
||||
}
|
||||
end, {})
|
||||
|
||||
previewers.git_file_diff = defaulter(function(_)
|
||||
return previewers.new_termopen_previewer {
|
||||
get_command = function(entry)
|
||||
return { 'git', '-p', 'diff', entry.value }
|
||||
end
|
||||
}
|
||||
end, {})
|
||||
|
||||
previewers.cat = defaulter(function(opts)
|
||||
local maker = get_maker(opts)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user