[education/rkward] rkward/rbackend: Avoid triggering any options("error") on incomplete commands
Thomas Friedrichsmeier
null at kde.org
Sun Sep 14 19:26:16 BST 2025
Git commit e9d021c160b995edf64166a2b3bb7f930b52e11a by Thomas Friedrichsmeier.
Committed on 14/09/2025 at 09:32.
Pushed by tfry into branch 'master'.
Avoid triggering any options("error") on incomplete commands
M +3 -3 rkward/rbackend/rkrbackend.cpp
https://invent.kde.org/education/rkward/-/commit/e9d021c160b995edf64166a2b3bb7f930b52e11a
diff --git a/rkward/rbackend/rkrbackend.cpp b/rkward/rbackend/rkrbackend.cpp
index 6577dca98..0b0ecdd6f 100644
--- a/rkward/rbackend/rkrbackend.cpp
+++ b/rkward/rbackend/rkrbackend.cpp
@@ -308,7 +308,7 @@ int RReadConsole(const char *prompt, unsigned char *buf, int buflen, int hist) {
if (RKTextCodec::fromNative(prompt) == RKRSupport::SEXPToString(RFn::Rf_GetOption(RFn::Rf_install("continue"), ROb(R_BaseEnv)))) {
RKRBackend::this_pointer->current_command->status |= RCommand::Failed | RCommand::ErrorIncomplete;
RKRBackend::repl_status.user_command_status = RKRBackend::RKReplStatus::ReplIterationKilled;
- RFn::Rf_error("%s", ""); // to discard the buffer
+ RK_doIntr(); // to discard the buffer
} // else: continue in next iteration at UserCommandRunning
} else {
RKTransmitNextUserCommandChunk(buf, buflen);
@@ -1291,7 +1291,7 @@ void RKRBackend::runCommand(RCommandProxy *command) {
RKParseAndRunData data;
data.command = command;
RFn::R_ToplevelExec(&parseAndRunWorker, &data);
- // fix up after conditions that would have cause parseAndRunWorker() to exit via longjmp
+ // fix up after conditions that would have caused parseAndRunWorker() to exit via longjmp
command->status |= RCommand::WasTried;
if (data.status < RKParseAndRunData::ResetWarn) {
markLastWarningAsErrorMessage();
@@ -1422,7 +1422,7 @@ RCommandProxy *RKRBackend::commandFinished(FetchCommandMode fetch_next, ObjectUp
QMutexLocker lock(&command_flow_mutex);
if (repl_status.interrupted) {
repl_status.interrupted = false;
- current_command->status |= RCommand::Canceled;
+ if (!(current_command->status & RCommand::ErrorIncomplete)) current_command->status |= RCommand::Canceled;
}
current_command = current_command->outer_command;
}
More information about the rkward-tracker
mailing list