aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2010-03-29 08:26:24 -0400
committerEli Zaretskii2010-03-29 08:26:24 -0400
commitf4b6ba46b857e140c6482c0542c70fc989b1fe85 (patch)
treee11b18a23b3a1ef8cfd0f535fec388d2fb3184a1 /src
parentc0546589ab9573047bb0d6cb82e27fe29221b71a (diff)
downloademacs-f4b6ba46b857e140c6482c0542c70fc989b1fe85.tar.gz
emacs-f4b6ba46b857e140c6482c0542c70fc989b1fe85.zip
Support MS-Windows build and reversed rows in GUI frames; add initial docs.
doc/emacs/mule.texi (International): Mention support of bidirectional editing. (Bidirectional Editing): New section. etc/HELLO: Reorder Arabic and Hebrew into logical order, and insert RLM before the opening paren, to make the display more reasonable. Add setting for bidi-display-reordering in the local variables section. lisp/files.el: Make bidi-display-reordering safe variable for boolean values. src/xdisp (append_glyph): If the glyph row is reversed, prepend the glyph rather than appending it. src/makefile.w32-in (OBJ1): Add $(BLD)/bidi.$(O). ($(BLD)/bidi.$(O)): New target.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog.bidi20
-rw-r--r--src/makefile.w32-in9
-rw-r--r--src/xdisp.c20
3 files changed, 47 insertions, 2 deletions
diff --git a/src/ChangeLog.bidi b/src/ChangeLog.bidi
index d27f747466b..33982c21450 100644
--- a/src/ChangeLog.bidi
+++ b/src/ChangeLog.bidi
@@ -1,5 +1,25 @@
12010-03-29 Eli Zaretskii <eliz@gnu.org>
2
3 * doc/emacs/mule.texi (International): Mention support of
4 bidirectional editing.
5 (Bidirectional Editing): New section.
6
12010-03-28 Eli Zaretskii <eliz@gnu.org> 72010-03-28 Eli Zaretskii <eliz@gnu.org>
2 8
9 * etc/HELLO: Reorder Arabic and Hebrew into logical order, and
10 insert RLM before the opening paren, to make the display more
11 reasonable. Add setting for bidi-display-reordering in the local
12 variables section.
13
14 * lisp/files.el: Make bidi-display-reordering safe variable for
15 boolean values.
16
17 * xdisp (append_glyph): If the glyph row is reversed, prepend the
18 glyph rather than appending it.
19
20 * makefile.w32-in (OBJ1): Add $(BLD)/bidi.$(O).
21 ($(BLD)/bidi.$(O)): New target.
22
3 * bidi.c (bidi_get_next_char_visually): Improve commentary. 23 * bidi.c (bidi_get_next_char_visually): Improve commentary.
4 24
5 * dispextern.h (PRODUCE_GLYPHS): Set the reversed_p flag in the 25 * dispextern.h (PRODUCE_GLYPHS): Set the reversed_p flag in the
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 156eddd6092..edb3f3f711b 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -115,6 +115,7 @@ OBJ1 = $(BLD)/alloc.$(O) \
115 $(BLD)/vm-limit.$(O) \ 115 $(BLD)/vm-limit.$(O) \
116 $(BLD)/region-cache.$(O) \ 116 $(BLD)/region-cache.$(O) \
117 $(BLD)/strftime.$(O) \ 117 $(BLD)/strftime.$(O) \
118 $(BLD)/bidi.$(O) \
118 $(BLD)/charset.$(O) \ 119 $(BLD)/charset.$(O) \
119 $(BLD)/character.$(O) \ 120 $(BLD)/character.$(O) \
120 $(BLD)/chartab.$(O) \ 121 $(BLD)/chartab.$(O) \
@@ -338,6 +339,14 @@ $(BLD)/atimer.$(O) : \
338 $(SRC)/syssignal.h \ 339 $(SRC)/syssignal.h \
339 $(SRC)/systime.h 340 $(SRC)/systime.h
340 341
342$(BLD)/bidi.$(O) : \
343 $(SRC)/bidi.c \
344 $(CONFIG_H) \
345 $(SRC)/lisp.h \
346 $(SRC)/buffer.h \
347 $(SRC)/character.h \
348 $(SRC)/dispextern.h
349
341$(BLD)/buffer.$(O) : \ 350$(BLD)/buffer.$(O) : \
342 $(SRC)/buffer.c \ 351 $(SRC)/buffer.c \
343 $(CONFIG_H) \ 352 $(CONFIG_H) \
diff --git a/src/xdisp.c b/src/xdisp.c
index 867018180aa..ed2db08905d 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -17823,8 +17823,8 @@ display_line (it)
17823 ++it->vpos; 17823 ++it->vpos;
17824 ++it->glyph_row; 17824 ++it->glyph_row;
17825 /* The next row should use same value of the reversed_p flag as this 17825 /* The next row should use same value of the reversed_p flag as this
17826 one. set_iterator_to_next decides when it's a new paragraph and 17826 one. set_iterator_to_next decides when it's a new paragraph, and
17827 recomputes the value of the flag accordingly. */ 17827 PRODUCE_GLYPHS recomputes the value of the flag accordingly. */
17828 it->glyph_row->reversed_p = row->reversed_p; 17828 it->glyph_row->reversed_p = row->reversed_p;
17829 it->start = row_end; 17829 it->start = row_end;
17830 return row->displays_text_p; 17830 return row->displays_text_p;
@@ -21355,6 +21355,17 @@ append_glyph (it)
21355 glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area]; 21355 glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
21356 if (glyph < it->glyph_row->glyphs[area + 1]) 21356 if (glyph < it->glyph_row->glyphs[area + 1])
21357 { 21357 {
21358 /* If the glyph row is reversed, we need to prepend the glyph
21359 rather than append it. */
21360 if (it->glyph_row->reversed_p && area == TEXT_AREA)
21361 {
21362 struct glyph *g;
21363
21364 /* Make room for the additional glyph. */
21365 for (g = glyph - 1; g >= it->glyph_row->glyphs[area]; g--)
21366 g[1] = *g;
21367 glyph = it->glyph_row->glyphs[area];
21368 }
21358 glyph->charpos = CHARPOS (it->position); 21369 glyph->charpos = CHARPOS (it->position);
21359 glyph->object = it->object; 21370 glyph->object = it->object;
21360 if (it->pixel_width > 0) 21371 if (it->pixel_width > 0)
@@ -21391,6 +21402,11 @@ append_glyph (it)
21391 abort (); 21402 abort ();
21392 glyph->bidi_type = it->bidi_it.type; 21403 glyph->bidi_type = it->bidi_it.type;
21393 } 21404 }
21405 else
21406 {
21407 glyph->resolved_level = 0;
21408 glyph->bidi_type = UNKNOWN_BT;
21409 }
21394 ++it->glyph_row->used[area]; 21410 ++it->glyph_row->used[area];
21395 } 21411 }
21396 else 21412 else