From 548f0b748721198d4b5139ea9580fb8963a0792f Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sat, 7 Mar 2020 15:05:29 +0100 Subject: [PATCH] Fix spaces and umlauts in code completion for deviceId Fixes #340 Fixes #339 --- libnymea-app-core/scripting/codecompletion.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libnymea-app-core/scripting/codecompletion.cpp b/libnymea-app-core/scripting/codecompletion.cpp index 975f7dbf..ed0481fa 100644 --- a/libnymea-app-core/scripting/codecompletion.cpp +++ b/libnymea-app-core/scripting/codecompletion.cpp @@ -162,7 +162,7 @@ void CodeCompletion::update() QList entries; - QRegExp deviceIdExp(".*deviceId: \"[a-zA-Z0-9- ]*"); + QRegExp deviceIdExp(".*deviceId: \"[a-zA-ZÀ-ž0-9- ]*"); if (deviceIdExp.exactMatch(blockText)) { for (int i = 0; i < m_engine->deviceManager()->devices()->rowCount(); i++) { Device *dev = m_engine->deviceManager()->devices()->get(i); @@ -644,6 +644,18 @@ void CodeCompletion::complete(int index) m_cursor.select(QTextCursor::WordUnderCursor); m_cursor.removeSelectedText(); + + // Do we need to remove more? Thing names may contain spaces... + QTextCursor tmp = m_cursor; + tmp.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); + QString blockText = tmp.selectedText(); + QRegExp deviceIdExp(".*deviceId: \"[a-zA-ZÀ-ž0-9- ]*"); + if (deviceIdExp.exactMatch(blockText)) { + QTextCursor tmp = m_document->textDocument()->find("\"", m_cursor.position(), QTextDocument::FindBackward); + m_cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, m_cursor.position() - tmp.position()); + m_cursor.removeSelectedText(); + } + qDebug() << "inserting:" << entry.text; m_cursor.insertText(entry.text);