diff --git a/src/renderer/src/components/editor/MonacoEditor.system-theme.test.tsx b/src/renderer/src/components/editor/MonacoEditor.system-theme.test.tsx
index d3ac9e63e13..773f1865640 100644
--- a/src/renderer/src/components/editor/MonacoEditor.system-theme.test.tsx
+++ b/src/renderer/src/components/editor/MonacoEditor.system-theme.test.tsx
@@ -144,3 +144,34 @@ describe('MonacoEditor system theme', () => {
expect(editorProps.current?.theme).toBe('vs')
})
})
+
+it('updates Unicode highlighting when the editor language changes', () => {
+ installMatchMedia(false)
+ const props = {
+ fileId: 'file',
+ filePath: '/repo/file.md',
+ viewStateKey: 'pane:file',
+ relativePath: 'file.md',
+ content: '中文说明:( example )\u200b',
+ onContentChange: vi.fn(),
+ onSave: vi.fn()
+ }
+ const view = render()
+ expect(editorProps.current?.options).toEqual(
+ expect.objectContaining({
+ unicodeHighlight: { ambiguousCharacters: false, invisibleCharacters: true }
+ })
+ )
+ view.rerender()
+ expect(editorProps.current?.options).toEqual(
+ expect.objectContaining({
+ unicodeHighlight: { ambiguousCharacters: true, invisibleCharacters: true }
+ })
+ )
+ view.rerender()
+ expect(editorProps.current?.options).toEqual(
+ expect.objectContaining({
+ unicodeHighlight: { ambiguousCharacters: false, invisibleCharacters: true }
+ })
+ )
+})
diff --git a/src/renderer/src/components/editor/MonacoEditor.tsx b/src/renderer/src/components/editor/MonacoEditor.tsx
index 763f810beaf..729b8609284 100644
--- a/src/renderer/src/components/editor/MonacoEditor.tsx
+++ b/src/renderer/src/components/editor/MonacoEditor.tsx
@@ -306,6 +306,10 @@ export default function MonacoEditor({
lineNumbers: 'on',
renderLineHighlight: 'line',
automaticLayout: true,
+ unicodeHighlight: {
+ ambiguousCharacters: language !== 'markdown',
+ invisibleCharacters: true
+ },
tabSize: 2,
readOnly,
scrollbar: autoHeight