From 78c1905cabd9700ed63dda8744d5d4141e16fa62 Mon Sep 17 00:00:00 2001 From: Nareshkumar Rao Date: Fri, 16 May 2025 14:03:39 +0200 Subject: [PATCH] added auto-session support --- after/plugin/session.lua | 1 + after/plugin/telescope.lua | 3 +- lazy-lock.json | 6 +- lua/plugins/lspconfig.lua | 156 ++++++++++++++++----------------- lua/plugins/plugins.lua | 171 ++++++++++++++++++++++--------------- 5 files changed, 188 insertions(+), 149 deletions(-) create mode 100644 after/plugin/session.lua diff --git a/after/plugin/session.lua b/after/plugin/session.lua new file mode 100644 index 0000000..2ea0a98 --- /dev/null +++ b/after/plugin/session.lua @@ -0,0 +1 @@ +vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua index 0a515a4..b79775c 100644 --- a/after/plugin/telescope.lua +++ b/after/plugin/telescope.lua @@ -2,5 +2,6 @@ local builtin = require('telescope.builtin') vim.keymap.set('n', 'pf', builtin.find_files, { desc = 'Telescope find files' }) vim.keymap.set('n', '', builtin.git_files, {}) vim.keymap.set('n', 'ps', function() - builtin.grep_string({ search = vim.fn.input("Grep > ") }) + -- builtin.grep_string({ search = vim.fn.input("Grep > ") }) + builtin.live_grep() end) diff --git a/lazy-lock.json b/lazy-lock.json index 6688fa9..6c6fcbd 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,4 +1,5 @@ { + "auto-session": { "branch": "main", "commit": "00334ee24b9a05001ad50221c8daffbeedaa0842" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, @@ -6,13 +7,16 @@ "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, "conform.nvim": { "branch": "master", "commit": "2b2b30260203af3b93a7470ac6c8457ddd6e32d9" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" }, + "mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" }, "mason.nvim": { "branch": "main", "commit": "888d6ee499d8089a3a4be4309d239d6be1c1e6c0" }, + "none-ls.nvim": { "branch": "main", "commit": "90e4a27ccaa25979a6b732b9f06dfa43b54957b7" }, "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-lspconfig": { "branch": "master", "commit": "ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57" }, "nvim-tree.lua": { "branch": "master", "commit": "be5b788f2dc1522c73fb7afad9092331c8aebe80" }, "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" }, - "nvim-web-devicons": { "branch": "master", "commit": "d360317f8f509b99229bb31d42269987696df6ff" }, + "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "outline.nvim": { "branch": "main", "commit": "321f89ef79f168a78685f70d70c52d0e7b563abb" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua index 3e4f72c..bfe565b 100644 --- a/lua/plugins/lspconfig.lua +++ b/lua/plugins/lspconfig.lua @@ -1,94 +1,94 @@ local function config_lsp() - vim.lsp.enable("rust_analyzer") - vim.lsp.enable("lua_ls") + vim.lsp.enable("rust_analyzer") end return { - { - "neovim/nvim-lspconfig", - lazy = false, -- REQUIRED: tell lazy.nvim to start this plugin at startup - dependencies = { - 'neovim/nvim-lspconfig', - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-buffer', - 'hrsh7th/cmp-path', - 'hrsh7th/cmp-cmdline', - 'hrsh7th/nvim-cmp', - 'hrsh7th/cmp-vsnip', - 'hrsh7th/vim-vsnip' - }, - config = function() - local cmp = require'cmp' + { + "neovim/nvim-lspconfig", + lazy = false, -- REQUIRED: tell lazy.nvim to start this plugin at startup + dependencies = { + "neovim/nvim-lspconfig", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-vsnip", + "hrsh7th/vim-vsnip", + }, + config = function() + local cmp = require("cmp") - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. - -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. - -- require('snippy').expand_snippet(args.body) -- For `snippy` users. - -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. - -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + -- require('snippy').expand_snippet(args.body) -- For `snippy` users. + -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. + -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) - -- For `mini.snippets` users: - -- local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert - -- insert({ body = args.body }) -- Insert at cursor - -- cmp.resubscribe({ "TextChangedI", "TextChangedP" }) - -- require("cmp.config").set_onetime({ sources = {} }) - end, - }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'vsnip' }, -- For vsnip users. - -- { name = 'luasnip' }, -- For luasnip users. - -- { name = 'ultisnips' }, -- For ultisnips users. - -- { name = 'snippy' }, -- For snippy users. - }, { - { name = 'buffer' }, - }) - }) + -- For `mini.snippets` users: + -- local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert + -- insert({ body = args.body }) -- Insert at cursor + -- cmp.resubscribe({ "TextChangedI", "TextChangedP" }) + -- require("cmp.config").set_onetime({ sources = {} }) + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "vsnip" }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. + }, { + { name = "buffer" }, + }), + }) - -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below - -- Set configuration for specific filetype. - --[[ cmp.setup.filetype('gitcommit', { + -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below + -- Set configuration for specific filetype. + --[[ cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'git' }, }, { { name = 'buffer' }, }) }) - require("cmp_git").setup() ]]-- + require("cmp_git").setup() ]] + -- - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } - }) + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ "/", "?" }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = "buffer" }, + }, + }) - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }), - matching = { disallow_symbol_nonprefix_matching = false } - }) - config_lsp() - end - } + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "path" }, + }, { + { name = "cmdline" }, + }), + matching = { disallow_symbol_nonprefix_matching = false }, + }) + config_lsp() + end, + }, } diff --git a/lua/plugins/plugins.lua b/lua/plugins/plugins.lua index 6999e68..24ce5cb 100644 --- a/lua/plugins/plugins.lua +++ b/lua/plugins/plugins.lua @@ -1,72 +1,105 @@ return { - { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" } - }, - { - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate" - }, - { "mbbill/undotree" }, - { "tpope/vim-fugitive" }, - { - "folke/trouble.nvim", - opts = {}, -- for default options, refer to the configuration section for custom setup. - cmd = "Trouble", - keys = { - { - "xx", - "Trouble diagnostics toggle", - desc = "Diagnostics (Trouble)", - } - } - }, - { - "nvim-tree/nvim-tree.lua", - version = "*", - lazy = false, - dependencies = { - "nvim-tree/nvim-web-devicons", - }, - config = function() - require("nvim-tree").setup { - update_focused_file = { enable = true } - } - end, - }, - { - "mason-org/mason.nvim" - }, - { - "hedyhli/outline.nvim", - config = function() - -- Example mapping to toggle outline - vim.keymap.set("n", "o", "Outline", - { desc = "Toggle Outline" }) + { + "nvim-telescope/telescope.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + }, + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + }, + { "mbbill/undotree" }, + { "tpope/vim-fugitive" }, + { + "folke/trouble.nvim", + opts = {}, -- for default options, refer to the configuration section for custom setup. + cmd = "Trouble", + keys = { + { + "xx", + "Trouble diagnostics toggle", + desc = "Diagnostics (Trouble)", + }, + }, + }, + { + "nvim-tree/nvim-tree.lua", + version = "*", + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + cmd = { + "NvimTreeToggle", + }, + opts = { + update_focused_file = { enable = true }, + }, + }, + { + "mason-org/mason.nvim", + opts = {}, + }, + { + "mason-org/mason-lspconfig.nvim", + opts = { + automatic_enable = true, + ensure_installed = { "lua_ls", "ts_ls" }, + }, + }, + { + "jay-babu/mason-null-ls.nvim", + dependencies = { + "mason-org/mason.nvim", + "nvimtools/none-ls.nvim", + }, + opts = { ensure_installed = { "prettier", "stylua" } }, + }, + { + "hedyhli/outline.nvim", + config = function() + -- Example mapping to toggle outline + vim.keymap.set("n", "o", "Outline", { desc = "Toggle Outline" }) - require("outline").setup { - -- Your setup opts here (leave empty to use defaults) - } - end, - }, - { - 'stevearc/conform.nvim', - opts = { - formatters_by_ft = { - lua = { "stylua" }, - rust = { "rustfmt", lsp_format = "fallback" } - }, - format_on_save = { - timeout_ms = 500, - lsp_format = "fallback", - }, - }, - }, - { - 'windwp/nvim-autopairs', - event = "InsertEnter", - config = true - -- use opts = {} for passing setup options - -- this is equivalent to setup({}) function - } + require("outline").setup({ + -- Your setup opts here (leave empty to use defaults) + }) + end, + }, + { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + typescript = { "prettier" }, + jsx = { "prettier" }, + lua = { "stylua" }, + rust = { "rustfmt", lsp_format = "fallback" }, + }, + format_on_save = { + timeout_ms = 500, + lsp_format = "fallback", + }, + }, + }, + { + "windwp/nvim-autopairs", + event = "InsertEnter", + config = true, + -- use opts = {} for passing setup options + -- this is equivalent to setup({}) function + }, + { + "rmagatti/auto-session", + lazy = false, + opts = { + suppressed_dirs = { "~/", "~/Downloads", "/" }, + post_restore_cmds = { + function() + -- Restore nvim-tree after a session is restored + local nvim_tree_api = require("nvim-tree.api") + nvim_tree_api.tree.open() + nvim_tree_api.tree.change_root(vim.fn.getcwd()) + nvim_tree_api.tree.reload() + end, + }, + }, + }, }