133 lines
3.1 KiB
Text
133 lines
3.1 KiB
Text
INTEGER PROC FNBlockChangeColumnAlignLeftB( INTEGER columnTotalI, INTEGER spaceTotalI, INTEGER buffer1I )
|
|
INTEGER B = FALSE
|
|
INTEGER downB = TRUE
|
|
INTEGER minI = 1
|
|
INTEGER I = 0
|
|
INTEGER J = 0
|
|
INTEGER K = 0
|
|
INTEGER L = 0
|
|
INTEGER buffer2I = 0
|
|
STRING s[255] = ""
|
|
INTEGER wordRightB = FALSE
|
|
STRING s1[255] = Query( WordSet )
|
|
IF ( NOT ( IsBlockInCurrFile() ) ) Warn( "Please mark a block" ) B = FALSE RETURN( B ) ENDIF // return from the current procedure if no block is marked
|
|
Set( BREAK, ON )
|
|
PushPosition()
|
|
PushBlock()
|
|
Set( WordSet, ChrSet( "a-zA-Z0-9_,." ) )
|
|
PushPosition()
|
|
buffer2I = CreateTempBuffer()
|
|
PopPosition()
|
|
PushPosition()
|
|
PushBlock()
|
|
DO 100 TIMES
|
|
AddLine( "", buffer2I )
|
|
ENDDO
|
|
PopBlock()
|
|
PopPosition()
|
|
GotoBlockBegin()
|
|
I = minI - 1
|
|
WHILE ( ( IsCursorInBlock() ) AND ( downB ) )
|
|
IF NOT LFind( "^$", "cgx" )
|
|
BegLine()
|
|
REPEAT
|
|
s = GetWord()
|
|
IF NOT ( s == "" )
|
|
s = Trim( s )
|
|
I = I + 1
|
|
IF ( I > columnTotalI )
|
|
I = minI
|
|
ENDIF
|
|
J = Length( s )
|
|
PushPosition()
|
|
PushBlock()
|
|
GotoBufferId( buffer2I )
|
|
GotoLine( I )
|
|
//
|
|
IF ( CurrLineLen() == 0 )
|
|
BegLine()
|
|
InsertText( Format( Str( J ), " " ), _INSERT_ )
|
|
ELSE
|
|
K = Val( Trim( GetText( 1, MAXSTRINGLEN ) ) )
|
|
IF ( J > K )
|
|
BegLine()
|
|
DelToEol()
|
|
BegLine()
|
|
InsertText( Str( J ), _INSERT_ )
|
|
ENDIF
|
|
ENDIF
|
|
PopBlock()
|
|
PopPosition()
|
|
wordRightB = WordRight()
|
|
ENDIF
|
|
UNTIL ( s == "" ) OR ( NOT wordRightB )
|
|
ENDIF
|
|
downB = Down()
|
|
ENDWHILE
|
|
GotoBlockBegin()
|
|
I = minI - 1
|
|
L = 1
|
|
K = 1
|
|
WHILE ( ( IsCursorInBlock() ) AND ( downB ) )
|
|
IF NOT LFind( "^$", "cgx" )
|
|
BegLine()
|
|
REPEAT
|
|
B = FALSE
|
|
s = GetWord()
|
|
IF NOT ( s == "" )
|
|
s = Trim( s )
|
|
I = I + 1
|
|
IF ( I > columnTotalI )
|
|
I = minI
|
|
K = 1
|
|
L = L + 1
|
|
ENDIF
|
|
//
|
|
PushPosition()
|
|
PushBlock()
|
|
GotoBufferId( buffer2I )
|
|
GotoLine( I )
|
|
J = Val( Trim( GetText( 1, MAXSTRINGLEN ) ) )
|
|
PopPosition()
|
|
PopBlock()
|
|
PushPosition()
|
|
PushBlock()
|
|
GotoBufferId( buffer1I )
|
|
GotoLine( L )
|
|
GotoColumn( K )
|
|
InsertText( s, _INSERT_ )
|
|
K = K + J + spaceTotalI
|
|
PopBlock()
|
|
PopPosition()
|
|
wordRightB = WordRight()
|
|
ENDIF
|
|
UNTIL ( s == "" ) OR ( NOT wordRightB )
|
|
ENDIF
|
|
AddLine( "", buffer1I )
|
|
downB = Down()
|
|
ENDWHILE
|
|
OneWindow()
|
|
VWindow()
|
|
GotoWindow( 1 )
|
|
GotoBufferId( buffer2I )
|
|
GotoWindow( 2 )
|
|
GotoBufferId( buffer1I )
|
|
B = TRUE
|
|
Set( WordSet, s1 )
|
|
PopPosition()
|
|
PopBlock()
|
|
RETURN( B )
|
|
END
|
|
//
|
|
PROC Main()
|
|
STRING s1[255] = "12" // change this
|
|
STRING s2[255] = "2" // change this
|
|
INTEGER bufferI = 0
|
|
PushPosition()
|
|
bufferI = CreateTempBuffer()
|
|
PopPosition()
|
|
IF ( NOT ( Ask( "block: change: column: align: left: columnTotalI = ", s1, _EDIT_HISTORY_ ) ) AND ( Length( s1 ) > 0 ) ) RETURN() ENDIF
|
|
IF ( NOT ( Ask( "block: change: column: align: left: spaceTotalI = ", s2, _EDIT_HISTORY_ ) ) AND ( Length( s2 ) > 0 ) ) RETURN() ENDIF
|
|
Message( FNBlockChangeColumnAlignLeftB( Val( s1 ), Val( s2 ), bufferI ) ) // gives e.g. TRUE
|
|
GotoBufferId( bufferI )
|
|
END
|