diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua index 3440877..9bfe58b 100644 --- a/dot_config/nvim/init.lua +++ b/dot_config/nvim/init.lua @@ -11,9 +11,12 @@ if not vim.loop.fs_stat(lazypath) then end vim.opt.runtimepath:prepend(lazypath) +vim.g.mapleader = '' +vim.g.maplocalleader = '' +vim.g.loaded_netrwPlugin = true + require('lazy').setup('configs.packages', { - install = { colorscheme = { 'gruvbox' } }, - rtp = { disable_plugins = { 'netrw' } } + install = { colorscheme = { 'gruvbox' }, }, }) require('configs.options').setup() diff --git a/dot_config/nvim/lazy-lock.json b/dot_config/nvim/lazy-lock.json new file mode 100644 index 0000000..61e4fb7 --- /dev/null +++ b/dot_config/nvim/lazy-lock.json @@ -0,0 +1,44 @@ +{ + "Colorizer": { "branch": "master", "commit": "715c91303f0f7a59b21af39c9d168d975ca2c831" }, + "Comment.nvim": { "branch": "master", "commit": "ab00bcf5aa979c53f2f40dc2655c03e24f4ef50f" }, + "FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "59224771f91b86d1de12570b4070fe4ad7cd1eeb" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, + "ctrlsf.vim": { "branch": "master", "commit": "32236a8b376d9311dec9b5fe795ca99d32060b13" }, + "editorconfig-vim": { "branch": "master", "commit": "30ddc057f71287c3ac2beca876e7ae6d5abe26a0" }, + "fidget.nvim": { "branch": "main", "commit": "44585a0c0085765195e6961c15529ba6c5a2a13b" }, + "gitsigns.nvim": { "branch": "main", "commit": "d4f8c01280413919349f5df7daccd0c172143d7c" }, + "gruvbox": { "branch": "master", "commit": "2b5b1f777f0583ffb39086d6c16f39e6e37459c0" }, + "indent-blankline.nvim": { "branch": "master", "commit": "c4c203c3e8a595bc333abaf168fcb10c13ed5fb7" }, + "lazy.nvim": { "branch": "main", "commit": "b2dec14824383137440040da0d9d107f3a29c656" }, + "linediff.vim": { "branch": "main", "commit": "b4d3c3f03eed00caa741c2650e13db5b7b7ce0ef" }, + "lspkind.nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" }, + "lualine.nvim": { "branch": "master", "commit": "d8c392dd75778d6258da4e7c55522e94ac389732" }, + "neo-tree.nvim": { "branch": "v2.x", "commit": "3b41f0d17139bb156f1acd907608f63e0e307caf" }, + "neodev.nvim": { "branch": "main", "commit": "258b83f48405c6b530c09dd96950693664dc6bc0" }, + "nette.vim": { "branch": "master", "commit": "3f5c7f61d3552856ba95b0285d4acb485c1d61ea" }, + "nui.nvim": { "branch": "main", "commit": "257da38029d3859ed111804f9d4e95b0fa993a31" }, + "null-ls.nvim": { "branch": "main", "commit": "6830a1ed04f89e6d556cb6bcc200433173004307" }, + "nvim-cmp": { "branch": "main", "commit": "c49ad26e894e137e401b1d294948c46327877eaf" }, + "nvim-lspconfig": { "branch": "master", "commit": "e69978a39e4d3262b09ce6a316beff384f443e3b" }, + "nvim-navic": { "branch": "master", "commit": "7a2b823152fe4de65ee7925b0e32d26ed73bc57c" }, + "nvim-treesitter": { "branch": "master", "commit": "b1569394614804aaad4e994731161f253ff61bcc" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "d816761ec1ea4a605689bc5f4111088459cf74d4" }, + "nvim-web-devicons": { "branch": "master", "commit": "05e1072f63f6c194ac6e867b567e6b437d3d4622" }, + "nvim-yati": { "branch": "main", "commit": "b76ca0c8c4617b49c7572f055e7b9caed96f783f" }, + "playground": { "branch": "master", "commit": "8a887bcf66017bd775a0fb19c9d8b7a4d6759c48" }, + "plenary.nvim": { "branch": "master", "commit": "bb444796dc5746d969f0718913a31c8075741e36" }, + "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, + "schemastore.nvim": { "branch": "main", "commit": "eee175f655e6775e1750a81b89a7471f9dbe8b0e" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "fab3e2212e206f4f8b3bbaa656e129443c9b802e" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" }, + "telescope.nvim": { "branch": "master", "commit": "a606bd10c79ec5989c76c49cc6f736e88b63f0da" }, + "trouble.nvim": { "branch": "main", "commit": "83ec606e7065adf134d17f4af6bae510e3c491c1" }, + "vdebug": { "branch": "master", "commit": "247f2be7fe3108038276615cb9493b82fced0001" }, + "vim-matchup": { "branch": "master", "commit": "db5120dd9887c988de7cd973ddb951e465d413e5" }, + "vim-vsnip": { "branch": "master", "commit": "8dde8c0ef10bb1afdbb301e2bd7eb1c153dd558e" }, + "which-key.nvim": { "branch": "main", "commit": "b7e0b1f16c20bc1ea0515851bc5740d1c1f18444" }, + "zig.vim": { "branch": "master", "commit": "c8caa9ab97334ca5af2d69900108bb4af20933c5" } +} \ No newline at end of file diff --git a/dot_config/nvim/lua/configs/keys.lua b/dot_config/nvim/lua/configs/keys.lua index 36b46d5..fa943da 100644 --- a/dot_config/nvim/lua/configs/keys.lua +++ b/dot_config/nvim/lua/configs/keys.lua @@ -6,8 +6,9 @@ function M.setup() vim.keymap.set('n', '', '') --}}} - vim.keymap.set('n', 'li', 'LspInfo', { desc = 'Lsp info' }) - vim.keymap.set('n', 'll', 'LspLog', { desc = 'Lsp log' }) + vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to next diagnostic' }) + vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to prev diagnostic' }) + vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Diagnostic to loclist' }) end diff --git a/dot_config/nvim/lua/configs/packages/fterm.lua b/dot_config/nvim/lua/configs/packages/fterm.lua index 8679693..3f2f536 100644 --- a/dot_config/nvim/lua/configs/packages/fterm.lua +++ b/dot_config/nvim/lua/configs/packages/fterm.lua @@ -1,4 +1,14 @@ -local lazygit = function() +local M = { + 'numToStr/FTerm.nvim', + keys = { + { 'gg', 'Lazygit', desc = 'Lazygit' }, + { 'gh', 'GitHistory', desc = 'Git history' }, + }, + lazy = true, +} + +function M.config() + local fterm = require('FTerm') fterm.scratch({ -- ft = 'fterm_lazygit', -- You can also override the default filetype, if you want @@ -9,6 +19,22 @@ local lazygit = function() width = 0.9 } }) + + local git_history = function() + local file = vim.api.nvim_buf_get_name(0) + local cmd = 'git log -p --ext-diff ' .. file + fterm.scratch({ + -- ft = 'git_history', -- You can also override the default filetype, if you want + cmd = cmd, + dimensions = { + height = 0.9, + width = 0.9 + } + }) + end + + vim.keymap.set('n', 'Lazygit', function() lazygit:toggle() end, { desc = 'Toggle lazygit' }) + vim.keymap.set('n', 'GitHistory', git_history, { desc = 'Show git history' }) end local git_history = function() diff --git a/dot_config/nvim/lua/configs/packages/gitsigns.lua b/dot_config/nvim/lua/configs/packages/gitsigns.lua new file mode 100644 index 0000000..619c2dd --- /dev/null +++ b/dot_config/nvim/lua/configs/packages/gitsigns.lua @@ -0,0 +1,44 @@ +return { + 'lewis6991/gitsigns.nvim', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = { + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '' + end, { expr = true, desc = 'Git next hunk' }) + + map('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, { expr = true, desc = 'Git prev hunk' }) + + -- Actions + map({ 'n', 'v' }, 'hs', ':Gitsigns stage_hunk', { desc = 'Gitsigns stage hunk' }) + map({ 'n', 'v' }, 'hr', ':Gitsigns reset_hunk', { desc = 'Gitsigns reset hunk' }) + map('n', 'hS', gs.stage_buffer, { desc = 'Gitsigns stage buffer' }) + map('n', 'hu', gs.undo_stage_hunk, { desc = 'Gitsigns undo stage hunk' }) + map('n', 'hR', gs.reset_buffer, { desc = 'Gitsigns reset buffer' }) + map('n', 'hp', gs.preview_hunk, { desc = 'Gitsigns preview hunk' }) + map('n', 'hb', function() gs.blame_line { full = true } end, { desc = 'Gitsigns blame line' }) + map('n', 'tb', gs.toggle_current_line_blame, { desc = 'Gitsigns toggle blame line' }) + map('n', 'hd', gs.diffthis, { desc = 'Gitsigns diff this' }) + map('n', 'hD', function() gs.diffthis('~') end, { desc = 'Gitsigns diff this ~' }) + map('n', 'td', gs.toggle_deleted, { desc = 'Gitsigns toggle deleted' }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = 'Inner git hunk' }) + end + } +} diff --git a/dot_config/nvim/lua/configs/packages/lsp.lua b/dot_config/nvim/lua/configs/packages/lsp.lua index 273d033..2fd0b96 100644 --- a/dot_config/nvim/lua/configs/packages/lsp.lua +++ b/dot_config/nvim/lua/configs/packages/lsp.lua @@ -5,7 +5,12 @@ local M = { 'b0o/schemastore.nvim', 'SmiteshP/nvim-navic', { 'j-hui/fidget.nvim', config = true }, - } + }, + keys = { + {'li', 'LspInfo', desc = 'Lsp info' }, + {'ll', 'LspLog', desc = 'Lsp log' }, + }, + lazy = false } function M.config() @@ -37,6 +42,9 @@ function M.config() -- Mappings. local opts = { noremap = true, silent = true, buffer = args.buf } + local mkOpts = function(desc) + return { noremap = true, silent = true, buffer = args.buf, desc = desc } + end -- use LSP default tagfunc -- if client.server_capabilities.definitionProvider then @@ -44,30 +52,27 @@ function M.config() -- end if client.server_capabilities.declarationProvider then - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, mkOpts('LSP declaration')) end if client.supports_method('textDocument/hover') and client.name ~= 'null-ls' then - vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, mkOpts('LSP hover')) end if client.server_capabilities.implementationProvider then - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, mkOpts('LSP implementation')) end if client.server_capabilities.signatureHelpProvider then - vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) - vim.keymap.set('i', '', vim.lsp.buf.signature_help, opts) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, mkOpts('LSP signature help')) + vim.keymap.set('i', '', vim.lsp.buf.signature_help, mkOpts('LSP signature help')) end - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, opts) - vim.keymap.set('v', 'ca', vim.lsp.buf.code_action, opts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) - vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) - vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, mkOpts('LSP type definition')) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, mkOpts('LSP rename')) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) + vim.keymap.set('v', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, mkOpts('LSP references')) vim.keymap.set('n', 'F', function() vim.lsp.buf.format({ async = true, filter = formatting_filter, }) end, opts) if (formatting_filter(client)) then diff --git a/dot_config/nvim/lua/configs/packages/misc.lua b/dot_config/nvim/lua/configs/packages/misc.lua index 5de265f..9e13f37 100644 --- a/dot_config/nvim/lua/configs/packages/misc.lua +++ b/dot_config/nvim/lua/configs/packages/misc.lua @@ -1,28 +1,13 @@ return { - { 'chrisbra/Colorizer', cmd = 'ColorToggle'}, + { 'chrisbra/Colorizer', cmd = 'ColorToggle' }, - { - 'lewis6991/gitsigns.nvim', - dependencies = { 'nvim-lua/plenary.nvim' }, - config = true, - }, - - { 'AndrewRadev/linediff.vim', - cmd = {'LinediffAdd', 'Linediff'}, - keys = { - { '', 'Linediff' } - } - }, + { 'AndrewRadev/linediff.vim', cmd = 'Linediff' }, { 'lukas-reineke/indent-blankline.nvim', config = true }, { - 'b3nj5m1n/kommentary', - config = function() - local kommentary = require('kommentary.config') - kommentary.configure_language('php', { prefer_single_line_comments = true, }) - kommentary.configure_language('lua', { prefer_single_line_comments = true, }) - end + 'numToStr/Comment.nvim', + config = true, }, { @@ -42,7 +27,10 @@ return { { 'vlada-dudr/vdebug', lazy = true, - keys = {''}, + keys = { + { '', desc = 'Start Vdebug' }, + { '', desc = 'Vdebug breakpoint' }, + }, }, { 'dyng/ctrlsf.vim', cmd = 'CtrlSF' }, @@ -58,7 +46,7 @@ return { dependencies = { 'kyazdani42/nvim-web-devicons' }, lazy = true, cmd = { 'Trouble', 'TroubleToggle' }, - keys = { {'t', ':TroubleToggle' } }, + keys = { { 't', ':TroubleToggle', desc = 'Trouble' } }, config = { mode = 'document_diagnostics' } diff --git a/dot_config/nvim/lua/configs/packages/neotree.lua b/dot_config/nvim/lua/configs/packages/neotree.lua index 44e859e..2e71656 100644 --- a/dot_config/nvim/lua/configs/packages/neotree.lua +++ b/dot_config/nvim/lua/configs/packages/neotree.lua @@ -3,9 +3,9 @@ local M = { branch = 'v2.x', lazy = false, keys = { - { '', [[Neotree toggle]], { desc = 'Toggle Neotree' } }, - { '', [[Neotree reveal]], { desc = 'Show current file in Neotree' } }, - { 'G', [[Neotree git_status]], { desc = 'Neotree git status' } } + { 'ft', [[Neotree toggle]], desc = 'Toggle Neotree' }, + { 'fr', [[Neotree reveal]], desc = 'Reveal current file in Neotree' }, + { 'gt', [[Neotree git_status]], desc = 'Neotree git status (Git Tree)' } }, cmd = 'Neotree', dependencies = { diff --git a/dot_config/nvim/lua/configs/packages/telescope.lua b/dot_config/nvim/lua/configs/packages/telescope.lua index a7b3bd1..e844704 100644 --- a/dot_config/nvim/lua/configs/packages/telescope.lua +++ b/dot_config/nvim/lua/configs/packages/telescope.lua @@ -10,9 +10,9 @@ local M = { } }, keys = { - {'b', [[Telescope buffers]], { noremap = true, silent = true }}, - {'f', [[Telescope fd]], { noremap = true, silent = true }}, - {'T', [[Telescope]], { noremap = true, silent = true }}, + {'b', [[Telescope buffers]], desc = 'Buffers'}, + {'ff', [[Telescope fd]], desc = 'Search file'}, + {'T', [[Telescope]], desc = 'Telescope'}, } } diff --git a/dot_config/nvim/lua/configs/packages/which-key.lua b/dot_config/nvim/lua/configs/packages/which-key.lua new file mode 100644 index 0000000..d075703 --- /dev/null +++ b/dot_config/nvim/lua/configs/packages/which-key.lua @@ -0,0 +1,11 @@ +return { + 'folke/which-key.nvim', + config = function() + local wk = require('which-key') + wk.register({ + ['f'] = { name = "+file"}, + ['g'] = { name = "+git"}, + ['l'] = { name = "+LSP"}, + }) + end, +}