From 0cc3f71ce5d98f500c5603eb933dced5857540d4 Mon Sep 17 00:00:00 2001 From: PHO Date: Thu, 21 Apr 2016 18:17:05 +0900 Subject: [PATCH] Auto commit by The Sugar System. --- dot-files/_zshrc | 72 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/dot-files/_zshrc b/dot-files/_zshrc index 45ac9af..2bcc8af 100644 --- a/dot-files/_zshrc +++ b/dot-files/_zshrc @@ -4,10 +4,17 @@ bindkey -e stty -ixon ixany stty erase '^H' +# The following lines were added by compinstall +zstyle :compinstall filename "$HOME/.zshrc" + +autoload -U compinit +compinit +# End of lines added by compinstall + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z} r:|[/]=* r:|=*' zstyle ':completion:*' use-cache true -if [ -d "$HOME/.zfunc" ]; then +if [[ -d "$HOME/.zfunc" ]]; then fpath=($HOME/.zfunc $fpath) autoload -U ~/.zfunc/*(:t) function r() { @@ -18,7 +25,7 @@ if [ -d "$HOME/.zfunc" ]; then } fi -if [ -f "$HOME/.ssh/known_hosts" ]; then +if [[ -f "$HOME/.ssh/known_hosts" ]]; then _cache_hosts=(`perl -ne 'if (/^([a-zA-Z0-9.-]+)/) { print "$1\n";}' ~/.ssh/known_hosts`) fi @@ -74,15 +81,18 @@ else PROMPT=$_prompt_base fi -function preexec() { # Hook +autoload -U add-zsh-hook + +function _gnu_screen_preexec() { if { _we_are_in_gnu_screen } then # Set the window title of GNU Screen. local cmd=${1[(wr)^(*=*|sudo|nice|env|time|ssh|-*|[0-9]*)]} printf "\ek$cmd\e\\" fi } +add-zsh-hook preexec _gnu_screen_preexec -function precmd() { # Hook +function _dirinfo_precmd() { local dirinfo="$(print_directory_info $(pwd))" case $dirinfo in @@ -92,6 +102,7 @@ function precmd() { # Hook RPROMPT="%U%~%u %U($dirinfo)%u";; esac } +add-zsh-hook precmd _dirinfo_precmd function print_directory_info() { local absdir=$1 @@ -156,22 +167,26 @@ function ppkill() { ppgrep "${ppgrep_opts[@]}" | xargs kill "$@" } -function percol_select_history() { - local -a tac_cmd - +function find_tac_command() { if which gtac >&/dev/null; then - tac_cmd=("gtac") + echo "gtac" elif which tac >&/dev/null; then - tac_cmd=("tac") + echo "tac" else - tac_cmd=("cat") + echo "tail -r" fi +} + +function percol_select_history() { + local -a tac_cmd + tac_cmd=($(find_tac_command)) local selected selected=$("${tac_cmd[@]}" "$HISTFILE" | \ sed 's/^: [0-9]*:[0-9]*;//' | \ awk 'seen[$0] {next} {seen[$0]++; print}' | \ percol --match-method regex --query "$LBUFFER") + if [[ $? -eq 0 ]]; then BUFFER="$selected" CURSOR="$#BUFFER" # move cursor to the end of line @@ -190,6 +205,35 @@ HISTFILE="$HOME/.zhistory" HISTSIZE=6000000 SAVEHIST=6000000 +# Select directories with z(1) +if [[ -r "$HOME/sandbox/_misc/z/z.sh" ]]; then + source "$HOME/sandbox/_misc/z/z.sh" + + function percol_select_directory() { + local -a tac_cmd + tac_cmd=($(find_tac_command)) + + local selected + selected=$(_z -r 2>&1 | \ + "${tac_cmd[@]}" | \ + percol --query "$LBUFFER" | \ + sed -E 's/[^[:space:]]+[[:space:]]+//') + + if [[ $? -eq 0 ]]; then + cd "${selected}" + selected="" # Without this, zsh treats this variable as a + # candidate for a "named directory". + fi + + zle reset-prompt + } + + if which percol >&/dev/null; then + zle -N percol_select_directory + bindkey '\C-xd' percol_select_directory + fi +fi + function lv() { local -a lv_cmd @@ -276,14 +320,6 @@ function osname () { esac } -# The following lines were added by compinstall - -zstyle :compinstall filename "$HOME/.zshrc" - -autoload -U compinit -compinit -# End of lines added by compinstall - if _we_are_in_gnu_screen; then # When we are in a GNU Screen session... -- 2.40.0