@@ -51,13 +51,40 @@ local getNeosnippetItems = function(prefix)
5151 return complete_items
5252end
5353
54+ local getVsnipItems = function (prefix )
55+ if vim .fn .exists (' g:loaded_vsnip' ) == 0 then return {} end
56+ local snippetsList = api .nvim_call_function (' vsnip#source#find' , {api .nvim_buf_get_option (0 , ' filetype' )})
57+ local complete_items = {}
58+ if vim .tbl_isempty (snippetsList ) == 0 then
59+ return {}
60+ end
61+ local priority = vim .g .completion_items_priority [' vim-vsnip' ]
62+ for _ , source in pairs (snippetsList ) do
63+ for _ , snippet in pairs (source ) do
64+ for _ , word in pairs (snippet .prefix ) do
65+ local user_data = {hover = snippet .description }
66+ local item = {}
67+ item .word = word
68+ item .kind = ' vim-vsnip'
69+ item .menu = snippet .label
70+ item .priority = priority
71+ item .user_data = user_data
72+ match .matching (complete_items , prefix , item )
73+ end
74+ end
75+ end
76+ return complete_items
77+ end
78+
5479M .getCompletionItems = function (prefix , score_func , _ )
5580 local source = vim .g .completion_enable_snippet
5681 local snippet_list = {}
5782 if source == ' UltiSnips' then
5883 snippet_list = getUltisnipItems (prefix , score_func )
5984 elseif source == ' Neosnippet' then
6085 snippet_list = getNeosnippetItems (prefix , score_func )
86+ elseif source == ' vim-vsnip' then
87+ snippet_list = getVsnipItems (prefix , score_func )
6188 end
6289 return snippet_list
6390end
0 commit comments