local status_ok, telescope = pcall(require, "telescope") if not status_ok then return 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 = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; results = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; preview = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; }, 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 = 'vertical', sorting_strategy = 'ascending', layout_config = { vertical = { width = telescopew(), prompt_position = "top", } }, mappings = { i = { [""] = actions.close, [''] = 'which_key', [''] = actions.move_selection_next, [''] = actions.move_selection_previous, [''] = actions.select_default, [''] = actions.preview_scrolling_up, [''] = actions.preview_scrolling_down, [""] = action_layout.toggle_preview }, n = { ["gg"] = actions.move_to_top, ["G"] = actions.move_to_bottom, }, }, } } telescope.load_extension('file_browser') telescope.load_extension('ui-select') telescope.load_extension('projects') a.nvim_create_autocmd('User', { pattern = 'TelescopePreviewerLoaded', callback = function() vim.opt.winblend = 0 end, })