vi: rearrange functions, no logic changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2019-04-01 13:59:38 +02:00
parent 24bd350aaa
commit 363a2bc9b1

View File

@ -511,7 +511,6 @@ static char *char_insert(char *, char, int); // insert the char c at 'p'
// might reallocate text[]! use p += stupid_insert(p, ...),
// and be careful to not use pointers into potentially freed text[]!
static uintptr_t stupid_insert(char *, char); // stupidly insert the char c at 'p'
static int find_range(char **, char **, char); // return pointers for an object
static int st_test(char *, int, int, char *); // helper for skip_thing()
static char *skip_thing(char *, int, int, int); // skip some object
static char *find_pair(char *, char); // find matching pair () [] {}
@ -1874,79 +1873,6 @@ static uintptr_t stupid_insert(char *p, char c) // stupidly insert the char c at
return bias;
}
static int find_range(char **start, char **stop, char c)
{
char *save_dot, *p, *q, *t;
int cnt, multiline = 0;
save_dot = dot;
p = q = dot;
if (strchr("cdy><", c)) {
// these cmds operate on whole lines
p = q = begin_line(p);
for (cnt = 1; cnt < cmdcnt; cnt++) {
q = next_line(q);
}
q = end_line(q);
} else if (strchr("^%$0bBeEfth\b\177", c)) {
// These cmds operate on char positions
do_cmd(c); // execute movement cmd
q = dot;
} else if (strchr("wW", c)) {
do_cmd(c); // execute movement cmd
// if we are at the next word's first char
// step back one char
// but check the possibilities when it is true
if (dot > text && ((isspace(dot[-1]) && !isspace(dot[0]))
|| (ispunct(dot[-1]) && !ispunct(dot[0]))
|| (isalnum(dot[-1]) && !isalnum(dot[0]))))
dot--; // move back off of next word
if (dot > text && *dot == '\n')
dot--; // stay off NL
q = dot;
} else if (strchr("H-k{", c)) {
// these operate on multi-lines backwards
q = end_line(dot); // find NL
do_cmd(c); // execute movement cmd
dot_begin();
p = dot;
} else if (strchr("L+j}\r\n", c)) {
// these operate on multi-lines forwards
p = begin_line(dot);
do_cmd(c); // execute movement cmd
dot_end(); // find NL
q = dot;
} else {
// nothing -- this causes any other values of c to
// represent the one-character range under the
// cursor. this is correct for ' ' and 'l', but
// perhaps no others.
//
}
if (q < p) {
t = q;
q = p;
p = t;
}
// backward char movements don't include start position
if (q > p && strchr("^0bBh\b\177", c)) q--;
multiline = 0;
for (t = p; t <= q; t++) {
if (*t == '\n') {
multiline = 1;
break;
}
}
*start = p;
*stop = q;
dot = save_dot;
return multiline;
}
static int st_test(char *p, int type, int dir, char *tested)
{
char c, c0, ci;
@ -3177,6 +3103,81 @@ static void refresh(int full_screen)
#undef old_offset
}
static void do_cmd(int c);
static int find_range(char **start, char **stop, char c)
{
char *save_dot, *p, *q, *t;
int cnt, multiline = 0;
save_dot = dot;
p = q = dot;
if (strchr("cdy><", c)) {
// these cmds operate on whole lines
p = q = begin_line(p);
for (cnt = 1; cnt < cmdcnt; cnt++) {
q = next_line(q);
}
q = end_line(q);
} else if (strchr("^%$0bBeEfth\b\177", c)) {
// These cmds operate on char positions
do_cmd(c); // execute movement cmd
q = dot;
} else if (strchr("wW", c)) {
do_cmd(c); // execute movement cmd
// if we are at the next word's first char
// step back one char
// but check the possibilities when it is true
if (dot > text && ((isspace(dot[-1]) && !isspace(dot[0]))
|| (ispunct(dot[-1]) && !ispunct(dot[0]))
|| (isalnum(dot[-1]) && !isalnum(dot[0]))))
dot--; // move back off of next word
if (dot > text && *dot == '\n')
dot--; // stay off NL
q = dot;
} else if (strchr("H-k{", c)) {
// these operate on multi-lines backwards
q = end_line(dot); // find NL
do_cmd(c); // execute movement cmd
dot_begin();
p = dot;
} else if (strchr("L+j}\r\n", c)) {
// these operate on multi-lines forwards
p = begin_line(dot);
do_cmd(c); // execute movement cmd
dot_end(); // find NL
q = dot;
} else {
// nothing -- this causes any other values of c to
// represent the one-character range under the
// cursor. this is correct for ' ' and 'l', but
// perhaps no others.
//
}
if (q < p) {
t = q;
q = p;
p = t;
}
// backward char movements don't include start position
if (q > p && strchr("^0bBh\b\177", c)) q--;
multiline = 0;
for (t = p; t <= q; t++) {
if (*t == '\n') {
multiline = 1;
break;
}
}
*start = p;
*stop = q;
dot = save_dot;
return multiline;
}
//---------------------------------------------------------------------
//----- the Ascii Chart -----------------------------------------------
// 00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel