diff --git a/extensions/emmet/src/defaultCompletionProvider.ts b/extensions/emmet/src/defaultCompletionProvider.ts index 54aa40999d1..fb60c7124cc 100644 --- a/extensions/emmet/src/defaultCompletionProvider.ts +++ b/extensions/emmet/src/defaultCompletionProvider.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { Node } from 'EmmetNode'; +import { Node, Stylesheet } from 'EmmetNode'; import { isValidLocationForEmmetAbbreviation } from './abbreviationActions'; import { getEmmetHelper, getNode, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, parseDocument } from './util'; @@ -40,8 +40,8 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi validateLocation = syntax === 'html' || isStyleSheet(document.languageId); // If document can be css parsed, get currentNode if (isStyleSheet(document.languageId)) { - const rootNode = document.lineCount > 1000 ? parsePartialStylesheet(document, position) : parseDocument(document, false); - if (!rootNode) { + const rootNode = document.lineCount > 1000 ? parsePartialStylesheet(document, position) : parseDocument(document, false); + if (!rootNode || (rootNode.comments || []).some(x => position.isAfterOrEqual(x.start) && position.isBeforeOrEqual(x.end))) { return; } diff --git a/extensions/emmet/src/util.ts b/extensions/emmet/src/util.ts index 4fed8eb00d2..8dd1d2d21f5 100644 --- a/extensions/emmet/src/util.ts +++ b/extensions/emmet/src/util.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import parse from '@emmetio/html-matcher'; import parseStylesheet from '@emmetio/css-parser'; -import { Node, HtmlNode, CssToken, Property, Rule } from 'EmmetNode'; +import { Node, HtmlNode, CssToken, Property, Rule, Stylesheet } from 'EmmetNode'; import { DocumentStreamReader } from './bufferStream'; let _emmetHelper: any; @@ -128,7 +128,7 @@ export function parseDocument(document: vscode.TextDocument, showError: boolean return undefined; } -export function parsePartialStylesheet(document: vscode.TextDocument, position: vscode.Position): Node | undefined { +export function parsePartialStylesheet(document: vscode.TextDocument, position: vscode.Position): Stylesheet | undefined { let startPosition = new vscode.Position(0, 0); let endPosition = new vscode.Position(document.lineCount - 1, document.lineAt(document.lineCount - 1).text.length);