css-variable-lsp 1.0.18 → 1.0.20-beta.1
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/AGENTS.md +0 -139
- package/README.md +5 -0
- package/docs/SCSS_SASS_SUPPORT_RESEARCH.md +96 -0
- package/out/colorService.js +64 -16
- package/out/colorService.js.map +1 -1
- package/out/colorVariableFeature.js +149 -0
- package/out/colorVariableFeature.js.map +1 -0
- package/out/cssVariableManager.js +158 -40
- package/out/cssVariableManager.js.map +1 -1
- package/out/flags.js +209 -0
- package/out/flags.js.map +1 -0
- package/out/initialize.js +2 -1
- package/out/initialize.js.map +1 -1
- package/out/logger.js +38 -0
- package/out/logger.js.map +1 -0
- package/out/runtimeConfig.js +3 -185
- package/out/runtimeConfig.js.map +1 -1
- package/out/server.js +93 -60
- package/out/server.js.map +1 -1
- package/out/specificity.js +46 -7
- package/out/specificity.js.map +1 -1
- package/package.json +7 -7
- package/tests/helpers/silentLogger.ts +13 -0
package/AGENTS.md
CHANGED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
## Issue Tracking with bd (beads)
|
|
2
|
-
|
|
3
|
-
**IMPORTANT**: This project uses **bd (beads)** for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods.
|
|
4
|
-
|
|
5
|
-
### Why bd?
|
|
6
|
-
|
|
7
|
-
- Dependency-aware: Track blockers and relationships between issues
|
|
8
|
-
- Git-friendly: Auto-syncs to JSONL for version control
|
|
9
|
-
- Agent-optimized: JSON output, ready work detection, discovered-from links
|
|
10
|
-
- Prevents duplicate tracking systems and confusion
|
|
11
|
-
|
|
12
|
-
### Quick Start
|
|
13
|
-
|
|
14
|
-
**Check for ready work:**
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
bd ready --json
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
**Create new issues:**
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
bd create "Issue title" -t bug|feature|task -p 0-4 --json
|
|
24
|
-
bd create "Issue title" -p 1 --deps discovered-from:bd-123 --json
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
**Claim and update:**
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
bd update bd-42 --status in_progress --json
|
|
31
|
-
bd update bd-42 --priority 1 --json
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**Complete work:**
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
bd close bd-42 --reason "Completed" --json
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Issue Types
|
|
41
|
-
|
|
42
|
-
- `bug` - Something broken
|
|
43
|
-
- `feature` - New functionality
|
|
44
|
-
- `task` - Work item (tests, docs, refactoring)
|
|
45
|
-
- `epic` - Large feature with subtasks
|
|
46
|
-
- `chore` - Maintenance (dependencies, tooling)
|
|
47
|
-
|
|
48
|
-
### Priorities
|
|
49
|
-
|
|
50
|
-
- `0` - Critical (security, data loss, broken builds)
|
|
51
|
-
- `1` - High (major features, important bugs)
|
|
52
|
-
- `2` - Medium (default, nice-to-have)
|
|
53
|
-
- `3` - Low (polish, optimization)
|
|
54
|
-
- `4` - Backlog (future ideas)
|
|
55
|
-
|
|
56
|
-
### Workflow for AI Agents
|
|
57
|
-
|
|
58
|
-
1. **Check ready work**: `bd ready` shows unblocked issues
|
|
59
|
-
2. **Claim your task**: `bd update <id> --status in_progress`
|
|
60
|
-
3. **Work on it**: Implement, test, document
|
|
61
|
-
4. **Discover new work?** Create linked issue:
|
|
62
|
-
- `bd create "Found bug" -p 1 --deps discovered-from:<parent-id>`
|
|
63
|
-
5. **Complete**: `bd close <id> --reason "Done"`
|
|
64
|
-
6. **Commit together**: Always commit the `.beads/issues.jsonl` file together with the code changes so issue state stays in sync with code state
|
|
65
|
-
|
|
66
|
-
### Auto-Sync
|
|
67
|
-
|
|
68
|
-
bd automatically syncs with git:
|
|
69
|
-
|
|
70
|
-
- Exports to `.beads/issues.jsonl` after changes (5s debounce)
|
|
71
|
-
- Imports from JSONL when newer (e.g., after `git pull`)
|
|
72
|
-
- No manual export/import needed!
|
|
73
|
-
|
|
74
|
-
### MCP Server (Recommended)
|
|
75
|
-
|
|
76
|
-
If using Claude or MCP-compatible clients, install the beads MCP server:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
pip install beads-mcp
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Add to MCP config (e.g., `~/.config/claude/config.json`):
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"beads": {
|
|
87
|
-
"command": "beads-mcp",
|
|
88
|
-
"args": []
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Then use `mcp__beads__*` functions instead of CLI commands.
|
|
94
|
-
|
|
95
|
-
### Managing AI-Generated Planning Documents
|
|
96
|
-
|
|
97
|
-
AI assistants often create planning and design documents during development:
|
|
98
|
-
|
|
99
|
-
- PLAN.md, IMPLEMENTATION.md, ARCHITECTURE.md
|
|
100
|
-
- DESIGN.md, CODEBASE_SUMMARY.md, INTEGRATION_PLAN.md
|
|
101
|
-
- TESTING_GUIDE.md, TECHNICAL_DESIGN.md, and similar files
|
|
102
|
-
|
|
103
|
-
**Best Practice: Use a dedicated directory for these ephemeral files**
|
|
104
|
-
|
|
105
|
-
**Recommended approach:**
|
|
106
|
-
|
|
107
|
-
- Create a `history/` directory in the project root
|
|
108
|
-
- Store ALL AI-generated planning/design docs in `history/`
|
|
109
|
-
- Keep the repository root clean and focused on permanent project files
|
|
110
|
-
- Only access `history/` when explicitly asked to review past planning
|
|
111
|
-
|
|
112
|
-
**Example .gitignore entry (optional):**
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
# AI planning documents (ephemeral)
|
|
116
|
-
history/
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**Benefits:**
|
|
120
|
-
|
|
121
|
-
- ✅ Clean repository root
|
|
122
|
-
- ✅ Clear separation between ephemeral and permanent documentation
|
|
123
|
-
- ✅ Easy to exclude from version control if desired
|
|
124
|
-
- ✅ Preserves planning history for archeological research
|
|
125
|
-
- ✅ Reduces noise when browsing the project
|
|
126
|
-
|
|
127
|
-
### Important Rules
|
|
128
|
-
|
|
129
|
-
- ✅ Use bd for ALL task tracking
|
|
130
|
-
- ✅ Always use `--json` flag for programmatic use
|
|
131
|
-
- ✅ Link discovered work with `discovered-from` dependencies
|
|
132
|
-
- ✅ Check `bd ready` before asking "what should I work on?"
|
|
133
|
-
- ✅ Store AI planning docs in `history/` directory
|
|
134
|
-
- ❌ Do NOT create markdown TODO lists
|
|
135
|
-
- ❌ Do NOT use external issue trackers
|
|
136
|
-
- ❌ Do NOT duplicate tracking systems
|
|
137
|
-
- ❌ Do NOT clutter repo root with planning documents
|
|
138
|
-
|
|
139
|
-
For more details, see README.md and QUICKSTART.md.
|
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ This is a standalone LSP server. Configure it in any LSP client.
|
|
|
48
48
|
Command-line flags:
|
|
49
49
|
|
|
50
50
|
- `--no-color-preview`
|
|
51
|
+
- `--no-color-replacement-diagnostics` (disable "replace literal with CSS variable" suggestions)
|
|
51
52
|
- `--color-only-variables` (show colors only on `var(--...)` usages)
|
|
52
53
|
- `--lookup-files "<glob>,<glob>"` (comma-separated list of glob patterns)
|
|
53
54
|
- `--lookup-file "<glob>"` (repeatable)
|
|
@@ -59,6 +60,10 @@ Command-line flags:
|
|
|
59
60
|
|
|
60
61
|
Environment variables:
|
|
61
62
|
|
|
63
|
+
- `CSS_LSP_COLOR_REPLACEMENT_DIAGNOSTICS=0` (disable "replace literal with CSS variable" suggestions)
|
|
64
|
+
|
|
65
|
+
Environment variables:
|
|
66
|
+
|
|
62
67
|
- `CSS_LSP_COLOR_ONLY_VARIABLES=1` (same as `--color-only-variables`)
|
|
63
68
|
- `CSS_LSP_LOOKUP_FILES` (comma-separated glob patterns; ignored if CLI lookup flags are provided)
|
|
64
69
|
- `CSS_LSP_IGNORE_GLOBS` (comma-separated glob patterns; ignored if CLI ignore flags are provided)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Deep Research: Full SCSS/Sass Support for CSS Variable LSP
|
|
2
|
+
|
|
3
|
+
Last updated: 2026-01-21
|
|
4
|
+
|
|
5
|
+
## Executive summary
|
|
6
|
+
|
|
7
|
+
- Full SCSS/Sass semantics require a real Sass compiler (Dart Sass). Parser-only libraries can accept syntax but cannot evaluate variables, mixins, @use/@forward modules, interpolation, or control flow.
|
|
8
|
+
- In Node.js, the practical compiler choices are `sass` (Dart Sass compiled to JavaScript) and `sass-embedded` (embedded Dart executable with the same JS API, usually faster but platform-limited).
|
|
9
|
+
- Sass module features (`@use`, `@forward`, and built-in `sass:` modules) are only supported by Dart Sass, not LibSass.
|
|
10
|
+
|
|
11
|
+
## What "full support" means
|
|
12
|
+
|
|
13
|
+
A "full" SCSS/Sass implementation must evaluate:
|
|
14
|
+
|
|
15
|
+
- `$` variables, mixins, functions, and control flow (`@if`, `@for`, `@each`, `@while`).
|
|
16
|
+
- Interpolation in selectors, property names, and values.
|
|
17
|
+
- Module system semantics for `@use` and `@forward` (including namespaces and configuration).
|
|
18
|
+
- Built-in modules such as `sass:color`, `sass:math`, etc.
|
|
19
|
+
- Both syntaxes: SCSS (`.scss`) and indented Sass (`.sass`).
|
|
20
|
+
|
|
21
|
+
These features are not recoverable with syntax-only parsing; they require compilation.
|
|
22
|
+
|
|
23
|
+
## Library landscape
|
|
24
|
+
|
|
25
|
+
### 1) Compiler-backed (full semantics)
|
|
26
|
+
|
|
27
|
+
#### Dart Sass via the JS API
|
|
28
|
+
|
|
29
|
+
- The `sass` npm package is Dart Sass compiled to JavaScript. It includes the CLI and exposes the JavaScript API (`compile`, `compileString`, and async variants).
|
|
30
|
+
- The `sass-embedded` package wraps the embedded Dart Sass executable using the Embedded Sass protocol. It exposes the same JS API and is typically faster, but only on platforms where the embedded Dart binary is available.
|
|
31
|
+
- Dart Sass itself can be started in embedded mode via `sass --embedded`, but the npm build of Dart Sass does not provide the `--embedded` flag.
|
|
32
|
+
|
|
33
|
+
#### JS API surface that matters for an LSP
|
|
34
|
+
|
|
35
|
+
Key API parts for integration:
|
|
36
|
+
|
|
37
|
+
- `compile` / `compileString` and their async equivalents.
|
|
38
|
+
- Options that affect source mapping (`sourceMap`, `sourceMapIncludeSources`).
|
|
39
|
+
- Resolution controls (`loadPaths`) and custom `importers` (for `@use`/`@import`).
|
|
40
|
+
- `FileImporter` lets the compiler resolve partials and extensions (e.g., `_name.scss`, `.sass`, `.scss`) without manual logic.
|
|
41
|
+
- The legacy JS API (`render`, `renderSync`) is deprecated and scheduled for removal in Dart Sass 2.0.0.
|
|
42
|
+
|
|
43
|
+
### 2) Parser-only (syntax-level, not semantic)
|
|
44
|
+
|
|
45
|
+
- `postcss-scss` parses SCSS syntax but does not compile; it represents mixins and variables as custom at-rules/properties rather than evaluating them.
|
|
46
|
+
- `gonzales-pe` provides an AST for SCSS/Sass/LESS syntax but does not evaluate Sass semantics.
|
|
47
|
+
- Tree-sitter provides incremental parsing and syntax trees; grammars exist for SCSS, but they do not execute Sass logic.
|
|
48
|
+
|
|
49
|
+
## Implications for CSS Variable LSP
|
|
50
|
+
|
|
51
|
+
### Option A: Compile SCSS/Sass to CSS (recommended for "full support")
|
|
52
|
+
|
|
53
|
+
Pipeline:
|
|
54
|
+
|
|
55
|
+
1. On `.scss`/`.sass` file change, compile with `sass` or `sass-embedded`.
|
|
56
|
+
2. Feed resulting CSS into the existing CSS custom property extractor.
|
|
57
|
+
3. Use source maps to map CSS locations back to original SCSS/Sass documents.
|
|
58
|
+
4. Use custom importers to align `@use`/`@import` resolution with the workspace layout.
|
|
59
|
+
5. Track dependencies so changes in partials or shared modules trigger recompilation of dependents.
|
|
60
|
+
6. Surface Sass compiler errors as diagnostics and avoid indexing stale outputs.
|
|
61
|
+
|
|
62
|
+
Notes:
|
|
63
|
+
|
|
64
|
+
- `sass-embedded` is usually faster and keeps the main thread more responsive, but it adds a native dependency and is limited by platform support. A practical approach is to prefer `sass-embedded` and fall back to `sass` when not available.
|
|
65
|
+
- Source maps are essential for precise diagnostics, hover, and definitions. Without them, results will point to generated CSS instead of the original SCSS/Sass.
|
|
66
|
+
|
|
67
|
+
### Option B: Syntax-only parsing to tolerate SCSS/Sass syntax
|
|
68
|
+
|
|
69
|
+
You can swap the parser to `postcss-scss` or gonzales-pe to prevent parse failures and still extract literal `--custom-prop` declarations, but this cannot provide accurate semantics when Sass generates custom properties dynamically (mixins, interpolation, control flow). This is "best-effort" only.
|
|
70
|
+
|
|
71
|
+
### Mixed approach
|
|
72
|
+
|
|
73
|
+
A hybrid strategy is to run a fast syntax-only parse for responsiveness, then refine results after a background Sass compilation finishes. This can reduce editor latency while still delivering correct results once compilation completes.
|
|
74
|
+
|
|
75
|
+
## Recommendation
|
|
76
|
+
|
|
77
|
+
If the goal is truly "full SCSS/Sass support", integrate Dart Sass compilation. Use `sass-embedded` for performance where available, fall back to `sass` otherwise, and rely on source maps plus custom importers to map results back to source files. Parser-only libraries can improve tolerance for incomplete edits, but they cannot replace a compiler for correctness.
|
|
78
|
+
|
|
79
|
+
## Sources
|
|
80
|
+
|
|
81
|
+
- https://sass-lang.com/documentation/js-api/
|
|
82
|
+
- https://sass-lang.com/documentation/js-api/functions/compile/
|
|
83
|
+
- https://sass-lang.com/documentation/js-api/interfaces/options/
|
|
84
|
+
- https://sass-lang.com/documentation/js-api/interfaces/importer/
|
|
85
|
+
- https://sass-lang.com/documentation/js-api/interfaces/fileimporter/
|
|
86
|
+
- https://sass-lang.com/documentation/at-rules/use/
|
|
87
|
+
- https://sass-lang.com/documentation/at-rules/forward/
|
|
88
|
+
- https://sass-lang.com/documentation/modules/
|
|
89
|
+
- https://sass-lang.com/documentation/breaking-changes/legacy-js-api/
|
|
90
|
+
- https://github.com/sass/embedded-host-node
|
|
91
|
+
- https://github.com/sass/dart-sass
|
|
92
|
+
- https://github.com/postcss/postcss-scss
|
|
93
|
+
- https://www.npmjs.com/package/gonzales-pe
|
|
94
|
+
- https://github.com/tree-sitter/tree-sitter
|
|
95
|
+
- https://www.npmjs.com/package/tree-sitter
|
|
96
|
+
- https://docs.rs/tree-sitter-scss
|
package/out/colorService.js
CHANGED
|
@@ -5,6 +5,8 @@ exports.formatColor = formatColor;
|
|
|
5
5
|
exports.formatColorAsHex = formatColorAsHex;
|
|
6
6
|
exports.formatColorAsRgb = formatColorAsRgb;
|
|
7
7
|
exports.formatColorAsHsl = formatColorAsHsl;
|
|
8
|
+
exports.getNormalizedColorKey = getNormalizedColorKey;
|
|
9
|
+
exports.colorsEqual = colorsEqual;
|
|
8
10
|
/**
|
|
9
11
|
* Parse a CSS color string into an LSP Color object.
|
|
10
12
|
* Supports hex, rgb, rgba, hsl, hsla. Named colors are optional.
|
|
@@ -146,31 +148,71 @@ function parseHex(hex) {
|
|
|
146
148
|
return { red: r, green: g, blue: b, alpha: a };
|
|
147
149
|
}
|
|
148
150
|
function parseRgb(value) {
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
+
const start = value.indexOf("(");
|
|
152
|
+
const end = value.lastIndexOf(")");
|
|
153
|
+
if (start === -1 || end === -1 || end <= start) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const inner = value.slice(start + 1, end).trim();
|
|
157
|
+
const [rgbPart, alphaPart] = splitAlphaPart(inner);
|
|
158
|
+
const parts = rgbPart.split(/[\s,]+/).filter(Boolean);
|
|
159
|
+
if (parts.length !== 3 && parts.length !== 4) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const r = parseFloat(parts[0]) / 255;
|
|
163
|
+
const g = parseFloat(parts[1]) / 255;
|
|
164
|
+
const b = parseFloat(parts[2]) / 255;
|
|
165
|
+
const a = alphaPart
|
|
166
|
+
? parseAlpha(alphaPart)
|
|
167
|
+
: parts.length === 4
|
|
168
|
+
? parseAlpha(parts[3])
|
|
169
|
+
: 1;
|
|
170
|
+
if ([r, g, b, a].some((component) => Number.isNaN(component))) {
|
|
151
171
|
return null;
|
|
152
|
-
const r = parseFloat(match[1]) / 255;
|
|
153
|
-
const g = parseFloat(match[2]) / 255;
|
|
154
|
-
const b = parseFloat(match[3]) / 255;
|
|
155
|
-
let a = 1;
|
|
156
|
-
if (match[4]) {
|
|
157
|
-
a = parseFloat(match[4]);
|
|
158
172
|
}
|
|
159
173
|
return { red: r, green: g, blue: b, alpha: a };
|
|
160
174
|
}
|
|
161
175
|
function parseHsl(value) {
|
|
162
|
-
const
|
|
163
|
-
|
|
176
|
+
const start = value.indexOf("(");
|
|
177
|
+
const end = value.lastIndexOf(")");
|
|
178
|
+
if (start === -1 || end === -1 || end <= start) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const inner = value.slice(start + 1, end).trim();
|
|
182
|
+
const [hslPart, alphaPart] = splitAlphaPart(inner);
|
|
183
|
+
const parts = hslPart.split(/[\s,]+/).filter(Boolean);
|
|
184
|
+
if (parts.length !== 3 && parts.length !== 4) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
const h = parseFloat(parts[0]) / 360;
|
|
188
|
+
const s = parseFloat(parts[1]) / 100;
|
|
189
|
+
const l = parseFloat(parts[2]) / 100;
|
|
190
|
+
const a = alphaPart
|
|
191
|
+
? parseAlpha(alphaPart)
|
|
192
|
+
: parts.length === 4
|
|
193
|
+
? parseAlpha(parts[3])
|
|
194
|
+
: 1;
|
|
195
|
+
if ([h, s, l, a].some((component) => Number.isNaN(component))) {
|
|
164
196
|
return null;
|
|
165
|
-
const h = parseFloat(match[1]) / 360;
|
|
166
|
-
const s = parseFloat(match[2]) / 100;
|
|
167
|
-
const l = parseFloat(match[3]) / 100;
|
|
168
|
-
let a = 1;
|
|
169
|
-
if (match[4]) {
|
|
170
|
-
a = parseFloat(match[4]);
|
|
171
197
|
}
|
|
172
198
|
return hslToRgb(h, s, l, a);
|
|
173
199
|
}
|
|
200
|
+
function splitAlphaPart(value) {
|
|
201
|
+
const slashIndex = value.indexOf("/");
|
|
202
|
+
if (slashIndex === -1) {
|
|
203
|
+
return [value.trim(), null];
|
|
204
|
+
}
|
|
205
|
+
return [
|
|
206
|
+
value.slice(0, slashIndex).trim(),
|
|
207
|
+
value.slice(slashIndex + 1).trim(),
|
|
208
|
+
];
|
|
209
|
+
}
|
|
210
|
+
function parseAlpha(value) {
|
|
211
|
+
if (value.endsWith("%")) {
|
|
212
|
+
return parseFloat(value) / 100;
|
|
213
|
+
}
|
|
214
|
+
return parseFloat(value);
|
|
215
|
+
}
|
|
174
216
|
function hslToRgb(h, s, l, a) {
|
|
175
217
|
let r, g, b;
|
|
176
218
|
if (s === 0) {
|
|
@@ -198,6 +240,12 @@ function hslToRgb(h, s, l, a) {
|
|
|
198
240
|
}
|
|
199
241
|
return { red: r, green: g, blue: b, alpha: a };
|
|
200
242
|
}
|
|
243
|
+
function getNormalizedColorKey(color) {
|
|
244
|
+
return formatColorAsHex(color).toLowerCase();
|
|
245
|
+
}
|
|
246
|
+
function colorsEqual(a, b) {
|
|
247
|
+
return getNormalizedColorKey(a) === getNormalizedColorKey(b);
|
|
248
|
+
}
|
|
201
249
|
function parseNamedColor(name) {
|
|
202
250
|
const colors = {
|
|
203
251
|
black: "#000000",
|
package/out/colorService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorService.js","sourceRoot":"","sources":["../src/colorService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"colorService.js","sourceRoot":"","sources":["../src/colorService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE = void 0;
|
|
4
|
+
exports.collectColorReplacementDiagnostics = collectColorReplacementDiagnostics;
|
|
5
|
+
exports.getColorReplacementCompletionItems = getColorReplacementCompletionItems;
|
|
6
|
+
exports.getColorReplacementCodeActions = getColorReplacementCodeActions;
|
|
7
|
+
const node_1 = require("vscode-languageserver/node");
|
|
8
|
+
exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE = "replace-with-css-variable";
|
|
9
|
+
function collectColorReplacementDiagnostics(document, cssVariableManager, logger) {
|
|
10
|
+
try {
|
|
11
|
+
return cssVariableManager
|
|
12
|
+
.getDocumentColorLiterals(document.uri)
|
|
13
|
+
.flatMap((literal) => {
|
|
14
|
+
if (literal.variableName) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const matches = getMatchingVariables(literal, cssVariableManager);
|
|
18
|
+
if (matches.length === 0) {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const variableNames = matches.map((match) => match.name);
|
|
22
|
+
const message = variableNames.length === 1
|
|
23
|
+
? `Literal color can be replaced with matching CSS variable '${variableNames[0]}'`
|
|
24
|
+
: `Literal color can be replaced with matching CSS variables: ${variableNames.map((n) => `'${n}'`).join(", ")}`;
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
severity: node_1.DiagnosticSeverity.Information,
|
|
28
|
+
range: literal.range,
|
|
29
|
+
message,
|
|
30
|
+
source: "css-variable-lsp",
|
|
31
|
+
code: exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE,
|
|
32
|
+
data: {
|
|
33
|
+
kind: exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE,
|
|
34
|
+
variableNames,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
logger.error("collectColorReplacementDiagnostics", { error });
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function getColorReplacementCompletionItems(document, position, cssVariableManager, displayOptions, logger) {
|
|
46
|
+
try {
|
|
47
|
+
const literal = findColorLiteralAtPosition(document, position, cssVariableManager);
|
|
48
|
+
if (!literal) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
return getMatchingVariables(literal, cssVariableManager).map((match) => createColorReplacementCompletionItem(document, literal.range, match, displayOptions));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.error("getColorReplacementCompletionItems", { error });
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function getColorReplacementCodeActions(document, diagnostics, logger) {
|
|
59
|
+
try {
|
|
60
|
+
const actions = [];
|
|
61
|
+
for (const diagnostic of diagnostics) {
|
|
62
|
+
if (diagnostic.code !== exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const data = diagnostic.data;
|
|
66
|
+
if (!isValidDiagnosticData(data)) {
|
|
67
|
+
logger.error("getColorReplacementCodeActions", { diagnostic: diagnostic.data });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const variableNames = data.variableNames;
|
|
71
|
+
for (const variableName of variableNames) {
|
|
72
|
+
actions.push({
|
|
73
|
+
title: `Replace with var(${variableName})`,
|
|
74
|
+
kind: node_1.CodeActionKind.QuickFix,
|
|
75
|
+
diagnostics: [diagnostic],
|
|
76
|
+
edit: {
|
|
77
|
+
changes: {
|
|
78
|
+
[document.uri]: [
|
|
79
|
+
node_1.TextEdit.replace(diagnostic.range, `var(${variableName})`),
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return actions;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
logger.error("getColorReplacementCodeActions", { error });
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function findColorLiteralAtPosition(document, position, cssVariableManager) {
|
|
94
|
+
const offset = document.offsetAt(position);
|
|
95
|
+
const targetLine = position.line;
|
|
96
|
+
const lineLiterals = cssVariableManager.getDocumentColorLiteralsByLine(document.uri, targetLine);
|
|
97
|
+
for (const literal of lineLiterals) {
|
|
98
|
+
const start = document.offsetAt(literal.range.start);
|
|
99
|
+
const end = document.offsetAt(literal.range.end);
|
|
100
|
+
if (!isRangeValid(literal.range) || start > end) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (offset >= start && offset <= end) {
|
|
104
|
+
return literal;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
function isValidDiagnosticData(data) {
|
|
110
|
+
if (typeof data !== "object" || data === null) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const obj = data;
|
|
114
|
+
return (obj.kind === exports.COLOR_REPLACEMENT_DIAGNOSTIC_CODE &&
|
|
115
|
+
Array.isArray(obj.variableNames) &&
|
|
116
|
+
obj.variableNames.every((v) => typeof v === "string"));
|
|
117
|
+
}
|
|
118
|
+
function isRangeValid(range) {
|
|
119
|
+
if (range.start.line < 0 || range.start.character < 0) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
if (range.end.line < 0 || range.end.character < 0) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (range.start.line > range.end.line) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if (range.start.line === range.end.line && range.start.character > range.end.character) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
function getMatchingVariables(literal, cssVariableManager) {
|
|
134
|
+
return cssVariableManager.getVariablesByColor(literal.color, {
|
|
135
|
+
excludeName: literal.variableName,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function createColorReplacementCompletionItem(document, range, match, displayOptions) {
|
|
139
|
+
return {
|
|
140
|
+
label: `var(${match.name})`,
|
|
141
|
+
kind: node_1.CompletionItemKind.Variable,
|
|
142
|
+
detail: match.value,
|
|
143
|
+
documentation: `Defined in ${displayOptions.formatLocation(match.uri)}`,
|
|
144
|
+
textEdit: node_1.TextEdit.replace(range, `var(${match.name})`),
|
|
145
|
+
filterText: `var(${match.name})`,
|
|
146
|
+
sortText: match.name,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=colorVariableFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorVariableFeature.js","sourceRoot":"","sources":["../src/colorVariableFeature.ts"],"names":[],"mappings":"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"}
|