--- main.c.org Thu Jun 1 17:12:44 2000 +++ main.c Thu Jun 1 17:16:05 2000 @@ -44,7 +44,7 @@ static int n_event_queue; int (*searchRoutine) (Buffer *, char *); -static void _goLine(char *); +static void _goLine( int ); JMP_BUF IntReturn; @@ -576,7 +576,7 @@ displayBuffer(Currentbuf, B_NORMAL); onA(); if (line_str) { - _goLine(line_str); + _goLine( atoi( line_str ) ); } for (;;) { /* event processing */ @@ -630,7 +630,9 @@ 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; @@ -1539,46 +1541,36 @@ /* 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; - } - Currentbuf->pos = 0; - if (((*l == '^') || (*l == '$')) && prec_num) { - gotoRealLine(Currentbuf, prec_num); - } else if (*l == '^') { - Currentbuf->topLine = Currentbuf->currentLine = Currentbuf->firstLine; - } - else if (*l == '$') { - Currentbuf->topLine = lineSkip(Currentbuf, Currentbuf->lastLine, -(LASTLINE + 1) / 2, TRUE); + if( prec_num == 0 ){ + Currentbuf->topLine = lineSkip(Currentbuf, Currentbuf->lastLine, -(LASTLINE+1) / 2, TRUE); Currentbuf->currentLine = Currentbuf->lastLine; - } - else - gotoRealLine(Currentbuf, atoi(l)); - arrangeLine(Currentbuf); + }else + gotoLine( Currentbuf, prec_num ); + arrangeCursor(Currentbuf); displayBuffer(Currentbuf, B_FORCE_REDRAW); } 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("$"); + _goLine( 0 ); + prec_num = 0; } /* Go to the beginning of the line */