5#ifndef QQMLSEMANTICTOKENS_P_H
6#define QQMLSEMANTICTOKENS_P_H
19#include <private/qqmldiffer_p.h>
20#include <QtLanguageServer/private/qlanguageserverspec_p.h>
21#include <QtQmlDom/private/qqmldomitem_p.h>
23#include <QtCore/qlist.h>
24#include <QtCore/qmap.h>
122Q_ENUM_NS(SemanticTokenProtocolTypes)
134 return lhs.loc == rhs.loc && lhs
.kind == rhs
.kind && lhs.modifiers == rhs.modifiers;
146
147
148
161 const QQmlJS::SourceLocation &tokenLocation);
162void addModifier(QLspSpecification::SemanticTokenModifiers modifier,
int *baseModifier);
165 const QList<
unsigned> &);
168 const std::optional<HighlightsRange> &range);
171void applyDiffs(HighlightsContainer &highlights,
const QList<QQmlLSUtils::Diff> &diffs);
173 const QString &lastValidCode,
const QString ¤tCode);
180 const std::optional<HighlightsRange> &range);
185 bool visitor(QQmlJS::Dom::Path,
const QQmlJS::Dom::DomItem &item,
bool);
186 void highlightComment(
const QQmlJS::Dom::DomItem &item);
187 void highlightImport(
const QQmlJS::Dom::DomItem &item);
188 void highlightBinding(
const QQmlJS::Dom::DomItem &item);
189 void highlightPragma(
const QQmlJS::Dom::DomItem &item);
190 void highlightEnumItem(
const QQmlJS::Dom::DomItem &item);
191 void highlightEnumDecl(
const QQmlJS::Dom::DomItem &item);
192 void highlightQmlObject(
const QQmlJS::Dom::DomItem &item);
193 void highlightComponent(
const QQmlJS::Dom::DomItem &item);
194 void highlightPropertyDefinition(
const QQmlJS::Dom::DomItem &item);
195 void highlightMethod(
const QQmlJS::Dom::DomItem &item);
196 void highlightScriptLiteral(
const QQmlJS::Dom::DomItem &item);
197 void highlightIdentifier(
const QQmlJS::Dom::DomItem &item);
198 void highlightBySemanticAnalysis(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
199 void highlightScriptExpressions(
const QQmlJS::Dom::DomItem &item);
200 void highlightCallExpression(
const QQmlJS::Dom::DomItem &item);
201 void highlightFieldMemberAccess(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
205 HighlightsContainer m_highlights;
206 std::optional<HighlightsRange> m_range;
HighlightingVisitor(const QQmlJS::Dom::DomItem &item, const std::optional< HighlightsRange > &range)
const HighlightsContainer & hightights() const
HighlightsContainer & highlights()
Combined button and popup list for selecting options.
void applyDiffs(HighlightsContainer &highlights, const QList< QQmlLSUtils::Diff > &diffs)
HighlightsContainer visitTokens(const QQmlJS::Dom::DomItem &item, const std::optional< HighlightsRange > &range)
void addHighlight(HighlightsContainer &out, const QQmlJS::SourceLocation &loc, QmlHighlightKind, QmlHighlightModifiers=QmlHighlightModifier::None)
void updateResultID(QByteArray &resultID)
QList< QQmlJS::SourceLocation > sourceLocationsFromMultiLineToken(QStringView code, const QQmlJS::SourceLocation &tokenLocation)
Returns multiple source locations for a given raw comment.
void addModifier(QLspSpecification::SemanticTokenModifiers modifier, int *baseModifier)
QList< QLspSpecification::SemanticTokensEdit > computeDiff(const QList< unsigned > &, const QList< unsigned > &)
HighlightsContainer shiftHighlights(const HighlightsContainer &cachedHighlights, const QString &lastValidCode, const QString ¤tCode)
bool rangeOverlapsWithSourceLocation(const QQmlJS::SourceLocation &loc, const HighlightsRange &r)
QList< unsigned > encodeSemanticTokens(const HighlightsContainer &highlights, HighlightingMode mode=HighlightingMode::Default)
static bool rightFragmentRemains(const QQmlJS::SourceLocation &t, quint32 delStart, quint32 delEnd)
static void shiftTokenAfterInsert(QQmlJS::SourceLocation &t, const QQmlJS::SourceLocation &cursor, int newlines, int lastLen, int diffLen)
static FieldFilter highlightingFilter()
static std::pair< quint32, quint32 > newlineCountAndLastLineLength(const QString &text)
static bool insertionTouchesTokenLeft(const QQmlJS::SourceLocation &token, const QQmlJS::SourceLocation &cursor)
static void applyDeletionOverlap(QQmlJS::SourceLocation &t, quint32 delStart, quint32 delEnd, int newlines, quint32 delStartLine, quint32 delStartColumn)
SemanticTokenProtocolTypes
@ QmlExternalObjectProperty
static void updateCursorPositionByDiff(const QString &text, QQmlJS::SourceLocation &cursor)
static void updateHighlightsOnInsert(HighlightsContainer &highlights, QQmlJS::SourceLocation &cursor, const QQmlLSUtils::Diff &diff)
static std::optional< QmlHighlightKind > resolveJsGlobalObjectKind(const DomItem &item, const QString &name)
Further resolves the type of a JavaScriptIdentifier A global object can be in the object form or in t...
int(*)(QmlHighlightKind) QmlHighlightKindToLspKind
static void expandTokenForLeftOverlap(QQmlJS::SourceLocation &t, const QQmlLSUtils::Diff &diff, const QQmlJS::SourceLocation &cursor, int newlines, int lastLen)
static bool tokenAfterOffset(const QQmlJS::SourceLocation &t, quint32 offset)
static bool insertionInsideToken(const QQmlJS::SourceLocation &token, const QQmlJS::SourceLocation &cursor)
static bool spansAcrossDeletion(const QQmlJS::SourceLocation &t, quint32 delStart, quint32 delEnd)
static void shiftTokenAfterDelete(QQmlJS::SourceLocation &t, int newlines, int lastLen, const QQmlJS::SourceLocation &cursor, int diffLen)
static int mapToProtocolForQtCreator(QmlHighlightKind highlightKind)
static void expandTokenForMiddleInsert(QQmlJS::SourceLocation &t, const QQmlLSUtils::Diff &diff, const QQmlJS::SourceLocation &cursor)
static int fromQmlModifierKindToLspTokenType(QmlHighlightModifiers highlightModifier)
static bool tokenBeforeOffset(const QQmlJS::SourceLocation &t, quint32 offset)
static bool leftFragmentRemains(const QQmlJS::SourceLocation &t, quint32 delStart, quint32 delEnd)
static void updateHighlightsOnDelete(HighlightsContainer &highlights, QQmlJS::SourceLocation &cursor, const QQmlLSUtils::Diff &diff)
@ QmlExternalObjectProperty
static int mapToProtocolDefault(QmlHighlightKind highlightKind)
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQIORing)
HighlightToken(const QQmlJS::SourceLocation &loc, QmlHighlightKind, QmlHighlightModifiers=QmlHighlightModifier::None)
QQmlJS::SourceLocation loc
QmlHighlightModifiers modifiers
friend bool operator==(const HighlightToken &lhs, const HighlightToken &rhs)