Tiko - beta tests

Started by Paul Squires, August 04, 2026, 11:54:29 AM

Previous topic - Next topic

fbfans

#15
Hi Paul,

I downloaded the beta version and, as always, it works great. The issues I reported previously have all been resolved.

Regarding the problem in ANSI mode where backspace only deletes half of a double-byte character, please take a look at my feedback in another thread — I'm hoping for a fix!
https://www.planetsquires.com/protect/forum/index.php?msg=36811

Feedback:
1. The interface is still very well-coordinated. On my 2K screen(2240X400), the Chinese-to-English display ratio looks normal. There are a couple of small things that might be intentional on your part — for example, the "normal" text in the upper-right corner of the edit area appears noticeably larger than everything else, and the button heights inside the theme settings dialog seem inconsistent with others.
2. Formatting is something I care about quite a bit. After looking at your formatting module, I realized that's what real professionalism looks like — it's something worth studying. The test results are excellent. Here is my feedback:
1) To make the formatter more complete, it should support logical compound assignment operators as valid syntax. Here's a reference implementation:
' --- 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 if

private function FMT_IsBinaryOp( byref sOp as string ) as long
    select case sOp
        case "=", "+", "-", "*", "/", "\", "^", "<", ">", "<=", ">=", "<>", "&", _
             "+=", "-=", "*=", "/=", "\=", "^=", "&=", "=>", _
             "and=", "or=", "xor=", "eqv=", "imp=", "shr=", "shl="
            return true
2) The Extern statement has two forms: block and single-line.

The block form should be added to auto-completion, like:
extern
end extern
For the single-line form, when a line is fully entered, e.g.
extern foo alias "foo" as longthe next line continues to indent incorrectly.

Here's a reference implementation of the fix I made:

' 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 if
3) In the current version of Tiko (compared to 1.3.2), there is a regression in the auto-completion of nested blocks. Specifically:
A first-level block (e.g., the outermost if) correctly auto-completes end if after pressing Enter.
However, for second-level and deeper nested blocks (e.g., inner if, for, do, etc.), the matching closing block is sometimes not automatically inserted after pressing Enter.
In version 1.3.2, all nested blocks were completed correctly.
3.Other things:
I'm not quite sure about the following points:
a) I notice that the top of the sidebar currently groups together common icons like Config, Run, Debug, Save, etc. The sidebar itself is used for managing files, functions, and bookmarks. Now that the top is filled with these action icons, it feels a bit crowded. Is there any plan to add a toolbar to separate the action icons from the sidebar functions? That would make the interface cleaner and align with the layout conventions of most editors.
b) I'm not sure how to properly use the new bar added below the tab bar — it feels like its functionality overlaps with the sidebar (except for jumping between the main file and header file). If this is intended for project purposes, the sidebar's tree structure already works well. If the sidebar isn't being used, then icons like normal, M, H could just as well be placed on a toolbar (if one existed). If possible, could an option toggle be added to let users decide whether to display this bar?
c) Regarding the logic of debug breakpoints and bookmarks — I've mentioned this before. In the settings, clicking on the margin is configured to be either a bookmark or a breakpoint. However, I've noticed that when using keyboard shortcuts, both can be set simultaneously, and their icons can even overlap. This seems to create an inconsistency in the interaction logic — if mouse clicks are limited to one or the other, shouldn't keyboard shortcuts follow the same rule? Or, if simultaneous setting is allowed, could the mouse also support it (for example, left-click for bookmarks, right-click for breakpoints) to maintain consistency?
These are my thoughts — please feel free to disregard anything that doesn't align with your vision.

Thank you, Paul. Tiko is getting better and better.


hajubu

#16
Hi Paul,

- All CLear -

My observation had been correct - BUT I stepped in the mousetrap of Win11 "CONHOST"  versus Terminal-Cmd-Input.
CONHOST uses the std. cmd.exe with chcp 65001 which is utf8 / or any OEM CP850 , etc.
Openening the Cmd-Input with the  terminal (" wt -d ." ) command or "Win-R"  uses a terminal-Cmd-Input (opt.Setting) which can handle "allmost all" U+1xxx codes in direct presentation. ( Owl 🦉 and also the music.Clef-G 𝄞 )
The  old  Cmd windows ( conhost ) has the some limitation , even with the /U (chcp 65001), which is creepy for W7 (in and out) and w10+ on input.
All apps which are working on ANSI or UTF8 base can not safely (or at all ) handle the U+1xxx codepoints.
One modern exception exists : the world of Emoji , ((Win+{period/dot}) is input help pop-up for window 11.) -> like this Musical clef 🎼

Thanks for your patience.

b.r. Hans