diff options
| author | Stefan Monnier | 2008-03-19 15:02:00 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-03-19 15:02:00 +0000 |
| commit | 6355802033d202c63f6fff4b77bf2b0c7aecceef (patch) | |
| tree | 2043e72bf51184bf17d7af18dc4f5231762d8d72 /src | |
| parent | d63b01e1498ccc02149f4102f0888f454d75f43e (diff) | |
| download | emacs-6355802033d202c63f6fff4b77bf2b0c7aecceef.tar.gz emacs-6355802033d202c63f6fff4b77bf2b0c7aecceef.zip | |
(format_mode_line_unwind_data): Add window argument.
(unwind_format_mode_line): Restore selected window.
(x_consider_frame_title, Fformat_mode_line): Set selected window.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xdisp.c | 22 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index c9bb095afea..0dc18c83880 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2008-03-19 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * xdisp.c (format_mode_line_unwind_data): Add window argument. | ||
| 4 | (unwind_format_mode_line): Restore selected window. | ||
| 5 | (x_consider_frame_title, Fformat_mode_line): Set selected window. | ||
| 6 | |||
| 1 | 2008-03-17 Stefan Monnier <monnier@iro.umontreal.ca> | 7 | 2008-03-17 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 8 | ||
| 3 | * editfns.c (Fchar_equal): Check they are valid characters. | 9 | * editfns.c (Fchar_equal): Check they are valid characters. |
diff --git a/src/xdisp.c b/src/xdisp.c index add712fc85b..d075d34bb1f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -9092,8 +9092,9 @@ static Lisp_Object mode_line_string_face_prop; | |||
| 9092 | static Lisp_Object Vmode_line_unwind_vector; | 9092 | static Lisp_Object Vmode_line_unwind_vector; |
| 9093 | 9093 | ||
| 9094 | static Lisp_Object | 9094 | static Lisp_Object |
| 9095 | format_mode_line_unwind_data (obuf, save_proptrans) | 9095 | format_mode_line_unwind_data (struct buffer *obuf, |
| 9096 | struct buffer *obuf; | 9096 | Lisp_Object owin, |
| 9097 | int save_proptrans) | ||
| 9097 | { | 9098 | { |
| 9098 | Lisp_Object vector, tmp; | 9099 | Lisp_Object vector, tmp; |
| 9099 | 9100 | ||
| @@ -9103,7 +9104,7 @@ format_mode_line_unwind_data (obuf, save_proptrans) | |||
| 9103 | Vmode_line_unwind_vector = Qnil; | 9104 | Vmode_line_unwind_vector = Qnil; |
| 9104 | 9105 | ||
| 9105 | if (NILP (vector)) | 9106 | if (NILP (vector)) |
| 9106 | vector = Fmake_vector (make_number (7), Qnil); | 9107 | vector = Fmake_vector (make_number (8), Qnil); |
| 9107 | 9108 | ||
| 9108 | ASET (vector, 0, make_number (mode_line_target)); | 9109 | ASET (vector, 0, make_number (mode_line_target)); |
| 9109 | ASET (vector, 1, make_number (MODE_LINE_NOPROP_LEN (0))); | 9110 | ASET (vector, 1, make_number (MODE_LINE_NOPROP_LEN (0))); |
| @@ -9117,6 +9118,7 @@ format_mode_line_unwind_data (obuf, save_proptrans) | |||
| 9117 | else | 9118 | else |
| 9118 | tmp = Qnil; | 9119 | tmp = Qnil; |
| 9119 | ASET (vector, 6, tmp); | 9120 | ASET (vector, 6, tmp); |
| 9121 | ASET (vector, 7, owin); | ||
| 9120 | 9122 | ||
| 9121 | return vector; | 9123 | return vector; |
| 9122 | } | 9124 | } |
| @@ -9133,6 +9135,10 @@ unwind_format_mode_line (vector) | |||
| 9133 | mode_line_string_face = AREF (vector, 4); | 9135 | mode_line_string_face = AREF (vector, 4); |
| 9134 | mode_line_string_face_prop = AREF (vector, 5); | 9136 | mode_line_string_face_prop = AREF (vector, 5); |
| 9135 | 9137 | ||
| 9138 | if (!NILP (AREF (vector, 7))) | ||
| 9139 | /* Select window before buffer, since it may change the buffer. */ | ||
| 9140 | Fselect_window (AREF (vector, 7), Qt); | ||
| 9141 | |||
| 9136 | if (!NILP (AREF (vector, 6))) | 9142 | if (!NILP (AREF (vector, 6))) |
| 9137 | { | 9143 | { |
| 9138 | set_buffer_internal_1 (XBUFFER (AREF (vector, 6))); | 9144 | set_buffer_internal_1 (XBUFFER (AREF (vector, 6))); |
| @@ -9252,8 +9258,10 @@ x_consider_frame_title (frame) | |||
| 9252 | mode_line_target so that display_mode_element will output into | 9258 | mode_line_target so that display_mode_element will output into |
| 9253 | mode_line_noprop_buf; then display the title. */ | 9259 | mode_line_noprop_buf; then display the title. */ |
| 9254 | record_unwind_protect (unwind_format_mode_line, | 9260 | record_unwind_protect (unwind_format_mode_line, |
| 9255 | format_mode_line_unwind_data (current_buffer, 0)); | 9261 | format_mode_line_unwind_data |
| 9262 | (current_buffer, selected_window, 0)); | ||
| 9256 | 9263 | ||
| 9264 | Fselect_window (f->selected_window, Qt); | ||
| 9257 | set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->buffer)); | 9265 | set_buffer_internal_1 (XBUFFER (XWINDOW (f->selected_window)->buffer)); |
| 9258 | fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; | 9266 | fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; |
| 9259 | 9267 | ||
| @@ -16924,7 +16932,7 @@ display_mode_line (w, face_id, format) | |||
| 16924 | it.base_face_id = it.face_id = DEFAULT_FACE_ID; | 16932 | it.base_face_id = it.face_id = DEFAULT_FACE_ID; |
| 16925 | 16933 | ||
| 16926 | record_unwind_protect (unwind_format_mode_line, | 16934 | record_unwind_protect (unwind_format_mode_line, |
| 16927 | format_mode_line_unwind_data (NULL, 0)); | 16935 | format_mode_line_unwind_data (NULL, Qnil, 0)); |
| 16928 | 16936 | ||
| 16929 | mode_line_target = MODE_LINE_DISPLAY; | 16937 | mode_line_target = MODE_LINE_DISPLAY; |
| 16930 | 16938 | ||
| @@ -17626,9 +17634,11 @@ are the selected window and the window's buffer). */) | |||
| 17626 | /* Save things including mode_line_proptrans_alist, | 17634 | /* Save things including mode_line_proptrans_alist, |
| 17627 | and set that to nil so that we don't alter the outer value. */ | 17635 | and set that to nil so that we don't alter the outer value. */ |
| 17628 | record_unwind_protect (unwind_format_mode_line, | 17636 | record_unwind_protect (unwind_format_mode_line, |
| 17629 | format_mode_line_unwind_data (old_buffer, 1)); | 17637 | format_mode_line_unwind_data |
| 17638 | (old_buffer, selected_window, 1)); | ||
| 17630 | mode_line_proptrans_alist = Qnil; | 17639 | mode_line_proptrans_alist = Qnil; |
| 17631 | 17640 | ||
| 17641 | Fselect_window (window, Qt); | ||
| 17632 | if (old_buffer) | 17642 | if (old_buffer) |
| 17633 | set_buffer_internal_1 (XBUFFER (buffer)); | 17643 | set_buffer_internal_1 (XBUFFER (buffer)); |
| 17634 | 17644 | ||