diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 021643535fc060a3ff4682ca808d6bafa201eec2..c0ebfcf273b9cc0f1b390eec221d8e64c2157036 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -510,6 +510,21 @@ AST::Node *SemanticInfo::declaringMember(int cursorPosition) const return declaringMember; } +QList<AST::Node *> SemanticInfo::astPath(int cursorPosition) const +{ + QList<AST::Node *> path; + + foreach (const Range &range, ranges) { + if (range.begin.isNull() || range.end.isNull()) { + continue; + } else if (cursorPosition >= range.begin.position() && cursorPosition <= range.end.position()) { + path += range.ast; + } + } + + return path; +} + AST::Node *SemanticInfo::nodeUnderCursor(int pos) const { if (! document) diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index dc8d93a3006fbf4fac15f0bb313a3ca0b8b7f104..dfa5228fd7b81e376dc3ddac3e3d94a623a70b8b 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -115,6 +115,9 @@ public: // Returns the AST node under cursor QmlJS::AST::Node *nodeUnderCursor(int cursorPosition) const; + // Returns the list of nodes that enclose the given position. + QList<QmlJS::AST::Node *> astPath(int cursorPosition) const; + public: // attributes QmlJS::Document::Ptr document; QmlJS::Snapshot snapshot;