Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

neovim/lua/bugabinga/lsp/init.lua

Raw
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