From 3c7403c706d7ee3214409d17b555b1427a17e20e Mon Sep 17 00:00:00 2001
From: Jose Antonio Ortega Ruiz <jao@gnu.org>
Date: Sat, 7 Jul 2001 20:31:45 +0000
Subject: trace->tracing

---
 mixlib/mix_vm_command.c | 81 +++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 68 insertions(+), 13 deletions(-)

diff --git a/mixlib/mix_vm_command.c b/mixlib/mix_vm_command.c
index b3156c2..4f0295f 100644
--- a/mixlib/mix_vm_command.c
+++ b/mixlib/mix_vm_command.c
@@ -95,9 +95,13 @@ DEC_FUN (cbpa_);
 DEC_FUN (cabp_);
 DEC_FUN (weval_);
 DEC_FUN (w2d_);
-DEC_FUN (trace_);
+DEC_FUN (tracing_);
 DEC_FUN (edit_);
 DEC_FUN (compile_);
+DEC_FUN (pedit_);
+DEC_FUN (sedit_);
+DEC_FUN (pasm_);
+DEC_FUN (sasm_);
 
 /* internal command info struct */
 typedef struct {
@@ -113,8 +117,14 @@ command_ commands_[] = {
   { "help", cmd_help_, N_("Display this text"), "help [COMMAND]"},
   { "load", cmd_load_, N_("Load a MIX code file"), "load FILENAME"},
   { "edit", cmd_edit_, N_("Edit a MIXAL source file"), "edit [FILENAME]"},
+  { "pedit", cmd_pedit_, N_("Print the external editor command"), "pedit"},
+  { "sedit", cmd_sedit_, N_("Set the external editor command"),
+    "sedit COMMAND (e.g. emacs %s)"},
   { "compile", cmd_compile_, N_("Compile a MIXAL source file"),
     "compile [FILENAME]"},
+  { "pasm", cmd_pasm_, N_("Print the compile command"), "pasm"},
+  { "sasm", cmd_sasm_, N_("Set the compile command"),
+    "sasm COMMAND (e.g. mixasm -g -l %s)"},
   { "run", cmd_run_, N_("Run loaded or given MIX code file"), 
     "run [FILENAME]"},
   { "next", cmd_next_, N_("Execute next instruction(s)"), 
@@ -145,13 +155,13 @@ command_ commands_[] = {
   { "weval", cmd_weval_, N_("Evaluate a given W-expression"), "weval WEXPR"},
   { "w2d", cmd_w2d_, N_("Convert a MIX word to its decimal value"),
     "w2d WORD"},
-  { "trace", cmd_trace_, N_("Turn on/off instruction tracing."),
-    "trace on|off"},
+  { "tracing", cmd_tracing_, N_("Turn on/off instruction tracing"),
+    "tracing on|off"},
   { NULL, NULL, NULL, NULL},
 };
 
 /* configuration keys */
-static const gchar *TRACE_KEY_ = "Trace";
+static const gchar *TRACING_KEY_ = "Tracing";
 static const gchar *EDITOR_KEY_ = "Editor";
 static const gchar *ASM_KEY_ = "Assembler";
 
@@ -235,8 +245,8 @@ mix_vm_cmd_dispatcher_new_with_config (FILE *out, FILE *err,
   mix_vm_cmd_dispatcher_t *result = mix_vm_cmd_dispatcher_new (out, err);
   if (result != NULL && (result->config = config) != NULL)
     {
-      const gchar *val = mix_config_get (result->config, TRACE_KEY_);
-      if (val) cmd_trace_ (result, val);
+      const gchar *val = mix_config_get (result->config, TRACING_KEY_);
+      if (val) cmd_tracing_ (result, val);
       val = mix_config_get (result->config, EDITOR_KEY_);
       if (val) mix_vm_cmd_dispatcher_set_editor (result, val);
       val = mix_config_get (result->config, ASM_KEY_);
@@ -532,10 +542,17 @@ cmd_help_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
      
   for (i = 0; commands_[i].name; i++)
     {
-      if (!*arg || (strcmp (arg, commands_[i].name) == 0))
+      if (!arg || !*arg)
 	{
-	  fprintf (dis->out ,_("%s\t\t%s. Usage: %s\n"), commands_[i].name, 
-		  _(commands_[i].doc), commands_[i].usage);
+	  fprintf (dis->out ,_("%s\t\t%s\n"), commands_[i].name, 
+		   _(commands_[i].doc));
+	  printed++;
+	}
+      else if ((strcmp (arg, commands_[i].name) == 0))
+	{
+	  fprintf (dis->out ,_("%s\t\t%s.\n\t\tUsage: %s\n"),
+		   commands_[i].name,  _(commands_[i].doc),
+		   commands_[i].usage);
 	  printed++;
 	}
     }
@@ -1295,21 +1312,59 @@ cmd_w2d_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
 }
 
 static gboolean
-cmd_trace_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
+cmd_tracing_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
 {
   static const gchar *ON = "on";
   static const gchar *OFF = "off";
   if (arg && !strcmp (arg, ON))
     {
       dis->trace = TRUE;
-      if (dis->config) mix_config_update (dis->config, TRACE_KEY_, ON);
+      if (dis->config) mix_config_update (dis->config, TRACING_KEY_, ON);
     }
   else if (arg && !strcmp (arg, OFF))
     {
       dis->trace = FALSE;
-      if (dis->config) mix_config_update (dis->config, TRACE_KEY_, OFF);
+      if (dis->config) mix_config_update (dis->config, TRACING_KEY_, OFF);
     }
   else
-    cmd_help_ (dis, "trace");
+    cmd_help_ (dis, "tracing");
+  return TRUE;
+}
+
+static gboolean
+cmd_pedit_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
+{
+  const gchar *ed = mix_vm_cmd_dispatcher_get_editor (dis);
+  if (dis)
+    fprintf (dis->out, "Edit command:%s\n", ed);
+  else
+    fprintf (dis->out, "Edit command not set (use sedit)\n");
+  return TRUE;
+}
+
+static gboolean
+cmd_sedit_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
+{
+  if (!arg || !strlen (arg)) return cmd_help_ (dis, "sedit");
+  mix_vm_cmd_dispatcher_set_editor (dis, arg);
+  return TRUE;
+}
+
+static gboolean
+cmd_pasm_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
+{
+  const gchar *ed = mix_vm_cmd_dispatcher_get_assembler (dis);
+  if (dis)
+    fprintf (dis->out, "Compile command:%s\n", ed);
+  else
+    fprintf (dis->out, "Compile command not set (use sasm)\n");
+  return TRUE;
+}
+
+static gboolean
+cmd_sasm_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)
+{
+  if (!arg || !strlen (arg)) return cmd_help_ (dis, "sasm");
+  mix_vm_cmd_dispatcher_set_assembler (dis, arg);
   return TRUE;
 }
-- 
cgit v1.2.3