1#ifndef DEFINE_FUNC_ATTRIBUTES
2# define DEFINE_FUNC_ATTRIBUTES
3#endif
4#include "nvim/func_attr.h"
5#undef DEFINE_FUNC_ATTRIBUTES
6static inline void normal_state_init(NormalState *s);
7static int nv_compare(const void *s1, const void *s2);
8static int find_command(int cmdchar);
9static void normal_prepare(NormalState *s);
10static _Bool normal_handle_special_visual_command(NormalState *s);
11static _Bool normal_need_additional_char(NormalState *s);
12static _Bool normal_need_redraw_mode_message(NormalState *s);
13static void normal_redraw_mode_message(NormalState *s);
14static void normal_get_additional_char(NormalState *s);
15static void normal_invert_horizontal(NormalState *s);
16static _Bool normal_get_command_count(NormalState *s);
17static void normal_finish_command(NormalState *s);
18static int normal_execute(VimState *state, int key);
19static void normal_check_stuff_buffer(NormalState *s);
20static void normal_check_interrupt(NormalState *s);
21static void normal_check_cursor_moved(NormalState *s);
22static void normal_check_text_changed(NormalState *s);
23static void normal_check_folds(NormalState *s);
24static void normal_redraw(NormalState *s);
25static int normal_check(VimState *state);
26static void set_vcount_ca(cmdarg_T *cap, _Bool *set_prevcount);
27static void op_colon(oparg_T *oap);
28static void op_function(const oparg_T *oap) FUNC_ATTR_NONNULL_ALL;
29static void move_tab_to_mouse(void);
30static void find_start_of_word(pos_T *pos);
31static void find_end_of_word(pos_T *pos);
32static int get_mouse_class(char_u *p);
33static _Bool find_is_eval_item(const char_u *const ptr, int *const colp, int *const bnp, const int dir);
34static void prep_redo_cmd(cmdarg_T *cap);
35static void prep_redo(int regname, long num, int cmd1, int cmd2, int cmd3, int cmd4, int cmd5);
36static _Bool checkclearop(oparg_T *oap);
37static _Bool checkclearopq(oparg_T *oap);
38static void clearop(oparg_T *oap);
39static void clearopbeep(oparg_T *oap);
40static void unshift_special(cmdarg_T *cap);
41static void may_clear_cmdline(void);
42static void del_from_showcmd(int len);
43static void display_showcmd(void);
44static void nv_ignore(cmdarg_T *cap);
45static void nv_nop(cmdarg_T *cap);
46static void nv_error(cmdarg_T *cap);
47static void nv_help(cmdarg_T *cap);
48static void nv_addsub(cmdarg_T *cap);
49static void nv_page(cmdarg_T *cap);
50static void nv_gd(oparg_T *oap, int nchar, int thisblock );
51static _Bool is_ident(char_u *line, int offset);
52static _Bool nv_screengo(oparg_T *oap, int dir, long dist);
53static void nv_mousescroll(cmdarg_T *cap);
54static void nv_mouse(cmdarg_T *cap);
55static void nv_scroll_line(cmdarg_T *cap);
56static void nv_zet(cmdarg_T *cap);
57static void nv_exmode(cmdarg_T *cap);
58static void nv_colon(cmdarg_T *cap);
59static void nv_ctrlg(cmdarg_T *cap);
60static void nv_ctrlh(cmdarg_T *cap);
61static void nv_clear(cmdarg_T *cap);
62static void nv_ctrlo(cmdarg_T *cap);
63static void nv_hat(cmdarg_T *cap);
64static void nv_Zet(cmdarg_T *cap);
65static void nv_ident(cmdarg_T *cap);
66static void nv_tagpop(cmdarg_T *cap);
67static void nv_scroll(cmdarg_T *cap);
68static void nv_right(cmdarg_T *cap);
69static void nv_left(cmdarg_T *cap);
70static void nv_up(cmdarg_T *cap);
71static void nv_down(cmdarg_T *cap);
72static void nv_gotofile(cmdarg_T *cap);
73static void nv_end(cmdarg_T *cap);
74static void nv_dollar(cmdarg_T *cap);
75static void nv_search(cmdarg_T *cap);
76static void nv_next(cmdarg_T *cap);
77static int normal_search(cmdarg_T *cap, int dir, char_u *pat, int opt );
78static void nv_csearch(cmdarg_T *cap);
79static void nv_brackets(cmdarg_T *cap);
80static void nv_percent(cmdarg_T *cap);
81static void nv_brace(cmdarg_T *cap);
82static void nv_mark(cmdarg_T *cap);
83static void nv_findpar(cmdarg_T *cap);
84static void nv_undo(cmdarg_T *cap);
85static void nv_kundo(cmdarg_T *cap);
86static void nv_replace(cmdarg_T *cap);
87static void v_swap_corners(int cmdchar);
88static void nv_Replace(cmdarg_T *cap);
89static void nv_vreplace(cmdarg_T *cap);
90static void n_swapchar(cmdarg_T *cap);
91static void nv_cursormark(cmdarg_T *cap, int flag, pos_T *pos);
92static void v_visop(cmdarg_T *cap);
93static void nv_subst(cmdarg_T *cap);
94static void nv_abbrev(cmdarg_T *cap);
95static void nv_optrans(cmdarg_T *cap);
96static void nv_gomark(cmdarg_T *cap);
97static void nv_pcmark(cmdarg_T *cap);
98static void nv_regname(cmdarg_T *cap);
99static void nv_visual(cmdarg_T *cap);
100static void n_start_visual_mode(int c);
101static void nv_window(cmdarg_T *cap);
102static void nv_suspend(cmdarg_T *cap);
103static void nv_g_cmd(cmdarg_T *cap);
104static void n_opencmd(cmdarg_T *cap);
105static void nv_dot(cmdarg_T *cap);
106static void nv_redo(cmdarg_T *cap);
107static void nv_Undo(cmdarg_T *cap);
108static void nv_tilde(cmdarg_T *cap);
109static void nv_operator(cmdarg_T *cap);
110static void set_op_var(int optype);
111static void nv_lineop(cmdarg_T *cap);
112static void nv_home(cmdarg_T *cap);
113static void nv_pipe(cmdarg_T *cap);
114static void nv_bck_word(cmdarg_T *cap);
115static void nv_wordcmd(cmdarg_T *cap);
116static void adjust_cursor(oparg_T *oap);
117static void nv_beginline(cmdarg_T *cap);
118static void adjust_for_sel(cmdarg_T *cap);
119static _Bool unadjust_for_sel(void);
120static void nv_select(cmdarg_T *cap);
121static void nv_goto(cmdarg_T *cap);
122static void nv_normal(cmdarg_T *cap);
123static void nv_esc(cmdarg_T *cap);
124static void nv_edit(cmdarg_T *cap);
125static void invoke_edit(cmdarg_T *cap, int repl, int cmd, int startln );
126static void nv_object(cmdarg_T *cap);
127static void nv_record(cmdarg_T *cap);
128static void nv_at(cmdarg_T *cap);
129static void nv_halfpage(cmdarg_T *cap);
130static void nv_join(cmdarg_T *cap);
131static void nv_put(cmdarg_T *cap);
132static void nv_put_opt(cmdarg_T *cap, _Bool fix_indent);
133static void nv_open(cmdarg_T *cap);
134static void get_op_vcol(oparg_T *oap, colnr_T redo_VIsual_vcol, _Bool initial );
135static void nv_event(cmdarg_T *cap);
136static int mouse_model_popup(void);
137#include "nvim/func_attr.h"
138