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

na2492 at ...9... na2492 at ...9...
Mon Aug 16 21:46:01 CEST 2004


>On Monday 16 August 2004 22:30, Charlie wrote:
>> Benoit Minisini schrieb:
>> >On Monday 16 August 2004 00:26, Charlie Reinl wrote:
>> >>Sorry guys,
>> >>
>> >>seams that I'm to hurry to day
>> >>
>> >>But has to be tested !!!!
>> >>
>> >>Amicalement
>>
>> Salut Benoît,
>>
>> >Hi, Charlie.
>> >
>> >See my comments below.
>> >
>> >
>> >I could add an event in the GambasEditor that will be raised just after
a
>> > line was colorized, so that you can pretty print it.
>>
>> This is NOT PrettyPrinting is the sence how I understand PrettyPrinting
>> and the work the PrettyPrinter should do.
>> Include PrettyPrinting automaticaly in an editor reacting line by line,
>> I know 2 reasons to not to do it:
>>     1. PrettyPrinting is something not all coders like
>>     2. and main intervention, to PrettyPrint needs closed structures, to

>> to well the job.
>
>Let's call it "Line pretty printing" :-)

OK, it's just to know, for what we talking for.

>
>>
>> But that event would be nice for all those line analysing jobs, like
>> correcting future Errors like in i=i+1 or for variables are written in
>> the same way as in his declaration line ( ni will become nI while Dim nI

>> as ...) and so on.
>> But that event should be fired
>>     when leaving the line or editor lose focus (my be thats what you
>> mean, talking colorized)  but also when I still stay on that line and
>> push a Button on the Toolbar or press F5/F8 ( and all the other cases
>> where editing is finished).
>>
>
>I think an event raised just before colorize the line will be sufficient, as

>colorize is a sort of "line pretty printing", and so the moments it is run

>are good moments for "line pretty printing".

If it is we can call line pretty printing when this event is fired.

>
>> >This is faster:
>> >
>> >sLeftBlank = String$(len(sLine) - len(ltrim(sLine)), " ")
>>
>> Thank, yes it is, if it is not faster, but it is shorter, so it is better.

>
>LTrim() does not create any intermediate strings, so it IS faster: do the

>test! :-)
>
>>
>> >>            CASE 6 ' Number
>> >>                IF nI > 0 THEN
>> >>                    SELECT CASE iPart [nI - 1 ]
>> >
>> >Why the following case ?
>>
>> May be I haven't all understood, I thougth may be I will decover other
>> cases, so I started a 'Select Case'.
>> And even for an other reason, at my Clipper time we used to use 'Select
>> Case', because while debugging, after the Select Case,
>> It was jumping direct to the valid Case.
>
>I didn't understand what you said :-(
I often use 'Select Case/End Select' because I coded long time in 'Clipper'
a
dBase Database Language. And 'Select Case/End Select' at debugging , jumped

directly after Select case <??>  to the right Case <??> or the Case Else and

ditn't pass alle the cases between.
This is one reason.

The seconde:
And when I started this  'Select Case/End Select' I dit it while I ingnored,
how
much Cases are, I'm just start with all that.
>
>>
>> >>                        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 ])
>> >
>> >If the previous code was pretty printed, then the result is strange:
>> > spaces before ']', ')', '[', '.'...
>>
>> My name is not 'Porte(s)', so it is a Bug not a Feature.
>> I looked to the closing Symbols outside, where I looked to the starting
>> Symbols, and I looked for to muche
>>
>> Here are the update:
>>     Thanks for testing:
>>
>> Amicalement
>> Charlie
>
>If you look carefully at the following code, provided it was "line pretty

>printed", you will see stranges spaces yet...
>

Do you mean the spaces at the ',' .  I let them for better reading and marking.

True, I'm not 'Porte(s)'

At the sOut = sOut & sBlank & Left(sPart[nI] , 1 )& " " & Mid(sPart[nI] , 2)
line,
its the  )& if you give a space between, it becomes right (to do) ')&' =Operator,



>>
>> 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
>> '-------------
>> 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
>>     sLeftBlanks = String$(Len(sLine) - Len(LTrim(sLine)) , " ")
>>     ' analiesing Line
>>     edtEditor.Analyze(sLine)
>>     sPart = GambasEditor.Symbols
>>     iPart = GambasEditor.Types
>>     sBlank = " "
>>     ' set the sBlank
>>     FOR nI = 0 TO sPart.Count - 1
>>         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
>
>Regards,
>
>--
>Benoit Minisini
>mailto:gambas at ...1...
Amicalement
Charlie
* Gesendet mit / Sent by: FEN-Webmail * http://www.fen-net.de *




More information about the User mailing list