From 9353e9c0bcfe2b2b4e88f287edaa6085dbd93d91 Mon Sep 17 00:00:00 2001 From: "SNDST00M: M.U.N.I.N" <82655227+SNDST00M@users.noreply.github.com> Date: Mon, 23 Aug 2021 18:14:16 +0100 Subject: [PATCH 1/3] Add strikethrough fontStyle (closes microsoft/vscode#78358) Refs: microsoft/vscode#43504 --- src/vs/editor/common/model/tokensStore.ts | 1 + src/vs/editor/common/modes.ts | 11 +++++++++- .../common/modes/supports/tokenization.ts | 4 ++++ .../services/semanticTokensProviderStyling.ts | 4 ++++ .../browser/inspectTokens/inspectTokens.ts | 3 +++ .../standalone/browser/standaloneLanguages.ts | 2 +- .../browser/standaloneThemeServiceImpl.ts | 3 ++- src/vs/platform/theme/common/themeService.ts | 1 + .../common/tokenClassificationRegistry.ts | 22 +++++++++++++------ .../inspectEditorTokens.ts | 5 ++++- .../services/textMate/common/TMHelper.ts | 2 +- .../services/themes/common/colorThemeData.ts | 6 +++-- .../themes/common/colorThemeSchema.ts | 9 ++++---- .../themes/common/workbenchThemeService.ts | 5 +++-- 14 files changed, 57 insertions(+), 21 deletions(-) diff --git a/src/vs/editor/common/model/tokensStore.ts b/src/vs/editor/common/model/tokensStore.ts index bbec0e3695928..7ada73c780ea7 100644 --- a/src/vs/editor/common/model/tokensStore.ts +++ b/src/vs/editor/common/model/tokensStore.ts @@ -1016,6 +1016,7 @@ export class TokensStore2 { ((bMetadata & MetadataConsts.SEMANTIC_USE_ITALIC) ? MetadataConsts.ITALIC_MASK : 0) | ((bMetadata & MetadataConsts.SEMANTIC_USE_BOLD) ? MetadataConsts.BOLD_MASK : 0) | ((bMetadata & MetadataConsts.SEMANTIC_USE_UNDERLINE) ? MetadataConsts.UNDERLINE_MASK : 0) + | ((bMetadata & MetadataConsts.SEMANTIC_USE_STRIKETHROUGH) ? MetadataConsts.STRIKETHROUGH_MASK : 0) | ((bMetadata & MetadataConsts.SEMANTIC_USE_FOREGROUND) ? MetadataConsts.FOREGROUND_MASK : 0) | ((bMetadata & MetadataConsts.SEMANTIC_USE_BACKGROUND) ? MetadataConsts.BACKGROUND_MASK : 0) ) >>> 0; diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index e2abc3de9bc3e..7441d47989130 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -72,7 +72,8 @@ export const enum FontStyle { None = 0, Italic = 1, Bold = 2, - Underline = 4 + Underline = 4, + Strikethrough = 5 } /** @@ -128,12 +129,14 @@ export const enum MetadataConsts { ITALIC_MASK = 0b00000000000000000000100000000000, BOLD_MASK = 0b00000000000000000001000000000000, UNDERLINE_MASK = 0b00000000000000000010000000000000, + STRIKETHROUGH_MASK = 0b00000000000000000100000000000000, SEMANTIC_USE_ITALIC = 0b00000000000000000000000000000001, SEMANTIC_USE_BOLD = 0b00000000000000000000000000000010, SEMANTIC_USE_UNDERLINE = 0b00000000000000000000000000000100, SEMANTIC_USE_FOREGROUND = 0b00000000000000000000000000001000, SEMANTIC_USE_BACKGROUND = 0b00000000000000000000000000010000, + SEMANTIC_USE_STRIKETHROUGH = 0b00000000000000000000000000100000, LANGUAGEID_OFFSET = 0, TOKEN_TYPE_OFFSET = 8, @@ -181,6 +184,9 @@ export class TokenMetadata { if (fontStyle & FontStyle.Underline) { className += ' mtku'; } + if (fontStyle & FontStyle.Strikethrough) { + className += ' mtks'; + } return className; } @@ -199,6 +205,9 @@ export class TokenMetadata { if (fontStyle & FontStyle.Underline) { result += 'text-decoration: underline;'; } + if (fontStyle & FontStyle.Strikethrough) { + result += 'text-decoration: line-through;'; + } return result; } } diff --git a/src/vs/editor/common/modes/supports/tokenization.ts b/src/vs/editor/common/modes/supports/tokenization.ts index 02de8c49ec38d..a0034fdb49be5 100644 --- a/src/vs/editor/common/modes/supports/tokenization.ts +++ b/src/vs/editor/common/modes/supports/tokenization.ts @@ -69,6 +69,9 @@ export function parseTokenTheme(source: ITokenThemeRule[]): ParsedTokenThemeRule case 'underline': fontStyle = fontStyle | FontStyle.Underline; break; + case 'strikethrough': + fontStyle = fontStyle | FontStyle.Strikethrough; + break; } } } @@ -414,5 +417,6 @@ export function generateTokensCSSForColorMap(colorMap: readonly Color[]): string rules.push('.mtki { font-style: italic; }'); rules.push('.mtkb { font-weight: bold; }'); rules.push('.mtku { text-decoration: underline; text-underline-position: under; }'); + rules.push('.mtks { text-decoration: line-through; }'); return rules.join('\n'); } diff --git a/src/vs/editor/common/services/semanticTokensProviderStyling.ts b/src/vs/editor/common/services/semanticTokensProviderStyling.ts index 52296b6a00573..3efe64df60184 100644 --- a/src/vs/editor/common/services/semanticTokensProviderStyling.ts +++ b/src/vs/editor/common/services/semanticTokensProviderStyling.ts @@ -67,6 +67,10 @@ export class SemanticTokensProviderStyling { const underlineBit = (tokenStyle.underline ? FontStyle.Underline : 0) << MetadataConsts.FONT_STYLE_OFFSET; metadata |= underlineBit | MetadataConsts.SEMANTIC_USE_UNDERLINE; } + if (typeof tokenStyle.strikethrough !== 'undefined') { + const strikethroughBit = (tokenStyle.strikethrough ? FontStyle.Strikethrough : 0) << MetadataConsts.FONT_STYLE_OFFSET; + metadata |= strikethroughBit | MetadataConsts.SEMANTIC_USE_STRIKETHROUGH; + } if (tokenStyle.foreground) { const foregroundBits = (tokenStyle.foreground) << MetadataConsts.FOREGROUND_OFFSET; metadata |= foregroundBits | MetadataConsts.SEMANTIC_USE_FOREGROUND; diff --git a/src/vs/editor/standalone/browser/inspectTokens/inspectTokens.ts b/src/vs/editor/standalone/browser/inspectTokens/inspectTokens.ts index df5c80779c355..43c4ef587e0f5 100644 --- a/src/vs/editor/standalone/browser/inspectTokens/inspectTokens.ts +++ b/src/vs/editor/standalone/browser/inspectTokens/inspectTokens.ts @@ -284,6 +284,9 @@ class InspectTokensWidget extends Disposable implements IContentWidget { if (fontStyle & FontStyle.Underline) { r += 'underline '; } + if (fontStyle & FontStyle.Strikethrough) { + r += 'strikethrough '; + } if (r.length === 0) { r = '---'; } diff --git a/src/vs/editor/standalone/browser/standaloneLanguages.ts b/src/vs/editor/standalone/browser/standaloneLanguages.ts index 668e6f0b22270..34f3ebfc26133 100644 --- a/src/vs/editor/standalone/browser/standaloneLanguages.ts +++ b/src/vs/editor/standalone/browser/standaloneLanguages.ts @@ -256,7 +256,7 @@ export interface IEncodedLineTokens { * - ------------------------------------------- * - L = EncodedLanguageId (8 bits): Use `getEncodedLanguageId` to get the encoded ID of a language. * - T = StandardTokenType (3 bits): Other = 0, Comment = 1, String = 2, RegEx = 4. - * - F = FontStyle (3 bits): None = 0, Italic = 1, Bold = 2, Underline = 4. + * - F = FontStyle (3 bits): None = 0, Italic = 1, Bold = 2, Underline = 4, Strikethrough = 5. * - f = foreground ColorId (9 bits) * - b = background ColorId (9 bits) * - The color value for each colorId is defined in IStandaloneThemeData.customTokenColors: diff --git a/src/vs/editor/standalone/browser/standaloneThemeServiceImpl.ts b/src/vs/editor/standalone/browser/standaloneThemeServiceImpl.ts index ece509fa0d03a..97646e0d24460 100644 --- a/src/vs/editor/standalone/browser/standaloneThemeServiceImpl.ts +++ b/src/vs/editor/standalone/browser/standaloneThemeServiceImpl.ts @@ -151,7 +151,8 @@ class StandaloneTheme implements IStandaloneTheme { foreground: foreground, italic: Boolean(fontStyle & FontStyle.Italic), bold: Boolean(fontStyle & FontStyle.Bold), - underline: Boolean(fontStyle & FontStyle.Underline) + underline: Boolean(fontStyle & FontStyle.Underline), + strikethrough: Boolean(fontStyle & FontStyle.Strikethrough) }; } diff --git a/src/vs/platform/theme/common/themeService.ts b/src/vs/platform/theme/common/themeService.ts index 07ffaf39c477f..71afe0675b080 100644 --- a/src/vs/platform/theme/common/themeService.ts +++ b/src/vs/platform/theme/common/themeService.ts @@ -91,6 +91,7 @@ export interface ITokenStyle { readonly foreground?: number; readonly bold?: boolean; readonly underline?: boolean; + readonly strikethrough?: boolean; readonly italic?: boolean; } diff --git a/src/vs/platform/theme/common/tokenClassificationRegistry.ts b/src/vs/platform/theme/common/tokenClassificationRegistry.ts index 9ebb2620a7c2e..91253023e7941 100644 --- a/src/vs/platform/theme/common/tokenClassificationRegistry.ts +++ b/src/vs/platform/theme/common/tokenClassificationRegistry.ts @@ -44,6 +44,7 @@ export interface TokenStyleData { foreground?: Color; bold?: boolean; underline?: boolean; + strikethrough?: boolean; italic?: boolean; } @@ -52,6 +53,7 @@ export class TokenStyle implements Readonly { public readonly foreground?: Color, public readonly bold?: boolean, public readonly underline?: boolean, + public readonly strikethrough?: boolean, public readonly italic?: boolean, ) { } @@ -63,6 +65,7 @@ export namespace TokenStyle { _foreground: style.foreground === undefined ? null : Color.Format.CSS.formatHexA(style.foreground, true), _bold: style.bold === undefined ? null : style.bold, _underline: style.underline === undefined ? null : style.underline, + _strikethrough: style.strikethrough === undefined ? null : style.strikethrough, _italic: style.italic === undefined ? null : style.italic, }; } @@ -70,7 +73,7 @@ export namespace TokenStyle { if (obj) { const boolOrUndef = (b: any) => (typeof b === 'boolean') ? b : undefined; const colorOrUndef = (s: any) => (typeof s === 'string') ? Color.fromHex(s) : undefined; - return new TokenStyle(colorOrUndef(obj._foreground), boolOrUndef(obj._bold), boolOrUndef(obj._underline), boolOrUndef(obj._italic)); + return new TokenStyle(colorOrUndef(obj._foreground), boolOrUndef(obj._bold), boolOrUndef(obj._underline), boolOrUndef(obj._strikethrough), boolOrUndef(obj._italic)); } return undefined; } @@ -90,20 +93,21 @@ export namespace TokenStyle { export function fromData(data: { foreground?: Color, bold?: boolean, underline?: boolean, italic?: boolean }): TokenStyle { return new TokenStyle(data.foreground, data.bold, data.underline, data.italic); } - export function fromSettings(foreground: string | undefined, fontStyle: string | undefined, bold?: boolean, underline?: boolean, italic?: boolean): TokenStyle { + export function fromSettings(foreground: string | undefined, fontStyle: string | undefined, bold?: boolean, underline?: boolean, italic?: boolean, strikethrough?: boolean): TokenStyle { let foregroundColor = undefined; if (foreground !== undefined) { foregroundColor = Color.fromHex(foreground); } if (fontStyle !== undefined) { - bold = italic = underline = false; - const expression = /italic|bold|underline/g; + bold = italic = underline = strikethrough = false; + const expression = /italic|bold|underline|strikethrough/g; let match; while ((match = expression.exec(fontStyle))) { switch (match[0]) { case 'bold': bold = true; break; case 'italic': italic = true; break; case 'underline': underline = true; break; + case 'strikethrough': underline = true; break; } } } @@ -287,10 +291,10 @@ class TokenClassificationRegistry implements ITokenClassificationRegistry { }, fontStyle: { type: 'string', - description: nls.localize('schema.token.fontStyle', 'Sets the all font styles of the rule: \'italic\', \'bold\' or \'underline\' or a combination. All styles that are not listed are unset. The empty string unsets all styles.'), + description: nls.localize('schema.token.fontStyle', 'Sets the all font styles of the rule: \'italic\', \'bold\', \'underline\' or \'strikethrough\' or a combination. All styles that are not listed are unset. The empty string unsets all styles.'), pattern: fontStylePattern, - patternErrorMessage: nls.localize('schema.fontStyle.error', 'Font style must be \'italic\', \'bold\' or \'underline\' or a combination. The empty string unsets all styles.'), - defaultSnippets: [{ label: nls.localize('schema.token.fontStyle.none', 'None (clear inherited style)'), bodyText: '""' }, { body: 'italic' }, { body: 'bold' }, { body: 'underline' }, { body: 'italic underline' }, { body: 'bold underline' }, { body: 'italic bold underline' }] + patternErrorMessage: nls.localize('schema.fontStyle.error', 'Font style must be \'italic\', \'bold\', \'underline\' or \'strikethrough\' or a combination. The empty string unsets all styles.'), + defaultSnippets: [{ label: nls.localize('schema.token.fontStyle.none', 'None (clear inherited style)'), bodyText: '""' }, { body: 'italic' }, { body: 'bold' }, { body: 'underline' }, { body: 'italic underline' }, { body: 'bold underline' }, { body: 'italic bold underline' }, { body: 'strikethrough' }, { body: 'italic strikethrough' }, { body: 'bold strikethrough' }, { body: 'italic bold strikethrough' }] }, bold: { type: 'boolean', @@ -303,6 +307,10 @@ class TokenClassificationRegistry implements ITokenClassificationRegistry { underline: { type: 'boolean', description: nls.localize('schema.token.underline', 'Sets or unsets the font style to underline. Note, the presence of \'fontStyle\' overrides this setting.'), + }, + strikethrough: { + type: 'boolean', + description: nls.localize('schema.token.strikethrough', 'Sets or unsets the font style to strikethrough. Note, the presence of \'fontStyle\' overrides this setting.'), } }, diff --git a/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts b/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts index 33143587fca5f..429fb7a7f5f6d 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts @@ -140,6 +140,7 @@ interface IDecodedMetadata { bold?: boolean; italic?: boolean; underline?: boolean; + strikethrough?: boolean; foreground?: string; background?: string; } @@ -415,7 +416,7 @@ class InspectEditorTokensWidget extends Disposable implements IContentWidget { const fontStyleLabels = new Array(); - function addStyle(key: 'bold' | 'italic' | 'underline') { + function addStyle(key: 'bold' | 'italic' | 'underline' | 'strikethrough') { let label: HTMLElement | string | undefined; if (semantic && semantic[key]) { label = $('span.tiw-metadata-semantic', undefined, key); @@ -432,6 +433,7 @@ class InspectEditorTokensWidget extends Disposable implements IContentWidget { addStyle('bold'); addStyle('italic'); addStyle('underline'); + addStyle('strikethrough'); if (fontStyleLabels.length) { elements.push($('tr', undefined, $('td.tiw-metadata-key', undefined, 'font style' as string), @@ -454,6 +456,7 @@ class InspectEditorTokensWidget extends Disposable implements IContentWidget { bold: (fontStyle & FontStyle.Bold) ? true : undefined, italic: (fontStyle & FontStyle.Italic) ? true : undefined, underline: (fontStyle & FontStyle.Underline) ? true : undefined, + strikethrough: (fontStyle & FontStyle.Strikethrough) ? true : undefined, foreground: colorMap[foreground], background: colorMap[background] }; diff --git a/src/vs/workbench/services/textMate/common/TMHelper.ts b/src/vs/workbench/services/textMate/common/TMHelper.ts index f959abeb57ebc..32d73fa14b7a0 100644 --- a/src/vs/workbench/services/textMate/common/TMHelper.ts +++ b/src/vs/workbench/services/textMate/common/TMHelper.ts @@ -16,7 +16,7 @@ export interface ITokenColorizationRule { export interface ITokenColorizationSetting { foreground?: string; background?: string; - fontStyle?: string; // italic, underline, bold + fontStyle?: string; // italic, underline, strikethrough, bold } export function findMatchingThemeRule(theme: IColorTheme, scopes: string[], onlyColorRules: boolean = true): ThemeRule | null { diff --git a/src/vs/workbench/services/themes/common/colorThemeData.ts b/src/vs/workbench/services/themes/common/colorThemeData.ts index 8cbe794065838..550b4f70b4bf7 100644 --- a/src/vs/workbench/services/themes/common/colorThemeData.ts +++ b/src/vs/workbench/services/themes/common/colorThemeData.ts @@ -148,12 +148,14 @@ export class ColorThemeData implements IWorkbenchColorTheme { foreground: undefined, bold: undefined, underline: undefined, + strikethrough: undefined, italic: undefined }; let score = { foreground: -1, bold: -1, underline: -1, + strikethrough: -1, italic: -1 }; @@ -163,7 +165,7 @@ export class ColorThemeData implements IWorkbenchColorTheme { result.foreground = style.foreground; definitions.foreground = definition; } - for (let p of ['bold', 'underline', 'italic']) { + for (let p of ['bold', 'underline', 'strikethrough', 'italic']) { const property = p as keyof TokenStyle; const info = style[property]; if (info !== undefined) { @@ -332,7 +334,7 @@ export class ColorThemeData implements IWorkbenchColorTheme { if (foreground !== undefined || fontStyle !== undefined) { if (definitions) { definitions.foreground = foregroundThemingRule; - definitions.bold = definitions.italic = definitions.underline = fontStyleThemingRule; + definitions.bold = definitions.italic = definitions.underline = definitions.strikethrough = fontStyleThemingRule; definitions.scope = scope; } diff --git a/src/vs/workbench/services/themes/common/colorThemeSchema.ts b/src/vs/workbench/services/themes/common/colorThemeSchema.ts index 18b1e596074a5..bbe61d95ed3a1 100644 --- a/src/vs/workbench/services/themes/common/colorThemeSchema.ts +++ b/src/vs/workbench/services/themes/common/colorThemeSchema.ts @@ -149,10 +149,10 @@ const textmateColorSchema: IJSONSchema = { }, fontStyle: { type: 'string', - description: nls.localize('schema.token.fontStyle', 'Font style of the rule: \'italic\', \'bold\' or \'underline\' or a combination. The empty string unsets inherited settings.'), - pattern: '^(\\s*\\b(italic|bold|underline))*\\s*$', - patternErrorMessage: nls.localize('schema.fontStyle.error', 'Font style must be \'italic\', \'bold\' or \'underline\' or a combination or the empty string.'), - defaultSnippets: [{ label: nls.localize('schema.token.fontStyle.none', 'None (clear inherited style)'), bodyText: '""' }, { body: 'italic' }, { body: 'bold' }, { body: 'underline' }, { body: 'italic bold' }, { body: 'italic underline' }, { body: 'bold underline' }, { body: 'italic bold underline' }] + description: nls.localize('schema.token.fontStyle', 'Font style of the rule: \'italic\', \'bold\', \'underline\', \'strikethrough\' or a combination. The empty string unsets inherited settings.'), + pattern: '^(\\s*\\b(italic|bold|underline|strikethrough))*\\s*$', + patternErrorMessage: nls.localize('schema.fontStyle.error', 'Font style must be \'italic\', \'bold\', \'underline\', \'strikethrough\' or a combination or the empty string.'), + defaultSnippets: [{ label: nls.localize('schema.token.fontStyle.none', 'None (clear inherited style)'), bodyText: '""' }, { body: 'italic' }, { body: 'bold' }, { body: 'underline' }, { body: 'italic bold' }, { body: 'italic underline' }, { body: 'bold underline' }, { body: 'italic bold underline' }, { body: 'strikethrough' }, { body: 'italic strikethrough' }, { body: 'bold strikethrough' }, { body: 'italic bold strikethrough' }] } }, additionalProperties: false, @@ -243,4 +243,3 @@ export function registerColorThemeSchemas() { schemaRegistry.registerSchema(colorThemeSchemaId, colorThemeSchema); schemaRegistry.registerSchema(textmateColorsSchemaId, textmateColorSchema); } - diff --git a/src/vs/workbench/services/themes/common/workbenchThemeService.ts b/src/vs/workbench/services/themes/common/workbenchThemeService.ts index 7f7b2d6e17a52..05e8230ced859 100644 --- a/src/vs/workbench/services/themes/common/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/common/workbenchThemeService.ts @@ -164,14 +164,15 @@ export interface ITextMateThemingRule { export interface ITokenColorizationSetting { foreground?: string; background?: string; - fontStyle?: string; /* [italic|underline|bold] */ + fontStyle?: string; /* [italic|underline|strikethrough|bold] */ } export interface ISemanticTokenColorizationSetting { foreground?: string; - fontStyle?: string; /* [italic|underline|bold] */ + fontStyle?: string; /* [italic|underline|strikethrough|bold] */ bold?: boolean; underline?: boolean; + strikethrough?: boolean; italic?: boolean; } From def9c1cf364226679ada215f064b03cc87cfa215 Mon Sep 17 00:00:00 2001 From: "SNDST00M: M.U.N.I.N" <82655227+SNDST00M@users.noreply.github.com> Date: Mon, 23 Aug 2021 18:42:54 +0100 Subject: [PATCH 2/3] Update Monaco definitions with TM strikethrough --- src/vs/monaco.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 3fc8c1656b224..31807422e629d 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -5234,7 +5234,7 @@ declare namespace monaco.languages { * - ------------------------------------------- * - L = EncodedLanguageId (8 bits): Use `getEncodedLanguageId` to get the encoded ID of a language. * - T = StandardTokenType (3 bits): Other = 0, Comment = 1, String = 2, RegEx = 4. - * - F = FontStyle (3 bits): None = 0, Italic = 1, Bold = 2, Underline = 4. + * - F = FontStyle (3 bits): None = 0, Italic = 1, Bold = 2, Underline = 4, Strikethrough = 5. * - f = foreground ColorId (9 bits) * - b = background ColorId (9 bits) * - The color value for each colorId is defined in IStandaloneThemeData.customTokenColors: From a7f7d4834b6fd0d86e9f05f0ba5ea6e51aaa58fd Mon Sep 17 00:00:00 2001 From: "SNDST00M: M.U.N.I.N" <82655227+SNDST00M@users.noreply.github.com> Date: Mon, 23 Aug 2021 20:45:58 +0100 Subject: [PATCH 3/3] Fix tokenizer tests w/ new FontStyle member --- src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts index aaa8f060fd022..7e7940217db24 100644 --- a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts +++ b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts @@ -99,6 +99,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ( (5 << MetadataConsts.FOREGROUND_OFFSET) | ((FontStyle.Underline) << MetadataConsts.FONT_STYLE_OFFSET) + | ((FontStyle.Strikethrough) << MetadataConsts.FONT_STYLE_OFFSET) ) >>> 0 ) ]); @@ -232,6 +233,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ( (5 << MetadataConsts.FOREGROUND_OFFSET) | ((FontStyle.Underline) << MetadataConsts.FONT_STYLE_OFFSET) + | ((FontStyle.Strikethrough) << MetadataConsts.FONT_STYLE_OFFSET) ) >>> 0 ) ]);