4 ms·
Fisherman is a shell manager for fish that lets you share and reuse code, prompts and configurations easily. This tool is not a framework, it does not pollute
by bucaran 11y ago
Fisherman is a shell manager for fish that lets you share and reuse code, prompts and configurations easily.
This tool is not a framework, it does not pollute your shell public scope with superfluous functions, it does not make your shell slow, it's just a handful of 4 ~ 5 commands that let you share and manage your configuration, plugins, prompts, snippets, etc., and does not care whether they come from Oh My Fish!, Wahoo, or other vendors. You get the most of your shell and Fisherman gets out of your way.
Features include a flat tree structure, strong UNIX ties (everything is a stream), unified plugin architecture with automatic completions, documentation via man pages and support for utilities that use Make as a build tool, external self-managed database, cache system, plugin dependencies, quick shell start, extensive documentation and compatibility with Oh My Fish ecosystem of plugins / themes.
- mchahn 11y agoI apologize in advance for a stupid question, but what is a "flat tree structure"? It sounds like an oxymoron.
- chenglou 11y agoProbably like the new npm 3 dependency directories. If A and B require a common version of C then the hierarchy is totally flat (A B C at the root). If they require incompatible versions of C then there will be 2 C, one nested inside A and one inside B
- bucaran 11y agonpm 4 dep management is more complex. In fish there is no private function scope so things are much simpler (but not as powerful indeed).
- bucaran 11y agoThanks for the question. I needed a term that would fit the README without sounding too extravagant either. Here is the explanation from fisher(7) [https://github.com/fisherman/fisherman/blob/master/man/man7/fisher.md#flat-tree https://github.com/fisherman/fisherman/blob/master/man/man7/...] Basically, a flat tree takes advantage of fish's lack of private scope (it bundles everything into the same "public" scope). Fisherman then only needs to "load" the one single path where plugins/snippets/prompts/etc are transferred after being downloaded to the cache. This is faster than, loading a path hierarchy per plugin and also means that performance is not affected based in the number of plugins installed.
- chenglou 11y agoSomewhat related: can fish shell do something like this? https://github.com/hchbaw/auto-fu.zsh https://github.com/hchbaw/auto-fu.zsh On the fly display of all the options. If so, to what extend? Some commands don't give autocomplete upon tab. Is there a way to fix that?
- ridiculous_fish 11y agofish displays one "suggestion" as you type, which can be a file, option, or history item. You can use tab to get a menu, similar to the demo. Showing everything as you type sounds neat, but in practice it's jarring to have your screen fill up the second you press a key. fish operates on the UI principle of progressive disclosure: be helpful but not overwhelming. That's why it only shows one. fish knows how to parse man pages to extract options, so fish can tab-complete options even for commands that don't have explicit completions. It's surprising that nobody else seems to have tried this.
- bucaran 11y agoThe relevant link is here (https://github.com/fish-shell/fish-shell/blob/master/share/tools/create_manpage_completions.py https://github.com/fish-shell/fish-shell/blob/master/share/t...) ridiculous_fish, we still use `complete` all over the place for completions don't we. In Fisherman there is a nice little AWK script, still far from perfect that attempts to do a similar thing, parsing a utility's usage help. usage: utility [...] -s --short Short option ...