summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/pickers.lua4
-rw-r--r--lua/telescope/previewers.lua70
-rw-r--r--lua/telescope/utils.lua2
3 files changed, 70 insertions, 6 deletions
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index c3fcaed..27d6021 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -235,9 +235,7 @@ function Picker:clear_extra_rows(results_bufnr)
end
local empty_lines = utils.repeated_table(worst_line, "")
- vim.api.nvim_buf_set_lines(results_bufnr, 0, worst_line, false, empty_lines)
-
- log.trace("Worst Line after process_complete: %s", worst_line, results_bufnr)
+ pcall(vim.api.nvim_buf_set_lines, results_bufnr, 0, worst_line, false, empty_lines)
end
end
diff --git a/lua/telescope/previewers.lua b/lua/telescope/previewers.lua
index 2b38a99..f3f6261 100644
--- a/lua/telescope/previewers.lua
+++ b/lua/telescope/previewers.lua
@@ -238,7 +238,11 @@ end
previewers.vim_buffer = defaulter(function(_)
return previewers.new {
- setup = function() return { last_set_bufnr = nil } end,
+ setup = function()
+ return {
+ last_set_bufnr = nil
+ }
+ end,
teardown = function(self)
if self.state and self.state.last_set_bufnr then
@@ -251,6 +255,10 @@ previewers.vim_buffer = defaulter(function(_)
local filename = entry.filename
if filename == nil then
+ filename = entry.path
+ end
+
+ if filename == nil then
local value = entry.value
filename = vim.split(value, ":")[1]
end
@@ -259,13 +267,15 @@ previewers.vim_buffer = defaulter(function(_)
return
end
- log.trace("Previewing File: %s", filename)
+ log.info("Previewing File:", filename)
local bufnr = vim.fn.bufnr(filename)
if bufnr == -1 then
-- TODO: Is this the best way to load the buffer?... I'm not sure tbh
- bufnr = vim.fn.bufadd(bufnr)
+ bufnr = vim.fn.bufadd(filename)
vim.fn.bufload(bufnr)
+
+ vim.cmd([[doautocmd filetypedetect BufRead ]] .. filename)
end
self.state.last_set_bufnr = bufnr
@@ -285,6 +295,8 @@ previewers.vim_buffer = defaulter(function(_)
vim.api.nvim_win_set_cursor(status.preview_win, {entry.lnum, 0})
-- print("LNUM:", entry.lnum)
end
+
+ log.info("Previewed bufnr", bufnr)
end,
}
end, {})
@@ -423,6 +435,58 @@ previewers.vim_buffer_or_bat = defaulter(function(_)
}
end, {})
+
+previewers.nvim_file = defaulter(function(_)
+ return previewers.new {
+ preview_fn = function(_, entry, status)
+ local filename = entry.filename
+
+ if filename == nil then
+ filename = entry.path
+ end
+
+ -- if filename == nil then
+ -- local value = entry.value
+ -- filename = vim.split(value, ":")[1]
+ -- end
+
+ if filename == nil then
+ log.info("Could not find file from entry", entry)
+ return
+ end
+
+ local win_id = status.preview_win
+ local bufnr = vim.fn.bufnr(filename)
+ if bufnr == -1 then
+ bufnr = vim.api.nvim_create_buf(false, true)
+ -- vim.api.nvim_buf_set_name(bufnr, filename)
+ vim.api.nvim_win_set_buf(win_id, bufnr)
+
+ vim.api.nvim_win_set_option(status.preview_win, 'wrap', false)
+ if false then
+ vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, vim.fn.readfile(filename))
+ vim.api.nvim_buf_set_option(bufnr, 'filetype', 'lua')
+ else
+ vim.api.nvim_buf_call(bufnr, function()
+ vim.cmd(":noauto view " .. filename)
+ vim.api.nvim_command("doautocmd filetypedetect BufRead " .. vim.fn.fnameescape(filename))
+ end)
+ end
+
+ vim.api.nvim_command("doautocmd filetypedetect BufRead " .. vim.fn.fnameescape(filename))
+ -- print("FT:", vim.api.nvim_buf_get_option(bufnr, 'filetype'))
+ else
+ vim.api.nvim_win_set_buf(win_id, bufnr)
+ vim.api.nvim_win_set_option(status.preview_win, 'wrap', false)
+ vim.api.nvim_win_set_option(status.preview_win, 'winhl', 'Normal:Normal')
+ end
+
+ -- vim.api.nvim_buf_set_option(bufnr, 'filetype', 'lua')
+ -- vim.cmd([[doautocmd filetypedetect BufRead ]] .. vim.fn.fnameescape(filename))
+ end,
+ }
+end)
+
previewers.Previewer = Previewer
return previewers
diff --git a/lua/telescope/utils.lua b/lua/telescope/utils.lua
index fe9eff3..28e79e0 100644
--- a/lua/telescope/utils.lua
+++ b/lua/telescope/utils.lua
@@ -139,6 +139,8 @@ end)()
-- x()
-- x.new { example = 3 }()
function utils.make_default_callable(f, default_opts)
+ default_opts = default_opts or {}
+
return setmetatable({
new = function(opts)
opts = vim.tbl_extend("keep", opts, default_opts)