From 7959b4e930613a11404bb8d4157610c6bec93bbe Mon Sep 17 00:00:00 2001 From: Anthony Perkins Date: Mon, 3 Jun 2019 16:00:14 +0100 Subject: [PATCH] Update vim-surround to v2.1 --- pack/acp/start/vim-surround/doc/surround.txt | 7 ++- .../start/vim-surround/plugin/surround.vim | 47 +++++++++---------- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/pack/acp/start/vim-surround/doc/surround.txt b/pack/acp/start/vim-surround/doc/surround.txt index 674b6a9..41943e7 100644 --- a/pack/acp/start/vim-surround/doc/surround.txt +++ b/pack/acp/start/vim-surround/doc/surround.txt @@ -130,10 +130,9 @@ code blocks in C-style languages, (which is really ) 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. If replacing a -tag, its attributes are kept in the new tag. End your input with > to discard -the those attributes. If is used, the tags will appear on lines by -themselves. +attributes here and they will be stripped from the closing tag. End your +input by pressing or >. If 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. diff --git a/pack/acp/start/vim-surround/plugin/surround.vim b/pack/acp/start/vim-surround/plugin/surround.vim index 46f3252..44fd3c9 100644 --- a/pack/acp/start/vim-surround/plugin/surround.vim +++ b/pack/acp/start/vim-surround/plugin/surround.vim @@ -92,7 +92,7 @@ function! s:process(string) let m = matchstr(a:string,nr2char(i).'.\{-\}\ze'.nr2char(i)) if m != '' let m = substitute(strpart(m,1),'\r.*','','') - let repl_{i} = input(match(m,'\w\+$') >= 0 ? m.': ' : m) + let repl_{i} = input(substitute(m,':\s*$','','').': ') endif endfor let s = "" @@ -124,12 +124,13 @@ function! s:process(string) return s endfunction -function! s:wrap(string,char,type,removed,special) +function! s:wrap(string,char,type,...) let keeper = a:string let newchar = a:char let s:input = "" let type = a:type let linemode = type ==# 'V' ? 1 : 0 + let special = a:0 ? a:1 : 0 let before = "" let after = "" if type ==# "V" @@ -164,13 +165,13 @@ function! s:wrap(string,char,type,removed,special) elseif newchar ==# ':' let before = ':' let after = '' - elseif newchar =~# "[tT\<]" + elseif newchar =~# "[tT\<,]" let dounmapp = 0 let dounmapb = 0 if !maparg(">","c") let dounmapb = 1 " Hide from AsNeeded - exe "cn"."oremap > >" + exe "cn"."oremap > " endif let default = "" if newchar ==# "T" @@ -180,27 +181,21 @@ function! s:wrap(string,char,type,removed,special) let default = matchstr(s:lastdel,'<\zs.\{-\}\ze>') endif let tag = input("<",default) + echo "<".substitute(tag,'>*$','>','') if dounmapb silent! cunmap > endif let s:input = tag if tag != "" - let keepAttributes = ( match(tag, ">$") == -1 ) let tag = substitute(tag,'>*$','','') - let attributes = "" - if keepAttributes - let attributes = matchstr(a:removed, '<[^ \t\n]\+\zs\_.\{-\}\ze>') - endif let s:input = tag . '>' + let before = '<'.tag.'>' if tag =~ '/$' - let tag = substitute(tag, '/$', '', '') - let before = '<'.tag.attributes.' />' let after = '' else - let before = '<'.tag.attributes.'>' let after = '' endif - if newchar == "\" + if newchar == "\" || newchar == "," if type ==# "v" || type ==# "V" let before .= "\n\t" endif @@ -212,11 +207,10 @@ function! s:wrap(string,char,type,removed,special) elseif newchar ==# 'l' || newchar == '\' " LaTeX let env = input('\begin{') + let env = '{' . env + let env .= s:closematch(env) + echo '\begin'.env if env != "" - let s:input = env."\" - let env = '{' . env - let env .= s:closematch(env) - echo '\begin'.env let before = '\begin'.env let after = '\end'.matchstr(env,'[^}]*').'}' endif @@ -252,7 +246,7 @@ function! s:wrap(string,char,type,removed,special) let after = '' endif let after = substitute(after ,'\n','\n'.initspaces,'g') - if type ==# 'V' || (a:special && type ==# "v") + if type ==# 'V' || (special && type ==# "v") let before = substitute(before,' \+$','','') let after = substitute(after ,'^ \+','','') if after !~ '^\n' @@ -265,7 +259,7 @@ function! s:wrap(string,char,type,removed,special) endif if before !~ '\n\s*$' let before .= "\n" - if a:special + if special let before .= "\t" endif endif @@ -295,10 +289,11 @@ function! s:wrap(string,char,type,removed,special) return keeper endfunction -function! s:wrapreg(reg,char,removed,special) +function! s:wrapreg(reg,char,...) let orig = getreg(a:reg) let type = substitute(getregtype(a:reg),'\d\+$','','') - let new = s:wrap(orig,a:char,type,a:removed,a:special) + let special = a:0 ? a:1 : 0 + let new = s:wrap(orig,a:char,type,special) call setreg(a:reg,new,type) endfunction " }}}1 @@ -319,7 +314,7 @@ function! s:insert(...) " {{{1 set clipboard-=unnamed clipboard-=unnamedplus let reg_save = @@ call setreg('"',"\r",'v') - call s:wrapreg('"',char,"",linemode) + 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 @@ -386,7 +381,7 @@ function! s:dosurround(...) " {{{1 let strcount = (scount == 1 ? "" : scount) if char == '/' exe 'norm! '.strcount.'[/d'.strcount.']/' - elseif char =~# '[[:punct:][:space:]]' && char !~# '[][(){}<>"''`]' + elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>"''`]' exe 'norm! T'.char if getline('.')[col('.')-1] == char exe 'norm! l' @@ -416,7 +411,7 @@ function! s:dosurround(...) " {{{1 norm! "_x call setreg('"','/**/',"c") let keeper = substitute(substitute(keeper,'^/\*\s\=','',''),'\s\=\*$','','') - elseif char =~# '[[:punct:][:space:]]' && char !~# '[][(){}<>]' + elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>]' exe 'norm! F'.char exe 'norm! df'.char else @@ -447,7 +442,7 @@ function! s:dosurround(...) " {{{1 call setreg('"',keeper,regtype) if newchar != "" let special = a:0 > 2 ? a:3 : 0 - call s:wrapreg('"',newchar,removed,special) + call s:wrapreg('"',newchar, special) endif silent exe 'norm! ""'.pcmd.'`[' if removed =~ '\n' || okeeper =~ '\n' || getreg('"') =~ '\n' @@ -523,7 +518,7 @@ function! s:opfunc(type,...) " {{{1 let keeper = substitute(keeper,'\_s\@