/* * FindTag - locate a given tag */ vi_rc FindTag( char *tag ) { vi_rc rc; RegExpAttrSave( -1, &META[3] ); rc = ColorFind( tag, 0 ); RegExpAttrRestore(); return( rc ); } /* FindTag */
/* * TagHunt - hunt for a specified tag */ vi_rc TagHunt( char *str ) { char buff[MAX_STR], file[FILENAME_MAX]; int num; vi_rc rc; rc = LocateTag( str, file, buff ); if( rc == ERR_NO_ERR ) { PushFileStack(); rc = EditFile( file, FALSE ); if( rc == ERR_NO_ERR ) { if( buff[0] != '/' ) { num = atoi( buff ); rc = GoToLineNoRelCurs( num ); } else { rc = FindTag( buff ); if( rc < ERR_NO_ERR ) { strcpy( buff, str ); ColorFind( buff, 0 ); rc = ERR_TAG_NOT_FOUND; } } } else { PopFileStack(); } } if( rc == ERR_TAG_NOT_FOUND ) { Error( GetErrorMsg( rc ), str ); rc = DO_NOT_CLEAR_MESSAGE_WINDOW; } return( rc ); } /* TagHunt */
static vi_rc getFile( char *fname ) { char dir[MAX_STR]; char *dirptr, ch; vi_rc rc; NextWord1( fname, dir ); rc = EditFile( dir, FALSE ); if( rc != ERR_NO_ERR ) { return( rc ); } dirptr = dir; if( isFgrep ) { if( caseIgn ) { ch = '~'; } else { ch = '@'; } dirptr += 2; strcpy( dirptr, origString ); MakeExpressionNonRegular( dirptr ); dirptr--; *dirptr = ch; if( IsMagicCharRegular( ch ) ) { dirptr--; *dirptr = '\\'; } } else { strcpy( dir, origString ); } AddString2( &(EditVars.FindHist.data[EditVars.FindHist.curr % EditVars.FindHist.max] ), origString ); EditVars.FindHist.curr += 1; ColorFind( dirptr, FINDFL_NOERROR ); SetLastFind( origString ); return( rc ); }