1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: NQC - Not Quite C, for LEGO mindstorms 3071d4279SBram Moolenaar" NQC homepage: http://www.enteract.com/~dbaum/nqc/ 4071d4279SBram Moolenaar" Maintainer: Stefan Scherer <[email protected]> 5071d4279SBram Moolenaar" Last Change: 2001 May 10 6071d4279SBram Moolenaar" URL: http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim 7071d4279SBram Moolenaar" Filenames: .nqc 8071d4279SBram Moolenaar 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1089bcfda6SBram Moolenaarif exists("b:current_syntax") 11071d4279SBram Moolenaar finish 12071d4279SBram Moolenaarendif 13071d4279SBram Moolenaar 14071d4279SBram Moolenaar" Statements 15071d4279SBram Moolenaarsyn keyword nqcStatement break return continue start stop abs sign 16071d4279SBram Moolenaarsyn keyword nqcStatement sub task 17071d4279SBram Moolenaarsyn keyword nqcLabel case default 18071d4279SBram Moolenaarsyn keyword nqcConditional if else switch 19071d4279SBram Moolenaarsyn keyword nqcRepeat while for do until repeat 20071d4279SBram Moolenaar 21071d4279SBram Moolenaar" Scout and RCX2 22071d4279SBram Moolenaarsyn keyword nqcEvents acquire catch monitor 23071d4279SBram Moolenaar 24071d4279SBram Moolenaar" types and classes 25071d4279SBram Moolenaarsyn keyword nqcType int true false void 26071d4279SBram Moolenaarsyn keyword nqcStorageClass asm const inline 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar 30071d4279SBram Moolenaar" Sensors -------------------------------------------- 31071d4279SBram Moolenaar" Input Sensors 32071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_1 SENSOR_2 SENSOR_3 33071d4279SBram Moolenaar 34071d4279SBram Moolenaar" Types for SetSensorType() 35071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE 36071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION 37071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_LIGHT SENSOR_TOUCH 38071d4279SBram Moolenaar 39071d4279SBram Moolenaar" Modes for SetSensorMode() 40071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_MODE_RAW SENSOR_MODE_BOOL 41071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_MODE_EDGE SENSOR_MODE_PULSE 42071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS 43071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION 44071d4279SBram Moolenaar 45071d4279SBram Moolenaar" Sensor configurations for SetSensor() 46071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION 47071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE 48071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_EDGE 49071d4279SBram Moolenaar 50071d4279SBram Moolenaar" Functions - All 51071d4279SBram Moolenaarsyn keyword nqcFunction ClearSensor 52071d4279SBram Moolenaarsyn keyword nqcFunction SensorValue SensorType 53071d4279SBram Moolenaar 54071d4279SBram Moolenaar" Functions - RCX 55071d4279SBram Moolenaarsyn keyword nqcFunction SetSensor SetSensorType 56071d4279SBram Moolenaarsyn keyword nqcFunction SensorValueBool 57071d4279SBram Moolenaar 58071d4279SBram Moolenaar" Functions - RCX, CyberMaster 59071d4279SBram Moolenaarsyn keyword nqcFunction SetSensorMode SensorMode 60071d4279SBram Moolenaar 61071d4279SBram Moolenaar" Functions - RCX, Scout 62071d4279SBram Moolenaarsyn keyword nqcFunction SensorValueRaw 63071d4279SBram Moolenaar 64071d4279SBram Moolenaar" Functions - Scout 65071d4279SBram Moolenaarsyn keyword nqcFunction SetSensorLowerLimit SetSensorUpperLimit 66071d4279SBram Moolenaarsyn keyword nqcFunction SetSensorHysteresis CalibrateSensor 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar 69071d4279SBram Moolenaar" Outputs -------------------------------------------- 70071d4279SBram Moolenaar" Outputs for On(), Off(), etc. 71071d4279SBram Moolenaarsyn keyword nqcConstant OUT_A OUT_B OUT_C 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" Modes for SetOutput() 74071d4279SBram Moolenaarsyn keyword nqcConstant OUT_ON OUT_OFF OUT_FLOAT 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Directions for SetDirection() 77071d4279SBram Moolenaarsyn keyword nqcConstant OUT_FWD OUT_REV OUT_TOGGLE 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" Output power for SetPower() 80071d4279SBram Moolenaarsyn keyword nqcConstant OUT_LOW OUT_HALF OUT_FULL 81071d4279SBram Moolenaar 82071d4279SBram Moolenaar" Functions - All 83071d4279SBram Moolenaarsyn keyword nqcFunction SetOutput SetDirection SetPower OutputStatus 84071d4279SBram Moolenaarsyn keyword nqcFunction On Off Float Fwd Rev Toggle 85071d4279SBram Moolenaarsyn keyword nqcFunction OnFwd OnRev OnFor 86071d4279SBram Moolenaar 87071d4279SBram Moolenaar" Functions - RXC2, Scout 88071d4279SBram Moolenaarsyn keyword nqcFunction SetGlobalOutput SetGlobalDirection SetMaxPower 89071d4279SBram Moolenaarsyn keyword nqcFunction GlobalOutputStatus 90071d4279SBram Moolenaar 91071d4279SBram Moolenaar 92071d4279SBram Moolenaar" Sound ---------------------------------------------- 93071d4279SBram Moolenaar" Sounds for PlaySound() 94071d4279SBram Moolenaarsyn keyword nqcConstant SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN 95071d4279SBram Moolenaarsyn keyword nqcConstant SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP 96071d4279SBram Moolenaar 97071d4279SBram Moolenaar" Functions - All 98071d4279SBram Moolenaarsyn keyword nqcFunction PlaySound PlayTone 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar" Functions - RCX2, Scout 101071d4279SBram Moolenaarsyn keyword nqcFunction MuteSound UnmuteSound ClearSound 102071d4279SBram Moolenaarsyn keyword nqcFunction SelectSounds 103071d4279SBram Moolenaar 104071d4279SBram Moolenaar 105071d4279SBram Moolenaar" LCD ------------------------------------------------ 106071d4279SBram Moolenaar" Modes for SelectDisplay() 107071d4279SBram Moolenaarsyn keyword nqcConstant DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2 108071d4279SBram Moolenaarsyn keyword nqcConstant DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B 109071d4279SBram Moolenaarsyn keyword nqcConstant DISPLAY_OUT_C 110071d4279SBram Moolenaar" RCX2 111071d4279SBram Moolenaarsyn keyword nqcConstant DISPLAY_USER 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" Functions - RCX 114071d4279SBram Moolenaarsyn keyword nqcFunction SelectDisplay 115071d4279SBram Moolenaar" Functions - RCX2 116071d4279SBram Moolenaarsyn keyword nqcFunction SetUserDisplay 117071d4279SBram Moolenaar 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar" Communication -------------------------------------- 120071d4279SBram Moolenaar" Messages - RCX, Scout ------------------------------ 121071d4279SBram Moolenaar" Tx power level for SetTxPower() 122071d4279SBram Moolenaarsyn keyword nqcConstant TX_POWER_LO TX_POWER_HI 123071d4279SBram Moolenaar 124071d4279SBram Moolenaar" Functions - RCX, Scout 125071d4279SBram Moolenaarsyn keyword nqcFunction Message ClearMessage SendMessage SetTxPower 126071d4279SBram Moolenaar 127071d4279SBram Moolenaar" Serial - RCX2 -------------------------------------- 128071d4279SBram Moolenaar" for SetSerialComm() 129071d4279SBram Moolenaarsyn keyword nqcConstant SERIAL_COMM_DEFAULT SERIAL_COMM_4800 130071d4279SBram Moolenaarsyn keyword nqcConstant SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ 131071d4279SBram Moolenaar 132071d4279SBram Moolenaar" for SetSerialPacket() 133071d4279SBram Moolenaarsyn keyword nqcConstant SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE 134071d4279SBram Moolenaarsyn keyword nqcConstant SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM 135071d4279SBram Moolenaarsyn keyword nqcConstant SERIAL_PACKET_RCX 136071d4279SBram Moolenaar 137071d4279SBram Moolenaar" Functions - RCX2 138071d4279SBram Moolenaarsyn keyword nqcFunction SetSerialComm SetSerialPacket SetSerialData 139071d4279SBram Moolenaarsyn keyword nqcFunction SerialData SendSerial 140071d4279SBram Moolenaar 141071d4279SBram Moolenaar" VLL - Scout ---------------------------------------- 142071d4279SBram Moolenaar" Functions - Scout 143071d4279SBram Moolenaarsyn keyword nqcFunction SendVLL 144071d4279SBram Moolenaar 145071d4279SBram Moolenaar 146071d4279SBram Moolenaar" Timers --------------------------------------------- 147071d4279SBram Moolenaar" Functions - All 148071d4279SBram Moolenaarsyn keyword nqcFunction ClearTimer Timer 149071d4279SBram Moolenaar 150071d4279SBram Moolenaar" Functions - RCX2 151071d4279SBram Moolenaarsyn keyword nqcFunction SetTimer FastTimer 152071d4279SBram Moolenaar 153071d4279SBram Moolenaar 154071d4279SBram Moolenaar" Counters ------------------------------------------- 155071d4279SBram Moolenaar" Functions - RCX2, Scout 156071d4279SBram Moolenaarsyn keyword nqcFunction ClearCounter IncCounter DecCounter Counter 157071d4279SBram Moolenaar 158071d4279SBram Moolenaar 159071d4279SBram Moolenaar" Access Control ------------------------------------- 160071d4279SBram Moolenaarsyn keyword nqcConstant ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C 161071d4279SBram Moolenaarsyn keyword nqcConstant ACQUIRE_SOUND 162071d4279SBram Moolenaar" RCX2 only 163071d4279SBram Moolenaarsyn keyword nqcConstant ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3 164071d4279SBram Moolenaarsyn keyword nqcConstant ACQUIRE_USER_4 165071d4279SBram Moolenaar 166071d4279SBram Moolenaar" Functions - RCX2, Scout 167071d4279SBram Moolenaarsyn keyword nqcFunction SetPriority 168071d4279SBram Moolenaar 169071d4279SBram Moolenaar 170071d4279SBram Moolenaar" Events --------------------------------------------- 171071d4279SBram Moolenaar" RCX2 Events 172071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED 173071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_PULSE EVENT_TYPE_EDGE 174071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW 175071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_NORMAL EVENT_TYPE_HIGH 176071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK 177071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TYPE_MESSAGE 178071d4279SBram Moolenaar 179071d4279SBram Moolenaar" Scout Events 180071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_1_PRESSED EVENT_1_RELEASED 181071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_2_PRESSED EVENT_2_RELEASED 182071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL 183071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_LIGHT_LOW EVENT_LIGHT_CLICK 184071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0 185071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1 186071d4279SBram Moolenaarsyn keyword nqcConstant EVENT_TIMER_2 EVENT_MESSAGE 187071d4279SBram Moolenaar 188071d4279SBram Moolenaar" Functions - RCX2, Scout 189071d4279SBram Moolenaarsyn keyword nqcFunction ActiveEvents Event 190071d4279SBram Moolenaar 191071d4279SBram Moolenaar" Functions - RCX2 192071d4279SBram Moolenaarsyn keyword nqcFunction CurrentEvents 193071d4279SBram Moolenaarsyn keyword nqcFunction SetEvent ClearEvent ClearAllEvents EventState 194071d4279SBram Moolenaarsyn keyword nqcFunction CalibrateEvent SetUpperLimit UpperLimit 195071d4279SBram Moolenaarsyn keyword nqcFunction SetLowerLimit LowerLimit SetHysteresis 196071d4279SBram Moolenaarsyn keyword nqcFunction Hysteresis 197071d4279SBram Moolenaarsyn keyword nqcFunction SetClickTime ClickTime SetClickCounter 198071d4279SBram Moolenaarsyn keyword nqcFunction ClickCounter 199071d4279SBram Moolenaar 200071d4279SBram Moolenaar" Functions - Scout 201071d4279SBram Moolenaarsyn keyword nqcFunction SetSensorClickTime SetCounterLimit 202071d4279SBram Moolenaarsyn keyword nqcFunction SetTimerLimit 203071d4279SBram Moolenaar 204071d4279SBram Moolenaar 205071d4279SBram Moolenaar" Data Logging --------------------------------------- 206071d4279SBram Moolenaar" Functions - RCX 207071d4279SBram Moolenaarsyn keyword nqcFunction CreateDatalog AddToDatalog 208071d4279SBram Moolenaarsyn keyword nqcFunction UploadDatalog 209071d4279SBram Moolenaar 210071d4279SBram Moolenaar 211071d4279SBram Moolenaar" General Features ----------------------------------- 212071d4279SBram Moolenaar" Functions - All 213071d4279SBram Moolenaarsyn keyword nqcFunction Wait StopAllTasks Random 214071d4279SBram Moolenaarsyn keyword nqcFunction SetSleepTime SleepNow 215071d4279SBram Moolenaar 216071d4279SBram Moolenaar" Functions - RCX 217071d4279SBram Moolenaarsyn keyword nqcFunction Program Watch SetWatch 218071d4279SBram Moolenaar 219071d4279SBram Moolenaar" Functions - RCX2 220071d4279SBram Moolenaarsyn keyword nqcFunction SetRandomSeed SelectProgram 221071d4279SBram Moolenaarsyn keyword nqcFunction BatteryLevel FirmwareVersion 222071d4279SBram Moolenaar 223071d4279SBram Moolenaar" Functions - Scout 224071d4279SBram Moolenaar" Parameters for SetLight() 225071d4279SBram Moolenaarsyn keyword nqcConstant LIGHT_ON LIGHT_OFF 226071d4279SBram Moolenaarsyn keyword nqcFunction SetScoutRules ScoutRules SetScoutMode 227071d4279SBram Moolenaarsyn keyword nqcFunction SetEventFeedback EventFeedback SetLight 228071d4279SBram Moolenaar 229071d4279SBram Moolenaar" additional CyberMaster defines 230071d4279SBram Moolenaarsyn keyword nqcConstant OUT_L OUT_R OUT_X 231071d4279SBram Moolenaarsyn keyword nqcConstant SENSOR_L SENSOR_M SENSOR_R 232071d4279SBram Moolenaar" Functions - CyberMaster 233071d4279SBram Moolenaarsyn keyword nqcFunction Drive OnWait OnWaitDifferent 234071d4279SBram Moolenaarsyn keyword nqcFunction ClearTachoCounter TachoCount TachoSpeed 235071d4279SBram Moolenaarsyn keyword nqcFunction ExternalMotorRunning AGC 236071d4279SBram Moolenaar 237071d4279SBram Moolenaar 238071d4279SBram Moolenaar 239071d4279SBram Moolenaar" nqcCommentGroup allows adding matches for special things in comments 240071d4279SBram Moolenaarsyn keyword nqcTodo contained TODO FIXME XXX 241071d4279SBram Moolenaarsyn cluster nqcCommentGroup contains=nqcTodo 242071d4279SBram Moolenaar 243071d4279SBram Moolenaar"when wanted, highlight trailing white space 244071d4279SBram Moolenaarif exists("nqc_space_errors") 245071d4279SBram Moolenaar if !exists("nqc_no_trail_space_error") 246071d4279SBram Moolenaar syn match nqcSpaceError display excludenl "\s\+$" 247071d4279SBram Moolenaar endif 248071d4279SBram Moolenaar if !exists("nqc_no_tab_space_error") 249071d4279SBram Moolenaar syn match nqcSpaceError display " \+\t"me=e-1 250071d4279SBram Moolenaar endif 251071d4279SBram Moolenaarendif 252071d4279SBram Moolenaar 253071d4279SBram Moolenaar"catch errors caused by wrong parenthesis and brackets 254071d4279SBram Moolenaarsyn cluster nqcParenGroup contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers 255071d4279SBram Moolenaarif exists("nqc_no_bracket_error") 256071d4279SBram Moolenaar syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen 257071d4279SBram Moolenaar " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine 258071d4279SBram Moolenaar syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen 259071d4279SBram Moolenaar syn match nqcParenError display ")" 260071d4279SBram Moolenaar syn match nqcErrInParen display contained "[{}]" 261071d4279SBram Moolenaarelse 262071d4279SBram Moolenaar syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket 263071d4279SBram Moolenaar " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine 264071d4279SBram Moolenaar syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket 265071d4279SBram Moolenaar syn match nqcParenError display "[\])]" 266071d4279SBram Moolenaar syn match nqcErrInParen display contained "[\]{}]" 267071d4279SBram Moolenaar syn region nqcBracket transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket 268071d4279SBram Moolenaar " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine 269071d4279SBram Moolenaar syn region nqcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket 270071d4279SBram Moolenaar syn match nqcErrInBracket display contained "[);{}]" 271071d4279SBram Moolenaarendif 272071d4279SBram Moolenaar 273071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f". 274071d4279SBram Moolenaarsyn case ignore 275071d4279SBram Moolenaarsyn match nqcNumbers display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat 276071d4279SBram Moolenaar" Same, but without octal error (for comments) 277071d4279SBram Moolenaarsyn match nqcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 278071d4279SBram Moolenaar"hex number 279071d4279SBram Moolenaarsyn match nqcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 280071d4279SBram Moolenaar" Flag the first zero of an octal number as something special 281071d4279SBram Moolenaarsyn match nqcFloat display contained "\d\+f" 282071d4279SBram Moolenaar"floating point number, with dot, optional exponent 283071d4279SBram Moolenaarsyn match nqcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 284071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 285071d4279SBram Moolenaarsyn match nqcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 286071d4279SBram Moolenaar"floating point number, without dot, with exponent 287071d4279SBram Moolenaarsyn match nqcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" 288071d4279SBram Moolenaar" flag an octal number with wrong digits 289071d4279SBram Moolenaarsyn case match 290071d4279SBram Moolenaar 291071d4279SBram Moolenaarsyn region nqcCommentL start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError 292071d4279SBram Moolenaarsyn region nqcComment matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError 293071d4279SBram Moolenaar 294071d4279SBram Moolenaar" keep a // comment separately, it terminates a preproc. conditional 295071d4279SBram Moolenaarsyntax match nqcCommentError display "\*/" 296071d4279SBram Moolenaarsyntax match nqcCommentStartError display "/\*" contained 297071d4279SBram Moolenaar 298071d4279SBram Moolenaar 299071d4279SBram Moolenaar 300071d4279SBram Moolenaar 301071d4279SBram Moolenaar 302071d4279SBram Moolenaarsyn region nqcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError 303071d4279SBram Moolenaarsyn match nqcPreCondit display "^\s*#\s*\(else\|endif\)\>" 304071d4279SBram Moolenaarif !exists("nqc_no_if0") 305071d4279SBram Moolenaar syn region nqcCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2 306071d4279SBram Moolenaar syn region nqcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip 307071d4279SBram Moolenaar syn region nqcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip 308071d4279SBram Moolenaarendif 309071d4279SBram Moolenaarsyn region nqcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 310071d4279SBram Moolenaarsyn match nqcInclude display "^\s*#\s*include\>\s*["]" contains=nqcIncluded 311071d4279SBram Moolenaar"syn match nqcLineSkip "\\$" 312071d4279SBram Moolenaarsyn cluster nqcPreProcGroup contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket 313071d4279SBram Moolenaarsyn region nqcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup 314071d4279SBram Moolenaarsyn region nqcPreProc start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup 315071d4279SBram Moolenaar 316071d4279SBram Moolenaarif !exists("nqc_minlines") 317071d4279SBram Moolenaar if !exists("nqc_no_if0") 318071d4279SBram Moolenaar let nqc_minlines = 50 " #if 0 constructs can be long 319071d4279SBram Moolenaar else 320071d4279SBram Moolenaar let nqc_minlines = 15 " mostly for () constructs 321071d4279SBram Moolenaar endif 322071d4279SBram Moolenaarendif 323071d4279SBram Moolenaarexec "syn sync ccomment nqcComment minlines=" . nqc_minlines 324071d4279SBram Moolenaar 325071d4279SBram Moolenaar" Define the default highlighting. 32689bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 327071d4279SBram Moolenaar 328071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 329*f37506f6SBram Moolenaarhi def link nqcLabel Label 330*f37506f6SBram Moolenaarhi def link nqcConditional Conditional 331*f37506f6SBram Moolenaarhi def link nqcRepeat Repeat 332*f37506f6SBram Moolenaarhi def link nqcCharacter Character 333*f37506f6SBram Moolenaarhi def link nqcNumber Number 334*f37506f6SBram Moolenaarhi def link nqcFloat Float 335*f37506f6SBram Moolenaarhi def link nqcFunction Function 336*f37506f6SBram Moolenaarhi def link nqcParenError nqcError 337*f37506f6SBram Moolenaarhi def link nqcErrInParen nqcError 338*f37506f6SBram Moolenaarhi def link nqcErrInBracket nqcError 339*f37506f6SBram Moolenaarhi def link nqcCommentL nqcComment 340*f37506f6SBram Moolenaarhi def link nqcCommentStart nqcComment 341*f37506f6SBram Moolenaarhi def link nqcCommentError nqcError 342*f37506f6SBram Moolenaarhi def link nqcCommentStartError nqcError 343*f37506f6SBram Moolenaarhi def link nqcSpaceError nqcError 344*f37506f6SBram Moolenaarhi def link nqcStorageClass StorageClass 345*f37506f6SBram Moolenaarhi def link nqcInclude Include 346*f37506f6SBram Moolenaarhi def link nqcPreProc PreProc 347*f37506f6SBram Moolenaarhi def link nqcDefine Macro 348*f37506f6SBram Moolenaarhi def link nqcIncluded String 349*f37506f6SBram Moolenaarhi def link nqcError Error 350*f37506f6SBram Moolenaarhi def link nqcStatement Statement 351*f37506f6SBram Moolenaarhi def link nqcEvents Statement 352*f37506f6SBram Moolenaarhi def link nqcPreCondit PreCondit 353*f37506f6SBram Moolenaarhi def link nqcType Type 354*f37506f6SBram Moolenaarhi def link nqcConstant Constant 355*f37506f6SBram Moolenaarhi def link nqcCommentSkip nqcComment 356*f37506f6SBram Moolenaarhi def link nqcComment Comment 357*f37506f6SBram Moolenaarhi def link nqcTodo Todo 358*f37506f6SBram Moolenaarhi def link nqcCppSkip nqcCppOut 359*f37506f6SBram Moolenaarhi def link nqcCppOut2 nqcCppOut 360*f37506f6SBram Moolenaarhi def link nqcCppOut Comment 361071d4279SBram Moolenaar 362071d4279SBram Moolenaar 363071d4279SBram Moolenaarlet b:current_syntax = "nqc" 364071d4279SBram Moolenaar 365071d4279SBram Moolenaar" vim: ts=8 366