Mercurial > vim
view runtime/syntax/murphi.vim @ 34536:ad6cd802579d v9.1.0170
patch 9.1.0170: Re-allow curwin == prevwin, but document it instead
Commit: https://github.com/vim/vim/commit/d64801e913314d2e19dbb38f60e6d285238debff
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Tue Mar 12 20:46:12 2024 +0100
patch 9.1.0170: Re-allow curwin == prevwin, but document it instead
Problem: more places exist where curwin == prevwin, and it may even be
expected in some cases.
Solution: revert v9.1.0001, but document that it's possible instead.
(Sean Dewar)
I've had a change of heart for the following reasons:
- A quick 'n dirty [GitHub code
search](https://github.com/search?q=%2F%28winnr%5C%28%5C%29%5Cs*%3D%3D%5Cs*winnr%5C%28%5B%27%22%5D%23%5B%27%22%5D%5C%29%7Cwinnr%5C%28%5B%27%22%5D%23%5B%27%22%5D%5C%29%5Cs*%3D%3D%5Cs*winnr%5C%28%5C%29%29%2F&type=code)
reveals some cases where it's expected in the wild.
Particularly, it made me aware `winnr() == winnr('#')` is possible when curwin
is changed temporarily during the evaluation of a &statusline expression item
(`%{...}`), and is used to show something different on the statusline
belonging to the previous window; that behaviour wasn't changed in v9.1.0001,
but it means curwin == prevwin makes sense in some cases.
- The definition and call sites of back_to_prevwin imply some expectation that
prevwin == wp (== curwin) is possible, as it's used to skip entering the
prevwin in that case.
- Prior to v9.1.0001, `:wincmd p` would not beep in the case that was patched in
v9.1.0001, but now does. That resulted in #14047 being opened, as it affected
the CtrlP plugin.
I find it odd that `:wincmd p` had cases where it wouldn't beep despite doing
nothing, but it may be preferable to keep things that way (or instead also
beep if curwin == prevwin, if that's preferred).
- After more digging, I found cases in win_free_mem, enter_tabpage,
aucmd_restbuf and qf_open_new_cwindow where curwin == prevwin is possible
(many of them from autocommands). Others probably exist too, especially in
places where curwin is changed temporarily.
fixes: #14047
closes: #14186
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, 12 Mar 2024 21:00:11 +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"