Mercurial > vim
view runtime/syntax/murphi.vim @ 34379:37b4c89ba420 v9.1.0116
patch 9.1.0116: win_split_ins may not check available room
Commit: https://github.com/vim/vim/commit/0fd44a5ad81ade342cb54d8984965bdedd2272c8
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Tue Feb 20 20:28:15 2024 +0100
patch 9.1.0116: win_split_ins may not check available room
Problem: win_split_ins has no check for E36 when moving an existing
window
Solution: check for room and fix the issues in f_win_splitmove()
(Sean Dewar)
win_split_ins has no check for E36 when moving an existing window,
allowing for layouts with many overlapping zero-sized windows to be
created (which may also cause drawing issues with tablines and such).
f_win_splitmove also has some bugs.
So check for room and fix the issues in f_win_splitmove. Handle failure
in the two relevant win_split_ins callers by restoring the original
layout, and factor the common logic into win_splitmove.
Don't check for room when opening an autocommand window, as it's a
temporary window that's rarely interacted with or drawn anyhow, and is
rather important for some autocommands.
Issues fixed in f_win_splitmove:
- Error if splitting is disallowed.
- Fix heap-use-after-frees if autocommands fired from switching to "targetwin"
close "wp" or "oldwin".
- Fix splitting the wrong window if autocommands fired from switching to
"targetwin" switch to a different window.
- Ensure -1 is returned for all errors.
Also handle allocation failure a bit earlier in make_snapshot (callers,
except win_splitmove, don't really care if a snapshot can't be made, so
just ignore the return value).
Note: Test_smoothscroll_in_zero_width_window failed after these changes with
E36, as it was using the previous behaviour to create a zero-width window.
I've fixed the test such that it fails with UBSAN as expected when v9.0.1367 is
reverted (and simplified it too).
related: #14042
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 20 Feb 2024 22:30:04 +0100 |
parents | cc953757ed2a |
children |
line wrap: on
line source
" Vim syntax file " Language: Murphi model checking language " Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com> " Last Change: 2019 Aug 27 " Version: 2 " Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu> if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Keywords are case insensitive. " Keep these in alphabetical order. syntax case ignore syn keyword murphiKeyword alias syn keyword murphiStructure array syn keyword murphiKeyword assert syn keyword murphiKeyword begin syn keyword murphiType boolean syn keyword murphiKeyword by syn keyword murphiLabel case syn keyword murphiKeyword clear syn keyword murphiLabel const syn keyword murphiRepeat do syn keyword murphiConditional else syn keyword murphiConditional elsif syn keyword murphiKeyword end syn keyword murphiKeyword endalias syn keyword murphiRepeat endexists syn keyword murphiRepeat endfor syn keyword murphiRepeat endforall syn keyword murphiKeyword endfunction syn keyword murphiConditional endif syn keyword murphiKeyword endprocedure syn keyword murphiStructure endrecord syn keyword murphiKeyword endrule syn keyword murphiKeyword endruleset syn keyword murphiKeyword endstartstate syn keyword murphiConditional endswitch syn keyword murphiRepeat endwhile syn keyword murphiStructure enum syn keyword murphiKeyword error syn keyword murphiRepeat exists syn keyword murphiBoolean false syn keyword murphiRepeat for syn keyword murphiRepeat forall syn keyword murphiKeyword function syn keyword murphiConditional if syn keyword murphiKeyword in syn keyword murphiKeyword interleaved syn keyword murphiLabel invariant syn keyword murphiFunction ismember syn keyword murphiFunction isundefined syn keyword murphiKeyword log syn keyword murphiStructure of syn keyword murphiType multiset syn keyword murphiFunction multisetadd syn keyword murphiFunction multisetcount syn keyword murphiFunction multisetremove syn keyword murphiFunction multisetremovepred syn keyword murphiKeyword procedure syn keyword murphiKeyword program syn keyword murphiKeyword put syn keyword murphiStructure record syn keyword murphiKeyword return syn keyword murphiLabel rule syn keyword murphiLabel ruleset syn keyword murphiType scalarset syn keyword murphiLabel startstate syn keyword murphiConditional switch syn keyword murphiConditional then syn keyword murphiRepeat to syn keyword murphiKeyword traceuntil syn keyword murphiBoolean true syn keyword murphiLabel type syn keyword murphiKeyword undefine syn keyword murphiStructure union syn keyword murphiLabel var syn keyword murphiRepeat while syn keyword murphiTodo contained todo xxx fixme syntax case match " Integers. syn match murphiNumber "\<\d\+\>" " Operators and special characters. syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\." syn match murphiDelimiter "\(:=\@!\|[;,]\)" syn match murphiSpecial "[()\[\]]" " Double equal sign is a common error: use one equal sign for equality testing. syn match murphiError "==[^>]"he=e-1 " Double && and || are errors. syn match murphiError "&&\|||" " Strings. This is defined so late so that it overrides previous matches. syn region murphiString start=+"+ end=+"+ " Comments. This is defined so late so that it overrides previous matches. syn region murphiComment start="--" end="$" contains=murphiTodo syn region murphiComment start="/\*" end="\*/" contains=murphiTodo " Link the rules to some groups. hi def link murphiComment Comment hi def link murphiString String hi def link murphiNumber Number hi def link murphiBoolean Boolean hi def link murphiIdentifier Identifier hi def link murphiFunction Function hi def link murphiStatement Statement hi def link murphiConditional Conditional hi def link murphiRepeat Repeat hi def link murphiLabel Label hi def link murphiOperator Operator hi def link murphiKeyword Keyword hi def link murphiType Type hi def link murphiStructure Structure hi def link murphiSpecial Special hi def link murphiDelimiter Delimiter hi def link murphiError Error hi def link murphiTodo Todo let b:current_syntax = "murphi"