local kind = require("cmp").lsp.CompletionItemKind.Snippet
local fn = vim.fn

local M = {}

local Source = {}
M.Source = Source

function Source.new()
  return setmetatable({}, { __index = Source })
end

function Source:is_available()
  return vim.g.loaded_neosnippet
end

function Source:get_debug_name()
  return "neosnippet"
end

function Source:complete(_, callback)
  -- not impl cache for filetype
  local snippets = fn["neosnippet#helpers#get_completion_snippets"]()
  local items = vim.tbl_map(function(s)
    return { label = s.word, kind = kind }
  end, snippets)
  callback(items)
end

return M