IDE Script Editor question...
Peter M. Brigham
pmbrig at gmail.com
Tue Sep 27 09:31:37 EDT 2016
> On Sep 23, 2016, at 1:05 PM, Mark Talluto <mark at canelasoftware.com> wrote:
>
>
>> On Sep 22, 2016, at 2:08 PM, Paul Dupuis <paul at researchware.com> wrote:
>>
>> Ah ha. The insertion point must be INSIDE a handler and only re-indents
>> that handler when you press TAB
>>
>> If the insertion point is between handlers or outside of any handler,
>> nothing happens. Ok, tab is useful, but something that reformatted ALL
>> handlers in a script would be even better.
>>
>> Not perfect, but a step better than nothing. Thanks for the tip!
>
> Here is the code we use here to indent a whole script.
>
> command cdt_FastIndent
> local tHandlerList, tOffset, tProgressSoFar
>
> if not(exists(fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1")) then exit cdt_FastIndent
>
> lock screen
> put the text of fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1" into tHandlerList
> filter tHandlerList with "end *"
> filter tHandlerList without "* switch" //IGNORE NON-HANDLER KEYWORDS
> filter tHandlerList without "* repeat" //IGNORE NON-HANDLER KEYWORDS
> filter tHandlerList without "* try" //IGNORE NON-HANDLER KEYWORDS
> filter tHandlerList without "* if" //IGNORE NON-HANDLER KEYWORDS
An alternative way of accomplishing the above is
put the revAvailableHandlers of <objRef> into tHandlerList
and then adjust the line below:
> put 0 into tProgressSoFar
>
> set the wholeMatches to true
> repeat for each line thisLine in tHandlerList
> put lineOffset(thisLine, fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1", tProgressSoFar) into tOffset
put lineOffset(word 2 of thisLine, fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1", tProgressSoFar) into tOffset
> select before line tOffset+tProgressSoFar of \
> fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1"
> dispatch "tabKey" to fld "script" of grp "editor" of cd "main" of stack "revNewScriptEditor 1"
> add tOffset to tProgressSoFar
> end repeat
> unlock screen
> end cdt_FastIndent
— Peter
Peter M. Brigham
pmbrig at gmail.com
More information about the use-livecode
mailing list