Mercurial > dotfiles
view .shell.d/99.safe-paste.zsh @ 378:20e47bc8eea9
hgrc: disable hg-git and hgsubversion
It hasn't been common for me to use either of these extensions for
some time, so just drop both of them from the main hgrc. Instead I'll
enable them as-needed in individual repositories.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Thu, 09 Jun 2011 20:20:04 -0500 |
parents | bef29d49d19f |
children |
line wrap: on
line source
# taken from https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/plugins/safe-paste/safe-paste.plugin.zsh # Code from Mikael Magnusson: http://www.zsh.org/mla/users/2011/msg00367.html # # Requires xterm, urxvt, iTerm2 or any other terminal that supports bracketed # paste mode as documented: http://www.xfree86.org/current/ctlseqs.html # create a new keymap to use while pasting bindkey -N paste # make everything in this keymap call our custom widget bindkey -R -M paste "^@"-"\M-^?" paste-insert # these are the codes sent around the pasted text in bracketed # paste mode. # do the first one with both -M viins and -M vicmd in vi mode bindkey '^[[200~' _start_paste bindkey -M paste '^[[201~' _end_paste # insert newlines rather than carriage returns when pasting newlines bindkey -M paste -s '^M' '^J' zle -N _start_paste zle -N _end_paste zle -N zle-line-init _zle_line_init zle -N zle-line-finish _zle_line_finish zle -N paste-insert _paste_insert # switch the active keymap to paste mode function _start_paste() { bindkey -A paste main } # go back to our normal keymap, and insert all the pasted text in the # command line. this has the nice effect of making the whole paste be # a single undo/redo event. function _end_paste() { #use bindkey -v here with vi mode probably. maybe you want to track #if you were in ins or cmd mode and restore the right one. bindkey -e LBUFFER+=$_paste_content unset _paste_content } function _paste_insert() { _paste_content+=$KEYS } function _zle_line_init() { # Tell terminal to send escape codes around pastes. [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004h' } function _zle_line_finish() { # Tell it to stop when we leave zle, so pasting in other programs # doesn't get the ^[[200~ codes around the pasted text. [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004l' }