krl.vim (20664B)
1 " Vim syntax file 2 " Language: Kuka Robot Language 3 " Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de> 4 " Version: 3.1.0 5 " Last Change: 13. Jan 2026 6 " Credits: Thanks for contributions to this to Michael Jagusch 7 " Thanks for beta testing to Thomas Baginski 8 " 9 " Note to self: 10 " for testing perfomance 11 " open a 1000 lines file. 12 " :syntime on 13 " G 14 " hold down CTRL-U until reaching top 15 " :syntime report 16 17 " Init {{{ 18 if exists("b:current_syntax") 19 finish 20 endif 21 22 let s:keepcpo = &cpo 23 set cpo&vim 24 25 " if colorscheme is tortus(less)? krlGroupName defaults to 1 26 if get(g:, 'colors_name', " ") =~ '\<tortus' 27 \&& !exists("g:krlGroupName") 28 let g:krlGroupName=1 29 endif 30 " krlGroupName defaults to 0 if it's not initialized yet or 0 31 if !get(g:, "krlGroupName", 0) 32 let g:krlGroupName = 0 33 endif 34 35 " krl does ignore case 36 syn case ignore 37 " take #, $ and & into keyword (syntax only) 38 syn iskeyword @,48-57,_,192-255,#,$,& 39 " spell checking 40 syn spell notoplevel 41 " }}} init 42 43 " Comment and Folding {{{ 44 45 " Special Comment 46 47 " TODO Comment 48 syn keyword krlTodo contained TODO FIXME XXX 49 highlight default link krlTodo Todo 50 51 " Debug Comment 52 syn keyword krlDebug contained DEBUG 53 highlight default link krlDebug Debug 54 55 " Comment 56 " none move fold comment until second ; 57 syn match krlFoldComment /\c\v^\s*;\s*%(end)?fold>[^;]*/ containedin=krlFold contains=krlSingleQuoteString,krlInteger,krlFloat,krlMovement,krlDelimiter,krlBoolean 58 highlight default link krlFoldComment Comment 59 60 " move fold comment until second ; 61 syn match krlMoveFoldComment /\c\v^\s*;\s*fold>[^;]*<s?%(ptp|lin|circ?|spl)%(_rel)?>[^;]*/ containedin=krlFold contains=krlInteger,krlFloat,krlMovement,krlDelimiter 62 highlight default link krlMoveFoldComment Comment 63 64 " things to highlight in a fold line 65 syn keyword krlFoldHighlights CONT IN SYN OUT contained containedin=krlFoldComment 66 syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ contained containedin=krlFoldComment 67 if g:krlGroupName 68 highlight default link krlFoldHighlights Sysvars 69 else 70 " default color for Fold Highlights 71 endif 72 syn keyword krlVkrcFoldConstants EIN AUS containedin=krlFoldComment 73 highlight default link krlVkrcFoldConstants Boolean 74 75 " Comment without Fold, also includes endfold lines and fold line part after second ; 76 syn match krlComment /\c\v;\s*%(<%(end)?fold>)@!.*$/ containedin=krlFold contains=krlTodo,krlDebug,@Spell 77 " Commented out Fold line: "; ;FOLD PTP..." 78 syn match krlComment /\c\v^\s*;\s*;.*$/ contains=krlTodo,krlDebug 79 highlight default link krlComment Comment 80 81 if has("conceal") && get(g:, 'krlConcealFoldTail', 1) 82 syn match krlConcealFoldTail /\c\v(^\s*;\s*fold[^;]*)@250<=;%(--|\s*<fold>|\s*<endfold>)@!.*$/ transparent containedin=krlComment conceal cchar=* 83 endif 84 " }}} Comment and Folding 85 86 " Header {{{ 87 syn match krlHeader /&\a\w*/ 88 highlight default link krlHeader PreProc 89 " }}} Header 90 91 " Operator {{{ 92 " Boolean operator 93 syn keyword krlBoolOperator and or exor not b_and b_or b_exor b_not 94 highlight default link krlBoolOperator Operator 95 " Arithmetic operator 96 syn match krlArithOperator /[+-]/ containedin=krlFloat 97 syn match krlArithOperator /[*/]/ 98 highlight default link krlArithOperator Operator 99 " Compare operator 100 syn match krlCompOperator /[<>=]/ 101 highlight default link krlCompOperator Operator 102 " Geometric operator 103 " Do not move the : operator 104 " Must be present befor krlParamdef 105 syn match krlGeomOperator /[:]/ 106 " syn match krlGeomOperator /[:]/ containedin=krlLabel,krlParamdef 107 highlight default link krlGeomOperator Operator 108 " }}} Operator 109 110 " Type, StorageClass and Typedef {{{ 111 " Simple data types 112 syn keyword krlType bool char real int 113 " External program and function 114 syn keyword krlType ext extfct extfctp extp 115 " Communication 116 syn keyword krlType signal channel 117 highlight default link krlType Type 118 " StorageClass 119 syn keyword krlStorageClass const struc enum 120 syn match krlStorageClass /\<decl\>/ 121 syn match krlStorageClass /\<global\>/ 122 highlight default link krlStorageClass StorageClass 123 " .dat file public 124 syn keyword krlDatStorageClass public 125 highlight default link krlDatStorageClass StorageClass 126 " Parameter StorageClass 127 " Do not move the :in/:out 128 " Must be present after krlGeomOperator 129 syn match krlParamdef /[:]\s*in\>/ 130 syn match krlParamdef /[:]\s*out\>/ 131 highlight default link krlParamdef StorageClass 132 " Not a typedef but I like to have those highlighted 133 " different then types, structures or strorage classes 134 syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT 135 syn match krlTypedef /^\s*END\>/ 136 highlight default link krlTypedef Typedef 137 " }}} Type, StorageClass and Typedef 138 139 " Delimiter {{{ 140 syn match krlDelimiter /[\[\](),\\]/ 141 highlight default link krlDelimiter Delimiter 142 " }}} Delimiter 143 144 " Constant values {{{ 145 " Boolean 146 syn keyword krlBoolean true false containedin=krlStructVal 147 highlight default link krlBoolean Boolean 148 " Binary integer 149 syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal 150 highlight default link krlBinaryInt Number 151 " Hexadecimal integer 152 syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal 153 highlight default link krlHexInt Number 154 " Integer 155 syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator 156 highlight default link krlInteger Number 157 " Float 158 syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal 159 highlight default link krlFloat Float 160 " String 161 syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell 162 highlight default link krlString String 163 syn match krlSpecialChar /[|]/ containedin=krlString 164 highlight default link krlSpecialChar SpecialChar 165 " String within a fold line 166 syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell 167 highlight default link krlSingleQuoteString String 168 " Enum 169 syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal 170 highlight default link krlEnumVal Constant 171 " }}} Constant values 172 173 " Predefined Structure and Enum {{{ 174 " Predefined structures and enums found in 175 " /r1/mada/$*.dat, /r1/steu/$*.dat and 176 " /r1/system/$config.dat as well as 177 " basisTech, gripperTech and spotTech 178 " 179 syn keyword krlStructure call_stack 180 " Predefined data types found in $operate*.dat 181 syn keyword krlStructure aux_pt_mode correction_struc delta_workspace deri_exax deri_struc deri_vector emd_struc energy_data_struc energy_measuring_struc energy_module_struc extended_ret force_val_struc iobus_info_t krl_bp_t loop_axis_inc mbw_para_offset mbw_para_target mbw_result memory_info opc_par_bool_t opc_par_int_t opc_par_real_t opc_par_string_t pathtime_struc pos_axis prog_info p_last_info slave_axis_inc spl_fctctrl spl_fctdef spl_tech spl_techfct spl_techsys spl_tech_map spl_vel_restr_struc ssb_active_t strike_out_components strike_out_struc target_pt_mode tension_struc torqlimitparam t_cs vector vmdirection vmparam vmparam_pull vmparam_push vmstate vmstrategy ws_state 182 syn keyword krlEnum abs_accur_state accu_state aux_pt_values axesmask_info ax_slave_type bin_parity_t braketest_time_info brake_state buff_mode_t eco_level ediagwritemode energy_config_state_t ext_ipo_mode integration_mode int_typ_e kcp_type laser_mode ldc_ereaction ldc_eresult mbw_error msgbufmsgtype_t prog_int_e prog_status recovery_pose remote_ctrl_mode req_status rob_stop_t seek_mode_t sigdtyp sigtyp spl_techfct_mode spl_tech_bound spl_vel_mode spo_reaction target_pt_values trigger_up_type vmcontrol_s vmerror vmoffoption vmpull vmredundancy_s vmselection_s waittype wait_cmd_e ws_reference 183 " 184 " Predefined data types found in krc1 185 syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus 186 syn keyword krlEnum ident_state sig_state move_state async_state emt_mode boxmode msg_prm_typ msg_typ cmd_stat asys trace_state trace_mode direction techsys techgeoref techclass techmode hpu_key_val pro_state eax transsys mode_move cosys device rotsys emstop cause_t 187 " 188 " Predefined data types found in kss functions 189 syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars 190 syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t 191 " 192 " Predefined structures for movement 193 syn keyword krlStructure frame e6pos pos e6axis axis 194 syn keyword krlStructure fdat ldat pdat 195 syn keyword krlStructure load inertia 196 " 197 " Predefined structures for shapes 198 syn keyword krlStructure axbox cylinder box 199 " 200 " Predefined structures and enums found in /r1/mada/$machine.dat 201 syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool 202 syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff 203 " 204 " Predefined structures and enums found in /r1/mada/$robcor.dat 205 " syn keyword krlStructure 206 syn keyword krlEnum adap_acc model_type control_parameter eko_mode 207 " 208 " Predefined structures and enums found in /steu/mada/$custom.dat 209 syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction 210 syn keyword krlEnum axis_of_coordinates motion_mode spline_para_variant spreadstartpolicy target_status cp_vel_type cp_statmon 211 " 212 " Predefined structures and enums found in /steu/mada/$machine.dat 213 syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout 214 syn keyword krlEnum digincode 215 " 216 " Predefined structures and enums found in /steu/mada/$option.dat 217 syn keyword krlStructure installed_motion_modes msg_t 218 syn keyword krlEnum step_enum 219 " syn keyword krlEnum 220 " 221 " Predefined structures and enums found in /r1/system/$config.dat 222 " BasisTech 223 syn keyword krlStructure dig_out_type ctrl_in_t ctrl_out_t fct_out_t fct_in_t odat hdat basis_sugg_t out_sugg_t md_state machine_def_t machine_tool_t machine_frame_t trigger_para constvel_para condstop_para adat tm_sugg_t tqm_tqdat_t sps_prog_type 224 syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype 225 " 226 " Types found in System Variable demo 227 syn keyword krlStructure int_info 228 " 229 " GripperTech 230 syn keyword krlStructure grp_typ grp_types grp_sugg_t 231 syn keyword krlEnum on_off_typ apo_typ 232 " 233 " SpotTech 234 syn keyword krlStructure spot_type spot_sugg_t 235 syn keyword krlEnum s_command s_pair_slct command_retr 236 " 237 " VW 238 syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t 239 syn keyword krlEnum synctype dir_typ subtype ari_typ bool_typ vw_command ibgn_command vw_user_cmd move_types adv_t_type bas_type ibs_mode_typ vw_user_cmd pro_mode mode_op 240 " 241 " ProgCoop 242 syn keyword krlStructure ydat 243 " syn keyword krlEnum 244 " 245 " bas.src 246 syn keyword krlStructure cont 247 syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state 248 " 249 " MsgLib.src 250 syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T 251 syn keyword krlEnum EKrlMsgType 252 " 253 highlight default link krlStructure Structure 254 highlight default link krlEnum Structure 255 " }}} Predefined Structure and Enum 256 257 " System variable {{{ 258 syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/ 259 if g:krlGroupName 260 highlight default link krlSysvars Sysvars 261 else 262 " default color for Sysvars 263 endif 264 " }}} System variable 265 266 " Statements, keywords et al {{{ 267 " continue 268 syn keyword krlContinue continue 269 if g:krlGroupName 270 highlight default link krlContinue Continue 271 else 272 highlight default link krlContinue Statement 273 endif 274 " interrupt 275 syn match krlStatement /\v\c%(<global>\s+)?<interrupt>%(\s+<decl>)?/ contains=krlStorageClass 276 " keywords 277 syn keyword krlStatement wait on off enable disable stop trigger with when distance onstart delay prio import is minimum maximum confirm on_error_proceed 278 syn match krlStatement /\<do\>/ 279 syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/ 280 syn match krlStatement /\v\c%(<when\s+)@7<=<path>/ 281 highlight default link krlStatement Statement 282 " Conditional 283 syn keyword krlConditional if then else endif switch case default endswitch skip endskip 284 highlight default link krlConditional Conditional 285 " Repeat 286 syn keyword krlRepeat to endfor endwhile repeat loop endloop exit 287 syn match krlRepeat /\<for\>/ 288 syn match krlRepeat /\<while\>/ 289 syn match krlRepeat /\<until\>/ 290 " STEP is used as variable in VKRC, this pattern should match STEP -, 5(constant number) or VAR 291 syn match krlRepeat /\v\cstep\s+%(-|\w)/me=e-1 292 highlight default link krlRepeat Repeat 293 " Label 294 syn keyword krlLabel goto 295 syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/ 296 highlight default link krlLabel Label 297 " Keyword 298 syn keyword krlKeyword anin anout digin 299 highlight default link krlKeyword Keyword 300 " Exception 301 syn keyword krlException return resume halt 302 highlight default link krlException Exception 303 " }}} Statements, keywords et al 304 305 " special keywords for movement commands {{{ 306 syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL 307 " VKRC movement 308 syn keyword krlMovement CIR KCIR KLIN 309 " Async movement 310 syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI 311 syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/ 312 if g:krlGroupName 313 highlight default link krlMovement Movement 314 else 315 highlight default link krlMovement Special 316 endif 317 " movement modifiers 318 syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/ 319 syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/ 320 syn keyword krlMoveBlockInst ptp_spline spline endspline 321 highlight default link krlMoveBlockInst Statement 322 syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl 323 if g:krlGroupName 324 highlight default link krlMoveMod Movement 325 else 326 highlight default link krlMoveMod Special 327 endif 328 " }}} special keywords for movement commands 329 330 " Structure value {{{ 331 " avoid coloring structure component names 332 syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/ 333 syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/ 334 " highlight default link krlNames None 335 " Structure value 336 syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames 337 highlight default link krlStructVal Delimiter 338 " }}} Structure value 339 340 " BuildInFunction {{{ 341 syn keyword krlBuildInFunction contained Pulse 342 syn keyword krlBuildInFunction contained m_comment 343 syn keyword krlBuildInFunction contained is_key_pressed 344 syn keyword krlBuildInFunction contained set_opt_filter 345 syn keyword krlBuildInFunction contained timer_limit 346 syn keyword krlBuildInFunction contained tool_adj 347 syn keyword krlBuildInFunction contained FRand 348 syn keyword krlBuildInFunction contained ExecFunc eb_abs eb_test_abs eb_test EB EK EO LK mbx_rec 349 " $operate*.dat 350 " brake point 351 syn keyword krlBuildInFunction contained chg_krl_bp clr_all_krl_bp clr_krl_bp disable_krl_bp enable_krl_bp set_krl_bp 352 " other 353 syn keyword krlBuildInFunction contained InterimEnergy activate_force_mode DynBrakeTest test_brake 354 " coll monitor 355 syn keyword krlBuildInFunction contained get_collmon_set reset_collmon_set 356 " safe robot 357 syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time 358 " math 359 syn keyword krlBuildInFunction contained Abs Acos Atan2 Cos Sin Sqrt Tan 360 syn keyword krlBuildInFunction contained Forward Inverse inv_pos 361 " cFoo sFoo 362 syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite 363 " string 364 syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis 365 syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString 366 " diag 367 syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState 368 " rdc mam pid 369 syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state 370 syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd 371 syn keyword krlBuildInFunction contained PidToHd PidToRdc 372 syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd 373 syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content 374 syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive 375 " ioctl 376 syn keyword krlBuildInFunction contained IOCtl cIOCtl 377 syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake 378 " sync 379 syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync 380 " remote 381 syn keyword krlBuildInFunction contained RemoteCmd RemoteRead 382 " msg/dlg 383 syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg 384 " robvers 385 syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers 386 " md_foo 387 syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn 388 " emi 389 syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName 390 " var 391 syn keyword krlBuildInFunction contained cast_from cast_to 392 syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState 393 " sys 394 syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed 395 " err 396 syn keyword krlBuildInFunction contained err_clear err_raise 397 " motion 398 syn keyword krlBuildInFunction contained AdvancedVectorMoveOn delete_backward_buffer move_backward rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff 399 " torque 400 syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits 401 " krc1 402 syn keyword krlBuildInFunction contained clCopy cCurPos cNew cClear cRelease cKey 403 if g:krlGroupName 404 highlight default link krlBuildInFunction BuildInFunction 405 else 406 highlight default link krlBuildInFunction Function 407 endif 408 " }}} BuildInFunction 409 410 " Function {{{ 411 syn match krlFunction /[$a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction 412 highlight default link krlFunction Function 413 " }}} Function 414 415 " Error {{{ 416 if get(g:, 'krlShowError', 1) 417 " some more or less common typos 418 " 419 " vars or funcs >24 chars are not possible in krl. a234567890123456789012345 420 syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlEnumVal,krlSysvars 421 " 422 " should be interrupt (on|off) \w+ 423 syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/ 424 " 425 " for bla==5 to 7... 426 " || 427 syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/ 428 " 429 " wait for a=b 430 " | 431 syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=:?\=[^=]/me=e-1 432 " 433 " wait for a><b 434 " || 435 syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</ 436 " 437 " if (a==5) (b==6) ... 438 " ||| 439 syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/ 440 " 441 " a == b + 1 442 " a := b + 1 443 " || 444 syn match krlError7 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@1<!%(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\],+\-*/]*\s*)@<=[:=]\=/ 445 syn match krlError7 /\v%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/ 446 syn match krlError7 /\v%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/ 447 " 448 " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives 449 " a = b and c or (int1=int2) 450 " | 451 syn match krlError8 /\v%(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/ 452 " 453 " <(distance|delay|prio|minimum|maximum)> := 454 " <(distance|delay|prio|minimum|maximum)> == 455 " || 456 syn match krlError9 /\v%(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/ 457 " 458 " DO is not used at KRL repeat loops (for, while, until) 459 syn match krlError10 /\v%(^\s*%(for|while|until)[^;]+)@<=<do>/ 460 " 461 " global decl must be decl global 462 syn match krlError11 /\v%(^\s*)@<=global\s+decl>/ 463 " 464 highlight default link krlError0 Error 465 highlight default link krlError1 Error 466 highlight default link krlError2 Error 467 highlight default link krlError3 Error 468 highlight default link krlError4 Error 469 highlight default link krlError5 Error 470 highlight default link krlError6 Error 471 highlight default link krlError7 Error 472 highlight default link krlError8 Error 473 highlight default link krlError9 Error 474 highlight default link krlError10 Error 475 highlight default link krlError11 Error 476 endif 477 " }}} Error 478 479 " Finish {{{ 480 let &cpo = s:keepcpo 481 unlet s:keepcpo 482 483 let b:current_syntax = "krl" 484 " }}} Finish 485 486 " vim:sw=2 sts=2 et fdm=marker