' --- Detect logical/shift compound assignment operators (and=, or=, xor=, eqv=, imp=, shr=, shl=) ---
dim as string sLow = lcase(sWord)
if (sLow = "and" or sLow = "or" or sLow = "xor" or sLow = "eqv" or sLow = "imp" or sLow = "shr" or sLow = "shl") then
' Save current position, skip whitespace after the word
dim as long j = i
while j <= nLen
dim as long c = asc(mid(sText, j, 1))
if (c <> 32) and (c <> 9) then exit while
j += 1
wend
' Check if the next non-whitespace character is '='
if j <= nLen then
dim as long c = asc(mid(sText, j, 1))
if c = 61 then ' '='
' Only merge if there is no whitespace between the word and '=' (i.e. j == i)
if j = i then
i = j + 1 ' Skip '='
sWord &= "=" ' Merge into "and=" etc.
' Set this token type to operator, not word
tokens(nCount).kind = FMTTOK_OP
tokens(nCount).text = sWord
nCount += 1
bStmtStart = false
continue while ' Return to the main loop to continue processing subsequent characters
end if
end if
end if
end ifprivate function FMT_IsBinaryOp( byref sOp as string ) as long
select case sOp
case "=", "+", "-", "*", "/", "\", "^", "<", ">", "<=", ">=", "<>", "&", _
"+=", "-=", "*=", "/=", "\=", "^=", "&=", "=>", _
"and=", "or=", "xor=", "eqv=", "imp=", "shr=", "shl="
return true2) The Extern statement has two forms: block and single-line.extern
end externFor the single-line form, when a line is fully entered, e.g. extern foo alias "foo" as longthe next line continues to indent incorrectly.' Add single-line extern detection to avoid unwanted auto-indent
case "extern"
' If there's only one word, or the second word starts with a double quote, treat as a block opener; otherwise it's a single-line declaration
if nWords < 2 then
return FMTLINE_OPENER
else
if left(sW2, 1) = """" then
return FMTLINE_OPENER ' Extern "C" ...
else
return FMTLINE_PLAIN ' Extern foo Alias ...
end if
end if3) In the current version of Tiko (compared to 1.3.2), there is a regression in the auto-completion of nested blocks. Specifically:Dim Shared g_SysCP As Long
g_SysCP = GetACP()Then I modified three modules: