vscode-html-languageservice
Advanced tools
Comparing version 1.0.0-next.1 to 1.0.0-next.2
@@ -123,7 +123,7 @@ (function (factory) { | ||
MultiLineStream.prototype.advanceUntilChars = function (ch) { | ||
while (this.position + ch.length < this.source.length) { | ||
for (var i = 0; i < ch.length; i++) { | ||
if (this.source.charCodeAt(this.position + i) !== ch[i]) { | ||
break; | ||
} | ||
while (this.position + ch.length <= this.source.length) { | ||
var i = 0; | ||
for (; i < ch.length && this.source.charCodeAt(this.position + i) === ch[i]; i++) { | ||
} | ||
if (i === ch.length) { | ||
return true; | ||
@@ -133,2 +133,3 @@ } | ||
} | ||
this.goToEnd(); | ||
return false; | ||
@@ -135,0 +136,0 @@ }; |
@@ -23,3 +23,3 @@ (function (factory) { | ||
]; | ||
function doComplete(document, position, doc, settings) { | ||
function doComplete(document, position, htmlDocument, settings) { | ||
var result = { | ||
@@ -31,3 +31,3 @@ isIncomplete: false, | ||
var offset = document.offsetAt(position); | ||
var node = doc.findNodeBefore(offset); | ||
var node = htmlDocument.findNodeBefore(offset); | ||
if (!node) { | ||
@@ -59,2 +59,17 @@ return result; | ||
} | ||
function getLineIndent(offset) { | ||
var text = document.getText(); | ||
var start = offset; | ||
while (start > 0) { | ||
var ch = text.charAt(start - 1); | ||
if ("\n\r".indexOf(ch) >= 0) { | ||
return text.substring(start, offset); | ||
} | ||
if (!isWhiteSpace(ch)) { | ||
return null; | ||
} | ||
start--; | ||
} | ||
return text.substring(0, offset); | ||
} | ||
function collectCloseTagSuggestions(afterOpenBracket, matchingOnly) { | ||
@@ -68,3 +83,3 @@ var range = getReplaceRange(afterOpenBracket); | ||
if (tag && !curr.closed) { | ||
result.items.push({ | ||
var item = { | ||
label: '/' + tag, | ||
@@ -74,3 +89,10 @@ kind: 10 /* Property */, | ||
textEdit: { newText: '/' + tag + closeTag, range: range } | ||
}); | ||
}; | ||
var startIndent = getLineIndent(curr.start); | ||
var endIndent = getLineIndent(afterOpenBracket - 1); | ||
if (startIndent !== null && endIndent !== null && startIndent !== endIndent) { | ||
item.textEdit = { newText: startIndent + '</' + tag + closeTag, range: getReplaceRange(afterOpenBracket - 1 - endIndent.length) }; | ||
item.filterText = endIndent + '</' + tag + closeTag; | ||
} | ||
result.items.push(item); | ||
return result; | ||
@@ -164,3 +186,2 @@ } | ||
case htmlScanner_1.TokenType.Whitespace: | ||
case htmlScanner_1.TokenType.Unknown: | ||
if (offset <= scanner.getTokenEnd()) { | ||
@@ -201,2 +222,7 @@ switch (scanner.getScannerState()) { | ||
break; | ||
default: | ||
if (offset <= scanner.getTokenEnd()) { | ||
return result; | ||
} | ||
break; | ||
} | ||
@@ -203,0 +229,0 @@ token = scanner.scan(); |
{ | ||
"name": "vscode-html-languageservice", | ||
"version": "1.0.0-next.1", | ||
"version": "1.0.0-next.2", | ||
"description": "Language service for HTML", | ||
@@ -5,0 +5,0 @@ "main": "./lib/htmlLanguageService.js", |
Sorry, the diff of this file is not supported yet
277889
27
4541