vi: rearrange functions, no logic changes
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 1 Apr 2019 11:59:38 +0000 (13:59 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 1 Apr 2019 11:59:38 +0000 (13:59 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/vi.c

index 40611937113a0a20a2a4517818ff1c552347ccc4..cfb1a71ea15a38b45b1bda86be2d0fc71d169204 100644 (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