diff options
author | Gregory Anders <8965202+gpanders@users.noreply.github.com> | 2023-12-16 11:18:45 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-16 11:18:45 -0600 |
commit | 8fb7419d7c5e2df3b792d18fa56f973088e69be2 (patch) | |
tree | 249b027da2469e716b5fea4b243ca9a59953fade /src | |
parent | 7840760776cf8dbaa580ced87aec0222dbb693d7 (diff) | |
download | rneovim-8fb7419d7c5e2df3b792d18fa56f973088e69be2.tar.gz rneovim-8fb7419d7c5e2df3b792d18fa56f973088e69be2.tar.bz2 rneovim-8fb7419d7c5e2df3b792d18fa56f973088e69be2.zip |
refactor: only reload colorscheme if &bg changed (#26598)
Currently, setting &bg at all re-initializes highlights and reloads
the active colorscheme, even if the actual value of &bg has not changed.
With https://github.com/neovim/neovim/pull/26595 this causes a
regression since &bg is set unconditionally based on the value detected
from the terminal.
Instead, only reload the colorscheme if the actual value of &bg has
changed.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/options.lua | 8 | ||||
-rw-r--r-- | src/nvim/optionstr.c | 7 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 7f3adb2b87..6d61a6d64e 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -316,7 +316,7 @@ return { See |:hi-normal| if you want to set the background color explicitly. *g:colors_name* When a color scheme is loaded (the "g:colors_name" variable is set) - setting 'background' will cause the color scheme to be reloaded. If + changing 'background' will cause the color scheme to be reloaded. If the color scheme adjusts to the value of 'background' this will work. However, if the color scheme sets 'background' itself the effect may be undone. First delete the "g:colors_name" variable when needed. @@ -326,13 +326,9 @@ return { :if $TERM ==# "xterm" : set background=dark :endif - < When this option is set, the default settings for the highlight groups + < When this option is changed, the default settings for the highlight groups will change. To use other settings, place ":highlight" commands AFTER the setting of the 'background' option. - This option is also used in the "$VIMRUNTIME/syntax/syntax.vim" file - to select the colors for syntax highlighting. After changing this - option, you must load syntax.vim again to see the result. This can be - done with ":syntax on". ]=], expand_cb = 'expand_set_background', full_name = 'background', diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c index 1aab9d4344..9ca8615467 100644 --- a/src/nvim/optionstr.c +++ b/src/nvim/optionstr.c @@ -663,12 +663,17 @@ int expand_set_ambiwidth(optexpand_T *args, int *numMatches, char ***matches) } /// The 'background' option is changed. -const char *did_set_background(optset_T *args FUNC_ATTR_UNUSED) +const char *did_set_background(optset_T *args) { if (check_opt_strings(p_bg, p_bg_values, false) != OK) { return e_invarg; } + if (args->os_oldval.string.data[0] == *p_bg) { + // Value was not changed + return NULL; + } + int dark = (*p_bg == 'd'); init_highlight(false, false); |