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:
Simon Hauser
2020-12-29 21:05:59 +01:00
committed by GitHub
parent e555cd375f
commit 1d40ab5ccd
8 changed files with 296 additions and 148 deletions

View File

@@ -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)