File: //home/ubuntu/neovim/build/src/nvim/auto/quickfix.c.generated.h
#define DEFINE_FUNC_ATTRIBUTES
#include "nvim/func_attr.h"
#undef DEFINE_FUNC_ATTRIBUTES
static garray_T *qfga_get(void);
static void qfga_clear(void);
static int qf_init_process_nextline(qf_list_T *qfl, efm_T *fmt_first, qfstate_T *state, qffields_T *fields);
static char *efmpat_to_regpat(const char *efmpat, char *regpat, efm_T *efminfo, int idx, int round) FUNC_ATTR_NONNULL_ALL;
static char *scanf_fmt_to_regpat(const char **pefmp, const char *efm, int len, char *regpat) FUNC_ATTR_NONNULL_ALL;
static const char *efm_analyze_prefix(const char *efmp, efm_T *efminfo) FUNC_ATTR_NONNULL_ALL;
static int efm_to_regpat(const char *efm, int len, efm_T *fmt_ptr, char *regpat) FUNC_ATTR_NONNULL_ALL;
static void free_efm_list(efm_T **efm_first);
static size_t efm_regpat_bufsz(char *efm);
static int efm_option_part_len(const char *efm);
static efm_T *parse_efm_option(char *efm);
static char *qf_grow_linebuf(qfstate_T *state, size_t newsz);
static int qf_get_next_str_line(qfstate_T *state);
static int qf_get_next_list_line(qfstate_T *state);
static int qf_get_next_buf_line(qfstate_T *state);
static int qf_get_next_file_line(qfstate_T *state);
static int qf_get_nextline(qfstate_T *state);
static _Bool qf_stack_empty(const qf_info_T *qi) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_list_empty(qf_list_T *qfl) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_list_has_valid_entries(qf_list_T *qfl);
static qf_list_T *qf_get_list(qf_info_T *qi, int idx) FUNC_ATTR_NONNULL_ALL;
static int qf_parse_line(qf_list_T *qfl, char *linebuf, size_t linelen, efm_T *fmt_first, qffields_T *fields);
static void qf_alloc_fields(qffields_T *pfields) FUNC_ATTR_NONNULL_ALL;
static void qf_free_fields(qffields_T *pfields) FUNC_ATTR_NONNULL_ALL;
static int qf_setup_state(qfstate_T *pstate, char *restrict enc, const char *restrict efile, typval_T *tv, buf_T *buf, linenr_T lnumfirst, linenr_T lnumlast) FUNC_ATTR_NONNULL_ARG(1);
static void qf_cleanup_state(qfstate_T *pstate) FUNC_ATTR_NONNULL_ALL;
static int qf_init_ext(qf_info_T *qi, int qf_idx, const char *restrict efile, buf_T *buf, typval_T *tv, char *restrict errorformat, _Bool newlist, linenr_T lnumfirst, linenr_T lnumlast, const char *restrict qf_title, char *restrict enc) FUNC_ATTR_NONNULL_ARG(1);
static void qf_store_title(qf_list_T *qfl, const char *title) FUNC_ATTR_NONNULL_ARG(1);
static char *qf_cmdtitle(char *cmd);
static qf_list_T *qf_get_curlist(qf_info_T *qi) FUNC_ATTR_NONNULL_ALL;
static void qf_new_list(qf_info_T *qi, const char *qf_title);
static int qf_parse_fmt_f(regmatch_T *rmp, int midx, qffields_T *fields, int prefix);
static int qf_parse_fmt_b(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_n(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_l(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_e(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_c(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_k(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_t(regmatch_T *rmp, int midx, qffields_T *fields);
static int copy_nonerror_line(const char *linebuf, size_t linelen, qffields_T *fields) FUNC_ATTR_NONNULL_ALL;
static int qf_parse_fmt_m(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_r(regmatch_T *rmp, int midx, char **tail);
static int qf_parse_fmt_p(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_v(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_s(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_fmt_o(regmatch_T *rmp, int midx, qffields_T *fields);
static int qf_parse_match(char *linebuf, size_t linelen, efm_T *fmt_ptr, regmatch_T *regmatch, qffields_T *fields, int qf_multiline, int qf_multiscan, char **tail);
static int qf_parse_get_fields(char *linebuf, size_t linelen, efm_T *fmt_ptr, qffields_T *fields, int qf_multiline, int qf_multiscan, char **tail);
static int qf_parse_dir_pfx(int idx, qffields_T *fields, qf_list_T *qfl);
static int qf_parse_file_pfx(int idx, qffields_T *fields, qf_list_T *qfl, char *tail);
static int qf_parse_line_nomatch(char *linebuf, size_t linelen, qffields_T *fields);
static int qf_parse_multiline_pfx(int idx, qf_list_T *qfl, qffields_T *fields);
static void locstack_queue_delreq(qf_info_T *qi);
static void wipe_qf_buffer(qf_info_T *qi) FUNC_ATTR_NONNULL_ALL;
static void ll_free_all(qf_info_T **pqi);
static void incr_quickfix_busy(void);
static void decr_quickfix_busy(void);
static int qf_add_entry(qf_list_T *qfl, char *dir, char *fname, char *module, int bufnum, char *mesg, linenr_T lnum, linenr_T end_lnum, int col, int end_col, char vis_col, char *pattern, int nr, char type, typval_T *user_data, char valid);
static qf_info_T *qf_alloc_stack(qfltype_T qfltype) FUNC_ATTR_NONNULL_RET;
static qf_info_T *ll_get_or_alloc_list(win_T *wp) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET;
static qf_info_T *qf_cmd_get_stack(exarg_T *eap, _Bool print_emsg);
static qf_info_T *qf_cmd_get_or_alloc_stack(const exarg_T *eap, win_T **pwinp) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET;
static int copy_loclist_entries(const qf_list_T *from_qfl, qf_list_T *to_qfl) FUNC_ATTR_NONNULL_ALL;
static int copy_loclist(qf_list_T *from_qfl, qf_list_T *to_qfl) FUNC_ATTR_NONNULL_ALL;
static int qf_get_fnum(qf_list_T *qfl, char *directory, char *fname);
static char *qf_push_dir(char *dirbuf, struct dir_stack_T **stackptr, _Bool is_file_stack);
static char *qf_pop_dir(struct dir_stack_T **stackptr);
static void qf_clean_dir_stack(struct dir_stack_T **stackptr);
static char *qf_guess_filepath(qf_list_T *qfl, char *filename);
static _Bool qflist_valid(win_T *wp, unsigned qf_id);
static _Bool is_qf_entry_present(qf_list_T *qfl, qfline_T *qf_ptr);
static qfline_T *get_next_valid_entry(qf_list_T *qfl, qfline_T *qf_ptr, int *qf_index, int dir);
static qfline_T *get_prev_valid_entry(qf_list_T *qfl, qfline_T *qf_ptr, int *qf_index, int dir);
static qfline_T *get_nth_valid_entry(qf_list_T *qfl, int errornr, int dir, int *new_qfidx);
static qfline_T *get_nth_entry(qf_list_T *qfl, int errornr, int *new_qfidx);
static qfline_T *qf_get_entry(qf_list_T *qfl, int errornr, int dir, int *new_qfidx);
static win_T *qf_find_help_win(void) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static void win_set_loclist(win_T *wp, qf_info_T *qi);
static int jump_to_help_window(qf_info_T *qi, _Bool newwin, _Bool *opened_window);
static win_T *qf_find_win_with_loclist(const qf_info_T *ll) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static win_T *qf_find_win_with_normal_buf(void) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_goto_tabwin_with_file(int fnum);
static int qf_open_new_file_win(qf_info_T *ll_ref);
static void qf_goto_win_with_ll_file(win_T *use_win, int qf_fnum, qf_info_T *ll_ref);
static void qf_goto_win_with_qfl_file(int qf_fnum);
static int qf_jump_to_usable_window(int qf_fnum, _Bool newwin, _Bool *opened_window);
static int qf_jump_edit_buffer(qf_info_T *qi, qfline_T *qf_ptr, int forceit, int prev_winid, _Bool *opened_window);
static void qf_jump_goto_line(linenr_T qf_lnum, int qf_col, char qf_viscol, char *qf_pattern);
static void qf_jump_print_msg(qf_info_T *qi, int qf_index, qfline_T *qf_ptr, buf_T *old_curbuf, linenr_T old_lnum);
static int qf_jump_open_window(qf_info_T *qi, qfline_T *qf_ptr, _Bool newwin, _Bool *opened_window);
static int qf_jump_to_buffer(qf_info_T *qi, int qf_index, qfline_T *qf_ptr, int forceit, int prev_winid, _Bool *opened_window, int openfold, _Bool print_message);
static void qf_jump_newwin(qf_info_T *qi, int dir, int errornr, int forceit, _Bool newwin);
static void qf_list_entry(qfline_T *qfp, int qf_idx, _Bool cursel);
static void qf_fmt_text(garray_T *gap, const char *restrict text) FUNC_ATTR_NONNULL_ALL;
static void qf_range_text(garray_T *gap, const qfline_T *qfp);
static void qf_msg(qf_info_T *qi, int which, char *lead);
static void qf_free_items(qf_list_T *qfl);
static void qf_free(qf_list_T *qfl);
static char *qf_types(int c, int nr);
static int qf_goto_cwindow(const qf_info_T *qi, _Bool resize, int sz, _Bool vertsplit);
static void qf_set_cwindow_options(void);
static int qf_open_new_cwindow(qf_info_T *qi, int height) FUNC_ATTR_NONNULL_ALL;
static void qf_set_title_var(qf_list_T *qfl);
static void qf_win_goto(win_T *win, linenr_T lnum);
static _Bool qf_win_pos_update(qf_info_T *qi, int old_qf_index);
static int is_qf_win(const win_T *win, const qf_info_T *qi) FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static win_T *qf_find_win(const qf_info_T *qi) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static buf_T *qf_find_buf(qf_info_T *qi) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT;
static void qf_update_win_titlevar(qf_info_T *qi) FUNC_ATTR_NONNULL_ALL;
static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last);
static int qf_buf_add_line(qf_list_T *qfl, buf_T *buf, linenr_T lnum, const qfline_T *qfp, char *dirname, char *qftf_str, _Bool first_bufline) FUNC_ATTR_NONNULL_ARG(1, 2, 4, 5);
static list_T *call_qftf_func(qf_list_T *qfl, int qf_winid, int start_idx, int end_idx);
static void qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last, int qf_winid) FUNC_ATTR_NONNULL_ARG(2);
static void qf_list_changed(qf_list_T *qfl);
static int qf_id2nr(const qf_info_T *const qi, const unsigned qfid);
static int qf_restore_list(qf_info_T *qi, unsigned save_qfid) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT;
static void qf_jump_first(qf_info_T *qi, unsigned save_qfid, int forceit) FUNC_ATTR_NONNULL_ALL;
static char *make_get_auname(cmdidx_T cmdidx) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static char *make_get_fullcmd(const char *makecmd, const char *fname) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET;
static char *get_mef_name(void);
static size_t qf_get_nth_valid_entry(qf_list_T *qfl, size_t n, _Bool fdo) FUNC_ATTR_NONNULL_ALL;
static qfline_T *qf_find_first_entry_in_buf(qf_list_T *qfl, int bnr, int *errornr);
static qfline_T *qf_find_first_entry_on_line(qfline_T *entry, int *errornr);
static qfline_T *qf_find_last_entry_on_line(qfline_T *entry, int *errornr);
static _Bool qf_entry_after_pos(const qfline_T *qfp, const pos_T *pos, _Bool linewise) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_entry_before_pos(const qfline_T *qfp, const pos_T *pos, _Bool linewise) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_entry_on_or_after_pos(const qfline_T *qfp, const pos_T *pos, _Bool linewise) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static _Bool qf_entry_on_or_before_pos(const qfline_T *qfp, const pos_T *pos, _Bool linewise) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static qfline_T *qf_find_entry_after_pos(int bnr, const pos_T *pos, _Bool linewise, qfline_T *qfp, int *errornr) FUNC_ATTR_NONNULL_ALL;
static qfline_T *qf_find_entry_before_pos(int bnr, const pos_T *pos, _Bool linewise, qfline_T *qfp, int *errornr) FUNC_ATTR_NONNULL_ALL;
static qfline_T *qf_find_closest_entry(qf_list_T *qfl, int bnr, const pos_T *pos, Direction dir, _Bool linewise, int *errornr) FUNC_ATTR_NONNULL_ALL;
static void qf_get_nth_below_entry(qfline_T *entry_arg, linenr_T n, _Bool linewise, int *errornr) FUNC_ATTR_NONNULL_ALL;
static void qf_get_nth_above_entry(qfline_T *entry, linenr_T n, _Bool linewise, int *errornr) FUNC_ATTR_NONNULL_ALL;
static int qf_find_nth_adj_entry(qf_list_T *qfl, int bnr, pos_T *pos, linenr_T n, Direction dir, _Bool linewise) FUNC_ATTR_NONNULL_ALL;
static char *cfile_get_auname(cmdidx_T cmdidx);
static char *vgr_get_auname(cmdidx_T cmdidx);
static void vgr_init_regmatch(regmmatch_T *regmatch, char *s);
static void vgr_display_fname(char *fname);
static buf_T *vgr_load_dummy_buf(char *fname, char *dirname_start, char *dirname_now);
static _Bool vgr_qflist_valid(win_T *wp, qf_info_T *qi, unsigned qfid, char *title);
static _Bool vgr_match_buflines(qf_list_T *qfl, char *fname, buf_T *buf, char *spat, regmmatch_T *regmatch, int *tomatch, int duplicate_name, int flags) FUNC_ATTR_NONNULL_ARG(1, 3, 4, 5, 6);
static void vgr_jump_to_match(qf_info_T *qi, int forceit, _Bool *redraw_for_dummy, buf_T *first_match_buf, char *target_dir);
static _Bool existing_swapfile(const buf_T *buf) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static int vgr_process_args(exarg_T *eap, vgr_args_T *args);
static int vgr_process_files(win_T *wp, qf_info_T *qi, vgr_args_T *cmd_args, _Bool *redraw_for_dummy, buf_T **first_match_buf, char **target_dir);
static void restore_start_dir(char *dirname_start) FUNC_ATTR_NONNULL_ALL;
static buf_T *load_dummy_buffer(char *fname, char *dirname_start, char *resulting_dir);
static void wipe_dummy_buffer(buf_T *buf, char *dirname_start) FUNC_ATTR_NONNULL_ALL;
static void unload_dummy_buffer(buf_T *buf, char *dirname_start);
static int get_qfline_items(qfline_T *qfp, list_T *list);
static int get_errorlist(qf_info_T *qi_arg, win_T *wp, int qf_idx, int eidx, list_T *list);
static int qf_get_list_from_lines(dict_T *what, dictitem_T *di, dict_T *retdict);
static int qf_winid(qf_info_T *qi);
static int qf_getprop_qfbufnr(const qf_info_T *qi, dict_T *retdict) FUNC_ATTR_NONNULL_ARG(2);
static int qf_getprop_keys2flags(const dict_T *what, _Bool loclist) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
static int qf_getprop_qfidx(qf_info_T *qi, dict_T *what);
static int qf_getprop_defaults(qf_info_T *qi, int flags, int locstack, dict_T *retdict);
static int qf_getprop_title(qf_list_T *qfl, dict_T *retdict);
static int qf_getprop_filewinid(const win_T *wp, const qf_info_T *qi, dict_T *retdict) FUNC_ATTR_NONNULL_ARG(3);
static int qf_getprop_items(qf_info_T *qi, int qf_idx, int eidx, dict_T *retdict);
static int qf_getprop_ctx(qf_list_T *qfl, dict_T *retdict);
static int qf_getprop_idx(qf_list_T *qfl, int eidx, dict_T *retdict);
static int qf_getprop_qftf(qf_list_T *qfl, dict_T *retdict) FUNC_ATTR_NONNULL_ALL;
static int qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict);
static int qf_setprop_qftf(qf_list_T *qfl, dictitem_T *di) FUNC_ATTR_NONNULL_ALL;
static int qf_add_entry_from_dict(qf_list_T *qfl, dict_T *d, _Bool first_entry, _Bool *valid_entry) FUNC_ATTR_NONNULL_ALL;
static int qf_add_entries(qf_info_T *qi, int qf_idx, list_T *list, char *title, int action);
static int qf_setprop_get_qfidx(const qf_info_T *qi, const dict_T *what, int action, _Bool *newlist) FUNC_ATTR_NONNULL_ALL;
static int qf_setprop_title(qf_info_T *qi, int qf_idx, const dict_T *what, const dictitem_T *di) FUNC_ATTR_NONNULL_ALL;
static int qf_setprop_items(qf_info_T *qi, int qf_idx, dictitem_T *di, int action) FUNC_ATTR_NONNULL_ALL;
static int qf_setprop_items_from_lines(qf_info_T *qi, int qf_idx, const dict_T *what, dictitem_T *di, int action) FUNC_ATTR_NONNULL_ALL;
static int qf_setprop_context(qf_list_T *qfl, dictitem_T *di) FUNC_ATTR_NONNULL_ALL;
static int qf_setprop_curidx(qf_info_T *qi, qf_list_T *qfl, const dictitem_T *di) FUNC_ATTR_NONNULL_ALL;
static int qf_set_properties(qf_info_T *qi, const dict_T *what, int action, char *title) FUNC_ATTR_NONNULL_ALL;
static void qf_free_stack(win_T *wp, qf_info_T *qi);
static _Bool mark_quickfix_user_data(qf_info_T *qi, int copyID);
static _Bool mark_quickfix_ctx(qf_info_T *qi, int copyID);
static char *cbuffer_get_auname(cmdidx_T cmdidx);
static int cbuffer_process_args(exarg_T *eap, buf_T **bufp, linenr_T *line1, linenr_T *line2);
static char *cexpr_get_auname(cmdidx_T cmdidx);
static qf_info_T *hgr_get_ll(_Bool *new_ll) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET;
static void hgr_search_file(qf_list_T *qfl, char *fname, regmatch_T *p_regmatch) FUNC_ATTR_NONNULL_ARG(1, 3);
static void hgr_search_files_in_dir(qf_list_T *qfl, char *dirname, regmatch_T *p_regmatch, const char *lang) FUNC_ATTR_NONNULL_ARG(1, 2, 3);
static void hgr_search_in_rtp(qf_list_T *qfl, regmatch_T *p_regmatch, const char *lang) FUNC_ATTR_NONNULL_ARG(1, 2);
static void get_qf_loc_list(_Bool is_qf, win_T *wp, typval_T *what_arg, typval_T *rettv);
static void set_qf_ll_list(win_T *wp, typval_T *args, typval_T *rettv) FUNC_ATTR_NONNULL_ARG(2, 3);
#define DEFINE_EMPTY_ATTRIBUTES
#include "nvim/func_attr.h" // IWYU pragma: export