You sure put a lot of thought and effort into it. Thank you for that. Now that I have downloaded the source code, I'd like to take a look at this problem first hand. I'm not a programmer, not even an amateur one, but I can sometimes make sense of the general gist of code when I read it, and I'd like to take a look at the part of code that's responsible for the present bug, maybe put a breakpoint here and there and give it a test run to get a feel of how it works, and why it misses the mark when it comes to line wrapping bidi paragraphs. Could you please give me some pointers: what files should I look into, what functions should I read, possibly even suggestions for where to put breakpoints and which variables to watch. I'm not asking for a comprehensive and detailed run down of this feature; just a starting point(s). Every tip and suggestion will be welcome. On Thu, Jul 20, 2017 at 2:09 PM, Eli Zaretskii wrote: > > Resent-Sender: help-debbugs@gnu.org > > From: Itai Berli > > Date: Thu, 20 Jul 2017 10:01:33 +0300 > > > > I see no reason to continue this discussion any further. > > Thank you. > > > One thing I'm curious about, though. What bidi features exist in Emacs, > half of which the other editors don't > > have? Which features were you referring to when you wrote that, thanks > to them, "10 years later, Emacs still > > shines among all the bidi-aware editors out there"? > > . For starters, all the UBA features are fully supported, including > the directional isolates and bracket-matching (a.k.a. "BPA"). > . Support for bidirectional display on both GUI and text-mode terminals. > . Both logical-order and visual-order cursor motion. > . Full support for Arabic shaping and other complex-script shaping > features in bidirectional text (e.g., Hebrew "nikkud"). > . Bidi formatting controls are visible on screen, so users don't need > to guess why display looks like it does. > . Variables to control where paragraphs begin and end, for the > purposes of determining base paragraph direction. > . Variables to disable mirroring of parentheses due to bidi context, > and even disable bidi reordering entirely, if needed. > . Lisp functions that are necessary when writing bidi-aware > customizations and features: > . a function that returns base paragraph direction at point > . a function that returns resolved bidi levels for a line > . a function that takes a string and wraps it so that it could be > concatenated with other strings without fear of producing jumbled > display due to reordering (important for tabular display) > . a function to find characters whose directionality was overridden > by bidi controls (which could be used to maliciously dupe the > user to think a string is not what it really is) > . a function to return a substring of buffer text surrounded by > bidi controls that make sure its visual appearance will not > change when copied to a different portion of text > > And that is even before we consider Emacs-only features, which those > other editors can only dream about, like mouse-highlight, display and > overlay strings, invisible text, text alignment on display, etc. -- > all of which are bidi-aware in Emacs. >