Commit 72f62cb5 authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

(decode_mode_spec): Add parameter MULTIBYTE.

(display_mode_element): Display the string from decode_mode_spec
depending on its multibyteness.
parent a2697022
2001-09-19 Gerd Moellmann <gerd@gnu.org>
* xdisp.c (decode_mode_spec): Add parameter MULTIBYTE.
(display_mode_element): Display the string from decode_mode_spec
depending on its multibyteness.
* s/netbsd.h (LD_SWITCH_SYSTEM, C_SWITCH_SYSTEM): Add /usr/pkg.
* m/macppc.h (DATA_SEG_BITS): Also define for GCC 3.
......
......@@ -732,7 +732,7 @@ static int display_line P_ ((struct it *));
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));
static char *decode_mode_spec P_ ((struct window *, int, int, int));
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,
......@@ -13449,22 +13449,25 @@ display_mode_element (it, depth, field_width, precision, elt)
Vglobal_mode_string);
else if (c != 0)
{
int multibyte;
unsigned char *spec
= decode_mode_spec (it->w, c, field, prec);
= decode_mode_spec (it->w, c, field, prec, &multibyte);
if (frame_title_ptr)
n += store_frame_title (spec, field, prec);
else
{
int nglyphs_before
= it->glyph_row->used[TEXT_AREA];
int bytepos
= percent_position - XSTRING (elt)->data;
int charpos
= string_byte_to_char (elt, bytepos);
int nwritten
= display_string (spec, Qnil, elt, charpos, 0, it,
field, prec, 0, -1);
int nglyphs_before, bytepos, charpos, nwritten;
nglyphs_before = it->glyph_row->used[TEXT_AREA];
bytepos = percent_position - XSTRING (elt)->data;
charpos = (multibyte
? string_byte_to_char (elt, bytepos)
: bytepos);
nwritten = display_string (spec, Qnil, elt,
charpos, 0, it,
field, prec, 0,
multibyte);
/* Assign to the glyphs written above the
string where the `%x' came from, position
......@@ -13760,15 +13763,17 @@ decode_mode_spec_coding (coding_system, buf, eol_flag)
/* Return a string for the output of a mode line %-spec for window W,
generated by character C. PRECISION >= 0 means don't return a
string longer than that value. FIELD_WIDTH > 0 means pad the
string returned with spaces to that value. */
string returned with spaces to that value. Return 1 in *MULTIBYTE
if the result is multibyte text. */
static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
static char *
decode_mode_spec (w, c, field_width, precision)
decode_mode_spec (w, c, field_width, precision, multibyte)
struct window *w;
register int c;
int field_width, precision;
int *multibyte;
{
Lisp_Object obj;
struct frame *f = XFRAME (WINDOW_FRAME (w));
......@@ -13776,6 +13781,7 @@ decode_mode_spec (w, c, field_width, precision)
struct buffer *b = XBUFFER (w->buffer);
obj = Qnil;
*multibyte = 0;
switch (c)
{
......@@ -14109,7 +14115,10 @@ decode_mode_spec (w, c, field_width, precision)
}
if (STRINGP (obj))
return (char *) XSTRING (obj)->data;
{
*multibyte = STRING_MULTIBYTE (obj);
return (char *) XSTRING (obj)->data;
}
else
return "";
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment