+2005-05-31 Kim F. Storm <storm@cua.dk>
+
+ * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end)
+ (mode_line_noprop_ptr): Rename from frame_title_*.
+ (store_mode_line_noprop_char): Rename from store_frame_title_char.
+ (store_mode_line_noprop): Rename from store_frame_title.
+ (mode_line_target): New enum to specify current output target
+ for mode line formatting.
+ (display_mode_element): Test it rather than frame_title_ptr and
+ mode_line_string_list to determine where output should go.
+ (mode_line_proptrans_alist, mode_line_string_alist): Make static.
+ (Vmode_line_unwind_vector): New variable.
+ (format_mode_line_unwind_data, unwind_format_mode_line): New
+ functions for unwind protection in mode line formatting.
+ (x_consider_frame_title): Use them and new local var 'title_start'
+ to support nested calls to format-mode-line. Set mode_line_target
+ to MODE_LINE_TITLE.
+ (Fformat_mode_line): Use them and new local var 'string_start' to
+ support nested calls to format-mode-line. Set mode_line_target to
+ MODE_LINE_NOPROP or MODE_LINE_STRING. Don't trim trailing dashes.
+ (decode_mode_spec): Don't make infinite number of trailing dashes
+ for MODE_LINE_NOPROP and MODE_LINE_STRING targets.
+ (syms_of_xdisp): Initialize and staticpro mode_line_string_face,
+ mode_line_string_face_prop, and Vmode_line_unwind_vector.
+ (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf.
+ Initialize mode_line_target to MODE_LINE_DISPLAY.
+
2005-05-29 Richard M. Stallman <rms@gnu.org>
* buffer.c (Fbuffer_local_value): Call indirect_variable.