local cmp = require'cmp'

cmp.setup({
    snippet = {
        expand = function(args)
            require('luasnip').lsp_expand(args.body)
        end,
    },
	mapping = {
		['<A-l>'] = cmp.mapping.select_prev_item(),
		['<A-k>'] = cmp.mapping.select_next_item(),
		['<C-;>'] = cmp.mapping.confirm({ select = true }),
		['<CR>'] = cmp.mapping.confirm({ select = true }),
		['<C-Space>'] = cmp.mapping.complete(),
		['<C-j>'] = cmp.mapping.close(),
		['<C-e>'] = cmp.mapping.close(),
	},
    sources = {
        { name = 'nvim_lsp' },
        { name = 'buffer' },
		{ name = 'nvim_lsp_signature_help' },
		{ name = 'render-markdown' },
    },
	-- другие настройки
})

-- Diagnostic
vim.keymap.set('n', '<Space>k', '<cmd>lua vim.diagnostic.open_float()<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<space>l', [[:lua YankDiagnosticError()<CR>]], { noremap = true, silent = true, desc = "Copy error" })

function YankDiagnosticError()
  vim.diagnostic.open_float()
  vim.diagnostic.open_float()
  local win_id = vim.fn.win_getid()    -- get the window ID of the floating window
  vim.cmd("normal! j")                 -- move down one row
  vim.cmd("normal! VG")                -- select everything from that row down
  vim.cmd("normal! \"+y")                 -- yank selected text
  vim.api.nvim_win_close(win_id, true) -- close the floating window by its ID
end


vim.diagnostic.config({
  signs = false,  -- Отключает отображение знаков (иконок ошибок) слева
})