diff --git a/extensions/html/server/src/htmlServerMain.ts b/extensions/html/server/src/htmlServerMain.ts index 8081a5ee302..6687ddad854 100644 --- a/extensions/html/server/src/htmlServerMain.ts +++ b/extensions/html/server/src/htmlServerMain.ts @@ -23,7 +23,7 @@ import * as nls from 'vscode-nls'; nls.config(process.env['VSCODE_NLS_CONFIG']); namespace TagCloseRequest { - export const type: RequestType = new RequestType('html/tag'); + export const type: RequestType = new RequestType('html/tag'); } // Create a connection for the server diff --git a/extensions/html/server/src/languageModelCache.ts b/extensions/html/server/src/languageModelCache.ts index b12f77b52a6..7496244c3bb 100644 --- a/extensions/html/server/src/languageModelCache.ts +++ b/extensions/html/server/src/languageModelCache.ts @@ -16,7 +16,7 @@ export function getLanguageModelCache(maxEntries: number, cleanupIntervalTime let languageModels: { [uri: string]: { version: number, languageId: string, cTime: number, languageModel: T } } = {}; let nModels = 0; - let cleanupInterval = void 0; + let cleanupInterval: NodeJS.Timer | undefined = void 0; if (cleanupIntervalTimeInSec > 0) { cleanupInterval = setInterval(() => { let cutoffTime = Date.now() - cleanupIntervalTimeInSec * 1000; diff --git a/extensions/html/server/src/modes/cssMode.ts b/extensions/html/server/src/modes/cssMode.ts index f787b9c2742..79565426a32 100644 --- a/extensions/html/server/src/modes/cssMode.ts +++ b/extensions/html/server/src/modes/cssMode.ts @@ -23,7 +23,7 @@ export function getCSSMode(documentRegions: LanguageModelCache range.mode && range.mode.getId() === 'html'; + + while (i < allRanges.length && !isHTML(allRanges[i])) { let range = allRanges[i]; - if (!range.attributeValue && range.mode.format) { + if (!range.attributeValue && range.mode && range.mode.format) { let edits = range.mode.format(document, Range.create(startPos, range.end), formattingOptions, settings); pushAll(result, edits); } diff --git a/extensions/html/server/src/modes/htmlMode.ts b/extensions/html/server/src/modes/htmlMode.ts index e45aea8bc11..c0146423d67 100644 --- a/extensions/html/server/src/modes/htmlMode.ts +++ b/extensions/html/server/src/modes/htmlMode.ts @@ -60,6 +60,7 @@ export function getHTMLMode(htmlLanguageService: HTMLLanguageService): LanguageM if (offset > 0 && text.charAt(offset - 1).match(/[>\/]/g)) { return htmlLanguageService.doTagComplete(document, position, htmlDocuments.get(document)); } + return null; }, onDocumentRemoved(document: TextDocument) { htmlDocuments.onDocumentRemoved(document); diff --git a/extensions/html/server/src/modes/languageModes.ts b/extensions/html/server/src/modes/languageModes.ts index e4d420bf1f6..d1a461a1648 100644 --- a/extensions/html/server/src/modes/languageModes.ts +++ b/extensions/html/server/src/modes/languageModes.ts @@ -43,7 +43,7 @@ export interface LanguageMode { findDocumentLinks?: (document: TextDocument, documentContext: DocumentContext) => DocumentLink[]; findDefinition?: (document: TextDocument, position: Position) => Definition | null; findReferences?: (document: TextDocument, position: Position) => Location[]; - format?: (document: TextDocument, range: Range, options: FormattingOptions, settings: Settings) => TextEdit[]; + format?: (document: TextDocument, range: Range, options: FormattingOptions, settings?: Settings) => TextEdit[]; findDocumentColors?: (document: TextDocument) => ColorInformation[]; getColorPresentations?: (document: TextDocument, color: Color, range: Range) => ColorPresentation[]; doAutoClose?: (document: TextDocument, position: Position) => string | null; @@ -62,7 +62,7 @@ export interface LanguageModes { } export interface LanguageModeRange extends Range { - mode: LanguageMode; + mode: LanguageMode | undefined; attributeValue?: boolean; } @@ -92,10 +92,10 @@ export function getLanguageModes(supportedLanguages: { [languageId: string]: boo }, getModesInRange(document: TextDocument, range: Range): LanguageModeRange[] { return documentRegions.get(document).getLanguageRanges(range).map(r => { - return { + return { start: r.start, end: r.end, - mode: modes[r.languageId], + mode: r.languageId && modes[r.languageId], attributeValue: r.attributeValue }; });