local dbg = require 'std.dbg' local icon = require 'std.icon' require 'bugabinga.lsp.attach' require 'bugabinga.lsp.commands' if dbg.get() then vim.lsp.log.set_level 'debug' end vim.lsp.config( '*', { capabilities = { textDocument = { semanticTokens = { multilineTokenSupport = true, }, completion = { completionItem = { snippetSupport = true, }, }, }, }, } ) local servers = vim.iter( vim.lsp.get_configs() ) :map( function ( config ) return config.name end ) :totable() vim.lsp.enable( servers ) local completion_icons = { Class = icon.class, Color = icon.color, Constant = icon.constant, Constructor = icon.constructor, Enum = icon.enum, EnumMember = icon.enum_member, Field = icon.field, File = icon.file, Folder = icon.folder, Function = icon['function'], Interface = icon.interface, Keyword = icon.keyword, Method = icon.method, Module = icon.module, Property = icon.property, Snippet = icon.snippet, Struct = icon.struct, Text = icon.text, Unit = icon.unit, Value = icon.value, Variable = icon.variable, } local completion_kinds = vim.lsp.protocol.CompletionItemKind for i, kind in ipairs( completion_kinds ) do completion_kinds[i] = completion_icons[kind] or kind end