-- lua_source {{{
local joinpath = vim.fs.joinpath
local utils = require("user.utils")

vim.g.vsnip_extra_mapping = false
vim.g.vsnip_snippet_dir = vim.g.snippet_dir

local friendly_snippets_dir = joinpath(vim.g.vsnip_snippet_dir, "friendly-snippets")
vim.g.vsnip_snippet_dirs = {
    friendly_snippets_dir,
    joinpath(friendly_snippets_dir, "javascript"),
    joinpath(friendly_snippets_dir, "python"),
    joinpath(friendly_snippets_dir, "php"),
    joinpath(friendly_snippets_dir, "lua"),
    joinpath(friendly_snippets_dir, "shell"),
    joinpath(friendly_snippets_dir, "ruby"),
}
vim.g.vsnip_filetypes = vim.empty_dict()
vim.g.vsnip_integ_create_autocmd = false

utils.autocmd_set("InsertEnter", "$BASE_DIR/toml/*.toml", function()
    vim.g.vsnip_filetypes.toml = { vim.fn["context_filetype#get_filetype"]() }
end)

local opt_expr = { noremap = false, expr = true }
utils.keymaps_set({
    {
        mode = { "i", "s" },
        lhs = [[<C-f>]],
        rhs = function()
            if vim.fn["vsnip#jumpable"](1) > 0 then
                return [[<Plug>(vsnip-jump-next)]]
            else
                return [[<C-G>U<Right>]]
            end
        end,
        opts = opt_expr,
    },
    {
        mode = { "i", "s" },
        lhs = [[<C-b>]],
        rhs = function()
            if vim.fn["vsnip#jumpable"](-1) > 0 then
                return [[<Plug>(vsnip-jump-prev)]]
            else
                return [[<C-G>U<Left>]]
            end
        end,
        opts = opt_expr,
    },
})
-- }}}