/* * CheckCurrentColumn - check state of current column, return true if need to * redisplay page */ bool CheckCurrentColumn( void ) { int clen, vcp; bool dispall = false; clen = VirtualLineLen( CurrentLine->data ); if( clen == 0 ) { clen = 1; } ValidateCurrentColumn(); vcp = VirtualColumnOnCurrentLine( CurrentPos.column ); if( vcp != VirtualColumnDesired ) { if( clen >= VirtualColumnDesired ) { CurrentPos.column = RealColumnOnCurrentLine( VirtualColumnDesired ); } else { if( EditFlags.InsertModeActive || EditFlags.Modeless ) { CurrentPos.column = CurrentLine->len + 1; } else { CurrentPos.column = CurrentLine->len; } } ValidateCurrentColumn(); dispall = !CheckLeftColumn(); /* changed CurrentPos.column - update horiz scrollbar */ PositionHorizontalScrollThumb( current_window_id, LeftTopPos.column ); } VarAddGlobalLong( "C", (long) CurrentPos.column ); return( dispall ); } /* CheckCurrentColumn */
/* * RestoreCurrentFilePos */ void RestoreCurrentFilePos( void ) { vi_rc rc; CurrentFile = oldFile[stackDepth]; CurrentPos = oldCurrentPos[stackDepth]; LeftTopPos = oldLeftTopPos[stackDepth]; if( CurrentFile != NULL ) { rc = CGimmeLinePtr( CurrentPos.line, &CurrentFcb, &CurrentLine ); if( rc == ERR_NO_SUCH_LINE ) { if( CurrentFile->fcbs.tail != NULL ) { CurrentPos.line = CurrentFile->fcbs.tail->end_line; CGimmeLinePtr( CurrentPos.line, &CurrentFcb, &CurrentLine ); } } } else { CurrentFcb = NULL; CurrentLine = NULL; } ValidateCurrentColumn(); VarAddRandC(); stackDepth--; } /* RestoreCurrentFilePos */
/* * SelectEnd - update selected region, moving to end of line */ vi_rc SelectEnd( void ) { if( !EditFlags.Dragging ) { startSelectedRegion( FALSE ); } CurrentPos.column = MAX_INPUT_LINE; ValidateCurrentColumn(); return( GoToColumnOnCurrentLine( CurrentPos.column ) ); } /* SelectEnd */