From 2eae5db069dc171f74cd863487655f6a88e5384d Mon Sep 17 00:00:00 2001 From: Mehmet Samet Duman Date: Fri, 3 Apr 2026 22:21:25 +0300 Subject: NOISSUE rebrand vim to MNV's not Vim Signed-off-by: Mehmet Samet Duman --- uvim/runtime/syntax/modula2/opt/iso.mnv | 380 +++++++++++++++++++++++++++ uvim/runtime/syntax/modula2/opt/iso.vim | 380 --------------------------- uvim/runtime/syntax/modula2/opt/pim.mnv | 377 ++++++++++++++++++++++++++ uvim/runtime/syntax/modula2/opt/pim.vim | 377 -------------------------- uvim/runtime/syntax/modula2/opt/r10.mnv | 452 ++++++++++++++++++++++++++++++++ uvim/runtime/syntax/modula2/opt/r10.vim | 452 -------------------------------- 6 files changed, 1209 insertions(+), 1209 deletions(-) create mode 100644 uvim/runtime/syntax/modula2/opt/iso.mnv delete mode 100644 uvim/runtime/syntax/modula2/opt/iso.vim create mode 100644 uvim/runtime/syntax/modula2/opt/pim.mnv delete mode 100644 uvim/runtime/syntax/modula2/opt/pim.vim create mode 100644 uvim/runtime/syntax/modula2/opt/r10.mnv delete mode 100644 uvim/runtime/syntax/modula2/opt/r10.vim (limited to 'uvim/runtime/syntax/modula2') diff --git a/uvim/runtime/syntax/modula2/opt/iso.mnv b/uvim/runtime/syntax/modula2/opt/iso.mnv new file mode 100644 index 0000000000..270fa34d2e --- /dev/null +++ b/uvim/runtime/syntax/modula2/opt/iso.mnv @@ -0,0 +1,380 @@ +" MNV syntax file +" Language: Modula-2 (ISO) +" Maintainer: B.Kowarsch +" Last Change: 2016 August 22 + +" ---------------------------------------------------- +" THIS FILE IS LICENSED UNDER THE MNV LICENSE +" see https://github.com/Project-Tick/Project-Tick/blob/master/LICENSE +" ---------------------------------------------------- + +" Remarks: +" MNV Syntax files are available for the following Modula-2 dialects: +" * for the PIM dialect : m2pim.mnv +" * for the ISO dialect : m2iso.mnv (this file) +" * for the R10 dialect : m2r10.mnv + +" ----------------------------------------------------------------------------- +" This syntax description follows ISO standard IS-10514 (aka ISO Modula-2) +" with the addition of the following language extensions: +" * non-standard types LONGCARD and LONGBITSET +" * non-nesting code disabling tags ?< and >? at the start of a line +" ----------------------------------------------------------------------------- + +" Parameters: +" +" MNV's filetype script recognises Modula-2 dialect tags within the first 200 +" lines of Modula-2 .def and .mod input files. The script sets filetype and +" dialect automatically when a valid dialect tag is found in the input file. +" The dialect tag for the ISO dialect is (*!m2iso*). It is recommended to put +" the tag immediately after the module header in the Modula-2 input file. +" +" Example: +" DEFINITION MODULE Foolib; (*!m2iso*) +" +" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the +" dialect cannot be determined from the contents of the Modula-2 input file: +" if defined and set to 'm2iso', the default dialect is ISO. +" +" Variable g:modula2_iso_allow_lowline controls support for lowline in identifiers: +" if defined and set to a non-zero value, they are recognised, otherwise not +" +" Variable g:modula2_iso_disallow_octals controls the rendering of octal literals: +" if defined and set to a non-zero value, they are rendered as errors. +" +" Variable g:modula2_iso_disallow_synonyms controls the rendering of @, & and ~: +" if defined and set to a non-zero value, they are rendered as errors. +" +" Variables may be defined in MNV startup file .mnvrc +" +" Examples: +" let g:modula2_default_dialect = 'm2iso' +" let g:modula2_iso_allow_lowline = 1 +" let g:modula2_iso_disallow_octals = 1 +" let g:modula2_iso_disallow_synonyms = 1 + + +if exists("b:current_syntax") + finish +endif + +" Modula-2 is case sensitive +syn case match + + +" ----------------------------------------------------------------------------- +" Reserved Words +" ----------------------------------------------------------------------------- +syn keyword modula2Resword AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE +syn keyword modula2Resword ELSIF EXCEPT EXIT EXPORT FINALLY FOR FORWARD FROM IF +syn keyword modula2Resword IMPLEMENTATION IMPORT IN LOOP MOD NOT OF OR PACKEDSET +syn keyword modula2Resword POINTER QUALIFIED RECORD REPEAT REM RETRY RETURN SET +syn keyword modula2Resword THEN TO TYPE UNTIL VAR WHILE WITH + + +" ----------------------------------------------------------------------------- +" Builtin Constant Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ConstIdent FALSE NIL TRUE INTERRUPTIBLE UNINTERRUPTIBLE + + +" ----------------------------------------------------------------------------- +" Builtin Type Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2TypeIdent BITSET BOOLEAN CHAR PROC +syn keyword modula2TypeIdent CARDINAL INTEGER LONGINT REAL LONGREAL +syn keyword modula2TypeIdent COMPLEX LONGCOMPLEX PROTECTION + + +" ----------------------------------------------------------------------------- +" Builtin Procedure and Function Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ProcIdent CAP DEC EXCL HALT INC INCL +syn keyword modula2FuncIdent ABS CHR CMPLX FLOAT HIGH IM INT LENGTH LFLOAT MAX MIN +syn keyword modula2FuncIdent ODD ORD RE SIZE TRUNC VAL + + +" ----------------------------------------------------------------------------- +" Wirthian Macro Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2MacroIdent NEW DISPOSE + + +" ----------------------------------------------------------------------------- +" Unsafe Facilities via Pseudo-Module SYSTEM +" ----------------------------------------------------------------------------- +syn keyword modula2UnsafeIdent ADDRESS BYTE LOC WORD +syn keyword modula2UnsafeIdent ADR CAST TSIZE SYSTEM +syn keyword modula2UnsafeIdent MAKEADR ADDADR SUBADR DIFADR ROTATE SHIFT + + +" ----------------------------------------------------------------------------- +" Non-Portable Language Extensions +" ----------------------------------------------------------------------------- +syn keyword modula2NonPortableIdent LONGCARD LONGBITSET + + +" ----------------------------------------------------------------------------- +" User Defined Identifiers +" ----------------------------------------------------------------------------- +syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" +syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" + + +" ----------------------------------------------------------------------------- +" String Literals +" ----------------------------------------------------------------------------- +syn region modula2String start=/"/ end=/"/ oneline +syn region modula2String start=/'/ end=/'/ oneline + + +" ----------------------------------------------------------------------------- +" Numeric Literals +" ----------------------------------------------------------------------------- +syn match modula2Num + \ "\(\([0-7]\+\)[BC]\@!\|[89]\)[0-9]*\(\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?\)\?" +syn match modula2Num "[0-9A-F]\+H" +syn match modula2Octal "[0-7]\+[BC]" + + +" ----------------------------------------------------------------------------- +" Punctuation +" ----------------------------------------------------------------------------- +syn match modula2Punctuation + \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" +syn match modula2Synonym "[@&~]" + + +" ----------------------------------------------------------------------------- +" Pragmas +" ----------------------------------------------------------------------------- +syn region modula2Pragma start="<\*" end="\*>" +syn match modula2DialectTag "(\*!m2iso\(+[a-z0-9]\+\)\?\*)" + +" ----------------------------------------------------------------------------- +" Block Comments +" ----------------------------------------------------------------------------- +syn region modula2Comment start="(\*\(!m2iso\(+[a-z0-9]\+\)\?\*)\)\@!" end="\*)" + \ contains = modula2Comment, modula2CommentKey, modula2TechDebtMarker +syn match modula2CommentKey "[Aa]uthor[s]\?\|[Cc]opyright\|[Ll]icense\|[Ss]ynopsis" +syn match modula2CommentKey "\([Pp]re\|[Pp]ost\|[Ee]rror\)\-condition[s]\?:" + + +" ----------------------------------------------------------------------------- +" Technical Debt Markers +" ----------------------------------------------------------------------------- +syn keyword modula2TechDebtMarker contained DEPRECATED FIXME +syn match modula2TechDebtMarker "TODO[:]\?" contained + +" ----------------------------------------------------------------------------- +" Disabled Code Sections +" ----------------------------------------------------------------------------- +syn region modula2DisabledCode start="^?<" end="^>?" + + +" ----------------------------------------------------------------------------- +" Headers +" ----------------------------------------------------------------------------- +" !!! this section must be second last !!! + +" new module header +syn match modula2ModuleHeader + \ "MODULE\( [A-Z][a-zA-Z0-9]*\)\?" + \ contains = modula2ReswordModule, modula2ModuleIdent + +syn match modula2ModuleIdent + \ "[A-Z][a-zA-Z0-9]*" contained + +syn match modula2ModuleTail + \ "END [A-Z][a-zA-Z0-9]*\.$" + \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation + +" new procedure header +syn match modula2ProcedureHeader + \ "PROCEDURE\( [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)\?" + \ contains = modula2ReswordProcedure, + \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent + +syn match modula2ProcedureIdent + \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained + +syn match modula2ProcedureLowlineIdent + \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained + +syn match modula2ProcedureTail + \ "END\( \([a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)[.;]$\)\?" + \ contains = modula2ReswordEnd, + \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, + \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent + +syn keyword modula2ReswordModule contained MODULE +syn keyword modula2ReswordProcedure contained PROCEDURE +syn keyword modula2ReswordEnd contained END + + +" ----------------------------------------------------------------------------- +" Illegal Symbols +" ----------------------------------------------------------------------------- +" !!! this section must be last !!! + +" any '`' '!' '$' '%' or '\' +syn match modula2IllegalChar "[`!$%\\]" + +" any solitary sequence of '_' +syn match modula2IllegalChar "\<_\+\>" + +" any '?' at start of line if not followed by '<' +syn match modula2IllegalChar "^?\(<\)\@!" + +" any '?' not following '>' at start of line +syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" + + +" ----------------------------------------------------------------------------- +" Define Rendering Styles +" ----------------------------------------------------------------------------- + +" highlight default link modula2PredefIdentStyle Keyword +" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle +" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle +" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle +" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle +" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle + +highlight default link modula2ConstIdentStyle Constant +highlight default link modula2TypeIdentStyle Type +highlight default link modula2ProcIdentStyle Function +highlight default link modula2FuncIdentStyle Function +highlight default link modula2MacroIdentStyle Function +highlight default link modula2UnsafeIdentStyle Question +highlight default link modula2NonPortableIdentStyle Question +highlight default link modula2StringLiteralStyle String +highlight default link modula2CommentStyle Comment +highlight default link modula2PragmaStyle PreProc +highlight default link modula2DialectTagStyle SpecialComment +highlight default link modula2TechDebtMarkerStyle SpecialComment +highlight default link modula2ReswordStyle Keyword +highlight default link modula2HeaderIdentStyle Function +highlight default link modula2UserDefIdentStyle Normal +highlight default link modula2NumericLiteralStyle Number +highlight default link modula2PunctuationStyle Delimiter +highlight default link modula2CommentKeyStyle SpecialComment +highlight default link modula2DisabledCodeStyle NonText + +" ----------------------------------------------------------------------------- +" Assign Rendering Styles +" ----------------------------------------------------------------------------- + +" headers +highlight default link modula2ModuleIdent modula2HeaderIdentStyle +highlight default link modula2ProcedureIdent modula2HeaderIdentStyle +highlight default link modula2ModuleHeader Normal +highlight default link modula2ModuleTail Normal +highlight default link modula2ProcedureHeader Normal +highlight default link modula2ProcedureTail Normal + +" lowline identifiers are rendered as errors if g:modula2_iso_allow_lowline is unset +if exists("g:modula2_iso_allow_lowline") + if g:modula2_iso_allow_lowline != 0 + highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle + else + highlight default link modula2ProcedureLowlineIdent Error + endif +else + highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle +endif + +" reserved words +highlight default link modula2Resword modula2ReswordStyle +highlight default link modula2ReswordModule modula2ReswordStyle +highlight default link modula2ReswordProcedure modula2ReswordStyle +highlight default link modula2ReswordEnd modula2ReswordStyle + +" predefined identifiers +highlight default link modula2ConstIdent modula2ConstIdentStyle +highlight default link modula2TypeIdent modula2TypeIdentStyle +highlight default link modula2ProcIdent modula2ProcIdentStyle +highlight default link modula2FuncIdent modula2FuncIdentStyle +highlight default link modula2MacroIdent modula2MacroIdentStyle + +" unsafe and non-portable identifiers +highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle +highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle + +" user defined identifiers +highlight default link modula2Ident modula2UserDefIdentStyle + +" lowline identifiers are rendered as errors if g:modula2_iso_allow_lowline is unset +if exists("g:modula2_iso_allow_lowline") + if g:modula2_iso_allow_lowline != 0 + highlight default link modula2LowLineIdent modula2UserDefIdentStyle + else + highlight default link modula2LowLineIdent Error + endif +else + highlight default link modula2LowLineIdent modula2UserDefIdentStyle +endif + +" literals +highlight default link modula2String modula2StringLiteralStyle +highlight default link modula2Num modula2NumericLiteralStyle + +" octal literals are rendered as errors if g:modula2_iso_disallow_octals is set +if exists("g:modula2_iso_disallow_octals") + if g:modula2_iso_disallow_octals != 0 + highlight default link modula2Octal Error + else + highlight default link modula2Octal modula2NumericLiteralStyle + endif +else + highlight default link modula2Octal modula2NumericLiteralStyle +endif + +" punctuation +highlight default link modula2Punctuation modula2PunctuationStyle + +" synonyms & and ~ are rendered as errors if g:modula2_iso_disallow_synonyms is set +if exists("g:modula2_iso_disallow_synonyms") + if g:modula2_iso_disallow_synonyms != 0 + highlight default link modula2Synonym Error + else + highlight default link modula2Synonym modula2PunctuationStyle + endif +else + highlight default link modula2Synonym modula2PunctuationStyle +endif + +" pragmas +highlight default link modula2Pragma modula2PragmaStyle +highlight default link modula2DialectTag modula2DialectTagStyle + +" comments +highlight default link modula2Comment modula2CommentStyle +highlight default link modula2CommentKey modula2CommentKeyStyle + +" technical debt markers +highlight default link modula2TechDebtMarker modula2TechDebtMarkerStyle + +" disabled code +highlight default link modula2DisabledCode modula2DisabledCodeStyle + +" illegal symbols +highlight default link modula2IllegalChar Error +highlight default link modula2IllegalIdent Error + + +let b:current_syntax = "modula2" + +" mnv: ts=4 + +" END OF FILE diff --git a/uvim/runtime/syntax/modula2/opt/iso.vim b/uvim/runtime/syntax/modula2/opt/iso.vim deleted file mode 100644 index 5bd24f6885..0000000000 --- a/uvim/runtime/syntax/modula2/opt/iso.vim +++ /dev/null @@ -1,380 +0,0 @@ -" Vim syntax file -" Language: Modula-2 (ISO) -" Maintainer: B.Kowarsch -" Last Change: 2016 August 22 - -" ---------------------------------------------------- -" THIS FILE IS LICENSED UNDER THE VIM LICENSE -" see https://github.com/vim/vim/blob/master/LICENSE -" ---------------------------------------------------- - -" Remarks: -" Vim Syntax files are available for the following Modula-2 dialects: -" * for the PIM dialect : m2pim.vim -" * for the ISO dialect : m2iso.vim (this file) -" * for the R10 dialect : m2r10.vim - -" ----------------------------------------------------------------------------- -" This syntax description follows ISO standard IS-10514 (aka ISO Modula-2) -" with the addition of the following language extensions: -" * non-standard types LONGCARD and LONGBITSET -" * non-nesting code disabling tags ?< and >? at the start of a line -" ----------------------------------------------------------------------------- - -" Parameters: -" -" Vim's filetype script recognises Modula-2 dialect tags within the first 200 -" lines of Modula-2 .def and .mod input files. The script sets filetype and -" dialect automatically when a valid dialect tag is found in the input file. -" The dialect tag for the ISO dialect is (*!m2iso*). It is recommended to put -" the tag immediately after the module header in the Modula-2 input file. -" -" Example: -" DEFINITION MODULE Foolib; (*!m2iso*) -" -" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the -" dialect cannot be determined from the contents of the Modula-2 input file: -" if defined and set to 'm2iso', the default dialect is ISO. -" -" Variable g:modula2_iso_allow_lowline controls support for lowline in identifiers: -" if defined and set to a non-zero value, they are recognised, otherwise not -" -" Variable g:modula2_iso_disallow_octals controls the rendering of octal literals: -" if defined and set to a non-zero value, they are rendered as errors. -" -" Variable g:modula2_iso_disallow_synonyms controls the rendering of @, & and ~: -" if defined and set to a non-zero value, they are rendered as errors. -" -" Variables may be defined in Vim startup file .vimrc -" -" Examples: -" let g:modula2_default_dialect = 'm2iso' -" let g:modula2_iso_allow_lowline = 1 -" let g:modula2_iso_disallow_octals = 1 -" let g:modula2_iso_disallow_synonyms = 1 - - -if exists("b:current_syntax") - finish -endif - -" Modula-2 is case sensitive -syn case match - - -" ----------------------------------------------------------------------------- -" Reserved Words -" ----------------------------------------------------------------------------- -syn keyword modula2Resword AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE -syn keyword modula2Resword ELSIF EXCEPT EXIT EXPORT FINALLY FOR FORWARD FROM IF -syn keyword modula2Resword IMPLEMENTATION IMPORT IN LOOP MOD NOT OF OR PACKEDSET -syn keyword modula2Resword POINTER QUALIFIED RECORD REPEAT REM RETRY RETURN SET -syn keyword modula2Resword THEN TO TYPE UNTIL VAR WHILE WITH - - -" ----------------------------------------------------------------------------- -" Builtin Constant Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ConstIdent FALSE NIL TRUE INTERRUPTIBLE UNINTERRUPTIBLE - - -" ----------------------------------------------------------------------------- -" Builtin Type Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2TypeIdent BITSET BOOLEAN CHAR PROC -syn keyword modula2TypeIdent CARDINAL INTEGER LONGINT REAL LONGREAL -syn keyword modula2TypeIdent COMPLEX LONGCOMPLEX PROTECTION - - -" ----------------------------------------------------------------------------- -" Builtin Procedure and Function Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ProcIdent CAP DEC EXCL HALT INC INCL -syn keyword modula2FuncIdent ABS CHR CMPLX FLOAT HIGH IM INT LENGTH LFLOAT MAX MIN -syn keyword modula2FuncIdent ODD ORD RE SIZE TRUNC VAL - - -" ----------------------------------------------------------------------------- -" Wirthian Macro Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2MacroIdent NEW DISPOSE - - -" ----------------------------------------------------------------------------- -" Unsafe Facilities via Pseudo-Module SYSTEM -" ----------------------------------------------------------------------------- -syn keyword modula2UnsafeIdent ADDRESS BYTE LOC WORD -syn keyword modula2UnsafeIdent ADR CAST TSIZE SYSTEM -syn keyword modula2UnsafeIdent MAKEADR ADDADR SUBADR DIFADR ROTATE SHIFT - - -" ----------------------------------------------------------------------------- -" Non-Portable Language Extensions -" ----------------------------------------------------------------------------- -syn keyword modula2NonPortableIdent LONGCARD LONGBITSET - - -" ----------------------------------------------------------------------------- -" User Defined Identifiers -" ----------------------------------------------------------------------------- -syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" -syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" - - -" ----------------------------------------------------------------------------- -" String Literals -" ----------------------------------------------------------------------------- -syn region modula2String start=/"/ end=/"/ oneline -syn region modula2String start=/'/ end=/'/ oneline - - -" ----------------------------------------------------------------------------- -" Numeric Literals -" ----------------------------------------------------------------------------- -syn match modula2Num - \ "\(\([0-7]\+\)[BC]\@!\|[89]\)[0-9]*\(\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?\)\?" -syn match modula2Num "[0-9A-F]\+H" -syn match modula2Octal "[0-7]\+[BC]" - - -" ----------------------------------------------------------------------------- -" Punctuation -" ----------------------------------------------------------------------------- -syn match modula2Punctuation - \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" -syn match modula2Synonym "[@&~]" - - -" ----------------------------------------------------------------------------- -" Pragmas -" ----------------------------------------------------------------------------- -syn region modula2Pragma start="<\*" end="\*>" -syn match modula2DialectTag "(\*!m2iso\(+[a-z0-9]\+\)\?\*)" - -" ----------------------------------------------------------------------------- -" Block Comments -" ----------------------------------------------------------------------------- -syn region modula2Comment start="(\*\(!m2iso\(+[a-z0-9]\+\)\?\*)\)\@!" end="\*)" - \ contains = modula2Comment, modula2CommentKey, modula2TechDebtMarker -syn match modula2CommentKey "[Aa]uthor[s]\?\|[Cc]opyright\|[Ll]icense\|[Ss]ynopsis" -syn match modula2CommentKey "\([Pp]re\|[Pp]ost\|[Ee]rror\)\-condition[s]\?:" - - -" ----------------------------------------------------------------------------- -" Technical Debt Markers -" ----------------------------------------------------------------------------- -syn keyword modula2TechDebtMarker contained DEPRECATED FIXME -syn match modula2TechDebtMarker "TODO[:]\?" contained - -" ----------------------------------------------------------------------------- -" Disabled Code Sections -" ----------------------------------------------------------------------------- -syn region modula2DisabledCode start="^?<" end="^>?" - - -" ----------------------------------------------------------------------------- -" Headers -" ----------------------------------------------------------------------------- -" !!! this section must be second last !!! - -" new module header -syn match modula2ModuleHeader - \ "MODULE\( [A-Z][a-zA-Z0-9]*\)\?" - \ contains = modula2ReswordModule, modula2ModuleIdent - -syn match modula2ModuleIdent - \ "[A-Z][a-zA-Z0-9]*" contained - -syn match modula2ModuleTail - \ "END [A-Z][a-zA-Z0-9]*\.$" - \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation - -" new procedure header -syn match modula2ProcedureHeader - \ "PROCEDURE\( [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)\?" - \ contains = modula2ReswordProcedure, - \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent - -syn match modula2ProcedureIdent - \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained - -syn match modula2ProcedureLowlineIdent - \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained - -syn match modula2ProcedureTail - \ "END\( \([a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)[.;]$\)\?" - \ contains = modula2ReswordEnd, - \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, - \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent - -syn keyword modula2ReswordModule contained MODULE -syn keyword modula2ReswordProcedure contained PROCEDURE -syn keyword modula2ReswordEnd contained END - - -" ----------------------------------------------------------------------------- -" Illegal Symbols -" ----------------------------------------------------------------------------- -" !!! this section must be last !!! - -" any '`' '!' '$' '%' or '\' -syn match modula2IllegalChar "[`!$%\\]" - -" any solitary sequence of '_' -syn match modula2IllegalChar "\<_\+\>" - -" any '?' at start of line if not followed by '<' -syn match modula2IllegalChar "^?\(<\)\@!" - -" any '?' not following '>' at start of line -syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" - - -" ----------------------------------------------------------------------------- -" Define Rendering Styles -" ----------------------------------------------------------------------------- - -" highlight default link modula2PredefIdentStyle Keyword -" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle -" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle -" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle -" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle -" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle - -highlight default link modula2ConstIdentStyle Constant -highlight default link modula2TypeIdentStyle Type -highlight default link modula2ProcIdentStyle Function -highlight default link modula2FuncIdentStyle Function -highlight default link modula2MacroIdentStyle Function -highlight default link modula2UnsafeIdentStyle Question -highlight default link modula2NonPortableIdentStyle Question -highlight default link modula2StringLiteralStyle String -highlight default link modula2CommentStyle Comment -highlight default link modula2PragmaStyle PreProc -highlight default link modula2DialectTagStyle SpecialComment -highlight default link modula2TechDebtMarkerStyle SpecialComment -highlight default link modula2ReswordStyle Keyword -highlight default link modula2HeaderIdentStyle Function -highlight default link modula2UserDefIdentStyle Normal -highlight default link modula2NumericLiteralStyle Number -highlight default link modula2PunctuationStyle Delimiter -highlight default link modula2CommentKeyStyle SpecialComment -highlight default link modula2DisabledCodeStyle NonText - -" ----------------------------------------------------------------------------- -" Assign Rendering Styles -" ----------------------------------------------------------------------------- - -" headers -highlight default link modula2ModuleIdent modula2HeaderIdentStyle -highlight default link modula2ProcedureIdent modula2HeaderIdentStyle -highlight default link modula2ModuleHeader Normal -highlight default link modula2ModuleTail Normal -highlight default link modula2ProcedureHeader Normal -highlight default link modula2ProcedureTail Normal - -" lowline identifiers are rendered as errors if g:modula2_iso_allow_lowline is unset -if exists("g:modula2_iso_allow_lowline") - if g:modula2_iso_allow_lowline != 0 - highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle - else - highlight default link modula2ProcedureLowlineIdent Error - endif -else - highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle -endif - -" reserved words -highlight default link modula2Resword modula2ReswordStyle -highlight default link modula2ReswordModule modula2ReswordStyle -highlight default link modula2ReswordProcedure modula2ReswordStyle -highlight default link modula2ReswordEnd modula2ReswordStyle - -" predefined identifiers -highlight default link modula2ConstIdent modula2ConstIdentStyle -highlight default link modula2TypeIdent modula2TypeIdentStyle -highlight default link modula2ProcIdent modula2ProcIdentStyle -highlight default link modula2FuncIdent modula2FuncIdentStyle -highlight default link modula2MacroIdent modula2MacroIdentStyle - -" unsafe and non-portable identifiers -highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle -highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle - -" user defined identifiers -highlight default link modula2Ident modula2UserDefIdentStyle - -" lowline identifiers are rendered as errors if g:modula2_iso_allow_lowline is unset -if exists("g:modula2_iso_allow_lowline") - if g:modula2_iso_allow_lowline != 0 - highlight default link modula2LowLineIdent modula2UserDefIdentStyle - else - highlight default link modula2LowLineIdent Error - endif -else - highlight default link modula2LowLineIdent modula2UserDefIdentStyle -endif - -" literals -highlight default link modula2String modula2StringLiteralStyle -highlight default link modula2Num modula2NumericLiteralStyle - -" octal literals are rendered as errors if g:modula2_iso_disallow_octals is set -if exists("g:modula2_iso_disallow_octals") - if g:modula2_iso_disallow_octals != 0 - highlight default link modula2Octal Error - else - highlight default link modula2Octal modula2NumericLiteralStyle - endif -else - highlight default link modula2Octal modula2NumericLiteralStyle -endif - -" punctuation -highlight default link modula2Punctuation modula2PunctuationStyle - -" synonyms & and ~ are rendered as errors if g:modula2_iso_disallow_synonyms is set -if exists("g:modula2_iso_disallow_synonyms") - if g:modula2_iso_disallow_synonyms != 0 - highlight default link modula2Synonym Error - else - highlight default link modula2Synonym modula2PunctuationStyle - endif -else - highlight default link modula2Synonym modula2PunctuationStyle -endif - -" pragmas -highlight default link modula2Pragma modula2PragmaStyle -highlight default link modula2DialectTag modula2DialectTagStyle - -" comments -highlight default link modula2Comment modula2CommentStyle -highlight default link modula2CommentKey modula2CommentKeyStyle - -" technical debt markers -highlight default link modula2TechDebtMarker modula2TechDebtMarkerStyle - -" disabled code -highlight default link modula2DisabledCode modula2DisabledCodeStyle - -" illegal symbols -highlight default link modula2IllegalChar Error -highlight default link modula2IllegalIdent Error - - -let b:current_syntax = "modula2" - -" vim: ts=4 - -" END OF FILE diff --git a/uvim/runtime/syntax/modula2/opt/pim.mnv b/uvim/runtime/syntax/modula2/opt/pim.mnv new file mode 100644 index 0000000000..213f224da8 --- /dev/null +++ b/uvim/runtime/syntax/modula2/opt/pim.mnv @@ -0,0 +1,377 @@ +" MNV syntax file +" Language: Modula-2 (PIM) +" Maintainer: B.Kowarsch +" Last Change: 2016 August 22 + +" ---------------------------------------------------- +" THIS FILE IS LICENSED UNDER THE MNV LICENSE +" see https://github.com/Project-Tick/Project-Tick/blob/master/LICENSE +" ---------------------------------------------------- + +" Remarks: +" MNV Syntax files are available for the following Modula-2 dialects: +" * for the PIM dialect : m2pim.mnv (this file) +" * for the ISO dialect : m2iso.mnv +" * for the R10 dialect : m2r10.mnv + +" ----------------------------------------------------------------------------- +" This syntax description follows the 3rd and 4th editions of N.Wirth's Book +" Programming in Modula-2 (aka PIM) plus the following language extensions: +" * non-leading, non-trailing, non-consecutive lowlines _ in identifiers +" * widely supported non-standard types BYTE, LONGCARD and LONGBITSET +" * non-nesting code disabling tags ?< and >? at the start of a line +" ----------------------------------------------------------------------------- + +" Parameters: +" +" MNV's filetype script recognises Modula-2 dialect tags within the first 200 +" lines of Modula-2 .def and .mod input files. The script sets filetype and +" dialect automatically when a valid dialect tag is found in the input file. +" The dialect tag for the PIM dialect is (*!m2pim*). It is recommended to put +" the tag immediately after the module header in the Modula-2 input file. +" +" Example: +" DEFINITION MODULE Foolib; (*!m2pim*) +" +" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the +" dialect cannot be determined from the contents of the Modula-2 input file: +" if defined and set to 'm2pim', the default dialect is PIM. +" +" Variable g:modula2_pim_allow_lowline controls support for lowline in identifiers: +" if defined and set to a non-zero value, they are recognised, otherwise not +" +" Variable g:modula2_pim_disallow_octals controls the rendering of octal literals: +" if defined and set to a non-zero value, they are rendered as errors. +" +" Variable g:modula2_pim_disallow_synonyms controls the rendering of & and ~: +" if defined and set to a non-zero value, they are rendered as errors. +" +" Variables may be defined in MNV startup file .mnvrc +" +" Examples: +" let g:modula2_default_dialect = 'm2pim' +" let g:modula2_pim_allow_lowline = 1 +" let g:modula2_pim_disallow_octals = 1 +" let g:modula2_pim_disallow_synonyms = 1 + + +if exists("b:current_syntax") + finish +endif + +" Modula-2 is case sensitive +syn case match + + +" ----------------------------------------------------------------------------- +" Reserved Words +" ----------------------------------------------------------------------------- +syn keyword modula2Resword AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE +syn keyword modula2Resword ELSIF EXIT EXPORT FOR FROM IF IMPLEMENTATION IMPORT +syn keyword modula2Resword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD REPEAT +syn keyword modula2Resword RETURN SET THEN TO TYPE UNTIL VAR WHILE WITH + + +" ----------------------------------------------------------------------------- +" Builtin Constant Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ConstIdent FALSE NIL TRUE + + +" ----------------------------------------------------------------------------- +" Builtin Type Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2TypeIdent BITSET BOOLEAN CHAR PROC +syn keyword modula2TypeIdent CARDINAL INTEGER LONGINT REAL LONGREAL + + +" ----------------------------------------------------------------------------- +" Builtin Procedure and Function Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ProcIdent CAP DEC EXCL HALT INC INCL +syn keyword modula2FuncIdent ABS CHR FLOAT HIGH MAX MIN ODD ORD SIZE TRUNC VAL + + +" ----------------------------------------------------------------------------- +" Wirthian Macro Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2MacroIdent NEW DISPOSE + + +" ----------------------------------------------------------------------------- +" Unsafe Facilities via Pseudo-Module SYSTEM +" ----------------------------------------------------------------------------- +syn keyword modula2UnsafeIdent ADDRESS PROCESS WORD +syn keyword modula2UnsafeIdent ADR TSIZE NEWPROCESS TRANSFER SYSTEM + + +" ----------------------------------------------------------------------------- +" Non-Portable Language Extensions +" ----------------------------------------------------------------------------- +syn keyword modula2NonPortableIdent BYTE LONGCARD LONGBITSET + + +" ----------------------------------------------------------------------------- +" User Defined Identifiers +" ----------------------------------------------------------------------------- +syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" +syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" + + +" ----------------------------------------------------------------------------- +" String Literals +" ----------------------------------------------------------------------------- +syn region modula2String start=/"/ end=/"/ oneline +syn region modula2String start=/'/ end=/'/ oneline + + +" ----------------------------------------------------------------------------- +" Numeric Literals +" ----------------------------------------------------------------------------- +syn match modula2Num + \ "\(\([0-7]\+\)[BC]\@!\|[89]\)[0-9]*\(\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?\)\?" +syn match modula2Num "[0-9A-F]\+H" +syn match modula2Octal "[0-7]\+[BC]" + + +" ----------------------------------------------------------------------------- +" Punctuation +" ----------------------------------------------------------------------------- +syn match modula2Punctuation + \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" +syn match modula2Synonym "[&~]" + + +" ----------------------------------------------------------------------------- +" Pragmas +" ----------------------------------------------------------------------------- +syn region modula2Pragma start="(\*\$" end="\*)" +syn match modula2DialectTag "(\*!m2pim\(+[a-z0-9]\+\)\?\*)" + +" ----------------------------------------------------------------------------- +" Block Comments +" ----------------------------------------------------------------------------- +syn region modula2Comment start="(\*\(\$\|!m2pim\(+[a-z0-9]\+\)\?\*)\)\@!" end="\*)" + \ contains = modula2Comment, modula2CommentKey, modula2TechDebtMarker +syn match modula2CommentKey "[Aa]uthor[s]\?\|[Cc]opyright\|[Ll]icense\|[Ss]ynopsis" +syn match modula2CommentKey "\([Pp]re\|[Pp]ost\|[Ee]rror\)\-condition[s]\?:" + + +" ----------------------------------------------------------------------------- +" Technical Debt Markers +" ----------------------------------------------------------------------------- +syn keyword modula2TechDebtMarker contained DEPRECATED FIXME +syn match modula2TechDebtMarker "TODO[:]\?" contained + +" ----------------------------------------------------------------------------- +" Disabled Code Sections +" ----------------------------------------------------------------------------- +syn region modula2DisabledCode start="^?<" end="^>?" + + +" ----------------------------------------------------------------------------- +" Headers +" ----------------------------------------------------------------------------- +" !!! this section must be second last !!! + +" new module header +syn match modula2ModuleHeader + \ "MODULE\( [A-Z][a-zA-Z0-9]*\)\?" + \ contains = modula2ReswordModule, modula2ModuleIdent + +syn match modula2ModuleIdent + \ "[A-Z][a-zA-Z0-9]*" contained + +syn match modula2ModuleTail + \ "END [A-Z][a-zA-Z0-9]*\.$" + \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation + +" new procedure header +syn match modula2ProcedureHeader + \ "PROCEDURE\( [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)\?" + \ contains = modula2ReswordProcedure, + \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent + +syn match modula2ProcedureIdent + \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained + +syn match modula2ProcedureLowlineIdent + \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained + +syn match modula2ProcedureTail + \ "END\( \([a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)[.;]$\)\?" + \ contains = modula2ReswordEnd, + \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, + \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent + +syn keyword modula2ReswordModule contained MODULE +syn keyword modula2ReswordProcedure contained PROCEDURE +syn keyword modula2ReswordEnd contained END + + +" ----------------------------------------------------------------------------- +" Illegal Symbols +" ----------------------------------------------------------------------------- +" !!! this section must be last !!! + +" any '`' '!' '@ ''$' '%' or '\' +syn match modula2IllegalChar "[`!@$%\\]" + +" any solitary sequence of '_' +syn match modula2IllegalChar "\<_\+\>" + +" any '?' at start of line if not followed by '<' +syn match modula2IllegalChar "^?\(<\)\@!" + +" any '?' not following '>' at start of line +syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" + + +" ----------------------------------------------------------------------------- +" Define Rendering Styles +" ----------------------------------------------------------------------------- + +" highlight default link modula2PredefIdentStyle Keyword +" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle +" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle +" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle +" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle +" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle + +highlight default link modula2ConstIdentStyle Constant +highlight default link modula2TypeIdentStyle Type +highlight default link modula2ProcIdentStyle Function +highlight default link modula2FuncIdentStyle Function +highlight default link modula2MacroIdentStyle Function +highlight default link modula2UnsafeIdentStyle Question +highlight default link modula2NonPortableIdentStyle Question +highlight default link modula2StringLiteralStyle String +highlight default link modula2CommentStyle Comment +highlight default link modula2PragmaStyle PreProc +highlight default link modula2DialectTagStyle SpecialComment +highlight default link modula2TechDebtMarkerStyle SpecialComment +highlight default link modula2ReswordStyle Keyword +highlight default link modula2HeaderIdentStyle Function +highlight default link modula2UserDefIdentStyle Normal +highlight default link modula2NumericLiteralStyle Number +highlight default link modula2PunctuationStyle Delimiter +highlight default link modula2CommentKeyStyle SpecialComment +highlight default link modula2DisabledCodeStyle NonText + +" ----------------------------------------------------------------------------- +" Assign Rendering Styles +" ----------------------------------------------------------------------------- + +" headers +highlight default link modula2ModuleIdent modula2HeaderIdentStyle +highlight default link modula2ProcedureIdent modula2HeaderIdentStyle +highlight default link modula2ModuleHeader Normal +highlight default link modula2ModuleTail Normal +highlight default link modula2ProcedureHeader Normal +highlight default link modula2ProcedureTail Normal + +" lowline identifiers are rendered as errors if g:modula2_pim_allow_lowline is unset +if exists("g:modula2_pim_allow_lowline") + if g:modula2_pim_allow_lowline != 0 + highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle + else + highlight default link modula2ProcedureLowlineIdent Error + endif +else + highlight default link modula2ProcedureLowlineIdent Error +endif + +" reserved words +highlight default link modula2Resword modula2ReswordStyle +highlight default link modula2ReswordModule modula2ReswordStyle +highlight default link modula2ReswordProcedure modula2ReswordStyle +highlight default link modula2ReswordEnd modula2ReswordStyle + +" predefined identifiers +highlight default link modula2ConstIdent modula2ConstIdentStyle +highlight default link modula2TypeIdent modula2TypeIdentStyle +highlight default link modula2ProcIdent modula2ProcIdentStyle +highlight default link modula2FuncIdent modula2FuncIdentStyle +highlight default link modula2MacroIdent modula2MacroIdentStyle + +" unsafe and non-portable identifiers +highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle +highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle + +" user defined identifiers +highlight default link modula2Ident modula2UserDefIdentStyle + +" lowline identifiers are rendered as errors if g:modula2_pim_allow_lowline is unset +if exists("g:modula2_pim_allow_lowline") + if g:modula2_pim_allow_lowline != 0 + highlight default link modula2LowLineIdent modula2UserDefIdentStyle + else + highlight default link modula2LowLineIdent Error + endif +else + highlight default link modula2LowLineIdent Error +endif + +" literals +highlight default link modula2String modula2StringLiteralStyle +highlight default link modula2Num modula2NumericLiteralStyle + +" octal literals are rendered as errors if g:modula2_pim_disallow_octals is set +if exists("g:modula2_pim_disallow_octals") + if g:modula2_pim_disallow_octals != 0 + highlight default link modula2Octal Error + else + highlight default link modula2Octal modula2NumericLiteralStyle + endif +else + highlight default link modula2Octal modula2NumericLiteralStyle +endif + +" punctuation +highlight default link modula2Punctuation modula2PunctuationStyle + +" synonyms & and ~ are rendered as errors if g:modula2_pim_disallow_synonyms is set +if exists("g:modula2_pim_disallow_synonyms") + if g:modula2_pim_disallow_synonyms != 0 + highlight default link modula2Synonym Error + else + highlight default link modula2Synonym modula2PunctuationStyle + endif +else + highlight default link modula2Synonym modula2PunctuationStyle +endif + +" pragmas +highlight default link modula2Pragma modula2PragmaStyle +highlight default link modula2DialectTag modula2DialectTagStyle + +" comments +highlight default link modula2Comment modula2CommentStyle +highlight default link modula2CommentKey modula2CommentKeyStyle + +" technical debt markers +highlight default link modula2TechDebtMarker modula2TechDebtMarkerStyle + +" disabled code +highlight default link modula2DisabledCode modula2DisabledCodeStyle + +" illegal symbols +highlight default link modula2IllegalChar Error +highlight default link modula2IllegalIdent Error + + +let b:current_syntax = "modula2" + +" mnv: ts=4 + +" END OF FILE diff --git a/uvim/runtime/syntax/modula2/opt/pim.vim b/uvim/runtime/syntax/modula2/opt/pim.vim deleted file mode 100644 index 1626db91cf..0000000000 --- a/uvim/runtime/syntax/modula2/opt/pim.vim +++ /dev/null @@ -1,377 +0,0 @@ -" Vim syntax file -" Language: Modula-2 (PIM) -" Maintainer: B.Kowarsch -" Last Change: 2016 August 22 - -" ---------------------------------------------------- -" THIS FILE IS LICENSED UNDER THE VIM LICENSE -" see https://github.com/vim/vim/blob/master/LICENSE -" ---------------------------------------------------- - -" Remarks: -" Vim Syntax files are available for the following Modula-2 dialects: -" * for the PIM dialect : m2pim.vim (this file) -" * for the ISO dialect : m2iso.vim -" * for the R10 dialect : m2r10.vim - -" ----------------------------------------------------------------------------- -" This syntax description follows the 3rd and 4th editions of N.Wirth's Book -" Programming in Modula-2 (aka PIM) plus the following language extensions: -" * non-leading, non-trailing, non-consecutive lowlines _ in identifiers -" * widely supported non-standard types BYTE, LONGCARD and LONGBITSET -" * non-nesting code disabling tags ?< and >? at the start of a line -" ----------------------------------------------------------------------------- - -" Parameters: -" -" Vim's filetype script recognises Modula-2 dialect tags within the first 200 -" lines of Modula-2 .def and .mod input files. The script sets filetype and -" dialect automatically when a valid dialect tag is found in the input file. -" The dialect tag for the PIM dialect is (*!m2pim*). It is recommended to put -" the tag immediately after the module header in the Modula-2 input file. -" -" Example: -" DEFINITION MODULE Foolib; (*!m2pim*) -" -" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the -" dialect cannot be determined from the contents of the Modula-2 input file: -" if defined and set to 'm2pim', the default dialect is PIM. -" -" Variable g:modula2_pim_allow_lowline controls support for lowline in identifiers: -" if defined and set to a non-zero value, they are recognised, otherwise not -" -" Variable g:modula2_pim_disallow_octals controls the rendering of octal literals: -" if defined and set to a non-zero value, they are rendered as errors. -" -" Variable g:modula2_pim_disallow_synonyms controls the rendering of & and ~: -" if defined and set to a non-zero value, they are rendered as errors. -" -" Variables may be defined in Vim startup file .vimrc -" -" Examples: -" let g:modula2_default_dialect = 'm2pim' -" let g:modula2_pim_allow_lowline = 1 -" let g:modula2_pim_disallow_octals = 1 -" let g:modula2_pim_disallow_synonyms = 1 - - -if exists("b:current_syntax") - finish -endif - -" Modula-2 is case sensitive -syn case match - - -" ----------------------------------------------------------------------------- -" Reserved Words -" ----------------------------------------------------------------------------- -syn keyword modula2Resword AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE -syn keyword modula2Resword ELSIF EXIT EXPORT FOR FROM IF IMPLEMENTATION IMPORT -syn keyword modula2Resword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD REPEAT -syn keyword modula2Resword RETURN SET THEN TO TYPE UNTIL VAR WHILE WITH - - -" ----------------------------------------------------------------------------- -" Builtin Constant Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ConstIdent FALSE NIL TRUE - - -" ----------------------------------------------------------------------------- -" Builtin Type Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2TypeIdent BITSET BOOLEAN CHAR PROC -syn keyword modula2TypeIdent CARDINAL INTEGER LONGINT REAL LONGREAL - - -" ----------------------------------------------------------------------------- -" Builtin Procedure and Function Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ProcIdent CAP DEC EXCL HALT INC INCL -syn keyword modula2FuncIdent ABS CHR FLOAT HIGH MAX MIN ODD ORD SIZE TRUNC VAL - - -" ----------------------------------------------------------------------------- -" Wirthian Macro Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2MacroIdent NEW DISPOSE - - -" ----------------------------------------------------------------------------- -" Unsafe Facilities via Pseudo-Module SYSTEM -" ----------------------------------------------------------------------------- -syn keyword modula2UnsafeIdent ADDRESS PROCESS WORD -syn keyword modula2UnsafeIdent ADR TSIZE NEWPROCESS TRANSFER SYSTEM - - -" ----------------------------------------------------------------------------- -" Non-Portable Language Extensions -" ----------------------------------------------------------------------------- -syn keyword modula2NonPortableIdent BYTE LONGCARD LONGBITSET - - -" ----------------------------------------------------------------------------- -" User Defined Identifiers -" ----------------------------------------------------------------------------- -syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" -syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" - - -" ----------------------------------------------------------------------------- -" String Literals -" ----------------------------------------------------------------------------- -syn region modula2String start=/"/ end=/"/ oneline -syn region modula2String start=/'/ end=/'/ oneline - - -" ----------------------------------------------------------------------------- -" Numeric Literals -" ----------------------------------------------------------------------------- -syn match modula2Num - \ "\(\([0-7]\+\)[BC]\@!\|[89]\)[0-9]*\(\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?\)\?" -syn match modula2Num "[0-9A-F]\+H" -syn match modula2Octal "[0-7]\+[BC]" - - -" ----------------------------------------------------------------------------- -" Punctuation -" ----------------------------------------------------------------------------- -syn match modula2Punctuation - \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" -syn match modula2Synonym "[&~]" - - -" ----------------------------------------------------------------------------- -" Pragmas -" ----------------------------------------------------------------------------- -syn region modula2Pragma start="(\*\$" end="\*)" -syn match modula2DialectTag "(\*!m2pim\(+[a-z0-9]\+\)\?\*)" - -" ----------------------------------------------------------------------------- -" Block Comments -" ----------------------------------------------------------------------------- -syn region modula2Comment start="(\*\(\$\|!m2pim\(+[a-z0-9]\+\)\?\*)\)\@!" end="\*)" - \ contains = modula2Comment, modula2CommentKey, modula2TechDebtMarker -syn match modula2CommentKey "[Aa]uthor[s]\?\|[Cc]opyright\|[Ll]icense\|[Ss]ynopsis" -syn match modula2CommentKey "\([Pp]re\|[Pp]ost\|[Ee]rror\)\-condition[s]\?:" - - -" ----------------------------------------------------------------------------- -" Technical Debt Markers -" ----------------------------------------------------------------------------- -syn keyword modula2TechDebtMarker contained DEPRECATED FIXME -syn match modula2TechDebtMarker "TODO[:]\?" contained - -" ----------------------------------------------------------------------------- -" Disabled Code Sections -" ----------------------------------------------------------------------------- -syn region modula2DisabledCode start="^?<" end="^>?" - - -" ----------------------------------------------------------------------------- -" Headers -" ----------------------------------------------------------------------------- -" !!! this section must be second last !!! - -" new module header -syn match modula2ModuleHeader - \ "MODULE\( [A-Z][a-zA-Z0-9]*\)\?" - \ contains = modula2ReswordModule, modula2ModuleIdent - -syn match modula2ModuleIdent - \ "[A-Z][a-zA-Z0-9]*" contained - -syn match modula2ModuleTail - \ "END [A-Z][a-zA-Z0-9]*\.$" - \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation - -" new procedure header -syn match modula2ProcedureHeader - \ "PROCEDURE\( [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)\?" - \ contains = modula2ReswordProcedure, - \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent - -syn match modula2ProcedureIdent - \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained - -syn match modula2ProcedureLowlineIdent - \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained - -syn match modula2ProcedureTail - \ "END\( \([a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*\)[.;]$\)\?" - \ contains = modula2ReswordEnd, - \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, - \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent - -syn keyword modula2ReswordModule contained MODULE -syn keyword modula2ReswordProcedure contained PROCEDURE -syn keyword modula2ReswordEnd contained END - - -" ----------------------------------------------------------------------------- -" Illegal Symbols -" ----------------------------------------------------------------------------- -" !!! this section must be last !!! - -" any '`' '!' '@ ''$' '%' or '\' -syn match modula2IllegalChar "[`!@$%\\]" - -" any solitary sequence of '_' -syn match modula2IllegalChar "\<_\+\>" - -" any '?' at start of line if not followed by '<' -syn match modula2IllegalChar "^?\(<\)\@!" - -" any '?' not following '>' at start of line -syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" - - -" ----------------------------------------------------------------------------- -" Define Rendering Styles -" ----------------------------------------------------------------------------- - -" highlight default link modula2PredefIdentStyle Keyword -" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle -" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle -" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle -" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle -" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle - -highlight default link modula2ConstIdentStyle Constant -highlight default link modula2TypeIdentStyle Type -highlight default link modula2ProcIdentStyle Function -highlight default link modula2FuncIdentStyle Function -highlight default link modula2MacroIdentStyle Function -highlight default link modula2UnsafeIdentStyle Question -highlight default link modula2NonPortableIdentStyle Question -highlight default link modula2StringLiteralStyle String -highlight default link modula2CommentStyle Comment -highlight default link modula2PragmaStyle PreProc -highlight default link modula2DialectTagStyle SpecialComment -highlight default link modula2TechDebtMarkerStyle SpecialComment -highlight default link modula2ReswordStyle Keyword -highlight default link modula2HeaderIdentStyle Function -highlight default link modula2UserDefIdentStyle Normal -highlight default link modula2NumericLiteralStyle Number -highlight default link modula2PunctuationStyle Delimiter -highlight default link modula2CommentKeyStyle SpecialComment -highlight default link modula2DisabledCodeStyle NonText - -" ----------------------------------------------------------------------------- -" Assign Rendering Styles -" ----------------------------------------------------------------------------- - -" headers -highlight default link modula2ModuleIdent modula2HeaderIdentStyle -highlight default link modula2ProcedureIdent modula2HeaderIdentStyle -highlight default link modula2ModuleHeader Normal -highlight default link modula2ModuleTail Normal -highlight default link modula2ProcedureHeader Normal -highlight default link modula2ProcedureTail Normal - -" lowline identifiers are rendered as errors if g:modula2_pim_allow_lowline is unset -if exists("g:modula2_pim_allow_lowline") - if g:modula2_pim_allow_lowline != 0 - highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle - else - highlight default link modula2ProcedureLowlineIdent Error - endif -else - highlight default link modula2ProcedureLowlineIdent Error -endif - -" reserved words -highlight default link modula2Resword modula2ReswordStyle -highlight default link modula2ReswordModule modula2ReswordStyle -highlight default link modula2ReswordProcedure modula2ReswordStyle -highlight default link modula2ReswordEnd modula2ReswordStyle - -" predefined identifiers -highlight default link modula2ConstIdent modula2ConstIdentStyle -highlight default link modula2TypeIdent modula2TypeIdentStyle -highlight default link modula2ProcIdent modula2ProcIdentStyle -highlight default link modula2FuncIdent modula2FuncIdentStyle -highlight default link modula2MacroIdent modula2MacroIdentStyle - -" unsafe and non-portable identifiers -highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle -highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle - -" user defined identifiers -highlight default link modula2Ident modula2UserDefIdentStyle - -" lowline identifiers are rendered as errors if g:modula2_pim_allow_lowline is unset -if exists("g:modula2_pim_allow_lowline") - if g:modula2_pim_allow_lowline != 0 - highlight default link modula2LowLineIdent modula2UserDefIdentStyle - else - highlight default link modula2LowLineIdent Error - endif -else - highlight default link modula2LowLineIdent Error -endif - -" literals -highlight default link modula2String modula2StringLiteralStyle -highlight default link modula2Num modula2NumericLiteralStyle - -" octal literals are rendered as errors if g:modula2_pim_disallow_octals is set -if exists("g:modula2_pim_disallow_octals") - if g:modula2_pim_disallow_octals != 0 - highlight default link modula2Octal Error - else - highlight default link modula2Octal modula2NumericLiteralStyle - endif -else - highlight default link modula2Octal modula2NumericLiteralStyle -endif - -" punctuation -highlight default link modula2Punctuation modula2PunctuationStyle - -" synonyms & and ~ are rendered as errors if g:modula2_pim_disallow_synonyms is set -if exists("g:modula2_pim_disallow_synonyms") - if g:modula2_pim_disallow_synonyms != 0 - highlight default link modula2Synonym Error - else - highlight default link modula2Synonym modula2PunctuationStyle - endif -else - highlight default link modula2Synonym modula2PunctuationStyle -endif - -" pragmas -highlight default link modula2Pragma modula2PragmaStyle -highlight default link modula2DialectTag modula2DialectTagStyle - -" comments -highlight default link modula2Comment modula2CommentStyle -highlight default link modula2CommentKey modula2CommentKeyStyle - -" technical debt markers -highlight default link modula2TechDebtMarker modula2TechDebtMarkerStyle - -" disabled code -highlight default link modula2DisabledCode modula2DisabledCodeStyle - -" illegal symbols -highlight default link modula2IllegalChar Error -highlight default link modula2IllegalIdent Error - - -let b:current_syntax = "modula2" - -" vim: ts=4 - -" END OF FILE diff --git a/uvim/runtime/syntax/modula2/opt/r10.mnv b/uvim/runtime/syntax/modula2/opt/r10.mnv new file mode 100644 index 0000000000..0785951cc3 --- /dev/null +++ b/uvim/runtime/syntax/modula2/opt/r10.mnv @@ -0,0 +1,452 @@ +" MNV syntax file +" Language: Modula-2 (R10) +" Maintainer: B.Kowarsch +" Last Change: 2020 June 18 (moved repository from bb to github) + +" ---------------------------------------------------- +" THIS FILE IS LICENSED UNDER THE MNV LICENSE +" see https://github.com/Project-Tick/Project-Tick/blob/master/LICENSE +" ---------------------------------------------------- + +" Remarks: +" MNV Syntax files are available for the following Modula-2 dialects: +" * for the PIM dialect : m2pim.mnv +" * for the ISO dialect : m2iso.mnv +" * for the R10 dialect : m2r10.mnv (this file) + +" ----------------------------------------------------------------------------- +" This syntax description follows the Modula-2 Revision 2010 language report +" (Kowarsch and Sutcliffe, 2015) available at http://modula-2.info/m2r10. +" ----------------------------------------------------------------------------- + +" Parameters: +" +" MNV's filetype script recognises Modula-2 dialect tags within the first 200 +" lines of Modula-2 .def and .mod input files. The script sets filetype and +" dialect automatically when a valid dialect tag is found in the input file. +" The dialect tag for the R10 dialect is (*!m2r10*). It is recommended to put +" the tag immediately after the module header in the Modula-2 input file. +" +" Example: +" DEFINITION MODULE Foolib; (*!m2r10*) +" +" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the +" dialect cannot be determined from the contents of the Modula-2 input file: +" if defined and set to 'm2r10', the default dialect is R10. +" +" Variable g:modula2_r10_allow_lowline controls support for lowline in identifiers: +" if defined and set to a non-zero value, they are recognised, otherwise not +" +" Variables may be defined in MNV startup file .mnvrc +" +" Examples: +" let g:modula2_default_dialect = 'm2r10' +" let g:modula2_r10_allow_lowline = 1 + + +if exists("b:current_syntax") + finish +endif + +" Modula-2 is case sensitive +syn case match + + +" ----------------------------------------------------------------------------- +" Reserved Words +" ----------------------------------------------------------------------------- +" Note: MODULE, PROCEDURE and END are defined separately further below +syn keyword modula2Resword ALIAS AND ARGLIST ARRAY BEGIN CASE CONST COPY DEFINITION +syn keyword modula2Resword DIV DO ELSE ELSIF EXIT FOR FROM GENLIB IF IMPLEMENTATION +syn keyword modula2Resword IMPORT IN LOOP MOD NEW NOT OF OPAQUE OR POINTER READ +syn keyword modula2Resword RECORD RELEASE REPEAT RETAIN RETURN SET THEN TO TYPE +syn keyword modula2Resword UNTIL VAR WHILE WRITE YIELD + + +" ----------------------------------------------------------------------------- +" Schroedinger's Tokens +" ----------------------------------------------------------------------------- +syn keyword modula2SchroedToken CAPACITY COROUTINE LITERAL + + +" ----------------------------------------------------------------------------- +" Builtin Constant Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ConstIdent NIL FALSE TRUE + + +" ----------------------------------------------------------------------------- +" Builtin Type Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2TypeIdent BOOLEAN CHAR UNICHAR OCTET +syn keyword modula2TypeIdent CARDINAL LONGCARD INTEGER LONGINT REAL LONGREAL + + +" ----------------------------------------------------------------------------- +" Builtin Procedure and Function Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2ProcIdent APPEND INSERT REMOVE SORT SORTNEW +syn keyword modula2FuncIdent CHR ORD ODD ABS SGN MIN MAX LOG2 POW2 ENTIER +syn keyword modula2FuncIdent PRED SUCC PTR COUNT LENGTH + + +" ----------------------------------------------------------------------------- +" Builtin Macro Identifiers +" ----------------------------------------------------------------------------- +syn keyword modula2MacroIdent NOP TMIN TMAX TSIZE TLIMIT + + +" ----------------------------------------------------------------------------- +" Builtin Primitives +" ----------------------------------------------------------------------------- +syn keyword modula2PrimitiveIdent SXF VAL STORE VALUE SEEK SUBSET + + +" ----------------------------------------------------------------------------- +" Unsafe Facilities via Pseudo-Module UNSAFE +" ----------------------------------------------------------------------------- +syn keyword modula2UnsafeIdent UNSAFE BYTE WORD LONGWORD OCTETSEQ +syn keyword modula2UnsafeIdent ADD SUB INC DEC SETBIT HALT +syn keyword modula2UnsafeIdent ADR CAST BIT SHL SHR BWNOT BWAND BWOR + + +" ----------------------------------------------------------------------------- +" Non-Portable Language Extensions +" ----------------------------------------------------------------------------- +syn keyword modula2NonPortableIdent ASSEMBLER ASM REG + + +" ----------------------------------------------------------------------------- +" User Defined Identifiers +" ----------------------------------------------------------------------------- +syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" +syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" + +syn match modula2ReswordDo "\(TO\)\@&#,]\|\[\)\@<='" end=/'/ oneline + + +" ----------------------------------------------------------------------------- +" Numeric Literals +" ----------------------------------------------------------------------------- +syn match modula2Base2Num "0b[01]\+\('[01]\+\)*" +syn match modula2Base16Num "0[ux][0-9A-F]\+\('[0-9A-F]\+\)*" + +"| *** VMSCRIPT BUG ALERT *** +"| The regular expression below causes errors when split into separate strings +"| +"| syn match modula2Base10Num +"| \ "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)" . +"| \ "\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" +"| +"| E475: Invalid argument: modula2Base10Num "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)" +"| . "\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" +"| +"| However, the same regular expression works just fine as a sole string. +"| +"| As a consequence, we have no choice but to put it all into a single line +"| which greatly diminishes readability and thereby increases the opportunity +"| for error during maintenance. Ideally, regular expressions should be split +"| into small human readable pieces with interleaved comments that explain +"| precisely what each piece is doing. MNV script imposes poor design. :-( + +syn match modula2Base10Num + \ "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" + + +" ----------------------------------------------------------------------------- +" Punctuation +" ----------------------------------------------------------------------------- +syn match modula2Punctuation + \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>&]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" + + +" ----------------------------------------------------------------------------- +" Pragmas +" ----------------------------------------------------------------------------- +syn region modula2Pragma start="<\*" end="\*>" + \ contains = modula2PragmaKey, modula2TechDebtPragma +syn keyword modula2PragmaKey contained MSG IF ELSIF ELSE END INLINE NOINLINE OUT +syn keyword modula2PragmaKey contained GENERATED ENCODING ALIGN PADBITS NORETURN +syn keyword modula2PragmaKey contained PURITY SINGLEASSIGN LOWLATENCY VOLATILE +syn keyword modula2PragmaKey contained FORWARD ADDR FFI FFIDENT + +syn match modula2DialectTag "(\*!m2r10\(+[a-z0-9]\+\)\?\*)" + + +" ----------------------------------------------------------------------------- +" Line Comments +" ----------------------------------------------------------------------------- +syn region modula2Comment start=/^!/ end=/$/ oneline + + +" ----------------------------------------------------------------------------- +" Block Comments +" ----------------------------------------------------------------------------- +syn region modula2Comment + \ start="\(END\s\)\@?" + + +" ----------------------------------------------------------------------------- +" Headers +" ----------------------------------------------------------------------------- +" !!! this section must be second last !!! + +" module header +syn match modula2ModuleHeader + \ "\(MODULE\|BLUEPRINT\)\( [A-Z][a-zA-Z0-9]*\)\?" + \ contains = modula2ReswordModule, modula2ReswordBlueprint, modula2ModuleIdent + +syn match modula2ModuleIdent + \ "[A-Z][a-zA-Z0-9]*" contained + +syn match modula2ModuleTail + \ "END [A-Z][a-zA-Z0-9]*\.$" + \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation + +" procedure, sole occurrence +syn match modula2ProcedureHeader + \ "PROCEDURE\(\s\[\|\s[a-zA-Z]\)\@!" contains = modula2ReswordProcedure + +" procedure header +syn match modula2ProcedureHeader + \ "PROCEDURE [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" + \ contains = modula2ReswordProcedure, + \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent + +" procedure binding to operator +syn match modula2ProcedureHeader + \ "PROCEDURE \[[+-\*/\\=<>]\] [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" + \ contains = modula2ReswordProcedure, modula2Punctuation, + \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent + +" procedure binding to builtin +syn match modula2ProcedureHeader + \ "PROCEDURE \[[A-Z]\+\(:\([#\*,]\|++\|--\)\?\)\?\] [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" + \ contains = modula2ReswordProcedure, + \ modula2Punctuation, modula2Resword, modula2SchroedToken, + \ modula2ProcIdent, modula2FuncIdent, modula2PrimitiveIdent, + \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent + +syn match modula2ProcedureIdent + \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained + +syn match modula2ProcedureLowlineIdent + \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained + +syn match modula2ProcedureTail + \ "END [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*;$" + \ contains = modula2ReswordEnd, + \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, + \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent + +syn keyword modula2ReswordModule contained MODULE +syn keyword modula2ReswordBlueprint contained BLUEPRINT +syn keyword modula2ReswordProcedure contained PROCEDURE +syn keyword modula2ReswordEnd contained END + + +" ----------------------------------------------------------------------------- +" Illegal Symbols +" ----------------------------------------------------------------------------- +" !!! this section must be last !!! + +" any '`' '~' '@' '$' '%' +syn match modula2IllegalChar "[`~@$%]" + +" any solitary sequence of '_' +syn match modula2IllegalChar "\<_\+\>" + +" any '?' at start of line if not followed by '<' +syn match modula2IllegalChar "^?\(<\)\@!" + +" any '?' not following '>' at start of line +syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" + + +" ----------------------------------------------------------------------------- +" Define Rendering Styles +" ----------------------------------------------------------------------------- + +" highlight default link modula2PredefIdentStyle Keyword +" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle +" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle +" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle +" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle +" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle + +highlight default link modula2ConstIdentStyle Constant +highlight default link modula2TypeIdentStyle Type +highlight default link modula2ProcIdentStyle Function +highlight default link modula2FuncIdentStyle Function +highlight default link modula2MacroIdentStyle Function +highlight default link modula2PrimitiveIdentStyle Function +highlight default link modula2UnsafeIdentStyle Question +highlight default link modula2NonPortableIdentStyle Question +highlight default link modula2StringLiteralStyle String +highlight default link modula2CommentStyle Comment +highlight default link modula2PragmaStyle PreProc +highlight default link modula2PragmaKeyStyle PreProc +highlight default link modula2DialectTagStyle SpecialComment +highlight default link modula2TechDebtMarkerStyle SpecialComment +highlight default link modula2ReswordStyle Keyword +highlight default link modula2HeaderIdentStyle Function +highlight default link modula2UserDefIdentStyle Normal +highlight default link modula2NumericLiteralStyle Number +highlight default link modula2PunctuationStyle Delimiter +highlight default link modula2CommentKeyStyle SpecialComment +highlight default link modula2DisabledCodeStyle NonText + + +" ----------------------------------------------------------------------------- +" Assign Rendering Styles +" ----------------------------------------------------------------------------- + +" headers +highlight default link modula2ModuleIdent modula2HeaderIdentStyle +highlight default link modula2ProcedureIdent modula2HeaderIdentStyle +highlight default link modula2ModuleHeader modula2HeaderIdentStyle +highlight default link modula2ModuleTail Normal +highlight default link modula2ProcedureHeader Normal +highlight default link modula2ProcedureTail Normal + +" lowline identifiers are rendered as errors if g:modula2_r10_allow_lowline is unset +if exists("g:modula2_r10_allow_lowline") + if g:modula2_r10_allow_lowline != 0 + highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle + else + highlight default link modula2ProcedureLowlineIdent Error + endif +else + highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle +endif + +" reserved words +highlight default link modula2Resword modula2ReswordStyle +highlight default link modula2ReswordModule modula2ReswordStyle +highlight default link modula2ReswordProcedure modula2ReswordStyle +highlight default link modula2ReswordEnd modula2ReswordStyle +highlight default link modula2ReswordDo modula2ReswordStyle +highlight default link modula2ReswordTo modula2ReswordStyle +highlight default link modula2SchroedToken modula2ReswordStyle + +" predefined identifiers +highlight default link modula2ConstIdent modula2ConstIdentStyle +highlight default link modula2TypeIdent modula2TypeIdentStyle +highlight default link modula2ProcIdent modula2ProcIdentStyle +highlight default link modula2FuncIdent modula2FuncIdentStyle +highlight default link modula2MacroIdent modula2MacroIdentStyle +highlight default link modula2PrimitiveIdent modula2PrimitiveIdentStyle + +" unsafe and non-portable identifiers +highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle +highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle + +" user defined identifiers +highlight default link modula2Ident modula2UserDefIdentStyle + +" lowline identifiers are rendered as errors if g:modula2_r10_allow_lowline is unset +if exists("g:modula2_r10_allow_lowline") + if g:modula2_r10_allow_lowline != 0 + highlight default link modula2LowLineIdent modula2UserDefIdentStyle + else + highlight default link modula2LowLineIdent Error + endif +else + highlight default link modula2LowLineIdent modula2UserDefIdentStyle +endif + +" literals +highlight default link modula2String modula2StringLiteralStyle +highlight default link modula2Base2Num modula2NumericLiteralStyle +highlight default link modula2Base10Num modula2NumericLiteralStyle +highlight default link modula2Base16Num modula2NumericLiteralStyle + +" punctuation +highlight default link modula2Punctuation modula2PunctuationStyle + +" pragmas +highlight default link modula2Pragma modula2PragmaStyle +highlight default link modula2PragmaKey modula2PragmaKeyStyle +highlight default link modula2DialectTag modula2DialectTagStyle + +" comments +highlight default link modula2Comment modula2CommentStyle +highlight default link modula2CommentKey modula2CommentKeyStyle +highlight default link modula2ToDoTailComment modula2CommentStyle +highlight default link modula2StmtTailComment modula2CommentStyle + +" technical debt markers +highlight default link modula2ToDoHeader modula2TechDebtMarkerStyle +highlight default link modula2ToDoTail modula2TechDebtMarkerStyle +highlight default link modula2TechDebtPragma modula2TechDebtMarkerStyle + +" disabled code +highlight default link modula2DisabledCode modula2DisabledCodeStyle + +" illegal symbols +highlight default link modula2IllegalChar Error +highlight default link modula2IllegalIdent Error + + +let b:current_syntax = "modula2" + +" mnv: ts=4 + +" END OF FILE diff --git a/uvim/runtime/syntax/modula2/opt/r10.vim b/uvim/runtime/syntax/modula2/opt/r10.vim deleted file mode 100644 index 5172be54c6..0000000000 --- a/uvim/runtime/syntax/modula2/opt/r10.vim +++ /dev/null @@ -1,452 +0,0 @@ -" Vim syntax file -" Language: Modula-2 (R10) -" Maintainer: B.Kowarsch -" Last Change: 2020 June 18 (moved repository from bb to github) - -" ---------------------------------------------------- -" THIS FILE IS LICENSED UNDER THE VIM LICENSE -" see https://github.com/vim/vim/blob/master/LICENSE -" ---------------------------------------------------- - -" Remarks: -" Vim Syntax files are available for the following Modula-2 dialects: -" * for the PIM dialect : m2pim.vim -" * for the ISO dialect : m2iso.vim -" * for the R10 dialect : m2r10.vim (this file) - -" ----------------------------------------------------------------------------- -" This syntax description follows the Modula-2 Revision 2010 language report -" (Kowarsch and Sutcliffe, 2015) available at http://modula-2.info/m2r10. -" ----------------------------------------------------------------------------- - -" Parameters: -" -" Vim's filetype script recognises Modula-2 dialect tags within the first 200 -" lines of Modula-2 .def and .mod input files. The script sets filetype and -" dialect automatically when a valid dialect tag is found in the input file. -" The dialect tag for the R10 dialect is (*!m2r10*). It is recommended to put -" the tag immediately after the module header in the Modula-2 input file. -" -" Example: -" DEFINITION MODULE Foolib; (*!m2r10*) -" -" Variable g:modula2_default_dialect sets the default Modula-2 dialect when the -" dialect cannot be determined from the contents of the Modula-2 input file: -" if defined and set to 'm2r10', the default dialect is R10. -" -" Variable g:modula2_r10_allow_lowline controls support for lowline in identifiers: -" if defined and set to a non-zero value, they are recognised, otherwise not -" -" Variables may be defined in Vim startup file .vimrc -" -" Examples: -" let g:modula2_default_dialect = 'm2r10' -" let g:modula2_r10_allow_lowline = 1 - - -if exists("b:current_syntax") - finish -endif - -" Modula-2 is case sensitive -syn case match - - -" ----------------------------------------------------------------------------- -" Reserved Words -" ----------------------------------------------------------------------------- -" Note: MODULE, PROCEDURE and END are defined separately further below -syn keyword modula2Resword ALIAS AND ARGLIST ARRAY BEGIN CASE CONST COPY DEFINITION -syn keyword modula2Resword DIV DO ELSE ELSIF EXIT FOR FROM GENLIB IF IMPLEMENTATION -syn keyword modula2Resword IMPORT IN LOOP MOD NEW NOT OF OPAQUE OR POINTER READ -syn keyword modula2Resword RECORD RELEASE REPEAT RETAIN RETURN SET THEN TO TYPE -syn keyword modula2Resword UNTIL VAR WHILE WRITE YIELD - - -" ----------------------------------------------------------------------------- -" Schroedinger's Tokens -" ----------------------------------------------------------------------------- -syn keyword modula2SchroedToken CAPACITY COROUTINE LITERAL - - -" ----------------------------------------------------------------------------- -" Builtin Constant Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ConstIdent NIL FALSE TRUE - - -" ----------------------------------------------------------------------------- -" Builtin Type Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2TypeIdent BOOLEAN CHAR UNICHAR OCTET -syn keyword modula2TypeIdent CARDINAL LONGCARD INTEGER LONGINT REAL LONGREAL - - -" ----------------------------------------------------------------------------- -" Builtin Procedure and Function Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2ProcIdent APPEND INSERT REMOVE SORT SORTNEW -syn keyword modula2FuncIdent CHR ORD ODD ABS SGN MIN MAX LOG2 POW2 ENTIER -syn keyword modula2FuncIdent PRED SUCC PTR COUNT LENGTH - - -" ----------------------------------------------------------------------------- -" Builtin Macro Identifiers -" ----------------------------------------------------------------------------- -syn keyword modula2MacroIdent NOP TMIN TMAX TSIZE TLIMIT - - -" ----------------------------------------------------------------------------- -" Builtin Primitives -" ----------------------------------------------------------------------------- -syn keyword modula2PrimitiveIdent SXF VAL STORE VALUE SEEK SUBSET - - -" ----------------------------------------------------------------------------- -" Unsafe Facilities via Pseudo-Module UNSAFE -" ----------------------------------------------------------------------------- -syn keyword modula2UnsafeIdent UNSAFE BYTE WORD LONGWORD OCTETSEQ -syn keyword modula2UnsafeIdent ADD SUB INC DEC SETBIT HALT -syn keyword modula2UnsafeIdent ADR CAST BIT SHL SHR BWNOT BWAND BWOR - - -" ----------------------------------------------------------------------------- -" Non-Portable Language Extensions -" ----------------------------------------------------------------------------- -syn keyword modula2NonPortableIdent ASSEMBLER ASM REG - - -" ----------------------------------------------------------------------------- -" User Defined Identifiers -" ----------------------------------------------------------------------------- -syn match modula2Ident "[a-zA-Z][a-zA-Z0-9]*\(_\)\@!" -syn match modula2LowLineIdent "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" - -syn match modula2ReswordDo "\(TO\)\@&#,]\|\[\)\@<='" end=/'/ oneline - - -" ----------------------------------------------------------------------------- -" Numeric Literals -" ----------------------------------------------------------------------------- -syn match modula2Base2Num "0b[01]\+\('[01]\+\)*" -syn match modula2Base16Num "0[ux][0-9A-F]\+\('[0-9A-F]\+\)*" - -"| *** VMSCRIPT BUG ALERT *** -"| The regular expression below causes errors when split into separate strings -"| -"| syn match modula2Base10Num -"| \ "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)" . -"| \ "\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" -"| -"| E475: Invalid argument: modula2Base10Num "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)" -"| . "\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" -"| -"| However, the same regular expression works just fine as a sole string. -"| -"| As a consequence, we have no choice but to put it all into a single line -"| which greatly diminishes readability and thereby increases the opportunity -"| for error during maintenance. Ideally, regular expressions should be split -"| into small human readable pieces with interleaved comments that explain -"| precisely what each piece is doing. Vim script imposes poor design. :-( - -syn match modula2Base10Num - \ "\(\(0[bux]\@!\|[1-9]\)[0-9]*\('[0-9]\+\)*\)\(\.[0-9]\+\('[0-9]\+\)*\(e[+-]\?[0-9]\+\('[0-9]\+\)*\)\?\)\?" - - -" ----------------------------------------------------------------------------- -" Punctuation -" ----------------------------------------------------------------------------- -syn match modula2Punctuation - \ "\.\|[,:;]\|\*\|[/+-]\|\#\|[=<>&]\|\^\|\[\|\]\|(\(\*\)\@!\|[){}]" - - -" ----------------------------------------------------------------------------- -" Pragmas -" ----------------------------------------------------------------------------- -syn region modula2Pragma start="<\*" end="\*>" - \ contains = modula2PragmaKey, modula2TechDebtPragma -syn keyword modula2PragmaKey contained MSG IF ELSIF ELSE END INLINE NOINLINE OUT -syn keyword modula2PragmaKey contained GENERATED ENCODING ALIGN PADBITS NORETURN -syn keyword modula2PragmaKey contained PURITY SINGLEASSIGN LOWLATENCY VOLATILE -syn keyword modula2PragmaKey contained FORWARD ADDR FFI FFIDENT - -syn match modula2DialectTag "(\*!m2r10\(+[a-z0-9]\+\)\?\*)" - - -" ----------------------------------------------------------------------------- -" Line Comments -" ----------------------------------------------------------------------------- -syn region modula2Comment start=/^!/ end=/$/ oneline - - -" ----------------------------------------------------------------------------- -" Block Comments -" ----------------------------------------------------------------------------- -syn region modula2Comment - \ start="\(END\s\)\@?" - - -" ----------------------------------------------------------------------------- -" Headers -" ----------------------------------------------------------------------------- -" !!! this section must be second last !!! - -" module header -syn match modula2ModuleHeader - \ "\(MODULE\|BLUEPRINT\)\( [A-Z][a-zA-Z0-9]*\)\?" - \ contains = modula2ReswordModule, modula2ReswordBlueprint, modula2ModuleIdent - -syn match modula2ModuleIdent - \ "[A-Z][a-zA-Z0-9]*" contained - -syn match modula2ModuleTail - \ "END [A-Z][a-zA-Z0-9]*\.$" - \ contains = modula2ReswordEnd, modula2ModuleIdent, modula2Punctuation - -" procedure, sole occurrence -syn match modula2ProcedureHeader - \ "PROCEDURE\(\s\[\|\s[a-zA-Z]\)\@!" contains = modula2ReswordProcedure - -" procedure header -syn match modula2ProcedureHeader - \ "PROCEDURE [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" - \ contains = modula2ReswordProcedure, - \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent - -" procedure binding to operator -syn match modula2ProcedureHeader - \ "PROCEDURE \[[+-\*/\\=<>]\] [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" - \ contains = modula2ReswordProcedure, modula2Punctuation, - \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent - -" procedure binding to builtin -syn match modula2ProcedureHeader - \ "PROCEDURE \[[A-Z]\+\(:\([#\*,]\|++\|--\)\?\)\?\] [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*" - \ contains = modula2ReswordProcedure, - \ modula2Punctuation, modula2Resword, modula2SchroedToken, - \ modula2ProcIdent, modula2FuncIdent, modula2PrimitiveIdent, - \ modula2ProcedureIdent, modula2ProcedureLowlineIdent, modula2IllegalChar, modula2IllegalIdent - -syn match modula2ProcedureIdent - \ "\([a-zA-Z]\)\([a-zA-Z0-9]*\)" contained - -syn match modula2ProcedureLowlineIdent - \ "[a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)\+" contained - -syn match modula2ProcedureTail - \ "END [a-zA-Z][a-zA-Z0-9]*\(_[a-zA-Z0-9]\+\)*;$" - \ contains = modula2ReswordEnd, - \ modula2ProcedureIdent, modula2ProcedureLowLineIdent, - \ modula2Punctuation, modula2IllegalChar, modula2IllegalIdent - -syn keyword modula2ReswordModule contained MODULE -syn keyword modula2ReswordBlueprint contained BLUEPRINT -syn keyword modula2ReswordProcedure contained PROCEDURE -syn keyword modula2ReswordEnd contained END - - -" ----------------------------------------------------------------------------- -" Illegal Symbols -" ----------------------------------------------------------------------------- -" !!! this section must be last !!! - -" any '`' '~' '@' '$' '%' -syn match modula2IllegalChar "[`~@$%]" - -" any solitary sequence of '_' -syn match modula2IllegalChar "\<_\+\>" - -" any '?' at start of line if not followed by '<' -syn match modula2IllegalChar "^?\(<\)\@!" - -" any '?' not following '>' at start of line -syn match modula2IllegalChar "\(\(^>\)\|\(^\)\)\@" - - -" ----------------------------------------------------------------------------- -" Define Rendering Styles -" ----------------------------------------------------------------------------- - -" highlight default link modula2PredefIdentStyle Keyword -" highlight default link modula2ConstIdentStyle modula2PredefIdentStyle -" highlight default link modula2TypeIdentStyle modula2PredefIdentStyle -" highlight default link modula2ProcIdentStyle modula2PredefIdentStyle -" highlight default link modula2FuncIdentStyle modula2PredefIdentStyle -" highlight default link modula2MacroIdentStyle modula2PredefIdentStyle - -highlight default link modula2ConstIdentStyle Constant -highlight default link modula2TypeIdentStyle Type -highlight default link modula2ProcIdentStyle Function -highlight default link modula2FuncIdentStyle Function -highlight default link modula2MacroIdentStyle Function -highlight default link modula2PrimitiveIdentStyle Function -highlight default link modula2UnsafeIdentStyle Question -highlight default link modula2NonPortableIdentStyle Question -highlight default link modula2StringLiteralStyle String -highlight default link modula2CommentStyle Comment -highlight default link modula2PragmaStyle PreProc -highlight default link modula2PragmaKeyStyle PreProc -highlight default link modula2DialectTagStyle SpecialComment -highlight default link modula2TechDebtMarkerStyle SpecialComment -highlight default link modula2ReswordStyle Keyword -highlight default link modula2HeaderIdentStyle Function -highlight default link modula2UserDefIdentStyle Normal -highlight default link modula2NumericLiteralStyle Number -highlight default link modula2PunctuationStyle Delimiter -highlight default link modula2CommentKeyStyle SpecialComment -highlight default link modula2DisabledCodeStyle NonText - - -" ----------------------------------------------------------------------------- -" Assign Rendering Styles -" ----------------------------------------------------------------------------- - -" headers -highlight default link modula2ModuleIdent modula2HeaderIdentStyle -highlight default link modula2ProcedureIdent modula2HeaderIdentStyle -highlight default link modula2ModuleHeader modula2HeaderIdentStyle -highlight default link modula2ModuleTail Normal -highlight default link modula2ProcedureHeader Normal -highlight default link modula2ProcedureTail Normal - -" lowline identifiers are rendered as errors if g:modula2_r10_allow_lowline is unset -if exists("g:modula2_r10_allow_lowline") - if g:modula2_r10_allow_lowline != 0 - highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle - else - highlight default link modula2ProcedureLowlineIdent Error - endif -else - highlight default link modula2ProcedureLowlineIdent modula2HeaderIdentStyle -endif - -" reserved words -highlight default link modula2Resword modula2ReswordStyle -highlight default link modula2ReswordModule modula2ReswordStyle -highlight default link modula2ReswordProcedure modula2ReswordStyle -highlight default link modula2ReswordEnd modula2ReswordStyle -highlight default link modula2ReswordDo modula2ReswordStyle -highlight default link modula2ReswordTo modula2ReswordStyle -highlight default link modula2SchroedToken modula2ReswordStyle - -" predefined identifiers -highlight default link modula2ConstIdent modula2ConstIdentStyle -highlight default link modula2TypeIdent modula2TypeIdentStyle -highlight default link modula2ProcIdent modula2ProcIdentStyle -highlight default link modula2FuncIdent modula2FuncIdentStyle -highlight default link modula2MacroIdent modula2MacroIdentStyle -highlight default link modula2PrimitiveIdent modula2PrimitiveIdentStyle - -" unsafe and non-portable identifiers -highlight default link modula2UnsafeIdent modula2UnsafeIdentStyle -highlight default link modula2NonPortableIdent modula2NonPortableIdentStyle - -" user defined identifiers -highlight default link modula2Ident modula2UserDefIdentStyle - -" lowline identifiers are rendered as errors if g:modula2_r10_allow_lowline is unset -if exists("g:modula2_r10_allow_lowline") - if g:modula2_r10_allow_lowline != 0 - highlight default link modula2LowLineIdent modula2UserDefIdentStyle - else - highlight default link modula2LowLineIdent Error - endif -else - highlight default link modula2LowLineIdent modula2UserDefIdentStyle -endif - -" literals -highlight default link modula2String modula2StringLiteralStyle -highlight default link modula2Base2Num modula2NumericLiteralStyle -highlight default link modula2Base10Num modula2NumericLiteralStyle -highlight default link modula2Base16Num modula2NumericLiteralStyle - -" punctuation -highlight default link modula2Punctuation modula2PunctuationStyle - -" pragmas -highlight default link modula2Pragma modula2PragmaStyle -highlight default link modula2PragmaKey modula2PragmaKeyStyle -highlight default link modula2DialectTag modula2DialectTagStyle - -" comments -highlight default link modula2Comment modula2CommentStyle -highlight default link modula2CommentKey modula2CommentKeyStyle -highlight default link modula2ToDoTailComment modula2CommentStyle -highlight default link modula2StmtTailComment modula2CommentStyle - -" technical debt markers -highlight default link modula2ToDoHeader modula2TechDebtMarkerStyle -highlight default link modula2ToDoTail modula2TechDebtMarkerStyle -highlight default link modula2TechDebtPragma modula2TechDebtMarkerStyle - -" disabled code -highlight default link modula2DisabledCode modula2DisabledCodeStyle - -" illegal symbols -highlight default link modula2IllegalChar Error -highlight default link modula2IllegalIdent Error - - -let b:current_syntax = "modula2" - -" vim: ts=4 - -" END OF FILE -- cgit 0.0.5-2-1-g0f52