Mercurial > vim
view runtime/syntax/fetchmail.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 | 03e3b0034e31 |
children |
line wrap: on
line source
" Vim syntax file " Language: fetchmail(1) RC File " Maintainer: Doug Kearns <dougkearns@gmail.com> " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2022 Jul 02 " Version 6.4.3 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword fetchmailTodo contained FIXME TODO XXX NOTE syn region fetchmailComment start='#' end='$' contains=fetchmailTodo,@Spell syn match fetchmailNumber display '\<\d\+\>' syn region fetchmailString start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=fetchmailStringEsc syn region fetchmailString start=+'+ skip=+\\\\\|\\'+ end=+'+ \ contains=fetchmailStringEsc syn match fetchmailStringEsc contained '\\\([ntb]\|0\d*\|x\x\+\)' syn region fetchmailKeyword transparent matchgroup=fetchmailKeyword \ start='\<poll\|skip\|defaults\>' \ end='\<poll\|skip\|defaults\>' \ contains=ALLBUT,fetchmailOptions,fetchmailSet syn keyword fetchmailServerOpts contained via proto[col] local[domains] port \ service auth[enticate] timeout envelope \ qvirtual aka interface monitor plugin plugout \ dns checkalias uidl interval tracepolls \ principal esmtpname esmtppassword " removed in 6.3.0 syn keyword fetchmailServerOpts contained netsec syn match fetchmailServerOpts contained '\<bad-header\>' syn match fetchmailServerOpts contained '\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)' syn keyword fetchmailUserOpts contained user[name] is to pass[word] ssl \ sslcert sslcertck sslcertfile sslcertpath \ sslfingerprint sslkey sslproto folder \ smtphost fetchdomains smtpaddress smtpname \ antispam mda bsmtp preconnect postconnect \ keep flush limitflush fetchall rewrite \ stripcr forcecr pass8bits dropstatus \ dropdelivered mimedecode idle limit warnings \ batchlimit fetchlimit fetchsizelimit \ fastuidl expunge properties \ sslcommonname syn match fetchmailUserOpts contained '\<no\_s\+\(sslcertck\|keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|idle\)' syn keyword fetchmailSpecial contained here there syn keyword fetchmailNoise and with has wants options syn match fetchmailNoise display '[:;,]' syn keyword fetchmailSet nextgroup=fetchmailOptions skipwhite skipnl set syn keyword fetchmailOptions daemon postmaster bouncemail spambounce \ softbounce logfile pidfile idfile syslog properties syn match fetchmailOptions '\<no\_s\+\(bouncemail\|spambounce\|softbounce\|syslog\)' hi def link fetchmailComment Comment hi def link fetchmailTodo Todo hi def link fetchmailNumber Number hi def link fetchmailString String hi def link fetchmailStringEsc SpecialChar hi def link fetchmailKeyword Keyword hi def link fetchmailServerOpts Identifier hi def link fetchmailUserOpts Identifier hi def link fetchmailSpecial Special hi def link fetchmailSet Keyword hi def link fetchmailOptions Identifier let b:current_syntax = "fetchmail" let &cpo = s:cpo_save unlet s:cpo_save