[Gambas-user] 2. Fwd: while working on PrettyPrinter, changes for the IDE Editor

Charlie Reinl Karl.Reinl at ...9...
Mon Aug 16 00:26:23 CEST 2004


Sorry guys,

seams that I'm to hurry to day 

But has to be tested !!!!

Amicalement

----------  Forwarded Message  ----------

Subject: Fwd: while working on PrettyPrinter, changes for the IDE Editor
Date: Sunday 15 August 2004 21:25
From: Charlie Reinl <Karl.Reinl at ...9...>
To: "gambas-user" <gambas-user at lists.sourceforge.net>

----------  Forwarded Message  ----------

Subject: while working on PrettyPrinter, changes for the IDE Editor
Date: Sunday 15 August 2004 20:47
From: Charlie Reinl <Karl.Reinl at ...9...>
To: "gambas-user" <gambas-user at lists.sourceforge.net>

Salut,

for understanding the GambasEditor for using it for PrettyPrinter, I play
around with the IDE Editor and made the following changes in
PUBLIC SUB edtEditor_Cursor()

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])
        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

For what LineAnalyze is for:

Till now it strippes useless Blanks and if you typed a i=i+1 you'v got no
error more , because LineAnalyze  change it to i = i + 1

It dose only work on line and windows changes, It dosn't work if you press a
Button (Toolbar) without changing the line.

To you to play now.

Amicalement
Charlie

These procs are needed to make changes work ( not GetColorsName if you don't
uncomment the PRINT line in LineAnalyze)

PUBLIC SUB edtEditor_LostFocus()
    IF Left(Trim(edtEditor.Lines[$iLastLine]),1) <> "'" AND
Trim(edtEditor.Lines[$iLastLine])  <> ""THEN
        edtEditor.Lines[$iLastLine] =
 LineAnalyze(edtEditor.Lines[$iLastLine]) ENDIF
END
'----------------------------------------------------------------------------
PRIVATE FUNCTION LineAnalyze(sLine AS String) AS String
DIM nI 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
    FOR nI = 1 TO Len (sLine )
        IF Mid (sLine , ni , 1 )= " " THEN
            sLeftBlanks = sLeftBlanks & " "
        ELSE
            BREAK
        ENDIF
    NEXT
    edtEditor .Analyze (sLine )
    sPart = GambasEditor .Symbols
    iPart = GambasEditor .Types
    sBlank = " "
    FOR nI = 0 TO sPart .Count - 1
        SELECT CASE sPart [nI ]
            CASE "." , "(" , ")" , "[" , "]"
                sBlank = ""
            CASE ELSE
                sBlank = " "
        END SELECT
        IF nI > 0 THEN
            SELECT CASE sPart [nI - 1 ]
                CASE "." , "(" , ")" , "[" , "]"
                    sBlank = ""
                CASE ELSE
                    sBlank = " "
            END SELECT
        ELSE
            sBlank = " "
        ENDIF
        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
' this is only to know the Values
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