aboutsummaryrefslogtreecommitdiff
path: root/Editor/vim
diff options
context:
space:
mode:
Diffstat (limited to 'Editor/vim')
-rw-r--r--Editor/vim/boxdraw/bdua2b.pl91
-rw-r--r--Editor/vim/boxdraw/bdub2a.pl30
-rw-r--r--Editor/vim/boxdraw/boxdraw.txt164
-rw-r--r--Editor/vim/boxdraw/boxdraw.vim291
-rw-r--r--Editor/vim/boxdraw/outline.pl74
-rw-r--r--Editor/vim/boxdraw/sampler.txt13
m---------Editor/vim/bundle/Vundle.vim0
m---------Editor/vim/bundle/syntastic0
m---------Editor/vim/bundle/ultisnips0
m---------Editor/vim/bundle/vim-snippets0
m---------Editor/vim/bundle/vim-surround0
-rw-r--r--Editor/vim/doc/DrawIt.txt489
l---------Editor/vim/doc/imaps.txt.gz1
l---------Editor/vim/doc/latex-suite-quickstart.txt.gz1
l---------Editor/vim/doc/latex-suite.txt.gz1
l---------Editor/vim/doc/latexhelp.txt.gz1
-rw-r--r--Editor/vim/doc/surround.txt205
-rw-r--r--Editor/vim/doc/tags56
-rw-r--r--Editor/vim/filetype.vim4
-rw-r--r--Editor/vim/plugin/cecutil.vim536
-rw-r--r--Editor/vim/plugin/surround.vim588
21 files changed, 0 insertions, 2545 deletions
diff --git a/Editor/vim/boxdraw/bdua2b.pl b/Editor/vim/boxdraw/bdua2b.pl
deleted file mode 100644
index 2e94b9a..0000000
--- a/Editor/vim/boxdraw/bdua2b.pl
+++ /dev/null
@@ -1,91 +0,0 @@
-# Convert +-| style drawings into utf characters
-# BoxDraw-unicode-ascii to box
-# 2003-11-24 10:12:22 created by nsg
-# 2003-11-25 13:16:17 renamed and small fix in "intelligence"
-# 2004-06-18 14:18:11 boxsets
-# 2004-06-21 21:41:30 hex input codes
-use strict;
-use utf8;
-use 5.8.0;
-use Getopt::Std;
-
-our (
- $opt_s, # boxset 's', 'd', 'v' or 'h'
- $opt_x, # convert hex digits into appropriate bd characters
- $opt_t, # ternary codes ' ' .. 'p'
-);
-getopts("s:xt");
-$opt_s||='s';
-
-my $o_utf8='--0251--001459--50585a----------0202----0c1c----525e------------51--51--53--5f--54--60------------------------------------------00185c--003468------------------1024----2c3c--------------------56--62--65--6b--------------------------------------------------505b5d----------506769----------5561------------646a------------57--63----------66--6c------------------------------------------------------------------01';
-
-binmode (STDOUT, ":utf8");
-my %boxset=(
-# 1|.,'}\u{25',"1 (_2 ]\ o_utf8) {~ 4#.2*#:i.16
- 's'=>" \x{2502}\x{2500}\x{2514}\x{2502}\x{2502}\x{250c}\x{251c}\x{2500}\x{2518}\x{2500}\x{2534}\x{2510}\x{2524}\x{252c}\x{253c}\n",
- 'd'=>" \x{2551}\x{2550}\x{255a}\x{2551}\x{2551}\x{2554}\x{2560}\x{2550}\x{255d}\x{2550}\x{2569}\x{2557}\x{2563}\x{2566}\x{256c}\n",
- 'h'=>" \x{2502}\x{2550}\x{2558}\x{2502}\x{2502}\x{2552}\x{255e}\x{2550}\x{255b}\x{2550}\x{2567}\x{2555}\x{2561}\x{2564}\x{256a}\n",
- 'v'=>" \x{2551}\x{2500}\x{2559}\x{2551}\x{2551}\x{2553}\x{255f}\x{2500}\x{255c}\x{2500}\x{2568}\x{2556}\x{2562}\x{2565}\x{256b}\n",
-);
-
-my $BOX=$boxset{$opt_s} || $boxset{'s'};
-
-my $prev='';
-my $pprev='';
-while(<STDIN>) {
- process_line();
-}
-process_line();
-
-sub process_line
-{
- my $out='';
- for(my $i=0; $i<length($prev); ++$i) {
- my $code=0;
- my $c=substr($prev,$i,1);
- if( $opt_x ) {
- $code=0;
- $code=hex($c) if $c=~/[[:xdigit:]]/;
- } elsif( $opt_t ) {
- $code=0;
- if( ord($c)>32 ) {
- $c=ord($c)-32;
- for(0..3){$code =($code>>2)+(($c%3)<<6); $c=int($c/3);}
- $c=chr(hex('25'.substr($o_utf8, $code*2,2)));
- }
- $code=0;
- } else {
- if( $c=~/[-+\|]/ ) {
- $code |= 1 if substr($pprev,$i ,1)=~/[\|+]/ ;
- $code |= 2 if substr($prev ,$i+1,1)=~/[-+]/ ;
- $code |= 4 if substr($_ ,$i ,1)=~/[\|+]/ ;
- $code |= 8 if substr($prev ,$i-1,1)=~/[-+]/ ;
-
- $code = 10 if $code && '-' eq $c;
- $code = 5 if $code && '|' eq $c;
- }
- }
- $out.=$code?substr($BOX,$code,1):$c;
- }
- print $out;
- $pprev=$prev;
- $prev=$_;
-}
-
-#
-#
-# 0001 02
-# 0010 00
-# 0011 14
-# 0100 02
-# 0101 02
-# 0110 0c
-# 0111 1c
-# 1000 00
-# 1001 18
-# 1010 00
-# 1011 34
-# 1100 10
-# 1101 24
-# 1110 2c
-# 1111 3c
diff --git a/Editor/vim/boxdraw/bdub2a.pl b/Editor/vim/boxdraw/bdub2a.pl
deleted file mode 100644
index 4482923..0000000
--- a/Editor/vim/boxdraw/bdub2a.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# Convert +-| style drawings into utf characters
-# BoxDraw-unicode-box to ascii
-# 2003-11-25 12:48:17 -- created by nsg
-
-use 5.8.0;
-use strict;
-use utf8;
-# binmode (STDOUT, ":utf8"); # incompatible with perl 5.6.1
-# binmode (STDIN, ":utf8"); # incompatible with perl 5.6.1
-
-while(<STDIN>) {
- my $l=length;
- tr/┌┬┐╓╥╖╒╤╕╔╦╗├┼┤╟╫╢╞╪╡╠╬╣└┴┘╙╨╜╘╧╛╚╩╝/++++++++++++++++++++++++++++++++++++/;
- tr/═─│║/\-\-\|\|/;
- printf "%03d ",$l;
- print ;
-}
-
-# corners/splits:
-# ┌┬┐╓╥╖╒╤╕╔╦╗ 6ec
-# ├┼┤╟╫╢╞╪╡╠╬╣ 7fd
-# └┴┘╙╨╜╘╧╛╚╩╝ 3b9
-# round corners:
-# 256d 256e
-# 2570 256f
-# horizontal
-# ═ ─
-# vertical
-# │ ║
-
diff --git a/Editor/vim/boxdraw/boxdraw.txt b/Editor/vim/boxdraw/boxdraw.txt
deleted file mode 100644
index b821a43..0000000
--- a/Editor/vim/boxdraw/boxdraw.txt
+++ /dev/null
@@ -1,164 +0,0 @@
-Summary
--------
- * Draw diagrams and tables using "real box drawing characters" (AKA ANSI
-art).
- * Move rectangular/linear blocks of text around.
- * Trace box-drawing typeset diagrams -- follow the lines, etc.
-
-Detailed description
---------------------
-These scripts facilitate drawing simple 'ANSI' graphic containing box
-drawing characters (not just '+', '-' and '|', but REAL box drawing
-characters). It can be useful to draw diagrams and fancy tables (at
-least, I use it this way).
-
-Upon sourcing the script defines several macros:
-
-<shift+arrow> -- moves cursor in specified direction leaving trail of
-box drawing characters, making all joins and crossings.
-g+<arrow> -- follow line of boxdrawing characters until it reaches
-intersection or ends.
-<shift+arrow> in visual mode -- move selected rectangular block in
-specified direction.
-\e -- ends box drawing mode (unmap shift+arrows macros and restore
-virtualedit value)
-\b -- restarts box drawing (map shift+arrows macros and set virtual
- edit=all)
-\s -- selects 'single-line' boxdrawing characters
-\d -- selects 'double-line' boxdrawing characters
-\a -- convert all characters in selection into ascii '+', '-', '|' (utf8
- only, not implemented)
-("\" prefix may be changed by changing mapleader variable, see :h mapleader)
-
-When rectangular block is selected, it can be moved around using
-<shift-arrow> keys. Unfortunately, as of version 6.1 multibyte
-characters and rectangular blocks do not live together too good, so this
-feature is experimental.
-
-When line block is selected, <shift-up> and <shift-down> moves it up or down
-nondestructively, <shift-left> decreases indent and <shift-up> increases
-indent.
-
-Currently box drawing is supported for utf8 and cp437 (DOS) encodings.
-
-Script does not use any "weird" box drawing characters from unicode set
-that are not present in, say, cp437. So, it is safe to save utf-8 file
-in any single byte encoding that contains regular single box drawing
-characters.
-This script also contains mapping that converts all boxdrawing
-characters in current selection into ascii '+', '-', '|'.
-
-If vim encoding is single byte, this script assumes cp437 (DOS). Most
-encodings have boxdrawing characters at the same place, however, some
-(notably, koi8-r) have them in different code postions.
-If you want to use it with encoding that contains such
-characters in diferent place, please drop me a note -- I will be happy
-to add support for that codepage too.
-
-To help you determine which boxdrawing characters are suppored by your
-terminal I have included file sampler.txt. Just type it (or cat it) on
-the termianal and encoding that labels the block that looks "right" will
-be your supported encoding.
-
-Note for PuTTY users
---------------------
-
-It turns out that PuTTY does not translate Shift+Arrow combination into
-X key code (like xterm does), so mappings will not work for this
-terminal. I have modified initialization script to use <arrows> instead
-of <shift>+<arrows> in Unix environment.
-
-Perl scripts
-------------
-
-Some box-drawing related procedures are more naturally done with
-external scripts. These scripts take ascii standard input and produce
-utf8 encoded standard output.
-
-bdua2b.pl -- converts regular '+-|'-style drawing into single-line utf8
- boxdrawing. This script has does not just blindly replace characters,
- but instead looks to the neighbourhood and chooses boxdrawing
- character that fits best. Use this script as a filter to convert
- existing ascii drawings.
- Option -ss selects single border characters, -sd -- double border,
- -sh -- single vertical double horizontal, -sv single horizontal double
- vertical.
-
-outline.pl -- outlines groups of similar characters in the input with
- boxdrawing characters. Option -d makes output twice as wide, options
- -s* select boxdrawing flavor as in previous script.
- For example,
-
- aaaacc
- abbcc
- ccbbc
- cccb
-
-will be converted into
-
- ┌───┬─┐
- │┌─┬┘┌┘
- ├┴┐└┐│
- │ └┐├┘
- └──┴┘
-
-or
-
- ┌───────┬───┐
- │ ┌───┬─┘ ┌─┘
- ├─┴─┐ └─┐ │
- │ └─┐ ├─┘
- └─────┴─┘
-
-
-Both scripts were tested with ActivePerl 5.6.1.
-
-Plans:
-------
-* Support double boxes in a cleaner way.
-
-Installation
-------------
-Copy boxdraw.vim to the place where you normally keep vim scripts (e.g. ~/.vim
-or c:\vim\vimfiles) and source it every time you want to draw a diagram or nice
-table.
-
-You may wish also to add this to your menu by adding a line to your .gvimrc
-(_gvimrc) file (use actual path to boxdraw.vim):
-:menu Tools.Bo&x\ Draw :so ~/.vim/boxdraw.vim<CR>
-
-Environment
------------
-I run Windows and use boxdraw.vim in gvim (it supports utf-8 very
-nicely) and bd-single in vim (its support of utf-8 is kind of unclear
-for me). Both major Windows monospaced fonts (Courier New and Lucida
-Console) support wide range of Unicode characters, including box
-drawing.
-
-Why use box drawing characters?
--------------------------------
-These characters are in Unicode standard for compatibility with wide
-range of existing 8-bit encodings that have them. The wording of Unicode
-standard discourages usage of such characters, other than for the
-purpose of converting between encodigns and storage of legacy data.
-Having said all that I found that sometimes a picture, even crude and
-primitive, is worth pages of explanations. Just about the only way to
-include picture in source code is to use ascii or "ansi" art. Ascii is
-more compatible, but "ansi" looks way better. Since I have to use
-Unicode to include cyrillic characters in comments anyway, I decided to
-stop on "ansi" art as a format of choice for in-source drawings.
-
-Author
-------
-Andrew Nikitin <nsg21@hotmail.com>
-
-History
--------
-2002-01-09 -- v0.0 -- initial upload, single boxes in utf-8 encoding
-2002-01-10 -- v0.1 -- double boxes
-2002-01-30 -- v0.2 -- single-byte, box->ascii conversion
-2003-11-24 -- v0.3 -- perl scripts + some rectangular block movements
-2004-06-18 -- v0.4 -- following the lines, updated perl scripts
-2004-11-26 -- v1.0 -- combined single-byte and utf8 versions, included
-sampler.txt to help determine encoding
-2008-12-17 -- v1.1 -- special processing for line-block movements, changed cabbr for perl
diff --git a/Editor/vim/boxdraw/boxdraw.vim b/Editor/vim/boxdraw/boxdraw.vim
deleted file mode 100644
index 284232f..0000000
--- a/Editor/vim/boxdraw/boxdraw.vim
+++ /dev/null
@@ -1,291 +0,0 @@
-" Box drawing module for Vim 6.0
-" (C) Andrew Nikitin, 2002
-" 2002-01-07 -- created by nsg
-" 2002-01-08 -- first box drawing (single only)
-" 2002-01-09 -- (00:42) fixed col(".") bug (note vim bug k"tylj does not retu)
-" 2002-01-09 -- optimize
-" 2002-01-10 -- double boxes
-" 2002-01-16 -- use script-local var and access function instead of global
-" 2002-01-30 -- ,a mapping (box->ascii conversion)
-" 2003-11-10 -- implemented MB avoiding "number Ctl-V"
-" 2004-06-18 -- fixed ToAscii so it replaces "─"; trace path (g+arrow)
-" 2004-06-23 -- merged single-byte and utf-8 support in one file
-" 2004-06-30 -- do not use shift+arrows unless in win32
-" 2008-12-17 -- special processing for line-block movements, changed cabbr for
-" perl
-
-
-let s:o_utf8='--0251--001459--50585a----------0202----0c1c----525e------------51--51--53--5f--54--60------------------------------------------00185c--003468------------------1024----2c3c--------------------56--62--65--6b--------------------------------------------------505b5d----------506769----------5561------------646a------------57--63----------66--6c------------------------------------------------------------------01'
-let s:i_utf8='44cc11------------------14------50------05------41------15--------------51--------------54--------------45--------------55--------------------------------------88221824289060a009060a81428219262a9162a29864a889468a9966aa14504105------40010410'
-let s:o_cp437='--b3ba--c4c0d3--cdd4c8----------b3b3----dac3----d5c6------------ba--ba--d6--c7--c9--cc------------------------------------------c4d9bd--c4c1d0------------------bfb4----c2c5--------------------b7--b6--d2--d7--------------------------------------------------cdbebc----------cdcfca----------b8b5------------d1d8------------bb--b9----------cb--ce'
-let s:i_cp437='----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------115191626090a222a08242815005455415445519260a288aa82a88aa894698640609182466994114'
-
-let s:scriptfile=expand("<sfile>:h")
-
-"
-" Activate mode. Assigned to ,b macro.
-"
-fu! <SID>S()
- if has("gui_running")
- " se enc=utf8
- en
- let s:ve=&ve
- setl ve=all
- " Note that typical terminal emulator program (Putty, in particular) does
- " not support Shift arrows too good. You will, probably, have to redefines
- " those to, say,
- " ,<Up> etc.
- if has("win32")
- " Under Windows Shift+Arrows works quite smooth, unlike most terminals
- nm <S-Up> :call <SID>M(1,'k')<CR>
- nm <S-Down> :call <SID>M(16,'j')<CR>
- nm <S-Left> :call <SID>M(64,'h')<CR>
- nm <S-Right> :call <SID>M(4,'l')<CR>
- nm g<Up> :call <SID>G(0)<CR>
- nm g<Right> :call <SID>G(1)<CR>
- nm g<Down> :call <SID>G(2)<CR>
- nm g<Left> :call <SID>G(3)<CR>
- vm <S-Up> <esc>:call <SID>MB('k')<CR>
- vm <S-Down> <esc>:call <SID>MB('j')<CR>
- vm <S-Left> <esc>:call <SID>MB('h')<CR>
- vm <S-Right> <esc>:call <SID>MB('l')<CR>
- else
- nm <Up> :call <SID>M(1,'k')<CR>
- nm <Down> :call <SID>M(16,'j')<CR>
- nm <Left> :call <SID>M(64,'h')<CR>
- nm <Right> :call <SID>M(4,'l')<CR>
- nm g<Up> :call <SID>G(0)<CR>
- nm g<Right> :call <SID>G(1)<CR>
- nm g<Down> :call <SID>G(2)<CR>
- nm g<Left> :call <SID>G(3)<CR>
- vm <Up> <esc>:call <SID>MB('k')<CR>
- vm <Down> <esc>:call <SID>MB('j')<CR>
- vm <Left> <esc>:call <SID>MB('h')<CR>
- vm <Right> <esc>:call <SID>MB('l')<CR>
- en
- vmap <Leader>a :ToAscii<cr>
- nm <Leader>e :call <SID>E()<CR>
- nm <Leader>s :call <SID>SetLT(1)<CR>
- nm <Leader>d :call <SID>SetLT(2)<CR>
- exec "cabbr <"."buffer> perl perl ".s:scriptfile
-
- let s:bdlt=1
- nm <Leader>b x
- nun <Leader>b
-endf
-
-fu! s:SetLT(thickness)
- let s:bdlt=a:thickness
-endf
-
-" Deactivate mode.
-" Unmap macros, restore &ve option
-fu! <SID>E()
- if has("win32")
- " Under Windows Shift+Arrows works quite smooth, unlike most terminals
- nun <S-Up>
- nun <S-Down>
- nun <S-Left>
- nun <S-Right>
- nun g<Up>
- nun g<Right>
- nun g<Down>
- nun g<Left>
- vu <S-Up>
- vu <S-Down>
- vu <S-Left>
- vu <S-Right>
- else
- nun <Up>
- nun <Down>
- nun <Left>
- nun <Right>
- nun g<Up>
- nun g<Right>
- nun g<Down>
- nun g<Left>
- vu <Up>
- vu <Down>
- vu <Left>
- vu <Right>
- en
- nun <Leader>e
- nm <buffer> <Leader>b :call <SID>S()<CR>
- cuna <buffer> perl
- let &ve=s:ve
- unlet s:ve
- "echo "Finished Boxdrawing mode"
-endf
-
-fu! s:GetBoxCode(char)
- " check if symbol from unicode boxdrawing range
- " E2=1110(0010)
- " 25= 10(0101)xx
- if 'utf-8'== &enc
- if(0xE2==char2nr(a:char[0])&&0x25==char2nr(a:char[1])/4)
- retu '0x'.strpart(s:i_utf8,2*(char2nr(a:char[1])%4*64+char2nr(a:char[2])%64),2)
- en
- else " Assume cp437 encoding
- retu '0x'.strpart(s:i_cp437,2*char2nr(a:char),2)
- en
- retu 0
-endf
-
-" Try neihgbour in direction 'd' if c is true. Mask m for the direction
-" should also be supplied.
-" Function returns neighboring bit
-" Unicode entries are encoded in utf8 as
-" 7 bit : 0vvvvvvv
-" 11 bit : 110vvvvv 10vvvvvv
-" 16 bit : 1110vvvv 10vvvvvv 10vvvvvv
-fu! s:T(c,d,m)
- if(a:c)
- exe 'norm mt'.a:d.'"tyl`t'
- let c=s:GetBoxCode(@t)
- retu c%a:m*4/a:m
- en
- retu 0
-endf
-
-" 3*4^x, where x=0,1,2,3
-" fu! s:Mask(x)
-" retu ((6+a:x*(45+a:x*(-54+a:x*27)))/2)
-" endf
-
-" Move cursor (follow) in specified direction
-" Return new direction if new position is valid, -1 otherwise
-" dir: 'kljh'
-" ^>V<
-" 0123
-" mask: 3 12 48 192
-" let @x=3|echo (6+@x*(45+@x*(-54+@x*27)))/2
-"
-fu! <SID>F(d)
- exe 'norm '.('kljh'[a:d]).'"tyl'
- let c=s:GetBoxCode(@t)
- let i=0
- let r=-1
- while i<4
- if 0!=c%4 && a:d!=(i+2)%4
- if r<0
- let r=i
- else
- retu -1
- endif
- endif
- let c=c/4
- let i=i+1
- endw
- retu r
-endf
-
-fu! <SID>G(d)
- let y=line(".")
- let x=virtcol(".")
- let n=a:d
- while n>=0
- let n=s:F(n)
- if y==line(".") && x==virtcol(".")
- echo "Returned to same spot"
- break
- endif
- endw
-endf
-
-" Move cursor in specified direction (d= h,j,k or l). Mask s for
-" the direction should also be supplied
-"
-fu! <SID>M(s,d)
- let t=@t
- let x=s:T(1<col("."),'h',16)*64+s:T(line(".")<line("$"),'j',4)*16+s:T(1,'l',256)*4+s:T(1<line("."),'k',64)
- let @t=t
- let c=a:s*s:bdlt+x-x%(a:s*4)/a:s*a:s
- "echo 'need c='.c.' x='.x
- if 'utf-8'==&enc
- let o=strpart(s:o_utf8,2*c,2)
- if o!='--' && o!=''
- exe "norm r\<C-V>u25".o.a:d
- en
- else
- let o=strpart(s:o_cp437,2*c,2)
- if o!='--' && o!=''
- exe "norm r\<C-V>x".o.a:d
- en
- en
-" "echo "Boxdrawing mode"
-endf
-
-scriptencoding utf8
-command! -range ToAscii :silent <line1>,<line2>s/┌\|┬\|┐\|╓\|╥\|╖\|╒\|╤\|╕\|╔\|╦\|╗\|├\|┼\|┤\|╟\|╫\|╢\|╞\|╪\|╡\|╠\|╬\|╣\|└\|┴\|┘\|╙\|╨\|╜\|╘\|╧\|╛\|╚\|╩\|╝/+/ge|:silent <line1>,<line2>s/[│║]/\|/ge|:silent <line1>,<line2>s/[═─]/-/ge
-
-command! -range ToHorz :<line1>,<line2>s/─\|═/-/g
-command! -range ToHorz2 :<line1>,<line2>s/─/-/g
-" 0000000: 636f 6d6d 616e 6421 202d 7261 6e67 6520 command! -range
-" 0000010: 546f 486f 727a 203a 3c6c 696e 6531 3e2c ToHorz :<line1>,
-" 0000020: 3c6c 696e 6532 3e73 2fe2 9480 5c7c e295 <line2>s/...\|..
-" 0000030: 9029 2f6f 2f67 0d0a .)/o/g..
-command! -range ToVert :<line1>,<line2>s/│\|║/\|/g
-
-" Move block dispatch
-fu! s:MB(d)
- if visualmode()=='' || visualmode()=='v'
- call s:MRB(a:d)
- elseif visualmode()=='V'
- call s:MLB(a:d)
- en
-endf
-
-" Move line block
-fu! s:MLB(d)
- if a:d=='j' || a:d=='k'
- let l:cmd= "norm gv\"yd".a:d."\"yP1V"
- exe l:cmd
- elseif a:d=='h'
- normal gv
- :'<,'>s/^.//
- normal gv
- elseif a:d=='l'
- normal gv
- :'<,'>s/^/ /
- normal gv
- en
-endf
-
-" Move Rectangular block
-" sideeffect: stores contents of a block in "y
-" 1<C-V> does not work good in 6.0 when multibyte characters are involved
-" gvp does not work good ...
-" gv also has some problems
-" See http://vim.sourceforge.net/tips/tip.php?tip_id=808 for different way to
-" paste
-fu! s:MRB(d)
- " It seems that rectangular boxes and multibyte do not live together too
- " good asof version 6.3
- " Normally something like
- " exe 'norm gv"yygvr '.a:d.'1<C-V>"ypgv'
- " should have worked
- let l:y1=line(".")
- let l:x1=virtcol(".")
- "echo l:x1."-".l:y1
- normal gv"yygvo
- let l:y2=line(".")
- let l:x2=virtcol(".")
- if l:x1>l:x2 | let l:t=l:x1 | let l:x1=l:x2 | let l:x2=l:t | endif
- if l:y1>l:y2 | let l:t=l:y1 | let l:y1=l:y2 | let l:y2=l:t | endif
- let l:pos=l:y1."G0"
- if 1<l:x1 | let l:pos=l:pos.(l:x1-1)."l" | endif
- let l:size=""
- if 0<l:y2-l:y1 | let l:size=l:size.(l:y2-l:y1)."j" | endif
- if 0<l:x2-l:x1 | let l:size=l:size.(l:x2-l:x1)."l" | endif
- exe "normal gvr ".l:pos.a:d."".l:size."d\"yPgvjk"
-endf
-
-
-:nmap <buffer> ,b :call <SID>S()<CR>
-if has("win32")
- " Under win32 activate boxdrwaing mode upon start.
- " If undesirable, prepend with :nmap ,b
- "
- :normal ,b
-else
-en
diff --git a/Editor/vim/boxdraw/outline.pl b/Editor/vim/boxdraw/outline.pl
deleted file mode 100644
index f095e7f..0000000
--- a/Editor/vim/boxdraw/outline.pl
+++ /dev/null
@@ -1,74 +0,0 @@
-# outlines groups of similar characters
-# 2003-11-24 15:07:28 Created by nsg
-# 2004-06-18 14:29:45 changed hex boxset to x; added double, horz, vert boxsets
-use strict;
-use utf8;
-use Getopt::Std;
-
-our (
- $opt_s, # boxset (x=hex)
- $opt_d, # double each input character
- $opt_e, # output encoding
-);
-getopts("s:de:");
-$opt_s='s' if '' eq $opt_s;
-$opt_e='utf8' if '' eq $opt_e;
-
-binmode (STDIN, ":encoding($opt_e)");
-binmode (STDOUT, ":encoding($opt_e)");
-#binmode (STDOUT, ":encoding(utf8)");
-my $p='';
-
-my %boxset=(
-# 1|.,'}\u{25',"1 (_2 ]\ o_utf8) {~ 4#.2*#:i.16
- 's'=>" \x{2502}\x{2500}\x{2514}\x{2502}\x{2502}\x{250c}\x{251c}\x{2500}\x{2518}\x{2500}\x{2534}\x{2510}\x{2524}\x{252c}\x{253c}\n",
- 'd'=>" \x{2551}\x{2550}\x{255a}\x{2551}\x{2551}\x{2554}\x{2560}\x{2550}\x{255d}\x{2550}\x{2569}\x{2557}\x{2563}\x{2566}\x{256c}\n",
- 'h'=>" \x{2502}\x{2550}\x{2558}\x{2502}\x{2502}\x{2552}\x{255e}\x{2550}\x{255b}\x{2550}\x{2567}\x{2555}\x{2561}\x{2564}\x{256a}\n",
- 'v'=>" \x{2551}\x{2500}\x{2559}\x{2551}\x{2551}\x{2553}\x{255f}\x{2500}\x{255c}\x{2500}\x{2568}\x{2556}\x{2562}\x{2565}\x{256b}\n",
-);
-
-my $BOX=$boxset{$opt_s} || $boxset{'s'};
-
-# corners/splits:
-# ┌┬┐╓╥╖╒╤╕╔╦╗ 6ec
-# ├┼┤╟╫╢╞╪╡╠╬╣ 7fd
-# └┴┘╙╨╜╘╧╛╚╩╝ 3b9
-# round corners:
-# 256d 256e
-# 2570 256f
-# horizontal
-# ═ ─
-# vertical
-# │ ║
-
-while(<STDIN>){
- chomp;
- s/./$&$&/g if $opt_d;
- process_line();
- $p=$_;
-}
-$_='';
-process_line();
-
-sub process_line
-{
- my $out;
- my $l=length;
- $l=length($p) if length($p)>$l;
- for my$i(0..$l) {
- my $c=0;
- $c|=1 if sc($p,$i-1) ne sc($p,$i);
- $c|=2 if sc($p,$i) ne sc($_,$i);
- $c|=4 if sc($_,$i) ne sc($_,$i-1);
- $c|=8 if sc($_,$i-1) ne sc($p,$i-1);
- $out.=substr($BOX,$c,1) if 'x' ne $opt_s;
- $out.=sprintf"%1x",$c if 'x' eq $opt_s;
- }
- print "$out\n";
-}
-
-sub sc # (str, index)
-{
- return ' ' if 0>$_[1] || $_[1]>=length($_[0]);
- return substr($_[0],$_[1],1);
-}
diff --git a/Editor/vim/boxdraw/sampler.txt b/Editor/vim/boxdraw/sampler.txt
deleted file mode 100644
index 1f6aad8..0000000
--- a/Editor/vim/boxdraw/sampler.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Box drawing characters sampler. (C) nsg, 2004
-╒╕╔╗╓╖┌╥─┐
-├┼╢║╟╜└╫┬┤ utf-8
-╞╪╣╠╩╤╦╬╡│
-╘╧╝╚═╛╙╨┴┘
-
- koi8-r, koi8-u*
-
-
-ոɻֿ·
-öŴٺ cp437 (A.K.A dos), cp737, cp86x, cp85x*, cp895, etc.
-ƾص˹
-ϼн
diff --git a/Editor/vim/bundle/Vundle.vim b/Editor/vim/bundle/Vundle.vim
deleted file mode 160000
-Subproject 88688fe453038ac1ac26e31646cfbec50fca2fb
diff --git a/Editor/vim/bundle/syntastic b/Editor/vim/bundle/syntastic
deleted file mode 160000
-Subproject 8e672780e76c0a774b7fe834eed9652ccd684c2
diff --git a/Editor/vim/bundle/ultisnips b/Editor/vim/bundle/ultisnips
deleted file mode 160000
-Subproject 71c39721de9cb2d67478e8b8c1a543e006fb67d
diff --git a/Editor/vim/bundle/vim-snippets b/Editor/vim/bundle/vim-snippets
deleted file mode 160000
-Subproject 89a4e548441debc2d54267ea6088b048a29273d
diff --git a/Editor/vim/bundle/vim-surround b/Editor/vim/bundle/vim-surround
deleted file mode 160000
-Subproject e49d6c2459e0f5569ff2d533b4df995dd7f9831
diff --git a/Editor/vim/doc/DrawIt.txt b/Editor/vim/doc/DrawIt.txt
deleted file mode 100644
index 8e72f64..0000000
--- a/Editor/vim/doc/DrawIt.txt
+++ /dev/null
@@ -1,489 +0,0 @@
-DrawIt.txt* The DrawIt Tool Nov 25, 2013
-
-Authors: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
- Sylvain Viart <molo@multimania.com>
- (remove NOSPAM from Campbell's email first)
-Copyright: Copyright (C) 2004-2013 Charles E. Campbell
- Permission is hereby granted to use and distribute this code,
- with or without modifications, provided that this copyright
- notice is copied with it. Like anything else that's free,
- DrawIt.vim and DrawItPlugin.vim are provided *as is*; it comes
- with no warranty of any kind, either expressed or implied. By
- using this plugin, you agree that in no event will the copyright
- holder be liable for any damages resulting from the use of this
- software.
-
-
-==============================================================================
-1. Contents *drawit-contents* {{{1
-
- 1. Contents......................: |drawit-contents|
- 2. DrawIt Manual.................: |drawit|
- 3. DrawIt Usage..................: |drawit-usage|
- Starting....................: |drawit-start|
- Stopping....................: |drawit-stop|
- User Map Protection.........: |drawit-protect|
- Drawing.....................: |drawit-drawing|
- Tip.........................: |drawit-tip|
- Changing Drawing Characters.: |drawit-setdrawit|
- Moving......................: |drawit-moving|
- Erasing.....................: |drawit-erase|
- Example.....................: |drawit-example|
- Visual Block Mode...........: |drawit-visblock|
- Brushes.....................: |drawit-brush|
- DrawIt Modes................: |drawit-modes|
- 4. DrawIt History................: |drawit-history|
-
-
-==============================================================================
-2. DrawIt Manual *drawit* {{{1
- *drawit-manual*
- /===============+============================================================\
- || Starting & | ||
- || Stopping | Explanation ||
- ++--------------+-----------------------------------------------------------++
- || \di | start DrawIt |drawit-start| ||
- || \ds | stop DrawIt |drawit-stop| ||
- || :DIstart | start DrawIt |drawit-start| ||
- || :DIstart S | start DrawIt in single-bar mode |drawit-start| ||
- || :DIstart D | start DrawIt in double-bar mode |drawit-start| ||
- || :DIsngl | start DrawIt in single-bar mode |drawit-start| |drawit-sngl| ||
- || :DIdbl | start DrawIt in double-bar mode |drawit-start| |drawit-dbl| ||
- || :DIstop | stop DrawIt |drawit-stop| ||
- || :DrawIt[!] | start/stop DrawIt |drawit-start| |drawit-stop| ||
- || | ||
- ++==============+===========================================================++
- || Maps | Explanation ||
- ++--------------+-----------------------------------------------------------++
- || | The DrawIt routines use a replace, move, and ||
- || | replace/insert strategy. The package also lets one insert||
- || | spaces, draw arrows by using the following characters or ||
- || | keypad characters: ||
- || +-----------------------------------------------------------++
- || <left> | move and draw left |drawit-drawing| ||
- || <right> | move and draw right, inserting lines/space as needed ||
- || <up> | move and draw up, inserting lines/space as needed ||
- || <down> | move and draw down, inserting lines/space as needed ||
- || <s-left> | move cursor left |drawit-move| ||
- || <s-right> | move cursor right, inserting lines/space as needed ||
- || <s-up> | move cursor up, inserting lines/space as needed ||
- || <s-down> | move cursor down, inserting lines/space as needed ||
- || <space> | toggle into and out of erase mode ||
- || > | insert a > and move right (draw -> arrow) ||
- || < | insert a < and move left (draw <- arrow) ||
- || ^ | insert a ^ and move up (draw ^ arrow) ||
- || v | insert a v and move down (draw v arrow) ||
- || <pgdn> | replace with a \, move down and right, and insert a \ ||
- || <end> | replace with a /, move down and left, and insert a / ||
- || <pgup> | replace with a /, move up and right, and insert a / ||
- || <home> | replace with a \, move up and left, and insert a \ ||
- || \> | insert a fat > and move right (draw -> arrow) ||
- || \< | insert a fat < and move left (draw <- arrow) ||
- || \^ | insert a fat ^ and move up (draw ^ arrow) ||
- || \v | insert a fat v and move down (draw v arrow) ||
- ||<s-leftmouse> | drag and draw with current brush |drawit-brush| ||
- ||<c-leftmouse> | drag and move current brush |drawit-brush| ||
- || | ||
- ||==============+===========================================================++
- ||Visual Cmds | Explanation ||
- ||--------------+-----------------------------------------------------------++
- || | The drawing mode routines use visual-block mode to ||
- || | select endpoints for lines, arrows, and ellipses. Bresen- ||
- || | ham and Bresenham-like algorithms are used for this. ||
- || | ||
- || | These routines need a block of spaces, and so the canvas ||
- || | routine must first be used to create such a block. The ||
- || | canvas routine will query the user for the number of ||
- || | lines to hold |'textwidth'| spaces. ||
- || +-----------------------------------------------------------++
- || \a | draw arrow from corners of visual-block selected region || |drawit-a|
- || \b | draw box on visual-block selected region || |drawit-b|
- || \c | the canvas routine (will query user, see above) || |drawit-c|
- || \e | draw an ellipse on visual-block selected region || |drawit-e|
- || \f | flood figure with a character (you will be prompted) || |drawit-f|
- || \l | draw line from corners of visual-block selected region || |drawit-l|
- || \s | spacer: appends spaces up to the textwidth (default: 78) || |drawit-s|
- || | ||
- ++==============+===========================================================++
- || Function and Explanation ||
- ++--------------+-----------------------------------------------------------++
- || :call SetDrawIt('vertical','horizontal','crossing','\','/','X','*') ||
- || set drawing characters for motions for moving ||
- || and for the ellipse drawing boundary |drawit-setdrawit| ||
- || default motion ||
- || | up/down, ||
- || - left/right, ||
- || + -| crossing, ||
- || \ downright, ||
- || / downleft, and ||
- || X \/ crossing ||
- ++=======================+==================================================++
- || Commands | Explanation ||
- ++-----------------------+--------------------------------------------------++
- || :SetBrush a-z | sets brush (register) to given register ||
- || :'<,'>SetBrush a-z | yanks visual block to brush |drawit-brush||| ||
- || :DInrml | switch to normal mode |drawit-nrml| ||
- || :DIsngl | switch to single-line mode |drawit-sngl| ||
- || :DIdbl | switch to double-line mode |drawit-dbl| ||
- \============================================================================/
-
-
-==============================================================================
-3. DrawIt Usage *drawit-usage* {{{1
-
-STARTING *drawit-start* {{{2
-\di (starts in normal drawing mode) *drawit-\di*
-:DrawIt (starts in normal drawing mode) *drawit-DrawIt*
-:DIstart (starts in normal drawing mode) *drawit-DIstart*
-:DIstart S (starts in single-bar drawing mode)
-:DIstart D (starts in double-bar drawing mode)
-:DInrml (starts in normal drawing mode) *drawit-DInrml*
-:DIsngl (starts in single-bar drawing mode) *drawit-DIsngl*
-:DIdbl (starts in double-bar drawing mode) *drawit-DIdbl*
-
-Typically one puts <drawit.vim> into the .vim/plugin directory
-(vimfiles\plugin for Windows) where it becomes always available. It uses a
-minimal interface (\di: you can think of it as *D*raw*I*t or *D*rawIt
-*I*nitialize) to start it and (\ds: *D*rawIt *S*top) to stop it. Instead of
-using "\" you may specify your own preference for a map leader (see
-|mapleader|).
-
-With a trailing 'S', :DIstart will begin in single-bar mode (see |drawit-sngl|).
-With a trailing 'D', :DIstart will begin in double-bar mode (see |drawit-dbl|).
-Similarly, :DIsngl and :DIdbl will start DrawIt as well as begin in
-single-bar or double-bar mode, respectively.
-
-A message, "[DrawIt]", will appear on the message line.
-
-
-STOPPING *drawit-stop* {{{2
-\ds
-:DIstop
-:DrawIt!
-
-When you are done with DrawIt, use \ds to stop DrawIt mode. Stopping DrawIt
-will restore your usual options and remove the maps DrawIt set up.
-
-A message, "[DrawIt off]", will appear on the message line.
-
- *drawit-utf16*
- *drawit-utf8* *drawit-unicode*
-NORMAL, SINGLE BAR, AND DOUBLE BAR MODES *drawit-sngl* *drawit-dbl*
-:DInrml :DIsngl :DIdbl
-
-One may use these commands to start up Drawit in normal, single-bar, or
-double-bar modes, respectively. When your |'encoding'| is utf-8 or utf-16,
-DrawIt supports drawing with special box characters (single-bar, double_bar).
-These commands are also used to switch to normal, single-bar, or double-bar
-modes.
-
-
-USER MAP PROTECTION *drawit-protect* {{{2
-
-Starting DrawIt causes it to set up a number of maps which facilitate drawing.
-DrawIt accommodates users with conflicting maps by saving both maps and user
-options and before setting them to what DrawIt needs. When you stop DrawIt
-(|drawit-stop|), DrawIt will restore the user's maps and options as they were
-before DrawIt was started.
-
-
-OPTIONS *drawit-options* {{{2
-
- *g:drawit_insertmode*
-g:drawit_insertmode : if this variable exists and is 1 then maps are
- made which make cursor-control drawing available
- while in insert mode, too. Otherwise, DrawIt's
- maps only affect normal mode.
-
-DRAWING *drawit-drawing* {{{2
-
-After DrawIt is started, use the number pad or arrow keys to move the cursor
-about. As the cursor moves, DrawIt will then leave appropriate "line"
-characters behind as you move horizontally, vertically, or diagonally, and
-will transparently enlarge your file to accommodate your drawing as needed.
-The trail will consist of -, |, \, / characters (depending on which direction
-and SetDrawIt() changes), and + and X characters where line crossings occur.
-You may use h-j-k-l to move about your display and generally use editing
-commands as you wish even while in DrawIt mode.
-
-Another tool that may be used to convert Ascii-art into nice pictures is
-available at https://github.com/christiangoltz/shaape .
-
-
-CHANGING DRAWING CHARACTERS *drawit-setdrawit* {{{2
-
-The SetDrawIt() function is available for those who wish to change the
-characters that DrawIt uses. >
-
- ex. :call SetDrawIt('*','*','*','*','*','*','*')
- ex. :call SetDrawIt('-','|','-','\','/','/','*')
-<
-The first example shows how to change all the DrawIt drawing characters to
-asterisks, and the second shows how to give crossing priority to - and /.
-The default setting is equivalent to: >
-
- :call SetDrawIt('|','-','+','\','/','X','*')
-<
-where SetDrawit()'s arguments refer, in order, to the >
-
- vertical drawing character
- horizontal drawing character
- horizontal/vertical crossing drawing character
- down right drawing character
- down left drawing character
- diagonal crossing drawing character
- ellipse boundary drawing character
-<
-
-TIP *drawit-tip*
-
-I have found that sometimes one or more of the <home>, <end>, <pageup>,
-and <pagedown> keys give unique sequences but are not interpreted
-properly by Vim. This problem impacts DrawIt as it uses those four
-keys to signify diagonal moves/drawing. One solution I use is to
-put into my <.vimrc> file mapings like:
-
- map ^V... <home>
-
-where the ellipsis (...) is the actual character sequence produced by
-hitting the key. The way to generate such maps is to type "map ",
-followed by three control-v presses, press the associated key, then
-a space followed by the proper interpretation sequence (ie. <home>).
-
-
-MOVING *drawit-move* *drawit-moving* {{{2
-
-DrawIt supports shifting the arrow keys to cause motion of the cursor. The
-motion of the cursor will not modify what's below the cursor. The cursor
-will move and lines and/or spaces will be inserted to support the move as
-required. Your terminal may not support shifted arrow keys, however, or Vim
-may not catch them as such. For example, on the machine I use, shift-up
-(<s-up>) produced <Esc>[161q, but vim didn't know that sequence was a <s-up>.
-I merely made a nmap:
-
- nmap <Esc>[161q <s-up>
-
-and vim thereafter recognized the <s-up> command.
-
-
-ERASING *drawit-erase* {{{2
-<space>
-
-The <space> key will toggle DrawIt's erase mode/DrawIt mode. When in [DrawIt
-erase] mode, a message "[DrawIt erase]" will appear and the number pad will
-now cause spaces to be drawn instead of the usual drawing characters. The
-drawing behavior will be restored when the <space> key toggles DrawIt back
-to regular DrawIt mode.
-
-
-EXAMPLES *drawit-example* {{{2
-
-Needless to say, the square spirals which follow were done with DrawIt and
-a bit of block editing with Vim: >
-
- +------------ -----------+ +------------ -----------+ +------------
- |+----------+ +---------+| |+----------+ +---------+| |+----------+
- ||+--------+| |+-------+|| ||+--------+| |+-------+|| ||+--------+|
- |||-------+|| ||+------||| |||-------+|| ||+------||| |||-------+||
- ||+-------+|| ||+------+|| ||+-------+|| ||+------+|| ||+-------+||
- |+---------+| |+--------+| |+---------+| |+--------+| |+---------+|
- +-----------+ +----------+ +-----------+ +----------+ +-----------+
-
-VISUAL BLOCK MODE FOR ARROWS LINES BOXES AND ELLIPSES *drawit-visblock* {{{2
-
-\a : draw arrow from corners of visual-block selected region *drawit-a*
-\b : draw box on visual-block selected region *drawit-b*
-\c : the canvas routine (will query user, see above) *drawit-c*
-\e : draw an ellipse on visual-block selected region *drawit-e*
-\f : flood figure with a character (you will be prompted) *drawit-f*
-\l : draw line from corners of visual-block selected region *drawit-l*
-\s : spacer: appends spaces up to the textwidth (default: 78) *drawit-s*
-
-The DrawIt package has been merged with Sylvain Viart's drawing package (by
-permission) which provides DrawIt with visual-block selection of
-starting/ending point drawing of arrows (\a), lines (\l), and boxes (\b).
-Additionally I wrote an ellipse drawing function using visual block
-specification (|drawit-e|).
-
-One may create a block of spaces for these maps to operate in; the "canvas"
-routine (\c) will help create such blocks. First, the s:Canvas() routine will
-query the user for the number of lines s/he wishes to have, and will then fill
-those lines with spaces out to the |'textwidth'| if user has specified it;
-otherwise, the display width will be used.
-
-Although most of the maps use visual-block selection, that isn't true of the
-\f map. Instead, it assume that you have already drawn some closed figure
-and want to fill it with some character.
-
-The Sylvain Viart functions and the ellipse drawing function depend
-upon using visual block mode. As a typical use: >
-
- Example: * \h
- DrawIt asks: how many lines under the cursor? 10
- DrawIt then appends 10 lines filled with blanks
- out to textwidth (if defined) or 78 columns.
- * ctrl-v (move) \b
- DrawIt then draws a box
- * ctrl-v (move) \e
- DrawIt then draws an ellipse
-<
-Select the first endpoint with ctrl-v and then move to the other endpoint.
-One may then select \a for arrows, \b for boxes, \e for ellipses, or \l for
-lines. The internal s:AutoCanvas() will convert tabs to spaces and will
-extend with spaces as needed to support the visual block. Note that when
-DrawIt is enabled, virtualedit is also enabled (to "all").
->
- Examples:
-
- __ _ *************** +-------+
- \_ _/ **** **** | |
- \_ _/ ** ---------> ** | |
- \_ _/ **** **** | |
- \__/ <------- *************** +-------+
-
- \l \a \e and \a \b
-<
- *drawit-setbrush*
-BRUSHES *drawit-brush* {{{2
->
- :SetBrush [a-z]
-<
- Set the current brush to the selected brush register:
->
- ex. :SetBrush b
-
- :'<,'>SetBrush [a-z]
-<
- Select text for the brush by using visual-block mode: ctrl-v, move .
- Then set the current text into the brush register: (default brush: a)
->
- <leftmouse>
-<
- Select a visual-block region. One may use "ay, for example,
- to yank selected text to register a.
->
- <shift-leftmouse>
-<
- One may drag and draw with the current brush (default brush: a)
- by holding down the shift key and the leftmouse button and moving
- the mouse. Blanks in the brush are considered to be transparent.
->
- <ctrl-leftmouse>
-<
- One may drag and move a selection with <ctrl-leftmouse>. First,
- select the region using the <leftmouse>. Release the mouse button,
- then press ctrl and the <leftmouse> button; while continuing to press
- the button, move the mouse. The selected block of text will then
- move along with the cursor.
->
- \ra ... \rz
-<
- Replace text with the given register's contents (ie. the brush).
->
- \pa ... \pz
-<
- Like \ra ... \rz, except that blanks are considered to be transparent.
-
- Example: Draw the following >
- \ \
- o o
- *
- ---
-< Then use ctrl-v, move, "ay to grab a copy into register a.
- By default, the current brush uses register a (change brush
- with :SetBrush [reg]). Hold the <shift> and <leftbutton>
- keys down and move the mouse; as you move, a copy of the
- brush will be left behind.
-
-
-DRAWIT MODES *drawit-modes* {{{2
-
- -[DrawIt] regular DrawIt mode (|drawit-start|)
- -[DrawIt off] DrawIt is off (|drawit-stop| )
- -[DrawIt erase] DrawIt will erase using the number pad (|drawit-erase|)
-
- g:DrChipTopLvlMenu: by default its "DrChip"; you may set this to whatever
- you like in your <.vimrc>. This variable controls where
- DrawIt's menu items are placed.
-
-
-==============================================================================
-4. History *drawit-history* {{{1
-
- 13 Sep 05, 2013 * improved s:Strlen() -- now uses |strdisplaywidth()|
- if available.
- Sep 13, 2013 * (Paul Wagland) found a case where lines were
- being drawn with the wrong character. This
- affected the Bresenham-algorithm based
- drawing facility (ie. lines and arrows
- specified by visual blocks;
- |drawit-a|, |drawit-l|).
- 12 Nov 16, 2012 * (Alexandre Viau) arrows weren't being drawn.
- Fixed.
- Nov 29, 2012 * (Kim Jang-hwan) reported that with
- g:Align_xstrlen set to 3 that the cursor was
- moved (linewise) after invocation. This
- problem also afflicted DrawIt. Fixed.
- 11 Jan 21, 2010 * (Evan Stern) several places were using
- hardcoded drawing characters instead of
- b:di_... equivalents.
- Feb 22, 2011 * for menus, &go =~# used to insure correct case
- Sep 22, 2011 * ctrl-leftmouse (see |drawit-brush|) now moves the
- selected text entirely, no longer leaving a copy
- of the text where it was initially.
- Nov 07, 2011 * included support for utf-8 box drawing characters
- Nov 16, 2011 * included support for utf-8 single-double characters
- Nov 16, 2011 * included support for cp437 box drawing characters
- Dec 06, 2011 * included support for box and line drawing (\b, \l)
- support for utf-8 / cp437 box drawing characters
- Dec 06, 2011 * fat arrows now use utf-8 characters when available
- Jan 30, 2012 * \f supported when using utf-8/cp437 box drawing
- characters as boundary characters
- 10 Jun 12, 2008 * Fixed a bug with ctrl-leftmouse (which was leaving
- a space in the original selected text)
- Mar 24, 2009 * :DrawIt starts, :DrawIt! stops DrawIt mode.
- Mar 24, 2009 * I've included <script> modifiers to the maps to
- cause rhs remapping only with mappings local to
- the script (see |:map-script|)
- 9 Sep 14, 2007 * Johann-Guenter Simon fixed a bug with s:DrawErase();
- it called SetDrawIt() and that call hadn't been
- updated to account for the new b:di_ellipse
- parameter.
- 8 Feb 12, 2007 * fixed a bug which prevented multi-character user
- maps from being restored properly
- May 03, 2007 * Extended SetDrawIt() to handle b:di_ellipse, the
- ellipse boundary drawing character
- * Changed "Holer" to "Canvas", and wrote AutoCanvas(),
- which allows one to use the visual-block drawing
- maps without creating a canvas first.
- * DrawIt implements using the ctrl-leftmouse to move
- a visual-block selected region.
- * Floods can now be done inside an ellipse
- * DrawIt's maps are now all users of <buffer>
- 7 Feb 16, 2005 * now checks that "m" is in &go before attempting to
- use menus
- Aug 17, 2005 * report option workaround
- Nov 01, 2005 * converted DrawIt to use autoload feature of vim 7.0
- Dec 28, 2005 * now uses cecutil to save/restore user maps
- Jan 18, 2006 * cecutil now updated to use keepjumps
- Jan 23, 2006 * :DIstart and :DIstop commands provided; thus users
- using "set noremap" can still use DrawIt.
- Jan 26, 2006 * DrawIt menu entry now keeps its place
- Apr 10, 2006 * Brushes were implemented
- 6 Feb 24, 2003 * The latest DrawIt now provides a fill function.
- \f will ask for a character to fill the figure
- surrounding the current cursor location. Plus
- I suggest reading :he drawit-tip for those whose
- home/pageup/pagedown/end keys aren't all working
- properly with DrawIt.
- 08/18/03 * \p[a-z] and \r[a-z] implemented
- 08/04/03 * b:..keep variables renamed to b:di_..keep variables
- StopDrawIt() now insures that erase mode is off
- 03/11/03 * included g:drawit_insertmode handling
- 02/21/03 * included flood function
- 12/11/02 * deletes trailing whitespace only if holer used
- 8/27/02 * fat arrowheads included
- * shift-arrow keys move but don't modify
-
- ---------------------------------------------------------------------
-vim:tw=78:ts=8:ft=help:fdm=marker
diff --git a/Editor/vim/doc/imaps.txt.gz b/Editor/vim/doc/imaps.txt.gz
deleted file mode 120000
index cf5808b..0000000
--- a/Editor/vim/doc/imaps.txt.gz
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/vim/addons/doc/imaps.txt.gz \ No newline at end of file
diff --git a/Editor/vim/doc/latex-suite-quickstart.txt.gz b/Editor/vim/doc/latex-suite-quickstart.txt.gz
deleted file mode 120000
index 5ef4db2..0000000
--- a/Editor/vim/doc/latex-suite-quickstart.txt.gz
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/vim/addons/doc/latex-suite-quickstart.txt.gz \ No newline at end of file
diff --git a/Editor/vim/doc/latex-suite.txt.gz b/Editor/vim/doc/latex-suite.txt.gz
deleted file mode 120000
index 35c3d5a..0000000
--- a/Editor/vim/doc/latex-suite.txt.gz
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/vim/addons/doc/latex-suite.txt.gz \ No newline at end of file
diff --git a/Editor/vim/doc/latexhelp.txt.gz b/Editor/vim/doc/latexhelp.txt.gz
deleted file mode 120000
index f8197a0..0000000
--- a/Editor/vim/doc/latexhelp.txt.gz
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/vim/addons/doc/latexhelp.txt.gz \ No newline at end of file
diff --git a/Editor/vim/doc/surround.txt b/Editor/vim/doc/surround.txt
deleted file mode 100644
index 30a642a..0000000
--- a/Editor/vim/doc/surround.txt
+++ /dev/null
@@ -1,205 +0,0 @@
-*surround.txt* Plugin for deleting, changing, and adding "surroundings"
-
-Author: Tim Pope <http://tpo.pe/>
-License: Same terms as Vim itself (see |license|)
-
-This plugin is only available if 'compatible' is not set.
-
-INTRODUCTION *surround*
-
-This plugin is a tool for dealing with pairs of "surroundings." Examples
-of surroundings include parentheses, quotes, and HTML tags. They are
-closely related to what Vim refers to as |text-objects|. Provided
-are mappings to allow for removing, changing, and adding surroundings.
-
-Details follow on the exact semantics, but first, consider the following
-examples. An asterisk (*) is used to denote the cursor position.
-
- Old text Command New text ~
- "Hello *world!" ds" Hello world!
- [123+4*56]/2 cs]) (123+456)/2
- "Look ma, I'm *HTML!" cs"<q> <q>Look ma, I'm HTML!</q>
- if *x>3 { ysW( if ( x>3 ) {
- my $str = *whee!; vllllS' my $str = 'whee!';
-
-While a few features of this plugin will work in older versions of Vim,
-Vim 7 is recommended for full functionality.
-
-MAPPINGS *surround-mappings*
-
-Delete surroundings is *ds* . The next character given determines the target
-to delete. The exact nature of the target is explained in |surround-targets|
-but essentially it is the last character of a |text-object|. This mapping
-deletes the difference between the "i"nner object and "a"n object. This is
-easiest to understand with some examples:
-
- Old text Command New text ~
- "Hello *world!" ds" Hello world!
- (123+4*56)/2 ds) 123+456/2
- <div>Yo!*</div> dst Yo!
-
-Change surroundings is *cs* . It takes two arguments, a target like with
-|ds|, and a replacement. Details about the second argument can be found
-below in |surround-replacements|. Once again, examples are in order.
-
- Old text Command New text ~
- "Hello *world!" cs"' 'Hello world!'
- "Hello *world!" cs"<q> <q>Hello world!</q>
- (123+4*56)/2 cs)] [123+456]/2
- (123+4*56)/2 cs)[ [ 123+456 ]/2
- <div>Yo!*</div> cst<p> <p>Yo!</p>
-
-*ys* takes a valid Vim motion or text object as the first object, and wraps
-it using the second argument as with |cs|. (It's a stretch, but a good
-mnemonic for "ys" is "you surround".)
-
- Old text Command New text ~
- Hello w*orld! ysiw) Hello (world)!
-
-As a special case, *yss* operates on the current line, ignoring leading
-whitespace.
-
- Old text Command New text ~
- Hello w*orld! yssB {Hello world!}
-
-There is also *yS* and *ySS* which indent the surrounded text and place it
-on a line of its own.
-
-In visual mode, a simple "S" with an argument wraps the selection. This is
-referred to as the *vS* mapping, although ordinarily there will be
-additional keystrokes between the v and S. In linewise visual mode, the
-surroundings are placed on separate lines and indented. In blockwise visual
-mode, each line is surrounded.
-
-A "gS" in visual mode, known as *vgS* , behaves similarly. In linewise visual
-mode, the automatic indenting is suppressed. In blockwise visual mode, this
-enables surrounding past the end of the line with 'virtualedit' set (there
-seems to be no way in Vim Script to differentiate between a jagged end of line
-selection and a virtual block selected past the end of the line, so two maps
-were needed).
-
- *i_CTRL-G_s* *i_CTRL-G_S*
-Finally, there is an experimental insert mode mapping on <C-G>s and <C-S>.
-Beware that the latter won't work on terminals with flow control (if you
-accidentally freeze your terminal, use <C-Q> to unfreeze it). The mapping
-inserts the specified surroundings and puts the cursor between them. If,
-immediately after the mapping and before the replacement, a second <C-S> or
-carriage return is pressed, the prefix, cursor, and suffix will be placed on
-three separate lines. <C-G>S (not <C-G>s) also exhibits this behavior.
-
-TARGETS *surround-targets*
-
-The |ds| and |cs| commands both take a target as their first argument. The
-possible targets are based closely on the |text-objects| provided by Vim.
-All targets are currently just one character.
-
-Eight punctuation marks, (, ), {, }, [, ], <, and >, represent themselves
-and their counterparts. If the opening mark is used, contained whitespace is
-also trimmed. The targets b, B, r, and a are aliases for ), }, ], and >
-(the first two mirror Vim; the second two are completely arbitrary and
-subject to change).
-
-Three quote marks, ', ", `, represent themselves, in pairs. They are only
-searched for on the current line.
-
-A t is a pair of HTML or XML tags. See |tag-blocks| for details. Remember
-that you can specify a numerical argument if you want to get to a tag other
-than the innermost one.
-
-The letters w, W, and s correspond to a |word|, a |WORD|, and a |sentence|,
-respectively. These are special in that they have nothing to delete, and
-used with |ds| they are a no-op. With |cs|, one could consider them a
-slight shortcut for ysi (cswb == ysiwb, more or less).
-
-A p represents a |paragraph|. This behaves similarly to w, W, and s above;
-however, newlines are sometimes added and/or removed.
-
-REPLACEMENTS *surround-replacements*
-
-A replacement argument is a single character, and is required by |cs|, |ys|,
-and |vS|. Undefined replacement characters (with the exception of alphabetic
-characters) default to placing themselves at the beginning and end of the
-destination, which can be useful for characters like / and |.
-
-If either ), }, ], or > is used, the text is wrapped in the appropriate pair
-of characters. Similar behavior can be found with (, {, and [ (but not <),
-which append an additional space to the inside. Like with the targets above,
-b, B, r, and a are aliases for ), }, ], and >. To fulfill the common need for
-code blocks in C-style languages, <C-}> (which is really <C-]>) adds braces on
-lines separate from the content.
-
-If t or < is used, Vim prompts for an HTML/XML tag to insert. You may specify
-attributes here and they will be stripped from the closing tag. End your
-input by pressing <CR> or >. If <C-T> is used, the tags will appear on lines
-by themselves.
-
-If s is used, a leading but not trailing space is added. This is useful for
-removing parentheses from a function call with csbs.
-
-CUSTOMIZING *surround-customizing*
-
-The following adds a potential replacement on "-" (ASCII 45) in PHP files.
-(To determine the ASCII code to use, :echo char2nr("-")). The carriage
-return will be replaced by the original text.
->
- autocmd FileType php let b:surround_45 = "<?php \r ?>"
-<
-This can be used in a PHP file as in the following example.
-
- Old text Command New text ~
- print "Hello *world!" yss- <?php print "Hello world!" ?>
-
-Additionally, one can use a global variable for globally available
-replacements.
->
- let g:surround_45 = "<% \r %>"
- let g:surround_61 = "<%= \r %>"
-<
-Advanced, experimental, and subject to change: One can also prompt for
-replacement text. The syntax for this is to surround the replacement in pairs
-of low numbered control characters. If this sounds confusing, that's because
-it is (but it makes the parsing easy). Consider the following example for a
-LaTeX environment on the "l" replacement.
->
- let g:surround_108 = "\\begin{\1environment: \1}\r\\end{\1\1}"
-<
-When this replacement is used, the user is prompted with an "environment: "
-prompt for input. This input is inserted between each set of \1's.
-Additional inputs up to \7 can be used.
-
-Furthermore, one can specify a regular expression substitution to apply.
->
- let g:surround_108 = "\\begin{\1environment: \1}\r\\end{\1\r}.*\r\1}"
-<
-This will remove anything after the first } in the input when the text is
-placed within the \end{} slot. The first \r marks where the pattern begins,
-and the second where the replacement text begins.
-
-Here's a second example for creating an HTML <div>. The substitution cleverly
-prompts for an id, but only adds id="" if it is non-blank. You may have to
-read this one a few times slowly before you understand it.
->
- let g:surround_{char2nr("d")} = "<div\1id: \r..*\r id=\"&\"\1>\r</div>"
-<
-Inputting text replacements is a proof of concept at this point. The ugly,
-unintuitive interface and the brevity of the documentation reflect this.
-
-Finally, It is possible to always append a string to surroundings in insert
-mode (and only insert mode). This is useful with certain plugins and mappings
-that allow you to jump to such markings.
->
- let g:surround_insert_tail = "<++>"
-<
-ISSUES *surround-issues*
-
-Vim could potentially get confused when deleting/changing occurs at the very
-end of the line. Please report any repeatable instances of this.
-
-Do we need to use |inputsave()|/|inputrestore()| with the tag replacement?
-
-Indenting is handled haphazardly. Need to decide the most appropriate
-behavior and implement it. Right now one can do :let b:surround_indent = 1
-(or the global equivalent) to enable automatic re-indenting by Vim via |=|;
-should this be the default?
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/Editor/vim/doc/tags b/Editor/vim/doc/tags
deleted file mode 100644
index 54ecdda..0000000
--- a/Editor/vim/doc/tags
+++ /dev/null
@@ -1,56 +0,0 @@
-cs surround.txt /*cs*
-drawit DrawIt.txt /*drawit*
-drawit-DIdbl DrawIt.txt /*drawit-DIdbl*
-drawit-DInrml DrawIt.txt /*drawit-DInrml*
-drawit-DIsngl DrawIt.txt /*drawit-DIsngl*
-drawit-DIstart DrawIt.txt /*drawit-DIstart*
-drawit-DrawIt DrawIt.txt /*drawit-DrawIt*
-drawit-\di DrawIt.txt /*drawit-\\di*
-drawit-a DrawIt.txt /*drawit-a*
-drawit-b DrawIt.txt /*drawit-b*
-drawit-brush DrawIt.txt /*drawit-brush*
-drawit-c DrawIt.txt /*drawit-c*
-drawit-contents DrawIt.txt /*drawit-contents*
-drawit-dbl DrawIt.txt /*drawit-dbl*
-drawit-drawing DrawIt.txt /*drawit-drawing*
-drawit-e DrawIt.txt /*drawit-e*
-drawit-erase DrawIt.txt /*drawit-erase*
-drawit-example DrawIt.txt /*drawit-example*
-drawit-f DrawIt.txt /*drawit-f*
-drawit-history DrawIt.txt /*drawit-history*
-drawit-l DrawIt.txt /*drawit-l*
-drawit-manual DrawIt.txt /*drawit-manual*
-drawit-modes DrawIt.txt /*drawit-modes*
-drawit-move DrawIt.txt /*drawit-move*
-drawit-moving DrawIt.txt /*drawit-moving*
-drawit-options DrawIt.txt /*drawit-options*
-drawit-protect DrawIt.txt /*drawit-protect*
-drawit-s DrawIt.txt /*drawit-s*
-drawit-setbrush DrawIt.txt /*drawit-setbrush*
-drawit-setdrawit DrawIt.txt /*drawit-setdrawit*
-drawit-sngl DrawIt.txt /*drawit-sngl*
-drawit-start DrawIt.txt /*drawit-start*
-drawit-stop DrawIt.txt /*drawit-stop*
-drawit-tip DrawIt.txt /*drawit-tip*
-drawit-unicode DrawIt.txt /*drawit-unicode*
-drawit-usage DrawIt.txt /*drawit-usage*
-drawit-utf16 DrawIt.txt /*drawit-utf16*
-drawit-utf8 DrawIt.txt /*drawit-utf8*
-drawit-visblock DrawIt.txt /*drawit-visblock*
-ds surround.txt /*ds*
-g:drawit_insertmode DrawIt.txt /*g:drawit_insertmode*
-i_CTRL-G_S surround.txt /*i_CTRL-G_S*
-i_CTRL-G_s surround.txt /*i_CTRL-G_s*
-surround surround.txt /*surround*
-surround-customizing surround.txt /*surround-customizing*
-surround-issues surround.txt /*surround-issues*
-surround-mappings surround.txt /*surround-mappings*
-surround-replacements surround.txt /*surround-replacements*
-surround-targets surround.txt /*surround-targets*
-surround.txt surround.txt /*surround.txt*
-vS surround.txt /*vS*
-vgS surround.txt /*vgS*
-yS surround.txt /*yS*
-ySS surround.txt /*ySS*
-ys surround.txt /*ys*
-yss surround.txt /*yss*
diff --git a/Editor/vim/filetype.vim b/Editor/vim/filetype.vim
deleted file mode 100644
index 357aa24..0000000
--- a/Editor/vim/filetype.vim
+++ /dev/null
@@ -1,4 +0,0 @@
-augroup filetypedetect
- " Mail
- autocmd BufRead,BufNewFile *mutt-* setfiletype mail
-augroup END
diff --git a/Editor/vim/plugin/cecutil.vim b/Editor/vim/plugin/cecutil.vim
deleted file mode 100644
index b720044..0000000
--- a/Editor/vim/plugin/cecutil.vim
+++ /dev/null
@@ -1,536 +0,0 @@
-" cecutil.vim : save/restore window position
-" save/restore mark position
-" save/restore selected user maps
-" Author: Charles E. Campbell
-" Version: 18i NOT RELEASED
-" Date: Oct 21, 2013
-"
-" Saving Restoring Destroying Marks: {{{1
-" call SaveMark(markname) let savemark= SaveMark(markname)
-" call RestoreMark(markname) call RestoreMark(savemark)
-" call DestroyMark(markname)
-" commands: SM RM DM
-"
-" Saving Restoring Destroying Window Position: {{{1
-" call SaveWinPosn() let winposn= SaveWinPosn()
-" call RestoreWinPosn() call RestoreWinPosn(winposn)
-" \swp : save current window/buffer's position
-" \rwp : restore current window/buffer's previous position
-" commands: SWP RWP
-"
-" Saving And Restoring User Maps: {{{1
-" call SaveUserMaps(mapmode,maplead,mapchx,suffix)
-" call RestoreUserMaps(suffix)
-"
-" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
-"
-" You believe that God is one. You do well. The demons also {{{1
-" believe, and shudder. But do you want to know, vain man, that
-" faith apart from works is dead? (James 2:19,20 WEB)
-"redraw!|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-
-" ---------------------------------------------------------------------
-" Load Once: {{{1
-if &cp || exists("g:loaded_cecutil")
- finish
-endif
-let g:loaded_cecutil = "v18h"
-let s:keepcpo = &cpo
-set cpo&vim
-"DechoRemOn
-
-" =======================
-" Public Interface: {{{1
-" =======================
-
-" ---------------------------------------------------------------------
-" Map Interface: {{{2
-if !hasmapto('<Plug>SaveWinPosn')
- map <unique> <Leader>swp <Plug>SaveWinPosn
-endif
-if !hasmapto('<Plug>RestoreWinPosn')
- map <unique> <Leader>rwp <Plug>RestoreWinPosn
-endif
-nmap <silent> <Plug>SaveWinPosn :call SaveWinPosn()<CR>
-nmap <silent> <Plug>RestoreWinPosn :call RestoreWinPosn()<CR>
-
-" ---------------------------------------------------------------------
-" Command Interface: {{{2
-com! -bar -nargs=0 SWP call SaveWinPosn()
-com! -bar -nargs=? RWP call RestoreWinPosn(<args>)
-com! -bar -nargs=1 SM call SaveMark(<q-args>)
-com! -bar -nargs=1 RM call RestoreMark(<q-args>)
-com! -bar -nargs=1 DM call DestroyMark(<q-args>)
-
-com! -bar -nargs=1 WLR call s:WinLineRestore(<q-args>)
-
-if v:version < 630
- let s:modifier= "sil! "
-else
- let s:modifier= "sil! keepj "
-endif
-
-" ===============
-" Functions: {{{1
-" ===============
-
-" ---------------------------------------------------------------------
-" SaveWinPosn: {{{2
-" let winposn= SaveWinPosn() will save window position in winposn variable
-" call SaveWinPosn() will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
-" let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
-fun! SaveWinPosn(...)
-" echomsg "Decho: SaveWinPosn() a:0=".a:0
- if line("$") == 1 && getline(1) == ""
-" echomsg "Decho: SaveWinPosn : empty buffer"
- return ""
- endif
- let so_keep = &l:so
- let siso_keep = &siso
- let ss_keep = &l:ss
- setlocal so=0 siso=0 ss=0
-
- let swline = line(".") " save-window line in file
- let swcol = col(".") " save-window column in file
- if swcol >= col("$")
- let swcol= swcol + virtcol(".") - virtcol("$") " adjust for virtual edit (cursor past end-of-line)
- endif
- let swwline = winline() - 1 " save-window window line
- let swwcol = virtcol(".") - wincol() " save-window window column
- let savedposn = ""
-" echomsg "Decho: sw[".swline.",".swcol."] sww[".swwline.",".swwcol."]"
- let savedposn = "call GoWinbufnr(".winbufnr(0).")"
- let savedposn = savedposn."|".s:modifier.swline
- let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
- if swwline > 0
- let savedposn= savedposn.":".s:modifier."call s:WinLineRestore(".(swwline+1).")\<cr>"
- endif
- if swwcol > 0
- let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
- endif
- let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
-
- " save window position in
- " b:cecutil_winposn_{iwinposn} (stack)
- " only when SaveWinPosn() is used
- if a:0 == 0
- if !exists("b:cecutil_iwinposn")
- let b:cecutil_iwinposn= 1
- else
- let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
- endif
-" echomsg "Decho: saving posn to SWP stack"
- let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
- endif
-
- let &l:so = so_keep
- let &siso = siso_keep
- let &l:ss = ss_keep
-
-" if exists("b:cecutil_iwinposn") " Decho
-" echomsg "Decho: b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]"
-" else " Decho
-" echomsg "Decho: b:cecutil_iwinposn doesn't exist"
-" endif " Decho
-" echomsg "Decho: SaveWinPosn [".savedposn."]"
- return savedposn
-endfun
-
-" ---------------------------------------------------------------------
-" RestoreWinPosn: {{{2
-" call RestoreWinPosn()
-" call RestoreWinPosn(winposn)
-fun! RestoreWinPosn(...)
-" echomsg "Decho: RestoreWinPosn() a:0=".a:0
-" echomsg "Decho: getline(1)<".getline(1).">"
-" echomsg "Decho: line(.)=".line(".")
- if line("$") == 1 && getline(1) == ""
-" echomsg "Decho: RestoreWinPosn : empty buffer"
- return ""
- endif
- let so_keep = &l:so
- let siso_keep = &l:siso
- let ss_keep = &l:ss
- setlocal so=0 siso=0 ss=0
-
- if a:0 == 0 || a:1 == ""
- " use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
- if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
-" echomsg "Decho: using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">"
- try
- exe s:modifier.b:cecutil_winposn{b:cecutil_iwinposn}
- catch /^Vim\%((\a\+)\)\=:E749/
- " ignore empty buffer error messages
- endtry
- " normally drop top-of-stack by one
- " but while new top-of-stack doesn't exist
- " drop top-of-stack index by one again
- if b:cecutil_iwinposn >= 1
- unlet b:cecutil_winposn{b:cecutil_iwinposn}
- let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
- while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}")
- let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
- endwhile
- if b:cecutil_iwinposn < 1
- unlet b:cecutil_iwinposn
- endif
- endif
- else
- echohl WarningMsg
- echomsg "***warning*** need to SaveWinPosn first!"
- echohl None
- endif
-
- else " handle input argument
-" echomsg "Decho: using input a:1<".a:1.">"
- " use window position passed to this function
- exe a:1
- " remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
- if exists("b:cecutil_iwinposn")
- let jwinposn= b:cecutil_iwinposn
- while jwinposn >= 1 " search for a:1 in iwinposn..1
- if exists("b:cecutil_winposn{jwinposn}") " if it exists
- if a:1 == b:cecutil_winposn{jwinposn} " and the pattern matches
- unlet b:cecutil_winposn{jwinposn} " unlet it
- if jwinposn == b:cecutil_iwinposn " if at top-of-stack
- let b:cecutil_iwinposn= b:cecutil_iwinposn - 1 " drop stacktop by one
- endif
- endif
- endif
- let jwinposn= jwinposn - 1
- endwhile
- endif
- endif
-
- " Seems to be something odd: vertical motions after RWP
- " cause jump to first column. The following fixes that.
- " Note: was using wincol()>1, but with signs, a cursor
- " at column 1 yields wincol()==3. Beeping ensued.
- let vekeep= &ve
- set ve=all
- if virtcol('.') > 1
- exe s:modifier."norm! hl"
- elseif virtcol(".") < virtcol("$")
- exe s:modifier."norm! lh"
- endif
- let &ve= vekeep
-
- let &l:so = so_keep
- let &l:siso = siso_keep
- let &l:ss = ss_keep
-
-" echomsg "Decho: RestoreWinPosn"
-endfun
-
-" ---------------------------------------------------------------------
-" s:WinLineRestore: {{{2
-fun! s:WinLineRestore(swwline)
-" echomsg "Decho: s:WinLineRestore(swwline=".a:swwline.")"
- while winline() < a:swwline
- let curwinline= winline()
- exe s:modifier."norm! \<c-y>"
- if curwinline == winline()
- break
- endif
- endwhile
-" echomsg "Decho: s:WinLineRestore"
-endfun
-
-" ---------------------------------------------------------------------
-" GoWinbufnr: go to window holding given buffer (by number) {{{2
-" Prefers current window; if its buffer number doesn't match,
-" then will try from topleft to bottom right
-fun! GoWinbufnr(bufnum)
-" call Dfunc("GoWinbufnr(".a:bufnum.")")
- if winbufnr(0) == a:bufnum
-" call Dret("GoWinbufnr : winbufnr(0)==a:bufnum")
- return
- endif
- winc t
- let first=1
- while winbufnr(0) != a:bufnum && (first || winnr() != 1)
- winc w
- let first= 0
- endwhile
-" call Dret("GoWinbufnr")
-endfun
-
-" ---------------------------------------------------------------------
-" SaveMark: sets up a string saving a mark position. {{{2
-" For example, SaveMark("a")
-" Also sets up a global variable, g:savemark_{markname}
-fun! SaveMark(markname)
-" call Dfunc("SaveMark(markname<".a:markname.">)")
- let markname= a:markname
- if strpart(markname,0,1) !~ '\a'
- let markname= strpart(markname,1,1)
- endif
-" call Decho("markname=".markname)
-
- let lzkeep = &lz
- set lz
-
- if 1 <= line("'".markname) && line("'".markname) <= line("$")
- let winposn = SaveWinPosn(0)
- exe s:modifier."norm! `".markname
- let savemark = SaveWinPosn(0)
- let g:savemark_{markname} = savemark
- let savemark = markname.savemark
- call RestoreWinPosn(winposn)
- else
- let g:savemark_{markname} = ""
- let savemark = ""
- endif
-
- let &lz= lzkeep
-
-" call Dret("SaveMark : savemark<".savemark.">")
- return savemark
-endfun
-
-" ---------------------------------------------------------------------
-" RestoreMark: {{{2
-" call RestoreMark("a") -or- call RestoreMark(savemark)
-fun! RestoreMark(markname)
-" call Dfunc("RestoreMark(markname<".a:markname.">)")
-
- if strlen(a:markname) <= 0
-" call Dret("RestoreMark : no such mark")
- return
- endif
- let markname= strpart(a:markname,0,1)
- if markname !~ '\a'
- " handles 'a -> a styles
- let markname= strpart(a:markname,1,1)
- endif
-" call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname))
-
- let lzkeep = &lz
- set lz
- let winposn = SaveWinPosn(0)
-
- if strlen(a:markname) <= 2
- if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0
- " use global variable g:savemark_{markname}
-" call Decho("use savemark list")
- call RestoreWinPosn(g:savemark_{markname})
- exe "norm! m".markname
- endif
- else
- " markname is a savemark command (string)
-" call Decho("use savemark command")
- let markcmd= strpart(a:markname,1)
- call RestoreWinPosn(markcmd)
- exe "norm! m".markname
- endif
-
- call RestoreWinPosn(winposn)
- let &lz = lzkeep
-
-" call Dret("RestoreMark")
-endfun
-
-" ---------------------------------------------------------------------
-" DestroyMark: {{{2
-" call DestroyMark("a") -- destroys mark
-fun! DestroyMark(markname)
-" call Dfunc("DestroyMark(markname<".a:markname.">)")
-
- " save options and set to standard values
- let reportkeep= &report
- let lzkeep = &lz
- set lz report=10000
-
- let markname= strpart(a:markname,0,1)
- if markname !~ '\a'
- " handles 'a -> a styles
- let markname= strpart(a:markname,1,1)
- endif
-" call Decho("markname=".markname)
-
- let curmod = &mod
- let winposn = SaveWinPosn(0)
- 1
- let lineone = getline(".")
- exe "k".markname
- d
- put! =lineone
- let &mod = curmod
- call RestoreWinPosn(winposn)
-
- " restore options to user settings
- let &report = reportkeep
- let &lz = lzkeep
-
-" call Dret("DestroyMark")
-endfun
-
-" ---------------------------------------------------------------------
-" QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{2
-" However, <q-args> doesn't split at all, so this one returns a list
-" with splits at all whitespace (only!), plus a leading length-of-list.
-" The resulting list: qarglist[0] corresponds to a:0
-" qarglist[i] corresponds to a:{i}
-fun! QArgSplitter(qarg)
-" call Dfunc("QArgSplitter(qarg<".a:qarg.">)")
- let qarglist = split(a:qarg)
- let qarglistlen = len(qarglist)
- let qarglist = insert(qarglist,qarglistlen)
-" call Dret("QArgSplitter ".string(qarglist))
- return qarglist
-endfun
-
-" ---------------------------------------------------------------------
-" ListWinPosn: {{{2
-"fun! ListWinPosn() " Decho
-" if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0 " Decho
-" call Decho("nothing on SWP stack") " Decho
-" else " Decho
-" let jwinposn= b:cecutil_iwinposn " Decho
-" while jwinposn >= 1 " Decho
-" if exists("b:cecutil_winposn{jwinposn}") " Decho
-" call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho
-" else " Decho
-" call Decho("winposn{".jwinposn."} -- doesn't exist") " Decho
-" endif " Decho
-" let jwinposn= jwinposn - 1 " Decho
-" endwhile " Decho
-" endif " Decho
-"endfun " Decho
-"com! -nargs=0 LWP call ListWinPosn() " Decho
-
-" ---------------------------------------------------------------------
-" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{2
-" which can be used to restore user maps later with
-" call RestoreUserMaps()
-"
-" mapmode - see :help maparg for details (n v o i c l "")
-" ex. "n" = Normal
-" The letters "b" and "u" are optional prefixes;
-" The "u" means that the map will also be unmapped
-" The "b" means that the map has a <buffer> qualifier
-" ex. "un" = Normal + unmapping
-" ex. "bn" = Normal + <buffer>
-" ex. "bun" = Normal + <buffer> + unmapping
-" ex. "ubn" = Normal + <buffer> + unmapping
-" maplead - see mapchx
-" mapchx - "<something>" handled as a single map item.
-" ex. "<left>"
-" - "string" a string of single letters which are actually
-" multiple two-letter maps (using the maplead:
-" maplead . each_character_in_string)
-" ex. maplead="\" and mapchx="abc" saves user mappings for
-" \a, \b, and \c
-" Of course, if maplead is "", then for mapchx="abc",
-" mappings for a, b, and c are saved.
-" - :something handled as a single map item, w/o the ":"
-" ex. mapchx= ":abc" will save a mapping for "abc"
-" suffix - a string unique to your plugin
-" ex. suffix= "DrawIt"
-fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
-" call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)")
-
- if !exists("s:restoremap_{a:suffix}")
- " initialize restoremap_suffix to null string
- let s:restoremap_{a:suffix}= ""
- endif
-
- " set up dounmap: if 1, then save and unmap (a:mapmode leads with a "u")
- " if 0, save only
- let mapmode = a:mapmode
- let dounmap = 0
- let dobuffer = ""
- while mapmode =~ '^[bu]'
- if mapmode =~ '^u'
- let dounmap = 1
- let mapmode = strpart(a:mapmode,1)
- elseif mapmode =~ '^b'
- let dobuffer = "<buffer> "
- let mapmode = strpart(a:mapmode,1)
- endif
- endwhile
-" call Decho("dounmap=".dounmap." dobuffer<".dobuffer.">")
-
- " save single map :...something...
- if strpart(a:mapchx,0,1) == ':'
-" call Decho("save single map :...something...")
- let amap= strpart(a:mapchx,1)
- if amap == "|" || amap == "\<c-v>"
- let amap= "\<c-v>".amap
- endif
- let amap = a:maplead.amap
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:sil! ".mapmode."unmap ".dobuffer.amap
- if maparg(amap,mapmode) != ""
- let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".dobuffer.amap." ".maprhs
- endif
- if dounmap
- exe "sil! ".mapmode."unmap ".dobuffer.amap
- endif
-
- " save single map <something>
- elseif strpart(a:mapchx,0,1) == '<'
-" call Decho("save single map <something>")
- let amap = a:mapchx
- if amap == "|" || amap == "\<c-v>"
- let amap= "\<c-v>".amap
-" call Decho("amap[[".amap."]]")
- endif
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".mapmode."unmap ".dobuffer.amap
- if maparg(a:mapchx,mapmode) != ""
- let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
- endif
- if dounmap
- exe "sil! ".mapmode."unmap ".dobuffer.amap
- endif
-
- " save multiple maps
- else
-" call Decho("save multiple maps")
- let i= 1
- while i <= strlen(a:mapchx)
- let amap= a:maplead.strpart(a:mapchx,i-1,1)
- if amap == "|" || amap == "\<c-v>"
- let amap= "\<c-v>".amap
- endif
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|sil! ".mapmode."unmap ".dobuffer.amap
- if maparg(amap,mapmode) != ""
- let maprhs = substitute(maparg(amap,mapmode),'|','<bar>','ge')
- let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".dobuffer.amap." ".maprhs
- endif
- if dounmap
- exe "sil! ".mapmode."unmap ".dobuffer.amap
- endif
- let i= i + 1
- endwhile
- endif
-" call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix})
-endfun
-
-" ---------------------------------------------------------------------
-" RestoreUserMaps: {{{2
-" Used to restore user maps saved by SaveUserMaps()
-fun! RestoreUserMaps(suffix)
-" call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
- if exists("s:restoremap_{a:suffix}")
- let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
- if s:restoremap_{a:suffix} != ""
-" call Decho("exe ".s:restoremap_{a:suffix})
- exe "sil! ".s:restoremap_{a:suffix}
- endif
- unlet s:restoremap_{a:suffix}
- endif
-" call Dret("RestoreUserMaps")
-endfun
-
-" ==============
-" Restore: {{{1
-" ==============
-let &cpo= s:keepcpo
-unlet s:keepcpo
-
-" ================
-" Modelines: {{{1
-" ================
-" vim: ts=4 fdm=marker
diff --git a/Editor/vim/plugin/surround.vim b/Editor/vim/plugin/surround.vim
deleted file mode 100644
index 05b1c5c..0000000
--- a/Editor/vim/plugin/surround.vim
+++ /dev/null
@@ -1,588 +0,0 @@
-" surround.vim - Surroundings
-" Author: Tim Pope <http://tpo.pe/>
-" Version: 2.0
-" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim
-
-if exists("g:loaded_surround") || &cp || v:version < 700
- finish
-endif
-let g:loaded_surround = 1
-
-" Input functions {{{1
-
-function! s:getchar()
- let c = getchar()
- if c =~ '^\d\+$'
- let c = nr2char(c)
- endif
- return c
-endfunction
-
-function! s:inputtarget()
- let c = s:getchar()
- while c =~ '^\d\+$'
- let c .= s:getchar()
- endwhile
- if c == " "
- let c .= s:getchar()
- endif
- if c =~ "\<Esc>\|\<C-C>\|\0"
- return ""
- else
- return c
- endif
-endfunction
-
-function! s:inputreplacement()
- let c = s:getchar()
- if c == " "
- let c .= s:getchar()
- endif
- if c =~ "\<Esc>" || c =~ "\<C-C>"
- return ""
- else
- return c
- endif
-endfunction
-
-function! s:beep()
- exe "norm! \<Esc>"
- return ""
-endfunction
-
-function! s:redraw()
- redraw
- return ""
-endfunction
-
-" }}}1
-
-" Wrapping functions {{{1
-
-function! s:extractbefore(str)
- if a:str =~ '\r'
- return matchstr(a:str,'.*\ze\r')
- else
- return matchstr(a:str,'.*\ze\n')
- endif
-endfunction
-
-function! s:extractafter(str)
- if a:str =~ '\r'
- return matchstr(a:str,'\r\zs.*')
- else
- return matchstr(a:str,'\n\zs.*')
- endif
-endfunction
-
-function! s:fixindent(str,spc)
- let str = substitute(a:str,'\t',repeat(' ',&sw),'g')
- let spc = substitute(a:spc,'\t',repeat(' ',&sw),'g')
- let str = substitute(str,'\(\n\|\%^\).\@=','\1'.spc,'g')
- if ! &et
- let str = substitute(str,'\s\{'.&ts.'\}',"\t",'g')
- endif
- return str
-endfunction
-
-function! s:process(string)
- let i = 0
- for i in range(7)
- let repl_{i} = ''
- let m = matchstr(a:string,nr2char(i).'.\{-\}\ze'.nr2char(i))
- if m != ''
- let m = substitute(strpart(m,1),'\r.*','','')
- let repl_{i} = input(substitute(m,':\s*$','','').': ')
- endif
- endfor
- let s = ""
- let i = 0
- while i < strlen(a:string)
- let char = strpart(a:string,i,1)
- if char2nr(char) < 8
- let next = stridx(a:string,char,i+1)
- if next == -1
- let s .= char
- else
- let insertion = repl_{char2nr(char)}
- let subs = strpart(a:string,i+1,next-i-1)
- let subs = matchstr(subs,'\r.*')
- while subs =~ '^\r.*\r'
- let sub = matchstr(subs,"^\r\\zs[^\r]*\r[^\r]*")
- let subs = strpart(subs,strlen(sub)+1)
- let r = stridx(sub,"\r")
- let insertion = substitute(insertion,strpart(sub,0,r),strpart(sub,r+1),'')
- endwhile
- let s .= insertion
- let i = next
- endif
- else
- let s .= char
- endif
- let i += 1
- endwhile
- return s
-endfunction
-
-function! s:wrap(string,char,type,...)
- let keeper = a:string
- let newchar = a:char
- let s:tag = ""
- let type = a:type
- let linemode = type ==# 'V' ? 1 : 0
- let special = a:0 ? a:1 : 0
- let before = ""
- let after = ""
- if type ==# "V"
- let initspaces = matchstr(keeper,'\%^\s*')
- else
- let initspaces = matchstr(getline('.'),'\%^\s*')
- endif
- let pairs = "b()B{}r[]a<>"
- let extraspace = ""
- if newchar =~ '^ '
- let newchar = strpart(newchar,1)
- let extraspace = ' '
- endif
- let idx = stridx(pairs,newchar)
- if newchar == ' '
- let before = ''
- let after = ''
- elseif exists("b:surround_".char2nr(newchar))
- let all = s:process(b:surround_{char2nr(newchar)})
- let before = s:extractbefore(all)
- let after = s:extractafter(all)
- elseif exists("g:surround_".char2nr(newchar))
- let all = s:process(g:surround_{char2nr(newchar)})
- let before = s:extractbefore(all)
- let after = s:extractafter(all)
- elseif newchar ==# "p"
- let before = "\n"
- let after = "\n\n"
- elseif newchar ==# 's'
- let before = ' '
- let after = ''
- elseif newchar ==# ':'
- let before = ':'
- let after = ''
- elseif newchar =~# "[tT\<C-T><,]"
- let dounmapp = 0
- let dounmapb = 0
- if !maparg(">","c")
- let dounmapb = 1
- " Hide from AsNeeded
- exe "cn"."oremap > <CR>"
- endif
- let default = ""
- if newchar ==# "T"
- if !exists("s:lastdel")
- let s:lastdel = ""
- endif
- let default = matchstr(s:lastdel,'<\zs.\{-\}\ze>')
- endif
- let tag = input("<",default)
- echo "<".substitute(tag,'>*$','>','')
- if dounmapb
- silent! cunmap >
- endif
- let s:tag = tag
- if tag != ""
- let tag = substitute(tag,'>*$','','')
- let s:tag = tag . '>'
- let before = '<'.tag.'>'
- if tag =~ '/$'
- let after = ''
- else
- let after = '</'.substitute(tag,' .*','','').'>'
- endif
- if newchar == "\<C-T>" || newchar == ","
- if type ==# "v" || type ==# "V"
- let before .= "\n\t"
- endif
- if type ==# "v"
- let after = "\n". after
- endif
- endif
- endif
- elseif newchar ==# 'l' || newchar == '\'
- " LaTeX
- let env = input('\begin{')
- let env = '{' . env
- let env .= s:closematch(env)
- echo '\begin'.env
- if env != ""
- let before = '\begin'.env
- let after = '\end'.matchstr(env,'[^}]*').'}'
- endif
- elseif newchar ==# 'f' || newchar ==# 'F'
- let fnc = input('function: ')
- if fnc != ""
- let before = substitute(fnc,'($','','').'('
- let after = ')'
- if newchar ==# 'F'
- let before .= ' '
- let after = ' ' . after
- endif
- endif
- elseif newchar ==# "\<C-F>"
- let fnc = input('function: ')
- let before = '('.fnc.' '
- let after = ')'
- elseif idx >= 0
- let spc = (idx % 3) == 1 ? " " : ""
- let idx = idx / 3 * 3
- let before = strpart(pairs,idx+1,1) . spc
- let after = spc . strpart(pairs,idx+2,1)
- elseif newchar == "\<C-[>" || newchar == "\<C-]>"
- let before = "{\n\t"
- let after = "\n}"
- elseif newchar !~ '\a'
- let before = newchar
- let after = newchar
- else
- let before = ''
- let after = ''
- endif
- let after = substitute(after ,'\n','\n'.initspaces,'g')
- if type ==# 'V' || (special && type ==# "v")
- let before = substitute(before,' \+$','','')
- let after = substitute(after ,'^ \+','','')
- if after !~ '^\n'
- let after = initspaces.after
- endif
- if keeper !~ '\n$' && after !~ '^\n'
- let keeper .= "\n"
- elseif keeper =~ '\n$' && after =~ '^\n'
- let after = strpart(after,1)
- endif
- if before !~ '\n\s*$'
- let before .= "\n"
- if special
- let before .= "\t"
- endif
- endif
- endif
- if type ==# 'V'
- let before = initspaces.before
- endif
- if before =~ '\n\s*\%$'
- if type ==# 'v'
- let keeper = initspaces.keeper
- endif
- let padding = matchstr(before,'\n\zs\s\+\%$')
- let before = substitute(before,'\n\s\+\%$','\n','')
- let keeper = s:fixindent(keeper,padding)
- endif
- if type ==# 'V'
- let keeper = before.keeper.after
- elseif type =~ "^\<C-V>"
- " Really we should be iterating over the buffer
- let repl = substitute(before,'[\\~]','\\&','g').'\1'.substitute(after,'[\\~]','\\&','g')
- let repl = substitute(repl,'\n',' ','g')
- let keeper = substitute(keeper."\n",'\(.\{-\}\)\(\n\)',repl.'\n','g')
- let keeper = substitute(keeper,'\n\%$','','')
- else
- let keeper = before.extraspace.keeper.extraspace.after
- endif
- return keeper
-endfunction
-
-function! s:wrapreg(reg,char,...)
- let orig = getreg(a:reg)
- let type = substitute(getregtype(a:reg),'\d\+$','','')
- let special = a:0 ? a:1 : 0
- let new = s:wrap(orig,a:char,type,special)
- call setreg(a:reg,new,type)
-endfunction
-" }}}1
-
-function! s:insert(...) " {{{1
- " Optional argument causes the result to appear on 3 lines, not 1
- let linemode = a:0 ? a:1 : 0
- let char = s:inputreplacement()
- while char == "\<CR>" || char == "\<C-S>"
- " TODO: use total count for additional blank lines
- let linemode += 1
- let char = s:inputreplacement()
- endwhile
- if char == ""
- return ""
- endif
- let cb_save = &clipboard
- set clipboard-=unnamed clipboard-=unnamedplus
- let reg_save = @@
- call setreg('"',"\r",'v')
- call s:wrapreg('"',char,linemode)
- " If line mode is used and the surrounding consists solely of a suffix,
- " remove the initial newline. This fits a use case of mine but is a
- " little inconsistent. Is there anyone that would prefer the simpler
- " behavior of just inserting the newline?
- if linemode && match(getreg('"'),'^\n\s*\zs.*') == 0
- call setreg('"',matchstr(getreg('"'),'^\n\s*\zs.*'),getregtype('"'))
- endif
- " This can be used to append a placeholder to the end
- if exists("g:surround_insert_tail")
- call setreg('"',g:surround_insert_tail,"a".getregtype('"'))
- endif
- if col('.') >= col('$')
- norm! ""p
- else
- norm! ""P
- endif
- if linemode
- call s:reindent()
- endif
- norm! `]
- call search('\r','bW')
- let @@ = reg_save
- let &clipboard = cb_save
- return "\<Del>"
-endfunction " }}}1
-
-function! s:reindent() " {{{1
- if exists("b:surround_indent") ? b:surround_indent : (!exists("g:surround_indent") || g:surround_indent)
- silent norm! '[=']
- endif
-endfunction " }}}1
-
-function! s:dosurround(...) " {{{1
- let scount = v:count1
- let char = (a:0 ? a:1 : s:inputtarget())
- let spc = ""
- if char =~ '^\d\+'
- let scount = scount * matchstr(char,'^\d\+')
- let char = substitute(char,'^\d\+','','')
- endif
- if char =~ '^ '
- let char = strpart(char,1)
- let spc = 1
- endif
- if char == 'a'
- let char = '>'
- endif
- if char == 'r'
- let char = ']'
- endif
- let newchar = ""
- if a:0 > 1
- let newchar = a:2
- if newchar == "\<Esc>" || newchar == "\<C-C>" || newchar == ""
- return s:beep()
- endif
- endif
- let cb_save = &clipboard
- set clipboard-=unnamed clipboard-=unnamedplus
- let append = ""
- let original = getreg('"')
- let otype = getregtype('"')
- call setreg('"',"")
- let strcount = (scount == 1 ? "" : scount)
- if char == '/'
- exe 'norm! '.strcount.'[/d'.strcount.']/'
- elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>"''`]'
- exe 'norm! T'.char
- if getline('.')[col('.')-1] == char
- exe 'norm! l'
- endif
- exe 'norm! dt'.char
- else
- exe 'norm! d'.strcount.'i'.char
- endif
- let keeper = getreg('"')
- let okeeper = keeper " for reindent below
- if keeper == ""
- call setreg('"',original,otype)
- let &clipboard = cb_save
- return ""
- endif
- let oldline = getline('.')
- let oldlnum = line('.')
- if char ==# "p"
- call setreg('"','','V')
- elseif char ==# "s" || char ==# "w" || char ==# "W"
- " Do nothing
- call setreg('"','')
- elseif char =~ "[\"'`]"
- exe "norm! i \<Esc>d2i".char
- call setreg('"',substitute(getreg('"'),' ','',''))
- elseif char == '/'
- norm! "_x
- call setreg('"','/**/',"c")
- let keeper = substitute(substitute(keeper,'^/\*\s\=','',''),'\s\=\*$','','')
- elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>]'
- exe 'norm! F'.char
- exe 'norm! df'.char
- else
- " One character backwards
- call search('.','bW')
- exe "norm! da".char
- endif
- let removed = getreg('"')
- let rem2 = substitute(removed,'\n.*','','')
- let oldhead = strpart(oldline,0,strlen(oldline)-strlen(rem2))
- let oldtail = strpart(oldline, strlen(oldline)-strlen(rem2))
- let regtype = getregtype('"')
- if char =~# '[\[({<T]' || spc
- let keeper = substitute(keeper,'^\s\+','','')
- let keeper = substitute(keeper,'\s\+$','','')
- endif
- if col("']") == col("$") && col('.') + 1 == col('$')
- if oldhead =~# '^\s*$' && a:0 < 2
- let keeper = substitute(keeper,'\%^\n'.oldhead.'\(\s*.\{-\}\)\n\s*\%$','\1','')
- endif
- let pcmd = "p"
- else
- let pcmd = "P"
- endif
- if line('.') + 1 < oldlnum && regtype ==# "V"
- let pcmd = "p"
- endif
- call setreg('"',keeper,regtype)
- if newchar != ""
- call s:wrapreg('"',newchar)
- endif
- silent exe 'norm! ""'.pcmd.'`['
- if removed =~ '\n' || okeeper =~ '\n' || getreg('"') =~ '\n'
- call s:reindent()
- endif
- if getline('.') =~ '^\s\+$' && keeper =~ '^\s*\n'
- silent norm! cc
- endif
- call setreg('"',original,otype)
- let s:lastdel = removed
- let &clipboard = cb_save
- if newchar == ""
- silent! call repeat#set("\<Plug>Dsurround".char,scount)
- else
- silent! call repeat#set("\<Plug>Csurround".char.newchar.s:tag,scount)
- endif
-endfunction " }}}1
-
-function! s:changesurround() " {{{1
- let a = s:inputtarget()
- if a == ""
- return s:beep()
- endif
- let b = s:inputreplacement()
- if b == ""
- return s:beep()
- endif
- call s:dosurround(a,b)
-endfunction " }}}1
-
-function! s:opfunc(type,...) " {{{1
- let char = s:inputreplacement()
- if char == ""
- return s:beep()
- endif
- let reg = '"'
- let sel_save = &selection
- let &selection = "inclusive"
- let cb_save = &clipboard
- set clipboard-=unnamed clipboard-=unnamedplus
- let reg_save = getreg(reg)
- let reg_type = getregtype(reg)
- let type = a:type
- if a:type == "char"
- silent exe 'norm! v`[o`]"'.reg.'y'
- let type = 'v'
- elseif a:type == "line"
- silent exe 'norm! `[V`]"'.reg.'y'
- let type = 'V'
- elseif a:type ==# "v" || a:type ==# "V" || a:type ==# "\<C-V>"
- let &selection = sel_save
- let ve = &virtualedit
- if !(a:0 && a:1)
- set virtualedit=
- endif
- silent exe 'norm! gv"'.reg.'y'
- let &virtualedit = ve
- elseif a:type =~ '^\d\+$'
- let type = 'v'
- silent exe 'norm! ^v'.a:type.'$h"'.reg.'y'
- if mode() ==# 'v'
- norm! v
- return s:beep()
- endif
- else
- let &selection = sel_save
- let &clipboard = cb_save
- return s:beep()
- endif
- let keeper = getreg(reg)
- if type ==# "v" && a:type !=# "v"
- let append = matchstr(keeper,'\_s\@<!\s*$')
- let keeper = substitute(keeper,'\_s\@<!\s*$','','')
- endif
- call setreg(reg,keeper,type)
- call s:wrapreg(reg,char,a:0 && a:1)
- if type ==# "v" && a:type !=# "v" && append != ""
- call setreg(reg,append,"ac")
- endif
- silent exe 'norm! gv'.(reg == '"' ? '' : '"' . reg).'p`['
- if type ==# 'V' || (getreg(reg) =~ '\n' && type ==# 'v')
- call s:reindent()
- endif
- call setreg(reg,reg_save,reg_type)
- let &selection = sel_save
- let &clipboard = cb_save
- if a:type =~ '^\d\+$'
- silent! call repeat#set("\<Plug>Y".(a:0 && a:1 ? "S" : "s")."surround".char.s:tag,a:type)
- else
- silent! call repeat#set("\<Plug>SurroundRepeat".char.s:tag)
- endif
-endfunction
-
-function! s:opfunc2(arg)
- call s:opfunc(a:arg,1)
-endfunction " }}}1
-
-function! s:closematch(str) " {{{1
- " Close an open (, {, [, or < on the command line.
- let tail = matchstr(a:str,'.[^\[\](){}<>]*$')
- if tail =~ '^\[.\+'
- return "]"
- elseif tail =~ '^(.\+'
- return ")"
- elseif tail =~ '^{.\+'
- return "}"
- elseif tail =~ '^<.+'
- return ">"
- else
- return ""
- endif
-endfunction " }}}1
-
-nnoremap <silent> <Plug>SurroundRepeat .
-nnoremap <silent> <Plug>Dsurround :<C-U>call <SID>dosurround(<SID>inputtarget())<CR>
-nnoremap <silent> <Plug>Csurround :<C-U>call <SID>changesurround()<CR>
-nnoremap <silent> <Plug>Yssurround :<C-U>call <SID>opfunc(v:count1)<CR>
-nnoremap <silent> <Plug>YSsurround :<C-U>call <SID>opfunc2(v:count1)<CR>
-" <C-U> discards the numerical argument but there's not much we can do with it
-nnoremap <silent> <Plug>Ysurround :<C-U>set opfunc=<SID>opfunc<CR>g@
-nnoremap <silent> <Plug>YSurround :<C-U>set opfunc=<SID>opfunc2<CR>g@
-vnoremap <silent> <Plug>VSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
-vnoremap <silent> <Plug>VgSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>
-inoremap <silent> <Plug>Isurround <C-R>=<SID>insert()<CR>
-inoremap <silent> <Plug>ISurround <C-R>=<SID>insert(1)<CR>
-
-if !exists("g:surround_no_mappings") || ! g:surround_no_mappings
- nmap ds <Plug>Dsurround
- nmap cs <Plug>Csurround
- nmap ys <Plug>Ysurround
- nmap yS <Plug>YSurround
- nmap yss <Plug>Yssurround
- nmap ySs <Plug>YSsurround
- nmap ySS <Plug>YSsurround
- xmap S <Plug>VSurround
- xmap gS <Plug>VgSurround
- if !exists("g:surround_no_insert_mappings") || ! g:surround_no_insert_mappings
- if !hasmapto("<Plug>Isurround","i") && "" == mapcheck("<C-S>","i")
- imap <C-S> <Plug>Isurround
- endif
- imap <C-G>s <Plug>Isurround
- imap <C-G>S <Plug>ISurround
- endif
-endif
-
-" vim:set ft=vim sw=2 sts=2 et: