in src/language/providers/utils.ts [296:345]
export function checkMultiLineTag(
document: vscode.TextDocument,
position: vscode.Position,
itemsOnLine: number,
nsPrefix: string,
tagPos: number,
tagLine: number,
tag: string
) {
if (itemsOnLine > 1) {
return false
}
let currentLine = position.line
const origText = document.lineAt(currentLine).text
let currentText = origText
//the current line doesn't have the self close symbol
if (!currentText.endsWith('/>')) {
while (currentText.trim() === '' || !currentText.includes('<')) {
--currentLine
currentText = document.lineAt(currentLine).text
}
if (
currentText.indexOf('<' + nsPrefix + tag) !== -1 &&
currentText.indexOf('>') === -1 &&
currentText.indexOf('<' + nsPrefix + tag) &&
currentLine <= position.line &&
(origText.indexOf('>') > position.character ||
origText.indexOf('>') === -1)
) {
return true
}
}
if (currentText.endsWith('/>')) {
let triggerPos = position.character
let tagEndPos = currentText.indexOf('/>')
let triggerLine = position.line
if (
(triggerLine === currentLine && triggerPos < tagEndPos) ||
(triggerLine === tagLine && triggerPos > tagPos && tagPos !== -1) ||
triggerLine < currentLine
) {
return true
}
}
return false
}