From da0c4e9afe7cd5c537d4ad900f0de514e02b7039 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Sat, 13 Jun 2026 17:53:45 +0200 Subject: [PATCH] Modules/Neovim: Configure opencode-nvim --- home/homemodules/neovim/default.nix | 34 +++++----- home/homemodules/neovim/mappings.nix | 98 +++++++++++++++------------- 2 files changed, 70 insertions(+), 62 deletions(-) diff --git a/home/homemodules/neovim/default.nix b/home/homemodules/neovim/default.nix index 828bb3a8..dc0a4f8a 100644 --- a/home/homemodules/neovim/default.nix +++ b/home/homemodules/neovim/default.nix @@ -1461,21 +1461,23 @@ in { }; }; - # opencode = { - # name = "opencode"; - # pkg = pkgs.vimPlugins.opencode-nvim; - # lazy = false; - # config = '' - # function() - # ---@type opencode.Opts - # vim.g.opencode_opts = { - # -- Your configuration, if any; goto definition on the type or field for details - # } - # - # vim.o.autoread = true -- Required for `vim.g.opencode_opts.events.reload` - # end - # ''; - # }; + opencode = { + name = "opencode"; + pkg = pkgs.vimPlugins.opencode-nvim; + lazy = false; + config = '' + function() + vim.g.opencode_opts = { + server = { + url = "http://localhost:12345", + start = false, + }, + } + + vim.o.autoread = true -- Required for `vim.g.opencode_opts.events.reload` + end + ''; + }; # obsidian = rec { # name = "obsidian"; @@ -2307,7 +2309,7 @@ in { noice # Modern UI overhaul, e.g. floating cmdline # obsidian # Integration with Obsidian.md - # opencode # TODO: Doesn't work, can't find "opencode --port" process + opencode # TODO: Doesn't work, can't find "opencode --port" process # overseer # Run tasks from within neovim (e.g. cargo) # TODO: persisted # Session management diff --git a/home/homemodules/neovim/mappings.nix b/home/homemodules/neovim/mappings.nix index 32a76f65..3767e716 100644 --- a/home/homemodules/neovim/mappings.nix +++ b/home/homemodules/neovim/mappings.nix @@ -415,51 +415,57 @@ _: let } ]; - # leader-opencode = [ - # { - # mode = "n"; - # key = "o"; - # action = "+opencode"; - # } - # { - # mode = ["n" "v"]; - # key = "oa"; - # action.__raw = ''function() require("opencode").ask("@this: ") end''; - # options.desc = "Ask"; - # } - # { - # mode = ["n" "v"]; - # key = "os"; - # action.__raw = ''function() require("opencode").select() end''; - # options.desc = "Select"; - # } - # { - # mode = "n"; - # key = "ol"; - # action.__raw = ''function() return require("opencode").operator("@this ") .. "_" end''; - # options.desc = "Append Line"; - # options.expr = true; - # } - # { - # mode = ["n" "v"]; - # key = "or"; - # action.__raw = ''function() return require("opencode").operator("@this ") end''; - # options.desc = "Append Range"; - # options.expr = true; - # } - # { - # mode = "n"; - # key = ""; - # action.__raw = ''function() require("opencode").command("session.half.page.up") end''; - # options.desc = "Scroll OpenCode Up"; - # } - # { - # mode = "n"; - # key = ""; - # action.__raw = ''function() require("opencode").command("session.half.page.down") end''; - # options.desc = "Scroll OpenCode Down"; - # } - # ]; + leader-opencode = [ + { + mode = ["n" "v"]; + key = "o"; + action = "+opencode"; + } + { + mode = ["n" "v"]; + key = "oo"; + action.__raw = ''function() require("opencode").ask("@this: ") end''; + options.desc = "Ask about @this"; + } + { + mode = ["n" "v"]; + key = "od"; + action.__raw = ''function() require("opencode").prompt("Explain @diagnostics") end''; + options.desc = "Explain @diagnostics"; + } + { + mode = ["n" "v"]; + key = "oe"; + action.__raw = ''function() require("opencode").prompt("Explain @this and its context") end''; + options.desc = "Explain @this"; + } + { + mode = ["n" "v"]; + key = "or"; + action.__raw = ''function() require("opencode").prompt("Review @this for correctness and readability") end''; + options.desc = "Review @this"; + } + { + mode = ["n" "v"]; + key = "os"; + action.__raw = ''function() require("opencode").select() end''; + options.desc = "Select Action"; + } + { + mode = "n"; + key = "oa"; + action.__raw = ''function() return require("opencode").operator("@this ") .. "_" end''; + options.desc = "Append Line to Prompt"; + options.expr = true; + } + { + mode = "v"; + key = "oa"; + action.__raw = ''function() return require("opencode").operator("@this ") end''; + options.desc = "Append Range to Prompt"; + options.expr = true; + } + ]; leader-file = [ { @@ -1051,7 +1057,7 @@ in no-leader leader - # leader-opencode + leader-opencode leader-file leader-help leader-quit