Smart multi-language Right-to-Left (RTL) support for Cursor IDE chat, Plan files, and Markdown editors. Hebrew, Arabic, and Persian text is automatically right-aligned while English and code blocks stay left-to-right.
- Smart direction detection — analyzes each chat message and applies
dir="rtl"ordir="ltr"per element - Mixed-language support — Hebrew/Arabic/Persian paragraphs align right; English-heavy content stays left
- Code-safe — code blocks, terminals, tool calls, and UI controls remain LTR
- Plan editor support — RTL works in Cursor Plan markdown views
- Markdown editor support — per-line RTL in the Markdown source editor, Cursor's native Preview | Markdown editor, and the classic side preview. Only RTL-language lines align right; English stays left
- Status bar indicator — click to enable, disable, or check status
- Auto-reapply — restores the patch automatically after Cursor updates (configurable)
- Cursor IDE (not VS Code)
- Windows, macOS, or Linux
- Download
cursor-rtl-1.1.2.vsixfrom Releases - Verify SHA256 (see checksums.sha256)
- Install:
cursor --install-extension cursor-rtl-1.1.2.vsixOr press Ctrl+Shift+P → Extensions: Install from VSIX... → select the file.
Search Cursor RTL Chat in Cursor Extensions (after publishing to Open VSX).
git clone https://github.com/Satan2049/cursor-rtl.git
cd cursor-rtl
npm install
npm run release:preparePress F5 in Cursor for development, or install the generated .vsix.
- Ctrl+Shift+P → Cursor RTL: Enable RTL Support
- Confirm the patch dialog
- Fully quit Cursor (File → Exit) and reopen
- Open chat — RTL text aligns automatically
| Indicator | Meaning |
|---|---|
RTL: ON |
Patch is active |
RTL: OFF |
Patch not applied — click to enable |
RTL: UPDATE NEEDED |
Cursor was updated — click to re-apply |
| Command | Action |
|---|---|
Cursor RTL: Enable RTL Support |
Apply the RTL patch |
Cursor RTL: Disable RTL Support |
Restore original Cursor files |
Cursor RTL: Re-apply After Update |
Re-apply after a Cursor upgrade |
Cursor RTL: Check Status |
Show patch status in Output panel |
Cursor RTL: Toggle RTL Support |
Enable or disable |
| Setting | Default | Description |
|---|---|---|
cursorRtl.autoReapply |
true |
Auto-reapply patch when Cursor updates overwrite main.js |
cursorRtl.showStatusBar |
true |
Show RTL status in the status bar |
Verify downloads with SHA256:
Get-FileHash -Path cursor-rtl-1.1.2.vsix -Algorithm SHA256Expected hash for v1.1.2:
1FEFFE27E1E67AD4DA938817983ACDF527BB6CD81809F7BC0D1C7B27992F2C6D
Official checksums: checksums.sha256
v1.1.2 scanned clean on VirusTotal (0 detections):
https://www.virustotal.com/gui/file/1feffe27e1e67ad4da938817983acdf527bb6cd81809f7bc0d1c7b27992f2c6d
This extension patches Cursor's main.js to load a small Electron loader. The loader injects a runtime script (rtl.js) into the workbench that:
- Watches the chat DOM for new messages
- Scores RTL vs LTR characters per text block
- Applies
direction: rtl/text-align: startto matching elements - Keeps code blocks, Monaco editors, and tool UI in LTR
The same runtime also styles Cursor's native Preview | Markdown editor (without writing dir into ProseMirror-owned DOM). The classic Markdown side preview is styled separately through VS Code markdown.previewStyles / markdown.previewScripts contributions.
Original main.js is backed up before patching. Disabling restores from backup.
Note: Cursor may show an
[Unsupported]warning because the patch modifies internal app files. This is expected for workbench-level RTL injection.
Changes not visible after enabling
- Fully quit Cursor (not just Reload Window) and reopen
- Check Output → Cursor RTL for errors
Permission denied
- Windows: run Cursor as Administrator
- macOS:
sudo chown -R $USER Cursor.app/Contents/Resources/app/out/
RTL stopped after Cursor update
- Click the status bar warning, or run Re-apply After Update
- Enable
cursorRtl.autoReapplyfor automatic restoration
Debug log
- Loader writes to
~/cursor-rtl.log
Uninstalling the extension runs a cleanup script that restores main.js from backup if the patch is still active.
The RTL runtime script (resources/rtl.js) is adapted from cursor-ext-rtl (Apache-2.0). See THIRD_PARTY.md.
MIT — see LICENSE.