🥢 toothpick.nvim

A plugin for neovim written in Lua that provides custom menus for user input, item selection, and notifications.

I was motivated to create the plugin to solve a common problem on Neovim when working in large projects: File switching. Fuzzy finders like fzf or telescope.nvim are good general tools, but if we want to quickly switch between a small set of files, we have to remember and constantly write parts of the file's names, which increases cognitive load while programming.

This issue led to the creation of many popular plugins like harpoon and arrow.nvim that keep a list of tagged buffers. The basic idea is to allow the user to tag files, with easy bindings to switch between them. My problem with these plugins was the need to remember to tag files and maintain the list.

I decided to track time metrics like "last access time" and "total focus time" for each open file. I then sort the files and format their info in a nice tabular form. From the file list I can quickly to jump to any file in it by pressing the "hint" letter of each line.

With what I learned from this project, it was easy to create the other menus for user input and notifications which are much better than Neovim's defaults.

More information on the plugin is available on the Github page.