mirror of
https://github.com/amix/vimrc
synced 2025-06-16 09:35:01 +08:00
Updated plugins
This commit is contained in:
@ -41,11 +41,6 @@ if !exists('g:snips_no_mappings') || !g:snips_no_mappings
|
||||
call s:map_if_not_mapped('<C-R><Tab>', '<Plug>snipMateShow', 'i')
|
||||
endif
|
||||
|
||||
" FIXME: Without this map, <BS> in select mode deletes the current selection and
|
||||
" returns to normal mode. This doesn't update placeholders. Ideally there's some
|
||||
" way to update the placeholders without this otherwise useless map.
|
||||
silent! snoremap <unique> <BS> b<BS><Esc>
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
|
||||
" vim:noet:
|
||||
|
@ -262,7 +262,7 @@ function! s:state_proto.update_stops()
|
||||
|
||||
for pos in self.stops
|
||||
if pos == self.cur_stop | continue | endif
|
||||
let changed = pos[0] == curLine && pos[1] > self.start_col
|
||||
let changed = pos[0] == curLine && pos[1] > self.cur_stop[1]
|
||||
let changedVars = 0
|
||||
let endPlaceholder = pos[2] - 1 + pos[1]
|
||||
" Subtract changeLen from each tab stop that was after any of
|
||||
@ -321,10 +321,13 @@ function! s:state_proto.update_changes()
|
||||
let self.end_col += change_len
|
||||
|
||||
let col = col('.')
|
||||
if line('.') != self.cur_stop[0] || col < self.start_col || col > self.end_col
|
||||
call self.remove()
|
||||
elseif self.has_vars
|
||||
call self.update_vars(change_len)
|
||||
if mode() == 'i'
|
||||
if line('.') != self.cur_stop[0]
|
||||
\ || col < self.start_col || col > self.end_col
|
||||
call self.remove()
|
||||
elseif self.has_vars
|
||||
call self.update_vars(change_len)
|
||||
endif
|
||||
endif
|
||||
|
||||
let self.prev_len = col('$')
|
||||
@ -336,6 +339,7 @@ function! s:state_proto.update_vars(change)
|
||||
let newWord = strpart(getline('.'), self.start_col - 1, newWordLen)
|
||||
let changeLen = a:change
|
||||
let curLine = line('.')
|
||||
let curCol = col('.')
|
||||
let oldStartSnip = self.start_col
|
||||
let updateTabStops = changeLen != 0
|
||||
let i = 0
|
||||
@ -374,7 +378,7 @@ function! s:state_proto.update_vars(change)
|
||||
" Reposition the cursor in case a var updates on the same line but before
|
||||
" the current tabstop
|
||||
if oldStartSnip != self.start_col || mode() == 'i'
|
||||
call cursor(0, col('.') + self.start_col - oldStartSnip)
|
||||
call cursor(0, curCol + self.start_col - oldStartSnip)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
@ -382,12 +386,16 @@ endfunction
|
||||
" returns list of
|
||||
" ['triggername', 'name', 'contents']
|
||||
" if triggername is not set 'default' is assumed
|
||||
" TODO: better error checking
|
||||
fun! snipMate#ReadSnippetsFile(file)
|
||||
let result = []
|
||||
let new_scopes = []
|
||||
if !filereadable(a:file) | return [result, new_scopes] | endif
|
||||
let inSnip = 0
|
||||
let line_no = 0
|
||||
for line in readfile(a:file) + ["\n"]
|
||||
let line_no += 1
|
||||
|
||||
if inSnip && (line[0] == "\t" || line == '')
|
||||
let content .= strpart(line, 1)."\n"
|
||||
continue
|
||||
@ -406,6 +414,10 @@ fun! snipMate#ReadSnippetsFile(file)
|
||||
let trigger = strpart(trigger, 0, space - 1)
|
||||
endif
|
||||
let content = ''
|
||||
if trigger =~ '^\s*$' " discard snippets with empty triggers
|
||||
echom 'Invalid snippet in' a:file 'near line' line_no
|
||||
let inSnip = 0
|
||||
endif
|
||||
elseif line[:6] == 'extends'
|
||||
call extend(new_scopes, map(split(strpart(line, 8)),
|
||||
\ "substitute(v:val, ',*$', '', '')"))
|
||||
@ -415,7 +427,7 @@ fun! snipMate#ReadSnippetsFile(file)
|
||||
endf
|
||||
|
||||
function! s:GetScopes()
|
||||
let ret = exists('b:snipMate_scope_aliases') ? copy(b:snipMate.scope_aliases) : {}
|
||||
let ret = exists('b:snipMate.scope_aliases') ? copy(b:snipMate.scope_aliases) : {}
|
||||
let global = get(g:snipMate, 'scope_aliases', {})
|
||||
for alias in keys(global)
|
||||
if has_key(ret, alias)
|
||||
@ -449,11 +461,7 @@ fun! s:AddScopeAliases(list)
|
||||
return keys(did)
|
||||
endf
|
||||
|
||||
if v:version >= 704
|
||||
function! s:Glob(path, expr)
|
||||
return split(globpath(a:path, a:expr), "\n")
|
||||
endfunction
|
||||
else
|
||||
if v:version < 704 || has('win32')
|
||||
function! s:Glob(path, expr)
|
||||
let res = []
|
||||
for p in split(a:path, ',')
|
||||
@ -464,6 +472,10 @@ else
|
||||
endfor
|
||||
return filter(res, 'filereadable(v:val)')
|
||||
endfunction
|
||||
else
|
||||
function! s:Glob(path, expr)
|
||||
return split(globpath(a:path, a:expr), "\n")
|
||||
endfunction
|
||||
endif
|
||||
|
||||
" returns dict of
|
||||
@ -517,7 +529,7 @@ function! snipMate#GetSnippetFiles(mustExist, scopes, trigger)
|
||||
endfunction
|
||||
|
||||
" should be moved to utils or such?
|
||||
function! snipMate#SetByPath(dict, trigger, path, snippet)
|
||||
function! snipMate#SetByPath(dict, trigger, path, snippet) abort
|
||||
let d = a:dict
|
||||
if !has_key(d, a:trigger)
|
||||
let d[a:trigger] = {}
|
||||
|
@ -115,7 +115,9 @@ g:snipMate.scope_aliases A |Dictionary| associating certain filetypes
|
||||
variant b:snipMate_scope_aliases is merged
|
||||
with the global variant.
|
||||
|
||||
g:snipMate_no_default_aliases
|
||||
g:snipMate_no_default_aliases Note: This has been renamed to the following.
|
||||
|
||||
g:snipMate.no_default_aliases
|
||||
When set to 1, prevents SnipMate from loading
|
||||
default scope aliases. The defaults are:
|
||||
Filetype Alias ~
|
||||
@ -128,6 +130,10 @@ g:snipMate_no_default_aliases
|
||||
php php,html,javascript
|
||||
ur html,javascript
|
||||
xhtml html
|
||||
Individual defaults can be disabled by setting
|
||||
them to an empty value: >
|
||||
let g:snipMate.scope_aliases.php = ''
|
||||
< will disable the default PHP alias.
|
||||
Note: Setting this option does not disable
|
||||
scope aliases entirely, only those made by
|
||||
SnipMate itself. Any scope aliases created by
|
||||
|
@ -56,16 +56,31 @@ let g:snipMate['no_match_completion_feedkeys_chars'] =
|
||||
|
||||
" Add default scope aliases, without overriding user settings
|
||||
let g:snipMate.scope_aliases = get(g:snipMate, 'scope_aliases', {})
|
||||
if !exists('g:snipMate_no_default_aliases') || !g:snipMate_no_default_aliases
|
||||
let g:snipMate.scope_aliases.objc = get(g:snipMate.scope_aliases, 'objc', 'c')
|
||||
let g:snipMate.scope_aliases.cpp = get(g:snipMate.scope_aliases, 'cpp', 'c')
|
||||
let g:snipMate.scope_aliases.cu = get(g:snipMate.scope_aliases, 'cu', 'c')
|
||||
let g:snipMate.scope_aliases.xhtml = get(g:snipMate.scope_aliases, 'xhtml', 'html')
|
||||
let g:snipMate.scope_aliases.html = get(g:snipMate.scope_aliases, 'html', 'javascript')
|
||||
let g:snipMate.scope_aliases.php = get(g:snipMate.scope_aliases, 'php', 'php,html,javascript')
|
||||
let g:snipMate.scope_aliases.ur = get(g:snipMate.scope_aliases, 'ur', 'html,javascript')
|
||||
let g:snipMate.scope_aliases.mxml = get(g:snipMate.scope_aliases, 'mxml', 'actionscript')
|
||||
let g:snipMate.scope_aliases.eruby = get(g:snipMate.scope_aliases, 'eruby', 'eruby-rails,html')
|
||||
if exists('g:snipMate_no_default_aliases')
|
||||
echom 'The g:snipMate_no_default_aliases option has been renamed.'
|
||||
\ 'See :h snipMate-options.'
|
||||
endif
|
||||
if (!exists('g:snipMate_no_default_aliases') || !g:snipMate_no_default_aliases)
|
||||
\ && (!exists('g:snipMate.no_default_aliases')
|
||||
\ || !g:snipMate.no_default_aliases)
|
||||
let g:snipMate.scope_aliases.objc =
|
||||
\ get(g:snipMate.scope_aliases, 'objc', 'c')
|
||||
let g:snipMate.scope_aliases.cpp =
|
||||
\ get(g:snipMate.scope_aliases, 'cpp', 'c')
|
||||
let g:snipMate.scope_aliases.cu =
|
||||
\ get(g:snipMate.scope_aliases, 'cu', 'c')
|
||||
let g:snipMate.scope_aliases.xhtml =
|
||||
\ get(g:snipMate.scope_aliases, 'xhtml', 'html')
|
||||
let g:snipMate.scope_aliases.html =
|
||||
\ get(g:snipMate.scope_aliases, 'html', 'javascript')
|
||||
let g:snipMate.scope_aliases.php =
|
||||
\ get(g:snipMate.scope_aliases, 'php', 'php,html,javascript')
|
||||
let g:snipMate.scope_aliases.ur =
|
||||
\ get(g:snipMate.scope_aliases, 'ur', 'html,javascript')
|
||||
let g:snipMate.scope_aliases.mxml =
|
||||
\ get(g:snipMate.scope_aliases, 'mxml', 'actionscript')
|
||||
let g:snipMate.scope_aliases.eruby =
|
||||
\ get(g:snipMate.scope_aliases, 'eruby', 'eruby-rails,html')
|
||||
endif
|
||||
|
||||
let g:snipMate['get_snippets'] = get(g:snipMate, 'get_snippets', funcref#Function("snipMate#GetSnippets"))
|
||||
@ -94,6 +109,7 @@ function! s:grab_visual()
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" TODO: Allow specifying an arbitrary snippets file
|
||||
function! s:load_scopes(bang, ...)
|
||||
let gb = a:bang ? g: : b:
|
||||
let gb.snipMate = get(gb, 'snipMate', {})
|
||||
|
Reference in New Issue
Block a user