From 41e60ce12c6f6940a4f2a0fbe5a2a6f49cf75a99 Mon Sep 17 00:00:00 2001 From: tiyn Date: Mon, 1 Apr 2024 03:22:07 +0200 Subject: [PATCH] nvim: added projection for session and project management --- .config/nvim/init.lua | 6 ++++ .config/nvim/lazy-lock.json | 45 ++++++++++++------------ .config/nvim/lua/autocmd.lua | 30 ++++++++++++++++ .config/nvim/lua/keymap.lua | 14 +++----- .config/nvim/lua/plugins/projections.lua | 24 +++++++++++++ .config/nvim/lua/plugins/wilder.lua | 4 +-- 6 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 .config/nvim/lua/autocmd.lua create mode 100644 .config/nvim/lua/plugins/projections.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 1e53b3c..3cbb6b1 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -125,6 +125,9 @@ require("dictionaries") -- load plugins (autoload all files in plugin folder) require("loadplugins") +-- load commands to be run automatically +require("autocmd") + -- load general mapped keys require("keymap") @@ -132,3 +135,6 @@ vim.cmd([[ set foldopen-=hor set foldclose-=hor ]]) + +-- Save localoptions to session file +vim.opt.sessionoptions:append("localoptions") diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 97d6279..68c6d66 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -7,44 +7,45 @@ "cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, - "conform.nvim": { "branch": "master", "commit": "5a15cc46e75cad804fd51ec5af9227aeb1d1bdaa" }, + "conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" }, "diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" }, "fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" }, "fzy-lua-native": { "branch": "master", "commit": "820f745b7c442176bcc243e8f38ef4b985febfaf" }, "git-blame.nvim": { "branch": "master", "commit": "a0282d05adbee80aaf4e2ff35b81b52940b67bed" }, - "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" }, + "gitsigns.nvim": { "branch": "main", "commit": "70584ff9aae8078b64430c574079d79620b8f06d" }, "goto-preview": { "branch": "main", "commit": "527fd81a827234e26ca47891abe90497215db2a6" }, - "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" }, + "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" }, "knap": { "branch": "main", "commit": "d4ea571d2d4e139d288b758c5bab31788d30eea3" }, - "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" }, - "leap.nvim": { "branch": "main", "commit": "25753d8a16b69fbbce5d392702c21dbc79d86bd1" }, - "lsp_signature.nvim": { "branch": "master", "commit": "e92b4e7073345b2a30a56b20db3d541a9aa2771e" }, + "lazy.nvim": { "branch": "main", "commit": "31ddbea7c10b6920c9077b66c97951ca8682d5c8" }, + "leap.nvim": { "branch": "main", "commit": "68ca052dfdcda5e4e958d1ba0fef35e94a3e02e8" }, + "lsp_signature.nvim": { "branch": "master", "commit": "c6aeb2f1d2538bbdfdaab1664d9d4c3c75aa9db8" }, "lspkind-nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, - "lualine.nvim": { "branch": "master", "commit": "8b56462bfb746760465264de41b4907310f113ec" }, + "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" }, "luasnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" }, "mapx.nvim": { "branch": "main", "commit": "c3dd43474a5fc2f266309bc04a69b74eb2524671" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" }, "mason-null-ls.nvim": { "branch": "main", "commit": "e270134d83ba59425edc53356c6fd337b61bb8dd" }, - "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" }, - "none-ls.nvim": { "branch": "main", "commit": "ff3819c52ca04232fb70fbd6c1639de9abcbe122" }, - "nvim-autopairs": { "branch": "master", "commit": "c6139ca0d5ad7af129ea6c89cb4c56093f2c034a" }, - "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, + "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" }, + "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" }, + "nvim-autopairs": { "branch": "master", "commit": "dbfc1c34bed415906395db8303c71039b3a3ffb4" }, + "nvim-cmp": { "branch": "main", "commit": "2fb2a3cf78bbc1b0bea030e8c8728985af1cf302" }, "nvim-colorizer.lua": { "branch": "master", "commit": "0b3950aed7bc35b78200bc292156aa77d2a4d342" }, "nvim-docs-view": { "branch": "master", "commit": "78d88bca16f32a430572758677f9246f6d7f7b94" }, - "nvim-hlslens": { "branch": "main", "commit": "e4c811a401b06f86a7bb042b1d64a5cba21729a9" }, - "nvim-lspconfig": { "branch": "master", "commit": "e172dd599cff2ae5267871b5e33fb42934c4df43" }, + "nvim-hlslens": { "branch": "main", "commit": "c42b4526e6d83b904eb5f3d50e68d7c2fc4be4b5" }, + "nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" }, "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" }, "nvim-scrollbar": { "branch": "main", "commit": "35f99d559041c7c0eff3a41f9093581ceea534e8" }, "nvim-surround": { "branch": "main", "commit": "d47001f8ddf9646c24f16d2732d4d0255acd2121" }, - "nvim-tree.lua": { "branch": "master", "commit": "efafd73efa9bc8c26282aed563ba0f01c7465b06" }, - "nvim-treesitter": { "branch": "master", "commit": "9775d5d7c724f81acdd441e7e9edefc4514e990b" }, + "nvim-tree.lua": { "branch": "master", "commit": "d8d3a1590a05b2d8b5eb26e2ed1c6052b1b47a77" }, + "nvim-treesitter": { "branch": "master", "commit": "1d1d92e94aea9ac0273015341438b63d2db528a5" }, "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" }, "nvim-ts-rainbow": { "branch": "master", "commit": "ef95c15a935f97c65a80e48e12fe72d49aacf9b9" }, - "nvim-ufo": { "branch": "main", "commit": "239ae620d818ffa1319ca3056546df71906d4bfb" }, - "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" }, + "nvim-ufo": { "branch": "main", "commit": "458aa4451b98614cfab6b3d7beddc8caff5e3052" }, + "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" }, "nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" }, - "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" }, + "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" }, "popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" }, + "projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" }, "promise-async": { "branch": "main", "commit": "93540c168c5ed2b030ec3e6c40ab8bbb85e36355" }, "renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" }, "spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" }, @@ -53,9 +54,9 @@ "tccs.nvim": { "branch": "master", "commit": "b0e36734b8e4c8e1e56533218076fe574c7a9d75" }, "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, "tidy.nvim": { "branch": "triggerable-tidy", "commit": "1cbed7676273057c8af22438deaae73cd5cb96b5" }, - "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" }, - "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" }, - "undotree": { "branch": "master", "commit": "9dbbf3b7d19dda0d22ceca461818e4739ad8154d" }, + "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" }, + "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" }, + "undotree": { "branch": "master", "commit": "aa93a7e5890dbbebbc064cd22260721a6db1a196" }, "vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" }, "vim-hug-neovim-rpc": { "branch": "master", "commit": "93ae38792bc197c3bdffa2716ae493c67a5e7957" }, "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" }, diff --git a/.config/nvim/lua/autocmd.lua b/.config/nvim/lua/autocmd.lua new file mode 100644 index 0000000..367954d --- /dev/null +++ b/.config/nvim/lua/autocmd.lua @@ -0,0 +1,30 @@ +-- highlighting yanked regions +local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }) +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, +}) + +-- gnikdroy/projections.nvim +local Session = require("projections.session") +vim.api.nvim_create_autocmd({ "VimLeavePre" }, { + callback = function() + Session.store(vim.loop.cwd()) + end, +}) +vim.api.nvim_create_autocmd({ "VimEnter" }, { + callback = function() + if vim.fn.argc() ~= 0 then + return + end + local session_info = Session.info(vim.loop.cwd()) + if session_info == nil then + Session.restore_latest() + else + Session.restore(vim.loop.cwd()) + end + end, + desc = "Restore last session automatically", +}) diff --git a/.config/nvim/lua/keymap.lua b/.config/nvim/lua/keymap.lua index 8810657..829fa06 100644 --- a/.config/nvim/lua/keymap.lua +++ b/.config/nvim/lua/keymap.lua @@ -1,12 +1,3 @@ --- highlighting yanked regions -local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) -vim.api.nvim_create_autocmd('TextYankPost', { - callback = function() - vim.highlight.on_yank() - end, - group = highlight_group, -}) - -- setup keymap function local m = require 'mapx'.setup { global = true, whichkey = true } @@ -16,6 +7,7 @@ m.nname("gp", "LSP: preview") m.cname("w", "Write") m.cname("w!", "Write: overwrite") m.nname("g", "Git") +m.nname("f", "Telescope: find ...") m.nname("gd", "Git: diff") m.nname("s", "Substitute") m.nname("t", "Terminal") @@ -112,6 +104,7 @@ m.nnoremap("", function() require("renamer").rename() end, "LSP: rename") -- nvim-telescope/telescope.nvim m.nnoremap("", ':Telescope find_files', "Telescope: find files") +m.nnoremap("ff", ':Telescope find_files', "Telescope: find files") -- kamykn/spelunker.vim m.nnoremap("", ':call spelunker#toggle()', "Spelling: toggle spell check") @@ -137,3 +130,6 @@ m.nnoremap("m", ":WinShift", "Navigation: enter window shift mode") m.nnoremap("s", "(leap-forward)", "Navigation: enter leap mode for forward movement") m.nnoremap("S", "(leap-backward)", "Navigation: enter leap mode for backwards movement") m.nnoremap("gs", "(leap-from-window", "Navigation: enter leap mode for other windows") + +-- gnikdroy/projections.nvim +m.nnoremap("fp", function() vim.cmd("Telescope projections") end, "Telescope: find projects") diff --git a/.config/nvim/lua/plugins/projections.lua b/.config/nvim/lua/plugins/projections.lua new file mode 100644 index 0000000..ee73c46 --- /dev/null +++ b/.config/nvim/lua/plugins/projections.lua @@ -0,0 +1,24 @@ +return { + "gnikdroy/projections.nvim", + dependencies = { "nvim-telescope/telescope.nvim" }, + branch = "pre_release", + config = function() + require("projections").setup({ + workspaces = { -- Default workspaces to search for + { "~/code/main", { ".git" } }, + { "~/code/uni", { ".git" } }, + }, + store_hooks = { + pre = function() + -- nvim-tree + local nvim_tree_present, api = pcall(require, "nvim-tree.api") + if nvim_tree_present then + api.tree.close() + end + end, + }, + }) + + require("telescope").load_extension("projections") + end, +} diff --git a/.config/nvim/lua/plugins/wilder.lua b/.config/nvim/lua/plugins/wilder.lua index 6fccf14..1a8c764 100644 --- a/.config/nvim/lua/plugins/wilder.lua +++ b/.config/nvim/lua/plugins/wilder.lua @@ -23,9 +23,9 @@ return { wilder.python_file_finder_pipeline({ file_command = function(ctx, arg) if string.find(arg, '.') ~= nil then - return {'fdfind', '-tf', '-H'} + return {'fd', '-tf', '-H'} else - return {'fdfind', '-tf'} + return {'fd', '-tf'} end end, dir_command = {'fd', '-td'},