[Gambas-user] gambas IDE - Editor
Charlie
karl.reinl at ...9...
Tue Aug 17 01:10:08 CEST 2004
Salut Benoît,
started that in gambas-user so I keep staying.
update for ')&'
Thanks for testing:
Here is the full update to manage ')&' had to pass the line to
LineAnalyze for recursiv calling.
Added edtEditor.Refresh for visibility of edtitor colors
Amicalement
Charlie
Update :
PUBLIC SUB edtEditor_Cursor()
IF edtEditor.Line <> $iLastLine THEN
' changings charlie
IF Left(Trim(edtEditor.Lines[$iLastLine]) , 1) <> "'" AND Trim(edtEditor.Lines[$iLastLine]) <> "" THEN
edtEditor.Lines[$iLastLine] = LineAnalyze(edtEditor.Lines[$iLastLine] , $iLastLine)
edtEditor.Refresh
ENDIF
' end changings charlie
$iLastLine = edtEditor.Line
HideCompletion
HideSignature
IF IsModified() THEN Scan = NULL
ELSE IF $bCheckSignature OR frmSignature.Visible THEN
$bCheckSignature = FALSE
CheckSignature
ENDIF
DrawTitle
' TRY PRINT Editor.Analyze(Editor.Lines[Editor.Line]).Join(",")
END
'---------------------------------
PUBLIC SUB edtEditor_LostFocus()
IF Left(Trim(edtEditor.Lines[$iLastLine]) , 1) <> "'" AND Trim(edtEditor.Lines[$iLastLine]) <> "" THEN
edtEditor.Lines[$iLastLine] = LineAnalyze(edtEditor.Lines[$iLastLine] , $iLastLine)
edtEditor.Refresh
ENDIF
END
'---------------------------------
PRIVATE FUNCTION LineAnalyze(sLine AS String,iLine AS Integer) AS String
DIM nI AS Integer
DIM nJ AS Integer
DIM sOut AS String
DIM sPart AS String[]
DIM iPart AS Integer[]
DIM aSPart AS Object
DIM sLeftBlanks AS String
DIM sBlank AS String
IF IsProc(Trim(sLine)) THEN RETURN sLine
IF Upper(Trim(sLine)) = "END" THEN RETURN sLine
' looking for leading Blanks
sLeftBlanks = String$(Len(sLine) - Len(LTrim(sLine)) , " ")
' analysing Line
edtEditor.Analyze(sLine)
sPart = GambasEditor.Symbols
iPart = GambasEditor.Types
sBlank = " "
' set the sBlank
FOR nI = 0 TO sPart.Count - 1
' if legth Operator > 1
IF iPart[nI] = 4 AND Len(sPart[nI]) > 1 THEN
SELECT CASE sPart[nI]
CASE "<>"
CASE "<="
CASE ">="
CASE ELSE
sPart[nI] = Left(sPart[nI] , 1) & " " & Mid(sPart[nI] , 2)
sOut = sOut & " " & sPart[nI]
FOR nJ = ni + 1 TO sPart.Count - 1
sOut = sOut & " " & sPart[nJ]
NEXT
edtEditor.Lines[iLine] = sLeftBlanks & Trim(sOut)
RETURN LineAnalyze(edtEditor.Lines[iLine] , iLine)
END SELECT
ENDIF
SELECT CASE sPart[nI]
CASE "." , "(" , ")" , "[" , "]"
sBlank = ""
CASE ELSE
IF nI > 0 THEN
SELECT CASE sPart[nI - 1]
CASE "." , "(" , "["
sBlank = ""
CASE ELSE
sBlank = " "
END SELECT
ELSE
sBlank = " "
ENDIF
END SELECT
SELECT CASE iPart[nI]
CASE 5 ' Symbol
' here you can look up if this Symbol is written as declaret
sOut = sOut & sBlank & sPart[nI]
CASE 6 ' Number
IF nI > 0 THEN
SELECT CASE iPart[nI - 1]
CASE 5 ' Symbol
sOut = sOut & sBlank & Left(sPart[nI] , 1) & " " & Mid(sPart[nI] , 2)
CASE ELSE
sOut = sOut & sBlank & sPart[nI]
END SELECT
ELSE
sOut = sOut & sBlank & sPart[nI]
ENDIF
CASE ELSE
sOut = sOut & sBlank & sPart[nI]
END SELECT
PRINT sPart[nI] , iPart[nI] , GetColorsName(iPart[nI])
NEXT
sOut = sLeftBlanks & Trim(sOut)
RETURN sOut
END
'---------------------------------
FUNCTION GetColorsName(iType AS Integer) AS String
DIM sOut AS String
SELECT CASE iType
CASE edtEditor.Colors.Background
sOut = "Background"
CASE edtEditor.Colors.Breakpoint
sOut = "Breakpoint"
CASE edtEditor.Colors.Comment
sOut = "Comment"
CASE edtEditor.Colors.Current
sOut = "Current"
CASE edtEditor.Colors.DataType
sOut = "DataType"
CASE edtEditor.Colors.Function
sOut = "Function"
CASE edtEditor.Colors.Keyword
sOut = "Keyword"
CASE edtEditor.Colors.Normal
sOut = "Normal"
CASE edtEditor.Colors.Number
sOut = "Number"
CASE edtEditor.Colors.Operator
sOut = "Operator"
CASE edtEditor.Colors.String
sOut = "String"
CASE edtEditor.Colors.Symbol
sOut = "Symbol"
CASE ELSE
sOut = "??"
END SELECT
RETURN sOut
END
'---------------------------------
More information about the User
mailing list