1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-29 10:30:36 +00:00

Improves Sub line count (SUBs dialog).

This commit is contained in:
Fellippe Heitor 2021-02-15 11:28:32 -03:00
parent 24aafb4718
commit 5778275cc0

View file

@ -8666,13 +8666,22 @@ FUNCTION idesubs$
lSorted$ = l$ lSorted$ = l$
lSortedSized$ = l$ lSortedSized$ = l$
REDIM TotalLines(0) AS LONG 'build headers (normal, sorted, normal with line count, sorted with line count)
l$ = l$ + " Type Arguments"
lSorted$ = l$
lSized$ = lSized$ + " Line count Type Arguments" + sep
lSortedSized$ = lSortedSized$ + " Line count Type Arguments"
REDIM SortedSubsList(1 TO 100) AS STRING * 998
REDIM CaseBkpSubsList(1 TO 100) AS STRING * 998
REDIM TotalLines(0 TO 100) AS LONG
TotalSUBs = 0 TotalSUBs = 0
ModuleSize = 0 'in lines ModuleSize = 0 'in lines
SortedSubsFlag = idesortsubs SortedSubsFlag = idesortsubs
SubClosed = 0 SubClosed = 0
FOR y = 1 TO iden FOR y = 1 TO iden
a$ = idegetline(y) a$ = idegetline(y)
IF SubClosed = 0 THEN ModuleSize = ModuleSize + 1 IF SubClosed = 0 THEN ModuleSize = ModuleSize + 1
@ -8715,9 +8724,8 @@ FUNCTION idesubs$
ELSE ELSE
n$ = a$ n$ = a$
args$ = "()" args$ = "()"
cleanSubName n$
END IF END IF
cleanSubName n$
'If the user currently has the cursor over a SUB/FUNC name, let's highlight it 'If the user currently has the cursor over a SUB/FUNC name, let's highlight it
'instead of the currently in edition, for a quick link functionality: 'instead of the currently in edition, for a quick link functionality:
@ -8733,23 +8741,11 @@ FUNCTION idesubs$
n$ = "*" + n$ n$ = "*" + n$
FoundExternalSUBFUNC = -1 FoundExternalSUBFUNC = -1
ELSE ELSE
IF SubClosed = 0 THEN ModuleSize = 0: GOSUB AddLineCount
SubClosed = 0 SubClosed = 0
ModuleSize = 0 ModuleSize = 0
END IF END IF
IF TotalSUBs = 0 THEN
l$ = l$ + " Type Arguments"
lSorted$ = l$
lSized$ = lSized$ + " Line count Type Arguments" + sep
lSortedSized$ = lSortedSized$ + " Line count Type Arguments"
ELSE
num$ = LTRIM$(STR$(TotalLines(TotalSUBs)))
IF pInsideDECLARE THEN num$ = "external"
lSized$ = lSized$ + CHR$(195) + CHR$(196) + pn$ + " " + _
CHR$(16) + CHR$(2) + SPACE$(9 - LEN(num$)) + num$ + " " _
+ psf$ + CHR$(16) + CHR$(16) + pargs$ + sep
END IF
IF LEN(n$) <= maxModuleNameLen THEN IF LEN(n$) <= maxModuleNameLen THEN
n$ = n$ + SPACE$(maxModuleNameLen - LEN(n$)) n$ = n$ + SPACE$(maxModuleNameLen - LEN(n$))
ELSE ELSE
@ -8762,19 +8758,25 @@ FUNCTION idesubs$
END IF END IF
l$ = l$ + sep + CHR$(195) + CHR$(196) + n$ + " " + CHR$(16) + CHR$(2) + _ l$ = l$ + sep + CHR$(195) + CHR$(196) + n$ + " " + CHR$(16) + CHR$(2) + _
sf$ + CHR$(16) + CHR$(16) + args$ sf$ + CHR$(16) + CHR$(16) + args$
psf$ = sf$
pn$ = n$
pargs$ = args$
pInsideDECLARE = InsideDECLARE
'Populate SortedSubsList() num$ = CHR$(254) 'placeholder - will be replaced when End Sub/Function is found
IF InsideDECLARE THEN num$ = "external"
lSized$ = lSized$ + CHR$(195) + CHR$(196) + n$ + " " + _
CHR$(16) + CHR$(2) + SPACE$(9 - LEN(num$)) + num$ + " " _
+ sf$ + CHR$(16) + CHR$(16) + args$ + sep
'Populate SortedSubsList() and helper arrays
TotalSUBs = TotalSUBs + 1 TotalSUBs = TotalSUBs + 1
ListItemLength = LEN(n$ + " " + sf$ + args$) IF NOT InsideDECLARE THEN LastOpenSUB = TotalSUBs
REDIM _PRESERVE SortedSubsList(1 TO TotalSUBs) AS STRING * 998 listItem$ = n$ + " " + CHR$(1) + CHR$(16) + CHR$(2) + sf$ + CHR$(16) + CHR$(16) + args$
REDIM _PRESERVE CaseBkpSubsList(1 TO TotalSUBs) AS STRING * 998 ListItemLength = LEN(listItem$)
REDIM _PRESERVE TotalLines(0 TO TotalSUBs) AS LONG IF TotalSUBs > UBOUND(SortedSubsList) THEN
CaseBkpSubsList(TotalSUBs) = n$ + " " + CHR$(1) + CHR$(16) + CHR$(2) + sf$ + CHR$(16) + CHR$(16) + args$ REDIM _PRESERVE SortedSubsList(1 TO TotalSUBs + 99) AS STRING * 998
SortedSubsList(TotalSUBs) = UCASE$(CaseBkpSubsList(TotalSUBs)) REDIM _PRESERVE CaseBkpSubsList(1 TO TotalSUBs + 99) AS STRING * 998
REDIM _PRESERVE TotalLines(0 TO TotalSUBs + 99) AS LONG
END IF
SortedSubsList(TotalSUBs) = UCASE$(listItem$)
CaseBkpSubsList(TotalSUBs) = listItem$
MID$(CaseBkpSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength) MID$(CaseBkpSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength)
MID$(SortedSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength) MID$(SortedSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength)
ELSE 'no sf ELSE 'no sf
@ -8794,24 +8796,20 @@ FUNCTION idesubs$
DIM comment AS _BYTE, quote AS _BYTE DIM comment AS _BYTE, quote AS _BYTE
FindQuoteComment nca$, sf, comment, quote FindQuoteComment nca$, sf, comment, quote
IF comment OR quote THEN cursor = sf: GOTO LookForENDSUB IF comment OR quote THEN cursor = sf: GOTO LookForENDSUB
TotalLines(TotalSUBs) = ModuleSize GOSUB AddLineCount
SubClosed = -1
END IF END IF
END IF END IF
NEXT NEXT
TotalLines(TotalSUBs) = ModuleSize IF SubClosed = 0 THEN GOSUB AddLineCount
IF TotalSUBs > 0 THEN
num$ = LTRIM$(STR$(TotalLines(TotalSUBs)))
IF pInsideDECLARE THEN num$ = "external"
lSized$ = lSized$ + CHR$(195) + CHR$(196) + pn$ + " " + _
SPACE$(9 - LEN(num$)) + CHR$(16) + CHR$(2) + num$ + " " + _
psf$ + CHR$(16) + CHR$(16) + pargs$
END IF
MID$(l$, _INSTRREV(l$, CHR$(195)), 1) = CHR$(192) MID$(l$, _INSTRREV(l$, CHR$(195)), 1) = CHR$(192)
MID$(lSized$, _INSTRREV(lSized$, CHR$(195)), 1) = CHR$(192) MID$(lSized$, _INSTRREV(lSized$, CHR$(195)), 1) = CHR$(192)
'fix arrays to remove empty items
REDIM _PRESERVE SortedSubsList(1 TO TotalSUBs) AS STRING * 998
REDIM _PRESERVE CaseBkpSubsList(1 TO TotalSUBs) AS STRING * 998
REDIM _PRESERVE TotalLines(0 TO TotalSUBs) AS LONG
IF TotalSUBs > 1 THEN IF TotalSUBs > 1 THEN
sort SortedSubsList() sort SortedSubsList()
@ -9094,6 +9092,16 @@ FUNCTION idesubs$
END IF END IF
RETURN RETURN
AddLineCount:
ModuleSize = ModuleSize + 1
TotalLines(LastOpenSUB) = ModuleSize
i = INSTR(lSized$, CHR$(254))
IF i THEN 'check if it's there, but it *has* to be there.
num$ = LTRIM$(STR$(ModuleSize))
lSized$ = LEFT$(lSized$, i - LEN(num$)) + num$ + MID$(lSized$, i + 1)
END IF
SubClosed = -1
RETURN
END FUNCTION END FUNCTION