Commit Graph

120 Commits (master)

Author SHA1 Message Date
Carlo Sala 2a109d30af feat(git): add escape hatch to enable async prompt 2024-10-08 20:41:58 +02:00
Carlo Sala 367e9381df
chore(git): fix typo 2024-09-23 17:32:44 +02:00
Carlo Sala 99e2c31484
feat(git): add `git_previous_branch` function
Closes #12538
2024-09-18 21:05:45 +02:00
Saravana J 33ac2ee30f
fix(git): update prefix map for modified files (#12674) 2024-09-15 08:17:43 +02:00
Marc Cornellà 59e8e028e1
fix(lib/git): turn off async prompt for zsh < 5.0.6
We removed this mitigation in 0c80a063 because of an assumption
that the issue had been fixed, but it looks like zsh < 5.0.6 has
other issues (see #12360), so we need to disable it for real.

Fixes #12360
2024-06-12 10:32:30 +02:00
Marc Cornellà 0c80a063c3 chore(async): reenable async prompt by default on zsh < 5.0.6 (#12358)
Fixes #12331
2024-04-22 10:59:34 +02:00
Marc Cornellà 1ed8d4b555
fix(git): turn off async prompt by default on zsh < 5.0.6 (#12331)
See https://github.com/ohmyzsh/ohmyzsh/issues/12331#issuecomment-2059460268
2024-04-17 20:21:18 +02:00
Marc Cornellà 0389310390
fix(lib/git): fix detection of function use in prompt
RPS1 and RPROMPT are not equivalent, though they have the same effect.
Added both to detect if `git_prompt_*` is used.

Fixes #12325
2024-04-05 07:38:36 +02:00
Carlo Sala 114b58ed4e
fix(git): disable locally `ksharrays`
Fixes #12321
2024-04-04 11:58:43 +02:00
Loïc Yhuel 04007a0e5d
feat(git): implement async completion for `git_prompt_status` (#12319)
This is important for themes using it, since it is usually a little slower than git_prompt_info.

Also two small fixes :
 - the handler for git_prompt_info was incorrectly named _omz_git_prompt_status
 - _defer_async_git_register was kept in precmd, there is no need to call it on each prompt
2024-04-03 21:32:16 +02:00
Marc Cornellà ec1afe9dd6
feat(git)!: enable async git prompt (now for real)
BREAKING CHANGE: the new async prompt feature will render prompt information
asyncronously and degrade nicely when the calls take too long to finish, as
the prompt will already be first drawn and interactive. This is
enabled by default for the git prompt and themes that use it (`git_prompt_info`).
If you find that it's not working for you, please open an issue if one is
not already opened, and see https://github.com/ohmyzsh/ohmyzsh#disable-async-git-prompt
for how to turn it off.
2024-04-03 20:09:19 +02:00
Marc Cornellà 06753e8146
fix(async): register the git prompt async handler correctly (#12267)
This fix conditionally registers the git prompt async handler only
if `git_prompt_info` is used anywhere in the prompt variables.

This is done in the proper order, so that the async request is
processed once the handler has been registered.

This fix also passes the return value of the previous command
to each of the async handlers, in case they are needed.
2024-03-09 18:29:53 +01:00
Carlo Sala 32d4389aa6
fix(git): disable temporarely async prompt 2024-03-07 17:17:27 +01:00
Marc Cornellà 083cc2c8e8
feat(async)!: implement async prompt API and apply to git prompt (#12257)
BREAKING CHANGE: the `git_prompt_info` prompt function has been
reworked by default to use the new async prompt feature. If you're
experiencing issues see #12257.

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
2024-03-07 14:39:05 +01:00
Banst 6dfc9b960f
feat(git): display tag in git-prompt when possible (#11318)
Co-authored-by: Marc Cornellà <hello@mcornella.com>
2022-11-08 09:34:13 +01:00
Marc Cornellà dfee71c773
Revert "fix(lib): don't return clean with `hide-dirty=1` in `parse_git_dirty`" (#10927) 2022-05-12 18:25:02 +02:00
Will LE 4674384d1a
fix(lib): don't return clean with `hide-dirty=1` in `parse_git_dirty` (#10897) 2022-05-12 11:31:00 +02:00
Marc Cornellà 304af0a577
fix(lib): quote % in `git_remote_status` 2022-01-03 13:50:50 +01:00
Marc Cornellà 428f815169
fix(lib): %-quote git prompt functions 2021-12-13 11:26:55 +01:00
Kevin Burke e86c6f5e7f
style: use `-n` flag in `head` and `tail` commands (#10391)
Co-authored-by: Marc Cornellà <hello@mcornella.com>
2021-11-09 09:04:10 +01:00
Pooya Vahidi 07cdd7a539
fix(lib): fix status exit code check in `git_prompt_status` (#10275) 2021-10-09 12:02:49 +02:00
Marc Cornellà 8b37f817c2 fix(lib): use -N syntax in `head` and `tail` to support Solaris (#6391)
Closes #6391

Co-authored-by: Sergey Mashkov <cy6erGn0m@gmail.com>
2021-01-16 18:59:24 +01:00
Seamile 88ffc2f666
fix(lib): mark changes as MODIFIED on 'MM' in `git_prompt_status` (#9552)
In the output of `git status -sb`, 'MM' indicates there are both added and modified changes.
This change marks that case as MODIFIED instead of ADDED.
2021-01-02 11:57:06 +01:00
Marc Cornellà 28265812f8 chore!: notify breaking change in `git_prompt_info`
BREAKING CHANGE: the git config option to skip running `git_prompt_info` has changed from `oh-my-zsh.hide-status` to `oh-my-zsh.hide-info` (#9188).
2020-12-10 20:48:40 +01:00
Bruno Borges 2f39c68ab0
feat(lib): show upstream branch in `git_prompt_info` (#9188)
Show the remote branch the local branch is tracking if `ZSH_THEME_GIT_SHOW_UPSTREAM`
is set, like so: `ZSH_THEME_GIT_SHOW_UPSTREAM=1`.

Co-authored-by: Marc Cornellà <marc.cornella@live.com>
2020-12-10 20:44:08 +01:00
Marc Cornellà 6e7b861675 lib: fix regex bug in git_prompt_status
Fixes #9326
2020-10-10 19:14:30 +02:00
Marc Cornellà 865f6572d5 Fix performance drop of iterating over lines and other stuff
- Fix 'STASHED' key and unsupported syntax in 5.0.2
- Optimise `if` statement to make it more idiomatic.
2020-10-09 13:44:50 +02:00
Billy Conn 45a954cb0f git_prompt_status now uses hash lookups instead of multiple greps 2020-10-09 13:24:37 +02:00
Michał Dębski 297238b739 lib: hide git_prompt_status when hide-status is set
Closes #4912
Closes #5137
Closes #8071
2020-10-09 13:14:44 +02:00
Robert Estelle 1c58a746af
lib: safety fix and speed-ups for git.zsh prompt functions (#7804) 2020-07-06 17:31:40 +02:00
Patrick Moore e606ac7051
Handle unset variables in various parts of the codebase (#8944)
DISABLE_UNTRACKED_FILES_DIRTY, DISABLE_AUTO_TITLE, GIT_STATUS_IGNORE_SUBMODULES are not set
Handle these variables not being set with conditional access.

If the user has set -u option to report attempts to use undeclared / unassigned variable, accessing the variables needs to be conditional.
2020-06-30 18:54:27 +02:00
Evan Chiu 1c300d3a76 lib: add git function to determine repository name (#4989)
Closes #4989

Co-authored-by: Marc Cornellà <marc.cornella@live.com>
2020-02-10 21:11:31 +01:00
Marc Cornellà 1546e1226a Fix badly resolved rebase conflict 2019-11-06 19:46:52 +01:00
Marc Cornellà b7e37cea90 Clean up ignore submodules logic in parse_git_dirty 2019-11-06 19:41:13 +01:00
Wang Guan 7cc3a32bff Add an option about git submodules to ignore
$GIT_STATUS_IGNORE_SUBMODULES can be used to specify handling of
submodules. It can be:
not set : ignore dirty submodules (this was default zsh behavior)
"git"   : do not use "--ignore-submodules" and let git choose,
          this obeys setting in .gitmodules
other   : comes into "--ignore-submodules=$GIT_STATUS_IGNORE_SUBMODULES"
2019-11-06 19:39:17 +01:00
Marc Cornellà 5911aea46c
lib: stop detecting git versions prior to 1.7.2
The 1.7.2 release was published in July 2010 [1]. It's about time to stop
supporting older versions.

Fixes #4583

[1] https://github.com/git/git/releases/tag/v1.7.2
2019-04-09 20:38:13 +02:00
Marc Cornellà f75d096c1a
lib: small change to git_compare_version
Fixes #7118
2018-09-08 21:35:03 +02:00
Jacopo De Simoi ccd02866f6 Fix git_commits_{ahead,before} when no upstream branch is defined (#6658)
If @{u} is not defined, git rev-list will give an error; redirect
to stderr the error and deal with this case in what follows.
2018-04-15 18:44:48 +02:00
Kimberly Zick 2b6c502aa5 Add match for `MM` (result of `git commit -p` on a single changed file) to git_prompt_status (#3632) 2018-01-22 19:14:05 -08:00
catull d792b1114c With zsh 5.4 a simple "local FLAGS" meant as an array must be explicitly declared so. This fix avoids the dreaded "parse_git_dirty:3: FLAGS: attempt to assign array value to non-array". (#6414) 2017-11-14 06:36:53 -08:00
Yuichi Tanikawa 27fff27253 Fix git_prompt_status() not showing ahead/behind/diverged status correctly (#5388) 2016-09-08 00:23:04 +02:00
Marc Cornellà 71201ffd67 git: output nothing when no commits ahead or behind
This fixes old git_commits_ahead behavior and changes git_commits_behind
to have the same behavior.

Fixes #5355
2016-09-05 11:22:48 +02:00
Steven 61981951b1 Updated git_commits_ahead function (#5247)
* Function wasn't returning correct value
* Updated underlying git command
* Kept echo command from previous function for backwards compatibility
* Kept function consistent with git_commits_behind
2016-08-01 17:48:46 +02:00
Steven 96a2092e37 lib/git.zsh: Added git_commits_behind function (#4450)
* Added git_commits_behind function
* Added 'command' to git_commits_behind function
* git_commits_behind code review changes
2016-07-15 11:05:39 +02:00
Aesop Wolf 69e1506ad9 Add git user profile functions for prompt display 2016-03-31 14:16:46 -07:00
Michele Bologna 87f8251388 Re-added $ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE
Re-added $ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE variable which was removed in 9f55213
2016-01-13 15:36:59 +01:00
Marc Cornellà 0842384987 Put `local var` declaration in its own line in lib/git.zsh
In places, the local statement will override the exit code and the written
command won't have the effect intended when it was written.

For example, when it's not inside a git repo the exit code won't be true,
but the local statement will make it true regardless. See #4708.
2015-12-17 18:37:49 +01:00
Andrew Janke 9f552130bd Move current_branch() from git plugin to core lib/git.zsh
Fixes #4085: core -> plugin dependency issue.
Rename it to git_current_branch for clarity that it's git-specific.
Update all plugins that were calling it to use new name.
Fix variable leaks by making more variables in lib/git.zsh local.
Have lib/git.zsh use [[ ]] instead of [ ] everywhere.
2015-12-14 20:28:37 -05:00
Michele Bologna 12e99b5334 fix indentation 2015-09-23 11:14:14 +02:00
Michele Bologna 5323954c98 Uniform git prompt equal remote
Uniform git prompt equal remote to all others prompts, setting the correct symbol
(if applicable) to $git_remote_status, instead of echoing it.

It also solves the problem pointed out in #3911
2015-09-23 10:52:24 +02:00