summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/completion.zsh5
-rw-r--r--lib/functions.zsh6
-rw-r--r--lib/git.zsh14
-rw-r--r--lib/history.zsh55
-rw-r--r--lib/misc.zsh4
5 files changed, 55 insertions, 29 deletions
diff --git a/lib/completion.zsh b/lib/completion.zsh
index bbd021656..c7db2eb7b 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -5,7 +5,7 @@ WORDCHARS=''
unsetopt menu_complete # do not autoselect the first completion entry
unsetopt flowcontrol
-setopt auto_menu # show completion menu on succesive tab press
+setopt auto_menu # show completion menu on successive tab press
setopt complete_in_word
setopt always_to_end
@@ -25,6 +25,9 @@ else
fi
unset CASE_SENSITIVE HYPHEN_INSENSITIVE
+# Complete . and .. special directories
+zstyle ':completion:*' special-dirs true
+
zstyle ':completion:*' list-colors ''
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
diff --git a/lib/functions.zsh b/lib/functions.zsh
index 9f11318d2..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
@@ -86,7 +88,7 @@ function default() {
}
#
-# Set enviroment variable "$1" to default value "$2" if "$1" is not yet defined.
+# Set environment variable "$1" to default value "$2" if "$1" is not yet defined.
#
# Arguments:
# 1. name - The env variable to set
diff --git a/lib/git.zsh b/lib/git.zsh
index f7eccb81d..b55b762d7 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -11,7 +11,7 @@ function git_prompt_info() {
# Checks if working tree is dirty
function parse_git_dirty() {
local STATUS=''
- local FLAGS
+ local -a FLAGS
FLAGS=('--porcelain')
if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
@@ -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
@@ -141,11 +141,15 @@ function git_prompt_status() {
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
+ elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
fi
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
+ elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
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
diff --git a/lib/misc.zsh b/lib/misc.zsh
index c81dab413..3052b7710 100644
--- a/lib/misc.zsh
+++ b/lib/misc.zsh
@@ -19,8 +19,8 @@ fi
setopt long_list_jobs
## pager
-export PAGER="less"
-export LESS="-R"
+env_default PAGER 'less'
+env_default LESS '-R'
## super user alias
alias _='sudo'