Up until now the agnoster theme with enabled inline git branch display did not work properly for bare repos.
This was caused by `git rev-parse --show-toplevel` returning empty string for bare repos. In that case it now uses the git directory as root.
Your bare repo should be displayed properly (although you usually won't really navigate through a bare git repo, this is nice to have.
The agnoster theme now supports:
* Setting color for all kinds of elements, by setting an appropiate config variable to the color name in your zshrc
Example: AGNOSTER_GIT_DIRTY_BG=red # Set the git prompt background color to red for dirty repos
* Allowing to separate the git root and the relative path in your prompt by setting AGNOSTER_GIT_INLINE to 'true'
You will then have a segment for the git root (ie. ~/.oh-my-zsh) followed by the existing git branch segment (ie. master) and
finally the relative directory path (ie. themes)
* By setting AGNOSTER_STATUS_RETVAL_NUMERIC to 'true', The return value in the status prompt will become a number instead of a cross.
`git rev-parse --is-inside-work-tree` does not have a different exit
code when not within a work tree; the difference is in the output,
either "true" when in a work tree, or "false" when not.
The if was modified similarly to the check for the hide-status config,
which also parses command output rather than exit code.
Co-authored-by: Kyle Laker <klaker@easydynamics.com>
This commit fixes the runtime error that says:
prompt_status:2: symbols: attempt to assign array value to non-array
It trips over a local array which is not properly declared.
This PR fixes the runtime error that displays this:
```log
prompt_status:2: symbols: attempt to assign array value to non-array
```.
It trips over a local array which is not properly declared.
* agnoster: do not hardcode black foreground.
This would allow easy customization when using light color schemes, like
solarized-light
* agnoster: implement light theme variant
Use same variable as in blinks theme, to detect if solarized theme used
is a light or dark one.
The PROMPT building method clashes with other themes and
plugins that modify the PROMPT variable.
Also reverted the $jobstates trick due to it not working
inside $PROMPT.
* agnoster: improve perf with use of $jobstates (zsh/parameter module)
This saves multiple fork/execs (for the subshell and wc) each
time the prompt is rendered
* agnoster: compute git repo_path only when in a git repo
this avoids needlessly invoking git twice every time we render the prompt
* agnoster: avoid subshell when rendering prompt
Rather than forking a subshell to print the prompt, construct it
incrementally by appending to $PROMPT.
v2: fix incorrect CURRENT_BG
v3: fix bzr and hg prompting
Thanks @mcornella for the help.
Plugin command-not-found on Arch Linux returns 0 if git or bzr is found in repos, hence outputting unwanted pkgfile output.
Checking if the commands exist first fixes all such issues.
the agnoster theme is now able to render basic information
if the user is currently residing inside a bazaar folder.
if so, it will render a green promt segment with "bzr" and
the current revision number in it. if there are untracked
files, the bar will be rendered in yellow. if there are
changes to already tracked files, a + character will be
printed.
Problem
On detached-refs, the git prompt is very slow because it uses a command
to output all refs, which takes 32s on the twitter internal git repo.
Solution
Use git-rev-parse instead of git-show-ref to only output the head ref.
Runtime drops to 0.03 seconds.
Note
Interestingly, git-rev-parse isn't slow without the --head arguement so
I'll probably be cooking up a patch for the git team to speed this up
eventually, but it's still pointless to sigpipe git as it walks the
filesystem.