Skip to content

IME composition breaks soft-wrap (and can drop jamo) after a Meta Bind widget is rendered #667

@azure463

Description

@azure463

Please fill out these Check-boxes

  • I checked for existing similar issues
  • I checked that the plugin is up to date
  • The issue persists with all other plugins and themes disabled

Plugin Version

1.5.0

This Issue Occurs on

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

Debug Info

SYSTEM INFO:
	Obsidian version: 1.13.1
	Installer version: 1.10.3
	Operating system: Windows 11 Education 10.0.26200
	Login status: logged in
	Language: ko
	Catalyst license: insider
	Insider build toggle: off
	Live preview: on
	Base theme: light
	Community theme: Minimal 8.2.1
	Snippets enabled: 12
	Restricted mode: off
	Plugins installed: 31
	Plugins enabled: 31
		1: Meta Bind v1.5.0
		2: Advanced Tables v0.23.2
		3: Custom File Explorer sorting v3.1.6
		4: Dataview v0.5.68
		5: Editing Toolbar v4.0.8
		6: Force note view mode v1.2.2
		7: Excalidraw v2.23.8
		8: Hider v1.6.2
		9: Highlightr v1.2.2
		10: Homepage v4.4.4
		11: Iconize v2.14.7
		12: Journals v2.1.10
		13: Metadata Menu v0.8.12
		14: Minimal Theme Settings v8.2.3
		15: Multi State CheckBox Switcher v1.0.4
		16: Natural Language Dates Redux v0.8.28
		17: Note Toolbar v1.32.15
		18: Omnisearch v1.29.3
		19: Pocket Bird v2026.5.15
		20: Plugin Update Tracker v1.7.0
		21: Outliner v4.10.1
		22: Quick Explorer v0.2.16
		23: QuickAdd v2.12.3
		24: Recent Files v1.7.9
		25: Style Settings v1.0.9
		26: Supercharged Links v0.13.10
		27: Tabs v1.1.9
		28: Tag Wrangler v0.6.4
		29: Tasks v8.0.0
		30: Templater v2.20.5
		31: Trash Explorer v1.2.4

RECOMMENDATIONS:
	Custom theme and snippets: for cosmetic issues, please first try updating your theme and disabling your snippets. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community theme and snippets.
	Community plugins: for bugs, please first try updating all your plugins to latest. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community plugins.

Describe the Issue

This bug is specific to Korean (Hangeul(Hangul)) input, so here's a short primer needed to understand it.

Korean is written in syllable blocks, each assembled from smaller letter units called jamo (an initial consonant, a medial vowel, and sometimes a final consonant). For example, 입 ("ip") = ㅇ + ㅣ + ㅂ. All Korean input goes through an IME that assembles syllables in real time, and each syllable stays in a temporary "composing" (pre-edit) state until it is finalized (committed). Normally, composing text is shown with an underline.

The bug appears only after a Meta Bind widget has been rendered in the current session. Concretely: once I open a note containing a Meta Bind button (or any Meta Bind widget), the bug starts and persists even after I close that note. It does not occur in a fresh vault until a Meta Bind widget is rendered at least once; restarting Obsidian with Meta Bind disabled clears it.

Once triggered, IME pre-edit (composing) text is no longer soft-wrapped correctly on list / callout / task lines. Two symptoms follow from this:

  1. Composing text overflows the editor width, and its display changes. If I keep typing (e.g. repeating ㅇ) past the right edge, the still-composing text runs past the editor boundary instead of wrapping to the next line. In this broken state the composing text is shown in gray, instead of the normal underline — so the display itself differs from a normal composition. This part is a display issue only: clicking elsewhere (which commits the composition) makes the overflowed text wrap correctly, and no characters are lost.
Image
  1. Jamo loss at the wrap point. When the line does wrap while a syllable is mid-composition, part of that syllable's jamo is dropped. Typing 이것은 사과입니다. ("This is an apple.") produces 이것은 사과ㅂ니다. — the syllable 입 (ㅇ + ㅣ + ㅂ) loses its ㅇ + ㅣ, and only the final ㅂ ends up on the next line. Unlike symptom 1, this is actual data loss: the dropped jamo (ㅇ and ㅣ) never appear on screen at all and are gone from the entered text.
Image

Both symptoms point to the same root cause: after a Meta Bind widget is rendered, the editor mishandles the IME composition/pre-edit state during soft-wrap.

Key finding (how it's tied to Meta Bind): in a clean vault with only Meta Bind installed, the bug does NOT appear — until I create and render a Meta Bind widget (e.g. a button). After that, it appears. In my main vault, the home page contains a Meta Bind button, so opening it once was enough to trigger the bug for the rest of the session. I confirmed this with all other plugins, themes, and CSS snippets disabled, and on a brand-new note.

Steps to Reproduce

  1. In a vault with Meta Bind enabled, create a note containing a Meta Bind widget (e.g. a button).
  2. Open that note once so the widget renders, then you may close it.
  3. Open or create any note and start a line with a bullet list (-), numbered list (1.), callout (> [!note]), or task (- [ ]).
  4. Narrow the editor pane so text will soft-wrap.
  5. Using a Korean IME, type Korean text past the right edge.

Observed:

  • Symptom 1: repeatedly typing a composing character (e.g. ㅇ) makes the still-composing text overflow past the editor width without wrapping, shown in gray rather than the normal underline. Clicking elsewhere to commit the composition restores correct wrapping with no data loss.
  • Symptom 2: when the line wraps mid-composition, jamo is dropped (e.g. 이것은 사과입니다. becomes 이것은 사과ㅂ니다.).

Note: in a clean vault, this does NOT reproduce until a Meta Bind widget has been rendered at least once in the session. Restarting Obsidian with Meta Bind disabled clears the state.

Expected Behavior

IME pre-edit (composing) text should soft-wrap the same way committed text does, regardless of whether a Meta Bind widget has been rendered. Typing 이것은 사과입니다. should produce exactly 이것은 사과입니다., with the composing text wrapping at the editor edge and no jamo dropped.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugUndesired behavior caused by this plugin

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions