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
160 const QQmlJS::SourceLocation &tokenLocation);
161void addModifier(QLspSpecification::SemanticTokenModifiers modifier,
int *baseModifier);
166 const std::optional<HighlightsRange> &range);
169void applyDiffs(HighlightsContainer &highlights,
const QList<QQmlLSUtils::Diff> &diffs);
171 const QString &lastValidCode,
const QString ¤tCode);
178 const std::optional<HighlightsRange> &range);
183 bool visitor(QQmlJS::Dom::Path,
const QQmlJS::Dom::DomItem &item,
bool);
184 void highlightComment(
const QQmlJS::Dom::DomItem &item);
185 void highlightImport(
const QQmlJS::Dom::DomItem &item);
186 void highlightBinding(
const QQmlJS::Dom::DomItem &item);
187 void highlightPragma(
const QQmlJS::Dom::DomItem &item);
188 void highlightEnumItem(
const QQmlJS::Dom::DomItem &item);
189 void highlightEnumDecl(
const QQmlJS::Dom::DomItem &item);
190 void highlightQmlObject(
const QQmlJS::Dom::DomItem &item);
191 void highlightComponent(
const QQmlJS::Dom::DomItem &item);
192 void highlightPropertyDefinition(
const QQmlJS::Dom::DomItem &item);
193 void highlightMethod(
const QQmlJS::Dom::DomItem &item);
194 void highlightScriptLiteral(
const QQmlJS::Dom::DomItem &item);
195 void highlightIdentifier(
const QQmlJS::Dom::DomItem &item);
196 void highlightBySemanticAnalysis(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
197 void highlightScriptExpressions(
const QQmlJS::Dom::DomItem &item);
198 void highlightCallExpression(
const QQmlJS::Dom::DomItem &item);
199 void highlightFieldMemberAccess(
const QQmlJS::Dom::DomItem &item, QQmlJS::SourceLocation loc);
203 HighlightsContainer m_highlights;
204 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.
QList< int > encodeSemanticTokens(const HighlightsContainer &highlights, HighlightingMode mode=HighlightingMode::Default)
void applyDiffs(HighlightsContainer &highlights, const QList< QQmlLSUtils::Diff > &diffs)
QList< QLspSpecification::SemanticTokensEdit > computeDiff(const QList< int > &, const QList< int > &)
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)
HighlightsContainer shiftHighlights(const HighlightsContainer &cachedHighlights, const QString &lastValidCode, const QString ¤tCode)
bool rangeOverlapsWithSourceLocation(const QQmlJS::SourceLocation &loc, const HighlightsRange &r)
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)