1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-01 13:50:36 +00:00

Merges Latest $DEBUG tweaks from var-export

Latest $DEBUG tweaks.
This commit is contained in:
Fellippe Heitor 2021-08-20 12:02:32 -03:00 committed by GitHub
commit c6707f044a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 202 additions and 110 deletions

View file

@ -26203,15 +26203,16 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
int32 func__screenhide(){return -screen_hide;}
void sub__consoletitle(qbs* s){
if (new_error) return;
static qbs *sz=NULL; if (!sz) sz=qbs_new(0,0);
static qbs *cz=NULL; if (!cz){cz=qbs_new(1,0); cz->chr[0]=0;}
qbs_set(sz,qbs_add(s,cz));
if (console){ if (console_active){
#ifdef QB64_WINDOWS
SetConsoleTitle((char*)sz->chr);
#endif
}}
#ifdef QB64_WINDOWS
char *title;
title = (char *)malloc(s->len + 1);
title[s->len] = '\0'; //add NULL terminator
memcpy(title, s->chr, s->len);
if (console){ if (console_active){
SetConsoleTitle(title);
Sleep(40);
}}
#endif
}

View file

@ -941,6 +941,14 @@ inline int16 func_abs(int16 d){return abs(d);}
inline int32 func_abs(int32 d){return abs(d);}
inline int64 func_abs(int64 d){return llabs(d);}
ptrszint check_lbound(ptrszint *array) {
return func_lbound((ptrszint*)(*array),1,1);
}
ptrszint check_ubound(ptrszint *array) {
return func_ubound((ptrszint*)(*array),1,1);
}
inline ptrszint array_check(uptrszint index,uptrszint limit){
//nb. forces signed index into an unsigned variable for quicker comparison
if (index<limit) return index;

View file

@ -6,10 +6,12 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
STATIC AS _BYTE vw_pauseMode, vw_stepOver, vw_bypass, vw_setNextLine, vw_hwndsent
STATIC AS _OFFSET vw_idehwnd
STATIC vw_buffer$
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_sequence, vw_cmdsize
DIM AS _OFFSET vw_address
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_cmdsize
DIM AS _OFFSET vw_address, vw_lbound, vw_ubound
DIM AS _MEM vw_m, vw_m2
DIM vw_start!, vw_temp$, vw_cmd$, vw_value$, vw_k&, vw_buf$, vw_scope$
DIM AS _BYTE vw_isarray
DIM vw_start!, vw_temp$, vw_cmd$, vw_value$, vw_k&, vw_buf$, vw_scope$, vw_varType$
DIM vw_dummy%&
DECLARE LIBRARY
SUB vwatch_stoptimers ALIAS stop_timers
@ -17,6 +19,8 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
SUB unlockvWatchHandle
SUB set_qbs_size (target AS _OFFSET, BYVAL length&)
FUNCTION stop_program_state&
FUNCTION check_lbound%&(array AS _OFFSET)
FUNCTION check_ubound%&(array AS _OFFSET)
END DECLARE
$IF WIN THEN
@ -97,10 +101,12 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
LOOP
END IF
IF vw_hwndsent = 0 AND _WINDOWHANDLE > 0 THEN
vw_hwndsent = -1
vw_cmd$ = "hwnd:" + _MK$(_OFFSET, _WINDOWHANDLE)
GOSUB SendCommand
IF vw_hwndsent = 0 THEN
IF _WINDOWHANDLE > 0 THEN
vw_hwndsent = -1
vw_cmd$ = "hwnd:" + _MK$(_OFFSET, _WINDOWHANDLE)
GOSUB SendCommand
END IF
END IF
IF vwatch_linenumber = 0 THEN
@ -248,26 +254,22 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
CASE "call stack"
'send call stack history
GOSUB SendCallStack
CASE "get address"
CASE "get global var", "get local var"
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
vw_arrayIndex = CVL(MID$(vw_value$, 5, 4))
vw_sequence = CVI(MID$(vw_value$, 9, 2))
vw_varSize = CVL(MID$(vw_value$, 11, 4))
vw_address = _CV(_OFFSET, MID$(vw_value$, 15, LEN(vw_address)))
vw_buf$ = SPACE$(vw_varSize)
vw_m = _MEM(vw_address, vw_varSize)
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + MKI$(vw_sequence) + _MK$(_OFFSET, vw_address) + vw_buf$
GOSUB SendCommand
CASE "get global address", "get local address"
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
vw_localIndex = CVL(MID$(vw_value$, 5, 4))
vw_arrayIndex = CVL(MID$(vw_value$, 9, 4))
vw_sequence = CVI(MID$(vw_value$, 13, 2))
vw_varSize = CVL(MID$(vw_value$, 15, 4))
vw_scope$ = MID$(vw_value$, 19)
IF vw_cmd$ = "get global address" THEN
vw_isarray = _CV(_BYTE, MID$(vw_value$, 5, 1))
vw_localIndex = CVL(MID$(vw_value$, 6, 4))
vw_arrayIndex = CVL(MID$(vw_value$, 10, 4))
vw_varSize = CVL(MID$(vw_value$, 14, 4))
vw_i = CVI(MID$(vw_value$, 18, 2))
IF vw_i THEN
vw_scope$ = MID$(vw_value$, 20, vw_i)
vw_i = CVI(MID$(vw_value$, 20 + vw_i, 2))
vw_varType$ = RIGHT$(vw_value$, vw_i)
ELSE
vw_i = CVI(MID$(vw_value$, 20, 2))
vw_varType$ = RIGHT$(vw_value$, vw_i)
END IF
IF vw_cmd$ = "get global var" THEN
vw_address = _OFFSET(globalVariables) + LEN(vw_address) * vw_localIndex
ELSE
IF vw_scope$ = LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1) THEN
@ -279,12 +281,85 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'first resolve pass
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'second resolve pass
IF vw_isarray THEN
vw_lbound = check_lbound%&(vw_address)
vw_ubound = check_ubound%&(vw_address)
IF vw_arrayIndex < vw_lbound OR vw_arrayIndex > vw_ubound THEN
GOTO cmdProcessingDone
END IF
'get the address of where this array's data is stored
vw_buf$ = SPACE$(LEN(vw_dummy%&))
vw_m = _MEM(vw_address, LEN(vw_dummy%&))
vw_m2 = _MEM(_OFFSET(vw_buf$), LEN(vw_dummy%&))
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
IF LEN(vw_dummy%&) = 8 THEN
vw_address = _CV(_INTEGER64, vw_buf$) 'Pointer to data
ELSE
vw_address = _CV(LONG, vw_buf$) 'Pointer to data
END IF
'vw_address now points to the actual data
'find the required element for this array
IF INSTR(vw_varType$, "STRING *") THEN
vw_varSize = VAL(MID$(vw_varType$, _INSTRREV(vw_varType$, " ") + 1))
ELSEIF INSTR(vw_varType$, "STRING") THEN
vw_varSize = LEN(vw_dummy%&)
END IF
'this is where we calculate the actual element position in memory
vw_address = vw_address + ((vw_arrayIndex - vw_lbound) * vw_varSize)
END IF
'vw_address now points to the actual data
vw_buf$ = SPACE$(vw_varSize)
vw_m = _MEM(vw_address, vw_varSize)
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + MKI$(vw_sequence) + _MK$(_OFFSET, vw_address) + vw_buf$
IF INSTR(vw_varType$, "STRING *") > 0 AND vw_isarray <> 0 THEN
'actual data already fetched; nothing else to do
ELSEIF INSTR(vw_varType$, "STRING") THEN
IF vw_isarray THEN
'First pass
vw_varSize = LEN(vw_dummy%&)
vw_buf$ = SPACE$(vw_varSize)
vw_m = _MEM(vw_address, vw_varSize)
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
IF LEN(vw_dummy%&) = 8 THEN
vw_address = _CV(_INTEGER64, vw_buf$) 'Pointer to data
ELSE
vw_address = _CV(LONG, vw_buf$) 'Pointer to data
END IF
'Second pass
vw_varSize = LEN(vw_dummy%&) + LEN(vw_varSize)
vw_buf$ = SPACE$(vw_varSize)
vw_m = _MEM(vw_address, vw_varSize)
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
END IF
'vw_buf$ now contains a pointer to the string data
'as well as the number of bytes we have to read
IF LEN(vw_dummy%&) = 8 THEN
vw_address = _CV(_INTEGER64, LEFT$(vw_buf$, 8)) 'Pointer to data
vw_varSize = CVL(MID$(vw_buf$, 9))
ELSE
vw_address = _CV(LONG, LEFT$(vw_buf$, 4)) 'Pointer to data
vw_varSize = CVL(MID$(vw_buf$, 5))
END IF
vw_buf$ = SPACE$(vw_varSize)
vw_m = _MEM(vw_address, vw_varSize)
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
END IF
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + vw_buf$
GOSUB SendCommand
CASE "set global address", "set local address"
vw_localIndex = CVL(LEFT$(vw_value$, 4))

View file

@ -7384,14 +7384,13 @@ SUB DebugMode
temp$ = MID$(temp$, 9)
cmd$ = ""
IF LEN(usedVariableList(tempIndex&).subfunc) = 0 THEN
cmd$ = "get global address:"
cmd$ = "get global var:"
ELSE
cmd$ = "get local address:"
cmd$ = "get local var:"
END IF
GOSUB GetVarSize
IF usedVariableList(tempIndex&).isarray THEN varSize& = LEN(dummy%&)
IF LEN(cmd$) THEN
cmd$ = cmd$ + MKL$(tempIndex&) + MKL$(usedVariableList(tempIndex&).localIndex) + MKL$(tempArrayIndex&) + MKI$(1) + MKL$(varSize&) + usedVariableList(tempIndex&).subfunc
cmd$ = cmd$ + MKL$(tempIndex&) + _MK$(_BYTE, usedVariableList(tempIndex&).isarray) + MKL$(usedVariableList(tempIndex&).localIndex) + MKL$(tempArrayIndex&) + MKL$(varSize&) + MKI$(LEN(usedVariableList(tempIndex&).subfunc)) + usedVariableList(tempIndex&).subfunc + MKI$(LEN(usedVariableList(tempIndex&).varType)) + usedVariableList(tempIndex&).varType
GOSUB SendCommand
END IF
LOOP
@ -7401,44 +7400,8 @@ SUB DebugMode
CASE "address read"
tempIndex& = CVL(LEFT$(value$, 4))
tempArrayIndex& = CVL(MID$(value$, 5, 4))
sequence% = CVI(MID$(value$, 9, 2))
address%& = _CV(_OFFSET, MID$(value$, 11, LEN(address%&)))
recvData$ = MID$(value$, 11 + LEN(address%&))
recvData$ = MID$(value$, 9)
GOSUB GetVarSize
IF usedVariableList(tempIndex&).isarray THEN
SELECT CASE sequence%
CASE 1 'received array's address; request tempArrayIndex&
IF LEN(dummy%&) = 8 THEN
address%& = _CV(_INTEGER64, LEFT$(recvData$, 8)) 'Pointer to data
ELSE
address%& = _CV(LONG, LEFT$(recvData$, 4)) 'Pointer to data
END IF
IF INSTR(usedVariableList(tempIndex&).varType, "STRING *") THEN
varType$ = usedVariableList(tempIndex&).varType
varSize& = VAL(MID$(varType$, _INSTRREV(varType$, " ") + 1))
ELSEIF varType$ = "STRING" THEN
varSize& = LEN(dummy%&)
END IF
address%& = address%& + ((tempArrayIndex& - 1) * varSize&)
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(2) + MKL$(varSize&) + _MK$(_OFFSET, address%&)
GOSUB SendCommand
GOTO vwatch_sequence_done
CASE 2 'actual string data received or variable-length address
IF INSTR(usedVariableList(tempIndex&).varType, "STRING *") THEN
GOTO storeReceivedData
ELSEIF varType$ = "STRING" THEN
varSize& = LEN(dummy%&) + LEN(dummy&)
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(3) + MKL$(varSize&) + recvData$
GOSUB SendCommand
GOTO vwatch_sequence_done
END IF
CASE 3 'got an address and the length of this string array index
GOTO requestActualStringData
CASE 4 'variable-length string data finally received
GOTO storeReceivedData
END SELECT
END IF
SELECT CASE varType$
CASE "_BYTE", "BYTE": recvData$ = STR$(_CV(_BYTE, recvData$))
CASE "_UNSIGNED _BYTE", "UNSIGNED BYTE": recvData$ = STR$(_CV(_UNSIGNED _BYTE, recvData$))
@ -7453,32 +7416,17 @@ SUB DebugMode
CASE "_FLOAT", "FLOAT": recvData$ = STR$(_CV(_FLOAT, recvData$))
CASE "_OFFSET", "OFFSET": recvData$ = STR$(_CV(_OFFSET, recvData$))
CASE "_UNSIGNED _OFFSET", "UNSIGNED OFFSET": recvData$ = STR$(_CV(_UNSIGNED _OFFSET, recvData$))
CASE "STRING"
IF sequence% = 1 THEN
requestActualStringData:
IF LEN(dummy%&) = 8 THEN
address%& = _CV(_INTEGER64, LEFT$(recvData$, 8)) 'Pointer to data
strLength& = CVL(MID$(recvData$, 9))
ELSE
address%& = _CV(LONG, LEFT$(recvData$, 4)) 'Pointer to data
strLength& = CVL(MID$(recvData$, 5))
END IF
sequence% = sequence% + 1
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(sequence%) + MKL$(strLength&) + _MK$(_OFFSET, address%&)
GOSUB SendCommand
GOTO vwatch_sequence_done
END IF
'CASE "STRING": 'no conversion required
END SELECT
storeReceivedData:
IF usedVariableList(tempIndex&).isarray THEN
seqIndex& = INSTR(usedVariableList(tempIndex&).indexes, MKL$(tempArrayIndex&))
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).storage, seqIndex&, 4))
vWatchArrayReceivedData$(storageSlot&) = recvData$
IF seqIndex& <= LEN(usedVariableList(tempIndex&).mostRecentValue) - 3 THEN
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).mostRecentValue, seqIndex&, 4))
vWatchArrayReceivedData$(storageSlot&) = recvData$
END IF
ELSE
usedVariableList(tempIndex&).mostRecentValue = recvData$
END IF
vwatch_sequence_done:
IF PauseMode THEN GOSUB UpdateDisplay
CASE "current sub"
currentSub$ = value$
@ -7703,15 +7651,22 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$, totalVisibleVariabl
END IF
item$ = thisName$ + SPACE$(longestVarName - LEN(thisName$)) + " = "
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
isString = (INSTR(usedVariableList(tempIndex&).varType, "STRING *") > 0 OR usedVariableList(tempIndex&).varType = "STRING")
IF usedVariableList(tempIndex&).isarray THEN
seqIndex& = INSTR(usedVariableList(tempIndex&).indexes, MKL$(tempArrayIndex&))
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).storage, seqIndex&, 4))
tempValue$ = vWatchArrayReceivedData$(storageSlot&)
IF seqIndex& <= LEN(usedVariableList(tempIndex&).mostRecentValue) - 3 THEN
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).mostRecentValue, seqIndex&, 4))
tempValue$ = vWatchArrayReceivedData$(storageSlot&)
END IF
ELSE
tempValue$ = usedVariableList(tempIndex&).mostRecentValue
END IF
item$ = item$ + tempValue$
IF isString THEN
item$ = item$ + CHR$(34) + tempValue$ + CHR$(34)
ELSE
item$ = item$ + tempValue$
END IF
COLOR fg
ELSE
item$ = item$ + "<out of scope>"
@ -7818,7 +7773,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
IF dialogHeight < 9 THEN dialogHeight = 9
dialogWidth = 6 + maxModuleNameLen + maxVarLen + maxTypeLen
IF IdeDebugMode > 0 THEN dialogWidth = dialogWidth + 200 'make room for "= values"
IF IdeDebugMode > 0 THEN dialogWidth = dialogWidth + 100 'make room for "= values"
IF dialogWidth < 60 THEN dialogWidth = 60
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
@ -8006,6 +7961,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
longestVarName = 0
nextvWatchArraySlot = 0
FOR y = 1 TO totalVariablesCreated
usedVariableList(y).mostRecentValue = ""
IF usedVariableList(y).watch THEN
thisLen = LEN(usedVariableList(y).name)
IF usedVariableList(y).isarray THEN
@ -8025,7 +7981,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
WHILE nextvWatchArraySlot > UBOUND(vWatchArrayReceivedData$)
REDIM _PRESERVE vWatchArrayReceivedData$(1 TO UBOUND(vWatchArrayReceivedData$) + 999)
WEND
usedVariableList(y).storage = usedVariableList(y).storage + MKL$(nextvWatchArraySlot)
usedVariableList(y).mostRecentValue = usedVariableList(y).mostRecentValue + MKL$(nextvWatchArraySlot)
vWatchArrayReceivedData$(nextvWatchArraySlot) = ""
temp$ = MID$(temp$, 5)
LOOP
@ -8034,6 +7990,12 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
END IF
END IF
NEXT
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF
@ -8074,6 +8036,9 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
temp$ = parseRange$(v$)
usedVariableList(varDlgList(y).index).indexes = temp$
temp$ = formatRange$(temp$)
IF usedVariableList(varDlgList(y).index).watchRange <> temp$ THEN
usedVariableList(x).mostRecentValue = ""
END IF
usedVariableList(varDlgList(y).index).watchRange = temp$
ELSE
usedVariableList(varDlgList(y).index).indexes = ""
@ -8284,12 +8249,30 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
END IF
l$ = l$ + text$ + l3$
IF totalVisibleVariables = 1 THEN doubleClickThreshold = LEN(l$) - 1
IF totalVisibleVariables = 1 THEN doubleClickThreshold = LEN(l$) - 3
IF IdeDebugMode > 0 THEN
IF usedVariableList(x).subfunc = currentScope$ OR usedVariableList(x).subfunc = "" THEN
IF usedVariableList(x).watch THEN
l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor) + StrReplace$(usedVariableList(x).mostRecentValue, CHR$(0), " ")
isString = (INSTR(usedVariableList(x).varType, "STRING *") > 0 OR usedVariableList(x).varType = "STRING")
IF usedVariableList(x).isarray THEN
temp$ = usedVariableList(x).mostRecentValue
IF LEN(temp$) THEN l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor) + "{"
DO WHILE LEN(temp$)
storageSlot& = CVL(LEFT$(temp$, 4))
temp$ = MID$(temp$, 5)
IF isString THEN l$ = l$ + CHR$(34)
l$ = l$ + StrReplace$(vWatchArrayReceivedData$(storageSlot&), CHR$(0), " ")
IF isString THEN l$ = l$ + CHR$(34)
IF LEN(temp$) THEN l$ = l$ + ","
LOOP
IF LEN(usedVariableList(x).mostRecentValue) THEN l$ = l$ + "}"
ELSE
l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor)
IF isString THEN l$ = l$ + CHR$(34)
l$ = l$ + StrReplace$(usedVariableList(x).mostRecentValue, CHR$(0), " ")
IF isString THEN l$ = l$ + CHR$(34)
END IF
END IF
ELSE
l$ = l$ + " <out of scope>"
@ -8812,10 +8795,12 @@ FUNCTION idecallstackbox
idecentercurrentline
ideselect = 0
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF
END IF
@ -10418,12 +10403,24 @@ FUNCTION ideinputbox$(title$, caption$, initialvalue$, validinput$, boxwidth, ma
END IF
IF K$ = CHR$(27) OR (focus = 3 AND info <> 0) THEN
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF
IF K$ = CHR$(13) OR (focus = 2 AND info <> 0) THEN
ideinputbox$ = idetxt(o(1).txt)
ok = -1
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF
'end of custom controls
@ -12092,6 +12089,12 @@ FUNCTION idesubs$
IF K$ = CHR$(27) OR (focus = 5 AND info <> 0) THEN
idesubs$ = "C"
GOSUB SaveSortSettings
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF
@ -12109,6 +12112,12 @@ FUNCTION idesubs$
idesx = 1
GOSUB SaveSortSettings
IF mousedown THEN
DO
GetInput
_LIMIT 100
LOOP UNTIL mRELEASE
END IF
EXIT FUNCTION
END IF

View file

@ -112,7 +112,7 @@ TYPE usedVarList
AS LONG id, linenumber, includeLevel, includedLine, scope, localIndex
AS _BYTE used, watch, isarray
AS STRING name, cname, varType, includedFile, subfunc, mostRecentValue
AS STRING watchRange, indexes, elements, storage 'for Arrays and UDTs
AS STRING watchRange, indexes, elements 'for Arrays and UDTs
AS _OFFSET baseAddress
END TYPE
@ -25955,7 +25955,6 @@ SUB manageVariableList (__name$, __cname$, localIndex AS LONG, action AS _BYTE)
usedVariableList(i).used = 0
usedVariableList(i).watch = 0
usedVariableList(i).mostRecentValue = ""
usedVariableList(i).storage = ""
usedVariableList(i).linenumber = linenumber
usedVariableList(i).includeLevel = inclevel
IF inclevel > 0 THEN