Skip to content

Commit

Permalink
Merge branch 'dev' of github.com:huynle/ogpt.nvim into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
huynle committed Nov 21, 2023
2 parents 8a10df6 + f5b1374 commit 8533dc6
Show file tree
Hide file tree
Showing 9 changed files with 556 additions and 304 deletions.
3 changes: 2 additions & 1 deletion lua/ogpt/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ function Api.chat_completions(custom_params, cb, should_stop)
local ok, json = pcall(vim.json.decode, chunk)
if ok and json ~= nil then
if json.error ~= nil then
cb(json.error.message, "ERROR", ctx)
cb(json.error, "ERROR", ctx)
return
end
process_line(ok, json)
Expand Down Expand Up @@ -274,6 +274,7 @@ end
function Api.setup()
loadApiHost("OLLAMA_API_HOST", "OLLAMA_API_HOST", "api_host_cmd", function(value)
Api.OLLAMA_API_HOST = value
Api.MODELS_URL = ensureUrlProtocol(Api.OLLAMA_API_HOST .. "/api/tags")
Api.COMPLETIONS_URL = ensureUrlProtocol(Api.OLLAMA_API_HOST .. "/api/generate")
Api.CHAT_COMPLETIONS_URL = ensureUrlProtocol(Api.OLLAMA_API_HOST .. "/api/generate")
end, "http://localhost:11434/api/generate")
Expand Down
40 changes: 20 additions & 20 deletions lua/ogpt/code_edits.lua
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)
end
local api_params = Config.options.api_edit_params
local use_functions_for_edits = Config.options.use_openai_functions_for_edits
local settings_panel = Parameters.get_parameters_panel("edits", api_params)
local parameters_panel = Parameters.get_parameters_panel("edits", api_params)
input_window = Popup(Config.options.popup_window)
output_window = Popup(Config.options.popup_window)
instructions_input = ChatInput(Config.options.popup_input, {
Expand Down Expand Up @@ -227,20 +227,20 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)
end, { noremap = true })
end

-- toggle settings
local settings_open = false
for _, popup in ipairs({ settings_panel, instructions_input }) do
-- toggle parameters
local parameters_open = false
for _, popup in ipairs({ parameters_panel, instructions_input }) do
for _, mode in ipairs({ "n", "i" }) do
popup:map(mode, Config.options.edit_with_instructions.keymaps.toggle_settings, function()
if settings_open then
popup:map(mode, Config.options.edit_with_instructions.keymaps.toggle_parameters, function()
if parameters_open then
layout:update(Layout.Box({
Layout.Box({
Layout.Box(input_window, { grow = 1 }),
Layout.Box(instructions_input, { size = 3 }),
}, { dir = "col", size = "50%" }),
Layout.Box(output_window, { size = "50%" }),
}, { dir = "row" }))
settings_panel:hide()
parameters_panel:hide()
vim.api.nvim_set_current_win(instructions_input.winid)
else
layout:update(Layout.Box({
Expand All @@ -249,16 +249,16 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)
Layout.Box(instructions_input, { size = 3 }),
}, { dir = "col", grow = 1 }),
Layout.Box(output_window, { grow = 1 }),
Layout.Box(settings_panel, { size = 40 }),
Layout.Box(parameters_panel, { size = 40 }),
}, { dir = "row" }))
settings_panel:show()
settings_panel:mount()
parameters_panel:show()
parameters_panel:mount()

vim.api.nvim_set_current_win(settings_panel.winid)
vim.api.nvim_buf_set_option(settings_panel.bufnr, "modifiable", false)
vim.api.nvim_win_set_option(settings_panel.winid, "cursorline", true)
vim.api.nvim_set_current_win(parameters_panel.winid)
vim.api.nvim_buf_set_option(parameters_panel.bufnr, "modifiable", false)
vim.api.nvim_win_set_option(parameters_panel.winid, "cursorline", true)
end
settings_open = not settings_open
parameters_open = not parameters_open
-- set input and output settings
-- TODO
for _, window in ipairs({ input_window, output_window }) do
Expand All @@ -271,7 +271,7 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)

-- cycle windows
local active_panel = instructions_input
for _, popup in ipairs({ input_window, output_window, settings_panel, instructions_input }) do
for _, popup in ipairs({ input_window, output_window, parameters_panel, instructions_input }) do
for _, mode in ipairs({ "n", "i" }) do
if mode == "i" and (popup == input_window or popup == output_window) then
goto continue
Expand All @@ -286,14 +286,14 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)
active_panel = output_window
vim.api.nvim_command("stopinsert")
elseif active_panel == output_window and mode ~= "i" then
if settings_open then
vim.api.nvim_set_current_win(settings_panel.winid)
active_panel = settings_panel
if parameters_open then
vim.api.nvim_set_current_win(parameters_panel.winid)
active_panel = parameters_panel
else
vim.api.nvim_set_current_win(instructions_input.winid)
active_panel = instructions_input
end
elseif active_panel == settings_panel then
elseif active_panel == parameters_panel then
vim.api.nvim_set_current_win(instructions_input.winid)
active_panel = instructions_input
end
Expand All @@ -304,7 +304,7 @@ M.edit_with_instructions = function(output_lines, bufnr, selection, ...)

-- toggle diff mode
local diff_mode = Config.options.edit_with_instructions.diff
for _, popup in ipairs({ settings_panel, instructions_input }) do
for _, popup in ipairs({ parameters_panel, instructions_input }) do
for _, mode in ipairs({ "n", "i" }) do
popup:map(mode, Config.options.edit_with_instructions.keymaps.toggle_diff, function()
diff_mode = not diff_mode
Expand Down
10 changes: 4 additions & 6 deletions lua/ogpt/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ function M.defaults()
loading_text = "Loading, please wait ...",
question_sign = "", -- 🙂
answer_sign = "", -- 🤖
border_left_sign = "",
border_right_sign = "",
border_left_sign = "|",
border_right_sign = "|",
max_line_length = 120,
sessions_window = {
active_sign = "",
Expand All @@ -54,7 +54,7 @@ function M.defaults()
cycle_modes = "<C-f>",
next_message = "<C-j>",
prev_message = "<C-k>",
select_session = "<Space>",
select_session = "<CR>",
rename_session = "r",
delete_session = "d",
draft_message = "<C-d>",
Expand Down Expand Up @@ -141,8 +141,6 @@ function M.defaults()
},
api_params = {
model = "mistral:7b",
frequency_penalty = 0,
presence_penalty = 0,
-- max_tokens = 300,
temperature = 0.8,
top_p = 1,
Expand All @@ -152,7 +150,7 @@ function M.defaults()
model = "codellama:13b",
frequency_penalty = 0,
presence_penalty = 0,
temperature = 0,
temperature = 0.5,
top_p = 1,
-- n = 1,
},
Expand Down
2 changes: 1 addition & 1 deletion lua/ogpt/flows/chat/base.lua
Original file line number Diff line number Diff line change
Expand Up @@ -828,7 +828,7 @@ function Chat:set_keymaps()
self:map(Config.options.chat.keymaps.new_session, function()
self:new_session()
Sessions:refresh()
end, { self.parameters_panel, self.chat_input })
end, { self.parameters_panel, self.chat_input, self.chat_window })

-- cycle panes
self:map(Config.options.chat.keymaps.cycle_windows, function()
Expand Down
12 changes: 7 additions & 5 deletions lua/ogpt/flows/chat/session.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,17 @@ function Session:to_export()
return {
name = self.name,
updated_at = self.updated_at,
settings = self.parameters,
parameters = self.parameters,
conversation = self.conversation,
}
end

function Session:previous_context()
if #self.conversation > 1 then
return self.conversation[#self.conversation].context
for ith = #self.conversation, 1, -1 do
local context = self.conversation[ith].context
if context then
return context
end
end
return {}
end
Expand All @@ -79,7 +82,6 @@ function Session:add_item(item)
if ctx and ctx.params and ctx.params.options then
self.parameters = ctx.params.options
self.parameters.model = ctx.params.model
self.parameters.model = ctx.params.model
item.context = ctx.context
end
if self.updated_at == self.name and item.type == 1 then
Expand Down Expand Up @@ -140,7 +142,7 @@ function Session:load()
local data = vim.json.decode(jsonString)
self.name = data.name
self.updated_at = data.updated_at or get_current_date()
self.parameters = data.settings
self.parameters = data.parameters
self.conversation = data.conversation
end

Expand Down
Loading

0 comments on commit 8533dc6

Please sign in to comment.