Skip to content

Commit 21bba84

Browse files
committed
Refactor to reuse span as much as possible
1 parent 7140762 commit 21bba84

File tree

6 files changed

+150
-118
lines changed

6 files changed

+150
-118
lines changed

pkgs/sass_language_services/lib/src/features/document_links/document_link_visitor.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,16 @@ class DocumentLinkVisitor with sass.RecursiveStatementVisitor {
9797
}
9898

9999
const isSassLink = false;
100+
var urlSpan = staticImport.url.span;
100101
unresolvedLinks.add((
101102
StylesheetDocumentLink(
102103
type: LinkType.import,
103104
target: target,
104105
range: lsp.Range(
105106
end: lsp.Position(
106-
line: staticImport.url.span.end.line,
107-
character: staticImport.url.span.end.column),
107+
line: urlSpan.end.line, character: urlSpan.end.column),
108108
start: lsp.Position(
109-
line: staticImport.url.span.start.line,
110-
character: staticImport.url.span.start.column),
109+
line: urlSpan.start.line, character: urlSpan.start.column),
111110
),
112111
),
113112
isSassLink

pkgs/sass_language_services/lib/src/features/document_symbols/document_symbols_visitor.dart

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -105,30 +105,33 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
105105
}
106106

107107
if (node.name.asPlain == 'font-face') {
108+
var nameSpan = node.name.span;
108109
_collect(
109-
name: node.name.span.text,
110+
name: nameSpan.text,
110111
referenceKind: ReferenceKind.fontFace,
111112
symbolRange: toRange(node.span),
112-
nameRange: toRange(node.name.span),
113+
nameRange: toRange(nameSpan),
113114
);
114115
} else if (node.name.asPlain!.startsWith('keyframes')) {
115-
var keyframesName = node.span.context.split(' ').elementAtOrNull(1);
116+
var span = node.span;
117+
var nameSpan = node.name.span;
118+
var keyframesName = span.context.split(' ').elementAtOrNull(1);
116119
if (keyframesName != null) {
117120
var keyframesNameRange = lsp.Range(
118121
start: lsp.Position(
119-
line: node.name.span.start.line,
120-
character: node.name.span.end.column + 1,
122+
line: nameSpan.start.line,
123+
character: nameSpan.end.column + 1,
121124
),
122125
end: lsp.Position(
123-
line: node.name.span.end.line,
124-
character: node.name.span.end.column + 1 + keyframesName.length,
126+
line: nameSpan.end.line,
127+
character: nameSpan.end.column + 1 + keyframesName.length,
125128
),
126129
);
127130

128131
_collect(
129132
name: keyframesName,
130133
referenceKind: ReferenceKind.keyframe,
131-
symbolRange: toRange(node.span),
134+
symbolRange: toRange(span),
132135
nameRange: keyframesNameRange,
133136
);
134137
}
@@ -141,11 +144,12 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
141144
var isCustomProperty =
142145
node.name.isPlain && node.name.asPlain!.startsWith("--");
143146
if (isCustomProperty) {
147+
var nameSpan = node.name.span;
144148
_collect(
145-
name: node.name.span.text,
149+
name: nameSpan.text,
146150
referenceKind: ReferenceKind.customProperty,
147151
symbolRange: toRange(node.span),
148-
nameRange: toRange(node.name.span),
152+
nameRange: toRange(nameSpan),
149153
);
150154
}
151155
}
@@ -172,14 +176,15 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
172176
}
173177

174178
// node.query.span includes whitespace, so the range doesn't match node.query.asPlain
179+
var querySpan = node.query.span;
175180
var nameRange = lsp.Range(
176181
start: lsp.Position(
177-
line: node.query.span.start.line,
178-
character: node.query.span.start.column,
182+
line: querySpan.start.line,
183+
character: querySpan.start.column,
179184
),
180185
end: lsp.Position(
181-
line: node.query.span.end.line,
182-
character: node.query.span.start.column + node.query.asPlain!.length,
186+
line: querySpan.end.line,
187+
character: querySpan.start.column + node.query.asPlain!.length,
183188
),
184189
);
185190

@@ -222,16 +227,17 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
222227
lsp.Range? symbolRange;
223228

224229
for (var component in complexSelector.components) {
225-
var selector = component.selector;
230+
var selectorSpan = component.selector.span;
231+
var span = node.span;
226232

227233
if (name == null) {
228-
name = selector.span.text;
234+
name = selectorSpan.text;
229235
} else {
230-
name = '$name ${selector.span.text}';
236+
name = '$name ${selectorSpan.text}';
231237
}
232238

233239
if (nameRange == null) {
234-
nameRange = selectorNameRange(node, selector);
240+
nameRange = selectorNameRange(node: span, selector: selectorSpan);
235241

236242
// symbolRange: start position of selector's nameRange, end of stylerule (node.span.end).
237243
symbolRange = lsp.Range(
@@ -240,17 +246,17 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
240246
character: nameRange.start.character,
241247
),
242248
end: lsp.Position(
243-
line: node.span.end.line,
244-
character: node.span.end.column,
249+
line: span.end.line,
250+
character: span.end.column,
245251
),
246252
);
247253
} else {
248254
// Move the end of the name range down to include this selector component
249255
nameRange = lsp.Range(
250256
start: nameRange.start,
251257
end: lsp.Position(
252-
line: node.span.start.line + selector.span.end.line,
253-
character: node.span.start.column + selector.span.end.column,
258+
line: span.start.line + selectorSpan.end.line,
259+
character: span.start.column + selectorSpan.end.column,
254260
),
255261
);
256262
}
@@ -271,20 +277,21 @@ class DocumentSymbolsVisitor with sass.RecursiveStatementVisitor {
271277
@override
272278
void visitVariableDeclaration(node) {
273279
super.visitVariableDeclaration(node);
280+
var nameSpan = node.nameSpan;
274281
_collect(
275-
name: node.nameSpan.text,
282+
name: nameSpan.text,
276283
referenceKind: ReferenceKind.variable,
277284
docComment: node.comment?.docComment,
278285
symbolRange: toRange(node.span),
279286
nameRange: lsp.Range(
280287
start: lsp.Position(
281-
line: node.nameSpan.start.line,
288+
line: nameSpan.start.line,
282289
// the span includes $
283-
character: node.nameSpan.start.column,
290+
character: nameSpan.start.column,
284291
),
285292
end: lsp.Position(
286-
line: node.nameSpan.end.line,
287-
character: node.nameSpan.end.column,
293+
line: nameSpan.end.line,
294+
character: nameSpan.end.column,
288295
),
289296
),
290297
);

pkgs/sass_language_services/lib/src/features/find_references/find_references_visitor.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,13 +308,16 @@ class FindReferencesVisitor
308308
}
309309

310310
var component = complexSelector.components.first;
311-
var selector = component.selector;
312-
var name = selector.span.text;
311+
var selectorSpan = component.selector.span;
312+
var name = selectorSpan.text;
313313
if (!name.contains(_name)) {
314314
continue;
315315
}
316316

317-
var nameRange = selectorNameRange(node, selector);
317+
var nameRange = selectorNameRange(
318+
node: node.span,
319+
selector: selectorSpan,
320+
);
318321

319322
candidates.add(
320323
Reference(

0 commit comments

Comments
 (0)