Skip to content

Commit 0c246ba

Browse files
Ecmel ErcanEcmel Ercan
authored andcommitted
Update
1 parent cdcb670 commit 0c246ba

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
"dependencies": {
4747
"vscode-languageclient": "2.3.0",
4848
"vscode-languageserver": "2.2.1",
49-
"vscode-css-languageservice": "1.0.4"
49+
"vscode-languageserver-types": "1.0.1",
50+
"vscode-css-languageservice": "1.0.4",
51+
"htmlparser2": "3.9.1"
5052
}
5153
}

srv/server.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import * as ls from 'vscode-languageserver';
66
import * as css from 'vscode-css-languageservice';
77

8+
let html = require("htmlparser2");
9+
810
let conn = ls.createConnection(new ls.IPCMessageReader(process), new ls.IPCMessageWriter(process));
911
let docs = new ls.TextDocuments();
1012

@@ -19,7 +21,31 @@ conn.onInitialize((params): ls.InitializeResult => {
1921
});
2022

2123
docs.onDidChangeContent((change) => {
24+
let doc = change.document;
25+
26+
let found = false;
27+
let parser = new html.Parser({
28+
onopentag: function (name, attribs) {
29+
if (name === "style") {
30+
found = true;
31+
}
32+
},
33+
ontext: function (text) {
34+
if (found) {
35+
let start = doc.positionAt(parser.startIndex);
36+
let end = doc.positionAt(parser.endIndex + 1);
37+
let range = ls.Range.create(start, end);
38+
console.log(range);
39+
}
40+
},
41+
onclosetag: function (tagname) {
42+
if (tagname === "style") {
43+
found = false;
44+
}
45+
}
46+
}, { decodeEntities: true });
2247

48+
parser.parseComplete(change.document.getText());
2349
});
2450

2551
conn.listen();

0 commit comments

Comments
 (0)