diff --git a/src/vs/editor/browser/controller/editContext/native/nativeEditContext.css b/src/vs/editor/browser/controller/editContext/native/nativeEditContext.css index e093d99a73f..c4587dc8939 100644 --- a/src/vs/editor/browser/controller/editContext/native/nativeEditContext.css +++ b/src/vs/editor/browser/controller/editContext/native/nativeEditContext.css @@ -13,44 +13,14 @@ text-wrap: nowrap; } -.monaco-editor .edit-context-format-decoration { - text-decoration-line: underline; - /* TODO @aiday chose a theme color */ - text-decoration-color: blue; - color: var(--vscode-editor-foreground, inherit); - opacity: 0.8; - - &.underline-style-none { - text-decoration-line: none; - text-decoration-style: none; - } - - &.underline-style-solid { - text-decoration-style: solid; - } - - &.underline-style-dotted { - text-decoration-style: dotted; - } - - &.underline-style-dashed { - text-decoration-style: dashed; - } - - &.underline-style-wavy { - text-decoration-style: wavy; - } - - &.underline-thickness-none { - text-decoration-line: none; - text-decoration-thickness: none; - } - - &.underline-thickness-thin { - text-decoration-thickness: 1px; - } - - &.underline-thickness-thick { - text-decoration-thickness: 2px; - } +.monaco-editor .edit-context-composition-none { + background-color: transparent; +} + +.monaco-editor .edit-context-composition-secondary { + background-color: var(--vscode-editor-selectionBackground); +} + +.monaco-editor .edit-context-composition-primary { + background-color: var(--vscode-editor-selectionHighlightBackground); } diff --git a/src/vs/editor/browser/controller/editContext/native/nativeEditContext.ts b/src/vs/editor/browser/controller/editContext/native/nativeEditContext.ts index baa37912ac2..67cdd3b0bb0 100644 --- a/src/vs/editor/browser/controller/editContext/native/nativeEditContext.ts +++ b/src/vs/editor/browser/controller/editContext/native/nativeEditContext.ts @@ -27,6 +27,13 @@ import { Position } from '../../../../common/core/position.js'; import { IVisibleRangeProvider } from '../textArea/textAreaEditContext.js'; import { PositionOffsetTransformer } from '../../../../common/core/positionToOffset.js'; +// Corresponds to classes in nativeEditContext.css +enum CompositionClassName { + NONE = 'edit-context-composition-none', + SECONDARY = 'edit-context-composition-secondary', + PRIMARY = 'edit-context-composition-primary', +} + export class NativeEditContext extends AbstractEditContext { public readonly domNode: FastDomNode; @@ -257,16 +264,21 @@ export class NativeEditContext extends AbstractEditContext { const startPositionOfDecoration = textModel.getPositionAt(offsetOfEditContextText + f.rangeStart); const endPositionOfDecoration = textModel.getPositionAt(offsetOfEditContextText + f.rangeEnd); const decorationRange = Range.fromPositions(startPositionOfDecoration, endPositionOfDecoration); - const classNames = [ - 'edit-context-format-decoration', - `underline-style-${f.underlineStyle.toLowerCase()}`, - `underline-thickness-${f.underlineThickness.toLowerCase()}`, - ]; + const thickness = f.underlineThickness.toLowerCase(); + let decorationClassName: string = CompositionClassName.NONE; + switch (thickness) { + case 'thin': + decorationClassName = CompositionClassName.SECONDARY; + break; + case 'thick': + decorationClassName = CompositionClassName.PRIMARY; + break; + } decorations.push({ range: decorationRange, options: { description: 'textFormatDecoration', - inlineClassName: classNames.join(' '), + inlineClassName: decorationClassName, } }); });