diff options
| author | Kenichi Handa | 2008-02-21 07:06:33 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2008-02-21 07:06:33 +0000 |
| commit | a73b5627535f7183c9d3815e75cb65650dbf53b9 (patch) | |
| tree | ea4cf2af8a68c390303450636694276ff4430c12 /src | |
| parent | b19aa6dd027c2d9de56468c32366a5037ec908a1 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | src/xdisp.c | 26 |
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 @@ | |||
| 1 | 2008-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 | |||
| 1 | 2008-02-19 Stefan Monnier <monnier@iro.umontreal.ca> | 6 | 2008-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 *)); | |||
| 917 | static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object)); | 917 | static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object)); |
| 918 | static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int)); | 918 | static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int)); |
| 919 | static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object)); | 919 | static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object)); |
| 920 | static char *decode_mode_spec P_ ((struct window *, int, int, int, int *)); | 920 | static char *decode_mode_spec P_ ((struct window *, int, int, int, int *, |
| 921 | Lisp_Object *)); | ||
| 921 | static void display_menu_bar P_ ((struct window *)); | 922 | static void display_menu_bar P_ ((struct window *)); |
| 922 | static int display_count_lines P_ ((int, int, int, int, int *)); | 923 | static int display_count_lines P_ ((int, int, int, int, int *)); |
| 923 | static int display_string P_ ((unsigned char *, Lisp_Object, Lisp_Object, | 924 | 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) | |||
| 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) | |||
| 17927 | static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; | 17933 | static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; |
| 17928 | 17934 | ||
| 17929 | static char * | 17935 | static char * |
| 17930 | decode_mode_spec (w, c, field_width, precision, multibyte) | 17936 | decode_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 |