fix(defaults): emit events on automatic background change #41242

Problem:
After #40270, events are no longer emitted from the automatic background
detection. This applies not just during startup, but also if the user
manually changes the background of their terminal.

Solution:
Set the background as normal, assuming that a normal terminal will
respond within 100 ms. Change test to match expected behavior:
- BG set during startup won't trigger user autocmds since it runs before
  any user config
- If the terminal takes longer than 100 ms to respond to initial OSC 11,
  it does trigger the OptionSet, but it is triggered through the normal
  path to ensure values like v:option_new are set #38551
- BG change after startup still triggers autocmds #41146
This commit is contained in:
Kyle
2026-08-10 03:17:51 -05:00
committed by GitHub
parent 4b8c4dfc68
commit 8d406ed2ac
2 changed files with 8 additions and 26 deletions

View File

@@ -964,8 +964,7 @@ do
if rr and gg and bb then
local luminance = (0.299 * rr) + (0.587 * gg) + (0.114 * bb)
local bg = luminance < 0.5 and 'dark' or 'light'
-- Use :noautocmd to suppress OptionSet event; OSC11 response may arrive after VimEnter.
vim.cmd('noautocmd set background=' .. bg)
vim.o.background = bg
end
end
end