X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=sugar.git;a=blobdiff_plain;f=dot-files%2F_zshrc;h=b995aef50d94b638569acf70d52bd9daff603982;hp=d800cc42c2d8694bd4d9918ac35178f1d7aa2961;hb=8d80c9c947c1dd49c46258f52aefef6272dbc9c2;hpb=43ac30729d07e5c4b514001092f107c5f92c923a diff --git a/dot-files/_zshrc b/dot-files/_zshrc index d800cc4..b995aef 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 @@ -60,6 +67,10 @@ function _we_are_in_ssh_session () { [[ -n "$SSH_CONNECTION" ]] } +function _we_are_in_emacs () { + [[ -n "$INSIDE_EMACS" ]] +} + _prompt_base='%B[%n@%m] %{%(?.$fg[green].$fg[red])%}%#%{$reset_color%}%b ' if ( _we_are_in_gnu_screen ); then # GNU Screen has a capability to set its window title by "ESC k @@ -70,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 @@ -88,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 @@ -152,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 @@ -186,6 +205,36 @@ 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 -r '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 + return 0 + } + + 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 @@ -197,6 +246,7 @@ function lv() { lv_cmd=("more") else echo >&2 "$0: no pager commands are found" + return 1 fi command "${lv_cmd[@]}" "$@" @@ -228,28 +278,29 @@ alias aria-emacs="ssh -f -X admin@aria.cielonegro.org emacsclient -c" alias pho-dev-boinc="ssh -f -X pho@pho.dev.office.ymir.co.jp env LANG=C /home/pho/var/BOINC/run_manager" if [ $(hostname) = "aria.cielonegro.org" ]; then - alias safari="open -a Safari" alias unstuff='open -a StuffIt\ Expander.app' alias pa='open -a NiseRingo.app' alias heboris='open /Applications/HeborisUEMac/exe/Heboris\ OpenGL.app' alias hengband='open ~/Applications/hengband*/Hengband*' - alias syssleep='sudo shutdown -s now' fi if [[ $(uname) = "Darwin" ]]; then + alias safari="open -a Safari" + alias ldd="otool -L" alias ls='ls -Fw' alias la='ls -aw' - alias l='ls -lw' - alias lls='ls -law' + alias l='ls -lhw' + alias lls='ls -lahw' - alias top='/usr/bin/top -X -o cpu' + #alias top='/usr/bin/top -X -o cpu' + alias top='/usr/bin/top -o cpu' else alias ls='ls -F' alias la='ls -a' - alias l='ls -l' - alias lls='ls -la' + alias l='ls -lh' + alias lls='ls -lah' fi function osname () { @@ -272,24 +323,17 @@ 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 +if _we_are_in_gnu_screen; then # When we are in a GNU Screen session... - if ( _we_are_in_ssh_session ); then + if _we_are_in_ssh_session; then # Propagate remote session's bells to the local one. screen -X vbell off fi else - if [ -e ".motd" ]; then - cat ".motd" + if _we_are_in_emacs; then + # Without this, Emacs' term mode has trouble with backspaces. + export TERM=vt100 fi # Run "fortune" if we aren't in a GNU Screen session.