Mercurial > vim
view runtime/syntax/cupl.vim @ 33947:f4d88db48a63 v9.0.2168
patch 9.0.2168: Moving tabpages on :drop may cause an endless loop
Commit: https://github.com/vim/vim/commit/df12e39b8b9dd39056e22b452276622cb7b617fd
Author: Christian Brabandt <cb@256bit.org>
Date: Sat Dec 16 13:55:32 2023 +0100
patch 9.0.2168: Moving tabpages on :drop may cause an endless loop
Problem: Moving tabpages on :drop may cause an endless loop
Solution: Disallow moving tabpages on :drop when cleaning up the arglist
first
Moving tabpages during drop command may cause an endless loop
When executing a :tab drop command, Vim will close all windows not in
the argument list. This triggers various autocommands. If a user has
created an 'au Tabenter * :tabmove -' autocommand, this can cause Vim to
end up in an endless loop, when trying to iterate over all tabs (which
would trigger the tabmove autocommand, which will change the tpnext
pointer, etc).
So instead of blocking all autocommands before we actually try to edit
the given file, lets simply disallow to move tabpages around. Otherwise,
we may change the expected number of events triggered during a :drop
command, which users may rely on (there is actually a test, that expects
various TabLeave/TabEnter autocommands) and would therefore be a
backwards incompatible change.
Don't make this an error, as this could trigger several times during the
drop command, but silently ignore the :tabmove command in this case (and
it should in fact finally trigger successfully when loading the given
file in a new tab). So let's just be quiet here instead.
fixes: #13676
closes: #13686
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 16 Dec 2023 14:00:05 +0100 |
parents | 11b656e74444 |
children |
line wrap: on
line source
" Vim syntax file " Language: CUPL " Maintainer: John Cook <johncook3@gmail.com> " Last Change: 2011 Dec 27 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " this language is oblivious to case. syn case ignore " A bunch of keywords syn keyword cuplHeader name partno date revision rev designer company nextgroup=cuplHeaderContents syn keyword cuplHeader assembly assy location device nextgroup=cuplHeaderContents syn keyword cuplTodo contained TODO XXX FIXME " cuplHeaderContents uses default highlighting except for numbers syn match cuplHeaderContents ".\+;"me=e-1 contains=cuplNumber contained " String constants syn region cuplString start=+'+ end=+'+ syn region cuplString start=+"+ end=+"+ syn keyword cuplStatement append condition syn keyword cuplStatement default else syn keyword cuplStatement field fld format function fuse syn keyword cuplStatement group if jump loc syn keyword cuplStatement macro min node out syn keyword cuplStatement pin pinnode present table syn keyword cuplStatement sequence sequenced sequencejk sequencers sequencet syn keyword cuplFunction log2 log8 log16 log " Valid integer number formats (decimal, binary, octal, hex) syn match cuplNumber "\<[-+]\=[0-9]\+\>" syn match cuplNumber "'d'[0-9]\+\>" syn match cuplNumber "'b'[01x]\+\>" syn match cuplNumber "'o'[0-7x]\+\>" syn match cuplNumber "'h'[0-9a-fx]\+\>" " operators syn match cuplLogicalOperator "[!#&$]" syn match cuplArithmeticOperator "[-+*/%]" syn match cuplArithmeticOperator "\*\*" syn match cuplAssignmentOperator ":\==" syn match cuplEqualityOperator ":" syn match cuplTruthTableOperator "=>" " Signal extensions syn match cuplExtension "\.[as][pr]\>" syn match cuplExtension "\.oe\>" syn match cuplExtension "\.oemux\>" syn match cuplExtension "\.[dlsrjk]\>" syn match cuplExtension "\.ck\>" syn match cuplExtension "\.dq\>" syn match cuplExtension "\.ckmux\>" syn match cuplExtension "\.tec\>" syn match cuplExtension "\.cnt\>" syn match cuplRangeOperator "\.\." contained " match ranges like memadr:[0000..1FFF] " and highlight both the numbers and the .. operator syn match cuplNumberRange "\<\x\+\.\.\x\+\>" contains=cuplRangeOperator " match vectors of type [name3..0] (decimal numbers only) " but assign them no special highlighting except for the .. operator syn match cuplBitVector "\<\a\+\d\+\.\.\d\+\>" contains=cuplRangeOperator " other special characters syn match cuplSpecialChar "[\[\](){},;]" " directives " (define these after cuplOperator so $xxx overrides $) syn match cuplDirective "\$msg" syn match cuplDirective "\$macro" syn match cuplDirective "\$mend" syn match cuplDirective "\$repeat" syn match cuplDirective "\$repend" syn match cuplDirective "\$define" syn match cuplDirective "\$include" " multi-line comments syn region cuplComment start=+/\*+ end=+\*/+ contains=cuplNumber,cuplTodo syn sync minlines=1 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link cuplHeader cuplStatement hi def link cuplLogicalOperator cuplOperator hi def link cuplRangeOperator cuplOperator hi def link cuplArithmeticOperator cuplOperator hi def link cuplAssignmentOperator cuplOperator hi def link cuplEqualityOperator cuplOperator hi def link cuplTruthTableOperator cuplOperator hi def link cuplOperator cuplStatement hi def link cuplFunction cuplStatement hi def link cuplStatement Statement hi def link cuplNumberRange cuplNumber hi def link cuplNumber cuplString hi def link cuplString String hi def link cuplComment Comment hi def link cuplExtension cuplSpecial hi def link cuplSpecialChar cuplSpecial hi def link cuplSpecial Special hi def link cuplDirective PreProc hi def link cuplTodo Todo let b:current_syntax = "cupl" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8