From 4d04d0123d2571391a00b87f7ee70f987fb7cedd Mon Sep 17 00:00:00 2001 From: glepnir Date: Wed, 25 Mar 2026 18:01:50 +0800 Subject: feat(api): nvim_set_hl{update:boolean} #37546 Problem: nvim_set_hl always replaces all attributes. Solution: Add update field. When true, merge with existing attributes instead of replacing. Unspecified attributes are preserved. If highlight group doesn't exist, falls back to reset mode. --- runtime/lua/vim/_meta/api.lua | 1 + runtime/lua/vim/_meta/api_keysets.lua | 1 + 2 files changed, 2 insertions(+) (limited to 'runtime/lua') diff --git a/runtime/lua/vim/_meta/api.lua b/runtime/lua/vim/_meta/api.lua index ccaa6192aa..380058a287 100644 --- a/runtime/lua/vim/_meta/api.lua +++ b/runtime/lua/vim/_meta/api.lua @@ -2253,6 +2253,7 @@ function vim.api.nvim_set_decoration_provider(ns_id, opts) end --- - underdotted: boolean --- - underdouble: boolean --- - underline: boolean +--- - update: boolean false by default; true updates only specified attributes, leaving others unchanged. function vim.api.nvim_set_hl(ns_id, name, val) end --- Set active namespace for highlights defined with `nvim_set_hl()`. This can be set for diff --git a/runtime/lua/vim/_meta/api_keysets.lua b/runtime/lua/vim/_meta/api_keysets.lua index 1bbd8073c2..7f4feba87d 100644 --- a/runtime/lua/vim/_meta/api_keysets.lua +++ b/runtime/lua/vim/_meta/api_keysets.lua @@ -329,6 +329,7 @@ error('Cannot require a meta file') --- @field fg_indexed? boolean --- @field bg_indexed? boolean --- @field force? boolean +--- @field update? boolean --- @field url? string --- @class vim.api.keyset.highlight_cterm -- cgit