GLL Example: Jump to subroutine

Jump between procedure headers quickly.

 

Sub GotoProcHeader(Optional Direction As Int = CurrentProcHeader)

Global Enum CurrentProcHeader, PreviousProcHeader, NextProcHeader, FirstProcHeader, LastProcHeader

Local Int i

Switch Direction

Case CurrentProcHeader

Gfa_Line = Gfa_ProcLine

Case PreviousProcHeader

Gfa_Up

If Gfa_Proc <> ""

Gfa_Line = Gfa_ProcLine

Else

Gfa_Down

Gfa_StatusText = "Reached first procedure."

EndIf

Case NextProcHeader

Local String curProc = Gfa_Proc

i = Gfa_Line + 1

While i < Gfa_LineCnt

Gfa_Line = i

If Gfa_Proc <> curProc

Gfa_Line = Gfa_ProcLine

Exit Do

EndIf

i ++

Wend

If i = Gfa_LineCnt Then

Gfa_Line = Gfa_ProcLine

Gfa_StatusText = "Reached last procedure."

EndIf

Case FirstProcHeader

Gfa_Line = 1

GotoProcHeader (NextProcHeader)

Case LastProcHeader

Gfa_Line = Gfa_LineCnt

Gfa_Line = Gfa_ProcLine

EndSwitch

End Sub

{Created by Sjouke Hamstra; Last updated: 08/10/2014 by James Gaite}