Skip to content
Browse files

update surround

  • Loading branch information...
1 parent 2d9d803 commit ff727e601670c475ce81ca1932b85e1e0b56c3e8 @bleything committed
View
1 bundle/surround/.gitignore
@@ -0,0 +1 @@
+/doc/tags
View
97 bundle/surround/README.markdown
@@ -0,0 +1,97 @@
+surround.vim
+============
+
+Surround.vim is all about "surroundings": parentheses, brackets, quotes,
+XML tags, and more. The plugin provides mappings to easily delete,
+change and add such surroundings in pairs.
+
+It's easiest to explain with examples. Press `cs"'` inside
+
+ "Hello world!"
+
+to change it to
+
+ 'Hello world!'
+
+Now press `cs'<q>` to change it to
+
+ <q>Hello world!</q>
+
+To go full circle, press `cst"` to get
+
+ "Hello world!"
+
+To remove the delimiters entirely, press `ds"`.
+
+ Hello world!
+
+Now with the cursor on "Hello", press `ysiw]` (`iw` is a text object).
+
+ [Hello] world!
+
+Let's make that braces and add some space (use `}` instead of `{` for no
+space): `cs]{`
+
+ { Hello } world!
+
+Now wrap the entire line in parentheses with `yssb` or `yss)`.
+
+ ({ Hello } world!)
+
+Revert to the original text: `ds{ds)`
+
+ Hello world!
+
+Emphasize hello: `ysiw<em>`
+
+ <em>Hello</em> world!
+
+Finally, let's try out visual mode. Press a capital V (for linewise
+visual mode) followed by `S<p class="important">`.
+
+ <p class="important">
+ <em>Hello</em> world!
+ </p>
+
+This plugin is very powerful for HTML and XML editing, a niche which
+currently seems underfilled in Vim land. (As opposed to HTML/XML
+*inserting*, for which many plugins are available). Adding, changing,
+and removing pairs of tags simultaneously is a breeze.
+
+The `.` command will work with `ds`, `cs`, and `yss` if you install
+[repeat.vim](https://github.com/tpope/vim-repeat).
+
+Installation
+------------
+
+If you don't have a preferred installation method, I recommend
+installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
+then simply copy and paste:
+
+ cd ~/.vim/bundle
+ git clone git://github.com/tpope/vim-surround.git
+
+Once help tags have been generated, you can view the manual with
+`:help surround`.
+
+Contributing
+------------
+
+See the contribution guidelines for
+[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).
+
+Self-Promotion
+--------------
+
+Like surround.vim? Follow the repository on
+[GitHub](https://github.com/tpope/vim-surround) and vote for it on
+[vim.org](http://www.vim.org/scripts/script.php?script_id=1697). And if
+you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
+[Twitter](http://twitter.com/tpope) and
+[GitHub](https://github.com/tpope).
+
+License
+-------
+
+Copyright (c) Tim Pope. Distributed under the same terms as Vim itself.
+See `:help license`.
View
15 bundle/surround/doc/surround.txt
@@ -1,6 +1,6 @@
*surround.txt* Plugin for deleting, changing, and adding "surroundings"
-Author: Tim Pope <vimNOSPAM@tpope.org> *surround-author*
+Author: Tim Pope <http://tpo.pe/>
License: Same terms as Vim itself (see |license|)
This plugin is only available if 'compatible' is not set.
@@ -78,15 +78,6 @@ 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).
-Additionally, there is a legacy "s" or *vs* mapping which is basically the
-same as |vS|. Due to popular demand of wanting to use "s" as Vim does to mean
-replacing the selection (also available as "c"), this mapping is going away.
-If you were one of these people and would like to disable "s" with the current
-release, indicate this to surround.vim by assigning the "s" mapping to
-something else.
->
- xmap <Leader>s <Plug>Vsurround
-<
*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
@@ -100,9 +91,7 @@ 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.
-In order for a target to work, the corresponding text object must be
-supported in the version of Vim used (Vim 7 adds several text objects, and
-thus is highly recommended). All targets are currently just one character.
+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
View
2 bundle/surround/doc/tags
@@ -3,7 +3,6 @@ ds surround.txt /*ds*
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-author surround.txt /*surround-author*
surround-customizing surround.txt /*surround-customizing*
surround-issues surround.txt /*surround-issues*
surround-mappings surround.txt /*surround-mappings*
@@ -12,7 +11,6 @@ surround-targets surround.txt /*surround-targets*
surround.txt surround.txt /*surround.txt*
vS surround.txt /*vS*
vgS surround.txt /*vgS*
-vs surround.txt /*vs*
yS surround.txt /*yS*
ySS surround.txt /*ySS*
ys surround.txt /*ys*
View
128 bundle/surround/plugin/surround.vim
@@ -1,28 +1,13 @@
" surround.vim - Surroundings
-" Author: Tim Pope <vimNOSPAM@tpope.org>
+" Author: Tim Pope <http://tpo.pe/>
" Version: 1.90
" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim
-"
-" See surround.txt for help. This can be accessed by doing
-"
-" :helptags ~/.vim/doc
-" :help surround
-"
-" Licensed under the same terms as Vim itself.
-" ============================================================================
-
-" Exit quickly when:
-" - this plugin was already loaded or disabled
-" - when 'compatible' is set
-if (exists("g:loaded_surround") && g:loaded_surround) || &cp
+if exists("g:loaded_surround") || &cp || v:version < 700
finish
endif
let g:loaded_surround = 1
-let s:cpo_save = &cpo
-set cpo&vim
-
" Input functions {{{1
function! s:getchar()
@@ -36,10 +21,10 @@ endfunction
function! s:inputtarget()
let c = s:getchar()
while c =~ '^\d\+$'
- let c = c . s:getchar()
+ let c .= s:getchar()
endwhile
if c == " "
- let c = c . s:getchar()
+ let c .= s:getchar()
endif
if c =~ "\<Esc>\|\<C-C>\|\0"
return ""
@@ -49,10 +34,9 @@ function! s:inputtarget()
endfunction
function! s:inputreplacement()
- "echo '-- SURROUND --'
let c = s:getchar()
if c == " "
- let c = c . s:getchar()
+ let c .= s:getchar()
endif
if c =~ "\<Esc>" || c =~ "\<C-C>"
return ""
@@ -91,19 +75,9 @@ function! s:extractafter(str)
endif
endfunction
-function! s:repeat(str,count)
- let cnt = a:count
- let str = ""
- while cnt > 0
- let str = str . a:str
- let cnt = cnt - 1
- endwhile
- return str
-endfunction
-
function! s:fixindent(str,spc)
- let str = substitute(a:str,'\t',s:repeat(' ',&sw),'g')
- let spc = substitute(a:spc,'\t',s:repeat(' ',&sw),'g')
+ 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')
@@ -113,15 +87,14 @@ endfunction
function! s:process(string)
let i = 0
- while i < 7
- let i = i + 1
+ 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
- endwhile
+ endfor
let s = ""
let i = 0
while i < strlen(a:string)
@@ -129,7 +102,7 @@ function! s:process(string)
if char2nr(char) < 8
let next = stridx(a:string,char,i+1)
if next == -1
- let s = s . char
+ let s .= char
else
let insertion = repl_{char2nr(char)}
let subs = strpart(a:string,i+1,next-i-1)
@@ -140,13 +113,13 @@ function! s:process(string)
let r = stridx(sub,"\r")
let insertion = substitute(insertion,strpart(sub,0,r),strpart(sub,r+1),'')
endwhile
- let s = s . insertion
+ let s .= insertion
let i = next
endif
else
- let s = s . char
+ let s .= char
endif
- let i = i + 1
+ let i += 1
endwhile
return s
endfunction
@@ -164,7 +137,6 @@ function! s:wrap(string,char,type,...)
else
let initspaces = matchstr(getline('.'),'\%^\s*')
endif
- " Duplicate b's are just placeholders (removed)
let pairs = "b()B{}r[]a<>"
let extraspace = ""
if newchar =~ '^ '
@@ -190,7 +162,7 @@ function! s:wrap(string,char,type,...)
let dounmapp = 0
let dounmapb = 0
if !maparg(">","c")
- let dounmapb= 1
+ let dounmapb = 1
" Hide from AsNeeded
exe "cn"."oremap > <CR>"
endif
@@ -216,7 +188,7 @@ function! s:wrap(string,char,type,...)
endif
if newchar == "\<C-T>" || newchar == ","
if type ==# "v" || type ==# "V"
- let before = before . "\n\t"
+ let before .= "\n\t"
endif
if type ==# "v"
let after = "\n". after
@@ -227,26 +199,20 @@ function! s:wrap(string,char,type,...)
" LaTeX
let env = input('\begin{')
let env = '{' . env
- let env = env . s:closematch(env)
+ let env .= s:closematch(env)
echo '\begin'.env
if env != ""
let before = '\begin'.env
let after = '\end'.matchstr(env,'[^}]*').'}'
endif
- "if type ==# 'v' || type ==# 'V'
- "let before = before ."\n\t"
- "endif
- "if type ==# 'v'
- "let after = "\n".initspaces.after
- "endif
elseif newchar ==# 'f' || newchar ==# 'F'
let fnc = input('function: ')
if fnc != ""
let before = substitute(fnc,'($','','').'('
let after = ')'
if newchar ==# 'F'
- let before = before . ' '
- let after = ' ' . after
+ let before .= ' '
+ let after = ' ' . after
endif
endif
elseif idx >= 0
@@ -264,9 +230,7 @@ function! s:wrap(string,char,type,...)
let before = ''
let after = ''
endif
- "let before = substitute(before,'\n','\n'.initspaces,'g')
let after = substitute(after ,'\n','\n'.initspaces,'g')
- "let after = substitute(after,"\n\\s*\<C-U>\\s*",'\n','g')
if type ==# 'V' || (special && type ==# "v")
let before = substitute(before,' \+$','','')
let after = substitute(after ,'^ \+','','')
@@ -274,14 +238,14 @@ function! s:wrap(string,char,type,...)
let after = initspaces.after
endif
if keeper !~ '\n$' && after !~ '^\n'
- let keeper = keeper . "\n"
+ let keeper .= "\n"
elseif keeper =~ '\n$' && after =~ '^\n'
let after = strpart(after,1)
endif
if before !~ '\n\s*$'
- let before = before . "\n"
+ let before .= "\n"
if special
- let before = before . "\t"
+ let before .= "\t"
endif
endif
endif
@@ -321,19 +285,16 @@ endfunction
function! s:insert(...) " {{{1
" Optional argument causes the result to appear on 3 lines, not 1
- "call inputsave()
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 = linemode + 1
+ let linemode += 1
let char = s:inputreplacement()
endwhile
- "call inputrestore()
if char == ""
return ""
endif
- "call inputsave()
let cb_save = &clipboard
set clipboard-=unnamed clipboard-=unnamedplus
let reg_save = @@
@@ -350,9 +311,6 @@ function! s:insert(...) " {{{1
if exists("g:surround_insert_tail")
call setreg('"',g:surround_insert_tail,"a".getregtype('"'))
endif
- "if linemode
- "call setreg('"',substitute(getreg('"'),'^\s\+','',''),'c')
- "endif
if col('.') >= col('$')
norm! ""p
else
@@ -502,7 +460,6 @@ function! s:opfunc(type,...) " {{{1
set clipboard-=unnamed clipboard-=unnamedplus
let reg_save = getreg(reg)
let reg_type = getregtype(reg)
- "call setreg(reg,"\n","c")
let type = a:type
if a:type == "char"
silent exe 'norm! v`[o`]"'.reg.'y'
@@ -579,48 +536,27 @@ 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())<CR>
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
- if !hasmapto("<Plug>Vsurround","v") && !hasmapto("<Plug>VSurround","v")
- if exists(":xmap")
- xmap s <Plug>Vsurround
- else
- vmap s <Plug>Vsurround
- endif
- endif
- if !hasmapto("<Plug>VSurround","v")
- if exists(":xmap")
- xmap S <Plug>VSurround
- else
- vmap S <Plug>VSurround
- endif
- endif
- if exists(":xmap")
- xmap gS <Plug>VgSurround
- else
- vmap gS <Plug>VgSurround
- endif
+ 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
+ xnoremap <silent> s :<C-U>echoerr 'surround.vim: Visual mode s has been removed in favor of S'<CR>
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
- "Implemented internally instead
- "imap <C-S><C-S> <Plug>ISurround
endif
-let &cpo = s:cpo_save
-
" vim:set ft=vim sw=2 sts=2 et:

0 comments on commit ff727e6

Please sign in to comment.
Something went wrong with that request. Please try again.