5#ifndef QQMLSEMANTICTOKENS_P_H
6#define QQMLSEMANTICTOKENS_P_H
19#include <QtLanguageServer/private/qlanguageserverspec_p.h>
20#include <QtQmlDom/private/qqmldomitem_p.h>
21#include <QtCore/qlist.h>
22#include <QtCore/qmap.h>
118Q_ENUM_NS(SemanticTokenProtocolTypes)
127 Token(
const QQmlJS::SourceLocation &loc,
int tokenType,
int tokenModifier = 0)
157using HighlightsContainer = QMap<
int, QT_PREPEND_NAMESPACE(Token)>;
160
161
162
175 HighlightingUtils::QmlHighlightModifiers =
181 void addHighlightImpl(
const QQmlJS::SourceLocation &loc,
int tokenType,
int tokenModifier = 0);
182 HighlightsContainer m_highlights;
191 const QQmlJS::SourceLocation &tokenLocation);
192 void addModifier(QLspSpecification::SemanticTokenModifiers modifier,
int *baseModifier);
196 QList<
int> collectTokens(
const QQmlJS::Dom::DomItem &item,
198 HighlightingMode mode = HighlightingMode::Default);
199 Highlights visitTokens(
const QQmlJS::Dom::DomItem &item,
201 HighlightingMode mode = HighlightingMode::Default);
207 HighlightingVisitor(
const QQmlJS::Dom::DomItem &item,
209 HighlightingUtils::HighlightingMode mode =
210 HighlightingUtils::HighlightingMode::Default);
215 bool visitor(QQmlJS::Dom::Path,
const QQmlJS::Dom::DomItem &item,
bool);
216 void highlightComment(
const QQmlJS::Dom::DomItem &item);
217 void highlightImport(
const QQmlJS::Dom::DomItem &item);
218 void highlightBinding(
const QQmlJS::Dom::DomItem &item);
219 void highlightPragma(
const QQmlJS::Dom::DomItem &item);
220 void highlightEnumItem(
const QQmlJS::Dom::DomItem &item);
221 void highlightEnumDecl(
const QQmlJS::Dom::DomItem &item);
222 void highlightQmlObject(
const QQmlJS::Dom::DomItem &item);
223 void highlightComponent(
const QQmlJS::Dom::DomItem &item);
224 void highlightPropertyDefinition(
const QQmlJS::Dom::DomItem &item);
225 void highlightMethod(
const QQmlJS::Dom::DomItem &item);
226 void highlightScriptLiteral(
const QQmlJS::Dom::DomItem &item);
227 void highlightIdentifier(
const QQmlJS::Dom::DomItem &item);
228 void highlightBySemanticAnalysis(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
229 void highlightScriptExpressions(
const QQmlJS::Dom::DomItem &item);
230 void highlightCallExpression(
const QQmlJS::Dom::DomItem &item);
231 void highlightFieldMemberAccess(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
const Highlights & hightights() const
Highlights & highlights()
int(*)(HighlightingUtils::QmlHighlightKind) QmlHighlightKindToLspKind
const HighlightsContainer & tokens() const
Highlights(HighlightingUtils::HighlightingMode mode=HighlightingUtils::HighlightingMode::Default)
HighlightsContainer & tokens()
void addHighlight(const QQmlJS::SourceLocation &loc, HighlightingUtils::QmlHighlightKind, HighlightingUtils::QmlHighlightModifiers=HighlightingUtils::QmlHighlightModifier::None)
Implements a server for the language server protocol.
void registerHandlers(QLanguageServer *server, QLanguageServerProtocol *protocol) override
QString name() const override
QQmlHighlightSupport(QmlLsp::QQmlCodeModelManager *codeModel)
void setupCapabilities(const QLspSpecification::InitializeParams &clientInfo, QLspSpecification::InitializeResult &) override
void process(QQmlBaseModule< SemanticTokensDeltaRequest >::RequestPointerArgument req) override
SemanticTokenDeltaHandler(QmlLsp::QQmlCodeModelManager *codeModel)
void registerHandlers(QLanguageServer *, QLanguageServerProtocol *) override
HIDE_UNUSED_OVERRIDES HighlightingUtils::HighlightingMode m_mode
void setHighlightingMode(HighlightingUtils::HighlightingMode mode)
void setHighlightingMode(HighlightingUtils::HighlightingMode mode)
void process(QQmlBaseModule< SemanticTokensRequest >::RequestPointerArgument req) override
SemanticTokenFullHandler(QmlLsp::QQmlCodeModelManager *codeModel)
void registerHandlers(QLanguageServer *, QLanguageServerProtocol *) override
HIDE_UNUSED_OVERRIDES HighlightingUtils::HighlightingMode m_mode
SemanticTokenRangeHandler(QmlLsp::QQmlCodeModelManager *codeModel)
void setHighlightingMode(HighlightingUtils::HighlightingMode mode)
HIDE_UNUSED_OVERRIDES HighlightingUtils::HighlightingMode m_mode
void process(QQmlBaseModule< SemanticTokensRangeRequest >::RequestPointerArgument req) override
void registerHandlers(QLanguageServer *, QLanguageServerProtocol *) override
QList< QQmlJS::SourceLocation > sourceLocationsFromMultiLineToken(QStringView code, const QQmlJS::SourceLocation &tokenLocation)
Returns multiple source locations for a given raw comment.
QList< int > encodeSemanticTokens(Highlights &highlights)
void updateResultID(QByteArray &resultID)
QList< QLspSpecification::SemanticTokensEdit > computeDiff(const QList< int > &, const QList< int > &)
bool rangeOverlapsWithSourceLocation(const QQmlJS::SourceLocation &loc, const HighlightsRange &r)
SemanticTokenProtocolTypes
@ QmlExternalObjectProperty
void addModifier(QLspSpecification::SemanticTokenModifiers modifier, int *baseModifier)
@ QmlExternalObjectProperty
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
QList< QByteArray > extendedTokenTypesList()
QList< QByteArray > defaultTokenModifiersList()
static QList< QByteArray > enumToByteArray()
#define HIDE_UNUSED_OVERRIDES
This class sends a result or an error when going out of scope.
friend bool operator==(const Token &lhs, const Token &rhs)
friend bool operator<(const Token &lhs, const Token &rhs)
Token(const QQmlJS::SourceLocation &loc, int tokenType, int tokenModifier=0)