[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r99790: Fix highlight of trailing whi
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r99790: Fix highlight of trailing whitespace is right-to-left lines. |
Date: |
Wed, 31 Mar 2010 17:28:16 +0300 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 99790
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Wed 2010-03-31 17:28:16 +0300
message:
Fix highlight of trailing whitespace is right-to-left lines.
xdisp.c (highlight_trailing_whitespace): Support highlight of
trailing whitespace in right-to-left rows.
modified:
src/ChangeLog
src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-03-31 04:14:08 +0000
+++ b/src/ChangeLog 2010-03-31 14:28:16 +0000
@@ -1,3 +1,8 @@
+2010-03-31 Eli Zaretskii <address@hidden>
+
+ * xdisp.c (highlight_trailing_whitespace): Support highlight of
+ trailing whitespace in right-to-left rows.
+
2010-03-31 Stefan Monnier <address@hidden>
Get rid of the direct_output optimizations.
=== modified file 'src/xdisp.c'
--- a/src/xdisp.c 2010-03-31 04:14:08 +0000
+++ b/src/xdisp.c 2010-03-31 14:28:16 +0000
@@ -16868,19 +16868,37 @@
struct glyph *start = row->glyphs[TEXT_AREA];
struct glyph *glyph = start + used - 1;
+ if (row->reversed_p)
+ {
+ /* Right-to-left rows need to be processed in the opposite
+ direction, so swap the edge pointers. */
+ glyph = start;
+ start = row->glyphs[TEXT_AREA] + used - 1;
+ }
+
/* Skip over glyphs inserted to display the cursor at the
end of a line, for extending the face of the last glyph
to the end of the line on terminals, and for truncation
and continuation glyphs. */
- while (glyph >= start
- && glyph->type == CHAR_GLYPH
- && INTEGERP (glyph->object))
- --glyph;
+ if (!row->reversed_p)
+ {
+ while (glyph >= start
+ && glyph->type == CHAR_GLYPH
+ && INTEGERP (glyph->object))
+ --glyph;
+ }
+ else
+ {
+ while (glyph <= start
+ && glyph->type == CHAR_GLYPH
+ && INTEGERP (glyph->object))
+ ++glyph;
+ }
/* If last glyph is a space or stretch, and it's trailing
whitespace, set the face of all trailing whitespace glyphs in
IT->glyph_row to `trailing-whitespace'. */
- if (glyph >= start
+ if ((row->reversed_p ? glyph <= start : glyph >= start)
&& BUFFERP (glyph->object)
&& (glyph->type == STRETCH_GLYPH
|| (glyph->type == CHAR_GLYPH
@@ -16891,12 +16909,24 @@
if (face_id < 0)
return;
- while (glyph >= start
- && BUFFERP (glyph->object)
- && (glyph->type == STRETCH_GLYPH
- || (glyph->type == CHAR_GLYPH
- && glyph->u.ch == ' ')))
- (glyph--)->face_id = face_id;
+ if (!row->reversed_p)
+ {
+ while (glyph >= start
+ && BUFFERP (glyph->object)
+ && (glyph->type == STRETCH_GLYPH
+ || (glyph->type == CHAR_GLYPH
+ && glyph->u.ch == ' ')))
+ (glyph--)->face_id = face_id;
+ }
+ else
+ {
+ while (glyph <= start
+ && BUFFERP (glyph->object)
+ && (glyph->type == STRETCH_GLYPH
+ || (glyph->type == CHAR_GLYPH
+ && glyph->u.ch == ' ')))
+ (glyph++)->face_id = face_id;
+ }
}
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r99790: Fix highlight of trailing whitespace is right-to-left lines.,
Eli Zaretskii <=