| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " Vim syntax file | 
					
						
							|  |  |  | " Language: Kuka Robot Language | 
					
						
							|  |  |  | " Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de> | 
					
						
							|  |  |  | " Version: 3.0.0 | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | " Last Change: 22. Jun 2023 | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " Credits: Thanks for contributions to this to Michael Jagusch | 
					
						
							|  |  |  | "          Thanks for beta testing to Thomas Baginski | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Note to self: | 
					
						
							|  |  |  | " for testing perfomance | 
					
						
							|  |  |  | "     open a 1000 lines file. | 
					
						
							|  |  |  | "     :syntime on | 
					
						
							|  |  |  | "     G | 
					
						
							|  |  |  | "     hold down CTRL-U until reaching top | 
					
						
							|  |  |  | "     :syntime report | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Init {{{ | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let s:keepcpo = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " if colorscheme is tortus(less)? krlGroupName defaults to 1 | 
					
						
							|  |  |  | if get(g:, 'colors_name', " ") =~ '\<tortus' | 
					
						
							|  |  |  |       \&& !exists("g:krlGroupName") | 
					
						
							|  |  |  |   let g:krlGroupName=1  | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " krlGroupName defaults to 0 if it's not initialized yet or 0 | 
					
						
							|  |  |  | if !get(g:, "krlGroupName", 0) | 
					
						
							|  |  |  |   let g:krlGroupName = 0  | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " krl does ignore case | 
					
						
							|  |  |  | syn case ignore | 
					
						
							|  |  |  | " take #, $ and & into keyword (syntax only) | 
					
						
							|  |  |  | syn iskeyword @,48-57,_,192-255,#,$,& | 
					
						
							|  |  |  | " spell checking | 
					
						
							|  |  |  | syn spell notoplevel | 
					
						
							|  |  |  | " }}} init | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Comment and Folding {{{  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Special Comment | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " TODO Comment | 
					
						
							|  |  |  | syn keyword krlTodo contained TODO FIXME XXX | 
					
						
							|  |  |  | highlight default link krlTodo Todo | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Debug Comment | 
					
						
							|  |  |  | syn keyword krlDebug contained DEBUG | 
					
						
							|  |  |  | highlight default link krlDebug Debug | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Comment | 
					
						
							|  |  |  | " none move fold comment until second ; | 
					
						
							|  |  |  | syn match krlFoldComment /\c\v^\s*;\s*%(end)?fold>[^;]*/ containedin=krlFold contains=krlSingleQuoteString,krlInteger,krlFloat,krlMovement,krlDelimiter,krlBoolean | 
					
						
							|  |  |  | highlight default link krlFoldComment Comment | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " move fold comment until second ; | 
					
						
							|  |  |  | syn match krlMoveFoldComment /\c\v^\s*;\s*fold>[^;]*<s?%(ptp|lin|circ|spl)(_rel)?>[^;]*/ containedin=krlFold contains=krlInteger,krlFloat,krlMovement,krlDelimiter | 
					
						
							|  |  |  | highlight default link krlMoveFoldComment Comment | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " things to highlight in a fold line | 
					
						
							|  |  |  | syn keyword krlFoldHighlights CONT IN SYN OUT containedin=krlFoldComment | 
					
						
							|  |  |  | syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ containedin=krlFoldComment | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlFoldHighlights Sysvars | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   " default color for Fold Highlights | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | syn keyword krlVkrcFoldConstants EIN AUS containedin=krlFoldComment | 
					
						
							|  |  |  | highlight default link krlVkrcFoldConstants Boolean | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Comment without Fold, also includes endfold lines and fold line part after second ; | 
					
						
							|  |  |  | syn match krlComment /\c\v;\s*%(<%(end)?fold>)@!.*$/ containedin=krlFold contains=krlTodo,krlDebug,@Spell | 
					
						
							|  |  |  | " Commented out Fold line: "; ;FOLD PTP..." | 
					
						
							|  |  |  | syn match krlComment /\c\v^\s*;\s*;.*$/ contains=krlTodo,krlDebug | 
					
						
							|  |  |  | highlight default link krlComment Comment | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if has("conceal") && get(g:, 'krlConcealFoldTail', 1) | 
					
						
							|  |  |  |   syn match krlConcealFoldTail /\c\v(^\s*;\s*fold[^;]*)@250<=;%(--|\s*<fold>|\s*<endfold>)@!.*$/ transparent containedin=krlComment conceal cchar=* | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " }}} Comment and Folding  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Header {{{ | 
					
						
							|  |  |  | syn match krlHeader /&\a\w*/ | 
					
						
							|  |  |  | highlight default link krlHeader PreProc | 
					
						
							|  |  |  | " }}} Header | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Operator {{{ | 
					
						
							|  |  |  | " Boolean operator | 
					
						
							|  |  |  | syn keyword krlBoolOperator and or exor not b_and b_or b_exor b_not | 
					
						
							|  |  |  | highlight default link krlBoolOperator Operator | 
					
						
							|  |  |  | " Arithmetic operator | 
					
						
							|  |  |  | syn match krlArithOperator /[+-]/ containedin=krlFloat | 
					
						
							|  |  |  | syn match krlArithOperator /[*/]/ | 
					
						
							|  |  |  | highlight default link krlArithOperator Operator | 
					
						
							|  |  |  | " Compare operator | 
					
						
							|  |  |  | syn match krlCompOperator /[<>=]/ | 
					
						
							|  |  |  | highlight default link krlCompOperator Operator | 
					
						
							|  |  |  | " Geometric operator | 
					
						
							|  |  |  | " Do not move the : operator | 
					
						
							|  |  |  | " Must be present befor krlParamdef | 
					
						
							|  |  |  | syn match krlGeomOperator /[:]/  | 
					
						
							|  |  |  | " syn match krlGeomOperator /[:]/ containedin=krlLabel,krlParamdef | 
					
						
							|  |  |  | highlight default link krlGeomOperator Operator | 
					
						
							|  |  |  | " }}} Operator | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Type, StorageClass and Typedef {{{ | 
					
						
							|  |  |  | " Simple data types | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlType bool char real int | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " External program and function | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlType ext extfct extfctp extp | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " Communication | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlType signal channel | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | highlight default link krlType Type | 
					
						
							|  |  |  | " StorageClass | 
					
						
							|  |  |  | syn keyword krlStorageClass decl global const struc enum | 
					
						
							|  |  |  | highlight default link krlStorageClass StorageClass | 
					
						
							|  |  |  | " .dat file public | 
					
						
							|  |  |  | syn keyword krlDatStorageClass public | 
					
						
							|  |  |  | highlight default link krlDatStorageClass StorageClass | 
					
						
							|  |  |  | " Parameter StorageClass | 
					
						
							|  |  |  | " Do not move the :in/:out | 
					
						
							|  |  |  | " Must be present after krlGeomOperator | 
					
						
							|  |  |  | syn match krlParamdef /[:]\s*in\>/ | 
					
						
							|  |  |  | syn match krlParamdef /[:]\s*out\>/ | 
					
						
							|  |  |  | highlight default link krlParamdef StorageClass | 
					
						
							|  |  |  | " Not a typedef but I like to have those highlighted | 
					
						
							|  |  |  | " different then types, structures or strorage classes | 
					
						
							|  |  |  | syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT | 
					
						
							|  |  |  | syn match krlTypedef /^\s*END\>/ | 
					
						
							|  |  |  | highlight default link krlTypedef Typedef | 
					
						
							|  |  |  | " }}} Type, StorageClass and Typedef | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Delimiter {{{ | 
					
						
							|  |  |  | syn match krlDelimiter /[\[\](),\\]/ | 
					
						
							|  |  |  | highlight default link krlDelimiter Delimiter | 
					
						
							|  |  |  | " }}} Delimiter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Constant values {{{ | 
					
						
							|  |  |  | " Boolean | 
					
						
							|  |  |  | syn keyword krlBoolean true false containedin=krlStructVal | 
					
						
							|  |  |  | highlight default link krlBoolean Boolean | 
					
						
							|  |  |  | " Binary integer | 
					
						
							|  |  |  | syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal | 
					
						
							|  |  |  | highlight default link krlBinaryInt Number | 
					
						
							|  |  |  | " Hexadecimal integer | 
					
						
							|  |  |  | syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal | 
					
						
							|  |  |  | highlight default link krlHexInt Number | 
					
						
							|  |  |  | " Integer | 
					
						
							|  |  |  | syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator | 
					
						
							|  |  |  | highlight default link krlInteger Number | 
					
						
							|  |  |  | " Float | 
					
						
							|  |  |  | syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal | 
					
						
							|  |  |  | highlight default link krlFloat Float | 
					
						
							|  |  |  | " String | 
					
						
							|  |  |  | syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell | 
					
						
							|  |  |  | highlight default link krlString String | 
					
						
							|  |  |  | syn match krlSpecialChar /[|]/ containedin=krlString | 
					
						
							|  |  |  | highlight default link krlSpecialChar SpecialChar | 
					
						
							|  |  |  | " String within a fold line | 
					
						
							|  |  |  | syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell | 
					
						
							|  |  |  | highlight default link krlSingleQuoteString String | 
					
						
							|  |  |  | " Enum | 
					
						
							|  |  |  | syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal | 
					
						
							|  |  |  | highlight default link krlEnumVal Constant | 
					
						
							|  |  |  | " }}} Constant values | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Predefined Structure and Enum {{{ | 
					
						
							|  |  |  | " Predefined structures and enums found in | 
					
						
							|  |  |  | " /r1/mada/$*.dat, /r1/steu/$*.dat and | 
					
						
							|  |  |  | " /r1/system/$config.dat as well as | 
					
						
							|  |  |  | " basisTech, gripperTech and spotTech | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined data types found in krc1 | 
					
						
							|  |  |  | syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus  | 
					
						
							|  |  |  | 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  | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined data types found in kss functions | 
					
						
							|  |  |  | syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars  | 
					
						
							|  |  |  | syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t  | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures for movement | 
					
						
							|  |  |  | syn keyword krlStructure frame e6pos pos e6axis axis | 
					
						
							|  |  |  | syn keyword krlStructure fdat ldat pdat | 
					
						
							|  |  |  | syn keyword krlStructure load inertia | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures for shapes | 
					
						
							|  |  |  | syn keyword krlStructure axbox cylinder box | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /r1/mada/$machine.dat | 
					
						
							|  |  |  | syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool | 
					
						
							|  |  |  | syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /r1/mada/$robcor.dat | 
					
						
							|  |  |  | " syn keyword krlStructure | 
					
						
							|  |  |  | syn keyword krlEnum adap_acc model_type control_parameter eko_mode | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /steu/mada/$custom.dat | 
					
						
							|  |  |  | syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlEnum axis_of_coordinates motion_mode spline_para_variant spreadstartpolicy target_status cp_vel_type cp_statmon | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /steu/mada/$machine.dat | 
					
						
							|  |  |  | syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout | 
					
						
							|  |  |  | syn keyword krlEnum digincode | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /steu/mada/$option.dat | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlStructure installed_motion_modes msg_t  | 
					
						
							|  |  |  | syn keyword krlEnum step_enum | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | " syn keyword krlEnum | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Predefined structures and enums found in /r1/system/$config.dat | 
					
						
							|  |  |  | " BasisTech | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " GripperTech | 
					
						
							|  |  |  | syn keyword krlStructure grp_typ grp_types grp_sugg_t | 
					
						
							|  |  |  | syn keyword krlEnum on_off_typ apo_typ | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " SpotTech | 
					
						
							|  |  |  | syn keyword krlStructure spot_type spot_sugg_t | 
					
						
							|  |  |  | syn keyword krlEnum s_command s_pair_slct command_retr | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " VW | 
					
						
							|  |  |  | syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " ProgCoop | 
					
						
							|  |  |  | syn keyword krlStructure ydat | 
					
						
							|  |  |  | " syn keyword krlEnum | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " bas.src | 
					
						
							|  |  |  | syn keyword krlStructure cont | 
					
						
							|  |  |  | syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " MsgLib.src | 
					
						
							|  |  |  | syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T | 
					
						
							|  |  |  | syn keyword krlEnum EKrlMsgType | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | highlight default link krlStructure Structure | 
					
						
							|  |  |  | highlight default link krlEnum Structure | 
					
						
							|  |  |  | " }}} Predefined Structure and Enum | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " System variable {{{ | 
					
						
							|  |  |  | syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/ | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlSysvars Sysvars | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   " default color for Sysvars | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " }}} System variable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Statements, keywords et al {{{ | 
					
						
							|  |  |  | " continue | 
					
						
							|  |  |  | syn keyword krlContinue continue | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlContinue Continue | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   highlight default link krlContinue Statement | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " interrupt  | 
					
						
							|  |  |  | syn match krlStatement /\v\c%(<global>\s+)?<INTERRUPT>%(\s+<decl>)?/ contains=krlStorageClass | 
					
						
							|  |  |  | " keywords | 
					
						
							|  |  |  | syn keyword krlStatement wait on off enable disable stop trigger with when distance onstart delay do prio import is minimum maximum confirm on_error_proceed | 
					
						
							|  |  |  | syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/ | 
					
						
							|  |  |  | syn match krlStatement /\v\c%(<when\s+)@7<=<path>/ | 
					
						
							|  |  |  | highlight default link krlStatement Statement | 
					
						
							|  |  |  | " Conditional | 
					
						
							|  |  |  | syn keyword krlConditional if then else endif switch case default endswitch skip endskip | 
					
						
							|  |  |  | highlight default link krlConditional Conditional | 
					
						
							|  |  |  | " Repeat | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  | syn keyword krlRepeat for to endfor while endwhile repeat until loop endloop exit | 
					
						
							|  |  |  | " STEP is used as variable in VKRC, this pattern should match STEP -, 5(constant number) or VAR | 
					
						
							|  |  |  | syn match krlRepeat /\v\cstep\s+%(-|\w)/me=e-1 | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  | highlight default link krlRepeat Repeat | 
					
						
							|  |  |  | " Label | 
					
						
							|  |  |  | syn keyword krlLabel goto | 
					
						
							|  |  |  | syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/ | 
					
						
							|  |  |  | highlight default link krlLabel Label | 
					
						
							|  |  |  | " Keyword | 
					
						
							|  |  |  | syn keyword krlKeyword anin anout digin | 
					
						
							|  |  |  | highlight default link krlKeyword Keyword | 
					
						
							|  |  |  | " Exception | 
					
						
							|  |  |  | syn keyword krlException return resume halt | 
					
						
							|  |  |  | highlight default link krlException Exception | 
					
						
							|  |  |  | " }}} Statements, keywords et al | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " special keywords for movement commands {{{ | 
					
						
							|  |  |  | syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL | 
					
						
							|  |  |  | syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI | 
					
						
							|  |  |  | syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/ | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlMovement Movement | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   highlight default link krlMovement Special | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " movement modifiers | 
					
						
							|  |  |  | syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/ | 
					
						
							|  |  |  | syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/ | 
					
						
							|  |  |  | syn keyword krlMoveBlockInst ptp_spline spline endspline | 
					
						
							|  |  |  | highlight default link krlMoveBlockInst Statement | 
					
						
							|  |  |  | syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlMoveMod Movement | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   highlight default link krlMoveMod Special | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " }}} special keywords for movement commands | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Structure value {{{ | 
					
						
							|  |  |  | " avoid coloring structure component names | 
					
						
							|  |  |  | syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/ | 
					
						
							|  |  |  | syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/ | 
					
						
							|  |  |  | " highlight default link krlNames None | 
					
						
							|  |  |  | " Structure value | 
					
						
							|  |  |  | syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames | 
					
						
							|  |  |  | highlight default link krlStructVal Delimiter | 
					
						
							|  |  |  | " }}} Structure value | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " BuildInFunction {{{ | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained Pulse | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained m_comment | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained is_key_pressed  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained set_opt_filter  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained timer_limit  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained tool_adj  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained FRand  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained ExecFunc eb_test EB EK EO LK mbx_rec  | 
					
						
							|  |  |  | " safe robot | 
					
						
							|  |  |  | syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time | 
					
						
							|  |  |  | " math | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained Abs Sin Cos Acos Tan Atan Atan2 Sqrt | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained Forward Inverse inv_pos | 
					
						
							|  |  |  | " cFoo sFoo | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite  | 
					
						
							|  |  |  | " string | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString | 
					
						
							|  |  |  | " diag | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState  | 
					
						
							|  |  |  | " rdc mam pid | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained PidToHd PidToRdc  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive  | 
					
						
							|  |  |  | " ioctl | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained IOCtl cIOCtl  | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake  | 
					
						
							|  |  |  | " sync | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync  | 
					
						
							|  |  |  | " remote | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained RemoteCmd RemoteRead  | 
					
						
							|  |  |  | " msg/dlg | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg  | 
					
						
							|  |  |  | " robvers | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers  | 
					
						
							|  |  |  | " md_foo | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn  | 
					
						
							|  |  |  | " emi | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName  | 
					
						
							|  |  |  | " var | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained cast_from cast_to | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState  | 
					
						
							|  |  |  | " sys | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed  | 
					
						
							|  |  |  | " err | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained err_clear err_raise | 
					
						
							|  |  |  | " motion | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained delete_backward_buffer rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff | 
					
						
							|  |  |  | " torque | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits | 
					
						
							|  |  |  | " krc1 | 
					
						
							|  |  |  | syn keyword krlBuildInFunction contained cLcopy cCurpos cNew cClear cRelease cKey | 
					
						
							|  |  |  | if g:krlGroupName | 
					
						
							|  |  |  |   highlight default link krlBuildInFunction BuildInFunction | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   highlight default link krlBuildInFunction Function | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " }}} BuildInFunction | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Function {{{ | 
					
						
							|  |  |  | syn match krlFunction /[a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction | 
					
						
							|  |  |  | highlight default link krlFunction Function | 
					
						
							|  |  |  | " }}} Function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Error {{{ | 
					
						
							|  |  |  | if get(g:, 'krlShowError', 1) | 
					
						
							|  |  |  |   " some more or less common typos | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " vars or funcs >24 chars are not possible in krl. a234567890123456789012345 | 
					
						
							| 
									
										
										
										
											2023-08-09 20:35:35 +02:00
										 |  |  |   syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlEnumVal,krlSysvars | 
					
						
							| 
									
										
										
										
											2022-04-18 15:36:40 +01:00
										 |  |  |   " | 
					
						
							|  |  |  |   " should be interrupt (on|off) \w+ | 
					
						
							|  |  |  |   syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " for bla==5 to 7... | 
					
						
							|  |  |  |   "        || | 
					
						
							|  |  |  |   syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " TODO optimize performance | 
					
						
							|  |  |  |   " wait for a=b | 
					
						
							|  |  |  |   "           | | 
					
						
							|  |  |  |   syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=\=[^=]/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " wait for a><b | 
					
						
							|  |  |  |   "           || | 
					
						
							|  |  |  |   syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " if (a==5) (b==6) ... | 
					
						
							|  |  |  |   "         ||| | 
					
						
							|  |  |  |   syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " TODO optimize performance | 
					
						
							|  |  |  |   " a == b + 1 | 
					
						
							|  |  |  |   " a := b + 1 | 
					
						
							|  |  |  |   "   || | 
					
						
							|  |  |  |   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*)@<=[:=]\=/ | 
					
						
							|  |  |  |   syn match krlError7 /\v\c%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/ | 
					
						
							|  |  |  |   syn match krlError7 /\v\c%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives | 
					
						
							|  |  |  |   " TODO optimize performance | 
					
						
							|  |  |  |   " a = b and c or (int1=int2) | 
					
						
							|  |  |  |   "                     | | 
					
						
							|  |  |  |   syn match krlError8 /\v(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " <(distance|delay|prio)> := | 
					
						
							|  |  |  |   " <(distance|delay|prio)> == | 
					
						
							|  |  |  |   "                         || | 
					
						
							|  |  |  |   syn match krlError9 /\v(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   " 'for', 'while' or 'repeat' followed by 'do' | 
					
						
							|  |  |  |   syn match krlError10 /\c\v^\s*(until|while|for)>[^;]*<do>/ | 
					
						
							|  |  |  |   " | 
					
						
							|  |  |  |   highlight default link krlError0 Error | 
					
						
							|  |  |  |   highlight default link krlError1 Error | 
					
						
							|  |  |  |   highlight default link krlError2 Error | 
					
						
							|  |  |  |   highlight default link krlError3 Error | 
					
						
							|  |  |  |   highlight default link krlError4 Error | 
					
						
							|  |  |  |   highlight default link krlError5 Error | 
					
						
							|  |  |  |   highlight default link krlError6 Error | 
					
						
							|  |  |  |   highlight default link krlError7 Error | 
					
						
							|  |  |  |   highlight default link krlError8 Error | 
					
						
							|  |  |  |   highlight default link krlError9 Error | 
					
						
							|  |  |  |   highlight default link krlError10 Error | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " }}} Error | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Finish {{{ | 
					
						
							|  |  |  | let &cpo = s:keepcpo | 
					
						
							|  |  |  | unlet s:keepcpo | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "krl" | 
					
						
							|  |  |  | " }}} Finish | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " vim:sw=2 sts=2 et fdm=marker |