aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/modula2.vim
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2014-07-11 04:05:51 +0000
committerJustin M. Keyes <justinkz@gmail.com>2014-07-29 02:12:31 +0000
commita98a6996c291b3e300d27b791eded9eed333d677 (patch)
tree51d92f6cac128f938cd0aaa9a8dd0ce7a83d63a9 /runtime/syntax/modula2.vim
parent66bc13163398786c88e20b7cdd61c66978b4d3fb (diff)
downloadrneovim-a98a6996c291b3e300d27b791eded9eed333d677.tar.gz
rneovim-a98a6996c291b3e300d27b791eded9eed333d677.tar.bz2
rneovim-a98a6996c291b3e300d27b791eded9eed333d677.zip
re-integrate runtime/ vim-patch:0 #938
Vim runtime files based on 7.4.384 / hg changeset 7090d7f160f7 Excluding: Amiga icons (*.info, icons/) doc/hangulin.txt tutor/ spell/ lang/ (only used for menu translations) macros/maze/, macros/hanoi/, macros/life/, macros/urm/ These were used to test vi compatibility. termcap "Demonstration of a termcap file (for the Amiga and Archimedes)" Helped-by: Rich Wareham <rjw57@cam.ac.uk> Helped-by: John <john.schmidt.h@gmail.com> Helped-by: Yann <yann@yann-salaun.com> Helped-by: Christophe Badoit <c.badoit@lesiteimmo.com> Helped-by: drasill <github@tof2k.com> Helped-by: Tae Sandoval Murgan <taecilla@gmail.com> Helped-by: Lowe Thiderman <lowe.thiderman@gmail.com>
Diffstat (limited to 'runtime/syntax/modula2.vim')
-rw-r--r--runtime/syntax/modula2.vim86
1 files changed, 86 insertions, 0 deletions
diff --git a/runtime/syntax/modula2.vim b/runtime/syntax/modula2.vim
new file mode 100644
index 0000000000..3018900e80
--- /dev/null
+++ b/runtime/syntax/modula2.vim
@@ -0,0 +1,86 @@
+" Vim syntax file
+" Language: Modula 2
+" Maintainer: pf@artcom0.north.de (Peter Funk)
+" based on original work of Bram Moolenaar <Bram@vim.org>
+" Last Change: 2001 May 09
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Don't ignore case (Modula-2 is case significant). This is the default in vim
+
+" Especially emphasize headers of procedures and modules:
+syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline
+syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline
+
+" Some very important keywords which should be emphasized more than others:
+syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR
+" All other keywords in alphabetical order:
+syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE
+syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT
+syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD
+syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH
+
+syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD
+syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL
+syn keyword modula2StdConst FALSE NIL TRUE
+" The following may be discussed, since NEW and DISPOSE are some kind of
+" special builtin macro functions:
+syn keyword modula2StdFunc NEW DISPOSE
+" The following types are added later on and may be missing from older
+" Modula-2 Compilers (they are at least missing from the original report
+" by N.Wirth from March 1980 ;-) Highlighting should apply nevertheless:
+syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT
+" same note applies to min and max, which were also added later to m2:
+syn keyword modula2StdFunc MAX MIN
+" The underscore was originally disallowed in m2 ids, it was also added later:
+syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained
+
+" Comments may be nested in Modula-2:
+syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo
+syn keyword modula2Todo contained TODO FIXME XXX
+
+" Strings
+syn region modula2String start=+"+ end=+"+
+syn region modula2String start="'" end="'"
+syn region modula2Set start="{" end="}"
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_modula2_syntax_inits")
+ if version < 508
+ let did_modula2_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink modula2Ident Identifier
+ HiLink modula2StdConst Boolean
+ HiLink modula2Type Identifier
+ HiLink modula2StdFunc Identifier
+ HiLink modula2Header Type
+ HiLink modula2Keyword Statement
+ HiLink modula2AttKeyword PreProc
+ HiLink modula2Comment Comment
+ " The following is just a matter of taste (you want to try this instead):
+ " hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold
+ HiLink modula2Todo Todo
+ HiLink modula2String String
+ HiLink modula2Set String
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "modula2"
+
+" vim: ts=8