diff --git a/lua/plugins/gen-ollama.lua b/lua/plugins/gen-ollama.lua index 14b18bc..fd6170f 100644 --- a/lua/plugins/gen-ollama.lua +++ b/lua/plugins/gen-ollama.lua @@ -13,25 +13,80 @@ return { end, }) end, - opt = { show_model = true }, + config = function(_, opts) + local g = require("gen") + g.setup(opts) + -- https://github.com/David-Kunz/gen.nvim/tree/main#custom-prompts + -- prompt: (string | function) Prompt either as a string or a function which should return a string. The result can use the following placeholders: + -- $text: Visually selected text + -- $filetype: Filetype of the buffer (e.g. javascript) + -- $input: Additional user input + -- $register: Value of the unnamed register (yanked text) + -- replace: true if the selected text shall be replaced with the generated output + -- extract: Regular expression used to extract the generated result + -- model: The model to use, e.g. zephyr, default: mistral + g.prompts = { + -- https://github.com/David-Kunz/gen.nvim/blob/main/lua/gen/prompts.lua + Prompt_Code_Completion = { + prompt = "Write code that meets these requirements: $input\nOnly output the result in format ```$filetype\n...\n```", + replace = true, + extract = "```$filetype\n(.-)```", + }, + Replace_Code_Completion = { + prompt = "Rewrite the following code, follow any comment instructions.\nOnly output the result in format ```$filetype\n...\n```:\n```$filetype\n$text\n```", + replace = true, + extract = "```$filetype\n(.-)```", + }, + Prompt_And_Answer_Float = { prompt = "$input" }, + Prompt_And_Answer_Inline = { prompt = "$input", replace = true }, + Summarize_Selection_Float = { prompt = "Summarize the following text:\n$text" }, + Ask_Selection_Float = { + prompt = "Answer these requirements given the following text: $input\n\nTEXT:\n```\n$text\n```", + }, + } + end, keys = { - { - "xx", - "Gen Generate", - desc = "Input and generate", - mode = { "n", "i", "v", "x" }, - }, - { - "xx", - "Gen Enhance_Code", - desc = "Enhance selected code", - mode = { "v", "x" }, - }, { "xm", "Gen", desc = "Show Menu", - mode = { "n", "i", "v", "x" }, + mode = { "n", "v", "x" }, + }, + { + "xx", + "Gen Prompt_Code_Completion", + desc = "Input and generate", + mode = { "n" }, + }, + { + "xx", + "'<,'>Gen Replace_Code_Completion", + desc = "Replace selected code", + mode = { "v", "x" }, + }, + { + "xc", + "Gen Prompt_And_Answer_Float", + desc = "Prompt and answer in float window", + mode = { "n", "v", "x" }, + }, + { + "xcc", + "Gen Prompt_And_Answer_Inline", + desc = "Prompt and answer inline at cursor", + mode = { "n", "v", "x" }, + }, + { + "xs", + "'<,'>Gen Summarize_Selection_Float", + desc = "Summarize selection in float window", + mode = { "v", "x" }, + }, + { + "xa", + "'<,'>Gen Ask_Selection_Float", + desc = "Ask question about selection in float window", + mode = { "v", "x" }, }, }, }