diff --git a/src/languages/gcode.js b/src/languages/gcode.js index 822d997514..45db86f772 100644 --- a/src/languages/gcode.js +++ b/src/languages/gcode.js @@ -7,9 +7,10 @@ */ export default function(hljs) { + const regex = hljs.regex; const GCODE_KEYWORDS = { $pattern: /[A-Z]+|%/, - meta: [ + keywords: [ // conditions 'THEN', 'ELSE', @@ -61,7 +62,8 @@ export default function(hljs) { }; - const NUMBER = /[+-]?((\.\d+)|(\d+)(\.\d*)?)/; + const LETTER_BOUNDARY_RE = /(?, … - { match: /(?/ }, + { match: regex.concat(LETTER_BOUNDARY_RE, /O<.+>/) }, // Checksum at end of line: *71, *199, … { match: /\*\s*\d+\s*$/ } ] @@ -104,18 +104,17 @@ export default function(hljs) { { scope: 'variable', - relevance: 0, - match: /-?#\s*\d+/, + match: /-?#\s*\d+/ }, { scope: 'property', // Physical axes - match: new RegExp(`(?N14 G0 X-.6 Y1.590 N15 G0 Z.1 N16 M5 G49 G28 G91 Z0 -N17 CALL O9456 +N17 CALL O9456 N18 #500=0.004 N19 #503=[#500+#501] N20 VC45=0.0006 VS4=0.0007 N21 G90 G10 L20 P3 X5.Y4. Z6.567 N22 G0 X5000 -N23 IF [#1 LT 0.370] GOTO 49 +N23 IF [#1 LT 0.370] GOTO 49 N24 X-0.678 Y+.990 N25 G84.3 X-0.1 N26 #4=#5*COS[45] N27 #4=#5*SIN[45] N28 VZOFZ=652.9658 -% +% diff --git a/test/markup/gcode/extended.expect.txt b/test/markup/gcode/extended.expect.txt index ef15278ff5..a5d82a283a 100644 --- a/test/markup/gcode/extended.expect.txt +++ b/test/markup/gcode/extended.expect.txt @@ -1,4 +1,4 @@ -%; something important +%; something important ; another comment @@ -12,7 +12,7 @@ M500; comment after code M500 (comment after code) -O<boring> SUB +O<boring> SUB #20 = [#1 * SIN[#1]] #21 = [-#2 * COS[#2]] @@ -25,7 +25,7 @@ ; WITH SANE SPACING -N1 O107 IF [#10 GT 5] +N1 O107 IF [#10 GT 5] N2 G0 A0 B0 C0 U0 V0 W0 X0 Y0 Z0 *71 N3 G100 A100 B0 N4 G5.2 A10.2 B0 @@ -35,12 +35,12 @@ N8 T0 N9 M100 F1 H2 I3 J4 K5 P6 Q7 R8 S9 N10 M587 S"MYROUTER" P"ABCxyz;" "123" -N10 O107 ENDIF +N10 O107 ENDIF ; WITH EXCESSIVE SPACING -O 108 IF [#10 GT 5] +O 108 IF [#10 GT 5] N 102 G 0 A 0 B 0 C 0 U 0 V 0 W 0 X 0 Y 0 Z 0 *71 N 103 G 100 A 100 B 0 N 104 G 5.2 A 10.2 B 0 @@ -50,12 +50,12 @@ N 108 T 0 N 109 M 100 F 1 H 2 I 3 J 4 K 5 P 6 Q 7 R 8 S 9 N 110 M 587 S "MYROUTER" P "ABCxyz;" "123" -O 108 ENDIF +O 108 ENDIF ; WITHOUT SPACING -O109IF[#10GT5] +O109IF[#10GT5] N202G0A0B0C0U0V0W0X0Y0Z0*71 N203G100A100B0 N204G5.2A10.2B0 @@ -65,11 +65,11 @@ N208T0 N209M100F1H2I3J4K5P6Q7R8S9 N210M587S"MYROUTER"P"ABCxyz;""123" -0O109ENDIF +0O109ENDIF -O<boring> ENDSUB +O<boring> ENDSUB -O<boring> CALL [1] [2] [3] [4] [5] +O<boring> CALL [1] [2] [3] [4] [5] ; Words as seen in Klipper Firmware GCode @@ -81,4 +81,4 @@ SET_SKEW XY=100.0000, SKEW_PROFILE SAVE="this name has spaces" SAVE_CONFIG -% +%