comparison runtime/syntax/krl.vim @ 28517:f73a9bdff3a3

Update runtime files Commit: https://github.com/vim/vim/commit/75ab590f8504a8912ca0b8c58f6b897bb7a34f07 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 18 15:36:40 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Mon, 18 Apr 2022 16:45:03 +0200
parents
children 3dd63e73de28
comparison
equal deleted inserted replaced
28516:91556781726b 28517:f73a9bdff3a3
1 " Vim syntax file
2 " Language: Kuka Robot Language
3 " Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
4 " Version: 3.0.0
5 " Last Change: 18. Apr 2022
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 containedin=krlFoldComment
66 syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ 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 containedin=krlAnyType
113 " External program and function
114 syn keyword krlType ext extfct extfctp extp containedin=krlAnyType
115 " Communication
116 syn keyword krlType signal channel containedin=krlAnyType
117 highlight default link krlType Type
118 " StorageClass
119 syn keyword krlStorageClass decl global const struc enum
120 highlight default link krlStorageClass StorageClass
121 " .dat file public
122 syn keyword krlDatStorageClass public
123 highlight default link krlDatStorageClass StorageClass
124 " Parameter StorageClass
125 " Do not move the :in/:out
126 " Must be present after krlGeomOperator
127 syn match krlParamdef /[:]\s*in\>/
128 syn match krlParamdef /[:]\s*out\>/
129 highlight default link krlParamdef StorageClass
130 " Not a typedef but I like to have those highlighted
131 " different then types, structures or strorage classes
132 syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT
133 syn match krlTypedef /^\s*END\>/
134 highlight default link krlTypedef Typedef
135 " }}} Type, StorageClass and Typedef
136
137 " Delimiter {{{
138 syn match krlDelimiter /[\[\](),\\]/
139 highlight default link krlDelimiter Delimiter
140 " }}} Delimiter
141
142 " Constant values {{{
143 " Boolean
144 syn keyword krlBoolean true false containedin=krlStructVal
145 highlight default link krlBoolean Boolean
146 " Binary integer
147 syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal
148 highlight default link krlBinaryInt Number
149 " Hexadecimal integer
150 syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal
151 highlight default link krlHexInt Number
152 " Integer
153 syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator
154 highlight default link krlInteger Number
155 " Float
156 syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal
157 highlight default link krlFloat Float
158 " String
159 syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell
160 highlight default link krlString String
161 syn match krlSpecialChar /[|]/ containedin=krlString
162 highlight default link krlSpecialChar SpecialChar
163 " String within a fold line
164 syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell
165 highlight default link krlSingleQuoteString String
166 " Enum
167 syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal
168 highlight default link krlEnumVal Constant
169 " }}} Constant values
170
171 " Predefined Structure and Enum {{{
172 " Predefined structures and enums found in
173 " /r1/mada/$*.dat, /r1/steu/$*.dat and
174 " /r1/system/$config.dat as well as
175 " basisTech, gripperTech and spotTech
176 "
177 " Predefined data types found in krc1
178 syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus
179 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
180 "
181 " Predefined data types found in kss functions
182 syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars
183 syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t
184 "
185 " Predefined structures for movement
186 syn keyword krlStructure frame e6pos pos e6axis axis
187 syn keyword krlStructure fdat ldat pdat
188 syn keyword krlStructure load inertia
189 "
190 " Predefined structures for shapes
191 syn keyword krlStructure axbox cylinder box
192 "
193 " Predefined structures and enums found in /r1/mada/$machine.dat
194 syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool
195 syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff
196 "
197 " Predefined structures and enums found in /r1/mada/$robcor.dat
198 " syn keyword krlStructure
199 syn keyword krlEnum adap_acc model_type control_parameter eko_mode
200 "
201 " Predefined structures and enums found in /steu/mada/$custom.dat
202 syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction
203 syn keyword krlEnum axis_of_coordinates spline_para_variant target_status cp_vel_type cp_statmon
204 "
205 " Predefined structures and enums found in /steu/mada/$machine.dat
206 syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout
207 syn keyword krlEnum digincode
208 "
209 " Predefined structures and enums found in /steu/mada/$option.dat
210 syn keyword krlStructure msg_t
211 " syn keyword krlEnum
212 "
213 " Predefined structures and enums found in /r1/system/$config.dat
214 " BasisTech
215 syn keyword krlStructure dig_out_type ctrl_in_t ctrl_out_t fct_out_t fct_in_t odat 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
216 syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype
217 "
218 " GripperTech
219 syn keyword krlStructure grp_typ grp_types grp_sugg_t
220 syn keyword krlEnum on_off_typ apo_typ
221 "
222 " SpotTech
223 syn keyword krlStructure spot_type spot_sugg_t
224 syn keyword krlEnum s_command s_pair_slct command_retr
225 "
226 " VW
227 syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t
228 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
229 "
230 " ProgCoop
231 syn keyword krlStructure ydat
232 " syn keyword krlEnum
233 "
234 " bas.src
235 syn keyword krlStructure cont
236 syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state
237 "
238 " MsgLib.src
239 syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T
240 syn keyword krlEnum EKrlMsgType
241 "
242 highlight default link krlStructure Structure
243 highlight default link krlEnum Structure
244 " }}} Predefined Structure and Enum
245
246 " System variable {{{
247 syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/
248 if g:krlGroupName
249 highlight default link krlSysvars Sysvars
250 else
251 " default color for Sysvars
252 endif
253 " }}} System variable
254
255 " Statements, keywords et al {{{
256 " continue
257 syn keyword krlContinue continue
258 if g:krlGroupName
259 highlight default link krlContinue Continue
260 else
261 highlight default link krlContinue Statement
262 endif
263 " interrupt
264 syn match krlStatement /\v\c%(<global>\s+)?<INTERRUPT>%(\s+<decl>)?/ contains=krlStorageClass
265 " keywords
266 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
267 syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/
268 syn match krlStatement /\v\c%(<when\s+)@7<=<path>/
269 highlight default link krlStatement Statement
270 " Conditional
271 syn keyword krlConditional if then else endif switch case default endswitch skip endskip
272 highlight default link krlConditional Conditional
273 " Repeat
274 syn keyword krlRepeat for to step endfor while endwhile repeat until loop endloop exit
275 highlight default link krlRepeat Repeat
276 " Label
277 syn keyword krlLabel goto
278 syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/
279 highlight default link krlLabel Label
280 " Keyword
281 syn keyword krlKeyword anin anout digin
282 highlight default link krlKeyword Keyword
283 " Exception
284 syn keyword krlException return resume halt
285 highlight default link krlException Exception
286 " }}} Statements, keywords et al
287
288 " special keywords for movement commands {{{
289 syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL
290 syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI
291 syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/
292 if g:krlGroupName
293 highlight default link krlMovement Movement
294 else
295 highlight default link krlMovement Special
296 endif
297 " movement modifiers
298 syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/
299 syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/
300 syn keyword krlMoveBlockInst ptp_spline spline endspline
301 highlight default link krlMoveBlockInst Statement
302 syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl
303 if g:krlGroupName
304 highlight default link krlMoveMod Movement
305 else
306 highlight default link krlMoveMod Special
307 endif
308 " }}} special keywords for movement commands
309
310 " Structure value {{{
311 " avoid coloring structure component names
312 syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/
313 syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/
314 " highlight default link krlNames None
315 " Structure value
316 syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames
317 highlight default link krlStructVal Delimiter
318 " }}} Structure value
319
320 " BuildInFunction {{{
321 syn keyword krlBuildInFunction contained Pulse
322 syn keyword krlBuildInFunction contained m_comment
323 syn keyword krlBuildInFunction contained is_key_pressed
324 syn keyword krlBuildInFunction contained set_opt_filter
325 syn keyword krlBuildInFunction contained timer_limit
326 syn keyword krlBuildInFunction contained tool_adj
327 syn keyword krlBuildInFunction contained FRand
328 syn keyword krlBuildInFunction contained ExecFunc eb_test EB EK EO LK mbx_rec
329 " safe robot
330 syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time
331 " math
332 syn keyword krlBuildInFunction contained Abs Sin Cos Acos Tan Atan Atan2 Sqrt
333 syn keyword krlBuildInFunction contained Forward Inverse inv_pos
334 " cFoo sFoo
335 syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite
336 " string
337 syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis
338 syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString
339 " diag
340 syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState
341 " rdc mam pid
342 syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state
343 syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd
344 syn keyword krlBuildInFunction contained PidToHd PidToRdc
345 syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd
346 syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content
347 syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive
348 " ioctl
349 syn keyword krlBuildInFunction contained IOCtl cIOCtl
350 syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake
351 " sync
352 syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync
353 " remote
354 syn keyword krlBuildInFunction contained RemoteCmd RemoteRead
355 " msg/dlg
356 syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg
357 " robvers
358 syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers
359 " md_foo
360 syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn
361 " emi
362 syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName
363 " var
364 syn keyword krlBuildInFunction contained cast_from cast_to
365 syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState
366 " sys
367 syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed
368 " err
369 syn keyword krlBuildInFunction contained err_clear err_raise
370 " motion
371 syn keyword krlBuildInFunction contained delete_backward_buffer rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff
372 " torque
373 syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits
374 " krc1
375 syn keyword krlBuildInFunction contained cLcopy cCurpos cNew cClear cRelease cKey
376 if g:krlGroupName
377 highlight default link krlBuildInFunction BuildInFunction
378 else
379 highlight default link krlBuildInFunction Function
380 endif
381 " }}} BuildInFunction
382
383 " Function {{{
384 syn match krlFunction /[a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction
385 highlight default link krlFunction Function
386 " }}} Function
387
388 " Error {{{
389 if get(g:, 'krlShowError', 1)
390 " some more or less common typos
391 "
392 " vars or funcs >24 chars are not possible in krl. a234567890123456789012345
393 syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlAnyType,krlEnumVal,krlSysvars
394 "
395 " should be interrupt (on|off) \w+
396 syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/
397 "
398 " for bla==5 to 7...
399 " ||
400 syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/
401 "
402 " TODO optimize performance
403 " wait for a=b
404 " |
405 syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=\=[^=]/
406 "
407 " wait for a><b
408 " ||
409 syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</
410 "
411 " if (a==5) (b==6) ...
412 " |||
413 syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/
414 "
415 " TODO optimize performance
416 " a == b + 1
417 " a := b + 1
418 " ||
419 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*)@<=[:=]\=/
420 syn match krlError7 /\v\c%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/
421 syn match krlError7 /\v\c%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/
422 "
423 " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives
424 " TODO optimize performance
425 " a = b and c or (int1=int2)
426 " |
427 syn match krlError8 /\v(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/
428 "
429 " <(distance|delay|prio)> :=
430 " <(distance|delay|prio)> ==
431 " ||
432 syn match krlError9 /\v(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/
433 "
434 " 'for', 'while' or 'repeat' followed by 'do'
435 syn match krlError10 /\c\v^\s*(until|while|for)>[^;]*<do>/
436 "
437 highlight default link krlError0 Error
438 highlight default link krlError1 Error
439 highlight default link krlError2 Error
440 highlight default link krlError3 Error
441 highlight default link krlError4 Error
442 highlight default link krlError5 Error
443 highlight default link krlError6 Error
444 highlight default link krlError7 Error
445 highlight default link krlError8 Error
446 highlight default link krlError9 Error
447 highlight default link krlError10 Error
448 endif
449 " }}} Error
450
451 " Finish {{{
452 let &cpo = s:keepcpo
453 unlet s:keepcpo
454
455 let b:current_syntax = "krl"
456 " }}} Finish
457
458 " vim:sw=2 sts=2 et fdm=marker