Skip to content

[Bug] Rendering glitch at semantic token boundaries when inline decorations are present in the same line #5332

@frecs4

Description

@frecs4

Reproducible in vscode.dev or in VS Code Desktop?

  • Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

Monaco Editor Playground Link

https://microsoft.github.io/monaco-editor/playground.html?source=v0.55.1#XQAAAAK3CAAAAAAAAABBqQkHQ5NjdMjwa-jY7SIQ9S7DNlzs5W-mwj0fe1ZCDRFc9ws9XQE0SJE1jc2VKxhaLFIw9vEWSxW3yscxEV6ndHDs_Oo7Xmsqvtmcqcu0QkeA2KlJFL139OKPpM1b9qcAOVt_68CKtqOHbMTQcUaP7mTlFafzQOtXO89b4lptZCA9C8mFAo-VCMFTDsuyjuJqY2WguSmtmEG4Y_uVZmcP9g3ewBAsVT6LH0HGB8BBybJLqPHFkS9nJI8Faino1p9Jno-0CMuh9thQ2tP4imGfp4OC3KoVdyzgray39L8E7oxasNgy96S7trOYHBarYu-jYip2uJOZQWDNWwkL4-ynWxEHfGhunikjT-MzLY2CGx_56k8muMVMFc9tv9H-9CpsLqPT_0CBrGfdsQOHe-LtEbSEgB8NM1v5P9WtX3ySqZG3m6s7CSoOAvx098wPzgmByNpjE0n7nwrItHgYrIpowmpGOvvSYlLia_a_DviNysozNGQgr2AvUk2GBwajX5o4M-TBrv29aUUKJOJ3tcYhUily83Mi0GKP4BUx24aPxbFP4jITS4k7v4O3mWed5ciOPen9XgT27Ap_5nzddrAai3OL3jal_QMj4JxtqEJqxaxZ-GOd6hFvE2Vg3isfKf0a_U82ce3Lz-x5P1OgUnc1S6KA8rPk6YTO8M7z-TIXHzXzzTajLJO9CHlCqq8lTAlspuhPc402iUI7PR2jMu6VC57xjJb3J4-iVmoDHnGdTzA9unMfOsURb6jWyOW4r6e_q8CGMCQ-W6yv46ArHXXcWQQ_Kj_N6YG6pY5qvvjxOUHK2Iu4ns2vB_ei7uQZTdSE8i97ZSC0rEFyEc_TVMP4rcaArn8muHe4OEZoZq1felqeoN__ztghuzyLe1s6LifpqY4T9STXvQKrqA0i0-lzUKOsT44_4povDZZehKRrRNXViDWfrm8Z_mcQBh9teYl4fmNClODb2flMM_A2hKpYjcITCDoNdKSNvW1KG0Wk1iscxT0N6KaH_dR1f43xeERrsQ0UAXXGfaBcVi8hqQO7RfUDd-OOzkg0GBH6ZxlvEpuPwNMRc79kacz9Cvn5JvPa1g4vkP7LB0XhQtb5ySvwIh_mjDtTWBZJZHKyQhlH-pCgKHmbfZ4VKT3FriOJNRWf8e0QxtEH-sDsicgPBb4hchOjrD8B-0lcgrfR_29n81Q88VH3b21ICxPy2cd5Ej4lTbEKuNDxYb2fqdXudif9w5S3Sy6gbPPLfOr5LC14xDT9iYhOooF79TMgzxQVpiQ5HB_-v6QSRx4KvfxnfMQYiDKOHMtic962Cn0DOp2_ME67WuAVKf35kYCVAuoeztb6xCC64y3JVG2_6ugkTxebS0CLOkdTuBqMbAabSHhdfkt3kjH-vJQ_LG_bF_FzmOeYRkiOI__qwJej

Monaco Editor Playground Code

Reproduction Steps

  1. Register a DocumentSemanticTokensProvider with multiple adjacent semantic tokens
  2. Add an inline decoration (inlineClassName) to the same line
  3. Place the cursor at a boundary between two semantic tokens
  4. Type any character

Actual (Problematic) Behavior

Description

When using a custom DocumentSemanticTokensProvider together with inline decorations (inlineClassName),
a rendering glitch occurs at token boundaries if both are present in the same line.

When typing at a semantic token boundary, the inserted character is briefly rendered multiple times
(duplicated) and disappears immediately on the next render cycle.

This happens consistently on every keystroke at a token boundary and only when the line also
contains an inline decoration.

Actual Behavior

When typing at a semantic token boundary, the inserted character is briefly rendered multiple times
(duplicated) in the line. The glitch disappears immediately on the next render cycle.

Expected Behavior

The character is rendered exactly once and immediately at the correct position without any visual glitch.

Additional Context

  • The bug only occurs when both conditions are met simultaneously:
    • An inline decoration (inlineClassName) is present in the same line
    • The cursor is at a boundary between two adjacent semantic tokens
  • Removing either the inline decoration or the semantic tokens eliminates the glitch
  • The glitch is purely visual and disappears immediately (single render frame)
  • Provider type: DocumentSemanticTokensProvider (provideDocumentSemanticTokens)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions