Mercurial > vim
view runtime/syntax/natural.vim @ 34684:faf891660963 v9.1.0223
patch 9.1.0223: code duplication in loop to add active text properties
Commit: https://github.com/vim/vim/commit/1134fdd1b369119d0d6992e3120bb5f7c788b697
Author: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Date: Thu Mar 28 11:49:46 2024 +0100
patch 9.1.0223: code duplication in loop to add active text properties
Problem: There are two dense conditions with duplication that needs to
be kept in sync between the while loop break condition and the
condition to skip certain text properties.
Solution: Refactor the loop by moving while loop conditions into the
body of the while loop so they can be shared with skip
conditions. `break` and an `active` variable are used to
handle the outcome of these merged conditions.
(Dylan Thacker-Smith)
closes: #14307
Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 28 Mar 2024 12:00:05 +0100 |
parents | 46763b01cd9a |
children |
line wrap: on
line source
" Vim syntax file " " Language: NATURAL " Version: 2.1.0.5 " Maintainer: Marko von Oppen <marko@von-oppen.com> " Last Changed: 2012-02-05 18:50:43 " Support: http://www.von-oppen.com/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword+=-,*,#,+,_,/ let s:cpo_save = &cpo set cpo&vim " NATURAL is case insensitive syntax case ignore " preprocessor syn keyword naturalInclude include nextgroup=naturalObjName skipwhite " define data syn keyword naturalKeyword define data end-define syn keyword naturalKeyword independent global parameter local redefine view syn keyword naturalKeyword const[ant] init initial " loops syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram syn keyword naturalLoop end-all sort end-sort sorted descending ascending syn keyword naturalRepeat repeat end-repeat while until for step end-for syn keyword naturalKeyword in file with field starting from ending at thru by isn where syn keyword naturalError on error end-error syn keyword naturalKeyword accept reject end-enddata number unique retain as release syn keyword naturalKeyword start end-start break end-break physical page top sequence syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing syn keyword naturalKeyword end-before " conditionals syn keyword naturalConditional if then else end-if end-norec syn keyword naturalConditional decide end-decide value when condition none any " assignment / calculation syn keyword naturalKeyword reset assign move left right justified compress to into edited syn keyword naturalKeyword add subtract multiply divide compute name syn keyword naturalKeyword all giving remainder rounded leaving space numeric syn keyword naturalKeyword examine full replace giving separate delimiter modified syn keyword naturalKeyword suspend identical suppress " program flow syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted syn keyword naturalFlow command call syn keyword naturalflow end-subroutine routine " file operations syn keyword naturalKeyword update store get delete end transaction work once close " other keywords syn keyword naturalKeyword first every of no record[s] found ignore immediate syn keyword naturalKeyword set settime key control stop terminate " in-/output syn keyword naturalKeyword write display input reinput notitle nohdr map newpage syn keyword naturalKeyword alarm text help eject index window base size syn keyword naturalKeyword format printer skip lines " functions syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old syn keyword naturalKeyword pos " report mode keywords syn keyword naturalRMKeyword same loop obtain indexed do doend " Subroutine name syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" " Labels syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" " mark keyword special handling syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" " System variables syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" "integer number, or floating point number without a dot. syn match naturalNumber "\<-\=\d\+\>" "floating point number, with dot syn match naturalNumber "\<-\=\d\+\.\d\+\>" "floating point number, starting with a dot syn match naturalNumber "\.\d\+" " Formats in write statement syn match naturalFormat "\<\d\+[TX]\>" " String and Character contstants syn match naturalString "H'\x\+'" syn region naturalString start=+"+ end=+"+ syn region naturalString start=+'+ end=+'+ " Type definition syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" syn match naturalType contained "\<[CL]\>" " "TODO" / other comments syn keyword naturalTodo contained todo test syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 " comments syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn match naturalComment "^\*$" syn match naturalComment "^\d\{4} \*$"lc=5 " /* is legal syntax in parentheses e.g. "#ident(label./*)" syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark " operators syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified " constants syn keyword naturalBoolean true false syn match naturalLineNo "^\d\{4}" " identifiers syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" " parentheses syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment syn match naturalLineRef "(\d\{4})" " build syntax groups syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean " folding if v:version >= 600 set foldignore=* endif " The default methods for highlighting. Can be overridden later " Constants hi def link naturalFormat Constant hi def link naturalAttribute Constant hi def link naturalNumber Number hi def link naturalString String hi def link naturalBoolean Boolean " All kinds of keywords hi def link naturalConditional Conditional hi def link naturalRepeat Repeat hi def link naturalLoop Repeat hi def link naturalFlow Keyword hi def link naturalError Keyword hi def link naturalKeyword Keyword hi def link naturalOperator Operator hi def link naturalParGui Operator " Labels hi def link naturalLabel Label hi def link naturalRefLabel Label " Comments hi def link naturalPComment Comment hi def link naturalComment Comment hi def link naturalTodo Todo hi def link naturalCommentMark PreProc hi def link naturalInclude Include hi def link naturalSysVar Identifier hi def link naturalLineNo LineNr hi def link naturalLineRef Error hi def link naturalSpecial Special hi def link naturalComKey Todo " illegal things hi def link naturalRMKeyword Error hi def link naturalLegalIdent Error hi def link naturalType Type hi def link naturalFunction Function hi def link naturalObjName PreProc let b:current_syntax = "natural" let &cpo = s:cpo_save unlet s:cpo_save " vim:set ts=8 sw=8 noet ft=vim list: