From dceba9ebb78e4c3a5be2bea0ca5f23dde7a21b75 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 30 Nov 2020 23:25:42 +0100 Subject: [PATCH] [css][html] Option to disable MDN Reference popups only (without effecting other functionalities). For #97979 --- extensions/html-language-features/package.json | 12 ++++++++++++ .../html-language-features/package.nls.json | 4 +++- .../html-language-features/server/package.json | 4 ++-- .../server/src/htmlServer.ts | 8 +++++--- .../server/src/modes/htmlMode.ts | 6 +++--- .../server/src/modes/languageModes.ts | 2 +- .../html-language-features/server/yarn.lock | 16 ++++++++-------- 7 files changed, 34 insertions(+), 18 deletions(-) diff --git a/extensions/html-language-features/package.json b/extensions/html-language-features/package.json index 472309a94fc..a73f9746491 100644 --- a/extensions/html-language-features/package.json +++ b/extensions/html-language-features/package.json @@ -187,6 +187,18 @@ "default": true, "description": "%html.autoClosingTags%" }, + "html.hover.documentation": { + "type": "boolean", + "scope": "resource", + "default": true, + "description": "%html.hover.documentation%" + }, + "html.hover.references": { + "type": "boolean", + "scope": "resource", + "default": true, + "description": "%html.hover.references%" + }, "html.mirrorCursorOnMatchingTag": { "type": "boolean", "scope": "resource", diff --git a/extensions/html-language-features/package.nls.json b/extensions/html-language-features/package.nls.json index ddcb5f75048..49c63209140 100644 --- a/extensions/html-language-features/package.nls.json +++ b/extensions/html-language-features/package.nls.json @@ -29,5 +29,7 @@ "html.validate.styles": "Controls whether the built-in HTML language support validates embedded styles.", "html.autoClosingTags": "Enable/disable autoclosing of HTML tags.", "html.mirrorCursorOnMatchingTag": "Enable/disable mirroring cursor on matching HTML tag.", - "html.mirrorCursorOnMatchingTagDeprecationMessage": "Deprecated in favor of `editor.linkedEditing`" + "html.mirrorCursorOnMatchingTagDeprecationMessage": "Deprecated in favor of `editor.linkedEditing`", + "html.hover.documentation": "Show tag and attribute documentation in hover.", + "html.hover.references": "Show references to MDN in hover." } diff --git a/extensions/html-language-features/server/package.json b/extensions/html-language-features/server/package.json index 7f765a10098..7840c0ad971 100644 --- a/extensions/html-language-features/server/package.json +++ b/extensions/html-language-features/server/package.json @@ -9,8 +9,8 @@ }, "main": "./out/node/htmlServerMain", "dependencies": { - "vscode-css-languageservice": "^4.3.5", - "vscode-html-languageservice": "^3.1.5", + "vscode-css-languageservice": "^4.3.6", + "vscode-html-languageservice": "^3.2.0", "vscode-languageserver": "7.0.0-next.3", "vscode-nls": "^5.0.0", "vscode-uri": "^2.1.2" diff --git a/extensions/html-language-features/server/src/htmlServer.ts b/extensions/html-language-features/server/src/htmlServer.ts index 7a900fff4f2..7b76a857738 100644 --- a/extensions/html-language-features/server/src/htmlServer.ts +++ b/extensions/html-language-features/server/src/htmlServer.ts @@ -284,7 +284,7 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment) if (!mode || !mode.doComplete) { return { isIncomplete: true, items: [] }; } - const doComplete = mode.doComplete!; + const doComplete = mode.doComplete; if (mode.getId() !== 'html') { /* __GDPR__ @@ -321,8 +321,10 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment) const document = documents.get(textDocumentPosition.textDocument.uri); if (document) { const mode = languageModes.getModeAtPosition(document, textDocumentPosition.position); - if (mode && mode.doHover) { - return mode.doHover(document, textDocumentPosition.position); + const doHover = mode?.doHover; + if (doHover) { + const settings = await getDocumentSettings(document, () => doHover.length > 2); + return doHover(document, textDocumentPosition.position, settings); } } return null; diff --git a/extensions/html-language-features/server/src/modes/htmlMode.ts b/extensions/html-language-features/server/src/modes/htmlMode.ts index 7723717f763..5f1df121c5c 100644 --- a/extensions/html-language-features/server/src/modes/htmlMode.ts +++ b/extensions/html-language-features/server/src/modes/htmlMode.ts @@ -8,7 +8,7 @@ import { LanguageService as HTMLLanguageService, HTMLDocument, DocumentContext, FormattingOptions, HTMLFormatConfiguration, SelectionRange, TextDocument, Position, Range, FoldingRange, - LanguageMode, Workspace + LanguageMode, Workspace, Settings } from './languageModes'; export function getHTMLMode(htmlLanguageService: HTMLLanguageService, workspace: Workspace): LanguageMode { @@ -31,8 +31,8 @@ export function getHTMLMode(htmlLanguageService: HTMLLanguageService, workspace: let completionList = htmlLanguageService.doComplete2(document, position, htmlDocument, documentContext, options); return completionList; }, - async doHover(document: TextDocument, position: Position) { - return htmlLanguageService.doHover(document, position, htmlDocuments.get(document)); + async doHover(document: TextDocument, position: Position, settings?: Settings) { + return htmlLanguageService.doHover(document, position, htmlDocuments.get(document), settings?.html?.hover); }, async findDocumentHighlight(document: TextDocument, position: Position) { return htmlLanguageService.findDocumentHighlights(document, position, htmlDocuments.get(document)); diff --git a/extensions/html-language-features/server/src/modes/languageModes.ts b/extensions/html-language-features/server/src/modes/languageModes.ts index 3a926197eaa..d9b7d485224 100644 --- a/extensions/html-language-features/server/src/modes/languageModes.ts +++ b/extensions/html-language-features/server/src/modes/languageModes.ts @@ -45,7 +45,7 @@ export interface LanguageMode { doValidation?: (document: TextDocument, settings?: Settings) => Promise; doComplete?: (document: TextDocument, position: Position, documentContext: DocumentContext, settings?: Settings) => Promise; doResolve?: (document: TextDocument, item: CompletionItem) => Promise; - doHover?: (document: TextDocument, position: Position) => Promise; + doHover?: (document: TextDocument, position: Position, settings?: Settings) => Promise; doSignatureHelp?: (document: TextDocument, position: Position) => Promise; doRename?: (document: TextDocument, position: Position, newName: string) => Promise; doLinkedEditing?: (document: TextDocument, position: Position) => Promise; diff --git a/extensions/html-language-features/server/yarn.lock b/extensions/html-language-features/server/yarn.lock index a08879b66f7..4402b451ad9 100644 --- a/extensions/html-language-features/server/yarn.lock +++ b/extensions/html-language-features/server/yarn.lock @@ -880,20 +880,20 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -vscode-css-languageservice@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.5.tgz#92f8817057dee7c381df2289aad539c7b553548a" - integrity sha512-g9Pjxt9T32jhY0nTOo7WRFm0As27IfdaAxcFa8c7Rml1ZqBn3XXbkExjzxY7sBWYm7I1Tp4dK6UHXHoUQHGwig== +vscode-css-languageservice@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.6.tgz#0e37c2d47724f895f36e1aad7e0a8f121591b22f" + integrity sha512-0xjY6ocBqDPbjHRqahWWE+AFtBb1LgO0PN9L2M0fY5IcsU2Eo/V2f/zrntIekXIYQl4cHS0XRkL7ZXSO6s19oA== dependencies: vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "3.16.0-next.2" vscode-nls "^5.0.0" vscode-uri "^2.1.2" -vscode-html-languageservice@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.1.5.tgz#80e8c4f90befc0941265942603c74c5c81dcee58" - integrity sha512-+1Ofik//yQLeot8foOCMoM4IX0+mpSEEooO8HZyUkOPJbvMlBbEQ/3+39EOFpXSoSE1wCmuaffkMRI2NqgoPfA== +vscode-html-languageservice@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.2.0.tgz#e92269a04097d87bd23431e3a4e491a27b5447b9" + integrity sha512-aLWIoWkvb5HYTVE0kI9/u3P0ZAJGrYOSAAE6L0wqB9radKRtbJNrF9+BjSUFyCgBdNBE/GFExo35LoknQDJrfw== dependencies: vscode-languageserver-textdocument "^1.0.1" vscode-languageserver-types "3.16.0-next.2"