summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/functions.zsh4
-rw-r--r--lib/git.zsh8
-rw-r--r--lib/history.zsh55
3 files changed, 43 insertions, 24 deletions
diff --git a/lib/functions.zsh b/lib/functions.zsh
index f30653784..7410ae645 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -25,7 +25,9 @@ function open_command() {
case "$OSTYPE" in
darwin*) open_cmd='open' ;;
cygwin*) open_cmd='cygstart' ;;
- linux*) open_cmd='xdg-open' ;;
+ linux*) [[ $(uname -a) =~ "Microsoft" ]] && \
+ open_cmd='cmd.exe /c start' || \
+ open_cmd='xdg-open' ;;
msys*) open_cmd='start ""' ;;
*) echo "Platform $OSTYPE not supported"
return 1
diff --git a/lib/git.zsh b/lib/git.zsh
index 9b0f6e36f..b55b762d7 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -77,8 +77,8 @@ function git_current_branch() {
# Gets the number of commits ahead from remote
function git_commits_ahead() {
if command git rev-parse --git-dir &>/dev/null; then
- local commits="$(git rev-list --count @{upstream}..HEAD)"
- if [[ "$commits" != 0 ]]; then
+ local commits="$(git rev-list --count @{upstream}..HEAD 2>/dev/null)"
+ if [[ -n "$commits" && "$commits" != 0 ]]; then
echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$commits$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX"
fi
fi
@@ -87,8 +87,8 @@ function git_commits_ahead() {
# Gets the number of commits behind remote
function git_commits_behind() {
if command git rev-parse --git-dir &>/dev/null; then
- local commits="$(git rev-list --count HEAD..@{upstream})"
- if [[ "$commits" != 0 ]]; then
+ local commits="$(git rev-list --count HEAD..@{upstream} 2>/dev/null)"
+ if [[ -n "$commits" && "$commits" != 0 ]]; then
echo "$ZSH_THEME_GIT_COMMITS_BEHIND_PREFIX$commits$ZSH_THEME_GIT_COMMITS_BEHIND_SUFFIX"
fi
fi
diff --git a/lib/history.zsh b/lib/history.zsh
index 5de71c2d3..7d4e59d00 100644
--- a/lib/history.zsh
+++ b/lib/history.zsh
@@ -1,24 +1,41 @@
-## Command history configuration
-if [ -z "$HISTFILE" ]; then
- HISTFILE=$HOME/.zsh_history
-fi
+## History wrapper
+function omz_history {
+ # Delete the history file if `-c' argument provided.
+ # This won't affect the `history' command output until the next login.
+ zparseopts -E c=clear l=list
-HISTSIZE=10000
-SAVEHIST=10000
+ if [[ -n "$clear" ]]; then
+ # if -c provided, clobber the history file
+ echo -n >| "$HISTFILE"
+ echo >&2 History file deleted. Reload the session to see its effects.
+ elif [[ -n "$list" ]]; then
+ # if -l provided, run as if calling `fc' directly
+ builtin fc "$@"
+ else
+ # otherwise, call `fc -l 1` to show all available
+ # history (and pass additional parameters)
+ builtin fc "$@" -l 1
+ fi
+}
-# Show history
+# Timestamp format
case $HIST_STAMPS in
- "mm/dd/yyyy") alias history='fc -fl 1' ;;
- "dd.mm.yyyy") alias history='fc -El 1' ;;
- "yyyy-mm-dd") alias history='fc -il 1' ;;
- *) alias history='fc -l 1' ;;
+ "mm/dd/yyyy") alias history='omz_history -f' ;;
+ "dd.mm.yyyy") alias history='omz_history -E' ;;
+ "yyyy-mm-dd") alias history='omz_history -i' ;;
+ *) alias history='omz_history' ;;
esac
-setopt append_history
-setopt extended_history
-setopt hist_expire_dups_first
-setopt hist_ignore_dups # ignore duplication command history list
-setopt hist_ignore_space
-setopt hist_verify
-setopt inc_append_history
-setopt share_history # share command history data
+## History file configuration
+[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
+HISTSIZE=50000
+SAVEHIST=10000
+
+## History command configuration
+setopt extended_history # record timestamp of command in HISTFILE
+setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
+setopt hist_ignore_dups # ignore duplicated commands history list
+setopt hist_ignore_space # ignore commands that start with space
+setopt hist_verify # show command with history expansion to user before running it
+setopt inc_append_history # add commands to HISTFILE in order of execution
+setopt share_history # share command history data