Skip to content

Commit 1ef9c7a

Browse files
committed
Use nextTick
1 parent d59f8c7 commit 1ef9c7a

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
All notable changes to the extension will be documented in this file.
44

5+
## [1.6.4] -
6+
7+
- Use nextTick()
8+
59
## [1.6.3] - 2021-01-07
610

711
- Added Handlebars inheritance (https://jknack.github.io/handlebars.java/reuse.html).

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-html-css",
33
"displayName": "HTML CSS Support",
44
"description": "CSS Intellisense for HTML",
5-
"version": "1.6.3",
5+
"version": "1.6.4",
66
"publisher": "ecmel",
77
"license": "MIT",
88
"homepage": "https://github.com/ecmel/vscode-html-css",

src/completion.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import fetch from "node-fetch";
2+
import { nextTick } from "process";
23
import { parse, walk } from "css-tree";
34
import { basename, dirname, extname, isAbsolute, join } from "path";
45
import {
@@ -25,20 +26,20 @@ export type Validation = {
2526
class: boolean
2627
};
2728

28-
export type Selectors = {
29+
export type Selector = {
2930
ids: Map<string, CompletionItem>,
30-
idRanges: Range[],
3131
classes: Map<string, CompletionItem>,
32-
classRanges: Range[]
32+
rangesId: Range[],
33+
rangesClass: Range[]
3334
};
3435

3536
export class SelectorCompletionItemProvider implements CompletionItemProvider, Disposable {
3637

3738
readonly start = new Position(0, 0);
3839
readonly cache = new Map<string, Map<string, CompletionItem>>();
3940
readonly watchers = new Map<string, Disposable>();
40-
readonly selectors = new Map<string, Selectors>();
41-
readonly collection = languages.createDiagnosticCollection();
41+
readonly selectors = new Map<string, Selector>();
42+
readonly warnings = languages.createDiagnosticCollection();
4243
readonly isRemote = /^https?:\/\//i;
4344
readonly findLinkRel = /rel\s*=\s*("|')((?:(?!\1).)+)\1/si;
4445
readonly findLinkHref = /href\s*=\s*("|')((?:(?!\1).)+)\1/si;
@@ -49,7 +50,7 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
4950
this.cache.clear();
5051
this.watchers.clear();
5152
this.selectors.clear();
52-
this.collection.dispose();
53+
this.warnings.dispose();
5354
}
5455

5556
watchFile(uri: Uri, listener: (e: Uri) => any) {
@@ -225,8 +226,8 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
225226

226227
const ids = new Map<string, CompletionItem>();
227228
const classes = new Map<string, CompletionItem>();
228-
const idRanges: Range[] = [];
229-
const classRanges: Range[] = [];
229+
const rangesId: Range[] = [];
230+
const rangesClass: Range[] = [];
230231

231232
keys.forEach(key => this.cache.get(key)?.forEach((v, k) =>
232233
(v.kind === CompletionItemKind.Value ? ids : classes).set(k, v)));
@@ -242,7 +243,7 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
242243
- attribute[3].length
243244
+ attribute[3].indexOf(attribute[2]);
244245

245-
(attribute[1] === "id" ? idRanges : classRanges).push(new Range(
246+
(attribute[1] === "id" ? rangesId : rangesClass).push(new Range(
246247
document.positionAt(offset),
247248
document.positionAt(findAttribute.lastIndex - 1)));
248249

@@ -271,8 +272,8 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
271272
}
272273
}
273274

274-
this.collection.set(uri, diagnostics);
275-
this.selectors.set(uri.toString(), { ids, idRanges, classes, classRanges });
275+
this.warnings.set(uri, diagnostics);
276+
this.selectors.set(uri.toString(), { ids, classes, rangesId, rangesClass });
276277
}
277278

278279
provideCompletionItems(
@@ -282,7 +283,7 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
282283
context: CompletionContext)
283284
: ProviderResult<CompletionItem[] | CompletionList<CompletionItem>> {
284285

285-
return new Promise((resolve, reject) => {
286+
return new Promise((resolve, reject) => nextTick(() => {
286287
if (token.isCancellationRequested) {
287288
reject();
288289
return;
@@ -291,14 +292,14 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
291292
const selector = this.selectors.get(document.uri.toString());
292293

293294
if (selector) {
294-
for (const range of selector.classRanges) {
295+
for (const range of selector.rangesClass) {
295296
if (range.contains(position)) {
296297
resolve([...selector.classes.values()]);
297298
return;
298299
}
299300
}
300301

301-
for (const range of selector.idRanges) {
302+
for (const range of selector.rangesId) {
302303
if (range.contains(position)) {
303304
resolve([...selector.ids.values()]);
304305
return;
@@ -307,6 +308,6 @@ export class SelectorCompletionItemProvider implements CompletionItemProvider, D
307308
}
308309

309310
reject();
310-
});
311+
}));
311312
}
312313
}

0 commit comments

Comments
 (0)