console::set_display(console::reset);
display = true;
- // Add tokens to embd only if the input buffer is non-empty
- // Entering a empty line lets the user pass control back
- if (buffer.length() > 1) {
+ if (buffer.empty()) { // Ctrl+D on empty line exits
+ LOG("EOF by user\n");
+ break;
+ }
+
+ if (buffer.back() == '\n') {
+ // Implement #587:
+ // If the user wants the text to end in a newline,
+ // this should be accomplished by explicitly adding a newline by using \ followed by return,
+ // then returning control by pressing return again.
+ buffer.pop_back();
+ }
+
+ if (buffer.empty()) { // Enter key on empty line lets the user pass control back
+ LOG_DBG("empty line, passing control back\n");
+ } else { // Add tokens to embd only if the input buffer is non-empty
// append input suffix if any
if (!params.input_suffix.empty() && !params.conversation_mode) {
LOG_DBG("appending input suffix: '%s'\n", params.input_suffix.c_str());
n_remain -= line_inp.size();
LOG_DBG("n_remain: %d\n", n_remain);
- } else {
- LOG_DBG("empty line, passing control back\n");
}
input_echo = false; // do not echo this again