From a6c0657d702752f32089ba615aba457be98aec87 Mon Sep 17 00:00:00 2001 From: Nigel Barink Date: Sun, 6 Oct 2024 17:04:11 +0200 Subject: [PATCH] Removing Which-key, adding a bunch of small improvments Highlight on yank gitsigns oil as default explorer --- lazy-lock.json | 1 + lua/barink/init.lua | 11 +- lua/barink/keys.lua | 81 ++++--- lua/barink/plugins/Oil.lua | 6 +- lua/barink/plugins/fidget.lua | 10 +- lua/barink/plugins/gitsigns.lua | 27 ++- lua/barink/plugins/lsp.lua | 358 +++++++++++++++---------------- lua/barink/plugins/which-key.lua | 15 -- lua/barink/vim.lua | 24 +-- 9 files changed, 289 insertions(+), 244 deletions(-) delete mode 100644 lua/barink/plugins/which-key.lua diff --git a/lazy-lock.json b/lazy-lock.json index ca3975a..8693e3e 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -9,6 +9,7 @@ "conform.nvim": { "branch": "master", "commit": "1a99fdc1d3aa9ccdf3021e67982a679a8c5c740c" }, "edgy.nvim": { "branch": "main", "commit": "7e8dedc39abebe40c289b8012cc89b11c69aa7a0" }, "fidget.nvim": { "branch": "main", "commit": "d855eed8a06531a7e8fd0684889b2943f373c469" }, + "friendly-snippets": { "branch": "main", "commit": "00ba9dd3df89509f95437b8d595553707c46d5ea" }, "git-worktree.nvim": { "branch": "master", "commit": "f247308e68dab9f1133759b05d944569ad054546" }, "gitsigns.nvim": { "branch": "main", "commit": "863903631e676b33e8be2acb17512fdc1b80b4fb" }, "harpoon": { "branch": "harpoon2", "commit": "0378a6c428a0bed6a2781d459d7943843f374bce" }, diff --git a/lua/barink/init.lua b/lua/barink/init.lua index 8fea857..190a1b1 100644 --- a/lua/barink/init.lua +++ b/lua/barink/init.lua @@ -12,4 +12,13 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.rtp:prepend(lazypath) require("barink.keys") -require("lazy").setup("barink.plugins") +require("lazy").setup("barink.plugins" , { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + -- leave nil when passing the spec as the first argument to setup() + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = false, + notify = true, -- get a notification when changes are found + }, + +}) diff --git a/lua/barink/keys.lua b/lua/barink/keys.lua index 0edea92..5cf7110 100644 --- a/lua/barink/keys.lua +++ b/lua/barink/keys.lua @@ -5,43 +5,70 @@ vim.keymap.set('n', '', vim.cmd.UndotreeToggle) vim.keymap.set('n', 'p', [["_dP]]) vim.keymap.set('n', 'fa', vim.lsp.buf.format) vim.keymap.set('n', 'm', ":Mason") -vim.keymap.set('n', 'e',':Explore', {noremap = false, silent=true}) -vim.keymap.set('n', 'le',':Lexplore', {noremap = false, silent=true}) -vim.keymap.set('n', 'l', ':Neotree', {noremap = false, silent= true}) --- Move lines while in visual mode -vim.keymap.set('v', '', ':m \'>+1gv=gv', {noremap = true}) -vim.keymap.set('v', '', ':m \'<-2gv=gv', {noremap = true}) +vim.keymap.set('n', 'e', ':Explore', { noremap = false, silent = true }) +vim.keymap.set('n', 'le', ':Lexplore', { noremap = false, silent = true }) +vim.keymap.set('n', 'l', ':Neotree', { noremap = false, silent = true }) +-- Move lines while in visual mode +vim.keymap.set('v', '', ':m \'>+1gv=gv', { noremap = true }) +vim.keymap.set('v', '', ':m \'<-2gv=gv', { noremap = true }) --- Move lines while in normal mode -vim.keymap.set('n', '', ':m .+1==', {noremap = true}) -vim.keymap.set('n', '', ':m .-2==', {noremap = true}) +-- Move lines while in normal mode +vim.keymap.set('n', '', ':m .+1==', { noremap = true }) +vim.keymap.set('n', '', ':m .-2==', { noremap = true }) --- Move line in edit mode -vim.keymap.set('i', '', ':m .+1==gi', {noremap = true}) -vim.keymap.set('i', '', ':m .-2==gi', {noremap = true}) +-- Move line in edit mode +vim.keymap.set('i', '', ':m .+1==gi', { noremap = true }) +vim.keymap.set('i', '', ':m .-2==gi', { noremap = true }) +-- Simplified split navigation +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') +vim.keymap.set('n', '', '') -- Diagnostics ! -vim.keymap.set('n', '', function() require('trouble').toggle('diagnostics') end ) -vim.keymap.set('n', 'd', function () vim.diagnostic.open_float() end ) -vim.keymap.set('n', 'dn', function () vim.diagnostic.goto_next() end ) -vim.keymap.set('n', 'dp', function () vim.diagnostic.goto_prev() end ) -vim.keymap.set('n', 'ca', function () vim.lsp.buf.code_action() end) +vim.keymap.set('n', '', function() require('trouble').toggle('diagnostics') end) +vim.keymap.set('n', 'd', function() vim.diagnostic.open_float() end) +vim.keymap.set('n', 'dn', function() vim.diagnostic.goto_next() end) +vim.keymap.set('n', 'dp', function() vim.diagnostic.goto_prev() end) +vim.keymap.set('n', 'ca', function() vim.lsp.buf.code_action() end) -- Debugging -vim.keymap.set('n', 'b', function () require('dap').toggle_breakpoint() end ) -vim.keymap.set('n', '', function () print("Start debug session" ) require('dap').continue() end ) -vim.keymap.set('n', '', function () require('dap').step_over() end ) -vim.keymap.set('n', '', function () require('dap').step_into() end ) +vim.keymap.set('n', 'b', function() require('dap').toggle_breakpoint() end) +vim.keymap.set('n', '', function() + print("Start debug session") + require('dap').continue() +end) +vim.keymap.set('n', '', function() require('dap').step_over() end) +vim.keymap.set('n', '', function() require('dap').step_into() end) -vim.keymap.set('n', '=',":Gen Generate") +vim.keymap.set('n', '=', ":Gen Generate") -- Easily hit escape in terminal mode. vim.keymap.set("t", "", "") -- Open a terminal at the bottom of the screen with a fixed height. vim.keymap.set("n", ",st", function() - vim.cmd.new() - vim.cmd.wincmd "J" - vim.api.nvim_win_set_height(0, 12) - vim.wo.winfixheight = true - vim.cmd.term() + vim.cmd.new() + vim.cmd.wincmd "J" + vim.api.nvim_win_set_height(0, 12) + vim.wo.winfixheight = true + vim.cmd.term() end) + +-- Open quickfix list +vim.keymap.set("n", "", "cnextzz") +vim.keymap.set("n", "", "cprevzz") + + +-- Go to next in location list +vim.keymap.set("n", "k", "lnextzz") +vim.keymap.set("n", "j", "lprevzz") + + +-- Highlight on yank +vim.api.nvim_create_autocmd("TextYankPost", { + desc = "Highlight when yanking text ", + group = vim.api.nvim_create_augroup('barink', { clear = true }), + callback = function() + vim.highlight.on_yank() + end +}) diff --git a/lua/barink/plugins/Oil.lua b/lua/barink/plugins/Oil.lua index a9acfc0..c878914 100644 --- a/lua/barink/plugins/Oil.lua +++ b/lua/barink/plugins/Oil.lua @@ -2,13 +2,13 @@ return { { "stevearc/oil.nvim", opt = { - default_file_explorer = false + default_file_explorer = true }, dependencies = { 'nvim-tree/nvim-web-devicons' }, - config = function () - vim.keymap.set("n", "-", "Oil", { desc= "Open parent directory"}) + config = function() + vim.keymap.set("n", "-", "Oil", { desc = "Open parent directory" }) end } } diff --git a/lua/barink/plugins/fidget.lua b/lua/barink/plugins/fidget.lua index 22332c8..b27cae3 100644 --- a/lua/barink/plugins/fidget.lua +++ b/lua/barink/plugins/fidget.lua @@ -1,8 +1,8 @@ return { - { - "j-hui/fidget.nvim", - opt = { + "j-hui/fidget.nvim", + config = function() + local opts = { } - } + require("fidget").setup(opts) + end } - diff --git a/lua/barink/plugins/gitsigns.lua b/lua/barink/plugins/gitsigns.lua index 4a7e525..0c57fd3 100644 --- a/lua/barink/plugins/gitsigns.lua +++ b/lua/barink/plugins/gitsigns.lua @@ -1,4 +1,29 @@ return { 'lewis6991/gitsigns.nvim', - opt = {} + config = function() + local opts = { + signs = { + add = { text = '+' }, + change = { text = "~" }, + delete = { text = "_" }, + topdelete = { text = "-" }, + changedelete = { text = "~" } + }, + signs_staged = { + add = { text = '+' }, + change = { text = "~" }, + delete = { text = "_" }, + topdelete = { text = "-" }, + changedelete = { text = "~" }, + untracked = { text = "*" }, + }, + signs_staged_enable = true, + signcolumn = true, + watch_gitdir = { + follow_files = true + }, + auto_attach = true + } + require("gitsigns").setup(opts) + end, } diff --git a/lua/barink/plugins/lsp.lua b/lua/barink/plugins/lsp.lua index c8ff0b3..5d49239 100644 --- a/lua/barink/plugins/lsp.lua +++ b/lua/barink/plugins/lsp.lua @@ -1,201 +1,201 @@ return - { - 'neovim/nvim-lspconfig', - dependencies = { - { - "folke/neoconf.nvim", - opts = {} - }, - "williamboman/mason-lspconfig", - "williamboman/mason.nvim", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-cmdline", - "hrsh7th/nvim-cmp", - { - 'L3MON4D3/LuaSnip', - dependencies = 'hrsh7th/nvim-cmp', - version = "v2.*", - }, - {'mfussenegger/nvim-jdtls', dependencies = {'nvim-dap'}}, - "onsails/lspkind.nvim", +{ + 'neovim/nvim-lspconfig', + dependencies = { + { + "folke/neoconf.nvim", + opts = {} }, - config = function() - vim.opt.completeopt = { "menu", "menuone", "noselect", "preview"} - require("lspkind").init({}) - require("mason").setup() - require("mason-lspconfig").setup({ - ensure_installed = { "lua_ls", "bashls", "rust_analyzer" } - }) - local ls = require("luasnip") - ls.config.set_config({ - history = true, - updateevents = "TextChanged, TextChangedI", - enable_autosnippets = true, - }) - local cmp = require('cmp') - local lspkind = require("lspkind") - cmp.setup({ - formatting = { - format = lspkind.cmp_format({ - mode = 'symbol', - maxwidth = 60, - ellipsis_char = '...', - show_labelDetails = true, - }), - }, - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - 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. + "williamboman/mason-lspconfig", + "williamboman/mason.nvim", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/nvim-cmp", + { + 'L3MON4D3/LuaSnip', + dependencies = { + 'hrsh7th/nvim-cmp', + 'rafamadriz/friendly-snippets', + }, + version = "v2.*", + }, + { 'mfussenegger/nvim-jdtls', dependencies = { 'nvim-dap' } }, + "onsails/lspkind.nvim", + }, + config = function() + vim.opt.completeopt = { "menu", "menuone", "noselect", "preview" } + require("lspkind").init({}) + require("mason").setup() + require("mason-lspconfig").setup({ + ensure_installed = { "lua_ls", "bashls", "rust_analyzer" } + }) + local ls = require("luasnip") + ls.config.set_config({ + history = true, + updateevents = "TextChanged, TextChangedI", + enable_autosnippets = true, + }) + local cmp = require('cmp') + local lspkind = require("lspkind") + cmp.setup({ + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol', + maxwidth = 60, + ellipsis_char = '...', + show_labelDetails = true, }), - sources = cmp.config.sources({ - { name = 'nvim_lsp', keyword_length = 1 }, - { name = 'path' }, - }, { - { name = 'buffer', keyword_length = 2 }, - }), - window = { - documentation = cmp.config.window.bordered() - }, + }, + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + 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', keyword_length = 1 }, + { name = 'luasnip' }, + { name = 'path' }, + { name = 'buffer', keyword_length = 2 }, + }), + window = { + documentation = cmp.config.window.bordered() + }, + }) + + -- Set configuration for specific filetype. + cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). + }, { + { name = 'buffer' }, }) + }) - -- Set configuration for specific filetype. - cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). - }, { - { name = 'buffer' }, - }) - }) + cmp.setup.filetype({ "sql" }, { + sources = { + { name = "vim-dadbod-completion" }, + { name = "buffer" }, + } + }) + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + -- 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 = 'buffer' } + }, { + { name = 'cmdline' } + }), + matching = { disallow_symbol_nonprefix_matching = false } + }) - cmp.setup.filetype({ "sql"}, { - sources = { - { name = "vim-dadbod-completion"}, - { name = "buffer"} , + + vim.keymap.set({ "i", "s" }, "", function() ls.expand() end, { silent = true }) + vim.keymap.set({ "i", "s" }, "", function() ls.jump(1) end, { silent = true }) + vim.keymap.set({ "i", "s" }, "", function() ls.jump(-1) end, { silent = true }) + vim.keymap.set({ "i", "s" }, "", function() + if ls.choice_active() then + ls.change_choice(1) + end + end, { silent = true }) + + require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/barink/snippets" }) + require("luasnip.loaders.from_vscode").lazy_load() + -- Set up lspconfig. + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local lsp = require("lspconfig") + + local language_server = { + asm_lsp = true, + mojo = true, + zls = true, + emmet_language_server = true, + rust_analyzer = true, + --gdtoolkit = { flags = { debounce_text_changes = 150 }}, + jdtls = true, + pylsp = true, + phpactor = { + init_options = { + ["language_server_phpstan.enabled"] = false, + ["language_server_psalm.enabled"] = false, } - }) - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - -- 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 = 'buffer' } - }, { - { name = 'cmdline' } - }), - matching = { disallow_symbol_nonprefix_matching = false } - }) - - - vim.keymap.set({"i", "s"}, "", function() ls.expand() end, {silent = true}) - vim.keymap.set({"i", "s"}, "", function() ls.jump(1) end, {silent = true }) - vim.keymap.set({"i", "s"}, "", function() ls.jump(-1) end, {silent = true}) - vim.keymap.set({"i", "s"}, "", function() - if ls.choice_active() then - ls.change_choice(1) - end - end, {silent = true}) - - require("luasnip.loaders.from_lua").load({paths= "~/.config/nvim/lua/barink/snippets"}) - - - -- Set up lspconfig. - local capabilities = require("cmp_nvim_lsp").default_capabilities() - local lsp = require("lspconfig") - - local language_server = { - asm_lsp= true, - mojo = true, - zls = true, - emmet_language_server = true, - rust_analyzer = true, - gdtoolkit = { flags = { debounce_text_changes = 150 }}, - jdtls = true, - pylsp = true, - phpactor = { - init_options = { - ["language_server_phpstan.enabled"] = false, - ["language_server_psalm.enabled"] = false, - } - }, - clangd = { + }, + clangd = { capabilities = capabilities, root_dir = require('lspconfig').util.root_pattern("compile_commands.json", "compile_flags.txt", ".git"), - cmd = {"clangd"}, - filetypes = { "c", "cpp", "objc", "objcpp"}, + cmd = { "clangd" }, + filetypes = { "c", "cpp", "objc", "objcpp" }, settings = { clangd = { compilationDatabasePath = "compile-commands.json", - }, - } - }, - ts_ls = true, - gopls = true, - intelephense = true, - lua_ls = { - config = { - settings = { - Lua = { - runtime = { - version = 'LuaJIT', - }, - workspace = { - checkThirdParty= false, - library = { - vim.env.VIMRUNTIME - } - }, --- diagnostics = { --- globals = { 'vim'} --- } + }, + } + }, + ts_ls = true, + gopls = true, + intelephense = true, + lua_ls = { + config = { + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + } + }, + diagnostics = { + globals = { 'vim' } } } } - }, - } + } + }, + } - for name, config in pairs(language_server) do - if config == true then - config = {} - end - config = vim.tbl_deep_extend("force", {}, { capabilities = capabilities }, config) - lsp[name].setup({}) + for name, config in pairs(language_server) do + if config == true then + config = {} end - vim.api.nvim_create_autocmd("LspAttach", { - callback = function (args) - local client = assert(vim.lsp.get_client_by_id(args.data.client_id), "must have valid client") - - local settings = language_server[client.name] - if type(settings) ~= "table" then - settings = {} - end - - local builtin = require "telescope.builtin" - - vim.opt_local.omnifunc = "v:lua.vim.lsp.omnifunc" - vim.keymap.set("n", "gd", builtin.lsp_definitions, {buffer = -1}) - vim.keymap.set("n", "gr", builtin.lsp_references, {buffer = -1}) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, {buffer = -1}) - vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, {buffer = -1}) - vim.keymap.set("n", "K", vim.lsp.buf.hover, {buffer = -1}) - - vim.keymap.set("n", "cr", vim.lsp.buf.rename, {buffer =-1}) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action, {buffer = -1}) - vim.keymap.set("n", "wd", builtin.lsp_document_symbols, {buffer = -1}) - + config = vim.tbl_deep_extend("force", {}, { capabilities = capabilities }, config) + lsp[name].setup({}) + end + vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local client = assert(vim.lsp.get_client_by_id(args.data.client_id), "must have valid client") + local settings = language_server[client.name] + if type(settings) ~= "table" then + settings = {} end + + local builtin = require "telescope.builtin" + + vim.opt_local.omnifunc = "v:lua.vim.lsp.omnifunc" + vim.keymap.set("n", "gd", builtin.lsp_definitions, { buffer = -1 }) + vim.keymap.set("n", "gr", builtin.lsp_references, { buffer = -1 }) + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = -1 }) + vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, { buffer = -1 }) + vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = -1 }) + + vim.keymap.set("n", "cr", vim.lsp.buf.rename, { buffer = -1 }) + vim.keymap.set("n", "ca", vim.lsp.buf.code_action, { buffer = -1 }) + vim.keymap.set("n", "wd", builtin.lsp_document_symbols, { buffer = -1 }) + end }) - end, + end, } diff --git a/lua/barink/plugins/which-key.lua b/lua/barink/plugins/which-key.lua deleted file mode 100644 index 4696062..0000000 --- a/lua/barink/plugins/which-key.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "folke/which-key.nvim", - event = "VeryLazy", - opts = { - }, - keys = { - { - "?", - function() - require("which-key").show({global = false}) - end, - desc = "Buffer Local Keymaps (which-key)", - } - } -} diff --git a/lua/barink/vim.lua b/lua/barink/vim.lua index e42b000..7d263c1 100644 --- a/lua/barink/vim.lua +++ b/lua/barink/vim.lua @@ -21,29 +21,27 @@ vim.opt.termguicolors = true vim.opt.scrolloff = 8 -vim.g.netrw_browse_split = 0 -vim.g.netrw_winsize = 25 - -vim.opt.completeopt = {'menu', 'menuone', 'noselect' } +vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } vim.opt.inccommand = 'split' vim.api.nvim_create_autocmd('LspAttach', { - callback = function (args) + callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) if client.server_capabilities.hoverProvider then - vim.keymap.set('n', 'K', vim.lsp.buf.hover, {buffer = args.buf}) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = args.buf }) end end, }) +vim.g.netrw_browse_split = 0 +vim.g.netrw_winsize = 25 + + --[[ --- Run zig test on save --- TODO: fix vim.cmd call --- TODO: only do this when a zig test file is open +-- Run zig test on save +-- TODO: fix vim.cmd call +-- TODO: only do this when a zig test file is open vim.api.nvim_create_autocmd('BufWritePost' , { callback = function () vim.cmd{cmd = '!zig' , args= {'test', vim.fn.expand('%')} } end -})]]-- - - - +})]] --