mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix: source syncolors.vim before startup scripts
This fixes an issue (#12573) where colorscheme files are sourced twice upon startup. This occurs when the startup script calls `:colorscheme`, which sets the `g:colors_name` global variable. When syntax highlighting is enabled in `syn_maybe_enable()` the `syntax.vim` script is sourced which in turn sources `synload.vim`. This script checks to see if `g:colors_name` is set and, if so, runs exe "colors " . colors_name This is done to ensure that highlight groups are defined before enabling the syntax highlighting engine. Instead, source syncolors.vim before the startup scripts which sets up default highlights and only load the full syntax engine after the startup scripts or when the user runs `:syntax on`. Add a guard variable `did_syncolor` to prevent syncolor.vim from being sourced twice and remove the line mentioned above from synload.vim so that the colorscheme file is not re-sourced when the syntax engine is loaded.
This commit is contained in:
parent
682247b52e
commit
0bcf96bf0b
@ -25,6 +25,8 @@ else
|
||||
endif
|
||||
endif
|
||||
|
||||
let did_syncolor = 1
|
||||
|
||||
" Many terminals can only use six different colors (plus black and white).
|
||||
" Therefore the number of colors used is kept low. It doesn't look nice with
|
||||
" too many colors anyway.
|
||||
|
@ -14,10 +14,8 @@ endif
|
||||
" let others know that syntax has been switched on
|
||||
let syntax_on = 1
|
||||
|
||||
" Set the default highlighting colors. Use a color scheme if specified.
|
||||
if exists("colors_name")
|
||||
exe "colors " . colors_name
|
||||
else
|
||||
" Set the default highlighting colors
|
||||
if !exists("colors_name") && !exists("did_syncolor")
|
||||
runtime! syntax/syncolor.vim
|
||||
endif
|
||||
|
||||
|
@ -367,11 +367,19 @@ int main(int argc, char **argv)
|
||||
// Execute --cmd arguments.
|
||||
exe_pre_commands(¶ms);
|
||||
|
||||
// If using the runtime (-u is not NONE), enable syntax & filetype plugins.
|
||||
bool enable_syntax =
|
||||
(params.use_vimrc == NULL || !strequal(params.use_vimrc, "NONE"));
|
||||
|
||||
// Source syncolor.vim to set up default UI highlights
|
||||
if (enable_syntax) {
|
||||
source_runtime((char_u *)"syntax/syncolor.vim", DIP_ALL);
|
||||
}
|
||||
|
||||
// Source startup scripts.
|
||||
source_startup_scripts(¶ms);
|
||||
|
||||
// If using the runtime (-u is not NONE), enable syntax & filetype plugins.
|
||||
if (params.use_vimrc == NULL || !strequal(params.use_vimrc, "NONE")) {
|
||||
if (enable_syntax) {
|
||||
// Does ":filetype plugin indent on".
|
||||
filetype_maybe_enable();
|
||||
// Sources syntax/syntax.vim, which calls `:filetype on`.
|
||||
|
Loading…
Reference in New Issue
Block a user