* 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
