Skip to content

Commit

Permalink
Use <Plug> mappings
Browse files Browse the repository at this point in the history
This deprecates g:snips_trigger_key(_backwards).
  • Loading branch information
ajzafar committed Apr 21, 2013
1 parent 9233940 commit 3dc52c5
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 44 deletions.
75 changes: 40 additions & 35 deletions after/plugin/snipMate.vim
@@ -1,46 +1,51 @@
" These are the mappings for snipMate.vim. Putting it here ensures that it
" will be mapped after other plugins such as supertab.vim.
if !exists('loaded_snips') || exists('s:did_snips_mappings')
finish
endif
let s:did_snips_mappings = 1
" save and reset 'cpo'
" snipMate maps
" These maps are created here in order to make sure we can reliably create maps
" after SuperTab.

let s:save_cpo = &cpo
set cpo&vim

" This is put here in the 'after' directory in order for snipMate to override
" other plugin mappings (e.g., supertab).
"
" To adjust the tirgger key see (:h snipMate-trigger)
"
if !exists('g:snips_trigger_key')
let g:snips_trigger_key = '<tab>'
endif

if !exists('g:snips_trigger_key_backwards')
let g:snips_trigger_key_backwards = '<s-' . substitute(g:snips_trigger_key, '[<>]', '', 'g') . '>'
function! s:map_if_not_mapped(lhs, rhs, mode)
let l:unique = s:overwrite ? '' : ' <unique>'
if !hasmapto(a:rhs, a:mode)
silent! exe a:mode . 'map' . l:unique a:lhs a:rhs
endif
endfunction

if !exists('g:snips_no_mappings') || !g:snips_no_mappings
if exists('g:snips_trigger_key')
echom 'g:snips_trigger_key is deprecated. See :h snipMate-mappings'
exec 'imap <unique>' g:snips_trigger_key '<Plug>snipMateTrigger'
exec 'smap <unique>' g:snips_trigger_key '<Plug>snipMateSNext'
exec 'xmap <unique>' g:snips_trigger_key '<Plug>snipMateVisual'
else
" Remove SuperTab map if it exists
let s:overwrite = maparg('<Tab>', 'i') ==? '<Plug>SuperTabForward'
call s:map_if_not_mapped('<Tab>', '<Plug>snipMateNextOrTrigger', 'i')
call s:map_if_not_mapped('<Tab>', '<Plug>snipMateNextOrTrigger', 's')
let s:overwrite = 0
call s:map_if_not_mapped('<Tab>', '<Plug>snipMateVisual', 'x')
endif

if exists('g:snips_trigger_key_backwards')
echom 'g:snips_trigger_key_backwards is deprecated. See :h snipMate-mappings'
exec 'imap <unique>' g:snips_trigger_key_backwards '<Plug>snipMateIBack'
exec 'smap <unique>' g:snips_trigger_key_backwards '<Plug>snipMateSBack'
else
let s:overwrite = maparg('<S-Tab>', 'i') ==? '<Plug>SuperTabBackward'
call s:map_if_not_mapped('<S-Tab>', '<Plug>snipMateBack', 'i')
call s:map_if_not_mapped('<S-Tab>', '<Plug>snipMateBack', 's')
let s:overwrite = 0
endif

call s:map_if_not_mapped('<C-R><Tab>', '<Plug>snipMateShow', 'i')
endif

exec 'ino <silent> ' . g:snips_trigger_key . ' <c-r>=snipMate#TriggerSnippet()<cr>'
exec 'snor <silent> ' . g:snips_trigger_key . ' <esc>i<right><c-r>=snipMate#TriggerSnippet()<cr>'
exec 'ino <silent> ' . g:snips_trigger_key_backwards . ' <c-r>=snipMate#BackwardsSnippet()<cr>'
exec 'snor <silent> ' . g:snips_trigger_key_backwards . ' <esc>i<right><c-r>=snipMate#BackwardsSnippet()<cr>'
exec 'ino <silent> <c-r>' . g:snips_trigger_key . ' <c-r>=snipMate#ShowAvailableSnips()<cr>'

" maybe there is a better way without polluting registers ?
exec 'xnoremap ' . g:snips_trigger_key. ' s<c-o>:let<space>g:snipmate_content_visual=getreg('1')<cr>'

" 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.
snor <bs> b<bs><Esc>
" By default load snippets in snippets_dir
if empty(snippets_dir)
finish
endif
silent! snoremap <unique> <BS> b<BS><Esc>
" restore 'cpo'
let &cpo = s:save_cpo

" vim:noet:sw=4:ts=4:ft=vim
" vim:noet:
28 changes: 19 additions & 9 deletions doc/snipMate.txt
Expand Up @@ -356,18 +356,28 @@ If you would like your snippets to be expanded using spaces instead of tabs,
just enable 'expandtab' and set 'softtabstop' to your preferred amount of
spaces. If 'softtabstop' is not set, 'shiftwidth' is used instead.

*snipMate-trigger*
snipMate comes with a setting to configure the key that is used to trigger
snipMate. To configure the key set g:snips_trigger_key to something other than
<tab>,e.g. <c-space> use:
*snipMate-mappings*
The mappings snipMate uses can be customized with the |:map| commands. For
example, to change the key that triggers snippets and moves to the next
tabstop, >
let g:snips_trigger_key='<c-space>'
:imap <C-J> <Plug>snipMateNextOrTrigger
:smap <C-J> <Plug>snipMateNextOrTrigger
<
The list of possible <Plug> mappings is as follows:

<Plug>snipMateNextOrTrigger Jumps to the next tab stop or, if none exists,
try to expand a snippet. Use in both insert
and select modes.

<Plug>snipMateBack Jump to the previous tab stop, if it exists.
Use in both insert and select modes.

snipMate will try to automatically configure backwards trigger to prepend shift
key infront, e.g. <s-tab> or <s-c-space>. You can manually configure backward
trigger using:
<Plug>snipMateShow Show all available snippets (that start with
the previous text, if it exists). Use in
insert mode.

let g:snips_trigger_key_backwards='<c-space>'
<Plug>snipMateVisual |snipMate-visual-selection-support|

==============================================================================
FEATURES *snipMate-features*
Expand Down
14 changes: 14 additions & 0 deletions plugin/snipMate.vim
Expand Up @@ -14,6 +14,9 @@ if exists('loaded_snips') || &cp || version < 700
endif
let loaded_snips = 1
if !exists('snips_author') | let snips_author = 'Me' | endif
" save and reset 'cpo'
let s:save_cpo = &cpo
set cpo&vim

try
call funcref#Function('')
Expand All @@ -33,6 +36,14 @@ au FileType snippet setl noet nospell
au BufRead,BufNewFile *.snippets set ft=snippets
au FileType snippets setl noet nospell fdm=expr fde=getline(v:lnum)!~'^\\t\\\\|^$'?'>1':1

inoremap <silent> <Plug>snipMateNextOrTrigger <C-R>=snipMate#TriggerSnippet()<CR>
snoremap <silent> <Plug>snipMateNextOrTrigger <Esc>a<C-R>=snipMate#TriggerSnippet()<CR>
inoremap <silent> <Plug>snipMateBack <C-R>=snipMate#BackwardsSnippet()<CR>
snoremap <silent> <Plug>snipMateBack <Esc>a<C-R>=snipMate#BackwardsSnippet()<CR>
inoremap <silent> <Plug>snipMateShow <C-R>=snipMate#ShowAvailableSnips()<CR>
" FIXME: <Plug>snipMateVisual pollutes register(s)
xnoremap <silent> <Plug>snipMateVisual s<C-O>:let g:snipmate_content_visual=getreg('1')<CR>
" config which can be overridden (shared lines)
if !exists('g:snipMate')
let g:snipMate = {}
Expand Down Expand Up @@ -80,4 +91,7 @@ fun! BackwardSnippet()
return snipMate#BackwardsSnippet()
endf

" restore 'cpo'
let &cpo = s:save_cpo

" vim:noet:sw=4:ts=4:ft=vim

0 comments on commit 3dc52c5

Please sign in to comment.