* rtlspaces.patch: There is a inconsistency between the font of spaces at RTL<->LTR boundaries. The whole space problem is discussed in http://permalink.gmane.org/gmane.editors.lyx.devel/ 80783. An illustration of the current situation and the one after this patch are visible at http://article.gmane.org/ gmane.editors.lyx.devel/86342 in the second picture. A discussion of the inconsistency can be found in http://article.gmane.org/ gmane.editors.lyx.devel/86425. (fixes http://bugzilla.lyx.org/ show_bug.cgi?id=3789). Dov had sent a very good in-depth discussion and comparison to LyX 1.3 at http://permalink.gmane.org/ gmane.editors.lyx.devel/80783. If somebody has an opinion about this issue, please speak up. I think the version implemented by this patch is simple on the one hand, but also implements the behavior of Latex. And I think it is not too bad that it does not hide anything from the user or is doing magic he cannot understand.

*I* like this, but I foresee a lot of resistance from users. Let's see what other's say, I'll still try to ask about it on the users' list. Meanwhile, the other patches shouldn't wait for this one --- they should be committed ASAP.

We also have to allow spaces on both sides of a RTL boundary:

Index: src/Text.cpp
===================================================================
--- src/Text.cpp        (Revision 18626)
+++ src/Text.cpp        (Arbeitskopie)
@@ -732,7 +734,8 @@
                }
                BOOST_ASSERT(cur.pos() > 0);
if ((par.isLineSeparator(cur.pos() - 1) || par.isNewline(cur.pos() - 1))
-                   && !par.isDeleted(cur.pos() - 1)) {
+                   && !par.isDeleted(cur.pos() - 1)
+                               && !bidi.isBoundary(cur.buffer(), par, 
cur.pos())) {
                        static bool sent_space_message = false;
                        if (!sent_space_message) {
                                cur.message(_("You cannot type two spaces this way. 
"
Index: src/Text2.cpp
===================================================================
--- src/Text2.cpp       (Revision 18626)
+++ src/Text2.cpp       (Arbeitskopie)
@@ -1154,7 +1160,8 @@
                    && old.pos() < oldpar.size()
                    && oldpar.isLineSeparator(old.pos())
                    && oldpar.isLineSeparator(old.pos() - 1)
-                   && !oldpar.isDeleted(old.pos() - 1)) {
+                   && !oldpar.isDeleted(old.pos() - 1)
+                               && !old.text()->bidi.isBoundary(old.buffer(), 
oldpar, old.pos())) {
                        oldpar.eraseChar(old.pos() - 1, 
cur.buffer().params().trackChanges);
#ifdef WITH_WARNINGS
#warning This will not work anymore when we have multiple views of the same buffer

Stefan

Attachment: rtlepm.patch
Description: Binary data



Attachment: PGP.sig
Description: Signierter Teil der Nachricht

Reply via email to