aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/rapid.vim
blob: ed0da095c05c99f67faaef4c9b0683654f8b1f1c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
" ABB Rapid Command syntax file for Vim
" Language: ABB Rapid Command
" Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
" Version: 2.3.0
" Last Change: 21. Jul 2023
" Credits: Thanks for beta testing to Thomas Baginski
"
" Suggestions of improvement are very welcome. Please email me!
"
"
"
" Note to self:
" for testing perfomance
"     open a 1000 lines file.
"     :syntime on
"     G
"     hold down CTRL-U until reaching top
"     :syntime report
"
"
" TODO:   - highlight rapid constants and maybe constants from common
"           technology packages
"         - optimize rapidErrorStringTooLong 
"         - error highlight for missing 2nd point in MoveCirc et al

" Init {{{
" Remove any old syntax stuff that was loaded (5.x) or quit when a syntax file
" was already loaded (6.x).
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif

let s:keepcpo= &cpo
set cpo&vim

" if colorscheme is tortus rapidNoHighLink defaults to 1
if (get(g:,'colors_name'," ")=="tortus" || get(g:,'colors_name'," ")=="tortusless") 
      \&& !exists("g:rapidGroupName")
  let g:rapidGroupName=1 
endif
" rapidGroupName defaults to 0 if it's not initialized yet or 0
if !get(g:,"rapidGroupName",0)
  let g:rapidGroupName=0 
endif

" Rapid does ignore case
syn case ignore
" spell checking
syn spell notoplevel
" }}} init

" common highlighting {{{

" Error {{{
if get(g:,'rapidShowError',1)
  "
  " This error must be defined befor rapidCharCode and rapidEscapedBackSlash
  " a string containing a single \ which is not a char code
  syn match rapidErrorSingleBackslash /\\/ contained
  highlight default link rapidErrorSingleBackslash Error
  "
endif
" }}} Error

" Constant values {{{
" Boolean
syn keyword rapidBoolean TRUE FALSE Edge High Low
highlight default link rapidBoolean Boolean
" Float (num)
" syn match rapidFloat /\v%(\W|_)@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/
syn match rapidFloat /\v\c%(<\d+\.|\.?<\d)\d*%(E[+-]?\d+)?>/ contains=rapidOperator
highlight default link rapidFloat Float
" integer in decimal, hexadecimal, octal and binary
syn match rapidDec /\<[0-9]\+\>/
highlight default link rapidDec Number
syn match rapidHex /\<0x[0-9a-fA-F]\+\>/
highlight default link rapidHex Number
syn match rapidOct /\<0o[0-7]\+\>/
highlight default link rapidOct Number
syn match rapidBin /\<0b[01]\+\>/
highlight default link rapidBin Number
" String. Note: Don't rename group rapidString. Indent depend on this
syn region rapidString matchgroup=rapidString start=/"/ skip=/""/ end=/"/ oneline contains=rapidStringDoubleQuote,rapidEscapedBackSlash,rapidCharCode,rapidErrorSingleBackslash,rapidErrorStringTooLong,@Spell
highlight default link rapidString String
" two adjacent "" in string for one double quote
syn match rapidStringDoubleQuote /""/ contained
highlight default link rapidStringDoubleQuote SpecialChar
" character code in string
syn match rapidCharCode /\\\x\x/ contained
highlight default link rapidCharCode SpecialChar
" escaped \ in string
syn match rapidEscapedBackSlash /\\\\/ contained
highlight default link rapidEscapedBackSlash SpecialChar
" }}} Constant values

" }}} common highlighting

if bufname("%") =~ '\c\.cfg$'
" {{{ highlighting for *.cfg

  " special chars {{{
  " syn match rapidOperator /:\|[+-]\|\*\|\/\|\\/
  syn match rapidOperator /[-+*/:\\]/
  syn match rapidOperator /^#/
  highlight default link rapidOperator Operator
  " }}} special chars

  " sections {{{
  syn match rapidException /^\w\+/
  syn match rapidException /CFG_\d\+/
  highlight default link rapidException Exception
  " }}} sections

  " Error {{{
  if get(g:,'rapidShowError',1)
    "
    " This error must be defined after rapidString
    " Any Name longer than 32 chars
    syn match rapidErrorNameTooLong /-Name "[^"]\{33,}"/
    highlight default link rapidErrorNameTooLong Error
    "
  endif
  " }}} Error

  " }}} highlighting for *.cfg
else
  " highlighting for *.mod, *.sys and *.prg {{{

  " sync for regions from a line comment or the start of a function
  syn sync match rapidSync grouphere NONE /\v\c^\s*%(!|%(task\s+|local\s+)?%(module|proc|func|trap|record)>)/

  " Comment {{{ 
  " TODO Comment
  syn match rapidTodoComment contained /\<TODO\>\|\<FIXME\>\|\<XXX\>/
  highlight default link rapidTodoComment Todo
  " Debug comment
  syn match rapidDebugComment contained /\<DEBUG\>/
  highlight default link rapidDebugComment Debug
  " Line comment
  syn match rapidComment /!.*$/ contains=rapidTodoComment,rapidDebugComment,@Spell
  highlight default link rapidComment Comment
  " }}} Comment 

  " Header {{{
  syn match rapidHeader /^%%%/
  highlight default link rapidHeader PreProc
  " }}} Header

  " Operator {{{
  " Boolean operator
  syn keyword rapidOperator and or xor not div mod
  " Arithmetic and compare operator
  syn match rapidOperator /[-+*/<>:=]/
  " conditional argument
  syn match rapidOperator /?/
  highlight default link rapidOperator Operator
  " }}} Operator

  " Type, StorageClass and Typedef {{{
  " anytype (preceded by 'alias|pers|var|const|func'
  " TODO: still missing are userdefined types which are part of a parameter:
  " PROC message( mystring msMessagePart1{},
  "               \ myvar msMsg4{})
  " TODO testing. Problem: does not highlight any type if it's part of an argument list
  " syn match rapidAnyType /\v^\s*(global\s+|task\s+|local\s+)?(alias|pers|var|const|func)\s+\w+>/ contains=rapidStorageClass,rapidType,rapidTypeDef
  " highlight default link rapidAnyType Type
  syn keyword rapidType accdata aiotrigg bool btnres busstate buttondata byte
  syn keyword rapidType cfgdomain clock cnvcmd confdata confsupdata corrdescr datapos deflectiondata dionum dir dnum
  syn keyword rapidType egmframetype egmident egm_minmax egmstate egmstopmode errdomain errnum ErrorInfo errstr errtype event_type exec_level extjoint handler_type
  syn keyword rapidType icondata identno inposdata intnum inttypes iodev iounit_state jointtarget
  syn keyword rapidType listitem loaddata loadidnum loadsession mecunit motionprocessmode motsetdata
  " syn keyword rapidType num
  syn keyword rapidType opcalc opnum orient paridnum paridvalidnum pathrecid pnpdata pos pose proc_times progdisp o_jointtarget o_robtarget
  syn keyword rapidType rawbytes restartdata rmqheader rmqmessage rmqslot robjoint robtarget
  syn keyword rapidType searchdata sensor sensorstate sensorvardata shapedata signalai signalao signaldi signaldo signalgi signalgo signalorigin singdata socketdev socketstatus speeddata stopmovestartmove_mem stoppoint stoppointdata string stringdig sup_timeouts supervtype switch symnum syncident 
  syn keyword rapidType taskid tasks tasksatstart testsignal tooldata tpnum trapdata triggdata triggflag triggios triggiosdnum triggmode triggstrgo tsp_status tunegtype tunetype
  syn keyword rapidType uishownum veldata visiondata wobjdata wzstationary wztemporary zonedata
  " SoftMove data types
  syn keyword rapidType css_offset_dir css_soft_dir cssframe
  " arc data types
  syn keyword rapidType advSeamData arcdata flystartdata seamdata arctrackdata opttrackdata weavedata welddata 
  " conveyor tracking data types
  syn keyword rapidType indcnvdata
  " Integrated Vision data types
  syn keyword rapidType cameradev cameratarget 
  " arc Weldguide and MultiPass data types
  syn keyword rapidType adaptdata trackdata multidata 
  " dispense data types
  syn keyword rapidType beaddata equipdata
  " Spot data types
  syn keyword rapidType gundata gunnum spotdata forcedata simdata smeqdata smeqtype
  " Tool change data types
  syn keyword rapidType standno ToolInfo toolno
  " Continuous Application Platform data types
  syn keyword rapidType capaptrreferencedata capdata capevent caplatrackdata capmvsttim capspeeddata capspeeddata capstopmode captestno captrackdata capweavedata flypointdata processtimes restartblkdata supervtimeouts weavestartdata 
  " Bulls Eye data types
  syn keyword rapidType be_device be_scan be_tooldesign
  " Force Control data types
  syn keyword rapidType fcboxvol fccondstatus fccylindervol fcdamping fcforcevector fcframe fclindir fcprocessdata fcplane fcrotdir fcspeedvector fcspherevol fcspdchgtunetype fcxyznum
  " Discrete application platform data types
  syn keyword rapidType dadescapp dadescprc daintdata
  " VW Konzernstandard VWKS_1.07.02
  syn keyword rapidType merker 
  syn keyword rapidType frgnum frgwert robnum 
  syn keyword rapidType fmnum applid calibdatavorr stepdata 
  syn keyword rapidType tsmethode tsdaten teilspeicherdaten
  syn keyword rapidType greiferdaten greiferposition bauteildaten bauteilkontrolle g_datenident g_sensor g_signal g_teilident g_ventil 
  syn keyword rapidType strgnum typnum 
  syn keyword rapidType hubnum kopfnum 
  syn keyword rapidType applservicetype 
  syn keyword rapidType applfraesdaten kwdionum 
  syn keyword rapidType butechnum
  syn keyword rapidType toolnum dbnum 
  " das folgende sind datentypen aber das kann man doch nicht machen...
  " syn keyword rapidType position wert
  syn keyword rapidType camdata camlimitdata cammode camprotocoldata camstatus camsequence campositionstatus
  syn keyword rapidType saposnum sabereichnum autofocusnum focusposnum lascaledata laleistungnum larobnum laprognum uebwnum dgbanum dgjobnum gasspuelnum davalve gasuebwnum 
  syn keyword rapidType lsfigurnum lsstarttype 
  syn keyword rapidType lwprognum lwdiodnum lsstarttype 
  syn keyword rapidType lztype diskrethubnum lztipnum 
  syn keyword rapidType gblmethod
  syn keyword rapidType buatypenum buatechnum buadirnum 
  highlight default link rapidType Type
  " Storage class
  syn keyword rapidStorageClass LOCAL TASK VAR PERS CONST ALIAS NOVIEW NOSTEPIN VIEWONLY READONLY SYSMODULE INOUT
  highlight default link rapidStorageClass StorageClass
  " Not a typedef but I like to have those highlighted different then types,
  " structures or strorage classes
  syn keyword rapidTypeDef MODULE ENDMODULE PROC ERROR UNDO BACKWARD ENDPROC RECORD ENDRECORD TRAP ENDTRAP FUNC ENDFUNC
  highlight default link rapidTypeDef TypeDef
  " }}} Type, StorageClass and Typedef

  " Statements, keywords et al {{{
  " syn keyword rapidStatement
  " highlight default link rapidStatement Statement
  " Conditional
  syn keyword rapidConditional if then elseif else endif test case default endtest
  highlight default link rapidConditional Conditional
  " Repeat
  syn keyword rapidRepeat do
  syn match rapidRepeat /\c\v^\s*%(<while>|<for>)%([^!]+<do>)@=/
  syn keyword rapidRepeat from to step endfor endwhile
  highlight default link rapidRepeat Repeat
  " Label
  syn keyword rapidLabel goto
  syn match rapidLabel /\c\v^\s*[[:upper:][:lower:]]\k*\:\ze%([^=]|$)/ contains=rapidConditional,rapidOperator
  highlight default link rapidLabel Label
  " Keyword
  syn keyword rapidKeyword AccSet ActEventBuffer ActUnit Add AliasCamera AliasIO AliasIOReset BitClear BitSet BookErrNo BrakeCheck
  syn keyword rapidKeyword CallByVar CancelLoad CheckProgRef CirPathMode Clear ClearIOBuff ClearPath ClearRawBytes ClkReset ClkStart ClkStop Close CloseDir ConfJ ConfL CONNECT CopyFile CopyRawBytes CornerPathWarning CorrClear CorrCon CorrDiscon CorrWrite
  syn keyword rapidKeyword CSSAct CSSDeact CSSForceOffsetAct CSSForceOffsetDeact CSSOffsetTune CyclicBrakeCheck
  syn keyword rapidKeyword DeactEventBuffer DeactUnit Decr DitherAct DitherDeact DropSensor 
  syn keyword rapidKeyword EGMActJoint EGMActMove EGMActPose EGMGetId EGMReset EGMSetupAI EGMSetupAO EGMSetupGI EGMSetupLTAPP EGMSetupUC EOffsOff EOffsOn EOffsSet EraseModule ErrLog ErrWrite
  syn keyword rapidKeyword FitCircle FricIdInit FricIdEvaluate FricIdSetFricLevels 
  syn keyword rapidKeyword GetDataVal GetGroupSignalInfo GetJointData GetSysData GetTorqueMargin GetTrapData GripLoad HollowWristReset 
  syn keyword rapidKeyword IDelete IDisable IEnable IError Incr IndReset InvertDO IOBusStart IOBusState IoCtrlAxis_RefSync IoCtrlAxis_RefSyncOff IoCtrlAxis_RefSyncOn IODisable IOEnable IPers IRMQMessage ISignalAI ISignalAO ISignalDI ISignalDO ISignalGI ISignalGO ISleep ITimer IVarValue IWatch
  syn keyword rapidKeyword Load LoadId MakeDir ManLoadIdProc MatrixSolve MatrixSolveQR MatrixSVD MechUnitLoad MotionProcessModeSet MotionSup MToolRotCalib MToolTCPCalib Open OpenDir
  syn keyword rapidKeyword PackDNHeader PackRawBytes PathAccLim PathLengthReset PathLengthStart PathLengthStop PathRecStart PathRecStop PathResol PDispOff PDispOn PDispSet ProcerrRecovery PrxActivAndStoreRecord PrxActivRecord PrxDbgStoreRecord PrxDeactRecord PrxResetPos PrxResetRecords PrxSetPosOffset PrxSetRecordSampleTime PrxSetSyncalarm PrxStartRecord PrxStopRecord PrxStoreRecord PrxUseFileRecord PulseDO
  syn keyword rapidKeyword ReadAnyBin ReadBlock ReadCfgData ReadErrData ReadRawBytes ReadVarArr RemoveAllCyclicBool RemoveCyclicBool RemoveDir RemoveFile RenameFile Reset ResetAxisDistance ResetAxisMoveTime ResetPPMoved ResetRetryCount ResetTorqueMargin RestoPath Rewind RMQEmptyQueue RMQFindSlot RMQGetMessage RMQGetMsgData RMQGetMsgHeader RMQReadWait RMQSendMessage RMQSendWait
  syn keyword rapidKeyword SafetyControllerSyncRequest Save SaveCfgData SCWrite SenDevice Set SetAllDataVal SetAO SetDataSearch SetDataVal SetDO SetGO SetLeadThrough SetSysData SetupCyclicBool SiConnect SiClose SiGetCyclic SingArea SiSetCyclic SkipWarn SocketAccept SocketBind SocketClose SocketConnect SocketCreate SocketListen SocketReceive SocketReceiveFrom SocketSend SocketSendTo SoftAct SoftDeact SoftElbow SpeedLimAxis SpeedLimCheckPoint SpeedRefresh SpyStart SpyStop StartLoad STCalib STClose STIndGun STIndGunReset SToolRotCalib SToolTCPCalib STOpen StorePath STTune STTuneReset SupSyncSensorOff SupSyncSensorOn SyncMoveOff SyncMoveOn SyncMoveResume SyncMoveSuspend SyncMoveUndo SyncToSensor SystemStopAction
  syn keyword rapidKeyword TestSignDefine TestSignReset TextTabInstall TPErase TPReadDnum TPReadFK TPReadNum TPShow TPWrite TriggCheckIO TriggDataCopy TriggDataReset TriggEquip TriggInt TriggIO TriggRampAO TriggSpeed TriggStopProc TryInt TuneReset TuneServo
  syn keyword rapidKeyword UIMsgBox UIMsgWrite UIMsgWriteAbort UIShow UnLoad UnpackRawBytes VelSet WaitAI WaitAO WaitDI WaitDO WaitGI WaitGO WaitLoad WaitRob WaitSensor WaitSyncTask WaitTestAndSet WaitTime WaitUntil WarmStart WITH WorldAccLim Write WriteAnyBin WriteBin WriteBlock WriteCfgData WriteRawBytes WriteStrBin WriteVar WriteVarArr WZBoxDef WZCylDef WZDisable WZDOSet WZEnable WZFree WZHomeJointDef WZLimJointDef WZLimSup WZSphDef
  " arc instructions
  syn keyword rapidKeyword ArcRefresh RecoveryMenu RecoveryMenuWR RecoveryPosSet RecoveryPosReset SetWRProcName 
  " conveyor tracking instructions
  syn keyword rapidKeyword UseACCProfile WaitWObj DropWObj RecordProfile WaitAndRecProf StoreProfile LoadProfile ActivateProfile DeactProfile CnvGenInstr CnvSync CnvGenInstr IndCnvInit IndCnvEnable IndCnvDisable IndCnvReset IndCnvAddObject 
  syn keyword rapidKeyword UseReachableTargets GetMaxUsageTime ResetMaxUsageTime CnvPredictReach
  " Integrated Vision instructions
  syn keyword rapidKeyword CamFlush CamGetParameter CamGetResult CamLoadJob CamReqImage CamSetExposure CamSetParameter CamSetProgramMode CamSetRunMode CamStartLoadJob CamWaitLoadJob 
  " arc Weldguide and MultiPass instructions
  syn keyword rapidKeyword MPSavePath MPLoadPath MPReadInPath MPOffsEaxOnPath
  " Paint instructions
  syn keyword rapidKeyword ConsoleWrite IpsSetParam PntProdUserLog SetBrush SetBrushFac
  " Spot instructions
  syn keyword rapidKeyword SetForce Calibrate ReCalcTCP IndGunMove IndGunMoveReset OpenHighLift CloseHighLift SwSetIntSpotData SwSetIntForceData SwSetIntGunData SwSetIntSimData SwGetCalibData SwGetFixTipData 
  " Tool change instructions
  syn keyword rapidKeyword TcCloseCover TcDropOffTool TcLockTool TcOpenCover TcPickupTool TcUnlockTool
  " dispense instructions
  syn keyword rapidKeyword SetTmSignal SyncWWObj
  " Continuous Application Platform instructions
  syn keyword rapidKeyword CapAPTrSetup CapAPTrSetupAI CapAPTrSetupAO  CapAPTrSetupPERS CapCondSetDO CapEquiDist CapNoProcess CapRefresh CAPSetStopMode CapWeaveSync ICap InitSuperv IPathPos RemoveSuperv SetupSuperv 
  " Bulls Eye instructions
  syn keyword rapidKeyword BECheckTcp BEDebugState BERefPointer BESetupToolJ BETcpExtend BEUpdateTcp
  " Force Control instructions
  syn keyword rapidKeyword FCAct FCCalib FCCondForce FCCondOrient FCCondPos FCCondReoriSpeed FCCondTCPSpeed FCCondTorque FCCondWaitWhile FCDeact FCPress1LStart FCPressC FCPressEnd FCPressL FCRefCircle FCRefForce FCRefLine FCRefMoveFrame FCRefRot FCRefSpiral FCRefSprForceCart FCRefStart FCRefStop FCRefTorque FCResetDampingTune FCResetLPFilterTune FCSpdChgAct FCSpdChgDeact FCSpdChgTunSet FCSpdChgTunReset FCSetDampingTune FCSetLPFilterTune FCSupvForce FCSupvOrient FCSupvPos FCSupvReoriSpeed FCSupvTCPSpeed FCSupvTorque 
  " Discrete application platform instructions
  syn keyword rapidKeyword DaActProc DaDeactAllProc DaDeactProc DaDefExtSig DaDefProcData DaDefProcSig DaDefUserData DaGetCurrData DaSetCurrData DaSetupAppBehav DaStartManAction DaGetAppDescr DaGetAppIndex DaGetNumOfProcs DaGetNumOfRob DaGetPrcDescr 
  " Production Manager instructions
  syn keyword rapidKeyword ExecEngine PMgrGetNextPart PMgrSetNextPart PMgrRunMenu
  " Homepos-Running instructions
  syn keyword rapidKeyword HR_Exit HR_ExitCycle HR_SavePos HR_SetMoveToStartPos HR_SetTypeDIndex HR_SetTypeIndex 
  highlight default link rapidKeyword Keyword
  " Exception
  syn keyword rapidException Exit ErrRaise ExitCycle Raise RaiseToUser Retry Return TryNext
  syn match rapidException /\s\+Stop\s*[\\;]/me=e-1
  highlight default link rapidException Exception
  " }}} Statements, keywords et al

  " Special keyword for move command {{{
  " uncategorized yet
  syn keyword rapidMovement MovePnP
  syn keyword rapidMovement EGMMoveC EGMMoveL EGMRunJoint EGMRunPose EGMStop
  syn keyword rapidMovement IndAMove IndCMove IndDMove IndRMove 
  " common instructions
  syn keyword rapidMovement MoveAbsJ MoveC MoveExtJ MoveJ MoveL 
  syn keyword rapidMovement MoveCAO MoveCDO MoveCGO MoveCSync MoveJAO MoveJDO MoveJGO MoveJSync MoveLAO MoveLDO MoveLGO MoveLSync 
  syn keyword rapidMovement SearchC SearchExtJ SearchL
  syn keyword rapidMovement TriggC TriggJ TriggL TriggJIOs TriggLIOs
  " Arc instructions
  syn keyword rapidMovement ArcC ArcC1 ArcC2 ArcCEnd ArcC1End ArcC2End ArcCStart ArcC1Start ArcC2Start 
  syn keyword rapidMovement ArcL ArcL1 ArcL2 ArcLEnd ArcL1End ArcL2End ArcLStart ArcL1Start ArcL2Start ArcMoveExtJ 
  " Arc Weldguide and MultiPass instructions
  syn keyword rapidMovement ArcRepL ArcAdaptLStart ArcAdaptL ArcAdaptC ArcAdaptLEnd ArcAdaptCEnd ArcCalcLStart ArcCalcL ArcCalcC ArcCalcLEnd ArcCalcCEnd ArcAdaptRepL 
  syn keyword rapidMovement Break 
  " Continuous Application Platform instructions
  syn keyword rapidMovement CapC CapL CapLATrSetup CSSDeactMoveL ContactL
  " Dispense instructions
  syn keyword rapidMovement DispL DispC
  " Nut instructions"
  syn keyword rapidMovement NutL NutJ
  syn keyword rapidMovement PathRecMoveBwd PathRecMoveFwd 
  " Paint instructions"
  syn keyword rapidMovement PaintL PaintLSig PaintLDO PaintC
  syn keyword rapidMovement StartMove StartMoveRetry StepBwdPath StopMove StopMoveReset
  " Spot instructions
  syn keyword rapidMovement SpotL SpotJ SpotML SpotMJ CalibL CalibJ MeasureWearL 
  " Homepos-Running instructions
  syn keyword rapidMovement SMoveJ SMoveJDO SMoveJGO SMoveJSync SMoveL SMoveLDO SMoveLGO SMoveLSync SSearchL STriggJ STriggL
  syn keyword rapidMovement HR_ContMove HR_MoveBack HR_MoveRoutine HR_MoveTo HR_MoveToHome SCSSDeactMoveL 
  " Discrete application platform instructions
  syn keyword rapidMovement DaProcML DaProcMJ
  " VW Konzernstandard VWKS_1.07.02
  syn keyword rapidMovement MoveABS  MoveABS_FB  MoveABS_FRG  MoveABS_ROB
  syn keyword rapidMovement MoveCIRC MoveCIRC_FB MoveCIRC_FRG MoveCIRC_ROB
  syn keyword rapidMovement MoveLIN  MoveLIN_FB  MoveLIN_FRG  MoveLIN_ROB 
  syn keyword rapidMovement MovePTP  MovePTP_FB  MovePTP_FRG  MovePTP_ROB 
  syn keyword rapidMovement SearchCIRC SearchCIRC_M 
  syn keyword rapidMovement SearchLIN  SearchLIN_M 
  syn keyword rapidMovement MoveABS_AO  MoveABS_DO  MoveABS_GO
  syn keyword rapidMovement MoveCIRC_AO MoveCIRC_DO MoveCIRC_GO
  syn keyword rapidMovement MoveLIN_AO  MoveLIN_DO  MoveLIN_GO
  syn keyword rapidMovement KW_LoesenLIN
  syn keyword rapidMovement SPZ_FraesenLIN SPZ_FraesenPTP SPZ_MessenLIN SPZ_MessenPTP SPZ_LIN SPZ_PTP 
  syn keyword rapidMovement BZ_LIN BZ_PTP
  syn keyword rapidMovement KL_LIN KL_CIRC
  syn keyword rapidMovement BP_LIN BP_PTP
  syn keyword rapidMovement BU_CIRC BU_LIN
  syn keyword rapidMovement CZ_LIN CZ_LIN_V CZ_PTP CZ_PTP_V
  syn keyword rapidMovement FD_LIN FD_PTP
  syn keyword rapidMovement KG_LIN KG_PTP
  syn keyword rapidMovement DA_LIN 
  syn keyword rapidMovement LK_CIRC LK_LIN 
  syn keyword rapidMovement LL_CIRC LL_LIN
  syn keyword rapidMovement LS_CIRC LS_LIN LS_LIN_F LS_PTP_F
  syn keyword rapidMovement LW_CIRC LW_LIN
  syn keyword rapidMovement LZ_LIN LZ_PTP LZ_ReinigenLIN LZ_ReinigenPTP
  syn keyword rapidMovement MS_CIRC MS_LIN MS_ReinigenLIN MS_SearchLIN MS_PTP_CS MS_LIN_CS GBL_LIN GBL_PTP GBL_RefPointLIN
  syn keyword rapidMovement NK_LIN
  syn keyword rapidMovement NZ_LIN NZ_LIN_V NZ_PTP NZ_PTP_V 
  syn keyword rapidMovement PR_LIN PR_PTP
  syn keyword rapidMovement RF_CIRC RF_LIN
  syn keyword rapidMovement STP_FraesenLIN STP_FraesenPTP STP_LIN STP_PTP 
  syn keyword rapidMovement SM_LIN SM_PTP
  syn keyword rapidMovement BUA_CIRC BUA_LIN BUA_MessenLIN BUA_MessenPTP
  syn keyword rapidMovement KE_LIN 
  if g:rapidGroupName
    highlight default link rapidMovement Movement
  else
    highlight default link rapidMovement Special
  endif
  " }}} special keyword for move command 

  " Any name {{{
  syn match rapidNames /\v[[:upper:][:lower:]](\k|\.)*/
  " }}} Any name

  " Attempt to avoid false highlight of num in case of parameter name:
  "   TPWrite "goPosNo="\num:=GOutput(goPosNo);
  " Must follow after rapidNames in this file
  syn match rapidType /\c\v<num>\s*\ze[^ :]/

  " Structure value {{{
  " rapid structrure values. added to be able to conceal them
  syn region rapidConcealableString matchgroup=rapidConcealableString start=/"/ skip=/""/ end=/"/ oneline keepend extend contained contains=rapidStringDoubleQuote,rapidEscapedBackSlash,rapidCharCode,rapidErrorSingleBackslash,rapidErrorStringTooLong,@Spell conceal 
  highlight default link rapidConcealableString String
  syn region rapidStructVal matchgroup=rapidStructDelimiter start=/\[/ end=/\]/ contains=rapidStructVal,rapidBoolean,rapidDec,rapidHex,rapidOct,rapidBin,rapidFloat,rapidConcealableString,rapidDelimiter,rapidConstant,rapidErrNo,rapidIntNo,rapidOperator keepend extend conceal cchar=* 
  highlight default link rapidStructDelimiter Delimiter
  " check edge cases like this one:
  "  LOCAL CONST listitem lstAuswService{18}:=[["","Service Position"],["","Bremsentest"],["","Referenzfahrt"],["","Manuelles Abfahren"],["","Justagestellung"],["","Transportposition"],
  "      ["","Spitze-Spitze Greifer 1, [RT]"],["","Spitze-Spitze Greifer 2, [FT]"],["","Spitze-Spitze Pruefspitze"],["","Werkobjekt Ablage"],["","Werkobjekt Modul 1"],
  "      ["","Werkobjekt Modul 2"],["","TCP von Greifer 1 vermessen, [RT]"],["","TCP von Greifer 2 vermessen, [FT]"],["","