aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/languageserverprotocol
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-01-29 13:20:58 +0100
committerDavid Schulz <david.schulz@qt.io>2019-02-12 12:57:31 +0000
commitc6415e265234ad7e3d97f23ef48ce7642a05f71e (patch)
treed74b1a2a2379e375054a1a5af67a56943f3b08d5 /src/libs/languageserverprotocol
parent0ec8a255d975e28ac5df4901bdfe22c4a7dabd52 (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.cpp25
-rw-r--r--src/libs/languageserverprotocol/lsptypes.h2
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); }