local M = {} function M.load_autocmd() local group = vim.api.nvim_create_augroup('solarized', { clear = true }) vim.api.nvim_create_autocmd('ColorSchemePre', { group = group, callback = function() vim.api.nvim_del_augroup_by_id(group) end, }) vim.api.nvim_create_autocmd('LspTokenUpdate', { group = group, callback = function(args) local token = args.data.token local buffer = args.buf local text = vim.api.nvim_buf_get_text( buffer, token.line, token.start_col, token.line, token.end_col, {} )[1] local highlights = { 'TODO', 'WARN', 'TEST', 'PERF', 'NOTE', 'HACK', 'FIX', } local name = 'SolarizedToken' for _, group_name in pairs(highlights) do if text ~= nil and token.type == 'comment' and text:match(group_name) then vim.lsp.semantic_tokens.highlight_token( token, buffer, args.data.client_id, name .. group_name ) end end end, }) end function M.load_autocmd_highlights(c) local set_hl = require('solarized.utils').set_hl set_hl('SolarizedTokenTODO', { fg = c.info }) set_hl('SolarizedTokenWARN', { fg = c.warning }) set_hl('SolarizedTokenTEST', { fg = c.violet }) set_hl('SolarizedTokenPERF', { fg = c.magenta }) set_hl('SolarizedTokenNOTE', { fg = c.hint }) set_hl('SolarizedTokenHACK', { fg = c.cyan }) set_hl('SolarizedTokenFIX', { fg = c.error }) end return M