* 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
rtlepm.patch
Description: Binary data
PGP.sig
Description: Signierter Teil der Nachricht