1#ifndef DEFINE_FUNC_ATTRIBUTES
2# define DEFINE_FUNC_ATTRIBUTES
3#endif
4#include "nvim/func_attr.h"
5#undef DEFINE_FUNC_ATTRIBUTES
6static void ui_ext_msg_set_pos(int row, _Bool scrolled);
7static int other_sourcing_name(void);
8static char *get_emsg_source(void) FUNC_ATTR_MALLOC FUNC_ATTR_WARN_UNUSED_RESULT;
9static char *get_emsg_lnum(void) FUNC_ATTR_MALLOC FUNC_ATTR_WARN_UNUSED_RESULT;
10static _Bool emsg_multiline(const char *s, _Bool multiline);
11static _Bool emsgfv(const char *fmt, va_list ap);
12static void msg_emsgf_event(void **argv);
13static void add_msg_hist(const char *s, int len, int attr, _Bool multiline);
14static void hit_return_msg(void);
15static void msg_home_replace_attr(char_u *fname, int attr);
16static char_u *screen_puts_mbyte(char_u *s, int l, int attr);
17static void msg_ext_emit_chunk(void);
18static void msg_puts_display(const char_u *str, int maxlen, int attr, int recurse);
19static void inc_msg_scrolled(void);
20static void store_sb_text(char_u **sb_str, char_u *s, int attr, int *sb_col, int finish );
21static msgchunk_T *msg_sb_start(msgchunk_T *mps);
22static msgchunk_T *disp_sb_line(int row, msgchunk_T *smp);
23static void t_puts(int *t_col, const char_u *t_s, const char_u *s, int attr);
24static void msg_puts_printf(const char *str, const ptrdiff_t maxlen);
25static int do_more_prompt(int typed_char);
26static void msg_screen_putchar(int c, int attr);
27static void redir_write(const char *const str, const ptrdiff_t maxlen);
28static int copy_char(char_u *from, char_u *to, int lowercase );
29static char_u *console_dialog_alloc(const char_u *message, char_u *buttons, _Bool has_hotkey[]);
30static char_u *msg_show_console_dialog(char_u *message, char_u *buttons, int dfltbutton) FUNC_ATTR_NONNULL_RET;
31static void copy_hotkeys_and_msg(const char_u *message, char_u *buttons, int default_button_idx, const _Bool has_hotkey[], char_u *hotkeys_ptr);
32#include "nvim/func_attr.h"
33