Function: eglot--semtok-decode-token
eglot--semtok-decode-token is a byte-compiled function defined in
eglot.el.gz.
Signature
(eglot--semtok-decode-token TOK)
Documentation
Decode TOK. Return (NAMES . FACES). Filter FACES via user options.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/eglot.el.gz
(defun eglot--semtok-decode-token (tok)
"Decode TOK. Return (NAMES . FACES). Filter FACES via user options."
(with-slots (semtok-cache capabilities)
(eglot--current-server-or-lose)
(let ((probe (gethash tok semtok-cache :missing)))
(if (eq probe :missing)
(puthash
tok
(eglot--dbind ((SemanticTokensLegend) tokenTypes tokenModifiers)
(plist-get (plist-get capabilities :semanticTokensProvider) :legend)
(cl-loop
with tname = (aref tokenTypes (car tok))
for j from 0 for m across tokenModifiers
when (cl-plusp (logand (cdr tok) (ash 1 j)))
collect m into names
and when (member m eglot-semantic-token-modifiers)
collect (intern (format "eglot-semantic-%s" m)) into faces
finally
(when (member tname eglot-semantic-token-types)
(push (intern (format "eglot-semantic-%s" tname)) faces))
(cl-return (cons (cons tname names) faces))))
semtok-cache)
probe))))