Skip to content

Issues with Arabic Text Handling #5936

Description

@islam2hamy

Describe the bug

Hello,

First, thank you for creating such a useful and versatile code editor. It has greatly improved my workflow, and I appreciate the effort put into making a reliable tool for developers.

Problem Summary

When working with Arabic text inside the editor I encounter two distinct problems:

  1. Misplaced error indicator

    • When an Arabic word is flagged as incorrect, the underline/marker appears at the wrong position, often offset by one or more characters.
  2. Unintended character deletion

    • Deleting a single character from an Arabic word sometimes removes an additional, unrelated character in the same word.

Example (XML file):

<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<opml version="2.0">
  <head>
    <title>إسلام بودكاست | د. حازم شومان</title>
    <dateCreated>01 Apr 26 17:50:31 +0200</dateCreated>
  </head>
  <body>
    <outline text="خطب الجمعة | د. حازم شومان"
             title="خطب الجمعة | د. حازم شومان"
             type="rss"
             xmlUrl="https://raw.githubusercontent.com/dev-fos/islampodcast/main/حازم-شومان/خطب-الجمعة.xml"
             htmlUrl="https://www.youtube.com/playlist?list=PLVPp4tYPys9MxsCWyA5z60h55qMTheKjz" />
  </body>
</opml>
  • In line 8, selecting the word حازم inside the text attribute places the selection cursor incorrectly.
  • In line 8, attempting to delete the final character م from حازم (cursor positioned after م, then pressing Delete) removes an additional character instead of only م.

These glitches hinder accurate editing of Arabic content such as comments, strings, and documentation. I would be grateful if the team could investigate the underlying Unicode handling and bidirectional‑text support to resolve these problems.

Thank you for your attention and for the continued improvements to the product.

Expected Behavior

  • Selection: In line 8, when I double‑click (or otherwise select) the word حازم inside the text attribute, the editor highlights exactly the characters ح‑ا‑ز‑م, with the selection cursor positioned at the start and end of that word.

  • Deletion: With the cursor placed immediately after the final character م of حازم, pressing Delete removes only that character, leaving the word as حاز and leaving all other surrounding text untouched.

Current Behavior

  • In line 8, selecting the word حازم inside the text attribute places the selection cursor incorrectly.
  • In line 8, attempting to delete the final character م from حازم (cursor positioned after م, then pressing Delete) removes an additional character instead of only م.

Reproduction Steps

Open the ACE editor a : https://ace.c9.io/build/kitchen-sink.html

Switch the mode to XML (or leave it in the default text mode).

Paste the XML snippet

Example (XML file):

<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<opml version="2.0">
  <head>
    <title>إسلام بودكاست | د. حازم شومان</title>
    <dateCreated>01 Apr 26 17:50:31 +0200</dateCreated>
  </head>
  <body>
    <outline text="خطب الجمعة | د. حازم شومان"
             title="خطب الجمعة | د. حازم شومان"
             type="rss"
             xmlUrl="https://raw.githubusercontent.com/dev-fos/islampodcast/main/حازم-شومان/خطب-الجمعة.xml"
             htmlUrl="https://www.youtube.com/playlist?list=PLVPp4tYPys9MxsCWyA5z60h55qMTheKjz" />
  </body>
</opml>
  • In line 8, selecting the word حازم inside the text attribute places the selection cursor incorrectly.
  • In line 8, attempting to delete the final character م from حازم (cursor positioned after م, then pressing Delete) removes an additional character instead of only م.

Possible Solution

No response

Additional Information/Context

Vs code do it will

Ace Version / Browser / OS / Keyboard layout

https://ace.c9.io/build/kitchen-sink.html

Image
Image

Image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    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