issue #136 was found to be caused by an aliased 'ls' command that
generated rogue values for 'plugin' in the enable/disable-plugin()
functions. this commit fixes that by forcing the shell to disregard
aliased 'ls' commands.
it isn't safe to assume that symlinks created in the enabled/* dirs will
be symlinks later...
some users use tools like Dropbox to sync their files across systems,
and these may transform symlinks into regular files. explicitly
checking for symlinks with tests like [ -h $file ] will break on these
systems. these tests have been replaced with [ -e $file ] instead.
this replaces the naive implementation that called glossary() on each
group, and is an order of magnitude faster.
fix grouping in javascript.plugin.bash
typeset_functions relies on a hack to determine the shell it is running
under. this hack fails on some versions of bash. if the $SHELL variable
is set, prefer that instead.
fix bug in draft()
The ls command in for loop has a pattern now, so full paths are
returned. The user prompt and symbolic link have been updated to handle
this.
Also, not all plugins have '.plugin.' in the middle of their names and
weren't showing up on user prompt. With this commit, everything after
the first period in the file name is stripped.
loading fasd clobbers z(), and results in a cryptic syntax error
message, since 'z' is already an alias when z.plugin.bash is being
sourced.
this conditional detects this situation and returns early.
add about-plugin metadata
chmod -x plugins
cleanup filenames to standardize on x.plugin.bash format
only plugin files intended to be executable from the command line should
contain a shebang line, and should be a+x.
since we're sourcing this as a plugin, which loads the function, it's
counterproductive to also define the 'fasd' alias
moving the about-plugin metadata into the case block makes this script
safe for execution even if composure metadata isn't exported and
available
rename fasd.bash to fasd.plugin.bash to bring it inline with the other
plugin scripts
cite about-plugin metadata. This could be retrieved later, say by an
install script or other helper function, with:
cat ~/.bash_it/plugins/enabled/base.plugin.bash | metafor about-plugin
In this way, summaries of each plugin may be provided to give newcomers
(like me!) an overview.
also, rewrote plugins-help(), which didn't work very well on my system.
It now dynamically queries composure metadata.
The [fasd](https://github.com/clvv/fasd) project replaces the current
z() functionality, and generalizes it for all files and directories.
It provides a 'z' alias which works like z() does today, but faster, as
well as 'f' for selecting files, and 'd' for selecting directories, all
based on 'frecency' with Bayesian inference calculations. It is also
trivial to set up a 'v' alias to edit frecently used files.
Seriously, two points just for using Bayes' theorem.
I've sourced this as a plugin, and made a minor modification to @clvv's
0.5.4 file to bootstrap the initialization process without installing
fasd outside of Bash_it, or modifying the PATH.
This doesn't fully install fasd on a system (for instance, the man page
is not installed).
Using this as a plugin will clobber the z plugin.
This also installs a PROMPT_COMMAND hook. I don't have a complex setup,
but it is possible this may not play nice with other PROMPT_COMMAND
hooks if they are set. It seems to work well on my box.
As an aside, it appears that z.bash is out-of-date compared with @rupa's
latest code.