mirror of
https://github.com/amix/vimrc
synced 2024-11-15 00:17:07 +00:00
Updated vim plugins. Nerd tree is on the right by default
This commit is contained in:
parent
a4b4587019
commit
00f043f0de
25 changed files with 386 additions and 109 deletions
|
@ -19,7 +19,7 @@ if has('reltime')
|
|||
lockvar! g:_SYNTASTIC_START
|
||||
endif
|
||||
|
||||
let g:_SYNTASTIC_VERSION = '3.6.0-14'
|
||||
let g:_SYNTASTIC_VERSION = '3.6.0-16'
|
||||
lockvar g:_SYNTASTIC_VERSION
|
||||
|
||||
" Sanity checks {{{1
|
||||
|
|
|
@ -31,7 +31,6 @@ endfunction
|
|||
|
||||
function! SyntaxCheckers_python_prospector_GetLocList() dict
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': '--external-config merge',
|
||||
\ 'args_after': '--messages-only --absolute-paths --die-on-tool-error --zero-exit --output-format json' })
|
||||
|
||||
let errorformat = '%f:%l:%c: %m'
|
||||
|
|
|
@ -23,7 +23,9 @@ set cpo&vim
|
|||
" and http://www.xmlsoft.org/catalog.html for more information.
|
||||
|
||||
function! SyntaxCheckers_xml_xmllint_GetLocList() dict
|
||||
let makeprg = self.makeprgBuild({ 'args_after': '--xinclude --noout --postvalid' })
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': '--xinclude --postvalid',
|
||||
\ 'args_after': '--noout' })
|
||||
|
||||
let errorformat=
|
||||
\ '%E%f:%l: error : %m,' .
|
||||
|
|
|
@ -118,6 +118,7 @@ This plugin follows the standard runtime path structure, and as such it can be i
|
|||
|
||||
* [Pathogen][11]
|
||||
* `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`
|
||||
* Remember to run `:Helptags` to generate help tags
|
||||
* [NeoBundle][12]
|
||||
* `NeoBundle 'bling/vim-airline'`
|
||||
* [Vundle][13]
|
||||
|
|
|
@ -59,19 +59,22 @@ function! s:toggle_on()
|
|||
let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]
|
||||
|
||||
set tabline=%!airline#extensions#tabline#get()
|
||||
if s:buf_min_count <= 0 && s:tab_min_count <= 1
|
||||
set showtabline=2
|
||||
else
|
||||
augroup airline_tabline
|
||||
autocmd!
|
||||
augroup airline_tabline
|
||||
autocmd!
|
||||
" Invalidate cache.
|
||||
autocmd BufAdd,BufUnload * unlet! s:current_buffer_list
|
||||
|
||||
if s:buf_min_count <= 0 && s:tab_min_count <= 1
|
||||
set showtabline=2
|
||||
else
|
||||
if s:show_buffers == 1
|
||||
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(s:get_buffer_list()))
|
||||
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(s:get_buffer_list()) - 1)
|
||||
else
|
||||
autocmd TabEnter * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
|
||||
endif
|
||||
augroup END
|
||||
endif
|
||||
endif
|
||||
augroup END
|
||||
endfunction
|
||||
|
||||
function! airline#extensions#tabline#load_theme(palette)
|
||||
|
@ -130,10 +133,14 @@ function! airline#extensions#tabline#title(n)
|
|||
endfunction
|
||||
|
||||
function! airline#extensions#tabline#get_buffer_name(nr)
|
||||
return airline#extensions#tabline#{s:formatter}#format(a:nr, get(s:, 'current_buffer_list', s:get_buffer_list()))
|
||||
return airline#extensions#tabline#{s:formatter}#format(a:nr, s:get_buffer_list())
|
||||
endfunction
|
||||
|
||||
function! s:get_buffer_list()
|
||||
if exists('s:current_buffer_list')
|
||||
return s:current_buffer_list
|
||||
endif
|
||||
|
||||
let buffers = []
|
||||
let cur = bufnr('%')
|
||||
for nr in range(1, bufnr('$'))
|
||||
|
|
|
@ -2225,7 +2225,11 @@ function! s:Browse(bang,line1,count,...) abort
|
|||
elseif exists(':Browse') == 2
|
||||
return 'echomsg '.string(url).'|Browse '.url
|
||||
else
|
||||
return 'echomsg '.string(url).'|call netrw#NetrwBrowseX('.string(url).', 0)'
|
||||
if has("patch-7.4.567")
|
||||
return 'echomsg '.string(url).'|call netrw#BrowseX('.string(url).', 0)'
|
||||
else
|
||||
return 'echomsg '.string(url).'|call netrw#NetrwBrowseX('.string(url).', 0)'
|
||||
endif
|
||||
endif
|
||||
catch /^fugitive:/
|
||||
return 'echoerr v:errmsg'
|
||||
|
|
|
@ -37,20 +37,21 @@ function! GoIndent(lnum)
|
|||
let previ = indent(prevlnum)
|
||||
|
||||
let ind = previ
|
||||
let s:shiftwidth = shiftwidth()
|
||||
|
||||
if prevl =~ '[({]\s*$'
|
||||
" previous line opened a block
|
||||
let ind += &sw
|
||||
let ind += s:shiftwidth
|
||||
endif
|
||||
if prevl =~# '^\s*\(case .*\|default\):$'
|
||||
" previous line is part of a switch statement
|
||||
let ind += &sw
|
||||
let ind += s:shiftwidth
|
||||
endif
|
||||
" TODO: handle if the previous line is a label.
|
||||
|
||||
if thisl =~ '^\s*[)}]'
|
||||
" this line closed a block
|
||||
let ind -= &sw
|
||||
let ind -= s:shiftwidth
|
||||
endif
|
||||
|
||||
" Colons are tricky.
|
||||
|
@ -58,7 +59,7 @@ function! GoIndent(lnum)
|
|||
" We ignore trying to deal with jump labels because (a) they're rare, and
|
||||
" (b) they're hard to disambiguate from a composite literal key.
|
||||
if thisl =~# '^\s*\(case .*\|default\):$'
|
||||
let ind -= &sw
|
||||
let ind -= s:shiftwidth
|
||||
endif
|
||||
|
||||
return ind
|
||||
|
|
|
@ -32,6 +32,7 @@ To see what keystrokes are used for the above example, see [this issue](https://
|
|||
|
||||
## Installation
|
||||
Install using [Pathogen], [Vundle], [Neobundle], or your favorite Vim package manager.
|
||||
Requires vim 7.4 or later for full functionality.
|
||||
|
||||
## Quick Start
|
||||
Out of the box, all you need to know is a single key `Ctrl-n`. Pressing the key in Normal mode highlights the current word under the cursor in Visual mode and places a virtual cursor at the end of it. Pressing it again finds the next ocurrence and places another virtual cursor at the end of the visual selection. If you select multiple lines in Visual mode, pressing the key puts a virtual cursor at every line and leaves you in Normal mode.
|
||||
|
|
|
@ -54,6 +54,11 @@ if !hlexists(s:hi_group_visual)
|
|||
exec "highlight link ".s:hi_group_visual." Visual"
|
||||
endif
|
||||
|
||||
" Temporary buffer that is used for individual paste buffer save/restore
|
||||
" operations
|
||||
let s:paste_buffer_temporary_text = ''
|
||||
let s:paste_buffer_temporary_type = ''
|
||||
|
||||
"===============================================================================
|
||||
" Internal Mappings
|
||||
"===============================================================================
|
||||
|
@ -258,6 +263,9 @@ function! s:Cursor.new(position)
|
|||
let obj = copy(self)
|
||||
let obj.position = copy(a:position)
|
||||
let obj.visual = []
|
||||
" Stores text that was yanked after any commands in Normal or Visual mode
|
||||
let obj.paste_buffer_text = getreg('"')
|
||||
let obj.paste_buffer_type = getregtype('"')
|
||||
let obj.cursor_hi_id = s:highlight_cursor(a:position)
|
||||
let obj.visual_hi_id = 0
|
||||
let obj.line_length = col([a:position[0], '$'])
|
||||
|
@ -325,6 +333,17 @@ function! s:Cursor.remove_visual_selection() dict
|
|||
let self.visual_hi_id = 0
|
||||
endfunction
|
||||
|
||||
" Restore unnamed register from paste buffer
|
||||
function! s:Cursor.restore_unnamed_register() dict
|
||||
call setreg('"', self.paste_buffer_text, self.paste_buffer_type)
|
||||
endfunction
|
||||
|
||||
" Save contents of the unnamed register into paste buffer
|
||||
function! s:Cursor.save_unnamed_register() dict
|
||||
let self.paste_buffer_text = getreg('"')
|
||||
let self.paste_buffer_type = getregtype('"')
|
||||
endfunction
|
||||
|
||||
"===============================================================================
|
||||
" CursorManager class
|
||||
"===============================================================================
|
||||
|
@ -345,6 +364,7 @@ function! s:CursorManager.new()
|
|||
\ 'cursorline': &cursorline,
|
||||
\ 'lazyredraw': &lazyredraw,
|
||||
\ 'paste': &paste,
|
||||
\ 'clipboard': &clipboard,
|
||||
\ }
|
||||
" We save the window view when multicursor mode is entered
|
||||
let obj.saved_winview = []
|
||||
|
@ -465,9 +485,17 @@ function! s:CursorManager.update_current() dict
|
|||
exec "normal! gv\<Esc>"
|
||||
call cur.update_visual_selection(s:get_visual_region(s:pos('.')))
|
||||
elseif s:from_mode ==# 'v' || s:from_mode ==# 'V'
|
||||
" Save contents of unnamed register after each operation in Visual mode.
|
||||
" This should be executed after user input is processed, when unnamed
|
||||
" register already contains the text.
|
||||
call cur.save_unnamed_register()
|
||||
|
||||
call cur.remove_visual_selection()
|
||||
elseif s:from_mode ==# 'i' && s:to_mode ==# 'n' && self.current_index != self.size() - 1
|
||||
normal! h
|
||||
elseif s:from_mode ==# 'n'
|
||||
" Save contents of unnamed register after each operation in Normal mode.
|
||||
call cur.save_unnamed_register()
|
||||
endif
|
||||
let vdelta = line('$') - s:saved_linecount
|
||||
" If the total number of lines changed in the buffer, we need to potentially
|
||||
|
@ -551,19 +579,28 @@ endfunction
|
|||
" cursors on screen
|
||||
" paste mode needs to be switched off since it turns off a bunch of features
|
||||
" that's critical for the plugin to function
|
||||
" clipboard should not have unnamed and unnamedplus otherwise plugin cannot
|
||||
" reliably use unnamed register ('"')
|
||||
function! s:CursorManager.initialize() dict
|
||||
let self.saved_settings['virtualedit'] = &virtualedit
|
||||
let self.saved_settings['cursorline'] = &cursorline
|
||||
let self.saved_settings['lazyredraw'] = &lazyredraw
|
||||
let self.saved_settings['paste'] = &paste
|
||||
let self.saved_settings['clipboard'] = &clipboard
|
||||
let &virtualedit = "onemore"
|
||||
let &cursorline = 0
|
||||
let &lazyredraw = 1
|
||||
let &paste = 0
|
||||
set clipboard-=unnamed clipboard-=unnamedplus
|
||||
" We could have already saved the view from multiple_cursors#find
|
||||
if !self.start_from_find
|
||||
let self.saved_winview = winsaveview()
|
||||
endif
|
||||
|
||||
" Save contents and type of unnamed register upon entering multicursor mode
|
||||
" to restore it later when leaving mode
|
||||
let s:paste_buffer_temporary_text = getreg('"')
|
||||
let s:paste_buffer_temporary_type = getregtype('"')
|
||||
endfunction
|
||||
|
||||
" Restore user settings.
|
||||
|
@ -573,7 +610,15 @@ function! s:CursorManager.restore_user_settings() dict
|
|||
let &cursorline = self.saved_settings['cursorline']
|
||||
let &lazyredraw = self.saved_settings['lazyredraw']
|
||||
let &paste = self.saved_settings['paste']
|
||||
let &clipboard = self.saved_settings['clipboard']
|
||||
endif
|
||||
|
||||
" Restore original contents and type of unnamed register. This method is
|
||||
" called from reset, which calls us only when restore_setting argument is
|
||||
" true, which happens only when we leave multicursor mode. This should be
|
||||
" symmetrical to saving of unnamed register upon the start of multicursor
|
||||
" mode.
|
||||
call setreg('"', s:paste_buffer_temporary_text, s:paste_buffer_temporary_type)
|
||||
endfunction
|
||||
|
||||
" Reselect the current cursor's region in visual mode
|
||||
|
@ -814,6 +859,12 @@ function! s:process_user_input()
|
|||
call s:cm.get_current().update_line_length()
|
||||
let s:saved_linecount = line('$')
|
||||
|
||||
" Restore unnamed register only in Normal mode. This should happen before user
|
||||
" input is processed.
|
||||
if s:from_mode ==# 'n' || s:from_mode ==# 'v' || s:from_mode ==# 'V'
|
||||
call s:cm.get_current().restore_unnamed_register()
|
||||
endif
|
||||
|
||||
" Apply the user input. Note that the above could potentially change mode, we
|
||||
" use the mapping below to help us determine what the new mode is
|
||||
" Note that it's possible that \<Plug>(multiple-cursors-apply) never gets called, we have a
|
||||
|
|
|
@ -12,6 +12,7 @@ def get_file_content()
|
|||
end
|
||||
|
||||
def before(string)
|
||||
options.each { |x| vim.command(x) }
|
||||
set_file_content(string)
|
||||
end
|
||||
|
||||
|
@ -29,8 +30,198 @@ def type(string)
|
|||
end
|
||||
end
|
||||
|
||||
describe "Multiple Cursors op pending & exit from insert|visual mode" do
|
||||
let(:filename) { 'test.txt' }
|
||||
let(:options) { ['let g:multi_cursor_normal_maps = {"d": 1, "c": 1}',
|
||||
'let g:multi_cursor_exit_from_insert_mode = 0',
|
||||
'let g:multi_cursor_exit_from_visual_mode = 0'] }
|
||||
|
||||
specify "#paste from unnamed register to 3 cursors" do
|
||||
before <<-EOF
|
||||
yankme
|
||||
a b c
|
||||
a b c
|
||||
a b c
|
||||
EOF
|
||||
|
||||
type 'yiwj<C-n><C-n><C-n>vwwp<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
yankme
|
||||
a b cyankme
|
||||
a b cyankme
|
||||
a b cyankme
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer normal caw then p" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwcaw<Esc>bP<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
jan hello world
|
||||
feb hello world
|
||||
mar hello world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer normal C then ABC then p" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwCABC <Esc>p<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
hello ABC jan world
|
||||
hello ABC feb world
|
||||
hello ABC mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer normal daw then P" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwdawbP<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
jan hello world
|
||||
feb hello world
|
||||
mar hello world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer normal D then P" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwwhDbhP<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
hello world jan
|
||||
hello world feb
|
||||
hello world mar
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer normal s then p" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vws1<Esc>p<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
hello 1jan world
|
||||
hello 1feb world
|
||||
hello 1mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "Multiple Cursors" do
|
||||
let(:filename) { 'test.txt' }
|
||||
let(:options) { [] }
|
||||
|
||||
specify "#paste buffer normal x then p" do
|
||||
before <<-EOF
|
||||
jan
|
||||
feb
|
||||
mar
|
||||
EOF
|
||||
|
||||
type '<C-v>jj<C-n>xp<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
ajn
|
||||
efb
|
||||
amr
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer visual y then p" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwvelywhp<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
hello jan jan world
|
||||
hello feb feb world
|
||||
hello mar mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer initial visual y then P" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type 'wywb<C-n><C-n><C-n>p<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
jan jan world
|
||||
jan feb world
|
||||
jan mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer visual y then P" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwvely^P<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
jan hello jan world
|
||||
feb hello feb world
|
||||
mar hello mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#paste buffer visual Y then P" do
|
||||
before <<-EOF
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello mar world
|
||||
EOF
|
||||
|
||||
type '<C-n><C-n><C-n>vwvY^P<Esc>'
|
||||
|
||||
after <<-EOF
|
||||
hello jan world
|
||||
hello jan world
|
||||
hello feb world
|
||||
hello feb world
|
||||
hello mar world
|
||||
hello mar world
|
||||
EOF
|
||||
end
|
||||
|
||||
specify "#multiline replacement" do
|
||||
before <<-EOF
|
||||
|
|
|
@ -5,7 +5,7 @@ Vimrunner::RSpec.configure do |config|
|
|||
|
||||
# Use a single Vim instance for the test suite. Set to false to use an
|
||||
# instance per test (slower, but can be easier to manage).
|
||||
config.reuse_server = true
|
||||
config.reuse_server = false
|
||||
|
||||
# Decide how to start a Vim instance. In this block, an instance should be
|
||||
# spawned and set up with anything project-specific.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:map_if_not_mapped(lhs, rhs, mode)
|
||||
function! s:map_if_not_mapped(lhs, rhs, mode) abort
|
||||
let l:unique = s:overwrite ? '' : ' <unique>'
|
||||
if !hasmapto(a:rhs, a:mode)
|
||||
silent! exe a:mode . 'map' . l:unique a:lhs a:rhs
|
||||
|
|
|
@ -9,7 +9,7 @@ catch /.*/
|
|||
echoe "you're missing tlib. See install instructions at ".expand('<sfile>:h:h').'/README.md'
|
||||
endtry
|
||||
|
||||
fun! Filename(...)
|
||||
fun! Filename(...) abort
|
||||
let filename = expand('%:t:r')
|
||||
if filename == '' | return a:0 == 2 ? a:2 : '' | endif
|
||||
return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g')
|
||||
|
@ -17,7 +17,7 @@ endf
|
|||
|
||||
let s:cache = {}
|
||||
|
||||
function! snipMate#expandSnip(snip, version, col)
|
||||
function! snipMate#expandSnip(snip, version, col) abort
|
||||
let lnum = line('.')
|
||||
let col = a:col
|
||||
let line = getline(lnum)
|
||||
|
@ -76,11 +76,11 @@ function! snipMate#expandSnip(snip, version, col)
|
|||
return b:snip_state.set_stop(0)
|
||||
endfunction
|
||||
|
||||
function! snipMate#placeholder_str(num, stops)
|
||||
function! snipMate#placeholder_str(num, stops) abort
|
||||
return snipMate#sniplist_str(a:stops[a:num].placeholder, a:stops)[0]
|
||||
endfunction
|
||||
|
||||
function! snipMate#sniplist_str(snippet, stops)
|
||||
function! snipMate#sniplist_str(snippet, stops) abort
|
||||
let lines = ['']
|
||||
let pos = 0
|
||||
let add_to = 1
|
||||
|
@ -108,7 +108,7 @@ function! snipMate#sniplist_str(snippet, stops)
|
|||
return lines
|
||||
endfunction
|
||||
|
||||
function! s:build_stops(snippet, stops, lnum, col, indent)
|
||||
function! s:build_stops(snippet, stops, lnum, col, indent) abort
|
||||
let stops = a:stops
|
||||
let line = a:lnum
|
||||
let col = a:col
|
||||
|
@ -146,7 +146,7 @@ function! s:build_stops(snippet, stops, lnum, col, indent)
|
|||
return stop_count
|
||||
endfunction
|
||||
|
||||
function! s:build_loc_info(snippet, stops, line, col, indent)
|
||||
function! s:build_loc_info(snippet, stops, line, col, indent) abort
|
||||
let stops = a:stops
|
||||
let line = a:line
|
||||
let col = a:col
|
||||
|
@ -183,7 +183,7 @@ function! s:build_loc_info(snippet, stops, line, col, indent)
|
|||
return [line, col]
|
||||
endfunction
|
||||
|
||||
function! s:add_mirror(stops, id, line, col, item)
|
||||
function! s:add_mirror(stops, id, line, col, item) abort
|
||||
let stops = a:stops
|
||||
let item = a:item
|
||||
let stops[a:id].mirrors = get(stops[a:id], 'mirrors', [])
|
||||
|
@ -201,7 +201,7 @@ endfunction
|
|||
" ['triggername', 'name', 'contents']
|
||||
" if triggername is not set 'default' is assumed
|
||||
" TODO: better error checking
|
||||
fun! snipMate#ReadSnippetsFile(file)
|
||||
fun! snipMate#ReadSnippetsFile(file) abort
|
||||
let result = []
|
||||
let new_scopes = []
|
||||
if !filereadable(a:file) | return [result, new_scopes] | endif
|
||||
|
@ -245,7 +245,7 @@ fun! snipMate#ReadSnippetsFile(file)
|
|||
return [result, new_scopes]
|
||||
endf
|
||||
|
||||
function! s:GetScopes()
|
||||
function! s:GetScopes() abort
|
||||
let ret = exists('b:snipMate.scope_aliases') ? copy(b:snipMate.scope_aliases) : {}
|
||||
let global = get(g:snipMate, 'scope_aliases', {})
|
||||
for alias in keys(global)
|
||||
|
@ -262,7 +262,7 @@ endfunction
|
|||
" adds scope aliases to list.
|
||||
" returns new list
|
||||
" the aliases of aliases are added recursively
|
||||
fun! s:AddScopeAliases(list)
|
||||
fun! s:AddScopeAliases(list) abort
|
||||
let did = {}
|
||||
let scope_aliases = s:GetScopes()
|
||||
let new = a:list
|
||||
|
@ -282,7 +282,7 @@ endf
|
|||
|
||||
au SourceCmd *.snippet,*.snippets call s:source_snippet()
|
||||
|
||||
function! s:info_from_filename(file)
|
||||
function! s:info_from_filename(file) abort
|
||||
let parts = split(fnamemodify(a:file, ':r'), '/')
|
||||
let snipidx = len(parts) - index(reverse(copy(parts)), 'snippets') - 1
|
||||
let rtp_prefix = join(parts[(snipidx -
|
||||
|
@ -293,7 +293,7 @@ function! s:info_from_filename(file)
|
|||
return [rtp_prefix, trigger, desc]
|
||||
endfunction
|
||||
|
||||
function! s:source_snippet()
|
||||
function! s:source_snippet() abort
|
||||
let file = expand('<afile>:p')
|
||||
let [rtp_prefix, trigger, desc] = s:info_from_filename(file)
|
||||
let new_snips = []
|
||||
|
@ -316,7 +316,7 @@ function! s:source_snippet()
|
|||
call extend(s:lookup_state.snips, new_snips)
|
||||
endfunction
|
||||
|
||||
function! s:CachedSnips(file)
|
||||
function! s:CachedSnips(file) abort
|
||||
let mtime = getftime(a:file)
|
||||
if has_key(s:cache, a:file) && s:cache[a:file].mtime >= mtime
|
||||
return s:cache[a:file].contents
|
||||
|
@ -327,15 +327,14 @@ function! s:CachedSnips(file)
|
|||
return s:cache[a:file].contents
|
||||
endfunction
|
||||
|
||||
function! s:snippet_filenames(scope, trigger)
|
||||
function! s:snippet_filenames(scope, trigger) abort
|
||||
let mid = ['', '_*', '/*']
|
||||
return join(map(extend(mid, map(filter(copy(mid), 'v:key != 1'),
|
||||
\ "'/' . a:trigger . '*' . v:val")),
|
||||
\ "'snippets/' . a:scope . v:val . '.snippet'"
|
||||
let mid += map(copy(mid[1:]), "'/' . a:trigger . '*' . v:val")
|
||||
return join(map(mid, "'snippets/' . a:scope . v:val . '.snippet'"
|
||||
\ . ". (v:key < 3 ? 's' : '')"))
|
||||
endfunction
|
||||
|
||||
function! snipMate#SetByPath(dict, trigger, path, snippet, bang, snipversion)
|
||||
function! snipMate#SetByPath(dict, trigger, path, snippet, bang, snipversion) abort
|
||||
let d = a:dict
|
||||
if !has_key(d, a:trigger) || a:bang
|
||||
let d[a:trigger] = {}
|
||||
|
@ -344,7 +343,7 @@ function! snipMate#SetByPath(dict, trigger, path, snippet, bang, snipversion)
|
|||
endfunction
|
||||
|
||||
" default triggers based on paths
|
||||
function! snipMate#DefaultPool(scopes, trigger, result)
|
||||
function! snipMate#DefaultPool(scopes, trigger, result) abort
|
||||
let scopes = s:AddScopeAliases(a:scopes)
|
||||
let scopes_done = []
|
||||
let rtp_save = &rtp
|
||||
|
@ -377,7 +376,7 @@ endfunction
|
|||
" scopes: list of scopes. usually this is the filetype. eg ['c','cpp']
|
||||
" trigger may contain glob patterns. Thus use '*' to get all triggers
|
||||
"
|
||||
fun! snipMate#GetSnippets(scopes, trigger)
|
||||
fun! snipMate#GetSnippets(scopes, trigger) abort
|
||||
let result = {}
|
||||
|
||||
for F in values(g:snipMateSources)
|
||||
|
@ -389,7 +388,7 @@ endf
|
|||
" adds leading tab
|
||||
" and replaces leading spaces by tabs
|
||||
" see ftplugin/snippet.vim
|
||||
fun! snipMate#RetabSnip() range
|
||||
fun! snipMate#RetabSnip() range abort
|
||||
let leadingTab = expand('%:e') == 'snippets'
|
||||
|
||||
let lines = getline(a:firstline, a:lastline)
|
||||
|
@ -424,7 +423,7 @@ fun! snipMate#RetabSnip() range
|
|||
endfor
|
||||
endf
|
||||
|
||||
fun! snipMate#OpenSnippetFiles()
|
||||
fun! snipMate#OpenSnippetFiles() abort
|
||||
let dict = snipMate#GetSnippetFiles(0, snipMate#ScopesByFile(), '*')
|
||||
" sort by files wether they exist - put existing files first
|
||||
let exists = []
|
||||
|
@ -445,13 +444,13 @@ fun! snipMate#OpenSnippetFiles()
|
|||
endfor
|
||||
endf
|
||||
|
||||
fun! snipMate#ScopesByFile()
|
||||
fun! snipMate#ScopesByFile() abort
|
||||
" duplicates are removed in AddScopeAliases
|
||||
return filter(funcref#Call(g:snipMate.get_scopes), "v:val != ''")
|
||||
endf
|
||||
|
||||
" used by both: completion and insert snippet
|
||||
fun! snipMate#GetSnippetsForWordBelowCursor(word, exact)
|
||||
fun! snipMate#GetSnippetsForWordBelowCursor(word, exact) abort
|
||||
" Setup lookups: '1.2.3' becomes [1.2.3] + [3, 2.3]
|
||||
let parts = split(a:word, '\W\zs')
|
||||
" Since '\W\zs' results in splitting *after* a non-keyword character, the
|
||||
|
@ -499,7 +498,7 @@ endf
|
|||
|
||||
" snippets: dict containing snippets by name
|
||||
" usually this is just {'default' : snippet_contents }
|
||||
fun! s:ChooseSnippet(snippets)
|
||||
fun! s:ChooseSnippet(snippets) abort
|
||||
let snippet = []
|
||||
let keys = keys(a:snippets)
|
||||
let i = 1
|
||||
|
@ -521,22 +520,22 @@ fun! s:ChooseSnippet(snippets)
|
|||
return funcref#Call(a:snippets[keys(a:snippets)[idx]])
|
||||
endf
|
||||
|
||||
fun! snipMate#WordBelowCursor()
|
||||
fun! snipMate#WordBelowCursor() abort
|
||||
return matchstr(getline('.'), '\S\+\%' . col('.') . 'c')
|
||||
endf
|
||||
|
||||
fun! snipMate#GetSnippetsForWordBelowCursorForComplete(word)
|
||||
fun! snipMate#GetSnippetsForWordBelowCursorForComplete(word) abort
|
||||
let snippets = map(snipMate#GetSnippetsForWordBelowCursor(a:word, 0), 'v:val[0]')
|
||||
return filter(snippets, 'v:val =~# "\\V\\^' . escape(a:word, '"\') . '"')
|
||||
endf
|
||||
|
||||
fun! snipMate#CanBeTriggered()
|
||||
fun! snipMate#CanBeTriggered() abort
|
||||
let word = snipMate#WordBelowCursor()
|
||||
let matches = snipMate#GetSnippetsForWordBelowCursorForComplete(word)
|
||||
return len(matches) > 0
|
||||
endf
|
||||
|
||||
fun! snipMate#ShowAvailableSnips()
|
||||
fun! snipMate#ShowAvailableSnips() abort
|
||||
let col = col('.')
|
||||
let word = snipMate#WordBelowCursor()
|
||||
let matches = snipMate#GetSnippetsForWordBelowCursorForComplete(word)
|
||||
|
@ -552,7 +551,7 @@ fun! snipMate#ShowAvailableSnips()
|
|||
endf
|
||||
|
||||
" Pass an argument to force snippet expansion instead of triggering or jumping
|
||||
function! snipMate#TriggerSnippet(...)
|
||||
function! snipMate#TriggerSnippet(...) abort
|
||||
if exists('g:SuperTabMappingForward')
|
||||
if g:SuperTabMappingForward == "<tab>"
|
||||
let SuperTabPlug = maparg('<Plug>SuperTabForward', 'i')
|
||||
|
@ -610,7 +609,7 @@ function! snipMate#TriggerSnippet(...)
|
|||
\ : "\<c-r>=snipMate#ShowAvailableSnips()\<cr>"
|
||||
endfunction
|
||||
|
||||
fun! snipMate#BackwardsSnippet()
|
||||
fun! snipMate#BackwardsSnippet() abort
|
||||
if exists('b:snip_state') | return b:snip_state.jump_stop(1) | endif
|
||||
|
||||
if exists('g:SuperTabMappingForward')
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
" will create a snippet on the fly which looks like this:
|
||||
" abc(${1:a}, ${2:b}, ${3:c=None})
|
||||
|
||||
fun! snipMate_python_demo#Activate()
|
||||
fun! snipMate_python_demo#Activate() abort
|
||||
if !exists('g:snipMateSources')
|
||||
let g:snipMateSources = {}
|
||||
endif
|
||||
|
@ -17,7 +17,7 @@ fun! snipMate_python_demo#Activate()
|
|||
let g:snipMateSources['python'] = funcref#Function('snipMate_python_demo#FunctionsFromCurrentFileAndTags')
|
||||
endf
|
||||
|
||||
fun! s:Add(dict, line, source, trigger)
|
||||
fun! s:Add(dict, line, source, trigger) abort
|
||||
let matched = matchlist(a:line,'def\s\+\([^( \t]\+\)[ \t]*(\([^)]*\)')
|
||||
if len(matched) > 2
|
||||
let name = matched[1]
|
||||
|
@ -34,7 +34,7 @@ fun! s:Add(dict, line, source, trigger)
|
|||
let sd[a:source] = name.'('.join(args,', ').')'
|
||||
endif
|
||||
endf
|
||||
fun! snipMate_python_demo#FunctionsFromCurrentFileAndTags(scopes, trigger, result)
|
||||
fun! snipMate_python_demo#FunctionsFromCurrentFileAndTags(scopes, trigger, result) abort
|
||||
" getting all might be too much
|
||||
if a:trigger == '*' | return | endif
|
||||
if index(a:scopes, 'python') < 0 | return | endif
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
function! s:sfile()
|
||||
function! s:sfile() abort
|
||||
return expand('<sfile>')
|
||||
endfunction
|
||||
|
||||
let s:state_proto = {}
|
||||
|
||||
function! snipmate#jumping#state()
|
||||
function! snipmate#jumping#state() abort
|
||||
return copy(s:state_proto)
|
||||
endfunction
|
||||
|
||||
function! s:listize_mirror(mirrors)
|
||||
function! s:listize_mirror(mirrors) abort
|
||||
return map(copy(a:mirrors), '[v:val.line, v:val.col]')
|
||||
endfunction
|
||||
|
||||
" Removes snippet state info
|
||||
function! s:state_remove() dict
|
||||
function! s:state_remove() dict abort
|
||||
" Remove all autocmds in group snipmate_changes in the current buffer
|
||||
unlet! b:snip_state
|
||||
silent! au! snipmate_changes * <buffer>
|
||||
endfunction
|
||||
|
||||
function! s:state_find_next_stop(backwards) dict
|
||||
function! s:state_find_next_stop(backwards) dict abort
|
||||
let self.stop_no += a:backwards? -1 : 1
|
||||
while !has_key(self.stops, self.stop_no)
|
||||
if self.stop_no == self.stop_count
|
||||
|
@ -33,7 +33,7 @@ function! s:state_find_next_stop(backwards) dict
|
|||
endfunction
|
||||
|
||||
" Update state information to correspond to the given tab stop
|
||||
function! s:state_set_stop(backwards) dict
|
||||
function! s:state_set_stop(backwards) dict abort
|
||||
call self.find_next_stop(a:backwards)
|
||||
let self.cur_stop = self.stops[self.stop_no]
|
||||
let self.stop_len = (type(self.cur_stop.placeholder) == type(0))
|
||||
|
@ -54,7 +54,7 @@ function! s:state_set_stop(backwards) dict
|
|||
endfunction
|
||||
|
||||
" Jump to the next/previous tab stop
|
||||
function! s:state_jump_stop(backwards) dict
|
||||
function! s:state_jump_stop(backwards) dict abort
|
||||
" Update changes just in case
|
||||
" This seems to be only needed because insert completion does not trigger
|
||||
" the CursorMovedI event
|
||||
|
@ -72,7 +72,7 @@ function! s:state_jump_stop(backwards) dict
|
|||
return self.set_stop(a:backwards)
|
||||
endfunction
|
||||
|
||||
function! s:state_remove_nested(...) dict
|
||||
function! s:state_remove_nested(...) dict abort
|
||||
let id = a:0 ? a:1 : self.stop_no
|
||||
if type(self.stops[id].placeholder) == type([])
|
||||
for i in self.stops[id].placeholder
|
||||
|
@ -90,7 +90,7 @@ function! s:state_remove_nested(...) dict
|
|||
endfunction
|
||||
|
||||
" Select the placeholder for the current tab stop
|
||||
function! s:state_select_word() dict
|
||||
function! s:state_select_word() dict abort
|
||||
let len = self.stop_len
|
||||
if !len | return '' | endif
|
||||
let l = col('.') != 1 ? 'l' : ''
|
||||
|
@ -103,7 +103,7 @@ endfunction
|
|||
" Update the snippet as text is typed. The self.update_mirrors() function does
|
||||
" the actual work.
|
||||
" If the cursor moves outside of a placeholder, call self.remove()
|
||||
function! s:state_update_changes() dict
|
||||
function! s:state_update_changes() dict abort
|
||||
let change_len = col('$') - self.prev_len
|
||||
let self.changed = self.changed || change_len != 0
|
||||
let self.end_col += change_len
|
||||
|
@ -122,7 +122,7 @@ function! s:state_update_changes() dict
|
|||
endfunction
|
||||
|
||||
" Actually update the mirrors for any changed text
|
||||
function! s:state_update_mirrors(change) dict
|
||||
function! s:state_update_mirrors(change) dict abort
|
||||
let newWordLen = self.end_col - self.start_col
|
||||
let newWord = strpart(getline('.'), self.start_col - 1, newWordLen)
|
||||
let changeLen = a:change
|
||||
|
@ -159,7 +159,7 @@ function! s:state_update_mirrors(change) dict
|
|||
endif
|
||||
endfunction
|
||||
|
||||
function! s:state_find_update_objects(item) dict
|
||||
function! s:state_find_update_objects(item) dict abort
|
||||
let item = a:item
|
||||
let item.update_objects = []
|
||||
|
||||
|
@ -179,7 +179,7 @@ function! s:state_find_update_objects(item) dict
|
|||
return item.update_objects
|
||||
endfunction
|
||||
|
||||
function! s:state_update(item, change_len) dict
|
||||
function! s:state_update(item, change_len) dict abort
|
||||
let item = a:item
|
||||
if exists('item.update_objects')
|
||||
let to_update = item.update_objects
|
||||
|
|
|
@ -2,7 +2,7 @@ let s:sigil = nr2char(31)
|
|||
let snipmate#legacy#sigil = s:sigil
|
||||
|
||||
" Prepare snippet to be processed by s:BuildTabStops
|
||||
function! snipmate#legacy#process_snippet(snip)
|
||||
function! snipmate#legacy#process_snippet(snip) abort
|
||||
let snippet = a:snip
|
||||
let esc_bslash = '\%(\\\@<!\%(\\\\\)*\)\@<='
|
||||
|
||||
|
@ -76,7 +76,7 @@ endfunction
|
|||
" the matches of "$#", to be replaced with the placeholder. This list is
|
||||
" composed the same way as the parent; the first item is the line number,
|
||||
" and the second is the column.
|
||||
function! snipmate#legacy#build_stops(snip, lnum, col, indent)
|
||||
function! snipmate#legacy#build_stops(snip, lnum, col, indent) abort
|
||||
let stops = {}
|
||||
let i = 0
|
||||
let withoutVars = substitute(a:snip, s:sigil . '\d\+', '', 'g')
|
||||
|
@ -118,7 +118,7 @@ function! snipmate#legacy#build_stops(snip, lnum, col, indent)
|
|||
endfunction
|
||||
|
||||
" Counts occurences of haystack in needle
|
||||
function! s:count(haystack, needle)
|
||||
function! s:count(haystack, needle) abort
|
||||
let counter = 0
|
||||
let index = stridx(a:haystack, a:needle)
|
||||
while index != -1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
" Snippet definition parsing code
|
||||
|
||||
function! s:sfile()
|
||||
function! s:sfile() abort
|
||||
return expand('<sfile>')
|
||||
endfunction
|
||||
|
||||
let s:parser_proto = {}
|
||||
|
||||
function! s:new_parser(text)
|
||||
function! s:new_parser(text) abort
|
||||
let ret = copy(s:parser_proto)
|
||||
let ret.input = a:text
|
||||
let ret.len = strlen(ret.input)
|
||||
|
@ -18,12 +18,12 @@ function! s:new_parser(text)
|
|||
return ret
|
||||
endfunction
|
||||
|
||||
function! s:parser_advance(...) dict
|
||||
function! s:parser_advance(...) dict abort
|
||||
let self.pos += a:0 ? a:1 : 1
|
||||
let self.next = self.input[self.pos]
|
||||
endfunction
|
||||
|
||||
function! s:parser_same(tok) dict
|
||||
function! s:parser_same(tok) dict abort
|
||||
if self.next == a:tok
|
||||
call self.advance()
|
||||
return 1
|
||||
|
@ -32,7 +32,7 @@ function! s:parser_same(tok) dict
|
|||
endif
|
||||
endfunction
|
||||
|
||||
function! s:parser_id() dict
|
||||
function! s:parser_id() dict abort
|
||||
if self.input[(self.pos):(self.pos+5)] == 'VISUAL'
|
||||
call self.advance(6)
|
||||
return 'VISUAL'
|
||||
|
@ -45,7 +45,7 @@ function! s:parser_id() dict
|
|||
return -1
|
||||
endfunction
|
||||
|
||||
function! s:parser_add_var(var) dict
|
||||
function! s:parser_add_var(var) dict abort
|
||||
let id = a:var[0]
|
||||
if !has_key(self.vars, id)
|
||||
let self.vars[id] = { 'instances' : [] }
|
||||
|
@ -53,7 +53,7 @@ function! s:parser_add_var(var) dict
|
|||
call add(self.vars[id].instances, a:var)
|
||||
endfunction
|
||||
|
||||
function! s:parser_var() dict
|
||||
function! s:parser_var() dict abort
|
||||
let ret = []
|
||||
if self.same('{')
|
||||
let id = self.id()
|
||||
|
@ -70,7 +70,7 @@ function! s:parser_var() dict
|
|||
return ret
|
||||
endfunction
|
||||
|
||||
function! s:parser_varend() dict
|
||||
function! s:parser_varend() dict abort
|
||||
let ret = []
|
||||
if self.same(':')
|
||||
call extend(ret, self.placeholder())
|
||||
|
@ -81,11 +81,11 @@ function! s:parser_varend() dict
|
|||
return ret
|
||||
endfunction
|
||||
|
||||
function! s:parser_placeholder() dict
|
||||
function! s:parser_placeholder() dict abort
|
||||
return self.parse('}')
|
||||
endfunction
|
||||
|
||||
function! s:parser_subst() dict
|
||||
function! s:parser_subst() dict abort
|
||||
let ret = {}
|
||||
let ret.pat = join(self.text('/', 1))
|
||||
if self.same('/')
|
||||
|
@ -97,14 +97,14 @@ function! s:parser_subst() dict
|
|||
return ret
|
||||
endfunction
|
||||
|
||||
function! s:parser_expr() dict
|
||||
function! s:parser_expr() dict abort
|
||||
let str = join(self.text('`', 1))
|
||||
let ret = eval(str)
|
||||
call self.same('`')
|
||||
return type(ret) == type('') ? ret : string(ret)
|
||||
endfunction
|
||||
|
||||
function! s:parser_text(...) dict
|
||||
function! s:parser_text(...) dict abort
|
||||
let res = []
|
||||
let val = ''
|
||||
if a:0 == 2 && a:2
|
||||
|
@ -140,7 +140,7 @@ function! s:parser_text(...) dict
|
|||
return res
|
||||
endfunction
|
||||
|
||||
function! s:parser_parse(...) dict
|
||||
function! s:parser_parse(...) dict abort
|
||||
let ret = a:0 ? [] : self.value
|
||||
while self.pos < self.len
|
||||
if self.same('$')
|
||||
|
@ -186,7 +186,7 @@ call extend(s:parser_proto, snipmate#util#add_methods(s:sfile(), 'parser',
|
|||
\ [ 'advance', 'same', 'id', 'add_var', 'var', 'varend',
|
||||
\ 'placeholder', 'subst', 'expr', 'text', 'parse' ]), 'error')
|
||||
|
||||
function! s:indent(count)
|
||||
function! s:indent(count) abort
|
||||
if &expandtab
|
||||
let shift = repeat(' ', (&sts > 0) ? &sts : &sw)
|
||||
else
|
||||
|
@ -195,7 +195,7 @@ function! s:indent(count)
|
|||
return repeat(shift, a:count)
|
||||
endfunction
|
||||
|
||||
function! s:visual_placeholder(var, indent)
|
||||
function! s:visual_placeholder(var, indent) abort
|
||||
let arg = get(a:var, 1, {})
|
||||
if type(arg) == type({})
|
||||
let pat = get(arg, 'pat', '')
|
||||
|
@ -212,7 +212,7 @@ function! s:visual_placeholder(var, indent)
|
|||
return content
|
||||
endfunction
|
||||
|
||||
function! snipmate#parse#snippet(text)
|
||||
function! snipmate#parse#snippet(text) abort
|
||||
let parser = s:new_parser(a:text)
|
||||
call parser.parse()
|
||||
unlet! b:snipmate_visual
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
" The next function was based on s:function and s:add_methods in fugitive
|
||||
" <https://github.com/tpope/vim-fugitive/blob/master/plugin/fugitive.vim>
|
||||
function! snipmate#util#add_methods(sfile, namespace, methods)
|
||||
function! snipmate#util#add_methods(sfile, namespace, methods) abort
|
||||
let dict = {}
|
||||
for name in a:methods
|
||||
let dict[name] = function(join([matchstr(a:sfile, '<SNR>\d\+'),
|
||||
|
|
|
@ -5,6 +5,6 @@ endif
|
|||
let s:did_snip_helper = 1
|
||||
|
||||
" Automatically closes tag if in xhtml
|
||||
fun! Close()
|
||||
fun! Close() abort
|
||||
return stridx(&ft, 'xhtml') == -1 ? '' : ' /'
|
||||
endf
|
||||
|
|
|
@ -105,7 +105,7 @@ let g:snipMate['get_scopes'] = get(g:snipMate, 'get_scopes', funcref#Function('r
|
|||
|
||||
" Modified from Luc Hermitte's function on StackOverflow
|
||||
" <http://stackoverflow.com/a/1534347>
|
||||
function! s:grab_visual()
|
||||
function! s:grab_visual() abort
|
||||
let a_save = @a
|
||||
try
|
||||
normal! gv"ay
|
||||
|
@ -116,7 +116,7 @@ function! s:grab_visual()
|
|||
endfunction
|
||||
|
||||
" TODO: Allow specifying an arbitrary snippets file
|
||||
function! s:load_scopes(bang, ...)
|
||||
function! s:load_scopes(bang, ...) abort
|
||||
let gb = a:bang ? g: : b:
|
||||
let gb.snipMate = get(gb, 'snipMate', {})
|
||||
let gb.snipMate.scope_aliases = get(gb.snipMate, 'scope_aliases', {})
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
function! Setup(snip)
|
||||
function! Setup(snip) abort
|
||||
return snipMate#expandSnip(join(a:snip, "\n"), 1)
|
||||
endfunction
|
||||
|
||||
function! s:to_be_file(expected)
|
||||
function! s:to_be_file(expected) abort
|
||||
return a:expected == getline(1,'$')
|
||||
endfunction
|
||||
|
||||
function! s:to_be_in(item, list)
|
||||
function! s:to_be_in(item, list) abort
|
||||
return !empty(filter(copy(a:list), 'v:val is a:item'))
|
||||
endfunction
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ def _parse_comments(s):
|
|||
if len(flags) == 0:
|
||||
rv.append((text, text, text, ""))
|
||||
# parse 3-part comment, but ignore those with O flag
|
||||
elif flags[0] == 's' and 'O' not in flags:
|
||||
elif 's' in flags and 'O' not in flags:
|
||||
ctriple = []
|
||||
indent = ""
|
||||
|
||||
|
@ -47,7 +47,7 @@ def _parse_comments(s):
|
|||
ctriple.append(indent)
|
||||
|
||||
rv.append(ctriple)
|
||||
elif flags[0] == 'b':
|
||||
elif 'b' in flags:
|
||||
if len(text) == 1:
|
||||
rv.insert(0, (text,text,text, ""))
|
||||
except StopIteration:
|
||||
|
|
|
@ -261,36 +261,56 @@ if (${1:/* condition */}) {
|
|||
$0
|
||||
endsnippet
|
||||
|
||||
snippet ns "namespace declaration" b
|
||||
namespace ${1:`!p
|
||||
abspath = os.path.abspath(path)
|
||||
m = re.search(r'[A-Z].+(?=/)', abspath)
|
||||
if m:
|
||||
› snip.rv = m.group().replace('/', '\\')
|
||||
`};
|
||||
endsnippet
|
||||
|
||||
snippet class "Class declaration template" b
|
||||
<?php
|
||||
|
||||
namespace ${1:`!p
|
||||
abspath = os.path.abspath(path)
|
||||
m = re.search(r'[A-Z].+(?=/)', abspath)
|
||||
if m:
|
||||
› snip.rv = m.group().replace('/', '\\')
|
||||
`};
|
||||
|
||||
/**
|
||||
* Class ${2:`!p snip.rv=snip.fn.split('.')[0]`}
|
||||
* @author ${3:`!v g:snips_author`}
|
||||
* Class ${1:`!p snip.rv=snip.basename`}
|
||||
* @author ${2:`!v g:snips_author`}
|
||||
*/
|
||||
$1class $2
|
||||
class $1
|
||||
{
|
||||
public function ${4:__construct}(${5:$options})
|
||||
{
|
||||
${6:// code}
|
||||
}
|
||||
}
|
||||
$0
|
||||
endsnippet
|
||||
|
||||
snippet interface "interface declaration template" b
|
||||
snippet interface "Interface declaration template" b
|
||||
<?php
|
||||
|
||||
namespace ${1:`!p
|
||||
abspath = os.path.abspath(path)
|
||||
m = re.search(r'[A-Z].+(?=/)', abspath)
|
||||
if m:
|
||||
› snip.rv = m.group().replace('/', '\\')
|
||||
`};
|
||||
|
||||
/**
|
||||
* Interface ${1:`!p snip.rv=snip.fn.split('.')[0]`}
|
||||
* Interface ${1:`!p snip.rv=snip.basename`}
|
||||
* @author ${2:`!v g:snips_author`}
|
||||
*/
|
||||
interface $1
|
||||
{
|
||||
public function ${3:__construct}(${4:$options})
|
||||
{
|
||||
${5:// code}
|
||||
}
|
||||
› public function ${3:someFunction}();$4
|
||||
}
|
||||
$0
|
||||
endsnippet
|
||||
|
||||
|
||||
snippet construct "__construct()" b
|
||||
/**
|
||||
* @param $2mixed ${1/, /\n * \@param mixed /g}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
" surround.vim - Surroundings
|
||||
" Author: Tim Pope <http://tpo.pe/>
|
||||
" Version: 2.0
|
||||
" Version: 2.1
|
||||
" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim
|
||||
|
||||
if exists("g:loaded_surround") || &cp || v:version < 700
|
||||
|
@ -457,7 +457,7 @@ function! s:dosurround(...) " {{{1
|
|||
if newchar == ""
|
||||
silent! call repeat#set("\<Plug>Dsurround".char,scount)
|
||||
else
|
||||
silent! call repeat#set("\<Plug>C".(a:0 > 2 && a:3 ? "S" : "s")."urround".char.newchar.s:inpur,scount)
|
||||
silent! call repeat#set("\<Plug>C".(a:0 > 2 && a:3 ? "S" : "s")."urround".char.newchar.s:input,scount)
|
||||
endif
|
||||
endfunction " }}}1
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ set grepprg=/bin/grep\ -nH
|
|||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" => Nerd Tree
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
let g:NERDTreeWinPos = "right"
|
||||
map <leader>nn :NERDTreeToggle<cr>
|
||||
map <leader>nb :NERDTreeFromBookmark
|
||||
map <leader>nf :NERDTreeFind<cr>
|
||||
|
|
Loading…
Reference in a new issue