diff --git a/hmModules/apps/neovim/app.nix b/hmModules/apps/neovim/app.nix index 83b1bb4..d29a74c 100644 --- a/hmModules/apps/neovim/app.nix +++ b/hmModules/apps/neovim/app.nix @@ -19,6 +19,7 @@ lualine.enable = lib.mkOption { default = true; }; luasnip.enable = lib.mkOption { default = false; }; nvimcmp.enable = lib.mkOption { default = true; }; + opencode.enable = lib.mkOption { default = true; }; telescope = { enable = lib.mkOption { default = true; }; fzf.enable = lib.mkOption { default = true; }; @@ -74,16 +75,67 @@ mode = "n"; action = mkRaw "vim.diagnostic.open_float"; } - # -- Easy Split Navigation - # -- nnoremap - # -- nnoremap - # -- nnoremap - # -- nnoremap - # - # -- Easy copy and pasting to external programs - # -- map "+yy - # -- map "+P - ]; + { + key = ""; + mode = "n"; + action = ""; + } + { + key = ""; + mode = "n"; + action = ""; + } + { + key = ""; + mode = "n"; + action = ""; + } + { + key = ""; + mode = "n"; + action = ""; + } + { + key = ""; + mode = "x"; + action = "\"+y"; + options.remap = true; + } + { + key = ""; + mode = "n"; + action = "\"+yy"; + options.remap = true; + } + { + key = ""; + mode = "n"; + action = "\"+P"; + options.remap = true; + } + ] ++ lib.lists.optionals config.neovim.plugins.opencode.enable (let + ocFunc = cmd: let raw = "function() require('opencode').${cmd} end"; + in (config.lib.nixvim.mkRaw raw); + in [ + { + key = "ot"; + action = ocFunc "toggle()"; + mode = [ "n" "x" ]; + options.desc = "Toggle opencode"; + } + { + key = "oa"; + action = ocFunc "ask('', { submit = true })"; + mode = [ "n" "x" ]; + options.desc = "Ask opencode..."; + } + { + key = "or"; + action = ocFunc "operator('@this ')"; + mode = [ "n" "x" ]; + options.desc = "Add range to opencode"; + } + ]); }; programs.nixvim.colorschemes = with config.neovim.themes; { @@ -126,6 +178,16 @@ }; }; + opencode = { + enable = opencode.enable; + settings = { + input.enabled = true; + lsp.enabled = true; + events.permissions.enabled = false; + }; + }; + snacks.enable = opencode.enable; + telescope = { enable = telescope.enable; keymaps = {