diff --git a/profiles/base/home-manager/default.nix b/profiles/base/home-manager/default.nix index e45e843..687cdfb 100644 --- a/profiles/base/home-manager/default.nix +++ b/profiles/base/home-manager/default.nix @@ -20,4 +20,9 @@ enable = true; nix-direnv.enable = true; }; + + home.shellAliases = { + v = "nvim"; + lg = "lazygit"; + }; } diff --git a/profiles/base/home-manager/neovim/default.nix b/profiles/base/home-manager/neovim/default.nix index eedf497..013b56d 100644 --- a/profiles/base/home-manager/neovim/default.nix +++ b/profiles/base/home-manager/neovim/default.nix @@ -4,14 +4,13 @@ ./mappings.nix ./options.nix ./plugins/conform.nix + ./plugins/grug-far.nix ./plugins/lazygit.nix ./plugins/lsp.nix ./plugins/mini.nix ./plugins/treesitter.nix ]; - home.shellAliases.v = "nvim"; - programs.nixvim = { enable = true; defaultEditor = true; diff --git a/profiles/base/home-manager/neovim/mappings.nix b/profiles/base/home-manager/neovim/mappings.nix index 7347032..b525ec7 100644 --- a/profiles/base/home-manager/neovim/mappings.nix +++ b/profiles/base/home-manager/neovim/mappings.nix @@ -13,6 +13,12 @@ action = ":lua require('mini.files').open(vim.api.nvim_buf_get_name(0))"; options.desc = "File directory"; } + { + mode = "n"; + key = "er"; + action = ":lua require('grug-far').open()"; + options.desc = "Search and replace"; + } # f - find { mode = "n"; @@ -62,6 +68,12 @@ action = ":Pick files"; options.desc = "Search files"; } + { + mode = "n"; + key = "fg"; + action = ":Pick grep_live"; + options.desc = "Grep"; + } { mode = "n"; key = "fr"; @@ -88,19 +100,61 @@ options.desc = "Lazygit"; } # l - lsp/formatter + { + mode = "n"; + key = "la"; + action = ":lua vim.lsp.buf.code_action()"; + options.desc = "Actions"; + } + { + mode = "n"; + key = "ld"; + action = ":lua vim.diagnostic.open_float()"; + options.desc = "Diagnostics popup"; + } { mode = "n"; key = "lf"; action = ":lua require('conform').format({ lsp_fallback = true })"; options.desc = "Format"; } - # next { mode = "n"; - key = "/"; - action = ":Pick grep_live"; - options.desc = "Grep"; + key = "li"; + action = ":lua vim.lsp.buf.hover()"; + options.desc = "Information"; } + { + mode = "n"; + key = "lj"; + action = ":lua vim.diagnostic.goto_next()"; + options.desc = "Next diagnostic"; + } + { + mode = "n"; + key = "lk"; + action = ":lua vim.diagnostic.goto_prev()"; + options.desc = "Prev diagnostic"; + } + { + mode = "n"; + key = "lr"; + action = ":lua vim.lsp.buf.rename()"; + options.desc = "Rename"; + } + { + mode = "n"; + key = "lR"; + action = ":lua vim.lsp.buf.references()"; + options.desc = "References"; + } + { + mode = "n"; + key = "ls"; + action = ":lua vim.lsp.buf.definition()"; + options.desc = "Source definition"; + } + # other { mode = "n"; key = "sj"; diff --git a/profiles/base/home-manager/neovim/options.nix b/profiles/base/home-manager/neovim/options.nix index ad96908..58c1b2c 100644 --- a/profiles/base/home-manager/neovim/options.nix +++ b/profiles/base/home-manager/neovim/options.nix @@ -1,18 +1,15 @@ { programs.nixvim = { - globalOpts = { - expandtab = true; - shiftwidth = 2; - relativenumber = true; - mouse = ""; - # foldmethod = "expr"; - # foldexpr = "nvim_treesitter#foldexpr()"; - }; globals = { - clipboard = "osc52"; + # clipboard = "osc52"; }; opts = { + clipboard = "unnamedplus"; + expandtab = true; ignorecase = true; + mouse = ""; + relativenumber = true; + shiftwidth = 2; smartcase = true; }; }; diff --git a/profiles/base/home-manager/neovim/plugins/grug-far.nix b/profiles/base/home-manager/neovim/plugins/grug-far.nix new file mode 100644 index 0000000..7859ca0 --- /dev/null +++ b/profiles/base/home-manager/neovim/plugins/grug-far.nix @@ -0,0 +1,7 @@ +{ + programs.nixvim.plugins = { + grug-far = { + enable = true; + }; + }; +} diff --git a/profiles/base/home-manager/neovim/plugins/mini.nix b/profiles/base/home-manager/neovim/plugins/mini.nix index 47150bd..25f9b57 100644 --- a/profiles/base/home-manager/neovim/plugins/mini.nix +++ b/profiles/base/home-manager/neovim/plugins/mini.nix @@ -2,18 +2,13 @@ programs.nixvim.plugins.mini = { enable = true; modules = { - jump = {}; - files = {}; - jump2d = { - settings = { - spotter.__raw = "require('mini.jump2d').gen_spotter.pattern('[^%s%p]+')"; - labels = "asdfghjkl"; - view = { - dim = true; - n_steps_ahead = 2; - }; + ai = { + custom_textobjects = { + B.__raw = "require('mini.extra').gen_ai_spec.buffer()"; + F.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@function.outer', i = '@function.inner' })"; }; }; + align = {}; basics = { options = { basic = true; @@ -26,49 +21,15 @@ basic = true; }; }; - icons = {}; - statusline = {}; - extra = {}; - ai = { - custom_textobjects = { - B.__raw = "require('mini.extra').gen_ai_spec.buffer()"; - F.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@function.outer', i = '@function.inner' })"; - }; - }; - align = {}; - diff = {}; - git = {}; bracketed = {}; - comment = {}; - completion = { - lsp_completion = { - source_func = "omnifunc"; - }; - }; - indentscope = {}; - move = {}; - starter = {}; - pairs = {}; - trailspace = {}; - visits = {}; - pick = {}; - surround = {}; clue = { clues.__raw = '' { - { mode = 'n', keys = 'b', desc = '+Buffer' }, - { mode = 'n', keys = 'e', desc = '+Explore' }, + { mode = 'n', keys = 'e', desc = '+Explore/+Edit' }, { mode = 'n', keys = 'f', desc = '+Find' }, { mode = 'n', keys = 'g', desc = '+Git' }, { mode = 'n', keys = 'l', desc = '+LSP' }, - { mode = 'n', keys = 'L', desc = '+Lua/Log' }, - { mode = 'n', keys = 'o', desc = '+Other' }, - { mode = 'n', keys = 'r', desc = '+R' }, - { mode = 'n', keys = 't', desc = '+Terminal/Minitest' }, - { mode = 'n', keys = 'T', desc = '+Test' }, - { mode = 'n', keys = 'v', desc = '+Visits' }, { mode = 'x', keys = 'l', desc = '+LSP' }, - { mode = 'x', keys = 'r', desc = '+R' }, require("mini.clue").gen_clues.builtin_completion(), require("mini.clue").gen_clues.g(), require("mini.clue").gen_clues.marks(), @@ -161,6 +122,37 @@ } ]; }; + comment = {}; + completion = { + lsp_completion = { + source_func = "omnifunc"; + }; + }; + diff = {}; + extra = {}; + files = {}; + git = {}; + icons = {}; + indentscope = {}; + jump = {}; + jump2d = { + settings = { + spotter.__raw = "require('mini.jump2d').gen_spotter.pattern('[^%s%p]+')"; + labels = "asdfghjkl"; + view = { + dim = true; + n_steps_ahead = 2; + }; + }; + }; + move = {}; + pairs = {}; + pick = {}; + starter = {}; + statusline = {}; + surround = {}; + trailspace = {}; + visits = {}; }; }; }