1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: PL/M 3071d4279SBram Moolenaar" Maintainer: Philippe Coulonges <[email protected]> 4071d4279SBram Moolenaar" Last change: 2003 May 11 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11071d4279SBram Moolenaar" PL/M is a case insensitive language 12071d4279SBram Moolenaarsyn case ignore 13071d4279SBram Moolenaar 14071d4279SBram Moolenaarsyn keyword plmTodo contained TODO FIXME XXX 15071d4279SBram Moolenaar 16071d4279SBram Moolenaar" String 17071d4279SBram Moolenaarsyn region plmString start=+'+ end=+'+ 18071d4279SBram Moolenaar 19071d4279SBram Moolenaarsyn match plmOperator "[@=\+\-\*\/\<\>]" 20071d4279SBram Moolenaar 21071d4279SBram Moolenaarsyn match plmIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" 22071d4279SBram Moolenaar 23071d4279SBram Moolenaarsyn match plmDelimiter "[();,]" 24071d4279SBram Moolenaar 25071d4279SBram Moolenaarsyn region plmPreProc start="^\s*\$\s*" skip="\\$" end="$" 26071d4279SBram Moolenaar 27071d4279SBram Moolenaar" FIXME : No Number support for floats, as I'm working on an embedded 28071d4279SBram Moolenaar" project that doesn't use any. 29071d4279SBram Moolenaarsyn match plmNumber "-\=\<\d\+\>" 30071d4279SBram Moolenaarsyn match plmNumber "\<[0-9a-fA-F]*[hH]*\>" 31071d4279SBram Moolenaar 32071d4279SBram Moolenaar" If you don't like tabs 33071d4279SBram Moolenaar"syn match plmShowTab "\t" 34071d4279SBram Moolenaar"syn match plmShowTabc "\t" 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar"when wanted, highlight trailing white space 37071d4279SBram Moolenaarif exists("c_space_errors") 38071d4279SBram Moolenaar syn match plmSpaceError "\s*$" 39071d4279SBram Moolenaar syn match plmSpaceError " \+\t"me=e-1 40071d4279SBram Moolenaarendif 41071d4279SBram Moolenaar 42071d4279SBram Moolenaar" 43071d4279SBram Moolenaar " Use the same control variable as C language for I believe 44071d4279SBram Moolenaar " users will want the same behavior 45071d4279SBram Moolenaarif exists("c_comment_strings") 46071d4279SBram Moolenaar " FIXME : don't work fine with c_comment_strings set, 47071d4279SBram Moolenaar " which I don't care as I don't use 48071d4279SBram Moolenaar 49071d4279SBram Moolenaar " A comment can contain plmString, plmCharacter and plmNumber. 50071d4279SBram Moolenaar " But a "*/" inside a plmString in a plmComment DOES end the comment! So we 51071d4279SBram Moolenaar " need to use a special type of plmString: plmCommentString, which also ends on 52071d4279SBram Moolenaar " "*/", and sees a "*" at the start of the line as comment again. 53071d4279SBram Moolenaar syntax match plmCommentSkip contained "^\s*\*\($\|\s\+\)" 54071d4279SBram Moolenaar syntax region plmCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip 55071d4279SBram Moolenaar syntax region plmComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial 56071d4279SBram Moolenaar syntax region plmComment start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError 57071d4279SBram Moolenaar syntax match plmComment "//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError 58071d4279SBram Moolenaarelse 59071d4279SBram Moolenaar syn region plmComment start="/\*" end="\*/" contains=plmTodo,plmSpaceError 60071d4279SBram Moolenaar syn match plmComment "//.*" contains=plmTodo,plmSpaceError 61071d4279SBram Moolenaarendif 62071d4279SBram Moolenaar 63071d4279SBram Moolenaarsyntax match plmCommentError "\*/" 64071d4279SBram Moolenaar 65071d4279SBram Moolenaarsyn keyword plmReserved ADDRESS AND AT BASED BY BYTE CALL CASE 66071d4279SBram Moolenaarsyn keyword plmReserved DATA DECLARE DISABLE DO DWORD 67071d4279SBram Moolenaarsyn keyword plmReserved ELSE ENABLE END EOF EXTERNAL 68071d4279SBram Moolenaarsyn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT 69071d4279SBram Moolenaarsyn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR 70071d4279SBram Moolenaarsyn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC 71071d4279SBram Moolenaarsyn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE 72071d4279SBram Moolenaarsyn keyword plmReserved THEN TO WHILE WORD XOR 73071d4279SBram Moolenaarsyn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT 74071d4279SBram Moolenaar 75071d4279SBram Moolenaarsyn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT 76071d4279SBram Moolenaarsyn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB 77071d4279SBram Moolenaarsyn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX 78071d4279SBram Moolenaarsyn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT 79071d4279SBram Moolenaarsyn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE 80071d4279SBram Moolenaarsyn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS 81071d4279SBram Moolenaarsyn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB 82071d4279SBram Moolenaarsyn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB 83071d4279SBram Moolenaarsyn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE 84071d4279SBram Moolenaarsyn keyword plmBuiltIn UNSIGN XLAT ZERO 85071d4279SBram Moolenaarsyn keyword plm386BuiltIn INTERRUPT SETINTERRUPT 86071d4279SBram Moolenaarsyn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS 87071d4279SBram Moolenaarsyn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS 88071d4279SBram Moolenaarsyn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE 89071d4279SBram Moolenaarsyn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE 90071d4279SBram Moolenaarsyn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE 91071d4279SBram Moolenaarsyn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT 92071d4279SBram Moolenaarsyn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW 93071d4279SBram Moolenaarsyn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW 94071d4279SBram Moolenaarsyn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD 95071d4279SBram Moolenaarsyn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER 96071d4279SBram Moolenaarsyn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD 97071d4279SBram Moolenaarsyn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD 98071d4279SBram Moolenaarsyn keyword plm386w16BuiltIn SETD SKIPD SKIPRD 99071d4279SBram Moolenaar 100071d4279SBram Moolenaarsyn sync lines=50 101071d4279SBram Moolenaar 102071d4279SBram Moolenaar" Define the default highlighting. 10389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 104071d4279SBram Moolenaar 105071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 106*f37506f6SBram Moolenaar" hi def link plmLabel Label 107*f37506f6SBram Moolenaar" hi def link plmConditional Conditional 108*f37506f6SBram Moolenaar" hi def link plmRepeat Repeat 109*f37506f6SBram Moolenaarhi def link plmTodo Todo 110*f37506f6SBram Moolenaarhi def link plmNumber Number 111*f37506f6SBram Moolenaarhi def link plmOperator Operator 112*f37506f6SBram Moolenaarhi def link plmDelimiter Operator 113*f37506f6SBram Moolenaar"hi def link plmShowTab Error 114*f37506f6SBram Moolenaar"hi def link plmShowTabc Error 115*f37506f6SBram Moolenaarhi def link plmIdentifier Identifier 116*f37506f6SBram Moolenaarhi def link plmBuiltIn Statement 117*f37506f6SBram Moolenaarhi def link plm286BuiltIn Statement 118*f37506f6SBram Moolenaarhi def link plm386BuiltIn Statement 119*f37506f6SBram Moolenaarhi def link plm386w16BuiltIn Statement 120*f37506f6SBram Moolenaarhi def link plmReserved Statement 121*f37506f6SBram Moolenaarhi def link plm386Reserved Statement 122*f37506f6SBram Moolenaarhi def link plmPreProc PreProc 123*f37506f6SBram Moolenaarhi def link plmCommentError plmError 124*f37506f6SBram Moolenaarhi def link plmCommentString plmString 125*f37506f6SBram Moolenaarhi def link plmComment2String plmString 126*f37506f6SBram Moolenaarhi def link plmCommentSkip plmComment 127*f37506f6SBram Moolenaarhi def link plmString String 128*f37506f6SBram Moolenaarhi def link plmComment Comment 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar 131071d4279SBram Moolenaarlet b:current_syntax = "plm" 132071d4279SBram Moolenaar 133071d4279SBram Moolenaar" vim: ts=8 sw=2 134071d4279SBram Moolenaar 135