I prefer minimalistic software such that its manual comfortably fits into my skull, so my tools of choice are vim, mksh and dvtm. But from time to time I feel anxiety that I am missing out something powerful and important, so several days ago I pushed myself to try something unfamiliar.
Meet the first challenger -- zsh interactive shell, famous (infamous?) for having zillions options and emulation modes for anything. I tried several commands, default configuration it has quite nice auto-completion, but when I tried to actually work in zsh, and autocomplete git
git checkout <tab>
it delayed for probably half a second and asked whether I want to see all 1041 options. No, stupid, I dont.
I want auto-complete local branches, no tags or remote branches, please. I looked into auto-completions script. 8k lines of shell code, without any configuration variables on the top. Okay, let's do websearch.
https://stackoverflow.com/questions/12175277/disable-auto-completion-of-remote-branches-in-zsh
Looks like it is known problem. Solution is also known, but requires incantation that requires very patient reading of manual for probably several days and depends on implementation details of completion script. Not today.
The next challenger -- spacemacs text editor. Spacemacs is an emacs configuration that provides quite faithful implementation of vim editing experience and several niceties, like out-of-box language server integration, documentation hints and automatic bracket matching.
First problem is that it is slow. I would expect that latest Macbook Pro would be powerful enough to forgive performance negligence, but it is not. Even with emacs daemon mode (honestly, emacs is unusable without emacsclient) it takes spacemacs noticeable time to open a file.
Second problem is that spacemacs comes with insane amount whistles and bells, and not all of them are welcome. For example, if I edit file that is located in git repository, I get small "+" and "-" signs it the left column that show lines that are added/deleted in non-committed changes. I had to do websearch to figure out how to disable it.
Third problem with emacs is that emacsclient does not pass environment variables to the daemon process, so making it work with "nix-shell" is extra work.
This is recurring pattern. Whenever I try something big and fancy, I am forced to spend time on disabling features instead of enabling them, and it is much more frustrating. Just imagine doing websearch for "small plus sign in spacemacs".
I think if my workflow is revolving around doing websearch, it is a bad workflow, so I am back to my small and cozy environment with exhaustive offline documentation.