" Vim syntax file " Language: Jam/MR " Maintainer: Chris Comparini " URL: " Last Change: 2004 August 5 " As usual: " 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 if !exists("jam_mrJambase") " assume standard (Perforce) Jambase let jam_mrJambase = "standard" endif if !exists("jam_mrVersion") " assume we're using the lastest jam unless told otherwise let jam_mrVersion = 2.5 endif " Standard (perforce) Jambase rules: if jam_mrJambase == "standard" " From the jam 2.5 Jambase (and earlier! when? Change this?) if jam_mrVersion >= 2.5 syn keyword jam_mr2_5Rule As Bulk Cc Chmod Clean File Fortran GenFile syn keyword jam_mr2_5Rule HardLink HdrRule InstallInto InstallBin GenFile1 syn keyword jam_mr2_5Rule InstallFile InstallLib InstallMan InstallShell syn keyword jam_mr2_5Rule Lex Library LibraryFromObjects Link LinkLibraries syn keyword jam_mr2_5Rule Main MainFromObjects MakeLocate MkDir Object syn keyword jam_mr2_5Rule ObjectCcFlags ObjectDefines ObjectHdrs Objects syn keyword jam_mr2_5Rule RmTemps Setuid Shell SoftLink SubDir FSubDirPath syn keyword jam_mr2_5Rule SubDirCcFlags SubDirHdrs SubInclude SubRules syn keyword jam_mr2_5Rule Undefines UserObject Yacc " C++ rules have '+' characters! setlocal iskeyword+=+ syn keyword jam_mr2_5Rule C++ ObjectC++Flags SubDirC++Flags " "Utility" rules: (also from 2.5 jambase) syn keyword jam_mr2_5UtilRule FGrist FGristFiles FGristSourceFiles FReverse syn keyword jam_mr2_5UtilRule FSubDir FStripCommon FRelPath FAppendSuffix syn keyword jam_mr2_5UtilRule FQuote FDefines FIncludes FDirName FQuote endif " Jam 2.2 compatibility if jam_mrVersion >= 2.2 syn keyword jam_mr2_2Rule addDirName makeCommon _makeCommon makeDirName syn keyword jam_mr2_2Rule makeGrist makeGristedName makeRelPath makeString syn keyword jam_mr2_2Rule makeSubDir makeSuffixed endif " Old Jam 1 jambase rules: These are treated as the other rules presently, " but we might want to highlight them differently if they're officially " deprecated. syn keyword jam_mr1_xRule BULK FILE HDRRULE INSTALL LIBRARY LIBS LINK MAIN syn keyword jam_mr1_xRule SETUID SHELL UNDEFINES syn keyword jam_mr1_xRule INSTALLBIN INSTALLLIB INSTALLMAN endif " jam_mrBaseRule cluster contains all rules from the default Jambase: syn cluster jam_mrBaseRule contains=jam_mr2_5UtilRule,jam_mr2_5Rule,jam_mr1_xRule,jam_mr2_2Rule " variables (Identifiers, in vim lingo): (LA = Left on Assignment) syn region jam_mrIdentifier start=/\$(/ end=/)/ contains=jam_mrModifier,jam_mrIdentifier syn match jam_mrIdentifierLA "\S\+" contained " Modifiers within identifiers: syn match jam_mrModifier /:[BSMDPGULEJ]\+/ contained syn match jam_mrModifier /:[GDBSMREJ]=/ contained contains=jam_mrIdentifier syn match jam_mrModifier /\[[0-9]\+-\?[0-9]*\]/ contained " strings: syn region jam_mrString start=/\\\@]=\?\)\|\s=/ syn match jam_mrCompareOp /\sin\s/ syn match jam_mrGroupingOp /\s[()]/ syn cluster jam_mrOperator contains=jam_mrLogicOp,jam_mrCompareOp,jam_mrGroupingOp " We count : and ; as delimiters: syn match jam_mrDelimiter /\s[;:]$/ syn match jam_mrDelimiter /\s[;:]\s/ " Actions: stuff between the braces in actions gets different highlighting " because it's interpreted by some other shell. (might be interesting to " use some kind of nested syntax highlighting here - like, use the sh " highlighting or whatever's apropriate.) syn keyword jam_mrActionsKW actions contained syn keyword jam_mrActionsMods existing ignore piecemeal quietly together updated contained " FIXME: bind should only highlight if it's folowed by a variable name " (or list thereof?) syn match jam_mrActionsMods /bind/ contained syn region jam_mrActions start=/actions/ end=/}/ contains=jam_mrNestedBrace,jam_mrActionsKW,jam_mrActionsMods syn region jam_mrNestedBrace start=/{/ end=/}/ contained contains=jam_mrNestedBrace,jam_mrIdentifier " comments: syn match jam_mrComment "#.*" " Define the default highlighting. This based on some sample file. " 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_jam_mr_syn_inits") if version < 508 let did_jam_mr_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink jam_mrComment Comment HiLink jam_mrOperator Operator HiLink jam_mrIdentifier Identifier HiLink jam_mrIdentifierLA jam_mrIdentifier HiLink jam_mrModifier Special HiLink jam_mrBaseRule Statement HiLink jam_mr2_5UtilRule jam_mrBaseRule HiLink jam_mr2_5Rule jam_mrBaseRule HiLink jam_mr1_xRule jam_mrBaseRule HiLink jam_mr2_2Rule jam_mrBaseRule HiLink jam_mrBuiltIn Statement HiLink jam_mrDepBI jam_mrBuiltIn HiLink jam_mrModBI jam_mrBuiltIn HiLink jam_mrUtilBI jam_mrBuiltIn HiLink jam_mrStatement Statement HiLink jam_mrConditional Conditional HiLink jam_mrLabel Label HiLink jam_mrRepeat Repeat HiLink jam_mrOperator Operator HiLink jam_mrLogicOp jam_mrOperator HiLink jam_mrCompareOp jam_mrOperator HiLink jam_mrGroupingOp jam_mrOperator HiLink jam_mrOnOp jam_mrOperator HiLink jam_mrAssignOp jam_mrOperator HiLink jam_mrListExpandOp jam_mrOperator HiLink jam_mrDelimiter Delimiter HiLink jam_mrString String HiLink jam_mrActionsKW jam_mrLabel HiLink jam_mrActionsMods jam_mrBuiltIn delcommand HiLink endif let b:current_syntax = "jam_mr"