@duet3d/monacotokens 3.7.0-alpha.1 → 3.7.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/monaco-gcode.d.ts +1 -0
- package/dist/monaco-gcode.js +56 -5
- package/dist/monaco-menu.d.ts +3 -0
- package/dist/monaco-menu.js +35 -0
- package/dist/monaco-stm32.d.ts +3 -0
- package/dist/monaco-stm32.js +84 -0
- package/dist/register.d.ts +6 -0
- package/dist/register.js +24 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -15,3 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./monaco-gcode"), exports);
|
|
18
|
+
__exportStar(require("./monaco-stm32"), exports);
|
|
19
|
+
__exportStar(require("./monaco-menu"), exports);
|
|
20
|
+
__exportStar(require("./register"), exports);
|
package/dist/monaco-gcode.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type * as monaco from "monaco-editor/esm/vs/editor/editor.api";
|
|
2
2
|
export declare const gcodeFDMLanguage: monaco.languages.IMonarchLanguage;
|
|
3
3
|
export declare const gcodeCNCLanguage: monaco.languages.IMonarchLanguage;
|
|
4
|
+
export declare const gcodeLanguageConfiguration: monaco.languages.LanguageConfiguration;
|
package/dist/monaco-gcode.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.gcodeCNCLanguage = exports.gcodeFDMLanguage = void 0;
|
|
3
|
+
exports.gcodeLanguageConfiguration = exports.gcodeCNCLanguage = exports.gcodeFDMLanguage = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Generate a Monarch language for RRF-style G-code
|
|
6
6
|
* @param cncMode If true, comments in parentheses are allowed
|
|
@@ -8,8 +8,8 @@ exports.gcodeCNCLanguage = exports.gcodeFDMLanguage = void 0;
|
|
|
8
8
|
function generateMonarchLanguage(fdmMode) {
|
|
9
9
|
return {
|
|
10
10
|
consts: ["true", "false", "iterations", "line", "null", "pi", "result", "input"],
|
|
11
|
-
functions: ["abs", "acos", "asin", "atan", "atan2", "cos", "
|
|
12
|
-
"min", "mod", "
|
|
11
|
+
functions: ["abs", "acos", "asin", "atan", "atan2", "ceil", "cos", "datetime", "degrees", "drop", "exists", "exp", "fileexists", "fileread",
|
|
12
|
+
"find", "floor", "isnan", "log", "max", "min", "mod", "pow", "radians", "random", "round", "sin", "sqrt", "square", "take", "tan", "vector"],
|
|
13
13
|
keywords: ["abort", "echo", "if", "elif", "while", "set"],
|
|
14
14
|
noArgKeywords: ["else", "break", "continue"],
|
|
15
15
|
varKeywords: ["global", "var"],
|
|
@@ -18,6 +18,8 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
18
18
|
includeLF: true,
|
|
19
19
|
tokenizer: {
|
|
20
20
|
root: [
|
|
21
|
+
// line numbers
|
|
22
|
+
[/[nN]\d+/, "type"],
|
|
21
23
|
// G/M/T-codes
|
|
22
24
|
[/[gG][0123](?=\D)/, "keyword", fdmMode ? "normalGcode" : "moveGcode"],
|
|
23
25
|
[/[gGmM]\d+(\.\d+)?/, "keyword", "normalGcode"],
|
|
@@ -37,6 +39,7 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
37
39
|
[/\d+/, "number"],
|
|
38
40
|
// strings
|
|
39
41
|
[/"(.|\"\")*?"/, "string"],
|
|
42
|
+
[/"[^"\n]*/, "invalid"],
|
|
40
43
|
// comments
|
|
41
44
|
[/;.*/, "comment"],
|
|
42
45
|
[/\(.*\)/, fdmMode ? "invalid" : "comment"]
|
|
@@ -47,8 +50,12 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
47
50
|
[/[gGmM]\d+(\.\d*)?/, "keyword", "normalGcode"],
|
|
48
51
|
[/[tT](?=\{)/, "keyword", "normalGcodeWithT"],
|
|
49
52
|
[/[tT]-?\d+/, "keyword", "normalGcodeWithT"],
|
|
53
|
+
// checksums
|
|
54
|
+
[/\*\d+/, "type"],
|
|
50
55
|
// parameter letters
|
|
51
56
|
[/'?[a-zA-Z]/, "keyword"],
|
|
57
|
+
// unterminated expression (no closing brace before end of line)
|
|
58
|
+
[/\{(?![^\n]*\})/, "invalid", "@unterminatedCurly"],
|
|
52
59
|
// expressions
|
|
53
60
|
[/{/, "operator", "@curlyBracket"],
|
|
54
61
|
// enclosed comments
|
|
@@ -88,6 +95,9 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
88
95
|
"@functions": "keyword"
|
|
89
96
|
}
|
|
90
97
|
}],
|
|
98
|
+
// unterminated nested expressions
|
|
99
|
+
[/\{(?![^\n]*\})/, "invalid", "@unterminatedCurly"],
|
|
100
|
+
[/\[(?![^\n]*\])/, "invalid", "@unterminatedSquare"],
|
|
91
101
|
// nested expressions
|
|
92
102
|
[/{/, "operator", "@curlyBracket"],
|
|
93
103
|
[/\[/, "operator", "@squareBracket"],
|
|
@@ -97,6 +107,7 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
97
107
|
[/\d+/, "number"],
|
|
98
108
|
// strings and chars
|
|
99
109
|
[/"(.|\"\")*?"/, "string"],
|
|
110
|
+
[/"[^"\n]*/, "invalid"],
|
|
100
111
|
[/'.'/, "string"],
|
|
101
112
|
// operators
|
|
102
113
|
[/@symbols/, {
|
|
@@ -117,17 +128,30 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
117
128
|
{ include: "expression" }
|
|
118
129
|
],
|
|
119
130
|
curlyBracket: [
|
|
131
|
+
// unterminated brace
|
|
132
|
+
[/\n/, "invalid", "@popall"],
|
|
120
133
|
// curly brackets contain expressions
|
|
121
134
|
{ include: "expression" },
|
|
122
|
-
// terminate
|
|
135
|
+
// terminate when reaching a closing bracket
|
|
123
136
|
[/}/, "operator", "@pop"],
|
|
124
137
|
],
|
|
125
138
|
squareBracket: [
|
|
139
|
+
// unterminated bracket
|
|
140
|
+
[/\n/, "invalid", "@popall"],
|
|
126
141
|
// square brackets contain expressions
|
|
127
142
|
{ include: "expression" },
|
|
128
|
-
// terminate
|
|
143
|
+
// terminate when reaching a closing bracket
|
|
129
144
|
[/\]/, "operator", "@pop"],
|
|
130
145
|
],
|
|
146
|
+
unterminatedCurly: [
|
|
147
|
+
// color remainder of line as invalid, then pop
|
|
148
|
+
[/[^\n]+/, "invalid"],
|
|
149
|
+
[/\n/, "", "@popall"]
|
|
150
|
+
],
|
|
151
|
+
unterminatedSquare: [
|
|
152
|
+
[/[^\n]+/, "invalid"],
|
|
153
|
+
[/\n/, "", "@popall"]
|
|
154
|
+
],
|
|
131
155
|
varName: [
|
|
132
156
|
// variable name
|
|
133
157
|
[/[a-zA-Z_$][\w$]*/, "variable.name", "@expression"],
|
|
@@ -139,3 +163,30 @@ function generateMonarchLanguage(fdmMode) {
|
|
|
139
163
|
}
|
|
140
164
|
exports.gcodeFDMLanguage = generateMonarchLanguage(true);
|
|
141
165
|
exports.gcodeCNCLanguage = generateMonarchLanguage(false);
|
|
166
|
+
exports.gcodeLanguageConfiguration = {
|
|
167
|
+
comments: {
|
|
168
|
+
lineComment: ";"
|
|
169
|
+
},
|
|
170
|
+
brackets: [
|
|
171
|
+
["{", "}"],
|
|
172
|
+
["[", "]"],
|
|
173
|
+
["(", ")"]
|
|
174
|
+
],
|
|
175
|
+
autoClosingPairs: [
|
|
176
|
+
{ open: "{", close: "}" },
|
|
177
|
+
{ open: "[", close: "]" },
|
|
178
|
+
{ open: "(", close: ")" },
|
|
179
|
+
{ open: "\"", close: "\"" }
|
|
180
|
+
],
|
|
181
|
+
surroundingPairs: [
|
|
182
|
+
{ open: "{", close: "}" },
|
|
183
|
+
{ open: "[", close: "]" },
|
|
184
|
+
{ open: "(", close: ")" },
|
|
185
|
+
{ open: "\"", close: "\"" }
|
|
186
|
+
],
|
|
187
|
+
// Python-style block indentation: pressing Enter after if/elif/else/while indents the next line one level deeper
|
|
188
|
+
indentationRules: {
|
|
189
|
+
increaseIndentPattern: /^\s*(if|elif|else|while)\b.*$/,
|
|
190
|
+
decreaseIndentPattern: /^\s*(break|continue)\b.*$/
|
|
191
|
+
}
|
|
192
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.menuLanguageConfiguration = exports.menuLanguage = void 0;
|
|
4
|
+
exports.menuLanguage = {
|
|
5
|
+
keywords: ["image", "text", "button", "value", "alter", "files"],
|
|
6
|
+
symbols: /[=><!~?:&|+\-*#\/\^%]+/,
|
|
7
|
+
operators: ['*', '/', '+', '-', "==", "!=", '=', "<=", '<', ">=", ">>>", ">>", '>', '!', "&&", '&', "||", '|', '^', '?', ':'],
|
|
8
|
+
includeLF: true,
|
|
9
|
+
tokenizer: {
|
|
10
|
+
root: [
|
|
11
|
+
// keywords
|
|
12
|
+
[/[a-z_$][\w$]*/, {
|
|
13
|
+
cases: {
|
|
14
|
+
"@keywords": { token: "keyword" }
|
|
15
|
+
}
|
|
16
|
+
}],
|
|
17
|
+
// numbers
|
|
18
|
+
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
|
|
19
|
+
[/0[xX][0-9a-fA-F]+/, "number.hex"],
|
|
20
|
+
[/\d+/, "number"],
|
|
21
|
+
// strings
|
|
22
|
+
[/"(.|\"\")*?"/, "string"],
|
|
23
|
+
// comments
|
|
24
|
+
[/;.*/, "comment"],
|
|
25
|
+
// parameter letters
|
|
26
|
+
[/'?[A-Z]/, "keyword"],
|
|
27
|
+
[/'[a-z]/, "keyword"]
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.menuLanguageConfiguration = {
|
|
32
|
+
comments: {
|
|
33
|
+
lineComment: ";"
|
|
34
|
+
}
|
|
35
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stm32LanguageConfiguration = exports.stm32Language = void 0;
|
|
4
|
+
exports.stm32Language = {
|
|
5
|
+
keywordsPrimary: ["8266wifi", "accelerometer", "atx", "board", "heat", "lcd", "led", "leds", "pins", "power", "sbc", "sdCard", "serial", "SPI0", "SPI1", "SPI2", "SPI3", "SPI4", "SPI5", "SPI6", "SPI7", "SPI8", "stepper"],
|
|
6
|
+
keywordsSecondary: ["clockReg", "csPin", "espDataReadyPin", "espResetPin", "TfrReadyPin", "serialRxTxPins", "spiChannel", "initialPowerOn", "powerPin", "powerPinInverted", "spiTempSensorChannel", "spiTempSensorCSPins", "tempSensePins", "thermistorSeriesResistor", "encoderPinA", "encoderPinB", "encoderPinSw", "lcdBeepPin", "lcdCSPin", "lcdDCPin", "panelButtonPin", "neopixelPin", "activity", "activityOn", "diagnostic", "diagnosticOn", "SetHigh", "SetLow", "VInDetectPin", "voltage", "loadConfig", "external", "internal", "aux", "aux2", "pins", "directionPins", "enablePins", "numSmartDrivers", "num5160Drivers", "stepPins", "TmcDiagPins", "TmcUartPins"],
|
|
7
|
+
keywordsTertiary: ["cardDetectPin", "csPin", "spiChannel", "spiFrequencyHz", "spiFrequencyHz", "rxTxPins", "rxTxPins"],
|
|
8
|
+
symbols: /[=><!~?:&|+\-*#\/\^%]+/,
|
|
9
|
+
operators: ['*', '/', '+', '-', "==", "!=", '=', "<=", '<', ">=", ">>>", ">>", '>', '!', "&&", '&', "||", '|', '^', '?', ':'],
|
|
10
|
+
includeLF: true,
|
|
11
|
+
tokenizer: {
|
|
12
|
+
root: [
|
|
13
|
+
// keywords
|
|
14
|
+
[/[a-zA-Z0-9_$][\w$]*/, {
|
|
15
|
+
cases: {
|
|
16
|
+
"@keywordsPrimary": { token: "keyword" },
|
|
17
|
+
"@keywordsSecondary": { token: "keyword" },
|
|
18
|
+
"@keywordsTertiary": { token: "keyword" }
|
|
19
|
+
}
|
|
20
|
+
}],
|
|
21
|
+
// comments
|
|
22
|
+
[/\/\/.*/, "comment"],
|
|
23
|
+
[/;.*/, "comment"],
|
|
24
|
+
// expressions
|
|
25
|
+
[/{/, "operator", "@curlyBracket"],
|
|
26
|
+
// expressions
|
|
27
|
+
[/=/, "operator", "@equals"],
|
|
28
|
+
],
|
|
29
|
+
expression: [
|
|
30
|
+
// numbers
|
|
31
|
+
[/\d+/, "number"],
|
|
32
|
+
// Pin Numbers
|
|
33
|
+
[/[a-iA-I]\.\d+/, "string"],
|
|
34
|
+
[/[a-iA-I]\_\d+/, "string"],
|
|
35
|
+
[/[a-iA-I]\d+/, "string"],
|
|
36
|
+
[/P[a-iA-I]\.\d+/, "string"],
|
|
37
|
+
[/P[a-iA-I]\_\d+/, "string"],
|
|
38
|
+
[/P[a-iA-I]\d+/, "string"],
|
|
39
|
+
[/NoPin/, "string"],
|
|
40
|
+
// strings
|
|
41
|
+
[/"(.|\"\")*?"/, "string"],
|
|
42
|
+
[/[a-zA-Z0-9_$][\w$]*/, "string"],
|
|
43
|
+
// operators
|
|
44
|
+
[/@symbols/, {
|
|
45
|
+
cases: {
|
|
46
|
+
"@operators": "operator",
|
|
47
|
+
"@default": ""
|
|
48
|
+
}
|
|
49
|
+
}],
|
|
50
|
+
// comments
|
|
51
|
+
[/;.*/, "comment"],
|
|
52
|
+
// EOL
|
|
53
|
+
[/\n/, "", "@popall"],
|
|
54
|
+
],
|
|
55
|
+
curlyBracket: [
|
|
56
|
+
// curly brackets contain expressions
|
|
57
|
+
{ include: "expression" },
|
|
58
|
+
// terminate when reaching a closing bracket
|
|
59
|
+
[/}/, "operator", "@pop"],
|
|
60
|
+
],
|
|
61
|
+
equals: [
|
|
62
|
+
// curly brackets contain expressions
|
|
63
|
+
{ include: "expression" },
|
|
64
|
+
// EOL
|
|
65
|
+
[/\n/, "", "@popall"],
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.stm32LanguageConfiguration = {
|
|
70
|
+
comments: {
|
|
71
|
+
lineComment: ";"
|
|
72
|
+
},
|
|
73
|
+
brackets: [
|
|
74
|
+
["{", "}"]
|
|
75
|
+
],
|
|
76
|
+
autoClosingPairs: [
|
|
77
|
+
{ open: "{", close: "}" },
|
|
78
|
+
{ open: "\"", close: "\"" }
|
|
79
|
+
],
|
|
80
|
+
surroundingPairs: [
|
|
81
|
+
{ open: "{", close: "}" },
|
|
82
|
+
{ open: "\"", close: "\"" }
|
|
83
|
+
]
|
|
84
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type * as monaco from "monaco-editor/esm/vs/editor/editor.api";
|
|
2
|
+
/**
|
|
3
|
+
* Register all Duet-specific languages (gcode-fdm, gcode-cnc, STM32, menu)
|
|
4
|
+
* with a Monaco instance, attaching their tokenizers and language configurations.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerDuetLanguages(monacoInstance: typeof monaco): void;
|
package/dist/register.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerDuetLanguages = registerDuetLanguages;
|
|
4
|
+
const monaco_gcode_1 = require("./monaco-gcode");
|
|
5
|
+
const monaco_stm32_1 = require("./monaco-stm32");
|
|
6
|
+
const monaco_menu_1 = require("./monaco-menu");
|
|
7
|
+
/**
|
|
8
|
+
* Register all Duet-specific languages (gcode-fdm, gcode-cnc, STM32, menu)
|
|
9
|
+
* with a Monaco instance, attaching their tokenizers and language configurations.
|
|
10
|
+
*/
|
|
11
|
+
function registerDuetLanguages(monacoInstance) {
|
|
12
|
+
monacoInstance.languages.register({ id: "gcode-fdm" });
|
|
13
|
+
monacoInstance.languages.setMonarchTokensProvider("gcode-fdm", monaco_gcode_1.gcodeFDMLanguage);
|
|
14
|
+
monacoInstance.languages.setLanguageConfiguration("gcode-fdm", monaco_gcode_1.gcodeLanguageConfiguration);
|
|
15
|
+
monacoInstance.languages.register({ id: "gcode-cnc" });
|
|
16
|
+
monacoInstance.languages.setMonarchTokensProvider("gcode-cnc", monaco_gcode_1.gcodeCNCLanguage);
|
|
17
|
+
monacoInstance.languages.setLanguageConfiguration("gcode-cnc", monaco_gcode_1.gcodeLanguageConfiguration);
|
|
18
|
+
monacoInstance.languages.register({ id: "STM32" });
|
|
19
|
+
monacoInstance.languages.setMonarchTokensProvider("STM32", monaco_stm32_1.stm32Language);
|
|
20
|
+
monacoInstance.languages.setLanguageConfiguration("STM32", monaco_stm32_1.stm32LanguageConfiguration);
|
|
21
|
+
monacoInstance.languages.register({ id: "menu" });
|
|
22
|
+
monacoInstance.languages.setMonarchTokensProvider("menu", monaco_menu_1.menuLanguage);
|
|
23
|
+
monacoInstance.languages.setLanguageConfiguration("menu", monaco_menu_1.menuLanguageConfiguration);
|
|
24
|
+
}
|
package/package.json
CHANGED