diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 495406bf80..758de13f67 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -482,6 +482,8 @@ These existing features changed their behavior. • |nvim_create_autocmd()| • |nvim_exec_autocmds()| • |nvim_get_autocmds()| +• |OptionSet| is no longer triggered during startup by automatic + |'background'| detection. ============================================================================== REMOVED FEATURES *news-removed* diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 194dfcf77c..c3358da8e8 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -850,7 +850,7 @@ A jump table for the options with a short description can be found at |Q_op|. global When set to "dark" or "light", adjusts the default color groups for that background type. The |TUI| or other UI sets this on startup - (triggering |OptionSet|) if it can detect the background color. + if it can detect the background color. This option does NOT change the background color, it tells Nvim what the "inherited" (terminal/GUI) background looks like. diff --git a/runtime/lua/vim/_core/defaults.lua b/runtime/lua/vim/_core/defaults.lua index 8aa2db8d99..bfd7f48a5b 100644 --- a/runtime/lua/vim/_core/defaults.lua +++ b/runtime/lua/vim/_core/defaults.lua @@ -940,20 +940,6 @@ do local luminance = (0.299 * rr) + (0.587 * gg) + (0.114 * bb) local bg = luminance < 0.5 and 'dark' or 'light' vim.api.nvim_set_option_value('background', bg, {}) - - -- Ensure OptionSet still triggers when we set the background during startup - if vim.v.vim_did_enter == 0 then - vim.api.nvim_create_autocmd('VimEnter', { - group = group, - once = true, - nested = true, - callback = function() - vim.api.nvim_exec_autocmds('OptionSet', { - pattern = 'background', - }) - end, - }) - end end end end, diff --git a/runtime/lua/vim/_meta/options.gen.lua b/runtime/lua/vim/_meta/options.gen.lua index 23ea1a24b4..e73c310de2 100644 --- a/runtime/lua/vim/_meta/options.gen.lua +++ b/runtime/lua/vim/_meta/options.gen.lua @@ -224,7 +224,7 @@ vim.go.awa = vim.go.autowriteall --- When set to "dark" or "light", adjusts the default color groups for --- that background type. The `TUI` or other UI sets this on startup ---- (triggering `OptionSet`) if it can detect the background color. +--- if it can detect the background color. --- --- This option does NOT change the background color, it tells Nvim what --- the "inherited" (terminal/GUI) background looks like. diff --git a/src/nvim/options.lua b/src/nvim/options.lua index a694a74386..996f965592 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -366,7 +366,7 @@ local options = { desc = [=[ When set to "dark" or "light", adjusts the default color groups for that background type. The |TUI| or other UI sets this on startup - (triggering |OptionSet|) if it can detect the background color. + if it can detect the background color. This option does NOT change the background color, it tells Nvim what the "inherited" (terminal/GUI) background looks like. diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index ce91534304..e9312237de 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -4282,23 +4282,28 @@ describe('TUI bg color', function() end) end) - it('triggers OptionSet from automatic background processing', function() + it('does not trigger OptionSet from automatic background processing', function() + command('set background=light') + local child_server = new_pipename() local screen = tt.setup_child_nvim({ '--clean', + '--listen', + child_server, '--cmd', 'colorscheme vim', '--cmd', 'set noswapfile', '-c', - 'autocmd OptionSet background echo "did OptionSet, yay!"', + [[let g:background_optionset = 0]], + '-c', + [[autocmd OptionSet background let g:background_optionset += 1]], }) - screen:expect([[ - ^ | - {5:~} |*3 - {3:[No Name] 0,0-1 All}| - did OptionSet, yay! | - {5:-- TERMINAL --} | - ]]) + screen:expect({ any = '%[No Name%]' }) + local child_session = n.connect(child_server) + retry(nil, nil, function() + eq({ true, 'light' }, { child_session:request('nvim_eval', '&background') }) + end) + eq({ true, 0 }, { child_session:request('nvim_eval', 'g:background_optionset') }) end) it('sends theme update notifications when background changes #31652', function()