Mercurial > vim
view runtime/syntax/elf.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 | 5b7ea82bc18f |
children |
line wrap: on
line source
" Vim syntax file " Language: ELF " Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de> " Last Change: Son 22 Jun 2003 20:43:14 CEST " Filenames: *.ab,*.am " URL: http://www.cvjb.de/comp/vim/elf.vim " $Id: elf.vim,v 1.1 2004/06/13 19:52:27 vimboss Exp $ " " ELF: Extensible Language Facility " This is the Applix Inc., Macro and Builder programming language. " It has nothing in common with the binary format called ELF. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Case does not matter syn case ignore " Environments syn region elfEnvironment transparent matchgroup=Special start="{" matchgroup=Special end="}" contains=ALLBUT,elfBraceError " Unmatched braces syn match elfBraceError "}" " All macros must have at least one of these definitions syn keyword elfSpecial endmacro syn region elfSpecial transparent matchgroup=Special start="^\(\(macro\)\|\(set\)\) \S\+$" matchgroup=Special end="^\(\(endmacro\)\|\(endset\)\)$" contains=ALLBUT,elfBraceError " Preprocessor Commands syn keyword elfPPCom define include " Some keywords syn keyword elfKeyword false true null syn keyword elfKeyword var format object function endfunction " Conditionals and loops syn keyword elfConditional if else case of endcase for to next while until return goto " All built-in elf macros end with an '@' syn match elfMacro "[0-9_A-Za-z]\+@" " Strings and characters syn region elfString start=+"+ skip=+\\\\\|\\"+ end=+"+ " Numbers syn match elfNumber "-\=\<[0-9]*\.\=[0-9_]\>" " Comments syn region elfComment start="/\*" end="\*/" syn match elfComment "\'.*$" syn sync ccomment elfComment " Parenthesis syn match elfParens "[\[\]()]" " Punctuation syn match elfPunct "[,;]" " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later. hi def link elfComment Comment hi def link elfPPCom Include hi def link elfKeyword Keyword hi def link elfSpecial Special hi def link elfEnvironment Special hi def link elfBraceError Error hi def link elfConditional Conditional hi def link elfMacro Function hi def link elfNumber Number hi def link elfString String hi def link elfParens Delimiter hi def link elfPunct Delimiter let b:current_syntax = "elf" " vim:ts=8:sw=4:nocindent:smartindent: