mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
refactor(usercmd.c): reduce scope of locals
This commit is contained in:
parent
1d259724a9
commit
676e1d4900
@ -130,23 +130,21 @@ static struct {
|
||||
char *find_ucmd(exarg_T *eap, char *p, int *full, expand_T *xp, int *complp)
|
||||
{
|
||||
int len = (int)(p - eap->cmd);
|
||||
int j, k, matchlen = 0;
|
||||
ucmd_T *uc;
|
||||
int matchlen = 0;
|
||||
bool found = false;
|
||||
bool possible = false;
|
||||
char *cp, *np; // Point into typed cmd and test name
|
||||
garray_T *gap;
|
||||
bool amb_local = false; // Found ambiguous buffer-local command,
|
||||
// only full match global is accepted.
|
||||
|
||||
// Look for buffer-local user commands first, then global ones.
|
||||
gap = &prevwin_curwin()->w_buffer->b_ucmds;
|
||||
garray_T *gap = &prevwin_curwin()->w_buffer->b_ucmds;
|
||||
while (true) {
|
||||
int j;
|
||||
for (j = 0; j < gap->ga_len; j++) {
|
||||
uc = USER_CMD_GA(gap, j);
|
||||
cp = eap->cmd;
|
||||
np = uc->uc_name;
|
||||
k = 0;
|
||||
ucmd_T *uc = USER_CMD_GA(gap, j);
|
||||
char *cp = eap->cmd;
|
||||
char *np = uc->uc_name;
|
||||
int k = 0;
|
||||
while (k < len && *np != NUL && *cp++ == *np++) {
|
||||
k++;
|
||||
}
|
||||
@ -447,17 +445,15 @@ int cmdcomplete_str_to_type(const char *complete_str)
|
||||
|
||||
static void uc_list(char *name, size_t name_len)
|
||||
{
|
||||
int i, j;
|
||||
bool found = false;
|
||||
ucmd_T *cmd;
|
||||
uint32_t a;
|
||||
|
||||
// In cmdwin, the alternative buffer should be used.
|
||||
const garray_T *gap = &prevwin_curwin()->w_buffer->b_ucmds;
|
||||
while (true) {
|
||||
int i;
|
||||
for (i = 0; i < gap->ga_len; i++) {
|
||||
cmd = USER_CMD_GA(gap, i);
|
||||
a = cmd->uc_argt;
|
||||
ucmd_T *cmd = USER_CMD_GA(gap, i);
|
||||
uint32_t a = cmd->uc_argt;
|
||||
|
||||
// Skip commands which don't match the requested prefix and
|
||||
// commands filtered out.
|
||||
@ -559,7 +555,7 @@ static void uc_list(char *name, size_t name_len)
|
||||
} while ((int64_t)len < 8 - over);
|
||||
|
||||
// Address Type
|
||||
for (j = 0; addr_type_complete[j].expand != ADDR_NONE; j++) {
|
||||
for (int j = 0; addr_type_complete[j].expand != ADDR_NONE; j++) {
|
||||
if (addr_type_complete[j].expand != ADDR_LINES
|
||||
&& addr_type_complete[j].expand == cmd->uc_addr_type) {
|
||||
int rc = snprintf(IObuff + len, IOSIZE - len, "%s", addr_type_complete[j].shortname);
|
||||
@ -623,11 +619,11 @@ static void uc_list(char *name, size_t name_len)
|
||||
int parse_addr_type_arg(char *value, int vallen, cmd_addr_T *addr_type_arg)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
int i, a, b;
|
||||
int i;
|
||||
|
||||
for (i = 0; addr_type_complete[i].expand != ADDR_NONE; i++) {
|
||||
a = (int)strlen(addr_type_complete[i].name) == vallen;
|
||||
b = strncmp(value, addr_type_complete[i].name, (size_t)vallen) == 0;
|
||||
int a = (int)strlen(addr_type_complete[i].name) == vallen;
|
||||
int b = strncmp(value, addr_type_complete[i].name, (size_t)vallen) == 0;
|
||||
if (a && b) {
|
||||
*addr_type_arg = addr_type_complete[i].expand;
|
||||
break;
|
||||
@ -657,11 +653,10 @@ int parse_compl_arg(const char *value, int vallen, int *complp, uint32_t *argt,
|
||||
{
|
||||
const char *arg = NULL;
|
||||
size_t arglen = 0;
|
||||
int i;
|
||||
int valend = vallen;
|
||||
|
||||
// Look for any argument part - which is the part after any ','
|
||||
for (i = 0; i < vallen; i++) {
|
||||
for (int i = 0; i < vallen; i++) {
|
||||
if (value[i] == ',') {
|
||||
arg = (char *)&value[i + 1];
|
||||
arglen = (size_t)(vallen - i - 1);
|
||||
@ -670,6 +665,7 @@ int parse_compl_arg(const char *value, int vallen, int *complp, uint32_t *argt,
|
||||
}
|
||||
}
|
||||
|
||||
int i;
|
||||
for (i = 0; i < (int)ARRAY_SIZE(command_complete); i++) {
|
||||
if (get_command_complete(i) == NULL) {
|
||||
continue;
|
||||
@ -713,8 +709,6 @@ static int uc_scan_attr(char *attr, size_t len, uint32_t *argt, long *def, int *
|
||||
char **compl_arg, cmd_addr_T *addr_type_arg)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
char *p;
|
||||
|
||||
if (len == 0) {
|
||||
emsg(_("E175: No attribute specified"));
|
||||
return FAIL;
|
||||
@ -732,13 +726,12 @@ static int uc_scan_attr(char *attr, size_t len, uint32_t *argt, long *def, int *
|
||||
} else if (STRNICMP(attr, "bar", len) == 0) {
|
||||
*argt |= EX_TRLBAR;
|
||||
} else {
|
||||
int i;
|
||||
char *val = NULL;
|
||||
size_t vallen = 0;
|
||||
size_t attrlen = len;
|
||||
|
||||
// Look for the attribute name - which is the part before any '='
|
||||
for (i = 0; i < (int)len; i++) {
|
||||
for (int i = 0; i < (int)len; i++) {
|
||||
if (attr[i] == '=') {
|
||||
val = &attr[i + 1];
|
||||
vallen = len - (size_t)i - 1;
|
||||
@ -772,7 +765,7 @@ wrong_nargs:
|
||||
if (vallen == 1 && *val == '%') {
|
||||
*argt |= EX_DFLALL;
|
||||
} else if (val != NULL) {
|
||||
p = val;
|
||||
char *p = val;
|
||||
if (*def >= 0) {
|
||||
two_count:
|
||||
emsg(_("E177: Count cannot be specified twice"));
|
||||
@ -800,7 +793,7 @@ invalid_count:
|
||||
}
|
||||
|
||||
if (val != NULL) {
|
||||
p = val;
|
||||
char *p = val;
|
||||
if (*def >= 0) {
|
||||
goto two_count;
|
||||
}
|
||||
@ -878,7 +871,6 @@ int uc_add_command(char *name, size_t name_len, const char *rep, uint32_t argt,
|
||||
FUNC_ATTR_NONNULL_ARG(1, 3)
|
||||
{
|
||||
ucmd_T *cmd = NULL;
|
||||
int i;
|
||||
int cmp = 1;
|
||||
char *rep_buf = NULL;
|
||||
garray_T *gap;
|
||||
@ -899,12 +891,12 @@ int uc_add_command(char *name, size_t name_len, const char *rep, uint32_t argt,
|
||||
gap = &ucmds;
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
// Search for the command in the already defined commands.
|
||||
for (i = 0; i < gap->ga_len; i++) {
|
||||
size_t len;
|
||||
|
||||
cmd = USER_CMD_GA(gap, i);
|
||||
len = strlen(cmd->uc_name);
|
||||
size_t len = strlen(cmd->uc_name);
|
||||
cmp = strncmp(name, cmd->uc_name, name_len);
|
||||
if (cmp == 0) {
|
||||
if (name_len < len) {
|
||||
@ -980,9 +972,7 @@ fail:
|
||||
/// ":command ..."
|
||||
void ex_command(exarg_T *eap)
|
||||
{
|
||||
char *name;
|
||||
char *end;
|
||||
char *p;
|
||||
uint32_t argt = 0;
|
||||
long def = -1;
|
||||
int flags = 0;
|
||||
@ -990,9 +980,8 @@ void ex_command(exarg_T *eap)
|
||||
char *compl_arg = NULL;
|
||||
cmd_addr_T addr_type_arg = ADDR_NONE;
|
||||
int has_attr = (eap->arg[0] == '-');
|
||||
size_t name_len;
|
||||
|
||||
p = eap->arg;
|
||||
char *p = eap->arg;
|
||||
|
||||
// Check for attributes
|
||||
while (*p == '-') {
|
||||
@ -1006,13 +995,13 @@ void ex_command(exarg_T *eap)
|
||||
}
|
||||
|
||||
// Get the name (if any) and skip to the following argument.
|
||||
name = p;
|
||||
char *name = p;
|
||||
end = uc_validate_name(name);
|
||||
if (!end) {
|
||||
emsg(_("E182: Invalid command name"));
|
||||
goto theend;
|
||||
}
|
||||
name_len = (size_t)(end - name);
|
||||
size_t name_len = (size_t)(end - name);
|
||||
|
||||
// If there is nothing after the name, and no attributes were specified,
|
||||
// we are listing commands
|
||||
@ -1065,7 +1054,6 @@ void ex_delcommand(exarg_T *eap)
|
||||
int i = 0;
|
||||
ucmd_T *cmd = NULL;
|
||||
int res = -1;
|
||||
garray_T *gap;
|
||||
const char *arg = eap->arg;
|
||||
bool buffer_only = false;
|
||||
|
||||
@ -1074,7 +1062,7 @@ void ex_delcommand(exarg_T *eap)
|
||||
arg = skipwhite(arg + 7);
|
||||
}
|
||||
|
||||
gap = &curbuf->b_ucmds;
|
||||
garray_T *gap = &curbuf->b_ucmds;
|
||||
while (true) {
|
||||
for (i = 0; i < gap->ga_len; i++) {
|
||||
cmd = USER_CMD_GA(gap, i);
|
||||
@ -1153,15 +1141,10 @@ bool uc_split_args_iter(const char *arg, size_t arglen, size_t *end, char *buf,
|
||||
static char *uc_split_args(const char *arg, char **args, const size_t *arglens, size_t argc,
|
||||
size_t *lenp)
|
||||
{
|
||||
char *buf;
|
||||
const char *p;
|
||||
char *q;
|
||||
int len;
|
||||
|
||||
// Precalculate length
|
||||
len = 2; // Initial and final quotes
|
||||
int len = 2; // Initial and final quotes
|
||||
if (args == NULL) {
|
||||
p = arg;
|
||||
const char *p = arg;
|
||||
|
||||
while (*p) {
|
||||
if (p[0] == '\\' && p[1] == '\\') {
|
||||
@ -1188,7 +1171,7 @@ static char *uc_split_args(const char *arg, char **args, const size_t *arglens,
|
||||
}
|
||||
} else {
|
||||
for (size_t i = 0; i < argc; i++) {
|
||||
p = args[i];
|
||||
const char *p = args[i];
|
||||
const char *arg_end = args[i] + arglens[i];
|
||||
|
||||
while (p < arg_end) {
|
||||
@ -1209,13 +1192,13 @@ static char *uc_split_args(const char *arg, char **args, const size_t *arglens,
|
||||
}
|
||||
}
|
||||
|
||||
buf = xmalloc((size_t)len + 1);
|
||||
char *buf = xmalloc((size_t)len + 1);
|
||||
|
||||
q = buf;
|
||||
char *q = buf;
|
||||
*q++ = '"';
|
||||
|
||||
if (args == NULL) {
|
||||
p = arg;
|
||||
const char *p = arg;
|
||||
while (*p) {
|
||||
if (p[0] == '\\' && p[1] == '\\') {
|
||||
*q++ = '\\';
|
||||
@ -1242,7 +1225,7 @@ static char *uc_split_args(const char *arg, char **args, const size_t *arglens,
|
||||
}
|
||||
} else {
|
||||
for (size_t i = 0; i < argc; i++) {
|
||||
p = args[i];
|
||||
const char *p = args[i];
|
||||
const char *arg_end = args[i] + arglens[i];
|
||||
|
||||
while (p < arg_end) {
|
||||
@ -1622,14 +1605,7 @@ static size_t uc_check_code(char *code, size_t len, char *buf, ucmd_T *cmd, exar
|
||||
|
||||
int do_ucmd(exarg_T *eap, bool preview)
|
||||
{
|
||||
char *buf;
|
||||
char *p;
|
||||
char *q;
|
||||
|
||||
char *start;
|
||||
char *end = NULL;
|
||||
char *ksp;
|
||||
size_t len, totlen;
|
||||
|
||||
size_t split_len = 0;
|
||||
char *split_buf = NULL;
|
||||
@ -1654,18 +1630,19 @@ int do_ucmd(exarg_T *eap, bool preview)
|
||||
// Replace <> in the command by the arguments.
|
||||
// First round: "buf" is NULL, compute length, allocate "buf".
|
||||
// Second round: copy result into "buf".
|
||||
buf = NULL;
|
||||
char *buf = NULL;
|
||||
while (true) {
|
||||
p = cmd->uc_rep; // source
|
||||
q = buf; // destination
|
||||
totlen = 0;
|
||||
char *p = cmd->uc_rep; // source
|
||||
char *q = buf; // destination
|
||||
size_t totlen = 0;
|
||||
|
||||
while (true) {
|
||||
start = vim_strchr(p, '<');
|
||||
char *start = vim_strchr(p, '<');
|
||||
if (start != NULL) {
|
||||
end = vim_strchr(start + 1, '>');
|
||||
}
|
||||
if (buf != NULL) {
|
||||
char *ksp;
|
||||
for (ksp = p; *ksp != NUL && (uint8_t)(*ksp) != K_SPECIAL; ksp++) {}
|
||||
if ((uint8_t)(*ksp) == K_SPECIAL
|
||||
&& (start == NULL || ksp < start || end == NULL)
|
||||
@ -1673,7 +1650,7 @@ int do_ucmd(exarg_T *eap, bool preview)
|
||||
// K_SPECIAL has been put in the buffer as K_SPECIAL
|
||||
// KS_SPECIAL KE_FILLER, like for mappings, but
|
||||
// do_cmdline() doesn't handle that, so convert it back.
|
||||
len = (size_t)(ksp - p);
|
||||
size_t len = (size_t)(ksp - p);
|
||||
if (len > 0) {
|
||||
memmove(q, p, len);
|
||||
q += len;
|
||||
@ -1693,7 +1670,7 @@ int do_ucmd(exarg_T *eap, bool preview)
|
||||
end++;
|
||||
|
||||
// Take everything up to the '<'
|
||||
len = (size_t)(start - p);
|
||||
size_t len = (size_t)(start - p);
|
||||
if (buf == NULL) {
|
||||
totlen += len;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user