]> git.rmz.io Git - dotfiles.git/blobdiff - vim/vimrc
vim: use tab for completing snippets as well
[dotfiles.git] / vim / vimrc
index cbcc9ac4114189b4360c9cde459149ed775bc488..e5a69e6d5b0247f52274bd71b1a6c3bde319fd13 100644 (file)
--- a/vim/vimrc
+++ b/vim/vimrc
@@ -396,7 +396,7 @@ autocmd BufWinEnter *.* silent loadview
 " save with sudo
 cnoremap w!! w !sudo tee % > /dev/null
 
-" plugins {{{1
+" plugins options {{{1
 " ag {{{2
 let g:AgSmartCase = 1
 nnoremap <leader>ag yiw:Ag \12"<cr>
@@ -484,9 +484,31 @@ let g:tagbar_iconchars = ['+', '-']
 let g:UltiSnipsEditSplit = 'vertical'
 let g:UltiSnipsSnippetsDir = expand("$XDG_CONFIG_HOME/vim/ultisnips")
 let g:UltiSnipsSnippetDirectories = ["UltiSnips", "ultisnips"]
-let g:UltiSnipsExpandTrigger = "<C-L>"
-let g:UltiSnipsJumpForwardTrigger = "<C-L>"
-let g:UltiSnipsJumpBackwardTrigger = "<C-H>"
+let g:UltiSnipsExpandTrigger       = "<tab>"
+let g:UltiSnipsJumpForwardTrigger  = "<tab>"
+let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
+
+" UltiSnips completion function that tries to expand a snippet. If there's no
+" snippet for expanding, it checks for completion window and if it's shown,
+" selects first element. If there's no completion window it tries to jump to
+" next placeholder. If there's no placeholder it just returns TAB key
+" https://github.com/Valloric/YouCompleteMe/issues/36#issuecomment-15451411
+function! g:UltiSnips_Complete()
+    call UltiSnips#ExpandSnippet()
+    if g:ulti_expand_res == 0
+        if pumvisible()
+            return "\<C-n>"
+        else
+            call UltiSnips#JumpForwards()
+            if g:ulti_jump_forwards_res == 0
+               return "\<TAB>"
+            endif
+        endif
+    endif
+    return ""
+endfunction
+au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger . " <C-R>=g:UltiSnips_Complete()<cr>"
+let g:UltiSnipsListSnippets="<c-e>"
 
 " yankring {{{2
 nnoremap <silent> <leader>p :YRShow<cr>