mirror of
https://github.com/neovim/neovim.git
synced 2025-11-15 23:01:24 +00:00
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.
90 lines
4.1 KiB
VimL
90 lines
4.1 KiB
VimL
" Vim syntax support file
|
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
|
" Last Change: 2020 Feb 13
|
|
|
|
" This file sets up the default methods for highlighting.
|
|
" It is loaded from "synload.vim" and from Vim for ":syntax reset".
|
|
" Also used from init_highlight().
|
|
|
|
if !exists("syntax_cmd") || syntax_cmd == "on"
|
|
" ":syntax on" works like in Vim 5.7: set colors but keep links
|
|
command -nargs=* SynColor hi <args>
|
|
command -nargs=* SynLink hi link <args>
|
|
else
|
|
if syntax_cmd == "enable"
|
|
" ":syntax enable" keeps any existing colors
|
|
command -nargs=* SynColor hi def <args>
|
|
command -nargs=* SynLink hi def link <args>
|
|
elseif syntax_cmd == "reset"
|
|
" ":syntax reset" resets all colors to the default
|
|
command -nargs=* SynColor hi <args>
|
|
command -nargs=* SynLink hi! link <args>
|
|
else
|
|
" User defined syncolor file has already set the colors.
|
|
finish
|
|
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.
|
|
" Careful with "cterm=bold", it changes the color to bright for some terminals.
|
|
" There are two sets of defaults: for a dark and a light background.
|
|
if &background == "dark"
|
|
SynColor Comment term=bold cterm=NONE ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE
|
|
SynColor Constant term=underline cterm=NONE ctermfg=Magenta ctermbg=NONE gui=NONE guifg=#ffa0a0 guibg=NONE
|
|
SynColor Special term=bold cterm=NONE ctermfg=LightRed ctermbg=NONE gui=NONE guifg=Orange guibg=NONE
|
|
SynColor Identifier term=underline cterm=bold ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#40ffff guibg=NONE
|
|
SynColor Statement term=bold cterm=NONE ctermfg=Yellow ctermbg=NONE gui=bold guifg=#ffff60 guibg=NONE
|
|
SynColor PreProc term=underline cterm=NONE ctermfg=LightBlue ctermbg=NONE gui=NONE guifg=#ff80ff guibg=NONE
|
|
SynColor Type term=underline cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE
|
|
SynColor Underlined term=underline cterm=underline ctermfg=LightBlue gui=underline guifg=#80a0ff
|
|
SynColor Ignore term=NONE cterm=NONE ctermfg=black ctermbg=NONE gui=NONE guifg=bg guibg=NONE
|
|
else
|
|
SynColor Comment term=bold cterm=NONE ctermfg=DarkBlue ctermbg=NONE gui=NONE guifg=Blue guibg=NONE
|
|
SynColor Constant term=underline cterm=NONE ctermfg=DarkRed ctermbg=NONE gui=NONE guifg=Magenta guibg=NONE
|
|
" #6a5acd is SlateBlue
|
|
SynColor Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a5acd guibg=NONE
|
|
SynColor Identifier term=underline cterm=NONE ctermfg=DarkCyan ctermbg=NONE gui=NONE guifg=DarkCyan guibg=NONE
|
|
SynColor Statement term=bold cterm=NONE ctermfg=Brown ctermbg=NONE gui=bold guifg=Brown guibg=NONE
|
|
" #6a0dad is Purple
|
|
SynColor PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a0dad guibg=NONE
|
|
SynColor Type term=underline cterm=NONE ctermfg=DarkGreen ctermbg=NONE gui=bold guifg=SeaGreen guibg=NONE
|
|
SynColor Underlined term=underline cterm=underline ctermfg=DarkMagenta gui=underline guifg=SlateBlue
|
|
SynColor Ignore term=NONE cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=bg guibg=NONE
|
|
endif
|
|
SynColor Error term=reverse cterm=NONE ctermfg=White ctermbg=Red gui=NONE guifg=White guibg=Red
|
|
SynColor Todo term=standout cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Blue guibg=Yellow
|
|
|
|
" Common groups that link to default highlighting.
|
|
" You can specify other highlighting easily.
|
|
SynLink String Constant
|
|
SynLink Character Constant
|
|
SynLink Number Constant
|
|
SynLink Boolean Constant
|
|
SynLink Float Number
|
|
SynLink Function Identifier
|
|
SynLink Conditional Statement
|
|
SynLink Repeat Statement
|
|
SynLink Label Statement
|
|
SynLink Operator Statement
|
|
SynLink Keyword Statement
|
|
SynLink Exception Statement
|
|
SynLink Include PreProc
|
|
SynLink Define PreProc
|
|
SynLink Macro PreProc
|
|
SynLink PreCondit PreProc
|
|
SynLink StorageClass Type
|
|
SynLink Structure Type
|
|
SynLink Typedef Type
|
|
SynLink Tag Special
|
|
SynLink SpecialChar Special
|
|
SynLink Delimiter Special
|
|
SynLink SpecialComment Special
|
|
SynLink Debug Special
|
|
|
|
delcommand SynColor
|
|
delcommand SynLink
|