[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