/* message.c */
extern int msg __ARGS((char_u *s));
extern int verb_msg __ARGS((char_u *s));
extern int msg_attr __ARGS((char_u *s, int attr));
extern int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
extern char_u *msg_strtrunc __ARGS((char_u *s, int force));
extern void trunc_string __ARGS((char_u *s, char_u *buf, int room));
extern void reset_last_sourcing __ARGS((void));
extern void msg_source __ARGS((int attr));
extern int emsg_not_now __ARGS((void));
extern int emsg __ARGS((char_u *s));
extern int emsg2 __ARGS((char_u *s, char_u *a1));
extern void emsg_invreg __ARGS((int name));
extern char_u *msg_trunc_attr __ARGS((char_u *s, int force, int attr));
extern char_u *msg_may_trunc __ARGS((int force, char_u *s));
extern int delete_first_msg __ARGS((void));
extern void ex_messages __ARGS((exarg_T *eap));
extern void msg_end_prompt __ARGS((void));
extern void wait_return __ARGS((int redraw));
extern void set_keep_msg __ARGS((char_u *s, int attr));
extern void set_keep_msg_from_hist __ARGS((void));
extern void msg_start __ARGS((void));
extern void msg_starthere __ARGS((void));
extern void msg_putchar __ARGS((int c));
extern void msg_putchar_attr __ARGS((int c, int attr));
extern void msg_outnum __ARGS((long n));
extern void msg_home_replace __ARGS((char_u *fname));
extern void msg_home_replace_hl __ARGS((char_u *fname));
extern int msg_outtrans __ARGS((char_u *str));
extern int msg_outtrans_attr __ARGS((char_u *str, int attr));
extern int msg_outtrans_len __ARGS((char_u *str, int len));
extern char_u *msg_outtrans_one __ARGS((char_u *p, int attr));
extern int msg_outtrans_len_attr __ARGS((char_u *msgstr, int len, int attr));
extern void msg_make __ARGS((char_u *arg));
extern int msg_outtrans_special __ARGS((char_u *strstart, int from));
extern char_u *str2special __ARGS((char_u **sp, int from));
extern void str2specialbuf __ARGS((char_u *sp, char_u *buf, int len));
extern void msg_prt_line __ARGS((char_u *s, int list));
extern void msg_puts __ARGS((char_u *s));
extern void msg_puts_title __ARGS((char_u *s));
extern void msg_puts_long_attr __ARGS((char_u *longstr, int attr));
extern void msg_puts_long_len_attr __ARGS((char_u *longstr, int len, int attr));
extern void msg_puts_attr __ARGS((char_u *s, int attr));
extern void may_clear_sb_text __ARGS((void));
extern void clear_sb_text __ARGS((void));
extern void show_sb_text __ARGS((void));
extern int msg_use_printf __ARGS((void));
extern void mch_errmsg __ARGS((char *str));
extern void mch_msg __ARGS((char *str));
extern void msg_moremsg __ARGS((int full));
extern void repeat_message __ARGS((void));
extern void msg_clr_eos __ARGS((void));
extern void msg_clr_eos_force __ARGS((void));
extern void msg_clr_cmdline __ARGS((void));
extern int msg_end __ARGS((void));
extern void msg_check __ARGS((void));
extern void verbose_enter __ARGS((void));
extern void verbose_leave __ARGS((void));
extern void verbose_enter_scroll __ARGS((void));
extern void verbose_leave_scroll __ARGS((void));
extern void verbose_stop __ARGS((void));
extern int verbose_open __ARGS((void));
extern void give_warning __ARGS((char_u *message, int hl));
extern void msg_advance __ARGS((int col));
extern int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
extern void display_confirm_msg __ARGS((void));
extern int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
extern int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
extern int vim_dialog_yesnoallcancel __ARGS((int type, char_u *title, char_u *message, int dflt));
extern char_u *do_browse __ARGS((int flags, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter, buf_T *buf));
/* vim: set ft=c : */
