diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp index b38e42d..9d5640f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp @@ -257,13 +257,13 @@ QList<ExpectedTokenPtr> CompletionHelper::getExpectedTokens(TokenPtr token) results += getExpectedToken(ExpectedToken::OTHER, QString(), QString(), tr("Any word")); break; case Token::STRING: - results += getExpectedToken(ExpectedToken::STRING); + results += getExpectedToken(ExpectedToken::STRING, "''", QString(), tr("String")); break; case Token::FLOAT: - results += getExpectedToken(ExpectedToken::NUMBER); + results += getExpectedToken(ExpectedToken::NUMBER, QString(), QString(), tr("Number")); break; case Token::INTEGER: - results += getExpectedToken(ExpectedToken::NUMBER); + results += getExpectedToken(ExpectedToken::NUMBER, QString(), QString(), tr("Number")); break; case Token::OPERATOR: results += getExpectedToken(ExpectedToken::OPERATOR, token->value); @@ -275,7 +275,7 @@ QList<ExpectedTokenPtr> CompletionHelper::getExpectedTokens(TokenPtr token) results += getExpectedToken(ExpectedToken::OPERATOR, ")"); break; case Token::BLOB: - results += getExpectedToken(ExpectedToken::BLOB); + results += getExpectedToken(ExpectedToken::BLOB, "X''", QString(), tr("BLOB literal")); break; case Token::KEYWORD: results += getExpectedToken(ExpectedToken::KEYWORD, token->value); @@ -634,6 +634,9 @@ QList<ExpectedTokenPtr> CompletionHelper::getColumns(const QString &prefixTable) label = prefixTable+" = "+table; } + if (!dbName.isNull()) + dbName = translateDatabase(dbName); + // CREATE TRIGGER has a special "old" and "new" keywords as aliases for deleted/inserted/updated rows. // They should refer to a table that the trigger is created for. QString tableLower = table; @@ -1070,6 +1073,10 @@ void CompletionHelper::extractQueryAdditionalInfo() { context = Context::EXPR; } + else if (isInInsertColumns()) + { + context = Context::INSERT_COLUMNS; + } else if (isInUpdateReturning()) { context = Context::UPDATE_RETURNING; @@ -1179,6 +1186,29 @@ bool CompletionHelper::isInInsertReturning() return isIn(SqliteQueryType::Insert, "returning", "RETURNING"); } +bool CompletionHelper::isInInsertColumns() +{ + if (isIn(SqliteQueryType::Insert, "idlist_opt", QString())) + return true; + + if (!parsedQuery) + return false; + + if (parsedQuery->queryType != SqliteQueryType::Insert) + return false; + + if (parsedQuery->tokensMap.contains("rp_opt")) + { + TokenList rpTokens = parsedQuery->tokensMap["rp_opt"]; + if (rpTokens.isEmpty()) + return parsedQuery->tokensMap["LP"][0]->start <= cursorPosition; + else + return rpTokens[0]->start >= cursorPosition; + } + + return false; +} + bool CompletionHelper::isIn(SqliteQueryType queryType, const QString &tokenMapKey, const QString &prefixKeyword) { if (!parsedQuery) |
