local function normalize_path(path) return path:gsub("\\", "/") end local function normalize_cwd() return normalize_path(vim.loop.cwd()) .. "/" end local function is_subdirectory(cwd, path) return string.lower(path:sub(1, #cwd)) == string.lower(cwd) end local function split_filepath(path) local normalized_path = normalize_path(path) local normalized_cwd = normalize_cwd() local filename = normalized_path:match("[^/]+$") if is_subdirectory(normalized_cwd, normalized_path) then local stripped_path = normalized_path:sub(#normalized_cwd + 1, -(#filename + 1)) return stripped_path, filename else local stripped_path = normalized_path:sub(1, -(#filename + 1)) return stripped_path, filename end end local function path_display(_, path) local stripped_path, filename = split_filepath(path) if filename == stripped_path or stripped_path == "" then return filename end return string.format("%-25s ~ %s", filename, stripped_path) end return { { "nvim-telescope/telescope.nvim", branch = "0.1.x", dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make", lazy = true, }, "nvim-lua/plenary.nvim", }, opts = {}, config = function() require("telescope").setup({ defaults = { path_display = path_display, preview = false, entry_prefix = " ", initial_mode = "insert", selection_strategy = "reset", -- path_display = { "smart" }, vimgrep_arguments = { "rg", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", "--hidden", "--glob=!.git/", }, }, pickers = { find_files = { theme = "dropdown" }, git_files = { theme = "dropdown" }, live_grep = { preview = true, theme = "dropdown" }, buffers = { theme = "dropdown" }, grep_string = { preview = true, theme = "dropdown" }, help_tags = { theme = "dropdown" }, }, extensions = { fzf = { fuzzy = true, -- false will only do exact matching override_generic_sorter = true, -- override the generic sorter override_file_sorter = true, -- override the file sorter case_mode = "smart_case", -- or "ignore_case" or "respect_case" }, }, }) local builtin = require("telescope.builtin") vim.keymap.set("n", "pp", ":Telescope projects theme=dropdown", {}) vim.keymap.set("n", "ff", builtin.find_files, {}) vim.keymap.set("n", "pf", builtin.git_files, {}) vim.keymap.set("n", "bb", builtin.buffers, {}) vim.keymap.set("n", "bi", ":Telescope buffers theme=ivy", {}) vim.keymap.set("n", "pws", function() local word = vim.fn.expand("") builtin.grep_string({ search = word }) end) vim.keymap.set("n", "pWs", function() local word = vim.fn.expand("") builtin.grep_string({ search = word }) end) vim.keymap.set("n", "ps", function() builtin.grep_string({ search = vim.fn.input("Grep > ") }) end) -- vim.keymap.set("n", "pg", builtin.live_grep, {}) vim.keymap.set("n", "vh", builtin.help_tags, {}) end, }, -- { -- "ahmedkhalf/project.nvim", -- config = function() -- require("project_nvim").setup({ -- manual_mode = false, -- detection_methods = { "lsp", "pattern" }, -- patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, -- ignore_lsp = {}, -- exclude_dirs = {}, -- show_hidden = false, -- silent_chdir = true, -- scope_chdir = "global", -- datapath = vim.fn.stdpath("data"), -- }) -- require("telescope").load_extension("projects") -- end, -- }, }