Mercurial > vim
view runtime/syntax/context.vim @ 34194:a522c6c0127b v9.1.0047
patch 9.1.0047: issues with temp curwin/buf while cmdwin is open
Commit: https://github.com/vim/vim/commit/988f74311c26ea9917e84fbae608de226dba7e5f
Author: Sean Dewar <seandewar@users.noreply.github.com>
Date: Wed Aug 16 14:17:36 2023 +0100
patch 9.1.0047: issues with temp curwin/buf while cmdwin is open
Problem: Things that temporarily change/restore curwin/buf (e.g:
win_execute, some autocmds) may break assumptions that
curwin/buf is the cmdwin when "cmdwin_type != 0", causing
issues.
Solution: Expose the cmdwin's real win/buf and check that instead. Also
try to ensure these variables are NULL if "cmdwin_type == 0",
allowing them to be used directly in most cases without
checking cmdwin_type. (Sean Dewar)
Alternatively, we could ban win_execute in the cmdwin and audit all places that
temporarily change/restore curwin/buf, but I didn't notice any problems arising
from allowing this (standard cmdwin restrictions still apply, so things that may
actually break the cmdwin are still forbidden).
closes: #12819
Signed-off-by: Sean Dewar <seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 23 Jan 2024 23:00:04 +0100 |
parents | d81556766132 |
children |
line wrap: on
line source
vim9script # Vim syntax file # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com> # Former Maintainers: Nikolai Weibull <now@bitwi.se> # Latest Revision: 2023 Dec 26 if exists("b:current_syntax") finish endif # Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP. var context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'})) # Deprecation warning if type(context_include) ==# type([]) echomsg "[ConTeXt] b:context_include/g:context_include must be Dictionaries." context_include = {'xml': 'XML'} endif syn iskeyword @,48-57,_,!,?,a-z,A-Z,192-255 syn spell toplevel runtime! syntax/shared/context-data-context.vim runtime! syntax/shared/context-data-interfaces.vim runtime! syntax/shared/context-data-tex.vim syn match contextCommand '\\\k\+\>' display contains=@NoSpell # ConTeXt options, i.e., [...] blocks syn region contextOptions matchgroup=contextDelimiter start='\[' end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=TOP,@Spell # Highlight braces syn match contextDelimiter '[{}]' # Comments syn match contextComment '\%(\_^\|[^\\]\)\%(\\\\\)*\zs%.*$' display contains=contextTodo,contextMagicLine syn match contextComment '^\s*%[CDM].*$' display contains=contextTodo,contextMagicLine syn keyword contextTodo TODO FIXME XXX NOTE contained syn match contextMagicLine '^\s*%\s*!TEX.*$' contained syn match contextBlockDelim '\\\%(start\|stop\)\k\+' contains=@NoSpell syn region contextEscaped matchgroup=contextPreProc start='\\type\%(\s*\|\n\)*\z([^A-Za-z%]\)' end='\z1' syn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s\|\n\)*{' end='}' syn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s*\|\n\)*<<' end='>>' syn region contextEscaped matchgroup=contextPreProc \ start='\\start\z(\a*\%(typing\|typen\)\)' \ end='\\stop\z1' contains=contextComment keepend syn region contextEscaped matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}' syn region contextEscaped matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}' syn match contextBuiltin '\\unexpanded\>' display contains=@NoSpell # \unprotect... \protect regions syn region contextUnprotect matchgroup=contextBuiltin start='\\unprotect' end='\\protect' contains=TOP syn match contextSequence '\\[a-zA-Z]*[@_!?]\+[a-zA-Z@_!?]*' contains=@NoSpell contained containedin=contextUnprotect # Math syn match contextMathCmd '\\m\%(ath\%(ematics\)\=\)\=\>' syn region contextInlineMath matchgroup=contextMathDelim start='\$' skip='\\\\\|\\\$' end='\$' syn region contextDisplayMath matchgroup=contextMathDelim start='\$\$' skip='\\\\\|\\\$' end='\$\$' keepend syn region contextDisplayMath matchgroup=contextBlockDelim start='\\startformula' end='\\stopformula' contains=TOP # MetaFun b:mp_metafun = 1 syn include @mpTop syntax/mp.vim unlet b:current_syntax syn region contextMPGraphic matchgroup=contextBlockDelim \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$' \ end='\\stop\z1' \ contains=@mpTop,@NoSpell syn region contextMPGraphic matchgroup=contextBlockDelim \ start='\\start\z(\%(\%[re]usable\|use\|unique\|static\)MPgraphic\|staticMPfigure\|uniqueMPpagegraphic\)\>.*$' \ end='\\stop\z1' \ contains=@mpTop,@NoSpell # Lua syn include @luaTop syntax/lua.vim unlet b:current_syntax syn region contextLuaCode matchgroup=contextBlockDelim \ start='\\startluacode\>' \ end='\\stopluacode\>' keepend \ contains=@luaTop,@NoSpell syn match contextDirectLua "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\=" \ nextgroup=contextBeginEndLua skipwhite skipempty \ contains=contextComment syn region contextBeginEndLua matchgroup=contextSpecial \ start="{" end="}" skip="\\[{}]" keepend \ contained contains=@luaTop,@NoSpell for synname in keys(context_include) execute 'syn include @' .. synname .. 'Top' 'syntax/' .. synname .. '.vim' unlet b:current_syntax execute 'syn region context' .. context_include[synname] .. 'Code' \ 'matchgroup=contextBlockDelim' \ 'start=+\\start' .. context_include[synname] .. '\w*+' \ 'end=+\\stop' .. context_include[synname] .. '\w*+' \ 'contains=@' .. synname .. 'Top,@NoSpell' endfor syn match contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>' contains=@NoSpell syn match contextSpecial '\\par\>\|-\{2,3}\||[<>/]\=|' contains=@NoSpell syn match contextSpecial /\\[`'"]/ syn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+ contains=@NoSpell syn match contextSpecial '\^\^.' syn match contextSpecial '`\%(\\.\|\^\^.\|.\)' syn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>' contains=@NoSpell syn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>' contains=@NoSpell syn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>' contains=@NoSpell syn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>' contains=@NoSpell syn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>' contains=@NoSpell hi def link contextBlockDelim Keyword hi def link contextBuiltin Keyword hi def link contextCommand Keyword hi def link contextComment Comment hi def link contextDelimiter Delimiter hi def link contextDirectLua Keyword hi def link contextEscaped String hi def link contextFont contextType hi def link contextKeyword Keyword hi def link contextInlineMath String hi def link contextMagicLine PreProc hi def link contextMathCmd Identifier hi def link contextMathDelim Delimiter hi def link contextOptions Typedef hi def link contextPreProc PreProc hi def link contextSectioning PreProc hi def link contextSequence Identifier hi def link contextSpecial Special hi def link contextStyle contextType hi def link contextTodo Todo hi def link contextType Type b:current_syntax = 'context' # vim: sw=2 fdm=marker