.files/.config/nvim/plugin/telescope.lua
Léana 江 c002ef8cdd
nvim/telescope: remap hsplit binding
<C-s> is more coherent with the <C-w>s binding
2025-09-16 16:19:49 +08:00

92 lines
3.1 KiB
Lua

local telescope = require("telescope")
local actions = require("telescope.actions")
local themes = require("telescope.themes")
local config = require("telescope.config")
local builtin = require("telescope.builtin")
local state = require("telescope.state")
-- Clone the default Telescope configuration
local vimgrep_arguments = { unpack(config.values.vimgrep_arguments) }
table.insert(vimgrep_arguments, "--hidden") -- search hidden
table.insert(vimgrep_arguments, "--glob") -- ignore git
table.insert(vimgrep_arguments, "!**/.git/*")
telescope.setup {
-- Workaround
-- https://github.com/nvim-telescope/telescope.nvim/issues/938#issuecomment-877539724
defaults = themes.get_ivy {
vimgrep_arguments = vimgrep_arguments,
mappings = {
n = {
-- Make it harder to accidently quit
["<C-c>"] = actions.close,
["<Esc>"] = actions.nop,
["<C-r>"] = actions.to_fuzzy_refine,
["<C-Up>"] = actions.cycle_history_prev,
["<C-Down>"] = actions.cycle_history_next,
["<C-x>"] = actions.nop,
["<C-s>"] = actions.select_horizontal,
},
i = {
["<C-Up>"] = actions.cycle_history_prev,
["<C-Down>"] = actions.cycle_history_next,
["<C-x>"] = actions.nop,
["<C-s>"] = actions.select_horizontal,
},
},
layout_config = { height = 0.5 },
borderchars = { "", "", "", "", "", "", "", "" },
},
pickers = {
find_files = {
find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" },
},
lsp_references = {
layout_config = { height = 0.7 },
initial_mode = "normal",
},
live_grep = {
layout_config = { height = 0.7 },
},
resume = {
initial_mode = "normal",
},
},
}
-- Enable telescope fzf native, if installed
pcall(require("telescope").load_extension, "fzf")
local function find_undercursor_in_buffer()
builtin["current_buffer_fuzzy_find"] {
layout_config = { height = 0.8 }, -- Already have word, no need to think
default_text = vim.fn.expand("<cword>"),
initial_mode = "normal",
}
end
local function grep_undercursor()
builtin["live_grep"] {
layout_config = { height = 0.8 }, -- Already have word, no need to think
default_text = vim.fn.expand("<cword>"),
initial_mode = "normal",
}
end
vim.keymap.set("n", "<leader>/", builtin["current_buffer_fuzzy_find"])
vim.keymap.set("n", "<leader>w", find_undercursor_in_buffer)
vim.keymap.set("n", "<leader>W", grep_undercursor)
vim.keymap.set("n", "<leader>sf", builtin["find_files"])
vim.keymap.set("n", "<leader>sg", builtin["live_grep"])
vim.keymap.set("n", "<leader>sd", builtin["diagnostics"])
vim.keymap.set("n", "<leader>sb", builtin["buffers"])
vim.keymap.set("n", "<leader>sh", builtin["help_tags"])
vim.keymap.set("n", "<leader>sp", builtin["spell_suggest"])
vim.keymap.set("n", "<leader>sr", builtin["resume"])
-- for GHC
-- grep -> refine for `.hs:` files