1 | #ifndef DEFINE_FUNC_ATTRIBUTES |
2 | # define DEFINE_FUNC_ATTRIBUTES |
3 | #endif |
4 | #include "nvim/func_attr.h" |
5 | #undef DEFINE_FUNC_ATTRIBUTES |
6 | static int efm_to_regpat(char_u *efm, int len, efm_T *fmt_ptr, char_u *regpat, char_u *errmsg); |
7 | static void free_efm_list(efm_T **efm_first); |
8 | static efm_T *parse_efm_option(char_u *efm); |
9 | static char_u *qf_grow_linebuf(qfstate_T *state, size_t newsz); |
10 | static int qf_get_next_str_line(qfstate_T *state); |
11 | static int qf_get_next_list_line(qfstate_T *state); |
12 | static int qf_get_next_buf_line(qfstate_T *state); |
13 | static int qf_get_next_file_line(qfstate_T *state); |
14 | static int qf_get_nextline(qfstate_T *state); |
15 | static _Bool qf_list_empty(const qf_info_T *qi, int qf_idx) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT; |
16 | static int qf_parse_line(qf_info_T *qi, int qf_idx, char_u *linebuf, size_t linelen, efm_T *fmt_first, qffields_T *fields); |
17 | static int qf_init_ext(qf_info_T *qi, int qf_idx, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title, char_u *enc ); |
18 | static void qf_store_title(qf_info_T *qi, int qf_idx, const char_u *title) FUNC_ATTR_NONNULL_ARG(1); |
19 | static char_u *qf_cmdtitle(char_u *cmd); |
20 | static void qf_new_list(qf_info_T *qi, char_u *qf_title); |
21 | static int qf_parse_match(char_u *linebuf, size_t linelen, efm_T *fmt_ptr, regmatch_T *regmatch, qffields_T *fields, int qf_multiline, int qf_multiscan, char_u **tail); |
22 | static int qf_parse_get_fields(char_u *linebuf, size_t linelen, efm_T *fmt_ptr, qffields_T *fields, int qf_multiline, int qf_multiscan, char_u **tail); |
23 | static int qf_parse_dir_pfx(int idx, qffields_T *fields, qf_list_T *qfl); |
24 | static int qf_parse_file_pfx(int idx, qffields_T *fields, qf_list_T *qfl, char_u *tail); |
25 | static int qf_parse_line_nomatch(char_u *linebuf, size_t linelen, qffields_T *fields); |
26 | static int qf_parse_multiline_pfx(qf_info_T *qi, int qf_idx, int idx, qf_list_T *qfl, qffields_T *fields); |
27 | static void ll_free_all(qf_info_T **pqi); |
28 | static int qf_add_entry(qf_info_T *qi, int qf_idx, char_u *dir, char_u *fname, char_u *module, int bufnum, char_u *mesg, long lnum, int col, char_u vis_col, char_u *pattern, int nr, char_u type, char_u valid); |
29 | static qf_info_T *ll_new_list(void); |
30 | static qf_info_T *ll_get_or_alloc_list(win_T *wp); |
31 | static int qf_get_fnum(qf_info_T *qi, int qf_idx, char_u *directory, char_u *fname); |
32 | static char_u *qf_push_dir(char_u *dirbuf, struct dir_stack_T **stackptr, _Bool is_file_stack); |
33 | static char_u *qf_pop_dir(struct dir_stack_T **stackptr); |
34 | static void qf_clean_dir_stack(struct dir_stack_T **stackptr); |
35 | static char_u *qf_guess_filepath(qf_info_T *qi, int qf_idx, char_u *filename); |
36 | static _Bool qflist_valid(win_T *wp, unsigned int qf_id); |
37 | static _Bool is_qf_entry_present(qf_info_T *qi, qfline_T *qf_ptr); |
38 | static qfline_T *get_next_valid_entry(qf_info_T *qi, qfline_T *qf_ptr, int *qf_index, int dir); |
39 | static qfline_T *get_prev_valid_entry(qf_info_T *qi, qfline_T *qf_ptr, int *qf_index, int dir); |
40 | static qfline_T *get_nth_valid_entry(qf_info_T *qi, int errornr, qfline_T *qf_ptr, int *qf_index, int dir); |
41 | static qfline_T *get_nth_entry(qf_info_T *qi, int errornr, qfline_T *qf_ptr, int *cur_qfidx); |
42 | static int jump_to_help_window(qf_info_T *qi, int *opened_window); |
43 | static int qf_jump_to_usable_window(int qf_fnum, int *opened_window); |
44 | static int qf_jump_edit_buffer(qf_info_T *qi, qfline_T *qf_ptr, int forceit, win_T *oldwin, int *opened_window, int *abort); |
45 | static void qf_jump_goto_line(linenr_T qf_lnum, int qf_col, char_u qf_viscol, char_u *qf_pattern); |
46 | 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); |
47 | static void qf_fmt_text(char_u *text, char_u *buf, int bufsize); |
48 | static void qf_msg(qf_info_T *qi, int which, char *lead); |
49 | static void qf_free_items(qf_info_T *qi, int idx); |
50 | static void qf_free(qf_info_T *qi, int idx); |
51 | static char_u *qf_types(int c, int nr); |
52 | static void qf_win_goto(win_T *win, linenr_T lnum); |
53 | static int qf_win_pos_update(qf_info_T *qi, int old_qf_index ); |
54 | static int is_qf_win(win_T *win, qf_info_T *qi); |
55 | static win_T *qf_find_win(qf_info_T *qi); |
56 | static buf_T *qf_find_buf(qf_info_T *qi); |
57 | static void qf_update_win_titlevar(qf_info_T *qi); |
58 | static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last); |
59 | static void qf_set_title_var(qf_info_T *qi); |
60 | static void qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last); |
61 | static void qf_list_changed(qf_info_T *qi, int qf_idx); |
62 | static int qf_id2nr(const qf_info_T *const qi, const unsigned qfid); |
63 | static int qf_restore_list(qf_info_T *qi, unsigned save_qfid) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT; |
64 | static void qf_jump_first(qf_info_T *qi, unsigned save_qfid, int forceit) FUNC_ATTR_NONNULL_ALL; |
65 | static char_u *get_mef_name(void); |
66 | static size_t qf_get_nth_valid_entry(qf_info_T *qi, size_t n, _Bool fdo) FUNC_ATTR_NONNULL_ALL; |
67 | static char_u *vgr_get_auname(cmdidx_T cmdidx); |
68 | static void vgr_init_regmatch(regmmatch_T *regmatch, char_u *s); |
69 | static void vgr_display_fname(char_u *fname); |
70 | static buf_T *vgr_load_dummy_buf(char_u *fname, char_u *dirname_start, char_u *dirname_now); |
71 | static _Bool vgr_qflist_valid(win_T *wp, qf_info_T *qi, unsigned qfid, char_u *title); |
72 | static _Bool vgr_match_buflines(qf_info_T *qi, char_u *fname, buf_T *buf, regmmatch_T *regmatch, long tomatch, int duplicate_name, int flags); |
73 | static void vgr_jump_to_match(qf_info_T *qi, int forceit, int *redraw_for_dummy, buf_T *first_match_buf, char_u *target_dir); |
74 | static void restore_start_dir(char_u *dirname_start); |
75 | static buf_T *load_dummy_buffer(char_u *fname, char_u *dirname_start, char_u *resulting_dir ); |
76 | static void wipe_dummy_buffer(buf_T *buf, char_u *dirname_start); |
77 | static void unload_dummy_buffer(buf_T *buf, char_u *dirname_start); |
78 | static int qf_get_list_from_lines(dict_T *what, dictitem_T *di, dict_T *retdict); |
79 | static int qf_winid(qf_info_T *qi); |
80 | static int qf_getprop_keys2flags(dict_T *what); |
81 | static int qf_getprop_qfidx(qf_info_T *qi, dict_T *what); |
82 | static int qf_getprop_defaults(qf_info_T *qi, int flags, dict_T *retdict); |
83 | static int qf_getprop_title(qf_info_T *qi, int qf_idx, dict_T *retdict); |
84 | static int qf_getprop_items(qf_info_T *qi, int qf_idx, dict_T *retdict); |
85 | static int qf_getprop_ctx(qf_info_T *qi, int qf_idx, dict_T *retdict); |
86 | static int qf_getprop_idx(qf_info_T *qi, int qf_idx, dict_T *retdict); |
87 | static int qf_add_entries(qf_info_T *qi, int qf_idx, list_T *list, char_u *title, int action); |
88 | static int qf_setprop_get_qfidx(const qf_info_T *qi, const dict_T *what, int action, _Bool *newlist) FUNC_ATTR_NONNULL_ALL; |
89 | static int qf_setprop_title(qf_info_T *qi, int qf_idx, const dict_T *what, const dictitem_T *di) FUNC_ATTR_NONNULL_ALL; |
90 | static int qf_setprop_items(qf_info_T *qi, int qf_idx, dictitem_T *di, int action) FUNC_ATTR_NONNULL_ALL; |
91 | 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; |
92 | static int qf_setprop_context(qf_info_T *qi, int qf_idx, dictitem_T *di) FUNC_ATTR_NONNULL_ALL; |
93 | static int qf_set_properties(qf_info_T *qi, const dict_T *what, int action, char_u *title) FUNC_ATTR_NONNULL_ALL; |
94 | static win_T *find_win_with_ll(qf_info_T *qi); |
95 | static void qf_free_stack(win_T *wp, qf_info_T *qi); |
96 | static _Bool mark_quickfix_ctx(qf_info_T *qi, int copyID); |
97 | #include "nvim/func_attr.h" |
98 | |