From 1b4886dda92f1b84512a63425b33bf8b74482bb5 Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Fri, 30 Mar 2018 11:24:54 -0700 Subject: [PATCH] Adding setting for disabling partial parsing in stylesheets (#46979) * Adding setting for disabling partial parsing in stylesheets * Added description --- extensions/emmet/package.json | 5 +++++ extensions/emmet/package.nls.json | 3 ++- extensions/emmet/src/abbreviationActions.ts | 3 ++- extensions/emmet/src/defaultCompletionProvider.ts | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index 26c3a58b43a..5f85690927a 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -211,6 +211,11 @@ "type": "boolean", "default": false, "description": "%emmetShowSuggestionsAsSnippets%" + }, + "emmet.optimizeStylesheetParsing": { + "type": "boolean", + "default": true, + "description": "%emmetOptimizeStylesheetParsing%" } } }, diff --git a/extensions/emmet/package.nls.json b/extensions/emmet/package.nls.json index 36a62bd2694..69c7b30cdaa 100644 --- a/extensions/emmet/package.nls.json +++ b/extensions/emmet/package.nls.json @@ -53,5 +53,6 @@ "emmetPreferencesCssMozProperties": "Comma separated CSS properties that get the 'moz' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'moz' prefix.", "emmetPreferencesCssOProperties": "Comma separated CSS properties that get the 'o' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'o' prefix.", "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix.", - "emmetPreferencesCssFuzzySearchMinScore": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches." + "emmetPreferencesCssFuzzySearchMinScore": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches.", + "emmetOptimizeStylesheetParsing": "When set to false, the whole file is parsed to determine if current position is valid for expanding Emmet abbreviations. When set to true, only the content around the current position in css/scss/less files is parsed." } diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts index 9e50cc06cde..ad5934c6c99 100644 --- a/extensions/emmet/src/abbreviationActions.ts +++ b/extensions/emmet/src/abbreviationActions.ts @@ -228,7 +228,8 @@ export function expandEmmetAbbreviation(args: any): Thenable 1000) { + let usePartialParsing = vscode.workspace.getConfiguration('emmet')['optimizeStylesheetParsing'] === true; + if (editor.selections.length === 1 && isStyleSheet(editor.document.languageId) && usePartialParsing && editor.document.lineCount > 1000) { rootNode = parsePartialStylesheet(editor.document, editor.selection.isReversed ? editor.selection.anchor : editor.selection.active); } else { rootNode = parseDocument(editor.document, false); diff --git a/extensions/emmet/src/defaultCompletionProvider.ts b/extensions/emmet/src/defaultCompletionProvider.ts index 962171ba6b1..fd48a233324 100644 --- a/extensions/emmet/src/defaultCompletionProvider.ts +++ b/extensions/emmet/src/defaultCompletionProvider.ts @@ -40,7 +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)) { - rootNode = document.lineCount > 1000 ? parsePartialStylesheet(document, position) : parseDocument(document, false); + let usePartialParsing = vscode.workspace.getConfiguration('emmet')['optimizeStylesheetParsing'] === true; + rootNode = usePartialParsing && document.lineCount > 1000 ? parsePartialStylesheet(document, position) : parseDocument(document, false); if (!rootNode) { return; } -- GitLab