autocmds.lua

~/.config/nvim/lua/config/autocmds.lua
vim.api.nvim_create_autocmd("FileType", {
  pattern = "dart",
  callback = function(ev)
    vim.opt.commentstring = "// %s"
  end,
})

vim.api.nvim_create_autocmd("FileType", {
  pattern = "markdown",
  callback = function(ev)
    -- Don't hide the stuff in ``````
    vim.api.nvim_set_option_value('conceallevel', 0, { scope = "local" })
    -- Interpret - as part of the word
    vim.api.nvim_set_option_value('iskeyword', '@,48-57,_,192-255,-', { scope = "local" })

    vim.keymap.set('n', "<Leader><CR>", function()
      vim.cmd('vsplit')
      vim.fn.feedkeys('<CR>')
    end, { desc = "Enter after a vsplit" })
  end,
})

local lspautocmds = vim.api.nvim_create_augroup('LSPAutoCmds', { clear = true, })
vim.api.nvim_create_autocmd("LspAttach", {
  group = lspautocmds,
  callback = function(args)
    local bufnr = args.buf
    local client_id = args.data.client_id
    local client = vim.lsp.get_client_by_id(client_id)
    vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = bufnr, desc = '[G]o to [D]efinition' })
    vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { buffer = bufnr, desc = '[G]o to [D]eclaration' })
    -- vim.keymap.set('n', '<Leader>ca', vim.lsp.buf.code_action, { buffer = bufnr, desc = '[C]ode [A]ction' })
    vim.keymap.set('n', '<Leader>rn', vim.lsp.buf.rename, { buffer = bufnr, desc = '[R]e[n]ame' })
    vim.keymap.set('n', 'K', function() vim.lsp.buf.hover({ border = "single" }) end,
      { buffer = bufnr, desc = 'Hover Documentation' })
    vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
      vim.lsp.buf.format()
    end, { desc = 'Format current buffer with LSP' })
    vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
    vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
    vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
    vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })

    vim.keymap.set('n', '<Leader>gd', function()
      vim.api.nvim_open_win(0, true, { split = 'left' })
      vim.lsp.buf.definition()
    end, { desc = "gd with vert split" })

    -- local project_folder = vim.lsp.buf.list_workspace_folders()[1]
    -- if project_folder ~= nil then
    --   vim.keymap.set('n', '<Leader>pf', function()
    --     fzf_lua.files({ cwd = project_folder })
    --   end, { buffer = bufnr, desc = '[P]roject [F]iles' })
    -- end

    -- vim.lsp.completion.enable(true, client_id, bufnr, { autotrigger = true })
    -- document highlight references
    -- vim.keymap.set('n', '<C-r>', vim.lsp.buf.document_highlight, { buffer = bufnr, desc = 'Highlight referneces'})
  end
})

Comments