diff options
-rw-r--r-- | README.markdown | 2 | ||||
-rw-r--r-- | lib/directories.zsh | 1 | ||||
-rw-r--r-- | lib/key-bindings.zsh | 10 | ||||
-rw-r--r-- | lib/spectrum.zsh | 6 | ||||
-rw-r--r-- | lib/termsupport.zsh | 41 | ||||
-rw-r--r-- | plugins/common-aliases/common-aliases.plugin.zsh | 2 | ||||
-rw-r--r-- | plugins/composer/composer.plugin.zsh | 4 | ||||
-rw-r--r-- | plugins/extract/extract.plugin.zsh | 2 | ||||
-rw-r--r-- | plugins/git-flow/git-flow.plugin.zsh | 2 | ||||
-rw-r--r-- | plugins/history-substring-search/history-substring-search.plugin.zsh | 9 | ||||
-rwxr-xr-x | plugins/history-substring-search/update-from-upstream.zsh | 6 | ||||
-rw-r--r-- | plugins/mercurial/mercurial.plugin.zsh | 3 | ||||
-rw-r--r-- | plugins/web-search/web-search.plugin.zsh | 2 | ||||
-rw-r--r-- | plugins/zsh-navigation-tools/README.md | 3 | ||||
-rw-r--r-- | plugins/zsh-navigation-tools/n-list | 58 | ||||
-rw-r--r-- | plugins/zsh-navigation-tools/n-panelize | 11 |
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 "%{[00m%}" @@ -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 |