Commit graph

82 commits

Author SHA1 Message Date
Sam Yu
d87c0424d8 Speedup git prompt
Fix __fish_git_prompt too slow under repo with lots of untracked
files when __fish_git_prompt_showuntrackedfiles enabled.
2017-08-06 13:24:33 -07:00
Kurtis Rader
8b79f4e5c9 use the new set -a and set -p in our scripts 2017-08-04 18:02:24 -07:00
Kurtis Rader
8e87d595b7 remove some uses of $IFS
This is a step towards resolving issue #4156. It replaces uses of `$IFS`
with other solutions.
2017-07-24 20:45:43 -07:00
Kurtis Rader
ea38519a12 fix var name in __fish_git_prompt
Var `___git_ps_color_suffix_done` is supposed to be
`___fish_git_prompt_color_suffix_done`. This bug was found by an
experimental change to detect the use of undefined variables (#4163).

Similarly, we should simply test whether `__fish_git_prompt_showcolorhints`
is set rather than set to a non-empty string.
2017-07-02 20:49:40 -07:00
Fabian Homborg
0a8c922d92 Use command -sq instead of redirection
This option has been available for a while now and it's a bit shorter.
2017-02-18 22:16:55 +01:00
Fabian Homborg
bd93a9e6ff Remove useless-use-of-echo in git_prompt 2016-12-29 13:49:21 +01:00
Aaron Gyes
aed5267fd1 Stringify __fish_git_prompt 2016-12-29 04:11:23 -08:00
Kurtis Rader
11a60c8374 reformat all fish scripts
I hate doing this but I am tired of touching a fish script as part of
some change and having `make style` radically change it. Which makes
editing fish scripts more painful than it needs to be. It is time to do
a wholesale reformatting of these scripts to conform to the documented
style as implemented by the `fish_indent` program.
2016-11-27 21:27:22 -08:00
Aaron Gyes
4e1226a313 Fix git prompt noise
Issue reported on Gitter:
> If I go into an empty git repository (i.e. git init) and hit enter a few times, I get:
> fatal: bad revision 'HEAD
2016-10-07 05:59:54 -07:00
Fabian Homborg
4e2d2c125c Silence math errors in git prompt
It's not ideal since we can't get the real result so we just assume it's
"0". That triggers the easier path, which still might display the wrong
thing, but we have to pick something.

Possible fix for #3321.
2016-08-22 17:06:29 +02:00
Boris Aranovich
dc02587ac4 __fish_git_prompt: untracked files using git ls-files | wc -l | string trim 2016-08-10 14:51:18 -07:00
Boris Aranovich
077a0e1b47 Counting the number of unstaged files using wc -l pipe 2016-08-10 14:51:18 -07:00
Aaron Gyes
6e0521e23f Completions (mostly): s/.../…/g 2016-07-09 10:57:59 -07:00
Fabian Homborg
f23464001f Indent __fish_git_prompt 2016-05-29 14:10:10 +02:00
Fabian Homborg
0882e0cb95 Git prompt: Remove legacy option
Git has supported `rev-list --count` for years, so this shouldn't be
needed anymore.
2016-05-29 14:07:15 +02:00
Fabian Homborg
763c620d0b Stringify git prompt 2016-05-29 14:06:12 +02:00
Fabian Homborg
8e88b29eeb Git prompt: Shorten the sha ourselves
Possibly fixes #3083.
2016-05-28 19:30:29 +02:00
Fabian Homborg
aaaea44714 Git prompt: Only shorten sha if needed
This speeds up the common case when IO is slow, e.g. when used with
sshfs.

We only use the short sha for figuring out whether the state is
valid (for which a long sha should also work) and for display when HEAD
is detached (I think that's the correct git-ism).

Working towards #3083.
2016-05-28 17:58:29 +02:00
Aaron Gyes
36691df6fe Stringify many completions and functions, with --invert stringification.
I believe apm must have been buggy - example output that I found online
showed `tr` was mangling paths with spaces in it. Should be fixed.

Also, use dscl on OS X in __fish_complete_users.fish like
__fish_print_users.fish already does.
2016-04-08 10:49:29 +08:00
Fabian Homborg
cb5511c8db Vcs prompt: Break if vcs isn't installed
Prevents an annoying error message.
Fixes #2363.
2015-09-06 14:58:09 +02:00
Vladimir Rudnyh
d49f6e1b29 __fish_git_prompt: fix stateseparator color in informative_status
In informative_status mode stateseparator did not use
fish_git_prompt_color settings.
2015-07-12 14:53:52 -07:00
David Adam
c78e56c509 Update various strings for translation, avoid _ for non-translations
Use __ instead of _ as a placeholder for ignored variables in `read`
statements.
2014-11-25 15:37:30 +08:00
Kevin Ballard
fe3b439e31 Fix non-verbose, non-informative __fish_git_prompt
At some point the non-verbose, non-informative variant of the prompt
(e.g. the variant that looks like the bash prompt) was modified to try
and show the behind/ahead counts the same way the informative prompt
does. Besides being wrong, it also didn't work because behind/ahead
weren't defined.
2014-03-31 09:59:41 -07:00
David Adam
f0946baeaa __fish_git_prompt: initialise colors early
Otherwise __fish_git_prompt_informative_status tries to expand an unset
variable.

Closes #1157.
2013-12-02 20:09:15 +08:00
Konrad Borowski
e1608362d0 Fix s/$remote// mistake.
$remote could have contained /.
2013-11-29 15:26:33 +01:00
Konrad Borowski
9862eb930d Use sed instead of sh for Informative Git Prompt.
Informative Git Prompt assumes that sh is bash compatible, but that's
not the case for FreeBSD. Fixes #1140.
2013-11-27 11:35:01 +01:00
Brian Gernhardt
59dd6678c3 git_prompt: Allow all set_color arguments
There is no need to explicitly check for two arguments and set --bold.
Instead the user can simply "set __fish_git_prompt_color_flags --bold
red".

The current check violates the expectation set by the documentation
that you can use any set_color argument as the current code interprets
"--bold red" as "--bold --bold" instead.

Plus, by passing the full contents of the variable directly, the user
can do more adventurous things like set the background as well.
2013-10-21 12:36:42 -04:00
Brian Gernhardt
137463dc6d git_prompt: Add upstream_prefix when verbose
git.git's git-prompt may not contain a configurable prefix, but it
does display a space before the upstream information when displaying
verbose information.  Rather than using a space always or never,
default to a space whenever verbose is in showupstream.
2013-10-21 12:34:14 -04:00
Brian Gernhardt
b652920500 git_prompt: optionally show upstream branch name
Adds a "name" option to __fish_git_prompt_showupstream that shows an
abbreviated branch name when the upstream type is verbose.

Based on git.git 1f6806c: git-prompt.sh: optionally show upstream
branch name
2013-10-21 12:08:43 -04:00
Konrad Borowski
7a1bedcab6 Fix #976. Now prompt tries to use standard git command. 2013-08-26 16:24:59 +02:00
Kevin Ballard
0bf5316249 git_prompt: Default upstream_prefix to nothing
git.git's __git_ps1 doesn't have an upstream prefix. I'm not sure why
one was added to our __fish_git_prompt, but it certainly shouldn't
default to a space.
2013-08-05 12:41:58 +08:00
Kevin Ballard
969928e500 git_prompt: Fix bad test if bash.showUntrackedFiles isn't set 2013-08-05 12:41:58 +08:00
Brian Gernhardt
82b589e390 git_prompt: Make informative separator configurable
It reuses $__fish_git_prompt_char_stateseparator, since it has a
similar meaning and goes otherwise unused when
$__fish_git_prompt_show_informative_status is set.
2013-07-30 11:31:24 +08:00
Brian Gernhardt
b280cc5e75 git_prompt: Change informative character defaults
This changes the defaults for several characters when
$__fish_git_prompt_show_informative_status is set so that the prompt
looks more like the typical informative prompt.

Before:  (master >1<2|+3#4*5%6)
After:   (master↑1↓2|●3✖4✚5…6)

The defaults were taken from magicmonty/bash-git-prompt
2013-07-30 11:31:24 +08:00
Brian Gernhardt
1964b04ea9 git_prompt: Show upstream with informative status
This makes $__fish_git_prompt_show_informative_status imply
$__fish_git_prompt_showupstream = "informative", while adding a none
option for showupstream to disable it if desired.
2013-07-30 11:31:24 +08:00
Brian Gernhardt
c4bc216815 git_prompt: Informative upstream with informative status
This makes $__fish_git_prompt_showupstream = "auto" mean "informative"
instead of "git" if $__fish_git_prompt_show_informative_status is set.
2013-07-30 11:31:24 +08:00
Brian Gernhardt
aa8b3cb6d6 git_prompt: fix non-informative upstream
`test -n informative` will always succeed.  We want to test the
informative variable instead so that other modes can still work.
2013-07-27 10:35:46 -04:00
Brian Gernhardt
c62d9c37d2 git_prompt: Repaint when show_informative_status is changed 2013-07-27 09:59:36 -04:00
Brian Gernhardt
70fbb4623f git_prompt: Fix resetting colors in informative_status 2013-07-27 09:58:45 -04:00
Brian Gernhardt
8dd9602f06 git-prompt: Document informative_status changes 2013-07-26 22:05:07 -04:00
Brian Gernhardt
92d2e681d6 git-prompt: Move status_order to near informative_status
It's easy to forget the definition of ___fish_git_prompt_status_order
when there are dozens of lines between where it is defined and where
it is used.
2013-07-26 22:05:07 -04:00
Brian Gernhardt
c82dbaca8b git-prompt: Ensure repaint on all char and color changes
A few characters and colors got added without being added to the event
list for repainting.

Also sort and re-align list of characters in validate_chars.
2013-07-26 22:05:07 -04:00
Brian Gernhardt
6faeb71770 git_prompt: don't save output of ls-files for untracked files
based on git.git 14d7649: "bash prompt: avoid command substitution
when checking for untracked files"
2013-07-26 22:05:07 -04:00
Brian Gernhardt
d534b0ba81 git_prompt: Call git rev-parse less often
The code invoked `git rev-parse` several times when the required
information could be collected all at once.

This is based on the following commits from git.git:

efaa0c1: bash prompt: combine 'git rev-parse' executions in the main code path
e3e0b93: bash prompt: combine 'git rev-parse' for detached head
0f37c12: bash prompt: use bash builtins to check for unborn branch for dirty state
dd0b72c: bash prompt: use bash builtins to check stash state
2013-07-26 22:05:07 -04:00
Brian Gernhardt
87a0363ba7 git_prompt: remove __fish_git_prompt_git_dir
It's a one line function called in a single place.  I suspect it only
existed because the bash equivalent __gitdir existed (it was more
complex), but that function no longer exists either, as of git.git
511ad15: "bash prompt: run 'git rev-parse --git-dir' directly instead
of __gitdir()"
2013-07-26 22:05:07 -04:00
Brian Gernhardt
0005702399 git_prompt: print unique detached HEAD abbreviated object name
Simply using cut duplicates (poorly) `git rev-parse --short`

This also restores the ... printed after the abbreviation which
__fish_git_prompt had been missing.

Based on git.git e8f21ca: "bash prompt: print unique detached HEAD
abbreviated object name"
2013-07-26 22:05:06 -04:00
Brian Gernhardt
8642a1e68e git_prompt: Display head for simple rebase
based on git.git 1306321: "prompt: fix for simple rebase"
2013-07-26 22:05:06 -04:00
Brian Gernhardt
ec1d2e86c8 git_prompt: Add __fish_git_prompt_char_stateseparator
Unlike the rest of the __fish_git_prompt_char_* variables, it does not
have its own color because the most likely values are a space and
nothing.

based on git.git 15a54fb: prompt: introduce GIT_PS1_STATESEPARATOR
2013-07-26 22:05:06 -04:00
Brian Gernhardt
2a46b984cd git_prompt: show where rebase is at when stopped
Adds a progress indicator to the rebase messages. (e.g. |REBASE 2/5)

based on the git-prompt portion of git.git b71dc3e: "bash-prompt.sh:
show where rebase is at when stopped"
2013-07-26 22:05:06 -04:00
Brian Gernhardt
5a7b85adc7 git_prompt: use REVERT_HEAD
git revert was taught to revert multiple commits, and it stores it
branch information in REVERT_HEAD just like the other *_HEAD files.

based on git.git 3ee4452: bash: teach __git_ps1 about REVERT_HEAD
2013-07-26 22:05:06 -04:00