You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.5 KiB
122 lines
4.5 KiB
return { |
|
|
|
-- Fuzzy Finder (files, LSP, etc) |
|
{ |
|
"nvim-telescope/telescope.nvim", |
|
branch = "0.1.x", |
|
dependencies = { |
|
"nvim-lua/plenary.nvim", |
|
-- Fuzzy Finder Algorithm which requires local dependencies to be built. |
|
{ |
|
"nvim-telescope/telescope-fzf-native.nvim", |
|
build = "make", |
|
cond = function() |
|
return vim.fn.executable "make" == 1 |
|
end, |
|
}, |
|
-- Extensions |
|
"smartpde/telescope-recent-files", |
|
}, |
|
extensions = { |
|
"fzf", |
|
}, |
|
config = function() |
|
require("telescope").setup({ |
|
defaults = { |
|
sorting_strategy = "ascending", |
|
|
|
layout_strategy = "config", |
|
layout_config = { |
|
height = 10, -- amount of results |
|
search_condensed = true, |
|
}, |
|
border = true, |
|
|
|
history = { |
|
path = vim.fn.stdpath("cache") .. "/telescope_history", |
|
}, |
|
|
|
mappings = require("keybinds").telescope_default_mappings() |
|
}, |
|
}) |
|
require("telescope").load_extension("fzf") |
|
require("telescope").load_extension("recent_files") |
|
|
|
--- ┌──────────────────────────────────────────────────┐ |
|
--- │ │ |
|
--- │ ┌───────────────────┐ │ |
|
--- │ │ │ │ |
|
--- │ │ │ │ |
|
--- │ │ Preview │ │ |
|
--- │ │ │ │ |
|
--- │ │ │ │ |
|
--- │ └───────────────────┘ │ |
|
--- │ │ |
|
--- ├──────────────────────────────────────────────────┤ |
|
--- │ Prompt │ |
|
--- ├──────────────────────────────────────────────────┤ |
|
--- │ Results │ |
|
--- │ │ |
|
--- └──────────────────────────────────────────────────┘ |
|
require("telescope.pickers.layout_strategies").config = function(picker, max_columns, max_lines, |
|
layout_config) |
|
local p_window = require "telescope.pickers.window" |
|
local initial_options = p_window.get_initial_window_options(picker) |
|
local results = initial_options.results |
|
local prompt = initial_options.prompt |
|
local preview = initial_options.preview |
|
-- Layout config isnt filled by Telescope automatically |
|
layout_config = require("telescope.config").values.layout_config or {} |
|
|
|
results.title = "" |
|
results.borderchars = { "─", "│", "─", "│", "├", "┤", "╯", "╰" } |
|
|
|
local bs = picker.window.border and 2 or 0 |
|
local search_condensed = bs ~= 0 and layout_config.search_condensed and 2 or 0 |
|
|
|
-- Height |
|
prompt.height = 1 |
|
results.height = layout_config.height or 10 |
|
local search_height = (prompt.height + results.height + (bs * 3)) |
|
preview.height = math.floor((max_lines - search_height) * 0.8) |
|
|
|
-- Width |
|
prompt.width = max_columns - (bs ~= 0 and search_condensed == 0 and bs or 0) |
|
results.width = max_columns - (bs ~= 0 and search_condensed == 0 and bs or 0) |
|
preview.width = math.floor(max_columns * 0.5) |
|
|
|
-- Line (position), coordinates start at top-left |
|
prompt.line = max_lines - results.height + search_condensed - bs -- take overlapping border into account |
|
results.line = max_lines - results.height + search_condensed - bs + (bs / 2) + prompt.height |
|
preview.line = math.floor((max_lines - search_height - preview.height + bs) / 2) + 1 |
|
|
|
return { |
|
preview = picker.previewer and preview.width > 0 and preview, |
|
prompt = prompt, |
|
results = results, |
|
} |
|
end |
|
end, |
|
}, |
|
|
|
-- Telescope pickers sorted by recency and frequency |
|
{ |
|
"prochri/telescope-all-recent.nvim", |
|
dependencies = { |
|
"kkharji/sqlite.lua", |
|
}, |
|
opts = { |
|
database = { |
|
folder = vim.fn.stdpath("cache"), |
|
}, |
|
pickers = { -- extension_name#extension_method |
|
["projects#projects"] = { |
|
disable = false, |
|
use_cwd = false, |
|
sorting = "frecency", |
|
}, |
|
}, |
|
} |
|
}, |
|
|
|
}
|
|
|