Mercurial > dotfiles
annotate .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 |
rev | line source |
---|---|
351
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
1 # taken from https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/plugins/safe-paste/safe-paste.plugin.zsh |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
2 # Code from Mikael Magnusson: http://www.zsh.org/mla/users/2011/msg00367.html |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
3 # |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
4 # Requires xterm, urxvt, iTerm2 or any other terminal that supports bracketed |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
5 # paste mode as documented: http://www.xfree86.org/current/ctlseqs.html |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
6 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
7 # create a new keymap to use while pasting |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
8 bindkey -N paste |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
9 # make everything in this keymap call our custom widget |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
10 bindkey -R -M paste "^@"-"\M-^?" paste-insert |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
11 # these are the codes sent around the pasted text in bracketed |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
12 # paste mode. |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
13 # do the first one with both -M viins and -M vicmd in vi mode |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
14 bindkey '^[[200~' _start_paste |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
15 bindkey -M paste '^[[201~' _end_paste |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
16 # insert newlines rather than carriage returns when pasting newlines |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
17 bindkey -M paste -s '^M' '^J' |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
18 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
19 zle -N _start_paste |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
20 zle -N _end_paste |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
21 zle -N zle-line-init _zle_line_init |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
22 zle -N zle-line-finish _zle_line_finish |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
23 zle -N paste-insert _paste_insert |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
24 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
25 # switch the active keymap to paste mode |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
26 function _start_paste() { |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
27 bindkey -A paste main |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
28 } |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
29 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
30 # go back to our normal keymap, and insert all the pasted text in the |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
31 # command line. this has the nice effect of making the whole paste be |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
32 # a single undo/redo event. |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
33 function _end_paste() { |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
34 #use bindkey -v here with vi mode probably. maybe you want to track |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
35 #if you were in ins or cmd mode and restore the right one. |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
36 bindkey -e |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
37 LBUFFER+=$_paste_content |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
38 unset _paste_content |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
39 } |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
40 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
41 function _paste_insert() { |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
42 _paste_content+=$KEYS |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
43 } |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
44 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
45 function _zle_line_init() { |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
46 # Tell terminal to send escape codes around pastes. |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
47 [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004h' |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
48 } |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
49 |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
50 function _zle_line_finish() { |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
51 # Tell it to stop when we leave zle, so pasting in other programs |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
52 # doesn't get the ^[[200~ codes around the pasted text. |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
53 [[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004l' |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
54 } |
bef29d49d19f
safe-paste: adds support for bracketed paste mode to zsh
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
55 |