ls(1) on macOS and FreeBSD is the BSD version of the utility. As such it can be
configured to display directory contents in color using a command line argument
(-G) or environment variables (LSCOLORS). Using environment variables is nice
because it'll work regardless of the arguments you pass, so there's no need to
configure aliases.
Reverse the candidates array (the list of positional arguments after options)
with the --prepend (or -p) option so that directories are prepended to the path
variable in the correct precedence.
Add a "force" option as -f or --force that will skip checking if a directory
exists and add the path even if it doesn't. As part of this change, add the
check that the directory exists.
I learned once again that true color schemes don't work in macOS's Terminal.app.
I also learned that the default color scheme in neovim is very plain and doesn't
provide a lot of variation for treesitter syntax elements. So, choose a different
built-in color scheme as the default.
I also learned about the ColorScheme autocmd event, which is fired after a color
scheme is applied. Convert the (janky) reloadColorscheme function to a set of
autocommands that trigger based on the color scheme name.
Along the way, add some explicit configuration for treesitter: enable highlighting,
indentation, and make sure some of my common languages have plugins installed.
Also link the "objcpp" filetype to both "objc" and "cpp" treesitter plugins.
Lastly, make some updates to the git gutter color configuration. Create some
autocommands that are applied after the plugin is loaded. For the gutter, use
color 233 from the 256 color palette, which is a very dark gray.