diff options
author | David Schulz <david.schulz@qt.io> | 2019-01-29 13:20:58 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-02-12 12:57:31 +0000 |
commit | c6415e265234ad7e3d97f23ef48ce7642a05f71e (patch) | |
tree | d74b1a2a2379e375054a1a5af67a56943f3b08d5 /src/libs/languageserverprotocol | |
parent | 0ec8a255d975e28ac5df4901bdfe22c4a7dabd52 (diff) |
LSP: collect and execute quick fixes via shortcut
Fixes: QTCREATORBUG-21802
Change-Id: I611fac1c3fc5b094816441e36492ed57706c98b8
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/libs/languageserverprotocol')
-rw-r--r-- | src/libs/languageserverprotocol/lsptypes.cpp | 25 | ||||
-rw-r--r-- | src/libs/languageserverprotocol/lsptypes.h | 2 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp index 41f5eb07bd6..2b3e2628b37 100644 --- a/src/libs/languageserverprotocol/lsptypes.cpp +++ b/src/libs/languageserverprotocol/lsptypes.cpp @@ -27,14 +27,15 @@ #include "lsputils.h" #include <utils/mimetypes/mimedatabase.h> +#include <utils/textutils.h> +#include <QFile> #include <QHash> -#include <QTextBlock> -#include <QTextDocument> #include <QJsonArray> #include <QMap> +#include <QTextBlock> +#include <QTextDocument> #include <QVector> -#include <QFile> namespace LanguageServerProtocol { @@ -340,6 +341,24 @@ Range::Range(const Position &start, const Position &end) setEnd(end); } +Range::Range(const QTextCursor &cursor) +{ + int line, character = 0; + Utils::Text::convertPosition(cursor.document(), cursor.selectionStart(), &line, &character); + if (line <= 0 || character <= 0) + return; + setStart(Position(line - 1, character - 1)); + Utils::Text::convertPosition(cursor.document(), cursor.selectionEnd(), &line, &character); + if (line <= 0 || character <= 0) + return; + setEnd(Position(line - 1, character - 1)); +} + +bool Range::overlaps(const Range &range) const +{ + return contains(range.start()) || contains(range.end()); +} + bool DocumentFilter::applies(const Utils::FileName &fileName, const Utils::MimeType &mimeType) const { if (Utils::optional<QString> _scheme = scheme()) { diff --git a/src/libs/languageserverprotocol/lsptypes.h b/src/libs/languageserverprotocol/lsptypes.h index 5175255a13d..9fe9a47a639 100644 --- a/src/libs/languageserverprotocol/lsptypes.h +++ b/src/libs/languageserverprotocol/lsptypes.h @@ -100,6 +100,7 @@ class LANGUAGESERVERPROTOCOL_EXPORT Range : public JsonObject public: Range() = default; Range(const Position &start, const Position &end); + explicit Range(const QTextCursor &cursor); using JsonObject::JsonObject; // The range's start position. @@ -111,6 +112,7 @@ public: void setEnd(const Position &end) { insert(endKey, end); } bool contains(const Position &pos) const { return start() <= pos && pos <= end(); } + bool overlaps(const Range &range) const; bool isValid(QStringList *error) const override { return check<Position>(error, startKey) && check<Position>(error, endKey); } |