diff --git a/Makefile b/Makefile index 107ec4acb1..b1c39d5816 100644 --- a/Makefile +++ b/Makefile @@ -224,7 +224,6 @@ iwyu: build/.ran-cmake |src/nvim/search.h\ |src/nvim/spell.h\ |src/nvim/syntax.h\ - |src/nvim/textformat.h\ |src/nvim/textobject.h\ |src/nvim/tui/input.h\ |src/nvim/tui/tui.h\ diff --git a/src/clint.py b/src/clint.py index 91fee4917a..ef2ac57a87 100755 --- a/src/clint.py +++ b/src/clint.py @@ -979,7 +979,6 @@ def CheckIncludes(filename, lines, error): "src/nvim/search.h", "src/nvim/spell.h", "src/nvim/syntax.h", - "src/nvim/textformat.h", "src/nvim/textobject.h", "src/nvim/tui/input.h", "src/nvim/tui/tui.h", diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index fdf12cba9e..d631b10af9 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -55,7 +55,6 @@ #include "nvim/option_vars.h" #include "nvim/optionstr.h" #include "nvim/os/input.h" -#include "nvim/os/os_defs.h" #include "nvim/os/process.h" #include "nvim/popupmenu.h" #include "nvim/pos_defs.h" diff --git a/src/nvim/bufwrite.c b/src/nvim/bufwrite.c index 0525e9ccc4..178218729a 100644 --- a/src/nvim/bufwrite.c +++ b/src/nvim/bufwrite.c @@ -38,7 +38,6 @@ #include "nvim/option_vars.h" #include "nvim/os/fs.h" #include "nvim/os/input.h" -#include "nvim/os/os.h" #include "nvim/path.h" #include "nvim/pos_defs.h" #include "nvim/sha256.h" diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c index 8873dc01b1..ea33c39178 100644 --- a/src/nvim/drawscreen.c +++ b/src/nvim/drawscreen.c @@ -92,7 +92,6 @@ #include "nvim/normal.h" #include "nvim/option.h" #include "nvim/option_vars.h" -#include "nvim/os/os_defs.h" #include "nvim/plines.h" #include "nvim/popupmenu.h" #include "nvim/pos_defs.h" diff --git a/src/nvim/ex_cmds_defs.h b/src/nvim/ex_cmds_defs.h index ffdb4ba6af..00363884ec 100644 --- a/src/nvim/ex_cmds_defs.h +++ b/src/nvim/ex_cmds_defs.h @@ -5,7 +5,7 @@ #include "nvim/eval/typval_defs.h" #include "nvim/ex_eval_defs.h" -#include "nvim/normal.h" +#include "nvim/normal_defs.h" #include "nvim/pos_defs.h" #include "nvim/regexp_defs.h" diff --git a/src/nvim/mouse.h b/src/nvim/mouse.h index 5d2475005e..928b3e360b 100644 --- a/src/nvim/mouse.h +++ b/src/nvim/mouse.h @@ -1,11 +1,10 @@ #pragma once -#include - -#include "nvim/buffer_defs.h" -#include "nvim/normal.h" +#include "nvim/buffer_defs.h" // IWYU pragma: keep +#include "nvim/eval/typval_defs.h" // IWYU pragma: keep +#include "nvim/normal_defs.h" // IWYU pragma: keep +#include "nvim/types_defs.h" // IWYU pragma: keep #include "nvim/vim_defs.h" -#include "nvim/window.h" /// jump_to_mouse() returns one of first five these values, possibly with /// some of the other five added. diff --git a/src/nvim/normal.h b/src/nvim/normal.h index 9fb332d320..dbe74712fc 100644 --- a/src/nvim/normal.h +++ b/src/nvim/normal.h @@ -1,81 +1,18 @@ #pragma once -#include - #include "nvim/buffer_defs.h" // IWYU pragma: keep #include "nvim/macros_defs.h" -#include "nvim/pos_defs.h" +#include "nvim/normal_defs.h" // IWYU pragma: export +#include "nvim/pos_defs.h" // IWYU pragma: keep -// Values for find_ident_under_cursor() -#define FIND_IDENT 1 // find identifier (word) -#define FIND_STRING 2 // find any string (WORD) -#define FIND_EVAL 4 // include "->", "[]" and "." +/// Values for find_ident_under_cursor() +enum { + FIND_IDENT = 1, ///< find identifier (word) + FIND_STRING = 2, ///< find any string (WORD) + FIND_EVAL = 4, ///< include "->", "[]" and "." +}; -/// Motion types, used for operators and for yank/delete registers. -/// -/// The three valid numerical values must not be changed, as they -/// are used in external communication and serialization. -typedef enum { - kMTCharWise = 0, ///< character-wise movement/register - kMTLineWise = 1, ///< line-wise movement/register - kMTBlockWise = 2, ///< block-wise movement/register - kMTUnknown = -1, ///< Unknown or invalid motion type -} MotionType; - -// Arguments for operators. -typedef struct oparg_S { - int op_type; // current pending operator type - int regname; // register to use for the operator - MotionType motion_type; // type of the current cursor motion - int motion_force; // force motion type: 'v', 'V' or CTRL-V - bool use_reg_one; // true if delete uses reg 1 even when not - // linewise - bool inclusive; // true if char motion is inclusive (only - // valid when motion_type is kMTCharWise) - bool end_adjusted; // backuped b_op_end one char (only used by - // do_format()) - pos_T start; // start of the operator - pos_T end; // end of the operator - pos_T cursor_start; // cursor position before motion for "gw" - - linenr_T line_count; // number of lines from op_start to op_end - // (inclusive) - bool empty; // op_start and op_end the same (only used by - // op_change()) - bool is_VIsual; // operator on Visual area - colnr_T start_vcol; // start col for block mode operator - colnr_T end_vcol; // end col for block mode operator - int prev_opcount; // ca.opcount saved for K_EVENT - int prev_count0; // ca.count0 saved for K_EVENT - bool excl_tr_ws; // exclude trailing whitespace for yank of a - // block -} oparg_T; - -// Arguments for Normal mode commands. -typedef struct cmdarg_S { - oparg_T *oap; // Operator arguments - int prechar; // prefix character (optional, always 'g') - int cmdchar; // command character - int nchar; // next command character (optional) - int ncharC1; // first composing character (optional) - int ncharC2; // second composing character (optional) - int extra_char; // yet another character (optional) - int opcount; // count before an operator - int count0; // count before command, default 0 - int count1; // count before command, default 1 - int arg; // extra argument from nv_cmds[] - int retval; // return: CA_* values - char *searchbuf; // return: pointer to search pattern or NULL -} cmdarg_T; - -// values for retval: -#define CA_COMMAND_BUSY 1 // skip restarting edit() once -#define CA_NO_ADJ_OP_END 2 // don't adjust operator end - -// columns needed by shown command -#define SHOWCMD_COLS 10 -// 'showcmd' buffer shared between normal.c and statusline.c -#define SHOWCMD_BUFLEN (SHOWCMD_COLS + 1 + 30) +/// 'showcmd' buffer shared between normal.c and statusline.c EXTERN char showcmd_buf[SHOWCMD_BUFLEN]; #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/src/nvim/normal_defs.h b/src/nvim/normal_defs.h new file mode 100644 index 0000000000..dcb7aa6186 --- /dev/null +++ b/src/nvim/normal_defs.h @@ -0,0 +1,69 @@ +#pragma once + +#include + +#include "nvim/pos_defs.h" + +/// Motion types, used for operators and for yank/delete registers. +/// +/// The three valid numerical values must not be changed, as they +/// are used in external communication and serialization. +typedef enum { + kMTCharWise = 0, ///< character-wise movement/register + kMTLineWise = 1, ///< line-wise movement/register + kMTBlockWise = 2, ///< block-wise movement/register + kMTUnknown = -1, ///< Unknown or invalid motion type +} MotionType; + +/// Arguments for operators. +typedef struct oparg_S { + int op_type; ///< current pending operator type + int regname; ///< register to use for the operator + MotionType motion_type; ///< type of the current cursor motion + int motion_force; ///< force motion type: 'v', 'V' or CTRL-V + bool use_reg_one; ///< true if delete uses reg 1 even when not + ///< linewise + bool inclusive; ///< true if char motion is inclusive (only + ///< valid when motion_type is kMTCharWise) + bool end_adjusted; ///< backuped b_op_end one char (only used by + ///< do_format()) + pos_T start; ///< start of the operator + pos_T end; ///< end of the operator + pos_T cursor_start; ///< cursor position before motion for "gw" + + linenr_T line_count; ///< number of lines from op_start to op_end (inclusive) + bool empty; ///< op_start and op_end the same (only used by op_change()) + bool is_VIsual; ///< operator on Visual area + colnr_T start_vcol; ///< start col for block mode operator + colnr_T end_vcol; ///< end col for block mode operator + int prev_opcount; ///< ca.opcount saved for K_EVENT + int prev_count0; ///< ca.count0 saved for K_EVENT + bool excl_tr_ws; ///< exclude trailing whitespace for yank of a block +} oparg_T; + +/// Arguments for Normal mode commands. +typedef struct cmdarg_S { + oparg_T *oap; ///< Operator arguments + int prechar; ///< prefix character (optional, always 'g') + int cmdchar; ///< command character + int nchar; ///< next command character (optional) + int ncharC1; ///< first composing character (optional) + int ncharC2; ///< second composing character (optional) + int extra_char; ///< yet another character (optional) + int opcount; ///< count before an operator + int count0; ///< count before command, default 0 + int count1; ///< count before command, default 1 + int arg; ///< extra argument from nv_cmds[] + int retval; ///< return: CA_* values + char *searchbuf; ///< return: pointer to search pattern or NULL +} cmdarg_T; + +/// values for retval: +enum { + CA_COMMAND_BUSY = 1, ///< skip restarting edit() once + CA_NO_ADJ_OP_END = 2, ///< don't adjust operator end +}; + +/// columns needed by shown command +enum { SHOWCMD_COLS = 10, }; +enum { SHOWCMD_BUFLEN = SHOWCMD_COLS + 1 + 30, }; diff --git a/src/nvim/option.h b/src/nvim/option.h index 4d89d354f9..ebf8e0417d 100644 --- a/src/nvim/option.h +++ b/src/nvim/option.h @@ -1,6 +1,7 @@ #pragma once #include +#include // IWYU pragma: keep #include "nvim/api/private/defs.h" // IWYU pragma: keep #include "nvim/api/private/helpers.h" @@ -8,7 +9,6 @@ #include "nvim/eval/typval_defs.h" #include "nvim/ex_cmds_defs.h" // IWYU pragma: keep #include "nvim/option_defs.h" // IWYU pragma: export -#include "nvim/search.h" #include "nvim/types_defs.h" // IWYU pragma: keep /// The options that are local to a window or buffer have "indir" set to one of diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c index 0aaa7be2b8..994c67ae4c 100644 --- a/src/nvim/os/shell.c +++ b/src/nvim/os/shell.c @@ -31,7 +31,6 @@ #include "nvim/message.h" #include "nvim/option_vars.h" #include "nvim/os/fs.h" -#include "nvim/os/os_defs.h" #include "nvim/os/shell.h" #include "nvim/os/signal.h" #include "nvim/os/time.h" diff --git a/src/nvim/search.h b/src/nvim/search.h index c86bb2700f..48ca555e7f 100644 --- a/src/nvim/search.h +++ b/src/nvim/search.h @@ -5,9 +5,10 @@ #include "nvim/buffer_defs.h" #include "nvim/eval/typval_defs.h" -#include "nvim/normal.h" -#include "nvim/os/time.h" +#include "nvim/normal_defs.h" // IWYU pragma: keep +#include "nvim/os/time_defs.h" #include "nvim/pos_defs.h" +#include "nvim/regexp_defs.h" // IWYU pragma: keep #include "nvim/types_defs.h" #include "nvim/vim_defs.h" diff --git a/src/nvim/spell.c b/src/nvim/spell.c index 0b4f363d64..905f5c25b4 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -91,7 +91,6 @@ #include "nvim/option_vars.h" #include "nvim/os/fs.h" #include "nvim/os/input.h" -#include "nvim/os/os_defs.h" #include "nvim/path.h" #include "nvim/pos_defs.h" #include "nvim/regexp.h" diff --git a/src/nvim/spellsuggest.c b/src/nvim/spellsuggest.c index 0a48e613ed..d9dd28527e 100644 --- a/src/nvim/spellsuggest.c +++ b/src/nvim/spellsuggest.c @@ -36,7 +36,6 @@ #include "nvim/option_vars.h" #include "nvim/os/fs.h" #include "nvim/os/input.h" -#include "nvim/os/os_defs.h" #include "nvim/pos_defs.h" #include "nvim/profile.h" #include "nvim/spell.h" diff --git a/src/nvim/tag.c b/src/nvim/tag.c index 3b6a1bfe85..f99f0dc612 100644 --- a/src/nvim/tag.c +++ b/src/nvim/tag.c @@ -44,7 +44,6 @@ #include "nvim/optionstr.h" #include "nvim/os/fs.h" #include "nvim/os/input.h" -#include "nvim/os/os_defs.h" #include "nvim/os/time.h" #include "nvim/path.h" #include "nvim/pos_defs.h" diff --git a/src/nvim/textformat.c b/src/nvim/textformat.c index 25a197d401..64c698f48f 100644 --- a/src/nvim/textformat.c +++ b/src/nvim/textformat.c @@ -26,7 +26,6 @@ #include "nvim/memory.h" #include "nvim/message.h" #include "nvim/move.h" -#include "nvim/normal.h" #include "nvim/ops.h" #include "nvim/option.h" #include "nvim/option_vars.h" diff --git a/src/nvim/textformat.h b/src/nvim/textformat.h index b86df20f13..25e7152f1b 100644 --- a/src/nvim/textformat.h +++ b/src/nvim/textformat.h @@ -1,6 +1,6 @@ #pragma once -#include "nvim/normal.h" +#include "nvim/normal_defs.h" // IWYU pragma: keep #include "nvim/pos_defs.h" // IWYU pragma: keep #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/src/nvim/textobject.c b/src/nvim/textobject.c index 3a0a3cc659..d4310d47a4 100644 --- a/src/nvim/textobject.c +++ b/src/nvim/textobject.c @@ -20,7 +20,6 @@ #include "nvim/memline.h" #include "nvim/memory.h" #include "nvim/move.h" -#include "nvim/normal.h" #include "nvim/option_vars.h" #include "nvim/pos_defs.h" #include "nvim/search.h" diff --git a/src/nvim/textobject.h b/src/nvim/textobject.h index 2ca5be43b7..a540c7c98f 100644 --- a/src/nvim/textobject.h +++ b/src/nvim/textobject.h @@ -1,7 +1,7 @@ #pragma once -#include "nvim/normal.h" -#include "nvim/pos_defs.h" +#include "nvim/normal_defs.h" // IWYU pragma: keep +#include "nvim/pos_defs.h" // IWYU pragma: keep #include "nvim/vim_defs.h" #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/src/nvim/window.c b/src/nvim/window.c index ff62531dc7..ce038d2723 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -57,7 +57,6 @@ #include "nvim/option_defs.h" #include "nvim/option_vars.h" #include "nvim/os/fs.h" -#include "nvim/os/os_defs.h" #include "nvim/path.h" #include "nvim/plines.h" #include "nvim/pos_defs.h"