@@ -183,10 +183,7 @@ void exportBuffer(const AnsiWidget *out, const char *text, const String &dest, c
183183
184184bool externalExec (const AnsiWidget *out, const TextEditInput *editWidget, const String &loadPath) {
185185 bool result;
186- if (editWidget->getTextLength () && !g_exportAddr.empty () && g_exportAddr.indexOf (" sbasic" , 0 ) != -1 ) {
187- launch (g_exportAddr, loadPath);
188- result = true ;
189- } else if (editWidget->getTextLength () && !g_exportAddr.empty () && !g_exportToken.empty ()) {
186+ if (editWidget->getTextLength () && !g_exportAddr.empty () && !g_exportToken.empty ()) {
190187 exportBuffer (out, editWidget->getText (), g_exportAddr, g_exportToken);
191188 result = true ;
192189 } else {
@@ -203,6 +200,7 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
203200 int charWidth = _output->getCharWidth ();
204201 int charHeight = _output->getCharHeight ();
205202 int prevScreenId = _output->selectScreen (FORM_SCREEN);
203+
206204 TextEditInput *editWidget;
207205 if (_editor != nullptr ) {
208206 editWidget = _editor;
@@ -211,10 +209,12 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
211209 } else {
212210 editWidget = new TextEditInput (_programSrc, charWidth, charHeight, 0 , 0 , w, h);
213211 }
212+
214213 auto *helpWidget = new TextEditHelpWidget (editWidget, charWidth, charHeight);
215214 TextEditInput *widget = editWidget;
216215 String recentFile;
217216 StatusMessage statusMessage (editWidget);
217+
218218 enum InputMode {
219219 kInit , kExportAddr , kExportToken , kCommand
220220 } inputMode = kInit ;
@@ -267,6 +267,10 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
267267 _output->setStatus (!gsb_last_errmsg[0 ] ? " Error" : gsb_last_errmsg);
268268 }
269269 }
270+ } else if (gsb_err_mod_perm) {
271+ _output->setStatus (" Running ..." );
272+ saveFile (editWidget, loadPath);
273+ launchConsole (loadPath);
270274 } else {
271275 statusMessage.update (editWidget, _output, true );
272276 }
@@ -329,7 +333,7 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
329333 helpWidget->hide ();
330334 helpWidget->cancelMode ();
331335 statusMessage.setDirty (editWidget);
332- Runtime:: debugStop ();
336+ debugStop ();
333337 break ;
334338 case SB_KEY_CTRL (' s' ):
335339 saveFile (editWidget, loadPath);
@@ -364,7 +368,7 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
364368 if (editWidget->getTextLength ()) {
365369 saveFile (editWidget, loadPath);
366370 saveRecentPosition (loadPath, editWidget->getCursorPos ());
367- _output->setStatus (" Export to SmallBASIC. Enter <IP>:<Port> | <sbasic> " );
371+ _output->setStatus (" Export to SmallBASIC. Enter <IP>:<Port>" );
368372 widget = helpWidget;
369373 helpWidget->createLineEdit (g_exportAddr);
370374 showHelpLineInput (helpWidget, 60 );
@@ -524,16 +528,9 @@ void Runtime::editSource(String loadPath, bool restoreOnExit) {
524528 switch (inputMode) {
525529 case kExportAddr :
526530 g_exportAddr = helpWidget->getText ();
527- if (g_exportAddr.indexOf (" sbasic" , 0 ) == -1 ) {
528- inputMode = kExportToken ;
529- helpWidget->createLineEdit (g_exportToken);
530- _output->setStatus (" Enter token. Esc=Close" );
531- } else {
532- inputMode = kInit ;
533- widget = editWidget;
534- helpWidget->hide ();
535- launch (g_exportAddr, loadPath);
536- }
531+ inputMode = kExportToken ;
532+ helpWidget->createLineEdit (g_exportToken);
533+ _output->setStatus (" Enter token. Esc=Close" );
537534 break ;
538535 case kExportToken :
539536 g_exportToken = helpWidget->getText ();
0 commit comments