diff options
Diffstat (limited to 'after/plugin/telescope.lua')
-rw-r--r-- | after/plugin/telescope.lua | 65 |
1 files changed, 60 insertions, 5 deletions
diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua index 9411e61..519ecbd 100644 --- a/after/plugin/telescope.lua +++ b/after/plugin/telescope.lua @@ -5,18 +5,71 @@ end local actions = require('telescope.actions') local action_layout = require("telescope.actions.layout") +local function telescopew() + if vim.o.columns <= 80 then + return vim.o.columns + else + return 80 + end +end + telescope.setup { defaults = { borderchars = { - prompt = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; + prompt = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; results = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; preview = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; }, - sorting_strategy = 'ascending', + preview = { + -- add image previews via chafa + mime_hook = function(filepath, bufnr, opts) + local is_image = function(filepath) + local image_extensions = { -- supported image formats + 'png', + 'jpg', + 'jpe', + 'jpeg', + 'webp', + 'gif', + } + local split_path = vim.split(filepath:lower(), '.', { plain=true }) + local extension = split_path[#split_path] + return vim.tbl_contains(image_extensions, extension) + end + if is_image(filepath) then + local term = vim.api.nvim_open_term(bufnr, {}) + local function send_output(_, data, _ ) + for _, d in ipairs(data) do + vim.api.nvim_chan_send(term, d..'\r\n') + end + end + vim.fn.jobstart({ + 'chafa', + '-C', + 'on', + '--animate', + 'off', + '-s', + (telescopew() - 10)..'x25', + '--clear', + filepath + }, { on_stdout = send_output, stdout_buffered = true, pty = true }) + a.nvim_set_option_value("number", false, {buf = bufnr}) + else + require("telescope.previewers.utils").set_preview_message(bufnr, opts.winid, "File cannot be previewed") + end + end + }, + + winblend = 0, -- 'horizontal', 'vertical', 'bottom_pane', or 'cursor' - layout_strategy = 'bottom_pane', + layout_strategy = 'vertical', + sorting_strategy = 'ascending', layout_config = { - bottom_pane = { height = 0.4, }, + vertical = { + width = telescopew(), + prompt_position = "top", + } }, mappings = { i = { @@ -42,5 +95,7 @@ telescope.load_extension('projects') a.nvim_create_autocmd('User', { pattern = 'TelescopePreviewerLoaded', - command = 'setlocal number', + callback = function() + vim.opt.winblend = 0 + end, }) |