# HG changeset patch # User Gerd Moellmann # Date 964441374 0 # Node ID d5335ebcf5016e1ce0fac59bc14c9c15ba424e6c # Parent 52753205028897ffd61c28fd11865d83b9e2a5ab (with_echo_area_buffer): Take additional EMACS_INT parameters instead of using int parameters. Expect FN to accept EMACS_INT parameters. (display_echo_area, resize_echo_area_axactly, current_message) (truncate_echo_area, set_message_1): Call with_echo_area_buffer with new argument list. (resize_mini_window_1): New callback function. (current_message_1, truncate_message_1, set_message_1): Change parameter lists to the new format expected by with_echo_area_buffer. diff -r 527532050288 -r d5335ebcf501 src/xdisp.c --- a/src/xdisp.c Mon Jul 24 11:17:36 2000 +0000 +++ b/src/xdisp.c Mon Jul 24 12:22:54 2000 +0000 @@ -629,12 +629,17 @@ struct glyph_row *)); static Lisp_Object unwind_with_echo_area_buffer P_ ((Lisp_Object)); static Lisp_Object with_echo_area_buffer_unwind_data P_ ((struct window *)); +static int with_echo_area_buffer P_ ((struct window *, int, + int (*) (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT), + EMACS_INT, EMACS_INT, EMACS_INT, + EMACS_INT)); static void clear_garbaged_frames P_ ((void)); -static int current_message_1 P_ ((Lisp_Object *)); -static int truncate_message_1 P_ ((int)); -static int set_message_1 P_ ((char *s, Lisp_Object, int, int)); +static int current_message_1 P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); +static int truncate_message_1 P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); +static int set_message_1 P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); static int display_echo_area P_ ((struct window *)); -static int display_echo_area_1 P_ ((struct window *)); +static int display_echo_area_1 P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); +static int resize_mini_window_1 P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); static Lisp_Object unwind_redisplay P_ ((Lisp_Object)); static int string_char_and_length P_ ((unsigned char *, int, int *)); static struct text_pos display_prop_end P_ ((struct it *, Lisp_Object, @@ -5441,7 +5446,7 @@ } -/* Call FN with args A1..A5 with either the current or last displayed +/* Call FN with args A1..A4 with either the current or last displayed echo_area_buffer as current buffer. WHICH zero means use the current message buffer @@ -5458,11 +5463,11 @@ Value is what FN returns. */ static int -with_echo_area_buffer (w, which, fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) +with_echo_area_buffer (w, which, fn, a1, a2, a3, a4) struct window *w; int which; - int (*fn) (); - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; + int (*fn) P_ ((EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT)); + EMACS_INT a1, a2, a3, a4; { Lisp_Object buffer; int this_one, the_other, clear_buffer_p, rc; @@ -5528,7 +5533,7 @@ xassert (BEGV >= BEG); xassert (ZV <= Z && ZV >= BEGV); - rc = fn (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); + rc = fn (a1, a2, a3, a4); xassert (BEGV >= BEG); xassert (ZV <= Z && ZV >= BEGV); @@ -5699,7 +5704,8 @@ window_height_changed_p = with_echo_area_buffer (w, display_last_displayed_message_p, - (int (*) ()) display_echo_area_1, w); + display_echo_area_1, + (EMACS_INT) w, 0, 0, 0); if (no_message_p) echo_area_buffer[i] = Qnil; @@ -5710,14 +5716,16 @@ /* Helper for display_echo_area. Display the current buffer which - contains the current echo area message in window W, a mini-window. + contains the current echo area message in window W, a mini-window, + a pointer to which is passed in A1. A2..A4 are currently not used. Change the height of W so that all of the message is displayed. Value is non-zero if height of W was changed. */ static int -display_echo_area_1 (w) - struct window *w; -{ +display_echo_area_1 (a1, a2, a3, a4) + EMACS_INT a1, a2, a3, a4; +{ + struct window *w = (struct window *) a1; Lisp_Object window; struct text_pos start; int window_height_changed_p = 0; @@ -5748,9 +5756,8 @@ struct window *w = XWINDOW (echo_area_window); int resized_p; - resized_p = with_echo_area_buffer (w, 0, - (int (*) ()) resize_mini_window, - w, 1); + resized_p = with_echo_area_buffer (w, 0, resize_mini_window_1, + (EMACS_INT) w, 0, 0, 0); if (resized_p) { ++windows_or_buffers_changed; @@ -5761,6 +5768,19 @@ } +/* Callback function for with_echo_area_buffer, when used from + resize_echo_area_axactly. A1 contains a pointer to the window to + resize, A2 to A4 are not used. Value is what resize_mini_window + returns. */ + +static int +resize_mini_window_1 (a1, a2, a3, a4) + EMACS_INT a1, a2, a3, a4; +{ + return resize_mini_window ((struct window *) a1, 1); +} + + /* Resize mini-window W to fit the size of its contents. EXACT:P means size the window exactly to the size needed. Otherwise, it's only enlarged until W's buffer is empty. Value is non-zero if @@ -5866,7 +5886,8 @@ msg = Qnil; else { - with_echo_area_buffer (0, 0, (int (*) ()) current_message_1, &msg); + with_echo_area_buffer (0, 0, current_message_1, + (EMACS_INT) &msg, 0, 0, 0); if (NILP (msg)) echo_area_buffer[0] = Qnil; } @@ -5876,9 +5897,11 @@ static int -current_message_1 (msg) - Lisp_Object *msg; -{ +current_message_1 (a1, a2, a3, a4) + EMACS_INT a1, a2, a3, a4; +{ + Lisp_Object *msg = (Lisp_Object *) a1; + if (Z > BEG) *msg = make_buffer_string (BEG, Z, 1); else @@ -5958,7 +5981,7 @@ { struct frame *sf = SELECTED_FRAME (); if (FRAME_MESSAGE_BUF (sf)) - with_echo_area_buffer (0, 0, (int (*) ()) truncate_message_1, nchars); + with_echo_area_buffer (0, 0, truncate_message_1, nchars, 0, 0, 0); } } @@ -5967,8 +5990,8 @@ message to at most NCHARS characters. */ static int -truncate_message_1 (nchars) - int nchars; +truncate_message_1 (nchars, a2, a3, a4) + EMACS_INT nchars, a2, a3, a4; { if (BEG + nchars < Z) del_range (BEG + nchars, Z); @@ -5998,22 +6021,24 @@ = ((s && multibyte_p) || (STRINGP (string) && STRING_MULTIBYTE (string))); - with_echo_area_buffer (0, -1, (int (*) ()) set_message_1, - s, string, nbytes, multibyte_p); + with_echo_area_buffer (0, -1, set_message_1, + (EMACS_INT) s, string, nbytes, multibyte_p); message_buf_print = 0; } /* Helper function for set_message. Arguments have the same meaning - as there. This function is called with the echo area buffer being + as there, with A1 corresponding to S and A2 corresponding to STRING + This function is called with the echo area buffer being current. */ static int -set_message_1 (s, string, nbytes, multibyte_p) - char *s; - Lisp_Object string; - int nbytes, multibyte_p; -{ +set_message_1 (a1, a2, nbytes, multibyte_p) + EMACS_INT a1, a2, nbytes, multibyte_p; +{ + char *s = (char *) a1; + Lisp_Object string = (Lisp_Object) a2; + xassert (BEG == Z); /* Change multibyteness of the echo buffer appropriately. */