From a73b5627535f7183c9d3815e75cb65650dbf53b9 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 21 Feb 2008 07:06:33 +0000 Subject: [PATCH] (decode_mode_spec): New arg string. (display_mode_element): Adjusted for the above change. --- lisp/ChangeLog | 10 ++++++++++ src/ChangeLog | 5 +++++ src/xdisp.c | 26 +++++++++++++++++--------- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f844919704d..8e736a4f3a0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2008-02-21 Kenichi Handa + + * composite.el (compose-chars-after): Fix arguments for a function + in composition-function-table. + (auto-compose-region): Likewise. + + * ps-mule.el (ps-mule-font-info-database-bdf): Use + ethio16f-uni.bdf for Ethiopic. + (ps-mule-plot-string): Ignore glyph-string based compositions. + 2008-02-21 Stefan Monnier * doc-view.el: Allow different windows to show different pages. diff --git a/src/ChangeLog b/src/ChangeLog index 6d80913dd8b..8d8f026fb9a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-02-21 Kenichi Handa + + * xdisp.c (decode_mode_spec): New arg string. + (display_mode_element): Adjusted for the above change. + 2008-02-19 Stefan Monnier * callint.c (Fcall_interactively): Use AREF. diff --git a/src/xdisp.c b/src/xdisp.c index cb4967c705a..7e41f157f36 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -917,7 +917,8 @@ static int display_mode_lines P_ ((struct window *)); static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object)); static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int)); static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object)); -static char *decode_mode_spec P_ ((struct window *, int, int, int, int *)); +static char *decode_mode_spec P_ ((struct window *, int, int, int, int *, + Lisp_Object *)); static void display_menu_bar P_ ((struct window *)); static int display_count_lines P_ ((int, int, int, int, int *)); static int display_string P_ ((unsigned char *, Lisp_Object, Lisp_Object, @@ -17234,14 +17235,14 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky) int multibyte; int bytepos, charpos; unsigned char *spec; + Lisp_Object string; bytepos = percent_position; charpos = (STRING_MULTIBYTE (elt) ? string_byte_to_char (elt, bytepos) : bytepos); - - spec - = decode_mode_spec (it->w, c, field, prec, &multibyte); + spec = decode_mode_spec (it->w, c, field, prec, &multibyte, + &string); switch (mode_line_target) { @@ -17251,8 +17252,11 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky) break; case MODE_LINE_STRING: { - int len = strlen (spec); - Lisp_Object tem = make_string (spec, len); + if (NILP (string)) + { + int len = strlen (spec); + string = make_string (spec, len); + } props = Ftext_properties_at (make_number (charpos), elt); /* Should only keep face property in props */ n += store_mode_line_string (NULL, tem, 0, field, prec, props); @@ -17262,8 +17266,10 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky) { int nglyphs_before, nwritten; + if (STRINGP (string)) + spec = NULL; nglyphs_before = it->glyph_row->used[TEXT_AREA]; - nwritten = display_string (spec, Qnil, elt, + nwritten = display_string (spec, string, elt, charpos, 0, it, field, prec, 0, multibyte); @@ -17927,18 +17933,19 @@ decode_mode_spec_coding (coding_system, buf, eol_flag) static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; static char * -decode_mode_spec (w, c, field_width, precision, multibyte) +decode_mode_spec (w, c, field_width, precision, multibyte, string) struct window *w; register int c; int field_width, precision; int *multibyte; + Lisp_Object *string; { Lisp_Object obj; struct frame *f = XFRAME (WINDOW_FRAME (w)); char *decode_mode_spec_buf = f->decode_mode_spec_buffer; struct buffer *b = current_buffer; - obj = Qnil; + *string = obj = Qnil; *multibyte = 0; switch (c) @@ -18331,6 +18338,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte) if (STRINGP (obj)) { *multibyte = STRING_MULTIBYTE (obj); + *string = obj; return (char *) SDATA (obj); } else -- 2.39.2