Auto Complete plugin 1.0.15 - Complete tiddlers, fields and your dreams

I have found the following workaround to function quite well, maybe it will help if anyone will be looking for a similar thing.

Suggestion filter: [all[tiddlers]!is[system]search:title<query>get[myfield]split[ ]unique[]] – type the title of currently edited tiddler and se all IDs stored in its myfield field.

Display filter: [all[tiddlers]!is[system]search:myfield<currentTiddler>first[1]] [[/]] [<currentTiddler>] +[join[]] – the title will be displayed in front of the ID, to make sure the ID comes from the tiddler that we actually want, e.g. “MyTiddler/123”.

Version 1.0.17 is out:

  • The two <p> tags that were wrapping around the auto complete window have been reduced to a single <p> tag.
  • Variable editedTiddler can now be used in Suggestion Filter and Display Filter

Is it possible to reference the currently edited tiddler (or its draft), and by extension, its fields?

The new variable editedTiddler covers that specific case now!

5 Likes

Thanks for the update! As far as I have tested, the editedTiddler variable works as expected.

1 Like

Is it possible to make a click on the field as a trigger for autocomplete? I wouldn’t ask, but the point is that there is a small problem in the official tag picker that is not in the in your plugin. As you type the tag, the focus is not automatically turned on on the first element, need additional press down.

1-2023-07-05_12.40.04

1 Like

@moosh If I understand correctly you’d like it to auto trigger only in the tag input? Not at the moment - there are some long term plans about adding auto trigger conditions. With those implemented it’d be possible to also add triggering on focus, but that’s far in the future I am afraid. Until then you’ll have to deal with the way things work right now.

I suppose another option would be to support dispatching a TW event that triggers a specific completion, but that’s also something slated for the future.

@Maurycy, is it possible to use multiple filter runs (with prefixes like :map etc) in the “suggestion filter” box? i was taking a shot at something suggested by @Mohammad above (making autocomplete for macros) and the filter i came up with had multiple runs:

[all[shadows+tiddlers]tag[$:/tags/Macro]] :map:flat[<currentTiddler>get[text]split[(]split[\end]trim[]removeprefix[\define]] +[search<query>]

i got a javascript RSOE when this triggered (by typing <<), though it did work correctly in the “Test the filter” section on the trigger tiddler.
thanks!

I just checked the filter on the plugin showcase, creating a new trigger, setting the trigger string to << and using the filter you given; it worked fine. I’ll need a bit more information:

  • Which TW version are you using?
  • Can you open browser’s developer tools (F12 or Ctrl+Shift+I), open the tab Console and there should be information about the error - can you send me a screenshot?

thanks! didn’t realize it was just me - i should have tested on tw.com etc.
i’m using 5.3
image
looks like an issue with codemirror integration perhaps? i am using that plugin but it works fine with my other (single filter run) triggers, including the default [[ tiddler title autocomplete.

1 Like

Oh right, that’s that issue. It’s related to using the latest TW version I believe. I’ll take a look at this this week!

1 Like

@Maurycy I have encountered a strange interaction between AC and CodeMirror that leads to RSOD. I’m not sure it could be even described as a bug, since the required circumstances are quite weird, but maybe it is something worth knowing.

Steps to reproduce:

  1. Have Auto Complete (tested on latest 1.0.17) and CodeMirror (same version as TW) plugins installed.
  2. Add ctrl-space shortcut for sidebar-search (same as AC manual trigger).
  3. Put cursor after any AC trigger sequence in the CodeMirror field and press ctrl-space.
  4. The cursor jumps to search field and the AC popup shows up, so both shortcuts are in fact working, but an RSOD also shows up. Either with “Script error” (on TW/CM 5.2.7) or “Uncaught TypeError: Cannot read properties of null (reading ‘selectionStart’)” (on TW/CM 5.2.2 on your showcase page). I have caught no RSOD with other actions other than sidebar-search assigned to the same shortcut.

I realize these are weird conditions, I see no reason to have those two actions assigned to the same shortcut (I did it accidentally, as I simply forgot ctrl-space is already in use by AC). It can just as well be a problem with CM, since it doesn’t happen on non-CM fields even with CM installed.

Of course feel free to ignore it, if it is irrelevant.

@vilc I can’t take a good look right now but I’ll tackle it the same time I tackle the issue reported by @Scribs, thanks for reporting!

2 Likes

@Scribs and @vilc using code mirror with Autocomplete, avoid clashing with its bracket closure, I settled on triggers using the backtick which is not usually used this way so I could easily access both double and single patterns, perhaps try these to see if you get the same problem with codemirror

  • Consider code mirrors own completion / brackets etc in you selection of triggers, you can turn that off if your auto complete handles them.
  • On my keyboard backtick is unshifted top right and easy to use.
<` html tags
<<` macros/variable
{` tiddler transclusion
{!` field transclusion
[` etc...

1 Like

I installed a new alias plugin to use alternative name for a tiddler (i.e. Using Matt Lauber's Aliases plugin and displaying aliases as part of the current tiddler).

Could we search/filter by title and field (e.g. aliases) for auto-complete?

you should be able to search title and aliases field with the following filter:
[search:title,aliases<query>]
the search operator takes a list of fields in its suffix after the :, if you want to add other fields (like text) you can just add them with commas like above.
hope this helps

2 Likes

Thanks for your suggestions. nice tips

is it possible to evaluate and insert today’s date? [<now YYYY0MM0DD>] i couldn’t figure out a working solution just now, maybe i’m missing something obvious?

For me it worked

Suggestion Filter: [all[tiddlers]!sort[modified]limit[1]get[modified]format:date[0DD-0MM-YY 0hh:0mm]]

Display Filter:
[<currentTiddler>]

Template:
" d:$option$ "

3 Likes

A slight modification to @vyug18’s idea:

Suggestion filter: [<editedTiddler>get[modified]format:date[YYYY0MM0DD]] – should be slightly more performant, if you only need date, not time. I takes the modified date time of the current draft, so unless you start editing before midnight and insert timestamp after, it will be correct I guess.

Here is a complete trigger tiddler, ready to use, with trigger ddd:
$__EvidentlyCube_Trigger_CurrentDate.json (397 Bytes)

Edit: the modified field of the <editedTiddler> seems to be updated all the time on every edit to the draft, not just upon creating the draft. So this solution works also if one needs time in their timestamp.

1 Like

For this, I would absolutely go with Dynamic Rubber Stam by @Mark_S. I believe for this use case rubber stamp is more suitable and AutoComplete use case is different.

1 Like

thank you all very much @vyug18 @vilc @Mohammad ! i went with @vyug18 's solution as it was most appropriate for my needs on mobile; i tried to make it a wiki article but could not find a way to move it to a more appropriate place (tips & tricks?) thanks again, it’s really helped my workflow!

2 Likes