return function(c, config)
  local utils = require('solarized.utils')
  local set_hl = utils.set_hl

  -- Default highlight
  set_hl('@lsp.type.class', { link = 'Type' }) -- Type
  set_hl('@lsp.type.decorator', { link = 'Function' }) -- Function
  set_hl('@lsp.type.enum', { link = 'Type' }) -- Type
  set_hl('@lsp.type.enumMember', { link = 'Constant' }) -- Constant
  set_hl('@lsp.type.function', { link = 'Function' }) -- Function
  set_hl('@lsp.type.interface', { link = 'Type' }) -- Type
  set_hl('@lsp.type.macro', { link = 'Keyword' }) -- Keyword
  set_hl('@lsp.type.method', { link = 'Function' }) -- Function
  set_hl('@lsp.type.namespace', { link = 'Constant' }) -- Constant
  set_hl(
    '@lsp.type.parameter',
    { fg = c.orange, italic = true },
    { styles = config.styles.parameters }
  )
  set_hl('@lsp.type.property', { fg = c.blue }) -- Property
  set_hl('@lsp.type.struct', { link = 'Structure' }) -- Structure
  set_hl('@lsp.type.type', { link = 'Type' }) -- Type
  set_hl('@lsp.type.typeParameter', { link = 'Type' }) -- Type
  set_hl('@lsp.type.variable', { link = 'Identifier' }) -- Identifier

  -- Extra highlight
  set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' }) -- ex: "vim".api.nvim_set_hl
  set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' }) -- Constant variables ex: const hello = 'Hello World'
  set_hl('@lsp.typemod.variable.global', { link = 'Constant' }) -- Global variables ex: HELLO = 'Hello World'
  set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' }) -- documentation comments
  set_hl('@lsp.typemod.class.documentation', { link = 'Type' }) -- documentation comments
  set_hl('@lsp.typemod.property.readonly', { link = 'Constant' }) -- Ex: System."out".println()
end