local log = require("ltex_extra.src.log")

local M = {}

local default_opts = {
    load_langs = { "es-AR", "en-US" },
    init_check = true,
}

M.opts = {}

M.setup = function(opts)
    log.trace("Merge options")
    M.opts = opts or default_opts
    for key, value in pairs(default_opts) do
        if not M.opts[key] then
            M.opts[key] = value
        end
    end

    log.trace("Add commands to lsp")
    vim.lsp.commands['_ltex.addToDictionary']    = require("ltex_extra.src.commands-lsp").addToDictionary
    vim.lsp.commands['_ltex.hideFalsePositives'] = require("ltex_extra.src.commands-lsp").hideFalsePositives
    vim.lsp.commands['_ltex.disableRules']       = require("ltex_extra.src.commands-lsp").disableRules

    log.trace("Inital load files")
    if opts.init_check == true then
        require("ltex_extra.src.commands-lsp").updateConfigFull(opts.load_langs)
    end
end

return M

-- Dev notes:
--
-- Dummy functions for test vim.lsp.commands
-- local dummy_calls = 0
-- local dummy_cmd = function()
--     print(dummy_calls)
--     dummy_calls = dummy_calls + 1
--     print(dummy_calls)
-- end

-- Inspect function for arguments. Doesn't work after nvim 0.7.
-- local orig_execute_command = vim.lsp.buf.execute_command
-- vim.lsp.buf.execute_command = function (command)
--     print(vim.inspect(command))
--     orig_execute_command(command)
-- end