# HG changeset patch # User Kenichi Handa # Date 1204167443 0 # Node ID 53a9aa8fe860d8869d0b276a1022c00dedb665be # Parent b014e94ceb9707dc57910370cce564e0f41b675c (display_mode_element): Cancel the previous change. (decode_mode_spec): Likewise. diff -r b014e94ceb97 -r 53a9aa8fe860 src/xdisp.c --- a/src/xdisp.c Thu Feb 28 01:58:07 2008 +0000 +++ b/src/xdisp.c Thu Feb 28 02:57:23 2008 +0000 @@ -917,8 +917,7 @@ 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 *, - Lisp_Object *)); +static char *decode_mode_spec P_ ((struct window *, int, int, int, int *)); 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, @@ -17223,14 +17222,13 @@ 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, - &string); + spec + = decode_mode_spec (it->w, c, field, prec, &multibyte); switch (mode_line_target) { @@ -17240,24 +17238,19 @@ break; case MODE_LINE_STRING: { - if (NILP (string)) - { - int len = strlen (spec); - string = make_string (spec, len); - } + int len = strlen (spec); + Lisp_Object tem = 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, string, 0, field, prec, props); + n += store_mode_line_string (NULL, tem, 0, field, prec, props); } break; case MODE_LINE_DISPLAY: { int nglyphs_before, nwritten; - if (STRINGP (string)) - spec = NULL; nglyphs_before = it->glyph_row->used[TEXT_AREA]; - nwritten = display_string (spec, string, elt, + nwritten = display_string (spec, Qnil, elt, charpos, 0, it, field, prec, 0, multibyte); @@ -17921,19 +17914,18 @@ static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; static char * -decode_mode_spec (w, c, field_width, precision, multibyte, string) +decode_mode_spec (w, c, field_width, precision, multibyte) 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; - *string = obj = Qnil; + obj = Qnil; *multibyte = 0; switch (c) @@ -18326,7 +18318,6 @@ if (STRINGP (obj)) { *multibyte = STRING_MULTIBYTE (obj); - *string = obj; return (char *) SDATA (obj); } else