aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Fox <pgf@brightstareng.com>2008-02-14 01:17:01 +0000
committerPaul Fox <pgf@brightstareng.com>2008-02-14 01:17:01 +0000
commitb5ee8db9b55eeeab542d6263d67aac12ffcb5e5b (patch)
tree75dd55fc5638d3389bbf9ccc519006f439ec072e
parent65eb550024a2d849951b7f0ac603fe4eedc5e3dd (diff)
downloadbusybox-w32-b5ee8db9b55eeeab542d6263d67aac12ffcb5e5b.tar.gz
busybox-w32-b5ee8db9b55eeeab542d6263d67aac12ffcb5e5b.tar.bz2
busybox-w32-b5ee8db9b55eeeab542d6263d67aac12ffcb5e5b.zip
add ',' and 'gg' commands (patch from Leo Jay)
-rw-r--r--editors/vi.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/editors/vi.c b/editors/vi.c
index ce10a60a4..6f4bd06f2 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3024,7 +3024,6 @@ static void do_cmd(char c)
3024 //case '(': // (- 3024 //case '(': // (-
3025 //case ')': // )- 3025 //case ')': // )-
3026 //case '*': // *- 3026 //case '*': // *-
3027 //case ',': // ,-
3028 //case '=': // =- 3027 //case '=': // =-
3029 //case '@': // @- 3028 //case '@': // @-
3030 //case 'F': // F- 3029 //case 'F': // F-
@@ -3038,7 +3037,6 @@ static void do_cmd(char c)
3038 //case ']': // ]- 3037 //case ']': // ]-
3039 //case '_': // _- 3038 //case '_': // _-
3040 //case '`': // `- 3039 //case '`': // `-
3041 //case 'g': // g-
3042 //case 'u': // u- FIXME- there is no undo 3040 //case 'u': // u- FIXME- there is no undo
3043 //case 'v': // v- 3041 //case 'v': // v-
3044 default: // unrecognised command 3042 default: // unrecognised command
@@ -3259,6 +3257,20 @@ static void do_cmd(char c)
3259 if (*q == last_forward_char) 3257 if (*q == last_forward_char)
3260 dot = q; 3258 dot = q;
3261 break; 3259 break;
3260 case ',': // repeat latest 'f' in opposite direction
3261 if (cmdcnt-- > 1) {
3262 do_cmd(',');
3263 } // repeat cnt
3264 if (last_forward_char == 0)
3265 break;
3266 q = dot - 1;
3267 while (q >= text && *q != '\n' && *q != last_forward_char) {
3268 q--;
3269 }
3270 if (q >= text && *q == last_forward_char)
3271 dot = q;
3272 break;
3273
3262 case '-': // -- goto prev line 3274 case '-': // -- goto prev line
3263 if (cmdcnt-- > 1) { 3275 if (cmdcnt-- > 1) {
3264 do_cmd(c); 3276 do_cmd(c);
@@ -3491,6 +3503,19 @@ static void do_cmd(char c)
3491 end_cmd_q(); // stop adding to q 3503 end_cmd_q(); // stop adding to q
3492#endif 3504#endif
3493 break; 3505 break;
3506 case 'g': // 'gg' goto a line number (from vim)
3507 // (default to first line in file)
3508 c1 = get_one_char();
3509 if (c1 != 'g') {
3510 buf[0] = 'g';
3511 buf[1] = c1;
3512 buf[2] = '\0';
3513 not_implemented(buf);
3514 break;
3515 }
3516 if (cmdcnt == 0)
3517 cmdcnt = 1;
3518 /* fall through */
3494 case 'G': // G- goto to a line number (default= E-O-F) 3519 case 'G': // G- goto to a line number (default= E-O-F)
3495 dot = end - 1; // assume E-O-F 3520 dot = end - 1; // assume E-O-F
3496 if (cmdcnt > 0) { 3521 if (cmdcnt > 0) {