changeset 27909:a29db5c46706

fix use of escape sequences when running code with F9 (bug #57469) * octave-qscintilla.cc (contextmenu_run): call temporary function for displaying command and adding it to history with single quoted arguments, which also allows to simplify the replacement of % and \ in the code strings
author Torsten Lilge <ttl-octave@mailbox.org>
date Sat, 28 Dec 2019 00:30:18 +0100
parents f658d41003e4
children 543520386e1e
files libgui/src/m-editor/octave-qscintilla.cc
diffstat 1 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/octave-qscintilla.cc	Fri Jan 03 20:37:22 2020 -0800
+++ b/libgui/src/m-editor/octave-qscintilla.cc	Sat Dec 28 00:30:18 2019 +0100
@@ -843,12 +843,10 @@
     for (int i = 0; i < lines.count (); i++)
       {
         QString line = lines.at (i);
-        QString line_clean_1 = line;
-        line_clean_1.replace (QString ("\""), QString ("\\\""));
-
-        line = line.replace (QString ("%"), QString ("%%"));
-        QString line_clean_2 = line;
-        line_clean_2.replace (QString ("\""), QString ("\\\""));
+        QString line_history = line;
+        line_history.replace (QString ("\\"), QString ("\\\\"));
+        line_history.replace (QString ("\""), QString ("\\\""));
+        line_history.replace (QString ("%"), QString ("%%"));
 
         // Prevent output of breakpoint in temp. file for keyboard
         QString next_bp_quiet;
@@ -862,16 +860,19 @@
           }
 
         // Add codeline togetcher with call to echo/hitory function to tmp
-        code += QString ("%1 (%2, \"%3\", \"%4\");\n"
+        // %1 : function name for displaying and adding to history
+        // %2 : line number
+        // %3 : command line (eval and display)
+        // %4 : command line for history (via fprintf)
+        code += QString ("%1 (%2, '%3', '%4');\n"
                           + next_bp_quiet
-                          + "%5\n"
+                          + "%3\n"
                           + next_bp_quiet_reset
                           + "\n")
                          .arg (tmp_script_name)
                          .arg (i)
-                         .arg (line_clean_1)
-                         .arg (line_clean_2)
-                         .arg (line);
+                         .arg (line)
+                         .arg (line_history);
       }
 
     code += QString ("munlock (\"%1\"); clear %1;\n").arg (tmp_script_name);