Sorry... I didn't explain the command-line stuff completely and forgot a
part.

Here's a patch (attached).


On Wed, Aug 13, 2014 at 2:22 PM, Chris Moller <mol...@mollerware.com> wrote:

>
>    - Added the command-line stuff.
>    - Fixed the assign arrow and branch arrow transposition.
>
> Both pushed to github.
>  I'll look at the quad-PW stuff
>
>
> On 08/13/14 16:36, David Lamkins wrote:
>
>    Here's a feature request:
>
>  - Provide a means to pass command-line arguments to APL.
>
>  At the very least, I'd like to be able to do something like:
>
>  $ aplwrap -s 16 -- --my-option 1234
>
>  where everything from -- onward would be tacked onto the end of aplwrap's
> apl_argv[].
>
>  That way, everything after the -- would be available via quad-ARG for
> consumption by the APL program.
>
>
>


-- 
"The secret to creativity is knowing how to hide your sources."
   Albert Einstein


http://soundcloud.com/davidlamkins
http://reverbnation.com/lamkins
http://reverbnation.com/lcw
http://lamkins-guitar.com/
http://lamkins.net/
http://successful-lisp.com/
diff --git a/src/aplwrap.c b/src/aplwrap.c
index a14ebf0..e2790e4 100644
--- a/src/aplwrap.c
+++ b/src/aplwrap.c
@@ -324,6 +324,7 @@ main (int   argc,
   GtkWidget *vbox;
   gboolean rc;
   gchar *new_fn = NULL;
+  gchar *opt_lx = NULL;
 
   GOptionEntry entries[] = {
     { "ftsize", 's', 0, G_OPTION_ARG_INT,
@@ -346,6 +347,10 @@ main (int   argc,
       &new_fn,
       "Set an absolute or on-path executable APL other than the default.",
       NULL },
+    { "LX", 0, 0, G_OPTION_ARG_STRING,
+      &opt_lx,
+      "Invoke APL ⎕LX on startup. (string: APL command or expression)",
+      NULL },
     { NULL }
   };
 
@@ -368,8 +373,8 @@ main (int   argc,
 			"--silent",		// fixme make option
 		       NULL};
 #else
-  gchar **apl_argv = g_alloca ((7 + argc) * sizeof (gchar *));
-  bzero (apl_argv, (7 + argc) * sizeof (gchar *));
+  gchar **apl_argv = g_alloca ((9 + argc) * sizeof (gchar *));
+  bzero (apl_argv, (9 + argc) * sizeof (gchar *));
   {
     gint ix = 0;
     apl_argv[ix++] = "apl";
@@ -378,10 +383,18 @@ main (int   argc,
     apl_argv[ix++] = "-w";
     apl_argv[ix++] = "500";
     apl_argv[ix++] = "--silent";
+    if (opt_lx) {
+      apl_argv[ix++] = "--LX";
+      apl_argv[ix++] = opt_lx;
+    }
 
     if (argc > 1) {
-      for (int i = 1; i < argc; i++) {
-	if (0 != g_strcmp0 (argv[i], "--")) apl_argv[ix++] = argv[i];
+      int i;
+      for (i = 1; i < argc; i++) {
+	if (0 == g_strcmp0 (argv[i], "--")) break;
+      }
+      for (; i < argc; ++i) {
+        apl_argv[ix++] = argv[i];
       }
     }
     apl_argv[ix++] = NULL;

Reply via email to