-- File: lua/custom/plugins/chatgpt.lua return { 'jackMort/ChatGPT.nvim', event = 'VeryLazy', config = function() vim.keymap.set('n', 'lc', vim.cmd.ChatGPT, { desc = '[C]hatGPT' }) vim.keymap.set('n', 'lca', vim.cmd.ChatGPTActAs, { desc = 'ChatGPT [A]ct As' }) vim.keymap.set('n', 'lcc', vim.cmd.ChatGPTCompleteCode, { desc = 'ChatGPT [C]omplete Code' }) vim.keymap.set('n', 'lce', vim.cmd.ChatGPTEditWithInstructions, { desc = 'ChatGPT [E]dit With Instructions' }) vim.keymap.set('n', 'lcd', 'ChatGPTRun docstring', { desc = 'ChatGPT [D]ocstring' }) vim.keymap.set('n', 'lco', 'ChatGPTRun optimize_code', { desc = 'ChatGPT [o]ptimize code' }) vim.keymap.set('n', 'lce', 'ChatGPTRun explain_code', { desc = 'ChatGPT [e]xplain code' }) vim.keymap.set('n', 'lcs', 'ChatGPTRun summarize', { desc = 'ChatGPT [s]ummarize' }) vim.keymap.set('n', 'lct', 'ChatGPTRun translate', { desc = 'ChatGPT [t]ranslate' }) require('chatgpt').setup { yank_register = '+', edit_with_instructions = { diff = false, keymaps = { close = '', accept = '', toggle_diff = '', toggle_settings = '', toggle_help = '', cycle_windows = '', use_output_as_input = '', }, }, chat = { welcome_message = 'Welcome Human!', loading_text = 'Loading, please wait ...', question_sign = '', -- 🙂 answer_sign = 'ﮧ', -- 🤖 border_left_sign = '', border_right_sign = '', max_line_length = 120, sessions_window = { active_sign = '  ', inactive_sign = '  ', current_line_sign = '', border = { style = 'rounded', text = { top = ' Sessions ', }, }, win_options = { winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, }, keymaps = { close = '', yank_last = '', yank_last_code = '', scroll_up = '', scroll_down = '', new_session = '', cycle_windows = '', cycle_modes = '', next_message = '', prev_message = '', select_session = '', rename_session = 'r', delete_session = 'd', draft_message = '', edit_message = 'e', delete_message = 'd', toggle_settings = '', toggle_sessions = '', toggle_help = '', toggle_message_role = '', toggle_system_role_open = '', stop_generating = '', }, }, popup_layout = { default = 'center', center = { width = '80%', height = '80%', }, right = { width = '30%', width_settings_open = '50%', }, }, popup_window = { border = { highlight = 'FloatBorder', style = 'rounded', text = { top = ' ChatGPT ', }, }, win_options = { wrap = true, linebreak = true, foldcolumn = '1', winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, buf_options = { filetype = 'markdown', }, }, system_window = { border = { highlight = 'FloatBorder', style = 'rounded', text = { top = ' SYSTEM ', }, }, win_options = { wrap = true, linebreak = true, foldcolumn = '2', winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, }, popup_input = { prompt = '  ', border = { highlight = 'FloatBorder', style = 'rounded', text = { top_align = 'center', top = ' Prompt ', }, }, win_options = { winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, submit = '', submit_n = '', max_visible_lines = 20, }, settings_window = { setting_sign = '  ', border = { style = 'rounded', text = { top = ' Settings ', }, }, win_options = { winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, }, help_window = { setting_sign = '  ', border = { style = 'rounded', text = { top = ' Help ', }, }, win_options = { winhighlight = 'Normal:Normal,FloatBorder:FloatBorder', }, }, openai_params = { model = 'gpt-4-0125-preview', frequency_penalty = 0, presence_penalty = 0, max_tokens = 1000, temperature = 0, top_p = 1, n = 1, }, openai_edit_params = { model = 'gpt-4-0125-preview', frequency_penalty = 0, presence_penalty = 0, temperature = 0, top_p = 1, n = 1, }, use_openai_functions_for_edits = false, actions_paths = {}, show_quickfixes_cmd = 'Trouble quickfix', predefined_chat_gpt_prompts = 'https://raw.githubusercontent.com/f/awesome-chatgpt-prompts/main/prompts.csv', highlights = { help_key = '@symbol', help_description = '@comment', }, } end, dependencies = { 'MunifTanjim/nui.nvim', 'nvim-lua/plenary.nvim', 'folke/trouble.nvim', 'nvim-telescope/telescope.nvim', }, }