Use case or problem
When autocompleting internal link syntax for a note that doesn’t exist, ala [[Some new thing
, the autocompleter tries WAY too hard. It nearly always insists that there’s some crazy match for an entire unique new note name.
This is a pain, since I often find myself in a workflow of:
- Working on a note, then
- Realizing that I want to break out a new child/sibling note, then
- Attempting to directly type the internal-link inline.
A special case of the above that I hit very regularly: when using Kanban, create a new card, then type a new internal link name as that card’s content. Autocompleter says: FIGHT MEEEEEE!
Proposed solution
The autocompleter needs to give up much sooner, at least for internal links. I think some trial and error around heuristics would be required. E.g. tools like Levenshtein distance are probably useless as a sole metric, since we’ve all been trained to type out somewhat randomly placed “significant” letters from existing autocompletion targets, ala “vinab” for “A Very Important Note About Some Things”.
A better first-cut would be a length cutoff, or perhaps a function of (length, match strength). Match strength is a bit abstract here, and depends on what’s already available from the autocompleter and/or some second-order metric like “number of unmatched characters relative to top a/c hit” etc. Learnable predictability is a key goal here. Envisioning an ideal solution, users should be able to form reliable muscle memory both for linking to existing notes and when creating new notes.