From 5bac2b50e214842ff064da8690073479d3007976 Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Fri, 17 May 1996 02:36:13 +0000 Subject: [PATCH] * gdbtk.tcl (gdb_prompt): Set this early on. (create_command_window): Use gdb_prompt rather than "(gdb) ". (gdbtk_tcl_preloop): Proc executed just prior to Tk main loop. (tclsh): If an evaluation window already exists, just bring it to the front instead of trying to create another. * gdbtk.c (tk_command_loop): New function. (gdbtk_init): Call tk_command_loop rather than Tk_MainLoop. --- gdb/ChangeLog | 10 ++++++++++ gdb/gdbtk.c | 12 +++++++++++- gdb/gdbtk.tcl | 17 +++++++++++++++-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 22a20067c39..2a8e1b8330a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,14 @@ start-sanitize-gdbtk +Thu May 16 19:20:29 1996 Fred Fish + + * gdbtk.tcl (gdb_prompt): Set this early on. + (create_command_window): Use gdb_prompt rather than "(gdb) ". + (gdbtk_tcl_preloop): Proc executed just prior to Tk main loop. + (tclsh): If an evaluation window already exists, just bring it + to the front instead of trying to create another. + * gdbtk.c (tk_command_loop): New function. + (gdbtk_init): Call tk_command_loop rather than Tk_MainLoop. + Thu May 16 16:16:35 1996 Fred Fish * gdbtk.tcl (evaluate_tcl_command, tclsh): New functions that diff --git a/gdb/gdbtk.c b/gdb/gdbtk.c index 08b483ebfb3..6234e4a012f 100644 --- a/gdb/gdbtk.c +++ b/gdb/gdbtk.c @@ -1111,6 +1111,16 @@ gdbtk_call_command (cmdblk, arg, from_tty) (*cmdblk->function.cfunc)(arg, from_tty); } +/* This function is called instead of gdb's internal command loop. This is the + last chance to do anything before entering the main Tk event loop. */ + +static void +tk_command_loop () +{ + Tcl_Eval (interp, "gdbtk_tcl_preloop"); + Tk_MainLoop (); +} + static void gdbtk_init () { @@ -1160,7 +1170,7 @@ gdbtk_init () Tcl_CreateCommand (interp, "gdb_get_breakpoint_info", call_wrapper, gdb_get_breakpoint_info, NULL); - command_loop_hook = Tk_MainLoop; + command_loop_hook = tk_command_loop; print_frame_info_listing_hook = null_routine; query_hook = gdbtk_query; flush_hook = gdbtk_flush; diff --git a/gdb/gdbtk.tcl b/gdb/gdbtk.tcl index 39afddb1c1b..3fcf2ce2d20 100644 --- a/gdb/gdbtk.tcl +++ b/gdb/gdbtk.tcl @@ -28,6 +28,7 @@ set line_numbers 1 set breakpoint_file(-1) {[garbage]} set disassemble_with_source nosource set expr_update_list(0) 0 +set gdb_prompt "(gdb) " set debug_interface 0 @@ -2291,6 +2292,7 @@ proc find_completion {cmd completions} { proc create_command_window {} { global command_line global saw_tab + global gdb_prompt set saw_tab 0 if {[winfo exists .cmd]} {raise .cmd ; return} @@ -2340,7 +2342,7 @@ proc create_command_window {} { # %W insert end $result set command_line {} # update_ptr - %W insert end "(gdb) " + %W insert end "$gdb_prompt" %W see end break } @@ -2391,7 +2393,7 @@ proc create_command_window {} { if {[regexp ".* " $command_line prefix]} { regsub -all $prefix $choices {} choices } - %W insert end "\n[join $choices { }]\n(gdb) $command_line" + %W insert end "\n[join $choices { }]\n$gdb_prompt$command_line" %W see end } break @@ -3128,6 +3130,9 @@ proc evaluate_tcl_command { twidget } { proc tclsh {} { global tcl_prompt + # If another evaluation window already exists, just bring it to the front. + if {[winfo exists .eval]} {raise .eval ; return} + # Create top level frame with scrollbar and text widget. toplevel .eval wm title .eval "Tcl Evaluation" @@ -3156,6 +3161,14 @@ proc tclsh {} { bindtags .eval.text {.eval.text Text all} } +# This proc is executed just prior to falling into the Tk main event loop. +proc gdbtk_tcl_preloop {} { + global gdb_prompt + .cmd.text insert end "$gdb_prompt" + .cmd.text see end + update +} + # FIXME need to handle mono here. In Tk4 that is more complicated. set highlight "-background red2 -borderwidth 2 -relief sunken" -- 2.30.2