Cached projects/tags/frames for fish
Formalized my workaround mentioned in this comment. Cache is invalidated when the frames file is newer than the cache files, similar to how the zsh completions work. Performance is also on par with zsh and similar to my 2nd GIF after the caches are set.
from what I can tell this greatly increases the completion speed for projects and tags, thanks for figuring this one out! I can provide the fuzzer I used if anyone needs it.
chimera ~ watson tags | wc -l
7
chimera ~ watson projects | wc -l
882
chimera ~ watson frames | wc -l
5282
Thanks @Kevin-Mok & @andrewmeyer :pray: If you can rebase your work, I'll merge it asap @Kevin-Mok
This still ended up being too slow for my liking, so what I ended up doing was manually updating the cache files and just cat'ing them directly for my completions. The problem is that the frames file will always be newer when you start or add another frame, so the cache files will always have to be regenerated.
Would it be possible to keep and update a cache file (similar to how this works now) in the the new confirm_project and confirm_tags functions? This would fix the problem of having to constantly regenerate the cache files when there might not even be any new project or frame being added. These files could also then be used for the bash and zsh completions which suffer the same problem.
In any case, I rebased what I had on top of master if you wanted to use this anyway in the meantime.