aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncaen <mail@duncano.de>2018-01-07 00:08:04 +0100
committerDuncaen <mail@duncano.de>2018-01-07 00:08:04 +0100
commit236aa77636e41a6ce0ee7e9f9c69052ac17d9bc3 (patch)
tree2bf8873acc0ff72ab871388e81acf23b8561a345
parent6865f399495cb5b5a30c1d9ee75d69a353d9c58d (diff)
parent8ba73ff65176791801897f4bb778597c53996b80 (diff)
downloaddotfiles-236aa77636e41a6ce0ee7e9f9c69052ac17d9bc3.tar.gz
Merge commit '8ba73ff65176791801897f4bb778597c53996b80' as 'vim/pack/plugins/start/vim-commentary'
-rw-r--r--vim/pack/plugins/start/vim-commentary/.gitignore1
-rw-r--r--vim/pack/plugins/start/vim-commentary/CONTRIBUTING.markdown1
-rw-r--r--vim/pack/plugins/start/vim-commentary/README.markdown51
-rw-r--r--vim/pack/plugins/start/vim-commentary/doc/commentary.txt32
-rw-r--r--vim/pack/plugins/start/vim-commentary/plugin/commentary.vim107
5 files changed, 192 insertions, 0 deletions
diff --git a/vim/pack/plugins/start/vim-commentary/.gitignore b/vim/pack/plugins/start/vim-commentary/.gitignore
new file mode 100644
index 0000000..0a56e3f
--- /dev/null
+++ b/vim/pack/plugins/start/vim-commentary/.gitignore
@@ -0,0 +1 @@
+/doc/tags
diff --git a/vim/pack/plugins/start/vim-commentary/CONTRIBUTING.markdown b/vim/pack/plugins/start/vim-commentary/CONTRIBUTING.markdown
new file mode 100644
index 0000000..b3f0095
--- /dev/null
+++ b/vim/pack/plugins/start/vim-commentary/CONTRIBUTING.markdown
@@ -0,0 +1 @@
+See the [contribution guidelines for pathogen.vim](https://github.com/tpope/vim-pathogen/blob/master/CONTRIBUTING.markdown).
diff --git a/vim/pack/plugins/start/vim-commentary/README.markdown b/vim/pack/plugins/start/vim-commentary/README.markdown
new file mode 100644
index 0000000..5387ba6
--- /dev/null
+++ b/vim/pack/plugins/start/vim-commentary/README.markdown
@@ -0,0 +1,51 @@
+# commentary.vim
+
+Comment stuff out. Use `gcc` to comment out a line (takes a count),
+`gc` to comment out the target of a motion (for example, `gcap` to
+comment out a paragraph), `gc` in visual mode to comment out the selection,
+and `gc` in operator pending mode to target a comment. You can also use
+it as a command, either with a range like `:7,17Commentary`, or as part of a
+`:global` invocation like with `:g/TODO/Commentary`. That's it.
+
+I wrote this because 5 years after Vim added support for mapping an
+operator, I still couldn't find a commenting plugin that leveraged that
+feature (I overlooked
+[tcomment.vim](https://github.com/tomtom/tcomment_vim)). Striving for
+minimalism, it weighs in at under 100 lines of code.
+
+Oh, and it uncomments, too. The above maps actually toggle, and `gcgc`
+uncomments a set of adjacent commented lines.
+
+## 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-commentary.git
+
+Once help tags have been generated, you can view the manual with
+`:help commentary`.
+
+## FAQ
+
+> My favorite file type isn't supported!
+
+Relax! You just have to adjust `'commentstring'`:
+
+ autocmd FileType apache setlocal commentstring=#\ %s
+
+## Self-Promotion
+
+Like commentary.vim? Follow the repository on
+[GitHub](https://github.com/tpope/vim-commentary) and vote for it on
+[vim.org](http://www.vim.org/scripts/script.php?script_id=3695). 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`.
diff --git a/vim/pack/plugins/start/vim-commentary/doc/commentary.txt b/vim/pack/plugins/start/vim-commentary/doc/commentary.txt
new file mode 100644
index 0000000..b048569
--- /dev/null
+++ b/vim/pack/plugins/start/vim-commentary/doc/commentary.txt
@@ -0,0 +1,32 @@
+*commentary.txt* Comment stuff out
+
+Author: Tim Pope <http://tpo.pe/>
+License: Same terms as Vim itself (see |license|)
+
+Comment stuff out. Then uncomment it later. Relies on 'commentstring' to be
+correctly set, or uses b:commentary_format if it is set.
+
+ *gc*
+gc{motion} Comment or uncomment lines that {motion} moves over.
+
+ *gcc*
+gcc Comment or uncomment [count] lines.
+
+ *v_gc*
+{Visual}gc Comment or uncomment the highlighted lines.
+
+ *o_gc*
+gc Text object for a comment (operator pending mode
+ only.)
+
+ *gcgc* *gcu*
+gcgc Uncomment the current and adjacent commented lines.
+gcu
+
+ *:Commentary*
+:[range]Commentary Comment or uncomment [range] lines
+
+The |User| CommentaryPost autocommand fires after a successful operation and
+can be used for advanced customization.
+
+ vim:tw=78:et:ft=help:norl:
diff --git a/vim/pack/plugins/start/vim-commentary/plugin/commentary.vim b/vim/pack/plugins/start/vim-commentary/plugin/commentary.vim
new file mode 100644
index 0000000..9aa0f32
--- /dev/null
+++ b/vim/pack/plugins/start/vim-commentary/plugin/commentary.vim
@@ -0,0 +1,107 @@
+" commentary.vim - Comment stuff out
+" Maintainer: Tim Pope <http://tpo.pe/>
+" Version: 1.3
+" GetLatestVimScripts: 3695 1 :AutoInstall: commentary.vim
+
+if exists("g:loaded_commentary") || &cp || v:version < 700
+ finish
+endif
+let g:loaded_commentary = 1
+
+function! s:surroundings() abort
+ return split(get(b:, 'commentary_format', substitute(substitute(
+ \ &commentstring, '\S\zs%s',' %s','') ,'%s\ze\S', '%s ', '')), '%s', 1)
+endfunction
+
+function! s:strip_white_space(l,r,line) abort
+ let [l, r] = [a:l, a:r]
+ if l[-1:] == ' ' && stridx(a:line,l) == -1 && stridx(a:line,l[0:-2]) == 0
+ let l = l[:-2]
+ endif
+ if r[0] == ' ' && a:line[-strlen(r):] != r && a:line[1-strlen(r):] == r[1:]
+ let r = r[1:]
+ endif
+ return [l, r]
+endfunction
+
+function! s:go(type,...) abort
+ if a:0
+ let [lnum1, lnum2] = [a:type, a:1]
+ else
+ let [lnum1, lnum2] = [line("'["), line("']")]
+ endif
+
+ let [l, r] = s:surroundings()
+ let uncomment = 2
+ for lnum in range(lnum1,lnum2)
+ let line = matchstr(getline(lnum),'\S.*\s\@<!')
+ let [l, r] = s:strip_white_space(l,r,line)
+ if line != '' && (stridx(line,l) || line[strlen(line)-strlen(r) : -1] != r)
+ let uncomment = 0
+ endif
+ endfor
+
+ for lnum in range(lnum1,lnum2)
+ let line = getline(lnum)
+ if strlen(r) > 2 && l.r !~# '\\'
+ let line = substitute(line,
+ \'\M'.r[0:-2].'\zs\d\*\ze'.r[-1:-1].'\|'.l[0].'\zs\d\*\ze'.l[1:-1],
+ \'\=substitute(submatch(0)+1-uncomment,"^0$\\|^-\\d*$","","")','g')
+ endif
+ if uncomment
+ let line = substitute(line,'\S.*\s\@<!','\=submatch(0)[strlen(l):-strlen(r)-1]','')
+ else
+ let line = substitute(line,'^\%('.matchstr(getline(lnum1),'^\s*').'\|\s*\)\zs.*\S\@<=','\=l.submatch(0).r','')
+ endif
+ call setline(lnum,line)
+ endfor
+ let modelines = &modelines
+ try
+ set modelines=0
+ silent doautocmd User CommentaryPost
+ finally
+ let &modelines = modelines
+ endtry
+endfunction
+
+function! s:textobject(inner) abort
+ let [l, r] = s:surroundings()
+ let lnums = [line('.')+1, line('.')-2]
+ for [index, dir, bound, line] in [[0, -1, 1, ''], [1, 1, line('$'), '']]
+ while lnums[index] != bound && line ==# '' || !(stridx(line,l) || line[strlen(line)-strlen(r) : -1] != r)
+ let lnums[index] += dir
+ let line = matchstr(getline(lnums[index]+dir),'\S.*\s\@<!')
+ let [l, r] = s:strip_white_space(l,r,line)
+ endwhile
+ endfor
+ while (a:inner || lnums[1] != line('$')) && empty(getline(lnums[0]))
+ let lnums[0] += 1
+ endwhile
+ while a:inner && empty(getline(lnums[1]))
+ let lnums[1] -= 1
+ endwhile
+ if lnums[0] <= lnums[1]
+ execute 'normal! 'lnums[0].'GV'.lnums[1].'G'
+ endif
+endfunction
+
+xnoremap <silent> <Plug>Commentary :<C-U>call <SID>go(line("'<"),line("'>"))<CR>
+nnoremap <silent> <Plug>Commentary :<C-U>set opfunc=<SID>go<CR>g@
+nnoremap <silent> <Plug>CommentaryLine :<C-U>set opfunc=<SID>go<Bar>exe 'norm! 'v:count1.'g@_'<CR>
+onoremap <silent> <Plug>Commentary :<C-U>call <SID>textobject(0)<CR>
+nnoremap <silent> <Plug>ChangeCommentary c:<C-U>call <SID>textobject(1)<CR>
+nmap <silent> <Plug>CommentaryUndo <Plug>Commentary<Plug>Commentary
+command! -range -bar Commentary call s:go(<line1>,<line2>)
+
+if !hasmapto('<Plug>Commentary') || maparg('gc','n') ==# ''
+ xmap gc <Plug>Commentary
+ nmap gc <Plug>Commentary
+ omap gc <Plug>Commentary
+ nmap gcc <Plug>CommentaryLine
+ if maparg('c','n') ==# ''
+ nmap cgc <Plug>ChangeCommentary
+ endif
+ nmap gcu <Plug>Commentary<Plug>Commentary
+endif
+
+" vim:set et sw=2: