@mirascript/monaco 0.1.82 → 0.1.84
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/basic/index.js +2 -2
- package/dist/basic/tokens-provider.d.ts.map +1 -1
- package/dist/{chunk-NIQ5XOKS.js → chunk-7NT3EI6C.js} +31 -21
- package/dist/chunk-7NT3EI6C.js.map +6 -0
- package/dist/{chunk-NAOKM25O.js → chunk-JOHUNWDB.js} +25 -2
- package/dist/{chunk-NAOKM25O.js.map → chunk-JOHUNWDB.js.map} +2 -2
- package/dist/contribute.d.ts +1 -0
- package/dist/contribute.d.ts.map +1 -1
- package/dist/index.js +2 -23
- package/dist/index.js.map +2 -2
- package/dist/lsp/compile-result.d.ts +1 -1
- package/dist/lsp/compile-result.d.ts.map +1 -1
- package/dist/lsp/index.js +149 -179
- package/dist/lsp/index.js.map +1 -1
- package/dist/lsp/providers/color-provider.d.ts.map +1 -1
- package/dist/lsp/providers/hover-provider.d.ts.map +1 -1
- package/dist/lsp/providers/inlay-hints-provider.d.ts.map +1 -1
- package/dist/lsp/utils.d.ts.map +1 -1
- package/dist/lsp/worker-core.d.ts +23 -0
- package/dist/lsp/worker-core.d.ts.map +1 -0
- package/dist/lsp/worker.d.ts +1 -22
- package/dist/lsp/worker.d.ts.map +1 -1
- package/dist/lsp/worker.js +3 -45
- package/dist/lsp/worker.js.map +1 -1
- package/dist/worker-core-MG2FDDNN.js +45 -0
- package/dist/worker-core-MG2FDDNN.js.map +6 -0
- package/package.json +7 -9
- package/src/basic/tokens-provider.ts +32 -23
- package/src/contribute.ts +8 -8
- package/src/lsp/compile-result.ts +1 -1
- package/src/lsp/providers/color-provider.ts +42 -44
- package/src/lsp/providers/hover-provider.ts +27 -59
- package/src/lsp/providers/inlay-hints-provider.ts +93 -89
- package/src/lsp/utils.ts +1 -3
- package/src/lsp/worker-core.ts +68 -0
- package/src/lsp/worker-helper.ts +3 -3
- package/src/lsp/worker.ts +5 -70
- package/dist/chunk-NIQ5XOKS.js.map +0 -6
package/dist/lsp/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
REG_ORDINAL_FULL,
|
|
9
9
|
RESERVED_KEYWORDS,
|
|
10
10
|
isKeyword
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-7NT3EI6C.js";
|
|
12
12
|
import {
|
|
13
13
|
Emitter,
|
|
14
14
|
MarkerSeverity,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
Uri,
|
|
19
19
|
editor,
|
|
20
20
|
languages
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-JOHUNWDB.js";
|
|
22
22
|
|
|
23
23
|
// src/lsp/providers/base.ts
|
|
24
24
|
import { DefaultVmContext } from "@mirascript/mirascript/subtle";
|
|
@@ -750,10 +750,8 @@ function valueDoc(name, value, type, parent) {
|
|
|
750
750
|
prefix = `let ${name} = `;
|
|
751
751
|
}
|
|
752
752
|
suffix = ";";
|
|
753
|
-
} else if (/^\d/.test(name)) {
|
|
754
|
-
prefix = `[${name}]: `;
|
|
755
753
|
} else {
|
|
756
|
-
prefix = `${name}: `;
|
|
754
|
+
prefix = `${serializeRecordKey(name)}: `;
|
|
757
755
|
}
|
|
758
756
|
if (isVmModule(value)) {
|
|
759
757
|
let script;
|
|
@@ -1073,7 +1071,7 @@ var compileImpl;
|
|
|
1073
1071
|
async function compileSync(req) {
|
|
1074
1072
|
const [key, version, script, mode] = req;
|
|
1075
1073
|
if (compileImpl == null) {
|
|
1076
|
-
const mod = await import("
|
|
1074
|
+
const mod = await import("../worker-core-MG2FDDNN.js");
|
|
1077
1075
|
compileImpl = mod.compile;
|
|
1078
1076
|
}
|
|
1079
1077
|
const result = compileImpl(script, mode);
|
|
@@ -1470,6 +1468,12 @@ var CodeLensProvider = class extends Provider {
|
|
|
1470
1468
|
import { DiagnosticCode as DiagnosticCode6 } from "@mirascript/constants";
|
|
1471
1469
|
var REG_COLOR_STR = /^(@*)(['"`])(#(?:[0-9a-f]{6}|[0-9a-f]{3}|[0-9a-f]{8}|[0-9a-f]{4}))\2\1$/iu;
|
|
1472
1470
|
var { parseInt } = Number;
|
|
1471
|
+
function parseColorPart(text) {
|
|
1472
|
+
if (text.length === 1) {
|
|
1473
|
+
text = text + text;
|
|
1474
|
+
}
|
|
1475
|
+
return parseInt(text, 16) / 255;
|
|
1476
|
+
}
|
|
1473
1477
|
function parseColorString(text) {
|
|
1474
1478
|
const colorMatch = REG_COLOR_STR.exec(text);
|
|
1475
1479
|
if (!colorMatch) {
|
|
@@ -1481,34 +1485,21 @@ function parseColorString(text) {
|
|
|
1481
1485
|
let color;
|
|
1482
1486
|
if (colorString.startsWith("#")) {
|
|
1483
1487
|
const colorCode = colorString.slice(1);
|
|
1484
|
-
if (colorCode.length === 3) {
|
|
1485
|
-
color = {
|
|
1486
|
-
red: parseInt(colorCode[0] + colorCode[0], 16) / 255,
|
|
1487
|
-
green: parseInt(colorCode[1] + colorCode[1], 16) / 255,
|
|
1488
|
-
blue: parseInt(colorCode[2] + colorCode[2], 16) / 255,
|
|
1489
|
-
alpha: 1
|
|
1490
|
-
};
|
|
1491
|
-
} else if (colorCode.length === 6) {
|
|
1492
|
-
color = {
|
|
1493
|
-
red: parseInt(colorCode.slice(0, 2), 16) / 255,
|
|
1494
|
-
green: parseInt(colorCode.slice(2, 4), 16) / 255,
|
|
1495
|
-
blue: parseInt(colorCode.slice(4, 6), 16) / 255,
|
|
1496
|
-
alpha: 1
|
|
1497
|
-
// 假设不透明
|
|
1498
|
-
};
|
|
1499
|
-
} else if (colorCode.length === 8) {
|
|
1488
|
+
if (colorCode.length === 3 || colorCode.length === 4) {
|
|
1500
1489
|
color = {
|
|
1501
|
-
red:
|
|
1502
|
-
green:
|
|
1503
|
-
blue:
|
|
1504
|
-
alpha:
|
|
1490
|
+
red: parseColorPart(colorCode[0]),
|
|
1491
|
+
green: parseColorPart(colorCode[1]),
|
|
1492
|
+
blue: parseColorPart(colorCode[2]),
|
|
1493
|
+
alpha: colorCode[3] ? parseColorPart(colorCode[3]) : 1
|
|
1494
|
+
// 如果没有 alpha,则假设不透明
|
|
1505
1495
|
};
|
|
1506
|
-
} else if (colorCode.length ===
|
|
1496
|
+
} else if (colorCode.length === 6 || colorCode.length === 8) {
|
|
1507
1497
|
color = {
|
|
1508
|
-
red:
|
|
1509
|
-
green:
|
|
1510
|
-
blue:
|
|
1511
|
-
alpha:
|
|
1498
|
+
red: parseColorPart(colorCode.slice(0, 2)),
|
|
1499
|
+
green: parseColorPart(colorCode.slice(2, 4)),
|
|
1500
|
+
blue: parseColorPart(colorCode.slice(4, 6)),
|
|
1501
|
+
alpha: colorCode.length === 8 ? parseColorPart(colorCode.slice(6, 8)) : 1
|
|
1502
|
+
// 如果没有 alpha,则假设不透明
|
|
1512
1503
|
};
|
|
1513
1504
|
} else {
|
|
1514
1505
|
return void 0;
|
|
@@ -1523,6 +1514,22 @@ function parseColorString(text) {
|
|
|
1523
1514
|
color
|
|
1524
1515
|
};
|
|
1525
1516
|
}
|
|
1517
|
+
function serializeColorPart(part) {
|
|
1518
|
+
const intPart = Math.round(part * 255);
|
|
1519
|
+
const hex = intPart.toString(16).padStart(2, "0");
|
|
1520
|
+
return hex;
|
|
1521
|
+
}
|
|
1522
|
+
function serializeColor(color) {
|
|
1523
|
+
const r = serializeColorPart(color.red);
|
|
1524
|
+
const g = serializeColorPart(color.green);
|
|
1525
|
+
const b = serializeColorPart(color.blue);
|
|
1526
|
+
if (color.alpha >= 1) {
|
|
1527
|
+
return `#${r}${g}${b}`;
|
|
1528
|
+
} else {
|
|
1529
|
+
const a = serializeColorPart(color.alpha);
|
|
1530
|
+
return `#${r}${g}${b}${a}`;
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1526
1533
|
var ColorProvider = class extends Provider {
|
|
1527
1534
|
/** @inheritdoc */
|
|
1528
1535
|
async provideDocumentColors(model, token) {
|
|
@@ -1552,11 +1559,7 @@ var ColorProvider = class extends Provider {
|
|
|
1552
1559
|
/** @inheritdoc */
|
|
1553
1560
|
provideColorPresentations(model, colorInfo, token) {
|
|
1554
1561
|
const { color } = colorInfo;
|
|
1555
|
-
return [
|
|
1556
|
-
{
|
|
1557
|
-
label: `#${Math.round(color.red * 255).toString(16).padStart(2, "0")}${Math.round(color.green * 255).toString(16).padStart(2, "0")}${Math.round(color.blue * 255).toString(16).padStart(2, "0")}${color.alpha >= 1 ? "" : Math.round(color.alpha * 255).toString(16).padStart(2, "0")}`
|
|
1558
|
-
}
|
|
1559
|
-
];
|
|
1562
|
+
return [{ label: serializeColor(color) }];
|
|
1560
1563
|
}
|
|
1561
1564
|
};
|
|
1562
1565
|
|
|
@@ -2340,6 +2343,22 @@ function operatorAt(lineContent, column) {
|
|
|
2340
2343
|
}
|
|
2341
2344
|
return void 0;
|
|
2342
2345
|
}
|
|
2346
|
+
var LOCAL_HOVER = {
|
|
2347
|
+
[DiagnosticCode10.ParameterSubPatternImmutable]: "(parameter pattern) ",
|
|
2348
|
+
[DiagnosticCode10.ParameterSubPatternMutable]: "(parameter pattern) mut ",
|
|
2349
|
+
[DiagnosticCode10.ParameterImmutable]: "(parameter) ",
|
|
2350
|
+
[DiagnosticCode10.ParameterMutable]: "(parameter) mut ",
|
|
2351
|
+
[DiagnosticCode10.ParameterIt]: "(parameter) it",
|
|
2352
|
+
[DiagnosticCode10.ParameterImmutableRest]: "(parameter) ..",
|
|
2353
|
+
[DiagnosticCode10.ParameterMutableRest]: "(parameter) ..mut ",
|
|
2354
|
+
[DiagnosticCode10.LocalModule]: "mod ",
|
|
2355
|
+
[DiagnosticCode10.LocalImmutable]: "let ",
|
|
2356
|
+
[DiagnosticCode10.LocalConst]: "const ",
|
|
2357
|
+
[DiagnosticCode10.LocalMutable]: "let mut ",
|
|
2358
|
+
[DiagnosticCode10.LocalFunction]: (text, model, def) => {
|
|
2359
|
+
return `fn ${text}${paramsList(model, def.fn)}`;
|
|
2360
|
+
}
|
|
2361
|
+
};
|
|
2343
2362
|
var HoverProvider = class extends Provider {
|
|
2344
2363
|
/** 变量提示 */
|
|
2345
2364
|
async provideVariableHover(model, { def, ref }) {
|
|
@@ -2357,69 +2376,18 @@ var HoverProvider = class extends Provider {
|
|
|
2357
2376
|
} else {
|
|
2358
2377
|
let content;
|
|
2359
2378
|
const tag = def.definition;
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
};
|
|
2365
|
-
break;
|
|
2366
|
-
case DiagnosticCode10.ParameterSubPatternMutable:
|
|
2367
|
-
content = {
|
|
2368
|
-
value: codeblock(`\0(parameter pattern) mut ${model.getValueInRange(tag.range)}`)
|
|
2369
|
-
};
|
|
2370
|
-
break;
|
|
2371
|
-
case DiagnosticCode10.ParameterImmutable:
|
|
2379
|
+
if (tag.code in LOCAL_HOVER) {
|
|
2380
|
+
const hover = LOCAL_HOVER[tag.code];
|
|
2381
|
+
const text = model.getValueInRange(tag.range);
|
|
2382
|
+
if (typeof hover == "string") {
|
|
2372
2383
|
content = {
|
|
2373
|
-
value: codeblock(`\0
|
|
2384
|
+
value: codeblock(`\0${hover}${text}`)
|
|
2374
2385
|
};
|
|
2375
|
-
|
|
2376
|
-
case DiagnosticCode10.ParameterMutable:
|
|
2377
|
-
content = {
|
|
2378
|
-
value: codeblock(`\0(parameter) mut ${model.getValueInRange(tag.range)}`)
|
|
2379
|
-
};
|
|
2380
|
-
break;
|
|
2381
|
-
case DiagnosticCode10.ParameterIt:
|
|
2382
|
-
content = {
|
|
2383
|
-
value: codeblock(`\0(parameter) it`)
|
|
2384
|
-
};
|
|
2385
|
-
break;
|
|
2386
|
-
case DiagnosticCode10.ParameterImmutableRest:
|
|
2387
|
-
content = {
|
|
2388
|
-
value: codeblock(`\0(parameter) ..${model.getValueInRange(tag.range)}`)
|
|
2389
|
-
};
|
|
2390
|
-
break;
|
|
2391
|
-
case DiagnosticCode10.ParameterMutableRest:
|
|
2392
|
-
content = {
|
|
2393
|
-
value: codeblock(`\0(parameter) ..mut ${model.getValueInRange(tag.range)}`)
|
|
2394
|
-
};
|
|
2395
|
-
break;
|
|
2396
|
-
case DiagnosticCode10.LocalFunction: {
|
|
2397
|
-
const params = paramsList(model, def.fn);
|
|
2386
|
+
} else {
|
|
2398
2387
|
content = {
|
|
2399
|
-
value: codeblock(`\
|
|
2388
|
+
value: codeblock(`\0${hover(text, model, def)}`)
|
|
2400
2389
|
};
|
|
2401
|
-
break;
|
|
2402
2390
|
}
|
|
2403
|
-
case DiagnosticCode10.LocalModule:
|
|
2404
|
-
content = {
|
|
2405
|
-
value: codeblock(`\0mod ${model.getValueInRange(tag.range)}`)
|
|
2406
|
-
};
|
|
2407
|
-
break;
|
|
2408
|
-
case DiagnosticCode10.LocalImmutable:
|
|
2409
|
-
content = {
|
|
2410
|
-
value: codeblock(`\0let ${model.getValueInRange(tag.range)}`)
|
|
2411
|
-
};
|
|
2412
|
-
break;
|
|
2413
|
-
case DiagnosticCode10.LocalConst:
|
|
2414
|
-
content = {
|
|
2415
|
-
value: codeblock(`\0const ${model.getValueInRange(tag.range)}`)
|
|
2416
|
-
};
|
|
2417
|
-
break;
|
|
2418
|
-
case DiagnosticCode10.LocalMutable:
|
|
2419
|
-
content = {
|
|
2420
|
-
value: codeblock(`\0let mut ${model.getValueInRange(tag.range)}`)
|
|
2421
|
-
};
|
|
2422
|
-
break;
|
|
2423
2391
|
}
|
|
2424
2392
|
if (ref == null) {
|
|
2425
2393
|
range = tag.range;
|
|
@@ -2531,6 +2499,89 @@ var HoverProvider = class extends Provider {
|
|
|
2531
2499
|
|
|
2532
2500
|
// src/lsp/providers/inlay-hints-provider.ts
|
|
2533
2501
|
import { DiagnosticCode as DiagnosticCode11 } from "@mirascript/constants";
|
|
2502
|
+
function provideInlayHint(tag, model) {
|
|
2503
|
+
let lineNumber = 0;
|
|
2504
|
+
let column = 0;
|
|
2505
|
+
let label = "";
|
|
2506
|
+
const kind = languages.InlayHintKind.Parameter;
|
|
2507
|
+
let paddingLeft = true;
|
|
2508
|
+
let paddingRight = false;
|
|
2509
|
+
const edits = [];
|
|
2510
|
+
switch (tag.code) {
|
|
2511
|
+
case DiagnosticCode11.ParameterIt: {
|
|
2512
|
+
if (!tag.references.length) {
|
|
2513
|
+
return null;
|
|
2514
|
+
}
|
|
2515
|
+
lineNumber = tag.range.endLineNumber;
|
|
2516
|
+
column = tag.range.endColumn;
|
|
2517
|
+
label = "(it)";
|
|
2518
|
+
paddingLeft = /\bfn$/u.test(model.getValueInRange(new Range(lineNumber, column - 3, lineNumber, column)));
|
|
2519
|
+
paddingRight = model.getValueInRange(new Range(lineNumber, column, lineNumber, column + 1)) === "{";
|
|
2520
|
+
edits.push({
|
|
2521
|
+
range: new Range(lineNumber, column, lineNumber, column),
|
|
2522
|
+
text: `${paddingLeft ? " " : ""}${label}${paddingRight ? " " : ""}`
|
|
2523
|
+
});
|
|
2524
|
+
break;
|
|
2525
|
+
}
|
|
2526
|
+
case DiagnosticCode11.UnnamedRecordField0:
|
|
2527
|
+
case DiagnosticCode11.UnnamedRecordField1:
|
|
2528
|
+
case DiagnosticCode11.UnnamedRecordField2:
|
|
2529
|
+
case DiagnosticCode11.UnnamedRecordField3:
|
|
2530
|
+
case DiagnosticCode11.UnnamedRecordField4:
|
|
2531
|
+
case DiagnosticCode11.UnnamedRecordField5:
|
|
2532
|
+
case DiagnosticCode11.UnnamedRecordField6:
|
|
2533
|
+
case DiagnosticCode11.UnnamedRecordField7:
|
|
2534
|
+
case DiagnosticCode11.UnnamedRecordField8:
|
|
2535
|
+
case DiagnosticCode11.UnnamedRecordField9:
|
|
2536
|
+
case DiagnosticCode11.UnnamedRecordFieldN: {
|
|
2537
|
+
const index = tag.code - DiagnosticCode11.UnnamedRecordField0;
|
|
2538
|
+
if (index > 9) break;
|
|
2539
|
+
lineNumber = tag.range.startLineNumber;
|
|
2540
|
+
column = tag.range.startColumn;
|
|
2541
|
+
label = `${index}:`;
|
|
2542
|
+
paddingLeft = /[^\s(]/u.test(model.getValueInRange(new Range(lineNumber, column - 1, lineNumber, column)));
|
|
2543
|
+
paddingRight = true;
|
|
2544
|
+
break;
|
|
2545
|
+
}
|
|
2546
|
+
case DiagnosticCode11.OmitNamedRecordField: {
|
|
2547
|
+
const ref = tag.references[0];
|
|
2548
|
+
if (ref?.code !== DiagnosticCode11.OmitNamedRecordFieldName) {
|
|
2549
|
+
return null;
|
|
2550
|
+
}
|
|
2551
|
+
lineNumber = tag.range.startLineNumber;
|
|
2552
|
+
column = tag.range.startColumn;
|
|
2553
|
+
label = model.getValueInRange(ref.range);
|
|
2554
|
+
paddingLeft = /[^\s(]/u.test(model.getValueInRange(new Range(lineNumber, column - 1, lineNumber, column)));
|
|
2555
|
+
paddingRight = false;
|
|
2556
|
+
const insertRight = !/\s/u.test(
|
|
2557
|
+
model.getValueInRange(
|
|
2558
|
+
new Range(
|
|
2559
|
+
tag.range.endLineNumber,
|
|
2560
|
+
tag.range.endColumn,
|
|
2561
|
+
tag.range.endLineNumber,
|
|
2562
|
+
tag.range.endColumn + 1
|
|
2563
|
+
)
|
|
2564
|
+
)
|
|
2565
|
+
);
|
|
2566
|
+
edits.push({
|
|
2567
|
+
range: tag.range,
|
|
2568
|
+
text: `${paddingLeft ? " " : ""}${label}${model.getValueInRange(tag.range)}${insertRight ? " " : ""}`
|
|
2569
|
+
});
|
|
2570
|
+
break;
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
if (!label) {
|
|
2574
|
+
return null;
|
|
2575
|
+
}
|
|
2576
|
+
return {
|
|
2577
|
+
position: { lineNumber, column },
|
|
2578
|
+
label,
|
|
2579
|
+
kind,
|
|
2580
|
+
paddingLeft,
|
|
2581
|
+
paddingRight,
|
|
2582
|
+
textEdits: edits
|
|
2583
|
+
};
|
|
2584
|
+
}
|
|
2534
2585
|
var InlayHintsProvider = class extends Provider {
|
|
2535
2586
|
/** @inheritdoc */
|
|
2536
2587
|
get onDidChangeInlayHints() {
|
|
@@ -2547,95 +2598,14 @@ var InlayHintsProvider = class extends Provider {
|
|
|
2547
2598
|
if (!range.containsRange(tag.range)) {
|
|
2548
2599
|
continue;
|
|
2549
2600
|
}
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
const kind = languages.InlayHintKind.Parameter;
|
|
2554
|
-
let paddingLeft = true;
|
|
2555
|
-
let paddingRight = false;
|
|
2556
|
-
const edits = [];
|
|
2557
|
-
switch (tag.code) {
|
|
2558
|
-
case DiagnosticCode11.ParameterIt: {
|
|
2559
|
-
if (!tag.references.length) {
|
|
2560
|
-
continue;
|
|
2561
|
-
}
|
|
2562
|
-
lineNumber = tag.range.endLineNumber;
|
|
2563
|
-
column = tag.range.endColumn;
|
|
2564
|
-
label = "(it)";
|
|
2565
|
-
paddingLeft = /\bfn$/u.test(
|
|
2566
|
-
model.getValueInRange(new Range(lineNumber, column - 3, lineNumber, column))
|
|
2567
|
-
);
|
|
2568
|
-
paddingRight = model.getValueInRange(new Range(lineNumber, column, lineNumber, column + 1)) === "{";
|
|
2569
|
-
edits.push({
|
|
2570
|
-
range: new Range(lineNumber, column, lineNumber, column),
|
|
2571
|
-
text: `${paddingLeft ? " " : ""}${label}${paddingRight ? " " : ""}`
|
|
2572
|
-
});
|
|
2573
|
-
break;
|
|
2574
|
-
}
|
|
2575
|
-
case DiagnosticCode11.UnnamedRecordField0:
|
|
2576
|
-
case DiagnosticCode11.UnnamedRecordField1:
|
|
2577
|
-
case DiagnosticCode11.UnnamedRecordField2:
|
|
2578
|
-
case DiagnosticCode11.UnnamedRecordField3:
|
|
2579
|
-
case DiagnosticCode11.UnnamedRecordField4:
|
|
2580
|
-
case DiagnosticCode11.UnnamedRecordField5:
|
|
2581
|
-
case DiagnosticCode11.UnnamedRecordField6:
|
|
2582
|
-
case DiagnosticCode11.UnnamedRecordField7:
|
|
2583
|
-
case DiagnosticCode11.UnnamedRecordField8:
|
|
2584
|
-
case DiagnosticCode11.UnnamedRecordField9:
|
|
2585
|
-
case DiagnosticCode11.UnnamedRecordFieldN: {
|
|
2586
|
-
const index = tag.code - DiagnosticCode11.UnnamedRecordField0;
|
|
2587
|
-
if (index > 9) break;
|
|
2588
|
-
lineNumber = tag.range.startLineNumber;
|
|
2589
|
-
column = tag.range.startColumn;
|
|
2590
|
-
label = `${index}:`;
|
|
2591
|
-
paddingLeft = /[^\s(]/u.test(
|
|
2592
|
-
model.getValueInRange(new Range(lineNumber, column - 1, lineNumber, column))
|
|
2593
|
-
);
|
|
2594
|
-
paddingRight = true;
|
|
2595
|
-
break;
|
|
2596
|
-
}
|
|
2597
|
-
case DiagnosticCode11.OmitNamedRecordField: {
|
|
2598
|
-
const ref = tag.references[0];
|
|
2599
|
-
if (ref?.code !== DiagnosticCode11.OmitNamedRecordFieldName) continue;
|
|
2600
|
-
lineNumber = tag.range.startLineNumber;
|
|
2601
|
-
column = tag.range.startColumn;
|
|
2602
|
-
label = model.getValueInRange(ref.range);
|
|
2603
|
-
paddingLeft = /[^\s(]/u.test(
|
|
2604
|
-
model.getValueInRange(new Range(lineNumber, column - 1, lineNumber, column))
|
|
2605
|
-
);
|
|
2606
|
-
paddingRight = false;
|
|
2607
|
-
const insertRight = !/\s/u.test(
|
|
2608
|
-
model.getValueInRange(
|
|
2609
|
-
new Range(
|
|
2610
|
-
tag.range.endLineNumber,
|
|
2611
|
-
tag.range.endColumn,
|
|
2612
|
-
tag.range.endLineNumber,
|
|
2613
|
-
tag.range.endColumn + 1
|
|
2614
|
-
)
|
|
2615
|
-
)
|
|
2616
|
-
);
|
|
2617
|
-
edits.push({
|
|
2618
|
-
range: tag.range,
|
|
2619
|
-
text: `${paddingLeft ? " " : ""}${label}${model.getValueInRange(tag.range)}${insertRight ? " " : ""}`
|
|
2620
|
-
});
|
|
2621
|
-
break;
|
|
2622
|
-
}
|
|
2601
|
+
const hint = provideInlayHint(tag, model);
|
|
2602
|
+
if (hint) {
|
|
2603
|
+
hints.push(hint);
|
|
2623
2604
|
}
|
|
2624
|
-
if (!label) continue;
|
|
2625
|
-
const hint = {
|
|
2626
|
-
position: { lineNumber, column },
|
|
2627
|
-
label,
|
|
2628
|
-
kind,
|
|
2629
|
-
paddingLeft,
|
|
2630
|
-
paddingRight,
|
|
2631
|
-
textEdits: edits
|
|
2632
|
-
};
|
|
2633
|
-
hints.push(hint);
|
|
2634
2605
|
}
|
|
2635
2606
|
return {
|
|
2636
2607
|
hints,
|
|
2637
|
-
dispose: () =>
|
|
2638
|
-
}
|
|
2608
|
+
dispose: () => void 0
|
|
2639
2609
|
};
|
|
2640
2610
|
}
|
|
2641
2611
|
};
|