@enjoys/context-engine 1.5.0 → 1.6.0
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/README.md +214 -62
- package/data/codeActions/css.json +119 -111
- package/data/codeActions/dart.json +190 -31
- package/data/codeActions/nestjs.json +124 -124
- package/data/codeActions/r.json +69 -71
- package/data/codeActions/sb.json +2 -2
- package/data/codeActions/scala.json +154 -26
- package/data/codeActions/shadcn.json +112 -112
- package/data/codeActions/shell.json +2 -2
- package/data/codeActions/tailwindcss.json +83 -76
- package/data/codeLens/abap.json +4 -2
- package/data/codeLens/angular.json +141 -22
- package/data/codeLens/apex.json +4 -2
- package/data/codeLens/awk.json +2 -2
- package/data/codeLens/azcli.json +4 -3
- package/data/codeLens/bicep.json +4 -2
- package/data/codeLens/c.json +4 -4
- package/data/codeLens/caddy.json +2 -2
- package/data/codeLens/cameligo.json +4 -2
- package/data/codeLens/clojure.json +4 -2
- package/data/codeLens/coffee.json +4 -2
- package/data/codeLens/crontab.json +2 -2
- package/data/codeLens/doctest.json +4 -3
- package/data/codeLens/ecl.json +4 -2
- package/data/codeLens/elixir.json +4 -2
- package/data/codeLens/flow9.json +4 -2
- package/data/codeLens/freemarker2.json +4 -2
- package/data/codeLens/hcl.json +4 -4
- package/data/codeLens/html.json +4 -4
- package/data/codeLens/julia.json +4 -2
- package/data/codeLens/less.json +4 -2
- package/data/codeLens/lexon.json +4 -2
- package/data/codeLens/liquid.json +4 -2
- package/data/codeLens/lua.json +4 -4
- package/data/codeLens/m3.json +4 -2
- package/data/codeLens/mdx.json +4 -2
- package/data/codeLens/mips.json +4 -2
- package/data/codeLens/msdax.json +4 -2
- package/data/codeLens/mysql.json +4 -2
- package/data/codeLens/nginx.json +4 -4
- package/data/codeLens/objective-c.json +4 -2
- package/data/codeLens/pascal.json +4 -2
- package/data/codeLens/pascaligo.json +4 -2
- package/data/codeLens/pgsql.json +4 -2
- package/data/codeLens/pla.json +4 -3
- package/data/codeLens/postiats.json +4 -2
- package/data/codeLens/powerquery.json +4 -2
- package/data/codeLens/qsharp.json +4 -2
- package/data/codeLens/razor.json +4 -2
- package/data/codeLens/redshift.json +4 -2
- package/data/codeLens/restructuredtext.json +4 -2
- package/data/codeLens/sb.json +4 -2
- package/data/codeLens/scheme.json +4 -2
- package/data/codeLens/scss.json +4 -2
- package/data/codeLens/shadcn.json +117 -89
- package/data/codeLens/shell.json +4 -2
- package/data/codeLens/sol.json +4 -2
- package/data/codeLens/sparql.json +4 -2
- package/data/codeLens/st.json +4 -2
- package/data/codeLens/systemverilog.json +4 -2
- package/data/codeLens/tcl.json +4 -2
- package/data/codeLens/twig.json +4 -2
- package/data/codeLens/vb.json +4 -2
- package/data/codeLens/wgsl.json +4 -2
- package/data/codeLens/xml.json +4 -4
- package/data/commands/ab.json +80 -0
- package/data/commands/act.json +82 -0
- package/data/commands/age.json +68 -0
- package/data/commands/argocd.json +109 -0
- package/data/commands/asdf.json +102 -0
- package/data/commands/astro.json +106 -0
- package/data/commands/at.json +52 -0
- package/data/commands/babel.json +83 -0
- package/data/commands/buildah.json +105 -0
- package/data/commands/cabal.json +114 -0
- package/data/commands/cdk.json +127 -0
- package/data/commands/changeset.json +68 -0
- package/data/commands/checkov.json +75 -0
- package/data/commands/commitlint.json +60 -0
- package/data/commands/concurrently.json +62 -0
- package/data/commands/conventional-commits.json +30 -0
- package/data/commands/cosign.json +103 -0
- package/data/commands/crane.json +109 -0
- package/data/commands/cron.json +29 -0
- package/data/commands/crystal.json +102 -0
- package/data/commands/csvkit.json +96 -0
- package/data/commands/cut.json +62 -0
- package/data/commands/df.json +66 -0
- package/data/commands/diff.json +72 -0
- package/data/commands/dig.json +67 -0
- package/data/commands/dmesg.json +65 -0
- package/data/commands/dotnet.json +136 -0
- package/data/commands/du.json +71 -0
- package/data/commands/echo.json +45 -0
- package/data/commands/eksctl.json +101 -0
- package/data/commands/eleventy.json +73 -0
- package/data/commands/entr.json +50 -0
- package/data/commands/env.json +43 -0
- package/data/commands/erlang.json +76 -0
- package/data/commands/esbuild.json +91 -0
- package/data/commands/ffmpeg.json +115 -0
- package/data/commands/fnm.json +100 -0
- package/data/commands/free.json +63 -0
- package/data/commands/func.json +89 -0
- package/data/commands/gatsby.json +106 -0
- package/data/commands/ghc.json +79 -0
- package/data/commands/ghostscript.json +77 -0
- package/data/commands/git-lfs.json +95 -0
- package/data/commands/gpg.json +112 -0
- package/data/commands/grafana-cli.json +97 -0
- package/data/commands/grpcurl.json +74 -0
- package/data/commands/grype.json +75 -0
- package/data/commands/hadolint.json +61 -0
- package/data/commands/head.json +48 -0
- package/data/commands/hexo.json +101 -0
- package/data/commands/hey.json +91 -0
- package/data/commands/hostname.json +52 -0
- package/data/commands/httpie.json +101 -0
- package/data/commands/hugo.json +106 -0
- package/data/commands/husky.json +52 -0
- package/data/commands/id.json +50 -0
- package/data/commands/ifconfig.json +47 -0
- package/data/commands/imagemagick.json +117 -0
- package/data/commands/inotifywait.json +70 -0
- package/data/commands/ip.json +103 -0
- package/data/commands/istioctl.json +105 -0
- package/data/commands/javac.json +87 -0
- package/data/commands/jekyll.json +105 -0
- package/data/commands/kill.json +57 -0
- package/data/commands/killall.json +60 -0
- package/data/commands/kind.json +98 -0
- package/data/commands/ko.json +89 -0
- package/data/commands/kustomize.json +70 -0
- package/data/commands/latex.json +65 -0
- package/data/commands/lerna.json +125 -0
- package/data/commands/ln.json +54 -0
- package/data/commands/lsof.json +69 -0
- package/data/commands/manifest.json +1 -1
- package/data/commands/miller.json +58 -0
- package/data/commands/mise.json +107 -0
- package/data/commands/mix.json +128 -0
- package/data/commands/mkdir.json +43 -0
- package/data/commands/mount.json +63 -0
- package/data/commands/nc.json +71 -0
- package/data/commands/netstat.json +74 -0
- package/data/commands/nim.json +104 -0
- package/data/commands/nohup.json +28 -0
- package/data/commands/nslookup.json +46 -0
- package/data/commands/nvm.json +91 -0
- package/data/commands/ocaml.json +68 -0
- package/data/commands/opam.json +111 -0
- package/data/commands/pandoc.json +100 -0
- package/data/commands/parallel.json +73 -0
- package/data/commands/patch.json +55 -0
- package/data/commands/ping.json +73 -0
- package/data/commands/podman.json +151 -0
- package/data/commands/postman.json +82 -0
- package/data/commands/pre-commit.json +101 -0
- package/data/commands/prometheus.json +65 -0
- package/data/commands/pyenv.json +87 -0
- package/data/commands/q.json +63 -0
- package/data/commands/rbenv.json +85 -0
- package/data/commands/rebar3.json +110 -0
- package/data/commands/remix.json +80 -0
- package/data/commands/rollup.json +74 -0
- package/data/commands/route.json +53 -0
- package/data/commands/rustc.json +90 -0
- package/data/commands/sam.json +122 -0
- package/data/commands/sdkman.json +89 -0
- package/data/commands/semantic-release.json +58 -0
- package/data/commands/semgrep.json +97 -0
- package/data/commands/serverless.json +121 -0
- package/data/commands/shellcheck.json +61 -0
- package/data/commands/skopeo.json +79 -0
- package/data/commands/socat.json +43 -0
- package/data/commands/sops.json +85 -0
- package/data/commands/sort.json +75 -0
- package/data/commands/sqlite-utils.json +109 -0
- package/data/commands/ss.json +75 -0
- package/data/commands/stack.json +115 -0
- package/data/commands/storybook.json +90 -0
- package/data/commands/strace.json +71 -0
- package/data/commands/svelte.json +89 -0
- package/data/commands/swc.json +73 -0
- package/data/commands/swiftc.json +83 -0
- package/data/commands/syft.json +77 -0
- package/data/commands/tail.json +58 -0
- package/data/commands/tee.json +38 -0
- package/data/commands/tflint.json +83 -0
- package/data/commands/touch.json +57 -0
- package/data/commands/traceroute.json +70 -0
- package/data/commands/tracert.json +49 -0
- package/data/commands/umount.json +49 -0
- package/data/commands/uniq.json +59 -0
- package/data/commands/vagrant.json +112 -0
- package/data/commands/vegeta.json +59 -0
- package/data/commands/volta.json +87 -0
- package/data/commands/watch.json +58 -0
- package/data/commands/wc.json +50 -0
- package/data/commands/webpack.json +94 -0
- package/data/commands/which.json +34 -0
- package/data/commands/whoami.json +27 -0
- package/data/commands/wrangler.json +124 -0
- package/data/commands/wrk.json +63 -0
- package/data/commands/xargs.json +66 -0
- package/data/commands/xsv.json +119 -0
- package/data/commands/zig.json +114 -0
- package/data/completion/redis-cli.json +3465 -3405
- package/data/documentHighlight/nextjs.json +270 -212
- package/data/documentSymbol/azcli.json +6 -3
- package/data/documentSymbol/caddy.json +7 -4
- package/data/documentSymbol/crontab.json +6 -3
- package/data/documentSymbol/css.json +14 -14
- package/data/documentSymbol/doctest.json +6 -3
- package/data/documentSymbol/dotenv.json +6 -3
- package/data/documentSymbol/flow9.json +8 -4
- package/data/documentSymbol/graphql.json +1 -1
- package/data/documentSymbol/ini.json +6 -3
- package/data/documentSymbol/json.json +6 -3
- package/data/documentSymbol/lexon.json +6 -3
- package/data/documentSymbol/mips.json +6 -3
- package/data/documentSymbol/msdax.json +6 -3
- package/data/documentSymbol/pla.json +6 -3
- package/data/documentSymbol/powerquery.json +6 -3
- package/data/documentSymbol/restructuredtext.json +6 -3
- package/data/documentSymbol/sb.json +6 -3
- package/data/documentSymbol/sparql.json +6 -3
- package/data/documentSymbol/ssh_config.json +6 -3
- package/data/documentSymbol/systemd.json +6 -3
- package/data/documentSymbol/xml.json +6 -3
- package/data/hover/caddy.json +530 -458
- package/data/hover/dockerfile.json +355 -283
- package/data/hover/lua.json +1391 -971
- package/data/hover/nginx.json +957 -891
- package/data/hover/redis-cli.json +2168 -1088
- package/data/hover/sql.json +1405 -1273
- package/data/manifest.json +4 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# @enjoys/context-engine
|
|
2
2
|
|
|
3
|
-
Comprehensive
|
|
3
|
+
Comprehensive Monaco Editor language intelligence engine with **94 languages**, **26 providers**, and **412 CLI command files (395 unique)** — completions, hover docs, definitions, code actions, code lens, document symbols, formatting, signature help, semantic tokens, inline completions, and more, all as pre-built JSON data with zero backend required.
|
|
4
4
|
|
|
5
5
|
## Why Context Engine?
|
|
6
6
|
|
|
7
7
|
Traditional LSP (Language Server Protocol) setups require a backend server running a separate language server process for every language you want to support. Each language server needs its own binary installed — Go, Rust, Python, TypeScript, and so on. At scale, this makes the backend **heavy**, memory-hungry, and CPU-intensive. Supporting all languages can easily consume **1 GB+** of disk space and significant runtime resources just to keep those servers alive.
|
|
8
8
|
|
|
9
|
-
Context Engine takes a fundamentally different approach. Instead of running language servers on the backend, it ships **pre-built, Monaco-compatible JSON data**
|
|
9
|
+
Context Engine takes a fundamentally different approach. Instead of running language servers on the backend, it ships **pre-built, Monaco-compatible JSON data** for **94 languages across 26 provider types** — completions, hover docs, definitions, code actions, formatting rules, semantic tokens, and 412 CLI tool definitions — all in a single package. No language binaries to install. No background processes to manage. No backend required for intelligence.
|
|
10
10
|
|
|
11
|
-
> **Note:** Context Engine does not provide path-based intelligence (file resolution, go-to-definition across files, etc.) the way a full LSP does. It focuses on **language-aware completions, hover documentation,
|
|
11
|
+
> **Note:** Context Engine does not provide path-based intelligence (file resolution, go-to-definition across files, etc.) the way a full LSP does. It focuses on **language-aware completions, hover documentation, code actions, formatting, symbols, and terminal command autocomplete** — the features that matter most in web-based terminal and editor experiences, without the infrastructure overhead.
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
@@ -19,16 +19,34 @@ npm install @enjoys/context-engine
|
|
|
19
19
|
## What's Inside
|
|
20
20
|
|
|
21
21
|
```
|
|
22
|
-
data/
|
|
23
|
-
├──
|
|
24
|
-
|
|
25
|
-
├──
|
|
26
|
-
|
|
27
|
-
├──
|
|
28
|
-
|
|
29
|
-
├──
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
data/ # 2,444 JSON files — 94 languages × 26 providers + 256 commands
|
|
23
|
+
├── codeActions/ # Quick-fix and refactoring actions
|
|
24
|
+
├── codeLens/ # Inline actionable annotations (references, tests)
|
|
25
|
+
├── color/ # Color picker and decorator support
|
|
26
|
+
├── commands/ # 412 CLI tool definitions (git, docker, kubectl, ...)
|
|
27
|
+
├── completion/ # Monaco CompletionItem[] with snippets
|
|
28
|
+
├── declaration/ # Go-to-declaration data
|
|
29
|
+
├── definition/ # Definitions (signatures, descriptions, types)
|
|
30
|
+
├── documentHighlight/ # Symbol highlight on selection
|
|
31
|
+
├── documentRangeFormatting/ # Format-selection rules
|
|
32
|
+
├── documentSymbol/ # Outline / symbol tree patterns
|
|
33
|
+
├── foldingRange/ # Code folding regions
|
|
34
|
+
├── formatting/ # Full-document formatting rules
|
|
35
|
+
├── hover/ # Hover documentation (IMarkdownString[])
|
|
36
|
+
├── implementation/ # Go-to-implementation data
|
|
37
|
+
├── inlayHints/ # Inline parameter/type hints
|
|
38
|
+
├── inlineCompletions/ # Ghost-text inline completions
|
|
39
|
+
├── linkedEditingRange/ # Linked editing (e.g. HTML tag pairs)
|
|
40
|
+
├── links/ # Clickable document link patterns
|
|
41
|
+
├── onTypeFormatting/ # Format-as-you-type rules
|
|
42
|
+
├── rangeSemanticTokens/ # Range-scoped semantic tokens
|
|
43
|
+
├── references/ # Find-all-references patterns
|
|
44
|
+
├── rename/ # Symbol rename validation and patterns
|
|
45
|
+
├── selectionRange/ # Smart selection expansion
|
|
46
|
+
├── semanticTokens/ # Full semantic tokenization
|
|
47
|
+
├── signatureHelp/ # Function signature tooltips
|
|
48
|
+
├── typeDefinition/ # Go-to-type-definition data
|
|
49
|
+
└── manifest.json # Language registry with file mappings
|
|
32
50
|
```
|
|
33
51
|
|
|
34
52
|
---
|
|
@@ -160,7 +178,7 @@ function getDefinitionInfo(keyword) {
|
|
|
160
178
|
```js
|
|
161
179
|
import manifest from '@enjoys/context-engine/data/manifest.json';
|
|
162
180
|
|
|
163
|
-
// Dynamically register all
|
|
181
|
+
// Dynamically register all 94 languages
|
|
164
182
|
for (const lang of manifest.languages) {
|
|
165
183
|
const completionData = await import(`@enjoys/context-engine/${lang.files.completion}`);
|
|
166
184
|
const hoverData = await import(`@enjoys/context-engine/${lang.files.hover}`);
|
|
@@ -207,6 +225,97 @@ for (const lang of manifest.languages) {
|
|
|
207
225
|
}
|
|
208
226
|
```
|
|
209
227
|
|
|
228
|
+
### Register Additional Providers
|
|
229
|
+
|
|
230
|
+
```js
|
|
231
|
+
import codeActionsData from '@enjoys/context-engine/data/codeActions/typescript.json';
|
|
232
|
+
import codeLensData from '@enjoys/context-engine/data/codeLens/typescript.json';
|
|
233
|
+
import symbolData from '@enjoys/context-engine/data/documentSymbol/typescript.json';
|
|
234
|
+
import highlightData from '@enjoys/context-engine/data/documentHighlight/typescript.json';
|
|
235
|
+
import signatureData from '@enjoys/context-engine/data/signatureHelp/typescript.json';
|
|
236
|
+
|
|
237
|
+
// ── Code Actions (Quick Fix, Refactor) ──
|
|
238
|
+
monaco.languages.registerCodeActionProvider('typescript', {
|
|
239
|
+
provideCodeActions(model, range, context) {
|
|
240
|
+
return {
|
|
241
|
+
actions: codeActionsData.codeActions.map((a) => ({
|
|
242
|
+
title: a.title,
|
|
243
|
+
kind: a.kind,
|
|
244
|
+
diagnostics: [],
|
|
245
|
+
isPreferred: a.isPreferred || false,
|
|
246
|
+
})),
|
|
247
|
+
dispose() {},
|
|
248
|
+
};
|
|
249
|
+
},
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
// ── Code Lens (References, Run Test) ──
|
|
253
|
+
monaco.languages.registerCodeLensProvider('typescript', {
|
|
254
|
+
provideCodeLenses(model) {
|
|
255
|
+
const lenses = [];
|
|
256
|
+
const text = model.getValue();
|
|
257
|
+
for (const pattern of codeLensData.codeLensPatterns) {
|
|
258
|
+
const regex = new RegExp(pattern.pattern, 'gm');
|
|
259
|
+
let match;
|
|
260
|
+
while ((match = regex.exec(text))) {
|
|
261
|
+
const line = model.getPositionAt(match.index).lineNumber;
|
|
262
|
+
lenses.push({
|
|
263
|
+
range: new monaco.Range(line, 1, line, 1),
|
|
264
|
+
command: { id: pattern.commandId, title: pattern.title },
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return { lenses, dispose() {} };
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
// ── Document Symbols (Outline) ──
|
|
273
|
+
monaco.languages.registerDocumentSymbolProvider('typescript', {
|
|
274
|
+
provideDocumentSymbols(model) {
|
|
275
|
+
const symbols = [];
|
|
276
|
+
const text = model.getValue();
|
|
277
|
+
for (const sp of symbolData.symbolPatterns) {
|
|
278
|
+
const regex = new RegExp(sp.pattern, 'gm');
|
|
279
|
+
let match;
|
|
280
|
+
while ((match = regex.exec(text))) {
|
|
281
|
+
const pos = model.getPositionAt(match.index);
|
|
282
|
+
const name = match[sp.captureGroup || 1] || match[0];
|
|
283
|
+
symbols.push({
|
|
284
|
+
name,
|
|
285
|
+
kind: sp.kind,
|
|
286
|
+
range: new monaco.Range(pos.lineNumber, 1, pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)),
|
|
287
|
+
selectionRange: new monaco.Range(pos.lineNumber, pos.column, pos.lineNumber, pos.column + name.length),
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return symbols;
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// ── Signature Help ──
|
|
296
|
+
monaco.languages.registerSignatureHelpProvider('typescript', {
|
|
297
|
+
signatureHelpTriggerCharacters: signatureData.triggerCharacters || ['(', ','],
|
|
298
|
+
provideSignatureHelp(model, position) {
|
|
299
|
+
const word = model.getWordAtPosition(position);
|
|
300
|
+
if (!word || !signatureData.signatures) return null;
|
|
301
|
+
const sig = signatureData.signatures[word.word];
|
|
302
|
+
if (!sig) return null;
|
|
303
|
+
return {
|
|
304
|
+
value: {
|
|
305
|
+
signatures: [{
|
|
306
|
+
label: sig.label,
|
|
307
|
+
parameters: (sig.params || []).map((p) => ({ label: p.label, documentation: p.documentation })),
|
|
308
|
+
documentation: sig.documentation,
|
|
309
|
+
}],
|
|
310
|
+
activeSignature: 0,
|
|
311
|
+
activeParameter: 0,
|
|
312
|
+
},
|
|
313
|
+
dispose() {},
|
|
314
|
+
};
|
|
315
|
+
},
|
|
316
|
+
});
|
|
317
|
+
```
|
|
318
|
+
|
|
210
319
|
---
|
|
211
320
|
|
|
212
321
|
## Terminal Autocomplete — Command Engine API
|
|
@@ -312,7 +421,7 @@ getCategories();
|
|
|
312
421
|
### `count()`
|
|
313
422
|
|
|
314
423
|
```js
|
|
315
|
-
count(); //
|
|
424
|
+
count(); // 395
|
|
316
425
|
```
|
|
317
426
|
|
|
318
427
|
### `resolveCommandPath(name)` / `dataDir`
|
|
@@ -464,8 +573,8 @@ const manifest = require('@enjoys/context-engine/data/manifest.json');
|
|
|
464
573
|
}
|
|
465
574
|
```
|
|
466
575
|
|
|
467
|
-
`kind` values: `
|
|
468
|
-
`insertTextRules`: `4` = InsertAsSnippet (supports `${1:placeholder}` tab stops)
|
|
576
|
+
`kind` values (CompletionItemKind): `0` = Method, `1` = Function, `2` = Constructor, `3` = Field, `4` = Variable, `5` = Class, `6` = Struct, `7` = Interface, `8` = Module, `9` = Property, `10` = Event, `11` = Operator, `12` = Unit, `13` = Value, `14` = Constant, `15` = Enum, `16` = EnumMember, `17` = Keyword, `18` = Text, `19` = Color, `20` = File, `21` = Reference, `22` = Customcolor, `23` = Folder, `24` = TypeParameter, `25` = User, `26` = Issue, `27` = Tool, `28` = Snippet
|
|
577
|
+
`insertTextRules`: `0` = None, `1` = KeepWhitespace, `4` = InsertAsSnippet (supports `${1:placeholder}` tab stops)
|
|
469
578
|
|
|
470
579
|
### Definition Item (`data/definition/*.json`)
|
|
471
580
|
|
|
@@ -538,40 +647,70 @@ const manifest = require('@enjoys/context-engine/data/manifest.json');
|
|
|
538
647
|
|
|
539
648
|
---
|
|
540
649
|
|
|
541
|
-
## Supported Languages (
|
|
650
|
+
## Supported Languages (94)
|
|
651
|
+
|
|
652
|
+
Each language has up to 26 provider files — completions, hover, definitions, code actions, formatting, symbols, and more.
|
|
542
653
|
|
|
543
654
|
| Category | Languages |
|
|
544
655
|
|----------|-----------|
|
|
545
|
-
| **
|
|
546
|
-
| **
|
|
547
|
-
| **
|
|
548
|
-
| **
|
|
549
|
-
| **
|
|
550
|
-
| **
|
|
551
|
-
|
|
552
|
-
|
|
656
|
+
| **Web** | JavaScript, TypeScript, HTML, CSS, Less, SCSS, React, Angular, Next.js, Nest.js, Tailwind CSS |
|
|
657
|
+
| **UI / Templating** | Liquid, Twig, FreeMarker2, Razor, shadcn, MDX |
|
|
658
|
+
| **Systems** | C, C++, Rust, Go, Swift, Objective-C |
|
|
659
|
+
| **JVM** | Java, Kotlin, Scala, Clojure |
|
|
660
|
+
| **.NET** | C#, VB, Q# |
|
|
661
|
+
| **Scripting** | Python, Ruby, Perl, Lua, PHP, Elixir, CoffeeScript, R |
|
|
662
|
+
| **Shell** | Shell/Bash, PowerShell, AWK, Azure CLI |
|
|
663
|
+
| **Functional** | Scheme, Julia, CameLIGO, PascaLIGO, Dart |
|
|
664
|
+
| **Database / Query** | SQL, MySQL, PostgreSQL, Redshift, Redis, redis-cli, Cypher, SPARQL |
|
|
665
|
+
| **Config / Infrastructure** | Dockerfile, Docker Compose, YAML, TOML, JSON, XML, INI, Dotenv, SSH Config, HCL, Makefile, Nginx, systemd, Caddy |
|
|
666
|
+
| **Docs / Markup** | Markdown, MDX, reStructuredText |
|
|
667
|
+
| **Data / BI** | MSDAX, Power Query, GraphQL |
|
|
668
|
+
| **Blockchain** | Solidity, Lexon, Bicep |
|
|
669
|
+
| **Hardware / Low-Level** | MIPS, SystemVerilog, WGSL, Structured Text |
|
|
670
|
+
| **Enterprise / Niche** | ABAP, Apex, ECL, Flow9, M3, Pascal, PLA, Postiats, SB |
|
|
671
|
+
| **Other** | Crontab, Protobuf, Doctest |
|
|
672
|
+
|
|
673
|
+
## Covered Commands (412 files, 395 unique)
|
|
553
674
|
|
|
554
675
|
| Category | Tools |
|
|
555
676
|
|----------|-------|
|
|
556
|
-
| **Cloud CLIs** | aws, az, gcloud, doctl, linode-cli, vercel, netlify, firebase, supabase, railway, render, flyctl, cloudflare, aws-vault, auth0,
|
|
557
|
-
| **
|
|
558
|
-
| **Version Control** | git, gh, glab, svn, hg |
|
|
559
|
-
| **Node.js Ecosystem** | node, npm, npx, yarn, pnpm, bun, deno,
|
|
560
|
-
| **
|
|
561
|
-
| **
|
|
562
|
-
| **
|
|
563
|
-
| **
|
|
564
|
-
| **
|
|
565
|
-
| **
|
|
566
|
-
| **
|
|
677
|
+
| **Cloud CLIs & APIs** | aws, az, gcloud, doctl, linode-cli, vercel, netlify, firebase, supabase, railway, render, flyctl, cloudflare, aws-vault, auth0, stripe, twilio, sfdx, cdk, sam, serverless, eksctl, wrangler, func |
|
|
678
|
+
| **Containers & Orchestration** | docker, docker-compose, dockerfile, kubectl, helm, minikube, k9s, podman, buildah, skopeo, kind, kustomize, argocd, istioctl, crane, ko |
|
|
679
|
+
| **Version Control & Git Workflow** | git, gh, glab, svn, hg, git-lfs, husky, commitlint, semantic-release, conventional-commits, pre-commit |
|
|
680
|
+
| **Node.js Ecosystem** | node, npm, npx, yarn, pnpm, bun, deno, eslint, prettier, tsc, turbo, nx, vite, next, nest |
|
|
681
|
+
| **JS Build Tools** | webpack, esbuild, rollup, swc, babel, storybook, lerna, changeset, concurrently |
|
|
682
|
+
| **Frameworks** | angular, react, nextjs, nestjs, nuxt, vue, shadcn, tailwindcss, rails, artisan |
|
|
683
|
+
| **Static Site Generators** | hugo, jekyll, gatsby, astro, eleventy, hexo, svelte, remix |
|
|
684
|
+
| **Python Ecosystem** | python, pip, pipx, poetry, pipenv, conda, pytest, uvicorn, gunicorn, django-admin, flask, locust |
|
|
685
|
+
| **Rust & Go** | rust, cargo, rustup, wasm-pack, rustc, go, gofmt, golangci-lint, air |
|
|
686
|
+
| **Java/JVM** | java, javac, gradle, mvn, kotlin, scala, clojure, sdkman |
|
|
687
|
+
| **Haskell** | ghc, cabal, stack |
|
|
688
|
+
| **Elixir & Erlang** | mix, rebar3, erlang |
|
|
689
|
+
| **OCaml** | ocaml, opam |
|
|
690
|
+
| **Other Languages** | dotnet, zig, nim, crystal, swiftc, c (gcc/clang), cpp (g++), javascript, typescript, csharp, objective-c, swift, perl, lua, r, scheme, julia, pascal, tcl, vb, qsharp, coffee |
|
|
691
|
+
| **PHP** | php, composer, artisan, symfony, wp |
|
|
692
|
+
| **Ruby** | ruby, gem, bundle, rails, rake, rspec, rbenv, pod, fastlane |
|
|
693
|
+
| **Mobile** | adb, dart, flutter, expo, react-native, xcodebuild, fastlane |
|
|
694
|
+
| **Database** | sql, psql, pgsql, pg_dump, pg_restore, mysql, mongosh, redis, redis-cli, sqlite3, cockroach, influx, clickhouse-client, cypher, redshift |
|
|
695
|
+
| **Database ORMs/Migrations** | prisma, drizzle-kit, typeorm, sequelize, alembic, dbmate, flyway, liquibase, atlas |
|
|
696
|
+
| **DevOps & Infrastructure** | terraform, terragrunt, pulumi, packer, vault, consul, nomad, ansible, vagrant |
|
|
697
|
+
| **DevOps Quality** | shellcheck, hadolint, act, semgrep, checkov, tflint |
|
|
567
698
|
| **Web Servers** | nginx, caddy, httpd, apachectl |
|
|
568
|
-
| **
|
|
569
|
-
| **
|
|
570
|
-
| **
|
|
571
|
-
| **
|
|
572
|
-
| **
|
|
699
|
+
| **Networking** | curl, wget, rsync, ssh, ssh-keygen, ip, ss, ping, dig, nslookup, traceroute, tracert, netstat, ifconfig, route, hostname, nc, socat, nmap, tcpdump, wireshark |
|
|
700
|
+
| **Security** | openssl, certbot, snyk, trivy, sonar-scanner, gpg, age, sops, cosign, syft, grype |
|
|
701
|
+
| **System & Monitoring** | systemctl, journalctl, systemd-analyze, systemd, pm2, tmux, screen, htop, btop, top, ps, linux, crontab, kill, killall, df, du, free, lsof, mount, umount, env, watch, dmesg, strace, nohup, at, cron, hostname, prometheus, grafana-cli |
|
|
702
|
+
| **Linux Coreutils** | ls, cp, mv, rm, cat, find, tar, chmod, chown, cd, sudo, scp, unzip, zip, ufw, iptables, nft, mkdir, touch, echo, head, tail, wc, sort, uniq, cut, diff, patch, ln, xargs, tee, which, whoami, id |
|
|
703
|
+
| **Build Tools** | make, makefile, cmake, bazel, just, gradle |
|
|
704
|
+
| **Version Managers** | nvm, fnm, pyenv, rbenv, asdf, volta, sdkman, mise |
|
|
705
|
+
| **HTTP/API Testing** | httpie, ab, wrk, hey, vegeta, grpcurl, postman |
|
|
706
|
+
| **Data Processing** | csvkit, miller, xsv, q, sqlite-utils |
|
|
707
|
+
| **Media & Documents** | ffmpeg, imagemagick, pandoc, latex, ghostscript |
|
|
708
|
+
| **Package Managers** | apt, apt-get, yum, dnf, pacman, brew, choco, winget, pipx, composer, bundle |
|
|
573
709
|
| **Testing** | jest, vitest, mocha, playwright, cypress, k6, locust |
|
|
574
|
-
| **
|
|
710
|
+
| **Text Processing & Utilities** | grep, sed, awk, jq, yq, bat, cat, fd, fzf, rg, parallel, entr, inotifywait |
|
|
711
|
+
| **Text Editors** | nvim, vim |
|
|
712
|
+
| **Config & Data Formats** | json, xml, yaml, toml, ini, hcl, dotenv, markdown, mdx, restructuredtext, protobuf, graphql, scss, less, css, html, liquid, twig, razor, freemarker2 |
|
|
713
|
+
| **Niche & Specialized** | abap, bicep, azcli, cameligo, pascaligo, ecl, flow9, lexon, m3, mips, msdax, pla, postiats, powerquery, sb, sol, sparql, st, systemverilog, wgsl, doctest |
|
|
575
714
|
|
|
576
715
|
## Context Engine
|
|
577
716
|
|
|
@@ -593,25 +732,38 @@ const ctx = getContextEngine('systemctl');
|
|
|
593
732
|
|
|
594
733
|
**Parser types:** `text` | `lines` | `json` | `csv` | `keyvalue` | `regex` | `table`
|
|
595
734
|
|
|
596
|
-
##
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
| Provider |
|
|
601
|
-
|
|
602
|
-
| `
|
|
603
|
-
| `
|
|
604
|
-
| `
|
|
605
|
-
| `
|
|
606
|
-
| `
|
|
607
|
-
| `
|
|
608
|
-
| `
|
|
609
|
-
| `
|
|
610
|
-
| `
|
|
611
|
-
| `
|
|
612
|
-
| `
|
|
613
|
-
| `
|
|
614
|
-
| `
|
|
735
|
+
## All 26 Monaco Provider Types — Shipped
|
|
736
|
+
|
|
737
|
+
Every provider below is fully implemented for all 94 languages with spec-compliant JSON data:
|
|
738
|
+
|
|
739
|
+
| Provider | Registration Method | Data Key |
|
|
740
|
+
|----------|-------------------|----------|
|
|
741
|
+
| Completion | `registerCompletionItemProvider` | `completions[]` |
|
|
742
|
+
| Hover | `registerHoverProvider` | `hovers{}` |
|
|
743
|
+
| Definition | `registerDefinitionProvider` | `definitions{}` |
|
|
744
|
+
| Code Actions | `registerCodeActionProvider` | `codeActions[]` |
|
|
745
|
+
| Code Lens | `registerCodeLensProvider` | `codeLensPatterns[]` |
|
|
746
|
+
| Color | `registerColorProvider` | `colorPatterns[]` |
|
|
747
|
+
| Declaration | `registerDeclarationProvider` | `declarations{}` |
|
|
748
|
+
| Document Highlight | `registerDocumentHighlightProvider` | `highlights{}` |
|
|
749
|
+
| Document Symbol | `registerDocumentSymbolProvider` | `symbolPatterns[]` |
|
|
750
|
+
| Document Range Formatting | `registerDocumentRangeFormattingEditProvider` | `formatting{}` |
|
|
751
|
+
| Folding Range | `registerFoldingRangeProvider` | `foldingRules[]` |
|
|
752
|
+
| Formatting | `registerDocumentFormattingEditProvider` | `formatting{}` |
|
|
753
|
+
| Implementation | `registerImplementationProvider` | `implementations{}` |
|
|
754
|
+
| Inlay Hints | `registerInlayHintsProvider` | `inlayHints[]` |
|
|
755
|
+
| Inline Completions | `registerInlineCompletionsProvider` | `inlineCompletions[]` |
|
|
756
|
+
| Linked Editing Range | `registerLinkedEditingRangeProvider` | `linkedEditingPatterns[]` |
|
|
757
|
+
| Links | `registerLinkProvider` | `linkPatterns[]` |
|
|
758
|
+
| On-Type Formatting | `registerOnTypeFormattingEditProvider` | `formatting{}` |
|
|
759
|
+
| Range Semantic Tokens | `registerDocumentRangeSemanticTokensProvider` | `tokenTypes[]` |
|
|
760
|
+
| References | `registerReferenceProvider` | `referencePatterns[]` |
|
|
761
|
+
| Rename | `registerRenameProvider` | `renameValidation{}` |
|
|
762
|
+
| Selection Range | `registerSelectionRangeProvider` | `selectionRanges{}` |
|
|
763
|
+
| Semantic Tokens | `registerDocumentSemanticTokensProvider` | `tokenTypes[]` |
|
|
764
|
+
| Signature Help | `registerSignatureHelpProvider` | `signatures{}` |
|
|
765
|
+
| Type Definition | `registerTypeDefinitionProvider` | `typeDefinitions{}` |
|
|
766
|
+
| Commands (CLI) | Custom API | `subcommands[]`, `globalOptions[]` |
|
|
615
767
|
|
|
616
768
|
## License
|
|
617
769
|
|
|
@@ -1,111 +1,119 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "css",
|
|
3
|
-
"codeActions": [
|
|
4
|
-
{
|
|
5
|
-
"title": "Sort properties alphabetically",
|
|
6
|
-
"kind": "source.
|
|
7
|
-
"description": "Reorders all CSS property declarations within a rule block in alphabetical order for consistency and readability.",
|
|
8
|
-
"pattern": "\\{[^}]*[a-z-]+\\s*:[^}]*\\}",
|
|
9
|
-
"isPreferred": false
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"title": "Remove duplicate properties",
|
|
13
|
-
"kind": "quickfix",
|
|
14
|
-
"description": "Detects and removes duplicate CSS property declarations within the same rule block, keeping the last occurrence.",
|
|
15
|
-
"pattern": "([a-z-]+)\\s*:[^;]+;[\\s\\S]*\\1\\s*:",
|
|
16
|
-
"isPreferred": true
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"title": "Convert px to rem",
|
|
20
|
-
"kind": "refactor.
|
|
21
|
-
"description": "Converts pixel values to rem units using a base font size of 16px (e.g., 16px → 1rem, 24px → 1.5rem).",
|
|
22
|
-
"pattern": ":\\s*(-?\\d+(\\.\\d+)?)px",
|
|
23
|
-
"isPreferred": false
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"title": "Convert rem to px",
|
|
27
|
-
"kind": "refactor.
|
|
28
|
-
"description": "Converts rem values to pixel units using a base font size of 16px (e.g., 1rem → 16px, 0.75rem → 12px).",
|
|
29
|
-
"pattern": ":\\s*(-?\\d+(\\.\\d+)?)rem",
|
|
30
|
-
"isPreferred": false
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"title": "Add vendor prefixes",
|
|
34
|
-
"kind": "source.
|
|
35
|
-
"description": "Adds -webkit-, -moz-, -ms-, -o- prefixed versions for properties that require vendor prefixes for broader browser support (e.g., transform, appearance, backdrop-filter).",
|
|
36
|
-
"pattern": "(?:transform|appearance|backdrop-filter|user-select|text-size-adjust|hyphens|writing-mode)\\s*:",
|
|
37
|
-
"isPreferred": false
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"title": "Convert hex to rgb()",
|
|
41
|
-
"kind": "refactor.
|
|
42
|
-
"description": "Converts hexadecimal color values to rgb() functional notation (e.g., #ff0000 → rgb(255, 0, 0)).",
|
|
43
|
-
"pattern": "#([0-9a-fA-F]{3,8})\\b",
|
|
44
|
-
"isPreferred": false
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"title": "Convert hex to hsl()",
|
|
48
|
-
"kind": "refactor.
|
|
49
|
-
"description": "Converts hexadecimal color values to hsl() functional notation (e.g., #ff0000 → hsl(0, 100%, 50%)).",
|
|
50
|
-
"pattern": "#([0-9a-fA-F]{3,8})\\b",
|
|
51
|
-
"isPreferred": false
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"title": "Convert rgb() to hex",
|
|
55
|
-
"kind": "refactor.
|
|
56
|
-
"description": "Converts rgb() or rgba() functional notation to hexadecimal color values (e.g., rgb(255, 0, 0) → #ff0000).",
|
|
57
|
-
"pattern": "rgba?\\(\\s*\\d+",
|
|
58
|
-
"isPreferred": false
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"title": "Extract CSS custom property",
|
|
62
|
-
"kind": "refactor.extract",
|
|
63
|
-
"description": "Extracts a repeated value into a CSS custom property (variable) defined on :root and replaces all occurrences with var(--name).",
|
|
64
|
-
"pattern": ":\\s*([^;]+);",
|
|
65
|
-
"isPreferred": false
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"title": "Add missing semicolons",
|
|
69
|
-
"kind": "quickfix",
|
|
70
|
-
"description": "Inserts missing semicolons at the end of CSS property declarations within rule blocks.",
|
|
71
|
-
"pattern": "[a-z-]+\\s*:[^;{}]+(?=\\s*[}\\n])",
|
|
72
|
-
"isPreferred": true
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"title": "Expand shorthand property",
|
|
76
|
-
"kind": "refactor.
|
|
77
|
-
"description": "Expands a shorthand property (margin, padding, border, background, font, animation, transition) into its individual longhand properties.",
|
|
78
|
-
"pattern": "(?:margin|padding|border|background|font|animation|transition|flex|grid|overflow|border-radius)\\s*:",
|
|
79
|
-
"isPreferred": false
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"title": "Collapse to shorthand property",
|
|
83
|
-
"kind": "refactor.
|
|
84
|
-
"description": "Combines individual longhand properties (e.g., margin-top, margin-right, margin-bottom, margin-left) into their shorthand equivalent.",
|
|
85
|
-
"pattern": "(margin|padding|border|overflow)-(top|right|bottom|left)\\s*:",
|
|
86
|
-
"isPreferred": false
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"title": "Convert named color to hex",
|
|
90
|
-
"kind": "refactor.
|
|
91
|
-
"description": "Converts a CSS named color (e.g., red, blue, rebeccapurple) to its hexadecimal equivalent.",
|
|
92
|
-
"pattern": ":\\s*(red|blue|green|white|black|gray|grey|orange|purple|yellow|pink|cyan|magenta|rebeccapurple|transparent|currentColor)\\b",
|
|
93
|
-
"isPreferred": false
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
"title": "Add fallback for CSS custom property",
|
|
97
|
-
"kind": "quickfix",
|
|
98
|
-
"description": "Adds a fallback value to var() expressions that are missing one: var(--name) → var(--name, fallback).",
|
|
99
|
-
"pattern": "var\\(--[a-zA-Z0-9-]+\\s*\\)",
|
|
100
|
-
"isPreferred": false
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"title": "Convert to logical properties",
|
|
104
|
-
"kind": "refactor.
|
|
105
|
-
"description": "Converts physical properties (margin-left, padding-right, border-top, width, height) to their logical property equivalents (margin-inline-start, padding-inline-end, border-block-start, inline-size, block-size) for better internationalization support.",
|
|
106
|
-
"pattern": "(?:margin|padding|border)-(top|right|bottom|left)\\s*:|\\b(width|height)\\s*:",
|
|
107
|
-
"isPreferred": false
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
"providedCodeActionKinds": [
|
|
111
|
-
|
|
1
|
+
{
|
|
2
|
+
"language": "css",
|
|
3
|
+
"codeActions": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Sort properties alphabetically",
|
|
6
|
+
"kind": "source.organizeImports",
|
|
7
|
+
"description": "Reorders all CSS property declarations within a rule block in alphabetical order for consistency and readability.",
|
|
8
|
+
"pattern": "\\{[^}]*[a-z-]+\\s*:[^}]*\\}",
|
|
9
|
+
"isPreferred": false
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Remove duplicate properties",
|
|
13
|
+
"kind": "quickfix",
|
|
14
|
+
"description": "Detects and removes duplicate CSS property declarations within the same rule block, keeping the last occurrence.",
|
|
15
|
+
"pattern": "([a-z-]+)\\s*:[^;]+;[\\s\\S]*\\1\\s*:",
|
|
16
|
+
"isPreferred": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Convert px to rem",
|
|
20
|
+
"kind": "refactor.rewrite",
|
|
21
|
+
"description": "Converts pixel values to rem units using a base font size of 16px (e.g., 16px → 1rem, 24px → 1.5rem).",
|
|
22
|
+
"pattern": ":\\s*(-?\\d+(\\.\\d+)?)px",
|
|
23
|
+
"isPreferred": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Convert rem to px",
|
|
27
|
+
"kind": "refactor.rewrite",
|
|
28
|
+
"description": "Converts rem values to pixel units using a base font size of 16px (e.g., 1rem → 16px, 0.75rem → 12px).",
|
|
29
|
+
"pattern": ":\\s*(-?\\d+(\\.\\d+)?)rem",
|
|
30
|
+
"isPreferred": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Add vendor prefixes",
|
|
34
|
+
"kind": "source.fixAll",
|
|
35
|
+
"description": "Adds -webkit-, -moz-, -ms-, -o- prefixed versions for properties that require vendor prefixes for broader browser support (e.g., transform, appearance, backdrop-filter).",
|
|
36
|
+
"pattern": "(?:transform|appearance|backdrop-filter|user-select|text-size-adjust|hyphens|writing-mode)\\s*:",
|
|
37
|
+
"isPreferred": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Convert hex to rgb()",
|
|
41
|
+
"kind": "refactor.rewrite",
|
|
42
|
+
"description": "Converts hexadecimal color values to rgb() functional notation (e.g., #ff0000 → rgb(255, 0, 0)).",
|
|
43
|
+
"pattern": "#([0-9a-fA-F]{3,8})\\b",
|
|
44
|
+
"isPreferred": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "Convert hex to hsl()",
|
|
48
|
+
"kind": "refactor.rewrite",
|
|
49
|
+
"description": "Converts hexadecimal color values to hsl() functional notation (e.g., #ff0000 → hsl(0, 100%, 50%)).",
|
|
50
|
+
"pattern": "#([0-9a-fA-F]{3,8})\\b",
|
|
51
|
+
"isPreferred": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Convert rgb() to hex",
|
|
55
|
+
"kind": "refactor.rewrite",
|
|
56
|
+
"description": "Converts rgb() or rgba() functional notation to hexadecimal color values (e.g., rgb(255, 0, 0) → #ff0000).",
|
|
57
|
+
"pattern": "rgba?\\(\\s*\\d+",
|
|
58
|
+
"isPreferred": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Extract CSS custom property",
|
|
62
|
+
"kind": "refactor.extract",
|
|
63
|
+
"description": "Extracts a repeated value into a CSS custom property (variable) defined on :root and replaces all occurrences with var(--name).",
|
|
64
|
+
"pattern": ":\\s*([^;]+);",
|
|
65
|
+
"isPreferred": false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"title": "Add missing semicolons",
|
|
69
|
+
"kind": "quickfix",
|
|
70
|
+
"description": "Inserts missing semicolons at the end of CSS property declarations within rule blocks.",
|
|
71
|
+
"pattern": "[a-z-]+\\s*:[^;{}]+(?=\\s*[}\\n])",
|
|
72
|
+
"isPreferred": true
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"title": "Expand shorthand property",
|
|
76
|
+
"kind": "refactor.rewrite",
|
|
77
|
+
"description": "Expands a shorthand property (margin, padding, border, background, font, animation, transition) into its individual longhand properties.",
|
|
78
|
+
"pattern": "(?:margin|padding|border|background|font|animation|transition|flex|grid|overflow|border-radius)\\s*:",
|
|
79
|
+
"isPreferred": false
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "Collapse to shorthand property",
|
|
83
|
+
"kind": "refactor.rewrite",
|
|
84
|
+
"description": "Combines individual longhand properties (e.g., margin-top, margin-right, margin-bottom, margin-left) into their shorthand equivalent.",
|
|
85
|
+
"pattern": "(margin|padding|border|overflow)-(top|right|bottom|left)\\s*:",
|
|
86
|
+
"isPreferred": false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "Convert named color to hex",
|
|
90
|
+
"kind": "refactor.rewrite",
|
|
91
|
+
"description": "Converts a CSS named color (e.g., red, blue, rebeccapurple) to its hexadecimal equivalent.",
|
|
92
|
+
"pattern": ":\\s*(red|blue|green|white|black|gray|grey|orange|purple|yellow|pink|cyan|magenta|rebeccapurple|transparent|currentColor)\\b",
|
|
93
|
+
"isPreferred": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Add fallback for CSS custom property",
|
|
97
|
+
"kind": "quickfix",
|
|
98
|
+
"description": "Adds a fallback value to var() expressions that are missing one: var(--name) → var(--name, fallback).",
|
|
99
|
+
"pattern": "var\\(--[a-zA-Z0-9-]+\\s*\\)",
|
|
100
|
+
"isPreferred": false
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"title": "Convert to logical properties",
|
|
104
|
+
"kind": "refactor.rewrite",
|
|
105
|
+
"description": "Converts physical properties (margin-left, padding-right, border-top, width, height) to their logical property equivalents (margin-inline-start, padding-inline-end, border-block-start, inline-size, block-size) for better internationalization support.",
|
|
106
|
+
"pattern": "(?:margin|padding|border)-(top|right|bottom|left)\\s*:|\\b(width|height)\\s*:",
|
|
107
|
+
"isPreferred": false
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"providedCodeActionKinds": [
|
|
111
|
+
"quickfix",
|
|
112
|
+
"refactor",
|
|
113
|
+
"refactor.extract",
|
|
114
|
+
"refactor.rewrite",
|
|
115
|
+
"source",
|
|
116
|
+
"source.fixAll",
|
|
117
|
+
"source.organizeImports"
|
|
118
|
+
]
|
|
119
|
+
}
|