add ',' and 'gg' commands (patch from Leo Jay)
This commit is contained in:
parent
65eb550024
commit
b5ee8db9b5
29
editors/vi.c
29
editors/vi.c
@ -3024,7 +3024,6 @@ static void do_cmd(char c)
|
|||||||
//case '(': // (-
|
//case '(': // (-
|
||||||
//case ')': // )-
|
//case ')': // )-
|
||||||
//case '*': // *-
|
//case '*': // *-
|
||||||
//case ',': // ,-
|
|
||||||
//case '=': // =-
|
//case '=': // =-
|
||||||
//case '@': // @-
|
//case '@': // @-
|
||||||
//case 'F': // F-
|
//case 'F': // F-
|
||||||
@ -3038,7 +3037,6 @@ static void do_cmd(char c)
|
|||||||
//case ']': // ]-
|
//case ']': // ]-
|
||||||
//case '_': // _-
|
//case '_': // _-
|
||||||
//case '`': // `-
|
//case '`': // `-
|
||||||
//case 'g': // g-
|
|
||||||
//case 'u': // u- FIXME- there is no undo
|
//case 'u': // u- FIXME- there is no undo
|
||||||
//case 'v': // v-
|
//case 'v': // v-
|
||||||
default: // unrecognised command
|
default: // unrecognised command
|
||||||
@ -3259,6 +3257,20 @@ static void do_cmd(char c)
|
|||||||
if (*q == last_forward_char)
|
if (*q == last_forward_char)
|
||||||
dot = q;
|
dot = q;
|
||||||
break;
|
break;
|
||||||
|
case ',': // repeat latest 'f' in opposite direction
|
||||||
|
if (cmdcnt-- > 1) {
|
||||||
|
do_cmd(',');
|
||||||
|
} // repeat cnt
|
||||||
|
if (last_forward_char == 0)
|
||||||
|
break;
|
||||||
|
q = dot - 1;
|
||||||
|
while (q >= text && *q != '\n' && *q != last_forward_char) {
|
||||||
|
q--;
|
||||||
|
}
|
||||||
|
if (q >= text && *q == last_forward_char)
|
||||||
|
dot = q;
|
||||||
|
break;
|
||||||
|
|
||||||
case '-': // -- goto prev line
|
case '-': // -- goto prev line
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
do_cmd(c);
|
do_cmd(c);
|
||||||
@ -3491,6 +3503,19 @@ static void do_cmd(char c)
|
|||||||
end_cmd_q(); // stop adding to q
|
end_cmd_q(); // stop adding to q
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
case 'g': // 'gg' goto a line number (from vim)
|
||||||
|
// (default to first line in file)
|
||||||
|
c1 = get_one_char();
|
||||||
|
if (c1 != 'g') {
|
||||||
|
buf[0] = 'g';
|
||||||
|
buf[1] = c1;
|
||||||
|
buf[2] = '\0';
|
||||||
|
not_implemented(buf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (cmdcnt == 0)
|
||||||
|
cmdcnt = 1;
|
||||||
|
/* fall through */
|
||||||
case 'G': // G- goto to a line number (default= E-O-F)
|
case 'G': // G- goto to a line number (default= E-O-F)
|
||||||
dot = end - 1; // assume E-O-F
|
dot = end - 1; // assume E-O-F
|
||||||
if (cmdcnt > 0) {
|
if (cmdcnt > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user