snippets.vim 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. if exists("g:go_loaded_gosnippets")
  2. finish
  3. endif
  4. let g:go_loaded_gosnippets = 1
  5. function! s:GoUltiSnips() abort
  6. if get(g:, 'did_plugin_ultisnips') isnot 1
  7. return
  8. endif
  9. if !exists("g:UltiSnipsSnippetDirectories")
  10. let g:UltiSnipsSnippetDirectories = ["gosnippets/UltiSnips"]
  11. else
  12. let g:UltiSnipsSnippetDirectories += ["gosnippets/UltiSnips"]
  13. endif
  14. endfunction
  15. function! s:GoNeosnippet() abort
  16. if get(g:, 'loaded_neosnippet') isnot 1
  17. return
  18. endif
  19. let g:neosnippet#enable_snipmate_compatibility = 1
  20. let l:gosnippets_dir = globpath(&rtp, 'gosnippets/snippets')
  21. if type(g:neosnippet#snippets_directory) == type([])
  22. let g:neosnippet#snippets_directory += [l:gosnippets_dir]
  23. elseif type(g:neosnippet#snippets_directory) == type("")
  24. if strlen(g:neosnippet#snippets_directory) > 0
  25. let g:neosnippet#snippets_directory = g:neosnippet#snippets_directory . "," . l:gosnippets_dir
  26. else
  27. let g:neosnippet#snippets_directory = l:gosnippets_dir
  28. endif
  29. endif
  30. endfunction
  31. function! s:GoMinisnip() abort
  32. if get(g:, 'loaded_minisnip') isnot 1
  33. return
  34. endif
  35. if exists('g:minisnip_dir')
  36. let g:minisnip_dir .= go#util#PathListSep() . globpath(&rtp, 'gosnippets/minisnip')
  37. else
  38. let g:minisnip_dir = globpath(&rtp, 'gosnippets/minisnip')
  39. endif
  40. endfunction
  41. let s:engine = get(g:, 'go_snippet_engine', 'automatic')
  42. if s:engine is? "automatic"
  43. if get(g:, 'did_plugin_ultisnips') is 1
  44. call s:GoUltiSnips()
  45. elseif get(g:, 'loaded_neosnippet') is 1
  46. call s:GoNeosnippet()
  47. elseif get(g:, 'loaded_minisnip') is 1
  48. call s:GoMinisnip()
  49. endif
  50. elseif s:engine is? "ultisnips"
  51. call s:GoUltiSnips()
  52. elseif s:engine is? "neosnippet"
  53. call s:GoNeosnippet()
  54. elseif s:engine is? "minisnip"
  55. call s:GoMinisnip()
  56. endif
  57. " vim: sw=2 ts=2 et