summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.markdown2
-rw-r--r--lib/directories.zsh1
-rw-r--r--lib/key-bindings.zsh10
-rw-r--r--lib/spectrum.zsh6
-rw-r--r--lib/termsupport.zsh41
-rw-r--r--plugins/common-aliases/common-aliases.plugin.zsh2
-rw-r--r--plugins/composer/composer.plugin.zsh4
-rw-r--r--plugins/extract/extract.plugin.zsh2
-rw-r--r--plugins/git-flow/git-flow.plugin.zsh2
-rw-r--r--plugins/history-substring-search/history-substring-search.plugin.zsh9
-rwxr-xr-xplugins/history-substring-search/update-from-upstream.zsh6
-rw-r--r--plugins/mercurial/mercurial.plugin.zsh3
-rw-r--r--plugins/web-search/web-search.plugin.zsh2
-rw-r--r--plugins/zsh-navigation-tools/README.md3
-rw-r--r--plugins/zsh-navigation-tools/n-list58
-rw-r--r--plugins/zsh-navigation-tools/n-panelize11
16 files changed, 89 insertions, 73 deletions
diff --git a/README.markdown b/README.markdown
index 6007d6500..9d7210f77 100644
--- a/README.markdown
+++ b/README.markdown
@@ -104,7 +104,7 @@ The default location is `~/.oh-my-zsh` (hidden in your home directory)
If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this:
```shell
-export ZSH="~/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
+export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
```
#### Manual Installation
diff --git a/lib/directories.zsh b/lib/directories.zsh
index 3bffa9fd9..a50a692c8 100644
--- a/lib/directories.zsh
+++ b/lib/directories.zsh
@@ -8,6 +8,7 @@ alias -g ....='../../..'
alias -g .....='../../../..'
alias -g ......='../../../../..'
+alias -- -='cd -'
alias 1='cd -'
alias 2='cd -2'
alias 3='cd -3'
diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh
index eb2b58058..0e056dc72 100644
--- a/lib/key-bindings.zsh
+++ b/lib/key-bindings.zsh
@@ -27,11 +27,17 @@ if [[ "${terminfo[knp]}" != "" ]]; then
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
fi
+# start typing + [Up-Arrow] - fuzzy find history forward
if [[ "${terminfo[kcuu1]}" != "" ]]; then
- bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
+ autoload -U up-line-or-beginning-search
+ zle -N up-line-or-beginning-search
+ bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search
fi
+# start typing + [Down-Arrow] - fuzzy find history backward
if [[ "${terminfo[kcud1]}" != "" ]]; then
- bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
+ autoload -U down-line-or-beginning-search
+ zle -N down-line-or-beginning-search
+ bindkey "${terminfo[kcud1]}" down-line-or-beginning-search
fi
if [[ "${terminfo[khome]}" != "" ]]; then
diff --git a/lib/spectrum.zsh b/lib/spectrum.zsh
index b683aca29..87092d8ae 100644
--- a/lib/spectrum.zsh
+++ b/lib/spectrum.zsh
@@ -3,7 +3,7 @@
# P.C. Shyamshankar <sykora@lucentbeing.com>
# Copied from http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
-typeset -Ag FX FG BG
+typeset -AHg FX FG BG
FX=(
reset "%{%}"
@@ -25,13 +25,13 @@ ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab o
# Show all 256 colors with color number
function spectrum_ls() {
for code in {000..255}; do
- print -P -- "$code: %F{$code}$ZSH_SPECTRUM_TEXT%f"
+ print -P -- "$code: %{$FG[$code]%}$ZSH_SPECTRUM_TEXT%{$reset_color%}"
done
}
# Show all 256 colors where the background is set to specific color
function spectrum_bls() {
for code in {000..255}; do
- print -P -- "$BG[$code]$code: $ZSH_SPECTRUM_TEXT %{$reset_color%}"
+ print -P -- "$code: %{$BG[$code]%}$ZSH_SPECTRUM_TEXT%{$reset_color%}"
done
}
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index f11a7dd18..7cf15b0a0 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -16,25 +16,35 @@ function title {
# if it is set and empty, leave it as is
: ${2=$1}
- if [[ "$TERM" == screen* ]]; then
- print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
- elif [[ "$TERM" == xterm* ]] || [[ "$TERM" == putty* ]] || [[ "$TERM" == rxvt* ]] || [[ "$TERM" == ansi ]] || [[ "$TERM" == cygwin ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
- print -Pn "\e]2;$2:q\a" #set window name
- print -Pn "\e]1;$1:q\a" #set icon (=tab) name
- fi
+ case "$TERM" in
+ cygwin|xterm*|putty*|rxvt*|ansi)
+ print -Pn "\e]2;$2:q\a" # set window name
+ print -Pn "\e]1;$1:q\a" # set tab name
+ ;;
+ screen*)
+ print -Pn "\ek$1:q\e\\" # set screen hardstatus
+ ;;
+ *)
+ if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
+ print -Pn "\e]2;$2:q\a" # set window name
+ print -Pn "\e]1;$1:q\a" # set tab name
+ fi
+ ;;
+ esac
}
ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
# Avoid duplication of directory in terminals with independent dir display
-if [[ $TERM_PROGRAM == Apple_Terminal ]]; then
+if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then
ZSH_THEME_TERM_TITLE_IDLE="%n@%m"
fi
# Runs before showing the prompt
function omz_termsupport_precmd {
emulate -L zsh
- if [[ $DISABLE_AUTO_TITLE == true ]]; then
+
+ if [[ "$DISABLE_AUTO_TITLE" == true ]]; then
return
fi
@@ -44,12 +54,12 @@ function omz_termsupport_precmd {
# Runs before executing the command
function omz_termsupport_preexec {
emulate -L zsh
- if [[ $DISABLE_AUTO_TITLE == true ]]; then
+ setopt extended_glob
+
+ if [[ "$DISABLE_AUTO_TITLE" == true ]]; then
return
fi
- setopt extended_glob
-
# cmd name only, or if this is sudo or ssh, the next cmd
local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}
local LINE="${2:gs/%/%%}"
@@ -66,19 +76,18 @@ preexec_functions+=(omz_termsupport_preexec)
# With extra fixes to handle multibyte chars and non-UTF-8 locales
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
-
# Emits the control sequence to notify Terminal.app of the cwd
+ # Identifies the directory using a file: URI scheme, including
+ # the host name to disambiguate local vs. remote paths.
function update_terminalapp_cwd() {
emulate -L zsh
- # Identify the directory using a "file:" scheme URL, including
- # the host name to disambiguate local vs. remote paths.
# Percent-encode the pathname.
local URL_PATH="$(omz_urlencode -P $PWD)"
[[ $? != 0 ]] && return 1
- local PWD_URL="file://$HOST$URL_PATH"
+
# Undocumented Terminal.app-specific control sequence
- printf '\e]7;%s\a' $PWD_URL
+ printf '\e]7;%s\a' "file://$HOST$URL_PATH"
}
# Use a precmd hook instead of a chpwd hook to avoid contaminating output
diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh
index fc19d73c3..c7aafd8b8 100644
--- a/plugins/common-aliases/common-aliases.plugin.zsh
+++ b/plugins/common-aliases/common-aliases.plugin.zsh
@@ -52,7 +52,7 @@ alias mv='mv -i'
# zsh is able to auto-do some kungfoo
# depends on the SUFFIX :)
-if [ ${ZSH_VERSION//\./} -ge 420 ]; then
+if is-at-least 4.2.0; then
# open browser on urls
_browser_fts=(htm html de org net com at cx nl se dk dk php)
for ft in $_browser_fts ; do alias -s $ft=$BROWSER ; done
diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index 86f5be3d0..07eb1de88 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -7,11 +7,11 @@
# Composer basic command completion
_composer_get_command_list () {
- $_comp_command1 --no-ansi | sed "1,/Available commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
+ $_comp_command1 --no-ansi 2>/dev/null | sed "1,/Available commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }'
}
_composer_get_required_list () {
- $_comp_command1 show -s --no-ansi | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
+ $_comp_command1 show -s --no-ansi 2>/dev/null | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }'
}
_composer () {
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 690126ba6..5d0809e9a 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -52,7 +52,7 @@ function extract() {
(*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;;
- (*.zip|*.war|*.jar|*.sublime-package|*.ipsw) unzip "$1" -d $extract_dir ;;
+ (*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk) unzip "$1" -d $extract_dir ;;
(*.rar) unrar x -ad "$1" ;;
(*.7z) 7za x "$1" ;;
(*.deb)
diff --git a/plugins/git-flow/git-flow.plugin.zsh b/plugins/git-flow/git-flow.plugin.zsh
index 444440bcb..a8386cb19 100644
--- a/plugins/git-flow/git-flow.plugin.zsh
+++ b/plugins/git-flow/git-flow.plugin.zsh
@@ -6,7 +6,7 @@
# To achieve git-flow completion nirvana:
#
# 0. Update your zsh's git-completion module to the newest version.
-# From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD
+# From here. https://raw.githubusercontent.com/zsh-users/zsh/master/Completion/Unix/Command/_git
#
# 1. Install this file. Either:
#
diff --git a/plugins/history-substring-search/history-substring-search.plugin.zsh b/plugins/history-substring-search/history-substring-search.plugin.zsh
index 25fd3a2da..7883a65f3 100644
--- a/plugins/history-substring-search/history-substring-search.plugin.zsh
+++ b/plugins/history-substring-search/history-substring-search.plugin.zsh
@@ -13,11 +13,14 @@ fi
# Bind terminal-specific up and down keys
-
+# Bind in both emacs and vi modes so it works in both, and is not
+# sensitive to whether this is loaded before or after the vi-mode plugin
if [[ -n "$terminfo[kcuu1]" ]]; then
- bindkey "$terminfo[kcuu1]" history-substring-search-up
+ bindkey -M emacs "$terminfo[kcuu1]" history-substring-search-up
+ bindkey -M viins "$terminfo[kcuu1]" history-substring-search-up
fi
if [[ -n "$terminfo[kcud1]" ]]; then
- bindkey "$terminfo[kcud1]" history-substring-search-down
+ bindkey -M emacs "$terminfo[kcud1]" history-substring-search-down
+ bindkey -M viins "$terminfo[kcud1]" history-substring-search-down
fi
diff --git a/plugins/history-substring-search/update-from-upstream.zsh b/plugins/history-substring-search/update-from-upstream.zsh
index 6e6cca5d5..81e1942a5 100755
--- a/plugins/history-substring-search/update-from-upstream.zsh
+++ b/plugins/history-substring-search/update-from-upstream.zsh
@@ -76,10 +76,12 @@ cat >> $plugin_basename.plugin.zsh <<EOF
# Bind terminal-specific up and down keys
if [[ -n "\$terminfo[kcuu1]" ]]; then
- bindkey "\$terminfo[kcuu1]" history-substring-search-up
+ bindkey -M emacs "\$terminfo[kcuu1]" history-substring-search-up
+ bindkey -M viins "\$terminfo[kcuu1]" history-substring-search-up
fi
if [[ -n "\$terminfo[kcud1]" ]]; then
- bindkey "\$terminfo[kcud1]" history-substring-search-down
+ bindkey -M emacs "\$terminfo[kcud1]" history-substring-search-down
+ bindkey -M viins "\$terminfo[kcud1]" history-substring-search-down
fi
EOF
diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
index 86200ccf6..3ae59496e 100644
--- a/plugins/mercurial/mercurial.plugin.zsh
+++ b/plugins/mercurial/mercurial.plugin.zsh
@@ -14,8 +14,7 @@ alias hgo='hg outgoing'
alias hgp='hg push'
alias hgs='hg status'
alias hgsl='hg log --limit 20 --template "{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n" '
-# this is the 'git commit --amend' equivalent
-alias hgca='hg qimport -r tip ; hg qrefresh -e ; hg qfinish tip'
+alias hgca='hg commit --amend'
# list unresolved files (since hg does not list unmerged files in the status command)
alias hgun='hg resolve --list'
diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index 369a0e680..d3bf97d75 100644
--- a/plugins/web-search/web-search.plugin.zsh
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -13,6 +13,7 @@ function web_search() {
yandex "https://yandex.ru/yandsearch?text="
github "https://github.com/search?q="
baidu "https://www.baidu.com/s?wd="
+ ecosia "https://www.ecosia.org/search?q="
)
# check whether the search engine is supported
@@ -43,6 +44,7 @@ alias ddg='web_search duckduckgo'
alias yandex='web_search yandex'
alias github='web_search github'
alias baidu='web_search baidu'
+alias ecosia='web_search ecosia'
#add your own !bang searches here
alias wiki='web_search duckduckgo \!w'
diff --git a/plugins/zsh-navigation-tools/README.md b/plugins/zsh-navigation-tools/README.md
index 670a85ece..630b2e840 100644
--- a/plugins/zsh-navigation-tools/README.md
+++ b/plugins/zsh-navigation-tools/README.md
@@ -105,8 +105,7 @@ colorize output of the tools, via their config files (check out e.g. n-cd.conf,
it uses this).
## Performance
-ZNT are fastest with Zsh before 5.0.8 and starting from 5.2 (the version yet to
-be released).
+ZNT are fastest with Zsh before 5.0.8 and starting from 5.2
vim:filetype=conf
diff --git a/plugins/zsh-navigation-tools/n-list b/plugins/zsh-navigation-tools/n-list
index 26431a0d9..d13e048bf 100644
--- a/plugins/zsh-navigation-tools/n-list
+++ b/plugins/zsh-navigation-tools/n-list
@@ -116,15 +116,15 @@ _nlist_setup_user_vars() {
fi
}
-_nlist_coloring_list_into_col_list() {
+_nlist_colorify_disp_list() {
local col=$'\x1b[00;34m' reset=$'\x1b[0m'
[ -n "$NLIST_COLORING_COLOR" ] && col="$NLIST_COLORING_COLOR"
[ -n "$NLIST_COLORING_END_COLOR" ] && reset="$NLIST_COLORING_END_COLOR"
if [ "$NLIST_COLORING_MATCH_MULTIPLE" -eq 1 ]; then
- col_list=( "${(@)list//(#mi)$~NLIST_COLORING_PATTERN/$col${MATCH}$reset}" )
+ disp_list=( "${(@)disp_list//(#mi)$~NLIST_COLORING_PATTERN/$col${MATCH}$reset}" )
else
- col_list=( "${(@)list/(#mi)$~NLIST_COLORING_PATTERN/$col${MATCH}$reset}" )
+ disp_list=( "${(@)disp_list/(#mi)$~NLIST_COLORING_PATTERN/$col${MATCH}$reset}" )
fi
}
@@ -154,7 +154,7 @@ integer inner_width=term_width-3
integer page_height=inner_height
integer page_width=inner_width
-typeset -a list col_list disp_list
+typeset -a list disp_list
integer last_element=$#
local action
local final_key
@@ -224,19 +224,17 @@ zcurses timeout main -1
key=""
keypad=""
-list=( "$@" )
-last_element="$#list"
+# This loop makes script faster on some Zsh's (e.g. 5.0.8)
+repeat 1; do
+ list=( "$@" )
+done
-integer is_colored=0
-if [[ -z "$NLIST_SEARCH_BUFFER" && -n "$NLIST_COLORING_PATTERN" ]]; then
- is_colored=1
- _nlist_coloring_list_into_col_list
-fi
+last_element="$#list"
while (( 1 )); do
# Do searching (filtering with string)
if [ -n "$NLIST_SEARCH_BUFFER" ]; then
- # Compute new list, col_list ?
+ # Compute new list?
if [[ "$NLIST_SEARCH_BUFFER" != "$prev_search_buffer" || "$NLIST_IS_UNIQ_MODE" -ne "$prev_uniq_mode" ]]; then
prev_search_buffer="$NLIST_SEARCH_BUFFER"
prev_uniq_mode="$NLIST_IS_UNIQ_MODE"
@@ -290,7 +288,7 @@ while (( 1 )); do
disp_list=( "${(@)disp_list//(#mi)($~colsearch_pattern)/$red${MATCH}$reset}" )
fi
- # We have display list, lets replace newlines with "\n" when needed (1/3)
+ # We have display list, lets replace newlines with "\n" when needed (1/2)
[ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
fi
@@ -302,7 +300,7 @@ while (( 1 )); do
# There is no search, but there was in previous loop
# OR
# Uniq mode was entered or left out
- # -> compute new list (maybe also col_list)
+ # -> compute new list
if [[ -n "$prev_search_buffer" || "$NLIST_IS_UNIQ_MODE" -ne "$prev_uniq_mode" ]]; then
prev_search_buffer=""
prev_uniq_mode="$NLIST_IS_UNIQ_MODE"
@@ -322,13 +320,6 @@ while (( 1 )); do
# Remove duplicates when in uniq mode
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && typeset -U list
- # Apply coloring pattern (when not with search query)
- is_colored=0
- if [ -n "$NLIST_COLORING_PATTERN" ]; then
- is_colored=1
- _nlist_coloring_list_into_col_list
- fi
-
last_element="$#list"
# Called after processing list
_nlist_verify_vars
@@ -340,22 +331,14 @@ while (( 1 )); do
integer end_idx=$(( NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN + page_height - 1 ))
[ "$end_idx" -gt "$last_element" ] && end_idx=last_element
- if [ "$is_colored" -eq 0 ]; then
- if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
- prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
- disp_list=( "${(@)list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
+ if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
+ prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
+ disp_list=( "${(@)list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
- # We have display list, lets replace newlines with "\n" when needed (2/3)
- [ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
- fi
- else
- if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
- prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
- disp_list=( "${(@)col_list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
+ [ -n "$NLIST_COLORING_PATTERN" ] && _nlist_colorify_disp_list
- # We have display list, lets replace newlines with "\n" when needed (3/3)
- [ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
- fi
+ # We have display list, lets replace newlines with "\n" when needed (2/2)
+ [ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
fi
# Output the list
@@ -380,6 +363,11 @@ while (( 1 )); do
fi
zcurses border main
+
+ local top_msg="${(C)ZSH_NAME} $ZSH_VERSION, shell level $SHLVL, $USER"
+ zcurses move main 0 $(( term_width / 2 - $#top_msg / 2 ))
+ zcurses string main $top_msg
+
zcurses refresh main inner
zcurses move main $(( term_height - 1 - 1 )) $(( status_msg_strlen + 2 ))
diff --git a/plugins/zsh-navigation-tools/n-panelize b/plugins/zsh-navigation-tools/n-panelize
index a70565c79..01d01cb9e 100644
--- a/plugins/zsh-navigation-tools/n-panelize
+++ b/plugins/zsh-navigation-tools/n-panelize
@@ -32,7 +32,11 @@ if [ -t 0 ]; then
return 1
fi
- list=( `"$@"` )
+ # This loop makes script faster on some Zsh's (e.g. 5.0.8)
+ repeat 1; do
+ list=( `"$@"` )
+ done
+
# TODO: $? doesn't reach user
[ "$?" -eq 127 ] && return $?
else
@@ -42,7 +46,10 @@ else
return 1
fi
- list=( "${(@f)"$(<&0)"}" )
+ # This loop makes script faster on some Zsh's (e.g. 5.0.8)
+ repeat 1; do
+ list=( "${(@f)"$(<&0)"}" )
+ done
if [[ ! -c /dev/tty ]]; then
exec <&2