From c1a32d435ae3aa9045f8458881594ae35d571104 Mon Sep 17 00:00:00 2001 From: Francis Belanger Date: Thu, 29 Jan 2026 09:41:42 -0500 Subject: [PATCH] fix(ui): ensure win options set with correct local scope for input/output windows This should close #208 --- lua/opencode/ui/input_window.lua | 37 +++++++++++++++++++------------ lua/opencode/ui/output_window.lua | 2 +- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/lua/opencode/ui/input_window.lua b/lua/opencode/ui/input_window.lua index e1cfbb68..e9616e35 100644 --- a/lua/opencode/ui/input_window.lua +++ b/lua/opencode/ui/input_window.lua @@ -182,27 +182,36 @@ M._execute_slash_command = function(command) end end -function M.setup(windows) +local function set_win_option(option, value, windows) + windows = windows or state.windows + vim.api.nvim_set_option_value(option, value, { win = windows.input_win, scope = 'local' }) +end +local function set_buf_option(option, value, windows) + windows = windows or state.windows + vim.api.nvim_set_option_value(option, value, { buf = windows.input_buf }) +end + +function M.setup(windows) if config.ui.input.text.wrap then - vim.api.nvim_set_option_value('wrap', true, { win = windows.input_win }) - vim.api.nvim_set_option_value('linebreak', true, { win = windows.input_win }) + set_win_option('wrap', true, windows) + set_win_option('linebreak', true, windows) end - vim.api.nvim_set_option_value('filetype', 'opencode', { buf = windows.input_buf }) - vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.input_win }) - vim.api.nvim_set_option_value('signcolumn', 'yes', { win = windows.input_win }) - vim.api.nvim_set_option_value('cursorline', false, { win = windows.input_win }) - vim.api.nvim_set_option_value('number', false, { win = windows.input_win }) - vim.api.nvim_set_option_value('relativenumber', false, { win = windows.input_win }) - vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.input_buf }) - vim.api.nvim_set_option_value('swapfile', false, { buf = windows.input_buf }) + set_buf_option('filetype', 'opencode', windows) + set_win_option('winhighlight', config.ui.window_highlight, windows) + set_win_option('signcolumn', 'yes', windows) + set_win_option('cursorline', false, windows) + set_win_option('number', false, windows) + set_win_option('relativenumber', false, windows) + set_buf_option('buftype', 'nofile', windows) + set_buf_option('swapfile', false, windows) if config.ui.position ~= 'current' then - vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.input_win }) + set_win_option('winfixbuf', true, windows) end - vim.api.nvim_set_option_value('winfixheight', true, { win = windows.input_win }) - vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.input_win }) + set_win_option('winfixheight', true, windows) + set_win_option('winfixwidth', true, windows) M.update_dimensions(windows) M.refresh_placeholder(windows) diff --git a/lua/opencode/ui/output_window.lua b/lua/opencode/ui/output_window.lua index f27ab685..0f42855c 100644 --- a/lua/opencode/ui/output_window.lua +++ b/lua/opencode/ui/output_window.lua @@ -77,7 +77,7 @@ local function set_win_option(opt_name, value, win) end end - vim.api.nvim_set_option_value(opt_name, value, { win = win }) + vim.api.nvim_set_option_value(opt_name, value, { win = win, scope = 'local' }) end ---Helper to set buffer option (no saving needed)