Mercurial > dotfiles
comparison .shell.d/99.mcfly.zsh @ 512:ea947b2b04a0
zsh: update mcfly support to 1d1d5892b0c8
| author | Augie Fackler <raf@durin42.com> |
|---|---|
| date | Sun, 21 Mar 2021 22:08:09 -0400 |
| parents | 55aa151f3567 |
| children |
comparison
equal
deleted
inserted
replaced
| 511:a6d9af3fdc50 | 512:ea947b2b04a0 |
|---|---|
| 26 # MCFLY_SESSION_ID is used by McFly internally to keep track of the commands from a particular terminal session. | 26 # MCFLY_SESSION_ID is used by McFly internally to keep track of the commands from a particular terminal session. |
| 27 export MCFLY_SESSION_ID=$(dd if=/dev/urandom bs=256 count=1 2> /dev/null | env LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 24) | 27 export MCFLY_SESSION_ID=$(dd if=/dev/urandom bs=256 count=1 2> /dev/null | env LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 24) |
| 28 | 28 |
| 29 # Find the binary | 29 # Find the binary |
| 30 MCFLY_PATH=${MCFLY_PATH:-$(which mcfly)} | 30 MCFLY_PATH=${MCFLY_PATH:-$(which mcfly)} |
| 31 if [[ -z "$MCFLY_PATH" || "$MCFLY_PATH" == "mcfly not found" ]]; then | |
| 32 echo "Cannot find the mcfly binary, please make sure that mcfly is in your path before sourcing mcfly.bash." | |
| 33 return 1 | |
| 34 fi | |
| 31 | 35 |
| 32 # Required for commented out mcfly search commands to work. | 36 # Required for commented out mcfly search commands to work. |
| 33 setopt interactive_comments # allow comments in interactive shells (like Bash does) | 37 setopt interactive_comments # allow comments in interactive shells (like Bash does) |
| 34 | 38 |
| 35 # McFly's temporary, per-session history file. | 39 # McFly's temporary, per-session history file. |
| 50 # Write history to $MCFLY_HISTORY. | 54 # Write history to $MCFLY_HISTORY. |
| 51 fc -W "${MCFLY_HISTORY}" | 55 fc -W "${MCFLY_HISTORY}" |
| 52 | 56 |
| 53 # Run mcfly with the saved code. It fill find the text of the last command in $MCFLY_HISTORY and save it to the database. | 57 # Run mcfly with the saved code. It fill find the text of the last command in $MCFLY_HISTORY and save it to the database. |
| 54 [ -n "$MCFLY_DEBUG" ] && echo "mcfly.zsh: Run mcfly add --exit ${exit_code}" | 58 [ -n "$MCFLY_DEBUG" ] && echo "mcfly.zsh: Run mcfly add --exit ${exit_code}" |
| 55 $MCFLY_PATH add --exit ${exit_code} | 59 $MCFLY_PATH --history_format zsh add --exit ${exit_code} |
| 56 return ${exit_code} # Restore the original exit code by returning it. | 60 return ${exit_code} # Restore the original exit code by returning it. |
| 57 } | 61 } |
| 58 precmd_functions+=(mcfly_prompt_command) | 62 precmd_functions+=(mcfly_prompt_command) |
| 59 | 63 |
| 60 # Cleanup $MCFLY_HISTORY tmp files on exit. | 64 # Cleanup $MCFLY_HISTORY tmp files on exit. |
| 69 mcfly-history-widget() { | 73 mcfly-history-widget() { |
| 70 () { | 74 () { |
| 71 echoti rmkx | 75 echoti rmkx |
| 72 exec </dev/tty | 76 exec </dev/tty |
| 73 local mcfly_output=$(mktemp -t mcfly.output.XXXXXXXX) | 77 local mcfly_output=$(mktemp -t mcfly.output.XXXXXXXX) |
| 74 $MCFLY_PATH search -o "${mcfly_output}" "${LBUFFER}" | 78 $MCFLY_PATH --history_format zsh search -o "${mcfly_output}" "${LBUFFER}" |
| 75 local mode=$(sed -n 1p $mcfly_output) | 79 echoti smkx |
| 76 local selected=$(sed 1d $mcfly_output) | 80 |
| 81 # Interpret commandline/run requests from McFly | |
| 82 while read -r key val; do | |
| 83 if [[ "$key" = "mode" ]]; then local mode="$val"; fi | |
| 84 if [[ "$key" = "commandline" ]]; then local commandline="$val"; fi | |
| 85 done < "${mcfly_output}" | |
| 77 rm -f $mcfly_output | 86 rm -f $mcfly_output |
| 78 echoti smkx | 87 |
| 79 if [[ -n $selected ]]; then | 88 if [[ -n $commandline ]]; then |
| 80 RBUFFER="" | 89 RBUFFER="" |
| 81 LBUFFER="${selected}" | 90 LBUFFER="${commandline}" |
| 82 fi | 91 fi |
| 83 if [[ "${mode}" == "run" ]]; then | 92 if [[ "${mode}" == "run" ]]; then |
| 84 zle accept-line | 93 zle accept-line |
| 85 fi | 94 fi |
| 86 zle redisplay | 95 zle redisplay |
