aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2008-02-21 07:06:33 +0000
committerKenichi Handa2008-02-21 07:06:33 +0000
commita73b5627535f7183c9d3815e75cb65650dbf53b9 (patch)
treeea4cf2af8a68c390303450636694276ff4430c12 /src
parentb19aa6dd027c2d9de56468c32366a5037ec908a1 (diff)
downloademacs-a73b5627535f7183c9d3815e75cb65650dbf53b9.tar.gz
emacs-a73b5627535f7183c9d3815e75cb65650dbf53b9.zip
(decode_mode_spec): New arg string.
(display_mode_element): Adjusted for the above change.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xdisp.c26
2 files changed, 22 insertions, 9 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6d80913dd8b..8d8f026fb9a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12008-02-21 Kenichi Handa <handa@ni.aist.go.jp>
2
3 * xdisp.c (decode_mode_spec): New arg string.
4 (display_mode_element): Adjusted for the above change.
5
12008-02-19 Stefan Monnier <monnier@iro.umontreal.ca> 62008-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
2 7
3 * callint.c (Fcall_interactively): Use AREF. 8 * 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 *));
917static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object)); 917static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object));
918static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int)); 918static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int));
919static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object)); 919static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object));
920static char *decode_mode_spec P_ ((struct window *, int, int, int, int *)); 920static char *decode_mode_spec P_ ((struct window *, int, int, int, int *,
921 Lisp_Object *));
921static void display_menu_bar P_ ((struct window *)); 922static void display_menu_bar P_ ((struct window *));
922static int display_count_lines P_ ((int, int, int, int, int *)); 923static int display_count_lines P_ ((int, int, int, int, int *));
923static int display_string P_ ((unsigned char *, Lisp_Object, Lisp_Object, 924static 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)
17234 int multibyte; 17235 int multibyte;
17235 int bytepos, charpos; 17236 int bytepos, charpos;
17236 unsigned char *spec; 17237 unsigned char *spec;
17238 Lisp_Object string;
17237 17239
17238 bytepos = percent_position; 17240 bytepos = percent_position;
17239 charpos = (STRING_MULTIBYTE (elt) 17241 charpos = (STRING_MULTIBYTE (elt)
17240 ? string_byte_to_char (elt, bytepos) 17242 ? string_byte_to_char (elt, bytepos)
17241 : bytepos); 17243 : bytepos);
17242 17244 spec = decode_mode_spec (it->w, c, field, prec, &multibyte,
17243 spec 17245 &string);
17244 = decode_mode_spec (it->w, c, field, prec, &multibyte);
17245 17246
17246 switch (mode_line_target) 17247 switch (mode_line_target)
17247 { 17248 {
@@ -17251,8 +17252,11 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
17251 break; 17252 break;
17252 case MODE_LINE_STRING: 17253 case MODE_LINE_STRING:
17253 { 17254 {
17254 int len = strlen (spec); 17255 if (NILP (string))
17255 Lisp_Object tem = make_string (spec, len); 17256 {
17257 int len = strlen (spec);
17258 string = make_string (spec, len);
17259 }
17256 props = Ftext_properties_at (make_number (charpos), elt); 17260 props = Ftext_properties_at (make_number (charpos), elt);
17257 /* Should only keep face property in props */ 17261 /* Should only keep face property in props */
17258 n += store_mode_line_string (NULL, tem, 0, field, prec, props); 17262 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)
17262 { 17266 {
17263 int nglyphs_before, nwritten; 17267 int nglyphs_before, nwritten;
17264 17268
17269 if (STRINGP (string))
17270 spec = NULL;
17265 nglyphs_before = it->glyph_row->used[TEXT_AREA]; 17271 nglyphs_before = it->glyph_row->used[TEXT_AREA];
17266 nwritten = display_string (spec, Qnil, elt, 17272 nwritten = display_string (spec, string, elt,
17267 charpos, 0, it, 17273 charpos, 0, it,
17268 field, prec, 0, 17274 field, prec, 0,
17269 multibyte); 17275 multibyte);
@@ -17927,18 +17933,19 @@ decode_mode_spec_coding (coding_system, buf, eol_flag)
17927static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; 17933static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
17928 17934
17929static char * 17935static char *
17930decode_mode_spec (w, c, field_width, precision, multibyte) 17936decode_mode_spec (w, c, field_width, precision, multibyte, string)
17931 struct window *w; 17937 struct window *w;
17932 register int c; 17938 register int c;
17933 int field_width, precision; 17939 int field_width, precision;
17934 int *multibyte; 17940 int *multibyte;
17941 Lisp_Object *string;
17935{ 17942{
17936 Lisp_Object obj; 17943 Lisp_Object obj;
17937 struct frame *f = XFRAME (WINDOW_FRAME (w)); 17944 struct frame *f = XFRAME (WINDOW_FRAME (w));
17938 char *decode_mode_spec_buf = f->decode_mode_spec_buffer; 17945 char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
17939 struct buffer *b = current_buffer; 17946 struct buffer *b = current_buffer;
17940 17947
17941 obj = Qnil; 17948 *string = obj = Qnil;
17942 *multibyte = 0; 17949 *multibyte = 0;
17943 17950
17944 switch (c) 17951 switch (c)
@@ -18331,6 +18338,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
18331 if (STRINGP (obj)) 18338 if (STRINGP (obj))
18332 { 18339 {
18333 *multibyte = STRING_MULTIBYTE (obj); 18340 *multibyte = STRING_MULTIBYTE (obj);
18341 *string = obj;
18334 return (char *) SDATA (obj); 18342 return (char *) SDATA (obj);
18335 } 18343 }
18336 else 18344 else