From bd1652defff466758298757089773329fda76aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Pankowski?= Date: Mon, 5 Jan 2026 07:04:19 +0100 Subject: [PATCH] nvim: add telescope --- nvim/.config/nvim/init.lua | 1 + nvim/.config/nvim/lua/config/lsp.lua | 2 +- .../.config/nvim/lua/plugins/auto-session.lua | 2 +- nvim/.config/nvim/lua/plugins/snacks.lua | 176 +++--------------- nvim/.config/nvim/lua/plugins/telescope.lua | 90 +++++++++ nvim/.config/nvim/nvim-pack-lock.json | 28 ++- 6 files changed, 148 insertions(+), 151 deletions(-) create mode 100644 nvim/.config/nvim/lua/plugins/telescope.lua diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 7302daa..b15dffb 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -11,5 +11,6 @@ require("plugins.multicursor") require("plugins.nvim-various-textobjs") require("plugins.oil") require("plugins.snacks") +require("plugins.telescope") require("plugins.surround") require("plugins.treesitter") diff --git a/nvim/.config/nvim/lua/config/lsp.lua b/nvim/.config/nvim/lua/config/lsp.lua index 3a74762..5082004 100644 --- a/nvim/.config/nvim/lua/config/lsp.lua +++ b/nvim/.config/nvim/lua/config/lsp.lua @@ -15,7 +15,7 @@ vim.api.nvim_create_autocmd("LspAttach", { return { abbr = item.label:gsub("%b()", "") } end, }) - vim.keymap.set("n", "A", vim.lsp.buf.code_action) + vim.keymap.set("n", "a", vim.lsp.buf.code_action) vim.keymap.set("i", "", vim.lsp.completion.get) vim.keymap.set("n", "k", function() vim.diagnostic.jump({ float = true, count = -1 }) diff --git a/nvim/.config/nvim/lua/plugins/auto-session.lua b/nvim/.config/nvim/lua/plugins/auto-session.lua index efe2aa2..f24de8d 100644 --- a/nvim/.config/nvim/lua/plugins/auto-session.lua +++ b/nvim/.config/nvim/lua/plugins/auto-session.lua @@ -1,6 +1,6 @@ vim.pack.add({ "https://github.com/rmagatti/auto-session" }) -vim.keymap.set("n", "a", "AutoSession search") +vim.keymap.set("n", "A", "AutoSession search") local ok, sess = pcall(require, "auto-session") if ok then diff --git a/nvim/.config/nvim/lua/plugins/snacks.lua b/nvim/.config/nvim/lua/plugins/snacks.lua index 19db346..b4dadee 100644 --- a/nvim/.config/nvim/lua/plugins/snacks.lua +++ b/nvim/.config/nvim/lua/plugins/snacks.lua @@ -11,115 +11,51 @@ end local set = vim.keymap.set -set("n", "", function() - Snacks.picker.smart() -end, { desc = "Smart Find Files" }) - -set("n", "b", function() - Snacks.picker.buffers() -end, { desc = "Buffers" }) - set("n", "e", function() Snacks.explorer() end, { desc = "File Explorer" }) -set("n", "r", function() - Snacks.picker.recent() -end, { desc = "Recent files" }) - -set("n", "R", function() - Snacks.picker.resume() -end, { desc = "Resume" }) - -set("n", "p", function() - Snacks.picker.projects() -end, { desc = "Projects" }) - -set("n", "l", function() - Snacks.picker.lines() -end, { desc = "Buffer lines" }) - -set("n", "L", function() - Snacks.picker.grep_buffers() -end, { desc = "Grep Open Buffers" }) - -set("n", "F", function() - Snacks.picker.files() -end, { desc = "Find Files" }) - -set("n", "S", function() - Snacks.picker.grep() -end, { desc = "Grep" }) - -set("n", "B", function() - Snacks.picker.git_branches() -end, { desc = "Git Branches" }) - -set({ "n", "v" }, "xB", function() - Snacks.gitbrowse() -end, { desc = "Git Browse" }) - -set("n", "i", function() - Snacks.picker.git_log_line() -end, { desc = "Git Log Line" }) - -set("n", "I", function() - Snacks.picker.git_log() -end, { desc = "Git Log" }) - -set("n", "t", function() - Snacks.picker.git_status() -end, { desc = "Git Status" }) - -set("n", "H", function() - Snacks.picker.git_diff() -end, { desc = "Git Diff (Hunks)" }) - -set("n", "xS", function() - Snacks.picker.git_stash() -end, { desc = "Git Stash" }) - -set("n", "f", function() - Snacks.picker.git_files() -end, { desc = "Find Git Files" }) - -set("n", "s", function() - Snacks.picker.git_grep() -end, { desc = "Git Grep" }) - -set({ "n", "v" }, "o", function() - Snacks.picker.grep_word() -end, { desc = "Grep Visual Selection or Word" }) - -set("n", "g", function() +set("n", "ga", function() Snacks.lazygit() end, { desc = "Lazygit" }) -set("n", "G", function() +set("n", "gh", function() + Snacks.picker.git_diff() +end, { desc = "Git Diff (Hunks)" }) + +set("n", "gl", function() + Snacks.picker.git_log_line() +end, { desc = "Git Log Line" }) + +set("n", "gL", function() + Snacks.picker.git_log() +end, { desc = "Git Log" }) + +set("n", "gr", function() Snacks.lazygit.log_file() -end, { desc = "Git Log File" }) +end, { desc = "Git Log File (reflog)" }) -set("n", "m", function() - Snacks.picker.marks() -end, { desc = "Marks" }) +set({ "n", "v" }, "gw", function() + Snacks.picker.grep_word() +end, { desc = "Grep Visual Selection or Word" }) -set("n", "M", function() - Snacks.picker.man() -end, { desc = "Man pages" }) +set({ "n", "v" }, "gx", function() + Snacks.gitbrowse() +end, { desc = "Git Browse" }) + +set("n", "xr", function() + Snacks.picker.recent() +end, { desc = "Recent files" }) + +set("n", "xR", function() + Snacks.picker.resume() +end, { desc = "Resume" }) set("n", "U", function() Snacks.picker.undo() end, { desc = "Undo History" }) -set("n", "q", function() - Snacks.picker.qflist() -end, { desc = "Quickfix list" }) - -set("n", "Q", function() - Snacks.picker.loclist() -end, { desc = "Location List" }) - -set("n", "xs", function() +set("n", "xC", function() Snacks.picker.colorschemes() end, { desc = "Colorschemes" }) @@ -131,26 +67,6 @@ set("n", "N", function() Snacks.picker.notifications() end, { desc = "Notifications" }) -set("n", "xC", function() - Snacks.picker.commands() -end, { desc = "Commands" }) - -set("n", "h", function() - Snacks.picker.keymaps() -end, { desc = "Keymaps" }) - -set("n", "xh", function() - Snacks.picker.highlights() -end, { desc = "Hightlights" }) - -set("n", "xc", function() - Snacks.picker.command_history() -end, { desc = "Command History" }) - -set("n", '"', function() - Snacks.picker.registers() -end, { desc = "Registers" }) - set("n", "$", function() Snacks.rename.rename_file() end, { desc = "Rename File" }) @@ -169,42 +85,10 @@ end, { desc = "Select Scratch Buffer" }) -- LSP -set("n", "gd", function() - Snacks.picker.lsp_definitions() -end, { desc = "Goto Definition" }) - set("n", "gD", function() Snacks.picker.lsp_declarations() end, { desc = "Goto Declaration" }) -set("n", "grr", function() - Snacks.picker.lsp_references() -end, { desc = "References" }) - -set("n", "gI", function() - Snacks.picker.lsp_implementations() -end, { desc = "Goto Implementation" }) - -set("n", "gy", function() - Snacks.picker.lsp_type_definitions() -end, { desc = "Goto T[y]pe Definition" }) - -set("n", "w", function() - Snacks.picker.lsp_symbols() -end, { desc = "LSP Symbols" }) - -set("n", "d", function() - Snacks.picker.diagnostics_buffer() -end, { desc = "Buffer Diagnostics" }) - -set("n", "D", function() - Snacks.picker.diagnostics() -end, { desc = "Diagnostics" }) - -set("n", "W", function() - Snacks.picker.lsp_workspace_symbols() -end, { desc = "LSP Workspace Symbols" }) - -- Terminal set({ "n", "t" }, "", function() diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..4df80ab --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,90 @@ +vim.api.nvim_create_autocmd("PackChanged", { + group = vim.api.nvim_create_augroup("telescope-fzf-native-update", { clear = true }), + callback = function(ev) + local name, kind = ev.data.spec.name, ev.data.kind + if name == "telescope-fzf-native.nvim" and (kind == "install" or kind == "update") then + vim.system({ "make" }, { cwd = ev.data.path }):wait() + print("telescope-fzf-native make done.") + end + end, +}) + +vim.pack.add({ + { src = "https://github.com/nvim-telescope/telescope.nvim", version = "v0.2.1" }, + "https://github.com/nvim-lua/plenary.nvim", + "https://github.com/nvim-telescope/telescope-fzf-native.nvim", + "https://gitlab.com/davvid/telescope-git-grep.nvim", + { src = "https://github.com/nvim-telescope/telescope-frecency.nvim", version = vim.version.range("^1.0.0") }, +}) + +local ok, builtin = pcall(require, "telescope.builtin") +if ok then + require("telescope").setup({ + defaults = require("telescope.themes").get_ivy(), + }) + local set = vim.keymap.set + + require("telescope").load_extension("fzf") + require("telescope").load_extension("git_grep") + require("telescope").load_extension("frecency") + set("n", "", function() + require("telescope-frecency").start() + end, { desc = "Telescope frecency" }) + set("n", "b", builtin.buffers, { desc = "Telescope buffers" }) + set("n", "cc", builtin.commands, { desc = "Telescope commands" }) + set("n", "ch", builtin.command_history, { desc = "Telescope command history" }) + set("n", "cH", builtin.highlights, { desc = "Telescope highlights" }) + set("n", "d", builtin.diagnostics, { desc = "Telescope diagnostics" }) + set("n", "f", builtin.git_files, { desc = "Telescope git files" }) + set("n", "F", builtin.find_files, { desc = "Telescope find files" }) + set("n", "xF", function() + builtin.find_files({ hidden = true }) + end, { desc = "Telescope find files (hidden)" }) + set("n", "gB", builtin.git_branches, { desc = "Telescope git branches" }) + set("n", "gc", builtin.git_bcommits, { desc = "Telescope git buffer commits" }) + set("n", "gC", builtin.git_commits, { desc = "Telescope git commits" }) + set("n", "gs", builtin.git_status, { desc = "Telescope git status" }) + set("n", "gS", builtin.git_stash, { desc = "Telescope git stash" }) + set("n", "h", builtin.help_tags, { desc = "Telescope help tags" }) + set("n", "H", builtin.keymaps, { desc = "Telescope keymaps" }) + set("n", "l", builtin.current_buffer_fuzzy_find, { desc = "Telescope current buffer fuzzy find" }) + set("n", "L", function() + builtin.live_grep({ grep_open_files = true }) + end, { desc = "Telescope grep open files" }) + set({ "n", "v" }, "y", function() + require("git_grep").grep() + end, { desc = "Telescope git grep word" }) + set("n", "Y", function() + builtin.grep_string({ grep_open_files = true }) + end, { desc = "Telescope grep open files" }) + set("n", "m", builtin.marks, { desc = "Telescope marks" }) + set("n", "M", builtin.man_pages, { desc = "Telescope man pages" }) + set("n", "o", builtin.oldfiles, { desc = "Telescope oldfiles" }) + set("n", "qq", builtin.quickfix, { desc = "Telescope quickfix" }) + set("n", "qh", builtin.quickfixhistory, { desc = "Telescope quickfix history" }) + set("n", "ql", builtin.loclist, { desc = "Telescope loclist" }) + set("n", "r", builtin.resume, { desc = "Telescope resume" }) + set("n", "t", builtin.treesitter, { desc = "Telescope treesitter symbols" }) + set("n", "R", builtin.registers, { desc = "Telescope registers" }) + set("n", "s", function() + require("git_grep").live_grep() + end, { desc = "Telescope git live grep" }) + set("n", "S", builtin.live_grep, { desc = "Telescope live grep" }) + set("n", "S", builtin.live_grep, { desc = "Telescope live grep" }) + set("n", "wd", builtin.lsp_document_symbols, { desc = "Telescope document symbols" }) + set("n", "wp", builtin.lsp_workspace_symbols, { desc = "Telescope workspace symbols" }) + set("n", "ws", function() + require("git_grep").workspace_live_grep() + end, { desc = "Telescope workspace git live grep" }) + set("n", "wy", function() + require("git_grep").workspace_grep() + end, { desc = "Telescope workspace git grep" }) + set("n", ":", builtin.builtin, { desc = "Telescope builtin" }) + + set("n", "gd", builtin.lsp_definitions, { desc = "Goto Definition" }) + set("n", "grr", builtin.lsp_references, { desc = "References" }) + set("n", "gI", builtin.lsp_implementations, { desc = "Goto Implementation" }) + set("n", "gy", builtin.lsp_type_definitions, { desc = "Goto T[y]pe Definition" }) +else + print("plugin builtin missing") +end diff --git a/nvim/.config/nvim/nvim-pack-lock.json b/nvim/.config/nvim/nvim-pack-lock.json index 301022c..d9dad72 100644 --- a/nvim/.config/nvim/nvim-pack-lock.json +++ b/nvim/.config/nvim/nvim-pack-lock.json @@ -9,7 +9,7 @@ "src": "https://github.com/rmagatti/auto-session" }, "conform.nvim": { - "rev": "5420c4b5ea0aeb99c09cfbd4fd0b70d257b44f25", + "rev": "8314f4c9e205e7f30b62147069729f9a1227d8bf", "src": "https://github.com/stevearc/conform.nvim" }, "flash.nvim": { @@ -41,16 +41,38 @@ "version": "'master'" }, "nvim-various-textobjs": { - "rev": "c472b634058ec9cd4a2dc4f6340022d9deae0adb", + "rev": "1532de4649c81b88ee0b4e53bdd17e551dd4589a", "src": "https://github.com/chrisgrieser/nvim-various-textobjs" }, "oil.nvim": { - "rev": "756dec855b4811f2d27f067a3aca477f368d99f5", + "rev": "81b8a91735ad5cd24a6b3137f14a89f19176364f", "src": "https://github.com/stevearc/oil.nvim" }, + "plenary.nvim": { + "rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509", + "src": "https://github.com/nvim-lua/plenary.nvim" + }, "snacks.nvim": { "rev": "fe7cfe9800a182274d0f868a74b7263b8c0c020b", "src": "https://github.com/folke/snacks.nvim" + }, + "telescope-frecency.nvim": { + "rev": "d4f1bb2a939cc02720bceb635095246751db144f", + "src": "https://github.com/nvim-telescope/telescope-frecency.nvim", + "version": "1.0.0 - 2.0.0" + }, + "telescope-fzf-native.nvim": { + "rev": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c", + "src": "https://github.com/nvim-telescope/telescope-fzf-native.nvim" + }, + "telescope-git-grep.nvim": { + "rev": "0936967941a6e7b3875d1b1bfff41b8bcd75bdf5", + "src": "https://gitlab.com/davvid/telescope-git-grep.nvim" + }, + "telescope.nvim": { + "rev": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179", + "src": "https://github.com/nvim-telescope/telescope.nvim", + "version": "'v0.2.1'" } } } \ No newline at end of file