From 90dfbaf600b4e5a8bce4757708b368bad6e28dd0 Mon Sep 17 00:00:00 2001 From: Sagi Dayan Date: Thu, 4 Apr 2024 17:00:32 +0300 Subject: [PATCH] nvim: Added harpoon + autocmd Signed-off-by: Sagi Dayan --- files/dotfiles/nvim/lua/user/autocmd.lua | 13 ++++++++ files/dotfiles/nvim/lua/user/init.lua | 1 + files/dotfiles/nvim/lua/user/init_plugins.lua | 10 ++++++ files/dotfiles/nvim/lua/user/keymaps.lua | 33 +++++++++++++++++++ files/dotfiles/nvim/lua/user/packer.lua | 7 +++- 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 files/dotfiles/nvim/lua/user/autocmd.lua diff --git a/files/dotfiles/nvim/lua/user/autocmd.lua b/files/dotfiles/nvim/lua/user/autocmd.lua new file mode 100644 index 0000000..50b4305 --- /dev/null +++ b/files/dotfiles/nvim/lua/user/autocmd.lua @@ -0,0 +1,13 @@ +-- update tree if open on file enter +local api = vim.api +api.nvim_create_autocmd('BufEnter', { + callback = function() + local tree_ok, tree_api = pcall(require, "nvim-tree.api") + if tree_ok and tree_api.tree.is_visible() then + -- local win_number = api.nvim_get_current_win() + tree_api.tree.find_file() + end + end + + +}) diff --git a/files/dotfiles/nvim/lua/user/init.lua b/files/dotfiles/nvim/lua/user/init.lua index 4a6381a..1ee3199 100644 --- a/files/dotfiles/nvim/lua/user/init.lua +++ b/files/dotfiles/nvim/lua/user/init.lua @@ -10,6 +10,7 @@ require("user.treesitter") require("user.keymaps") require("user.lualine") require("user.colors") +require("user.autocmd") -- Make sure plugins are installed --vim.cmd(":PackerClean") diff --git a/files/dotfiles/nvim/lua/user/init_plugins.lua b/files/dotfiles/nvim/lua/user/init_plugins.lua index 89addd6..953431f 100644 --- a/files/dotfiles/nvim/lua/user/init_plugins.lua +++ b/files/dotfiles/nvim/lua/user/init_plugins.lua @@ -78,3 +78,13 @@ local notify_ok, notify = pcall(require, "notify") if notify_ok then vim.notify = notify end + +local harpoon_ok, harpoon = pcall(require, "harpoon") +if harpoon_ok then + harpoon.setup({ + settings = { + save_on_toggle = false, + sync_on_ui_close = true, + } + }) +end diff --git a/files/dotfiles/nvim/lua/user/keymaps.lua b/files/dotfiles/nvim/lua/user/keymaps.lua index 6e7c639..341da22 100644 --- a/files/dotfiles/nvim/lua/user/keymaps.lua +++ b/files/dotfiles/nvim/lua/user/keymaps.lua @@ -32,6 +32,39 @@ if telescope_status_ok then nnoremap("", telescope.current_buffer_fuzzy_find) end +-- Harpoon + +local harpoon_ok, harpoon = pcall(require, "harpoon") +if harpoon_ok then + nnoremap("hx", function() harpoon:list():add() end) + nnoremap("hn", function() harpoon:list():next() end) + nnoremap("hp", function() harpoon:list():prev() end) + if telescope_status_ok then + -- basic telescope configuration + local conf = require("telescope.config").values + local function toggle_telescope(harpoon_files) + local file_paths = {} + for _, item in ipairs(harpoon_files.items) do + table.insert(file_paths, item.value) + end + + require("telescope.pickers").new({}, { + prompt_title = "Harpoon", + finder = require("telescope.finders").new_table({ + results = file_paths, + }), + previewer = conf.file_previewer({}), + sorter = conf.generic_sorter({}), + }):find() + end + + nnoremap("hh", function() toggle_telescope(harpoon:list()) end, + { desc = "Open harpoon window" }) + else + nnoremap("hh", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) + end +end + -- Copy to system clipboard vnoremap('y', '"+y') nnoremap('Y', '"+yg_') diff --git a/files/dotfiles/nvim/lua/user/packer.lua b/files/dotfiles/nvim/lua/user/packer.lua index 9aaf7a1..4fcadf4 100644 --- a/files/dotfiles/nvim/lua/user/packer.lua +++ b/files/dotfiles/nvim/lua/user/packer.lua @@ -68,11 +68,16 @@ return require("packer").startup(function(use) config = function() require("nvim-autopairs").setup {} end } - -- Telescope (fzf) + -- Telescope (fzf) and Harpoon use { 'nvim-telescope/telescope.nvim', requires = { { 'nvim-lua/plenary.nvim' } } } + use { + "ThePrimeagen/harpoon", + branch = "harpoon2", + requires = { { "nvim-lua/plenary.nvim" } } + } if is_workstation then use {