diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7ced88534be06e3e2db522ae8bd010639be09046..cb777075a8e37bf82f163c234e7202d4de432294 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2005-02-10  Andrew Cagney  <cagney@gnu.org>
+
+	* cli/cli-setshow.c (do_setshow_command): Move code printing the
+	value to the end of the function.  Handle MI and non-MI output
+	differently.
+
 2005-02-09  Andrew Cagney  <cagney@gnu.org>
 
 	* cli/cli-decode.c (add_setshow_enum_cmd): Drop set_result and
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index cf87cf6161bbd13e5e6d0786c4d311dcd42161c8..73e47a4348ff873797615a1a32e20c2e10bb6c18 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -266,11 +266,6 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
       if (c->pre_show_hook)
 	(c->pre_show_hook) (c);
 
-      /* Print doc minus "show" at start.  */
-      print_doc_line (gdb_stdout, c->doc + 5);
-
-      ui_out_text (uiout, " is ");
-      ui_out_wrap_hint (uiout, "    ");
       quote = 0;
       switch (c->var_type)
 	{
@@ -333,12 +328,30 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
 	default:
 	  error ("gdb internal error: bad var_type in do_setshow_command");
 	}
-      if (quote)
-	ui_out_text (uiout, "\"");
-      ui_out_field_stream (uiout, "value", stb);
-      if (quote)
-	ui_out_text (uiout, "\"");
-      ui_out_text (uiout, ".\n");
+
+
+      /* FIXME: cagney/2005-02-10: Need to split this in half: code to
+	 convert the value into a string (esentially the above); and
+	 code to print the value out.  For the latter there should be
+	 MI and CLI specific versions.  */
+
+      if (ui_out_is_mi_like_p (uiout))
+	ui_out_field_stream (uiout, "value", stb);
+      else
+	{
+	  /* Print doc minus "show" at start.  */
+	  print_doc_line (gdb_stdout, c->doc + 5);
+
+	  ui_out_text (uiout, " is ");
+	  ui_out_wrap_hint (uiout, "    ");
+	  if (quote)
+	    ui_out_text (uiout, "\"");
+	  ui_out_field_stream (uiout, "value", stb);
+	  if (quote)
+	    ui_out_text (uiout, "\"");
+	  ui_out_text (uiout, ".\n");
+	  do_cleanups (old_chain);
+	}
       do_cleanups (old_chain);
     }
   else