refactor(ops): doxygen docstrings #17743

This commit is contained in:
dundargoc 2022-06-09 17:12:07 +02:00 committed by GitHub
parent 6d57bb89c1
commit 28e43881b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -182,40 +182,33 @@ int get_op_type(int char1, int char2)
return i;
}
/*
* Return TRUE if operator "op" always works on whole lines.
*/
/// @return TRUE if operator "op" always works on whole lines.
int op_on_lines(int op)
{
return opchars[op][2] & OPF_LINES;
}
// Return TRUE if operator "op" changes text.
/// @return TRUE if operator "op" changes text.
int op_is_change(int op)
{
return opchars[op][2] & OPF_CHANGE;
}
/*
* Get first operator command character.
* Returns 'g' or 'z' if there is another command character.
*/
/// Get first operator command character.
///
/// @return 'g' or 'z' if there is another command character.
int get_op_char(int optype)
{
return opchars[optype][0];
}
/*
* Get second operator command character.
*/
/// Get second operator command character.
int get_extra_op_char(int optype)
{
return opchars[optype][1];
}
/*
* op_shift - handle a shift operation
*/
/// handle a shift operation
void op_shift(oparg_T *oap, int curs_top, int amount)
{
long i;
@ -334,10 +327,8 @@ void shift_line(int left, int round, int amount, int call_changed_bytes)
}
}
/*
* Shift one line of the current block one shiftwidth right or left.
* Leaves cursor on first character in block.
*/
/// Shift one line of the current block one shiftwidth right or left.
/// Leaves cursor on first character in block.
static void shift_block(oparg_T *oap, int amount)
{
const bool left = (oap->op_type == OP_LSHIFT);
@ -517,10 +508,8 @@ static void shift_block(oparg_T *oap, int amount)
p_ri = old_p_ri;
}
/*
* Insert string "s" (b_insert ? before : after) block :AKelly
* Caller must prepare for undo.
*/
/// Insert string "s" (b_insert ? before : after) block :AKelly
/// Caller must prepare for undo.
static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def *bdp)
{
int p_ts;
@ -630,9 +619,7 @@ static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def
State = oldstate;
}
/*
* op_reindent - handle reindenting a block of lines.
*/
/// Handle reindenting a block of lines.
void op_reindent(oparg_T *oap, Indenter how)
{
long i = 0;
@ -718,10 +705,9 @@ void op_reindent(oparg_T *oap, Indenter how)
*/
static char_u *expr_line = NULL;
/*
* Get an expression for the "\"=expr1" or "CTRL-R =expr1"
* Returns '=' when OK, NUL otherwise.
*/
/// Get an expression for the "\"=expr1" or "CTRL-R =expr1"
///
/// @return '=' when OK, NUL otherwise.
int get_expr_register(void)
{
char_u *new_line;
@ -738,20 +724,17 @@ int get_expr_register(void)
return '=';
}
/*
* Set the expression for the '=' register.
* Argument must be an allocated string.
*/
/// Set the expression for the '=' register.
/// Argument must be an allocated string.
void set_expr_line(char_u *new_line)
{
xfree(expr_line);
expr_line = new_line;
}
/*
* Get the result of the '=' register expression.
* Returns a pointer to allocated memory, or NULL for failure.
*/
/// Get the result of the '=' register expression.
///
/// @return a pointer to allocated memory, or NULL for failure.
char_u *get_expr_line(void)
{
char_u *expr_copy;
@ -779,9 +762,7 @@ char_u *get_expr_line(void)
return rv;
}
/*
* Get the '=' register expression itself, without evaluating it.
*/
/// Get the '=' register expression itself, without evaluating it.
char_u *get_expr_line_src(void)
{
if (expr_line == NULL) {
@ -790,8 +771,9 @@ char_u *get_expr_line_src(void)
return vim_strsave(expr_line);
}
/// Returns whether `regname` is a valid name of a yank register.
/// Note: There is no check for 0 (default register), caller should do this.
/// @return whether `regname` is a valid name of a yank register.
///
/// @note: There is no check for 0 (default register), caller should do this.
/// The black hole register '_' is regarded as valid.
///
/// @param regname name of register
@ -811,7 +793,7 @@ bool valid_yank_reg(int regname, bool writing)
return false;
}
/// Return yankreg_T to use, according to the value of `regname`.
/// @return yankreg_T to use, according to the value of `regname`.
/// Cannot handle the '_' (black hole) register.
/// Must only be called with a valid register name!
///
@ -871,8 +853,8 @@ static inline bool is_literal_register(int regname)
return regname == '*' || regname == '+';
}
/// Returns a copy of contents in register `name`
/// for use in do_put. Should be freed by caller.
/// @return a copy of contents in register `name` for use in do_put. Should be
/// freed by caller.
yankreg_T *copy_register(int name)
FUNC_ATTR_NONNULL_RET
{
@ -891,7 +873,7 @@ yankreg_T *copy_register(int name)
return copy;
}
/// check if the current yank register has kMTLineWise register type
/// Check if the current yank register has kMTLineWise register type
bool yank_register_mline(int regname)
{
if (regname != 0 && !valid_yank_reg(regname, false)) {
@ -904,11 +886,9 @@ bool yank_register_mline(int regname)
return reg->y_type == kMTLineWise;
}
/*
* Start or stop recording into a yank register.
*
* Return FAIL for failure, OK otherwise.
*/
/// Start or stop recording into a yank register.
///
/// @return FAIL for failure, OK otherwise.
int do_record(int c)
{
char_u *p;
@ -985,12 +965,10 @@ static void set_yreg_additional_data(yankreg_T *reg, dict_T *additional_data)
reg->additional_data = additional_data;
}
/*
* Stuff string "p" into yank register "regname" as a single line (append if
* uppercase). "p" must have been allocated.
*
* return FAIL for failure, OK otherwise
*/
/// Stuff string "p" into yank register "regname" as a single line (append if
/// uppercase). "p" must have been allocated.
///
/// @return FAIL for failure, OK otherwise
static int stuff_yank(int regname, char_u *p)
{
// check for read-only register
@ -1198,10 +1176,8 @@ int do_execreg(int regname, int colon, int addcr, int silent)
return retval;
}
/*
* If "restart_edit" is not zero, put it in the typeahead buffer, so that it's
* used only after other typeahead has been processed.
*/
/// If "restart_edit" is not zero, put it in the typeahead buffer, so that it's
/// used only after other typeahead has been processed.
static void put_reedit_in_typebuf(int silent)
{
char_u buf[3];
@ -1477,7 +1453,7 @@ bool cmdline_paste_reg(int regname, bool literally_arg, bool remcr)
return OK;
}
// Shift the delete registers: "9 is cleared, "8 becomes "9, etc.
/// Shift the delete registers: "9 is cleared, "8 becomes "9, etc.
static void shift_delete_registers(bool y_append)
{
free_register(&y_regs[9]); // free register "9
@ -1490,11 +1466,9 @@ static void shift_delete_registers(bool y_append)
y_regs[1].y_array = NULL; // set register "1 to empty
}
/*
* Handle a delete operation.
*
* Return FAIL if undo failed, OK otherwise.
*/
/// Handle a delete operation.
///
/// @return FAIL if undo failed, OK otherwise.
int op_delete(oparg_T *oap)
{
int n;
@ -1832,10 +1806,8 @@ setmarks:
return OK;
}
/*
* Adjust end of operating area for ending on a multi-byte character.
* Used for deletion.
*/
/// Adjust end of operating area for ending on a multi-byte character.
/// Used for deletion.
static void mb_adjust_opend(oparg_T *oap)
{
char_u *p;
@ -1846,9 +1818,7 @@ static void mb_adjust_opend(oparg_T *oap)
}
}
/*
* Put character 'c' at position 'lp'
*/
/// Put character 'c' at position 'lp'
static inline void pbyte(pos_T lp, int c)
{
assert(c <= UCHAR_MAX);
@ -1858,8 +1828,8 @@ static inline void pbyte(pos_T lp, int c)
}
}
// Replace the character under the cursor with "c".
// This takes care of multi-byte characters.
/// Replace the character under the cursor with "c".
/// This takes care of multi-byte characters.
static void replace_character(int c)
{
const int n = State;
@ -1871,9 +1841,7 @@ static void replace_character(int c)
dec_cursor();
}
/*
* Replace a whole area with one character.
*/
/// Replace a whole area with one character.
static int op_replace(oparg_T *oap, int c)
{
int n, numc;
@ -2104,9 +2072,7 @@ static int op_replace(oparg_T *oap, int c)
return OK;
}
/*
* Handle the (non-standard vi) tilde operator. Also for "gu", "gU" and "g?".
*/
/// Handle the (non-standard vi) tilde operator. Also for "gu", "gU" and "g?".
void op_tilde(oparg_T *oap)
{
pos_T pos;
@ -2180,13 +2146,13 @@ void op_tilde(oparg_T *oap)
}
}
/*
* Invoke swapchar() on "length" bytes at position "pos".
* "pos" is advanced to just after the changed characters.
* "length" is rounded up to include the whole last multi-byte character.
* Also works correctly when the number of bytes changes.
* Returns TRUE if some character was changed.
*/
/// Invoke swapchar() on "length" bytes at position "pos".
///
/// @param pos is advanced to just after the changed characters.
/// @param length is rounded up to include the whole last multi-byte character.
/// Also works correctly when the number of bytes changes.
///
/// @return TRUE if some character was changed.
static int swapchars(int op_type, pos_T *pos, int length)
FUNC_ATTR_NONNULL_ALL
{
@ -2207,11 +2173,13 @@ static int swapchars(int op_type, pos_T *pos, int length)
return did_change;
}
// If op_type == OP_UPPER: make uppercase,
// if op_type == OP_LOWER: make lowercase,
// if op_type == OP_ROT13: do rot13 encoding,
// else swap case of character at 'pos'
// returns true when something actually changed.
/// @param op_type
/// == OP_UPPER: make uppercase,
/// == OP_LOWER: make lowercase,
/// == OP_ROT13: do rot13 encoding,
/// else swap case of character at 'pos'
///
/// @return true when something actually changed.
bool swapchar(int op_type, pos_T *pos)
FUNC_ATTR_NONNULL_ARG(2)
{
@ -2265,9 +2233,7 @@ bool swapchar(int op_type, pos_T *pos)
return false;
}
/*
* op_insert - Insert and append operators for Visual mode.
*/
/// Insert and append operators for Visual mode.
void op_insert(oparg_T *oap, long count1)
{
long ins_len, pre_textlen = 0;
@ -2482,11 +2448,9 @@ void op_insert(oparg_T *oap, long count1)
}
}
/*
* op_change - handle a change operation
*
* return TRUE if edit() returns because of a CTRL-O command
*/
/// handle a change operation
///
/// @return TRUE if edit() returns because of a CTRL-O command
int op_change(oparg_T *oap)
{
colnr_T l;
@ -2607,9 +2571,7 @@ int op_change(oparg_T *oap)
return retval;
}
/*
* set all the yank registers to empty (called from main())
*/
/// set all the yank registers to empty (called from main())
void init_yank(void)
{
memset(&(y_regs[0]), 0, sizeof(y_regs));
@ -2629,7 +2591,8 @@ void clear_registers(void)
/// Free contents of yankreg `reg`.
/// Called for normal freeing and in case of error.
/// `reg` must not be NULL (but `reg->y_array` might be)
///
/// @param reg must not be NULL (but `reg->y_array` might be)
void free_register(yankreg_T *reg)
FUNC_ATTR_NONNULL_ALL
{
@ -2873,8 +2836,9 @@ static void op_yank_reg(oparg_T *oap, bool message, yankreg_T *reg, bool append)
}
}
// Copy a block range into a register.
// If "exclude_trailing_space" is set, do not copy trailing whitespaces.
/// Copy a block range into a register.
///
/// @param exclude_trailing_space if true, do not copy trailing whitespaces.
static void yank_copy_line(yankreg_T *reg, struct block_def *bd, size_t y_idx,
bool exclude_trailing_space)
FUNC_ATTR_NONNULL_ALL
@ -2963,13 +2927,14 @@ static void do_autocmd_textyankpost(oparg_T *oap, yankreg_T *reg)
recursive = false;
}
// Put contents of register "regname" into the text.
// Caller must check "regname" to be valid!
// "flags": PUT_FIXINDENT make indent look nice
// PUT_CURSEND leave cursor after end of new text
// PUT_LINE force linewise put (":put")
// PUT_BLOCK_INNER in block mode, do not add trailing spaces
// dir: BACKWARD for 'P', FORWARD for 'p'
/// Put contents of register "regname" into the text.
/// Caller must check "regname" to be valid!
///
/// @param flags PUT_FIXINDENT make indent look nice
/// PUT_CURSEND leave cursor after end of new text
/// PUT_LINE force linewise put (":put")
/// PUT_BLOCK_INNER in block mode, do not add trailing spaces
/// @param dir BACKWARD for 'P', FORWARD for 'p'
void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
{
char_u *ptr;
@ -3760,10 +3725,8 @@ end:
adjust_cursor_eol();
}
/*
* When the cursor is on the NUL past the end of the line and it should not be
* there move it left.
*/
/// When the cursor is on the NUL past the end of the line and it should not be
/// there move it left.
void adjust_cursor_eol(void)
{
unsigned int cur_ve_flags = get_ve_flags();
@ -3785,9 +3748,7 @@ void adjust_cursor_eol(void)
}
}
/*
* Return TRUE if lines starting with '#' should be left aligned.
*/
/// @return TRUE if lines starting with '#' should be left aligned.
int preprocs_left(void)
{
return ((curbuf->b_p_si && !curbuf->b_p_cin)
@ -3795,7 +3756,7 @@ int preprocs_left(void)
&& curbuf->b_ind_hash_comment == 0));
}
// Return the character name of the register with the given number
/// @return the character name of the register with the given number
int get_register_name(int num)
{
if (num == -1) {
@ -3819,9 +3780,7 @@ int get_unname_register(void)
return y_previous == NULL ? -1 : (int)(y_previous - &y_regs[0]);
}
/*
* ":dis" and ":registers": Display the contents of the yank registers.
*/
/// ":dis" and ":registers": Display the contents of the yank registers.
void ex_display(exarg_T *eap)
{
char_u *p;
@ -4048,14 +4007,14 @@ char_u *skip_comment(char_u *line, bool process, bool include_space, bool *is_co
return line;
}
// Join 'count' lines (minimal 2) at cursor position.
// When "save_undo" is TRUE save lines for undo first.
// Set "use_formatoptions" to FALSE when e.g. processing backspace and comment
// leaders should not be removed.
// When setmark is true, sets the '[ and '] mark, else, the caller is expected
// to set those marks.
//
// return FAIL for failure, OK otherwise
/// @param count number of lines (minimal 2) to join at cursor position.
/// @param save_undo when TRUE, save lines for undo first.
/// @param use_formatoptions set to FALSE when e.g. processing backspace and comment
/// leaders should not be removed.
/// @param setmark when true, sets the '[ and '] mark, else, the caller is expected
/// to set those marks.
///
/// @return FAIL for failure, OK otherwise
int do_join(size_t count, int insert_space, int save_undo, int use_formatoptions, bool setmark)
{
char_u *curr = NULL;
@ -4256,11 +4215,11 @@ theend:
return ret;
}
/*
* Return TRUE if the two comment leaders given are the same. "lnum" is
* the first line. White-space is ignored. Note that the whole of
* 'leader1' must match 'leader2_len' characters from 'leader2' -- webb
*/
/// @return TRUE if the two comment leaders given are the same.
///
/// @param lnum The first line. White-space is ignored.
///
/// @note the whole of 'leader1' must match 'leader2_len' characters from 'leader2'.
static int same_leader(linenr_T lnum, int leader1_len, char_u *leader1_flags, int leader2_len,
char_u *leader2_flags)
{
@ -4400,9 +4359,7 @@ static void op_format(oparg_T *oap, int keep_cursor)
}
}
/*
* Implementation of the format operator 'gq' for when using 'formatexpr'.
*/
/// Implementation of the format operator 'gq' for when using 'formatexpr'.
static void op_formatexpr(oparg_T *oap)
{
if (oap->is_VIsual) {
@ -4449,8 +4406,9 @@ int fex_format(linenr_T lnum, long count, int c)
return r;
}
/// Format "line_count" lines, starting at the cursor position.
/// When "line_count" is negative, format until the end of the paragraph.
/// @param line_count number of lines to format, starting at the cursor position.
/// when negative, format until the end of the paragraph.
///
/// Lines after the cursor line are saved for undo, caller must have saved the
/// first line.
///
@ -4677,9 +4635,7 @@ void format_lines(linenr_T line_count, int avoid_fex)
}
}
/*
* Return TRUE if line "lnum" ends in a white character.
*/
/// @return TRUE if line "lnum" ends in a white character.
static int ends_in_white(linenr_T lnum)
{
char_u *s = ml_get(lnum);
@ -4692,14 +4648,12 @@ static int ends_in_white(linenr_T lnum)
return ascii_iswhite(s[l]);
}
/*
* Blank lines, and lines containing only the comment leader, are left
* untouched by the formatting. The function returns TRUE in this
* case. It also returns TRUE when a line starts with the end of a comment
* ('e' in comment flags), so that this line is skipped, and not joined to the
* previous line. A new paragraph starts after a blank line, or when the
* comment leader changes -- webb.
*/
/// Blank lines, and lines containing only the comment leader, are left
/// untouched by the formatting. The function returns TRUE in this
/// case. It also returns TRUE when a line starts with the end of a comment
/// ('e' in comment flags), so that this line is skipped, and not joined to the
/// previous line. A new paragraph starts after a blank line, or when the
/// comment leader changes.
static int fmt_check_par(linenr_T lnum, int *leader_len, char_u **leader_flags, int do_comments)
{
char_u *flags = NULL; // init for GCC
@ -4727,10 +4681,10 @@ static int fmt_check_par(linenr_T lnum, int *leader_len, char_u **leader_flags,
|| startPS(lnum, NUL, FALSE);
}
/*
* Return TRUE when a paragraph starts in line "lnum". Return FALSE when the
* previous line is in the same paragraph. Used for auto-formatting.
*/
/// Used for auto-formatting.
///
/// @return TRUE when a paragraph starts in line "lnum".
/// FALSE when the previous line is in the same paragraph.
int paragraph_start(linenr_T lnum)
{
char_u *p;
@ -4768,19 +4722,17 @@ int paragraph_start(linenr_T lnum)
return FALSE;
}
/*
* prepare a few things for block mode yank/delete/tilde
*
* for delete:
* - textlen includes the first/last char to be (partly) deleted
* - start/endspaces is the number of columns that are taken by the
* first/last deleted char minus the number of columns that have to be
* deleted.
* for yank and tilde:
* - textlen includes the first/last char to be wholly yanked
* - start/endspaces is the number of columns of the first/last yanked char
* that are to be yanked.
*/
/// prepare a few things for block mode yank/delete/tilde
///
/// for delete:
/// - textlen includes the first/last char to be (partly) deleted
/// - start/endspaces is the number of columns that are taken by the
/// first/last deleted char minus the number of columns that have to be
/// deleted.
/// for yank and tilde:
/// - textlen includes the first/last char to be wholly yanked
/// - start/endspaces is the number of columns of the first/last yanked char
/// that are to be yanked.
static void block_prep(oparg_T *oap, struct block_def *bdp, linenr_T lnum, bool is_del)
{
int incr = 0;
@ -5369,11 +5321,10 @@ theend:
return did_change;
}
/*
* Return the type of a register.
* Used for getregtype()
* Returns kMTUnknown for error.
*/
/// Used for getregtype()
///
/// @return the type of a register or
/// kMTUnknown for error.
MotionType get_reg_type(int regname, colnr_T *reg_width)
{
switch (regname) {
@ -5438,7 +5389,7 @@ void format_reg_type(MotionType reg_type, colnr_T reg_width, char *buf, size_t b
/// When `flags` has `kGRegList` return a list with text `s`.
/// Otherwise just return `s`.
///
/// Returns a void * for use in get_reg_contents().
/// @return a void * for use in get_reg_contents().
static void *get_reg_wrap_one_line(char_u *s, int flags)
{
if (!(flags & kGRegList)) {
@ -5572,7 +5523,7 @@ static void finish_write_reg(int name, yankreg_T *reg, yankreg_T *old_y_previous
}
}
/// write_reg_contents - store `str` in register `name`
/// store `str` in register `name`
///
/// @see write_reg_contents_ex
void write_reg_contents(int name, const char_u *str, ssize_t len, int must_append)
@ -5815,20 +5766,18 @@ void clear_oparg(oparg_T *oap)
memset(oap, 0, sizeof(oparg_T));
}
/*
* Count the number of bytes, characters and "words" in a line.
*
* "Words" are counted by looking for boundaries between non-space and
* space characters. (it seems to produce results that match 'wc'.)
*
* Return value is byte count; word count for the line is added to "*wc".
* Char count is added to "*cc".
*
* The function will only examine the first "limit" characters in the
* line, stopping if it encounters an end-of-line (NUL byte). In that
* case, eol_size will be added to the character count to account for
* the size of the EOL character.
*/
/// Count the number of bytes, characters and "words" in a line.
///
/// "Words" are counted by looking for boundaries between non-space and
/// space characters. (it seems to produce results that match 'wc'.)
///
/// Return value is byte count; word count for the line is added to "*wc".
/// Char count is added to "*cc".
///
/// The function will only examine the first "limit" characters in the
/// line, stopping if it encounters an end-of-line (NUL byte). In that
/// case, eol_size will be added to the character count to account for
/// the size of the EOL character.
static varnumber_T line_count_info(char_u *line, varnumber_T *wc, varnumber_T *cc,
varnumber_T limit, int eol_size)
{
@ -5867,7 +5816,8 @@ static varnumber_T line_count_info(char_u *line, varnumber_T *wc, varnumber_T *c
/// Give some info about the position of the cursor (for "g CTRL-G").
/// In Visual mode, give some info about the selected region. (In this case,
/// the *_count_cursor variables store running totals for the selection.)
/// When "dict" is not NULL store the info there instead of showing it.
///
/// @param dict when not NULL, store the info there instead of showing it.
void cursor_pos_info(dict_T *dict)
{
char_u *p;
@ -6113,7 +6063,7 @@ void cursor_pos_info(dict_T *dict)
}
}
// Handle indent and format operators and visual mode ":".
/// Handle indent and format operators and visual mode ":".
static void op_colon(oparg_T *oap)
{
stuffcharReadbuff(':');
@ -6160,7 +6110,7 @@ static void op_colon(oparg_T *oap)
// do_cmdline() does the rest
}
// Handle the "g@" operator: call 'operatorfunc'.
/// Handle the "g@" operator: call 'operatorfunc'.
static void op_function(const oparg_T *oap)
FUNC_ATTR_NONNULL_ALL
{
@ -6273,8 +6223,8 @@ static void get_op_vcol(oparg_T *oap, colnr_T redo_VIsual_vcol, bool initial)
oap->start = curwin->w_cursor;
}
// Handle an operator after Visual mode or when the movement is finished.
// "gui_yank" is true when yanking text for the clipboard.
/// Handle an operator after Visual mode or when the movement is finished.
/// "gui_yank" is true when yanking text for the clipboard.
void do_pending_operator(cmdarg_T *cap, int old_col, bool gui_yank)
{
oparg_T *oap = cap->oap;