X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=dot-files%2F_zshrc;h=acd4fb107b18c3bf913151bcbad6c8e2a83162ed;hb=a20932caf06c7aa54a1bbf9fec8d235b67ef9b82;hp=45ac9aff1c98f72aa3f9c0b4a89faf46d19bcc18;hpb=fcd004a4fb12f378fc35a857695347429ec1dfab;p=sugar.git diff --git a/dot-files/_zshrc b/dot-files/_zshrc index 45ac9af..acd4fb1 100644 --- a/dot-files/_zshrc +++ b/dot-files/_zshrc @@ -2,12 +2,19 @@ bindkey -e stty -ixon ixany -stty erase '^H' +#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,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 @@ -201,6 +246,7 @@ function lv() { lv_cmd=("more") else echo >&2 "$0: no pager commands are found" + return 1 fi command "${lv_cmd[@]}" "$@" @@ -231,29 +277,49 @@ alias w3mb="w3m -O UTF-8 -B" 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" +if [[ $(hostname) = "aria.cielonegro.org" ]]; then 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' + +elif [[ $(hostname) = "yukari.cielonegro.org" ]]; then + function safari () { + local -a args + for arg in $@; do + args=(${args[@]} $(printf %q "$arg")) + done + ssh kurumi open -a Safari ${args[@]} + } + function mfirefox () { + local -a args + for arg in $@; do + args=(${args[@]} $(printf %q "$arg")) + done + ssh kurumi open -a Firefox ${args[@]} + } + function mdock () { + ssh kurumi open -a Dock + } 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 () { @@ -276,13 +342,26 @@ function osname () { esac } -# The following lines were added by compinstall +function _start_gpg_agent () { + if ! which gpg-agent >&/dev/null; then + # gpg-agent is not present. + return + fi -zstyle :compinstall filename "$HOME/.zshrc" + if gpg-connect-agent /bye >&/dev/null; then + # gpg-agent is already running. + if [[ -f "${HOME}/.gpg-agent-info" ]]; then + . "${HOME}/.gpg-agent-info" + export GPG_AGENT_INFO + fi + else + # gpg-agent is not running yet. + eval $(gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info") + fi -autoload -U compinit -compinit -# End of lines added by compinstall + GPG_TTY=$(tty) + export GPG_TTY +} if _we_are_in_gnu_screen; then # When we are in a GNU Screen session... @@ -306,3 +385,5 @@ fi if which ssh-agent-manager >/dev/null 2>&1; then eval `ssh-agent-manager -s` fi + +_start_gpg_agent