EDIT: just changed the project name to skim as suggested by hoodie.
I'd like to share a project I recently working on: skim.
It is a re-implementation of the famous fzf which is a really handy fuzzy finder. To those who haven't heard about fzf, it is a general fuzzy finder for command line. That means it is just like an interactive version of grep that enables you to fuzzy find out the target.
A little preview here:
Looking forward for your comments, suggestions, idea, etc.
I like it.
Would be awesome if I could enter something like $ fzf vim and it would start vim unless I abort.
Because with vim $(fzf) it currently launches vim without a file.
I'm thinking about the ideal way to integrate fzf with other programs, currently fzf-rs serves as a general purpose text filter.
The possible ways I can think of are (now for this vim case only):
fzf-rs | xargs -o vim to open the file
Write a plugin for vim to invoke fzf-rs inside vim. Note that original fzf provide such plugin which fzf-rs is compatible with.
serve fzf-rs as a general menu for execution, that means we can specify the callback command for selection. Just like fzf-rs --callback execute('vim {}').
I see that you used ncurses to implement the UI, does that give you Windows support? I implemented the Heatseeker UI directly in terms of terminal control codes (for POSIX terminals) and the Windows API (for Windows), and as tedious as that was I really like how smoothly it integrates into the command line as a result:
It is ncurese-rs, the library that I use that caused the error on Windows. Plus I uses some *nix-specific stuff(e.g signal handling for terminal resize: SIGWINCH).
BTW, terminal control codes seems really cool! Thank you for the information!
Oh, I see that you already addressed Windows support. SIGWINCH is a tricky one, I wish we had a way to do that (and in particular, to register a signal handler) without going through libc.
This is a pretty amazing contribution to the Rust community, and so I commend you for your efforts. Would you be interested in dumping the dependency on ncurses for a native Rust solution, perhaps with termion? Seems like it would make a good contribution to the RedoxOS project as well, perhaps as a contribution to extrautils.
Thank you! I'd like to contribute to RedoxOS, it looks cool! However I think skim is far from complete, so I'd like to focus on the functionalities for now, and put off the dependency things.