From 5778275cc02a20c891b3a1d887ddedb716efc27b Mon Sep 17 00:00:00 2001 From: Fellippe Heitor Date: Mon, 15 Feb 2021 11:28:32 -0300 Subject: [PATCH] Improves Sub line count (SUBs dialog). --- source/ide/ide_methods.bas | 84 +++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/source/ide/ide_methods.bas b/source/ide/ide_methods.bas index e5ac4b4ca..d2c78f4b0 100644 --- a/source/ide/ide_methods.bas +++ b/source/ide/ide_methods.bas @@ -8666,13 +8666,22 @@ FUNCTION idesubs$ lSorted$ = 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 ModuleSize = 0 'in lines SortedSubsFlag = idesortsubs SubClosed = 0 + FOR y = 1 TO iden a$ = idegetline(y) IF SubClosed = 0 THEN ModuleSize = ModuleSize + 1 @@ -8715,9 +8724,8 @@ FUNCTION idesubs$ ELSE n$ = a$ args$ = "()" - - cleanSubName n$ END IF + cleanSubName n$ '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: @@ -8733,23 +8741,11 @@ FUNCTION idesubs$ n$ = "*" + n$ FoundExternalSUBFUNC = -1 ELSE + IF SubClosed = 0 THEN ModuleSize = 0: GOSUB AddLineCount SubClosed = 0 ModuleSize = 0 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 n$ = n$ + SPACE$(maxModuleNameLen - LEN(n$)) ELSE @@ -8762,19 +8758,25 @@ FUNCTION idesubs$ END IF l$ = l$ + sep + CHR$(195) + CHR$(196) + n$ + " " + CHR$(16) + CHR$(2) + _ 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 - ListItemLength = LEN(n$ + " " + sf$ + args$) - 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 - CaseBkpSubsList(TotalSUBs) = n$ + " " + CHR$(1) + CHR$(16) + CHR$(2) + sf$ + CHR$(16) + CHR$(16) + args$ - SortedSubsList(TotalSUBs) = UCASE$(CaseBkpSubsList(TotalSUBs)) + IF NOT InsideDECLARE THEN LastOpenSUB = TotalSUBs + listItem$ = n$ + " " + CHR$(1) + CHR$(16) + CHR$(2) + sf$ + CHR$(16) + CHR$(16) + args$ + ListItemLength = LEN(listItem$) + IF TotalSUBs > UBOUND(SortedSubsList) THEN + REDIM _PRESERVE SortedSubsList(1 TO TotalSUBs + 99) AS STRING * 998 + 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$(SortedSubsList(TotalSUBs), 992, 6) = MKL$(y) + MKI$(ListItemLength) ELSE 'no sf @@ -8794,24 +8796,20 @@ FUNCTION idesubs$ DIM comment AS _BYTE, quote AS _BYTE FindQuoteComment nca$, sf, comment, quote IF comment OR quote THEN cursor = sf: GOTO LookForENDSUB - TotalLines(TotalSUBs) = ModuleSize - SubClosed = -1 + GOSUB AddLineCount END IF END IF NEXT - TotalLines(TotalSUBs) = ModuleSize - 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 - + IF SubClosed = 0 THEN GOSUB AddLineCount MID$(l$, _INSTRREV(l$, 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 sort SortedSubsList() @@ -9094,6 +9092,16 @@ FUNCTION idesubs$ END IF 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