| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- local M = {}
 
- local Log = require "lvim.core.log"
 
- local utils = require "lvim.utils"
 
- local autocmds = require "lvim.core.autocmds"
 
- local function add_lsp_buffer_options(bufnr)
 
-   for k, v in pairs(lvim.lsp.buffer_options) do
 
-     vim.api.nvim_buf_set_option(bufnr, k, v)
 
-   end
 
- end
 
- local function add_lsp_buffer_keybindings(bufnr)
 
-   local mappings = {
 
-     normal_mode = "n",
 
-     insert_mode = "i",
 
-     visual_mode = "v",
 
-   }
 
-   for mode_name, mode_char in pairs(mappings) do
 
-     for key, remap in pairs(lvim.lsp.buffer_mappings[mode_name]) do
 
-       local opts = { buffer = bufnr, desc = remap[2], noremap = true, silent = true }
 
-       vim.keymap.set(mode_char, key, remap[1], opts)
 
-     end
 
-   end
 
- end
 
- function M.common_capabilities()
 
-   local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
 
-   if status_ok then
 
-     return cmp_nvim_lsp.default_capabilities()
 
-   end
 
-   local capabilities = vim.lsp.protocol.make_client_capabilities()
 
-   capabilities.textDocument.completion.completionItem.snippetSupport = true
 
-   capabilities.textDocument.completion.completionItem.resolveSupport = {
 
-     properties = {
 
-       "documentation",
 
-       "detail",
 
-       "additionalTextEdits",
 
-     },
 
-   }
 
-   return capabilities
 
- end
 
- function M.common_on_exit(_, _)
 
-   if lvim.lsp.document_highlight then
 
-     autocmds.clear_augroup "lsp_document_highlight"
 
-   end
 
-   if lvim.lsp.code_lens_refresh then
 
-     autocmds.clear_augroup "lsp_code_lens_refresh"
 
-   end
 
- end
 
- function M.common_on_init(client, bufnr)
 
-   if lvim.lsp.on_init_callback then
 
-     lvim.lsp.on_init_callback(client, bufnr)
 
-     Log:debug "Called lsp.on_init_callback"
 
-     return
 
-   end
 
- end
 
- function M.common_on_attach(client, bufnr)
 
-   if lvim.lsp.on_attach_callback then
 
-     lvim.lsp.on_attach_callback(client, bufnr)
 
-     Log:debug "Called lsp.on_attach_callback"
 
-   end
 
-   local lu = require "lvim.lsp.utils"
 
-   if lvim.lsp.document_highlight then
 
-     lu.setup_document_highlight(client, bufnr)
 
-   end
 
-   if lvim.lsp.code_lens_refresh then
 
-     lu.setup_codelens_refresh(client, bufnr)
 
-   end
 
-   add_lsp_buffer_keybindings(bufnr)
 
-   add_lsp_buffer_options(bufnr)
 
-   lu.setup_document_symbols(client, bufnr)
 
- end
 
- function M.get_common_opts()
 
-   return {
 
-     on_attach = M.common_on_attach,
 
-     on_init = M.common_on_init,
 
-     on_exit = M.common_on_exit,
 
-     capabilities = M.common_capabilities(),
 
-   }
 
- end
 
- function M.setup()
 
-   Log:debug "Setting up LSP support"
 
-   local lsp_status_ok, _ = pcall(require, "lspconfig")
 
-   if not lsp_status_ok then
 
-     return
 
-   end
 
-   if lvim.use_icons then
 
-     for _, sign in ipairs(lvim.lsp.diagnostics.signs.values) do
 
-       vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name })
 
-     end
 
-   end
 
-   require("lvim.lsp.handlers").setup()
 
-   if not utils.is_directory(lvim.lsp.templates_dir) then
 
-     require("lvim.lsp.templates").generate_templates()
 
-   end
 
-   pcall(function()
 
-     require("nlspsettings").setup(lvim.lsp.nlsp_settings.setup)
 
-   end)
 
-   require("lvim.lsp.null-ls").setup()
 
-   autocmds.configure_format_on_save()
 
- end
 
- return M
 
 
  |