diff options
Diffstat (limited to 'runtime/syntax/plm.vim')
-rw-r--r-- | runtime/syntax/plm.vim | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/runtime/syntax/plm.vim b/runtime/syntax/plm.vim new file mode 100644 index 000000000..bf7c32fd1 --- /dev/null +++ b/runtime/syntax/plm.vim @@ -0,0 +1,147 @@ +" Vim syntax file +" Language: PL/M +" Maintainer: Philippe Coulonges <cphil@cphil.net> +" Last change: 2003 May 11 + +" 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 + +" PL/M is a case insensitive language +syn case ignore + +syn keyword plmTodo contained TODO FIXME XXX + +" String +syn region plmString start=+'+ end=+'+ + +syn match plmOperator "[@=\+\-\*\/\<\>]" + +syn match plmIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" + +syn match plmDelimiter "[();,]" + +syn region plmPreProc start="^\s*\$\s*" skip="\\$" end="$" + +" FIXME : No Number support for floats, as I'm working on an embedded +" project that doesn't use any. +syn match plmNumber "-\=\<\d\+\>" +syn match plmNumber "\<[0-9a-fA-F]*[hH]*\>" + +" If you don't like tabs +"syn match plmShowTab "\t" +"syn match plmShowTabc "\t" + +"when wanted, highlight trailing white space +if exists("c_space_errors") + syn match plmSpaceError "\s*$" + syn match plmSpaceError " \+\t"me=e-1 +endif + +" + " Use the same control variable as C language for I believe + " users will want the same behavior +if exists("c_comment_strings") + " FIXME : don't work fine with c_comment_strings set, + " which I don't care as I don't use + + " A comment can contain plmString, plmCharacter and plmNumber. + " But a "*/" inside a plmString in a plmComment DOES end the comment! So we + " need to use a special type of plmString: plmCommentString, which also ends on + " "*/", and sees a "*" at the start of the line as comment again. + syntax match plmCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region plmCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip + syntax region plmComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial + syntax region plmComment start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError + syntax match plmComment "//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError +else + syn region plmComment start="/\*" end="\*/" contains=plmTodo,plmSpaceError + syn match plmComment "//.*" contains=plmTodo,plmSpaceError +endif + +syntax match plmCommentError "\*/" + +syn keyword plmReserved ADDRESS AND AT BASED BY BYTE CALL CASE +syn keyword plmReserved DATA DECLARE DISABLE DO DWORD +syn keyword plmReserved ELSE ENABLE END EOF EXTERNAL +syn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT +syn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR +syn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC +syn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE +syn keyword plmReserved THEN TO WHILE WORD XOR +syn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT + +syn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT +syn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB +syn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX +syn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT +syn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE +syn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS +syn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB +syn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB +syn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE +syn keyword plmBuiltIn UNSIGN XLAT ZERO +syn keyword plm386BuiltIn INTERRUPT SETINTERRUPT +syn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS +syn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS +syn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE +syn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE +syn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE +syn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT +syn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW +syn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW +syn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD +syn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER +syn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD +syn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD +syn keyword plm386w16BuiltIn SETD SKIPD SKIPRD + +syn sync lines=50 + +" 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_plm_syntax_inits") + if version < 508 + let did_plm_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + " The default methods for highlighting. Can be overridden later +" HiLink plmLabel Label +" HiLink plmConditional Conditional +" HiLink plmRepeat Repeat + HiLink plmTodo Todo + HiLink plmNumber Number + HiLink plmOperator Operator + HiLink plmDelimiter Operator + "HiLink plmShowTab Error + "HiLink plmShowTabc Error + HiLink plmIdentifier Identifier + HiLink plmBuiltIn Statement + HiLink plm286BuiltIn Statement + HiLink plm386BuiltIn Statement + HiLink plm386w16BuiltIn Statement + HiLink plmReserved Statement + HiLink plm386Reserved Statement + HiLink plmPreProc PreProc + HiLink plmCommentError plmError + HiLink plmCommentString plmString + HiLink plmComment2String plmString + HiLink plmCommentSkip plmComment + HiLink plmString String + HiLink plmComment Comment + + delcommand HiLink +endif + +let b:current_syntax = "plm" + +" vim: ts=8 sw=2 + |