dotfiles/.config/nvim/lua/plugins/extras/coding/ai/gen.lua
2024-04-04 08:42:38 +02:00

63 lines
2.5 KiB
Lua

return {
{
"jellydn/gen.nvim",
opts = {
model = "codellama",
host = "localhost",
port = "11434",
display_mode = "split",
show_prompt = true,
show_model = true,
no_auto_close = false,
init = function(options)
pcall(io.popen, "ollama serve > /dev/null 2>&1 &")
end,
command = function(options)
local body = { model = options.model, stream = true }
return "curl --silent --no-buffer -X POST http://"
.. options.host
.. ":"
.. options.port
.. "/api/generate -d $body"
end,
},
config = function(_, opts)
local gen = require("gen")
gen.setup(opts)
gen.prompts["Elaborate_Text"] = {
prompt = "Elaborate the following text:\n$text",
}
gen.prompts["Fix_Code"] = {
prompt = "Fix the following code. Only output the result in format ```$filetype\n...\n```:\n```$filetype\n$text\n```",
extract = "```$filetype\n(.-)```",
}
end,
keys = {
{ "<leader>ii", "<cmd>Gen<cr>", mode = { "n", "v" }, desc = "IA (Gen)" },
{ "<leader>ig", "<cmd>Gen Generate<cr>", mode = { "n" }, desc = "Generate" },
{ "<leader>ic", "<cmd>Gen Chat<cr>", mode = { "n" }, desc = "Chat" },
{ "<leader>is", "<cmd>Gen Summarize<cr>", mode = { "n", "v" }, desc = "Summarize" },
{ "<leader>ia", "<cmd>Gen Ask<cr>", mode = { "v" }, desc = "Ask" },
{ "<leader>iH", "<cmd>Gen Change<cr>", mode = { "v" }, desc = "Change" },
{ "<leader>iG", "<cmd>Gen Enhance_Grammar_Spelling<cr>", mode = { "v" }, desc = "Enhance Grammar Spelling" },
{ "<leader>iw", "<cmd>Gen Enhance_Wording<cr>", mode = { "v" }, desc = "Enhance Wording" },
{ "<leader>iC", "<cmd>Gen Make_Concise<cr>", mode = { "v" }, desc = "Make Concise" },
{ "<leader>il", "<cmd>Gen Make_List<cr>", mode = { "v" }, desc = "Make List" },
{ "<leader>it", "<cmd>Gen Make_Table<cr>", mode = { "v" }, desc = "Make Table" },
{ "<leader>ir", "<cmd>Gen Review_Code<cr>", mode = { "v" }, desc = "Review Code" },
{ "<leader>ie", "<cmd>Gen Enhance_Code<cr>", mode = { "v" }, desc = "Enhance Code" },
{ "<leader>ih", "<cmd>Gen Change_Code<cr>", mode = { "v" }, desc = "Change Code" },
{ "<leader>if", "<cmd>Gen Fix_Code<cr>", mode = { "v" }, desc = "Fix Code" },
{ "<leader>iE", "<cmd>Gen Elaborate_Text<cr>", mode = { "v" }, desc = "Elaborate Text" },
},
},
{
"folke/which-key.nvim",
opts = {
defaults = {
["<leader>i"] = { name = "󱚦 IA (Gen)" },
},
},
},
}