--- main.c.org Thu Apr 6 17:05:40 2000 +++ main.c Thu Apr 6 22:48:44 2000 @@ -42,7 +42,7 @@ static int n_event_queue; int (*searchRoutine) (Buffer*, char*); -static void _goLine(char *); +static void _goLine( int ); JMP_BUF IntReturn; @@ -477,7 +477,7 @@ Currentbuf = Firstbuf; displayBuffer(Currentbuf, B_NORMAL); if (line_str){ - _goLine(line_str); + _goLine( atoi( line_str ) ); } for (;;) { /* event processing */ @@ -512,7 +512,9 @@ if (use_mouse) mouse_inactive(); #endif /* MOUSE */ if ((c & 0x80) == 0) { /* Ascii */ - if (('0' <= c) && (c <= '9')) { + if( ( '0' == c ) && ( prec_num == 0 ) ){ + linbeg(); + } else if( ('0' <= c) && (c <= '9') ) { prec_num = prec_num * 10 + (int)(c - '0'); if (prec_num > PREC_LIMIT) prec_num = PREC_LIMIT; @@ -1367,21 +1369,13 @@ /* Go to specified line */ static void -_goLine(char *l) +_goLine( int prec_num ) { - if (l == NULL || *l == '\0' || Currentbuf->currentLine == NULL) { - displayBuffer(Currentbuf, B_FORCE_REDRAW); - return; - } - if (((*l == '^') || (*l == '$')) && prec_num) - gotoLine(Currentbuf, prec_num); - else if (*l == '^') { - Currentbuf->topLine = Currentbuf->currentLine = Currentbuf->firstLine; - } else if (*l == '$') { + if( prec_num == 0 ){ Currentbuf->topLine = lineSkip(Currentbuf->lastLine, -(LASTLINE+1) / 2); Currentbuf->currentLine = Currentbuf->lastLine; - } else - gotoLine(Currentbuf, atoi(l)); + }else + gotoLine( Currentbuf, prec_num ); arrangeCursor(Currentbuf); displayBuffer(Currentbuf, B_FORCE_REDRAW); } @@ -1389,21 +1383,22 @@ void goLine(void) { - char *l = inputStr("Goto line: ", ""); + _goLine( prec_num ); prec_num = 0; - _goLine(l); } void goLineF(void) { - _goLine("^"); + _goLine( 1 ); + prec_num = 0; } void goLineL(void) { - _goLine("$"); + prec_num = 0; + _goLine( 0 ); } /* Go to the beginning of the line */