diff --git a/.config/nvim/lua/configs/codecompanion.lua b/.config/nvim/lua/configs/codecompanion.lua new file mode 100644 index 0000000..1516211 --- /dev/null +++ b/.config/nvim/lua/configs/codecompanion.lua @@ -0,0 +1,34 @@ +local model = "Qwen3-Coder-30B-Instruct-IQ4_XS" + +return { + adapters = { + http = { + llama_cpp = function() + return require("codecompanion.adapters").extend("openai_compatible", { + env = { + url = "http://localhost:11343", + chat_url = "/v1/chat/completions", + models_endpoint = "/v1/models", + api_key = "dummy", + }, + schema = { + model = { + default = model, + }, + }, + }) + end, + }, + }, + interactions = { + chat = { + adapter = "llama_cpp", + }, + inline = { + adapter = "llama_cpp", + }, + cmd = { + adapter = "llama_cpp", + }, + }, +} diff --git a/.config/nvim/lua/configs/render-markdown.lua b/.config/nvim/lua/configs/render-markdown.lua index 8ee58dd..97c9984 100644 --- a/.config/nvim/lua/configs/render-markdown.lua +++ b/.config/nvim/lua/configs/render-markdown.lua @@ -24,7 +24,7 @@ return { -- Only intended to be used for plugin development / debugging. log_runtime = false, -- Filetypes this plugin will run on. - file_types = { "markdown" }, + file_types = { "markdown", "gitcommit", "codecompanion" }, -- Takes buffer as input, if it returns true this plugin will not attach to the buffer ignore = function() return false diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua index 286ee27..cb0798f 100644 --- a/.config/nvim/lua/mappings.lua +++ b/.config/nvim/lua/mappings.lua @@ -19,7 +19,10 @@ map("n", "fs", "Telescope grep_string", { desc = "Find selected map("n", "fk", "Telescope keymaps", { desc = "Find keymaps" }) map("n", "fd", "Telescope diagnostics", { desc = "Diagnostics" }) -map({ "n", "v" }, "ge", "Gen", { desc = "Gen.nvim" }) +map({ "n", "v" }, "ge", "CodeCompanion", { desc = "CodeCompanion" }) +map({ "n", "v" }, "ga", "CodeCompanionActions", { desc = "CodeCompanion actions" }) +map("n", "gc", "CodeCompanionChat Toggle", { desc = "CodeCompanion chat" }) +map("v", "gc", "CodeCompanionChat Add", { desc = "Send selection to CodeCompanion chat" }) -- P paste with -- global marks diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua index fb870d3..27a176d 100644 --- a/.config/nvim/lua/plugins/init.lua +++ b/.config/nvim/lua/plugins/init.lua @@ -12,66 +12,21 @@ return { end, }, - -- Custom Parameters (with defaults) { - "David-Kunz/gen.nvim", - cmd = "Gen", - opts = { - -- model = "llama3.2:3b", -- The default model to use. - model = "qwen3-coder:30b", - quit_map = "q", -- set keymap to close the response window - retry_map = "", -- set keymap to re-send the current prompt - accept_map = "", -- set keymap to replace the previous selection with the last result - -- host = "localhost", -- The host running the Ollama service. - host = "192.168.0.204", -- The host running the Ollama service. - port = "11434", -- The port on which the Ollama service is listening. - display_mode = "vertical-split", -- The display mode. Can be "float" or "split" or "horizontal-split" or "vertical-split". - show_prompt = true, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or "full". - show_model = true, -- Displays which model you are using at the beginning of your chat session. - no_auto_close = false, -- Never closes the window automatically. - file = false, -- Write the payload to a temporary file to keep the command short. - hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10 - -- Function to initialize Ollama - command = function(options) - local body = { model = options.model, stream = true } - return "curl --silent --no-buffer -X POST http://" - .. options.host - .. ":" - .. options.port - .. "/api/chat -d $body" - end, - -- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped). - -- This can also be a command string. - -- The executed command must return a JSON object with { response, context } - -- (context property is optional). - -- list_models = '', -- Retrieves a list of model names - result_filetype = "markdown", -- Configure filetype of the result buffer - debug = false, -- Prints errors and the command which is run. + "olimorris/codecompanion.nvim", + version = "^19.0.0", + lazy = false, + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", }, - config = function(_, opts) - require("gen").setup(opts) - - local prompts = require("gen").prompts - - prompts["Markdown_links"] = { - prompt = "Make markdown links wherever you find link in the following text, and generate the namas accordingly:\n$text", - replace = true, - } - - prompts["Optimize code"] = { - prompt = "Check if code can be optimized for speed and readability:\n$text", - replace = true, - } - - prompts["Genetrate types "] = { - prompt = "Check if types are correct in this code, fix and optimize if something is needed:\n$text", - replace = true, - } + opts = function() + return require "configs.codecompanion" end, }, { "MeanderingProgrammer/render-markdown.nvim", - ft = { "markdown", "gitcommit" }, + ft = { "markdown", "gitcommit", "codecompanion" }, opts = function() return require "configs.render-markdown" end,