diff --git a/base/base/ReplxxLineReader.cpp b/base/base/ReplxxLineReader.cpp index 1f75eed479b..9ea53bb132b 100644 --- a/base/base/ReplxxLineReader.cpp +++ b/base/base/ReplxxLineReader.cpp @@ -125,7 +125,12 @@ void convertHistoryFile(const std::string & path, replxx::Replxx & rx) } -bool replxx_last_is_delimiter = false; +static bool replxx_last_is_delimiter = false; +void ReplxxLineReader::setLastIsDelimiter(bool flag) +{ + replxx_last_is_delimiter = flag; +} + ReplxxLineReader::ReplxxLineReader( Suggest & suggest, const String & history_file_path_, diff --git a/base/base/ReplxxLineReader.h b/base/base/ReplxxLineReader.h index 4a975d2975d..b9ec214d02c 100644 --- a/base/base/ReplxxLineReader.h +++ b/base/base/ReplxxLineReader.h @@ -19,6 +19,9 @@ public: void enableBracketedPaste() override; + /// If highlight is on, we will set a flag to denote whether the last token is a delimiter. + /// This is useful to determine the behavior of key when multiline is enabled. + static void setLastIsDelimiter(bool flag); private: InputStatus readOneLine(const String & prompt) override; void addToHistory(const String & line) override; diff --git a/src/Client/ClientBaseHelpers.cpp b/src/Client/ClientBaseHelpers.cpp index 1d558159139..5ad34ba8e81 100644 --- a/src/Client/ClientBaseHelpers.cpp +++ b/src/Client/ClientBaseHelpers.cpp @@ -6,10 +6,6 @@ #include #include -#if USE_REPLXX -extern bool replxx_last_is_delimiter; -#endif - namespace DB { @@ -156,9 +152,9 @@ void highlight(const String & query, std::vector & colors for (Token token = lexer.nextToken(); !token.isEnd(); token = lexer.nextToken()) { if (token.type == TokenType::Semicolon || token.type == TokenType::VerticalDelimiter) - replxx_last_is_delimiter = true; + ReplxxLineReader::setLastIsDelimiter(true); else if (token.type != TokenType::Whitespace) - replxx_last_is_delimiter = false; + ReplxxLineReader::setLastIsDelimiter(false); size_t utf8_len = UTF8::countCodePoints(reinterpret_cast(token.begin), token.size()); for (size_t code_point_index = 0; code_point_index < utf8_len; ++code_point_index)