Not logged in
Hex Artifact Content

Artifact 1644daa3a002c00df62e75decc2b2d1e753876d2:

  • File RamDebugger.tcl — part of check-in [a62a786992] at 2011-07-04 08:38:08 on branch trunk — improving insert_brackets_braces (user: root size: 300509)

0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 20 74 68 65 20  #!/bin/sh.# the 
0010: 6e 65 78 74 20 6c 69 6e 65 20 72 65 73 74 61 72  next line restar
0020: 74 73 20 75 73 69 6e 67 20 77 69 73 68 20 5c 0a  ts using wish \.
0030: 65 78 65 63 20 77 69 73 68 20 22 24 30 22 20 22  exec wish "$0" "
0040: 24 40 22 0a 23 20 52 61 6d 44 65 62 75 67 67 65  $@".# RamDebugge
0050: 72 20 20 2d 2a 2d 20 54 43 4c 20 2d 2a 2d 20 43  r  -*- TCL -*- C
0060: 72 65 61 74 65 64 3a 20 72 61 6d 73 61 6e 20 4a  reated: ramsan J
0070: 75 6c 2d 32 30 30 32 2c 20 4d 6f 64 69 66 69 65  ul-2002, Modifie
0080: 64 3a 20 72 61 6d 73 61 6e 20 44 65 63 2d 32 30  d: ramsan Dec-20
0090: 30 39 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75  09..package requ
00a0: 69 72 65 20 54 63 6c 20 38 2e 35 0a 70 61 63 6b  ire Tcl 8.5.pack
00b0: 61 67 65 20 72 65 71 75 69 72 65 20 54 6b 20 38  age require Tk 8
00c0: 2e 35 0a 0a 23 20 70 61 63 6b 61 67 65 20 72 65  .5..# package re
00d0: 71 75 69 72 65 20 63 6f 6d 70 61 73 73 5f 75 74  quire compass_ut
00e0: 69 6c 73 0a 23 20 6d 79 6c 6f 67 3a 3a 69 6e 69  ils.# mylog::ini
00f0: 74 20 2d 76 69 65 77 5f 62 69 6e 64 69 6e 67 20  t -view_binding 
0100: 3c 43 6f 6e 74 72 6f 6c 2d 4c 3e 20 64 65 62 75  <Control-L> debu
0110: 67 0a 0a 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78  g..if { [info ex
0120: 69 73 74 73 20 3a 3a 73 74 61 72 6b 69 74 3a 3a  ists ::starkit::
0130: 74 6f 70 64 69 72 5d 20 7d 20 7b 0a 20 20 20 20  topdir] } {.    
0140: 23 20 54 68 69 73 20 69 73 20 66 6f 72 20 74 68  # This is for th
0150: 65 20 73 74 61 72 6b 69 74 20 69 6e 20 55 4e 49  e starkit in UNI
0160: 58 20 74 6f 20 73 74 61 72 74 20 67 72 61 70 68  X to start graph
0170: 69 63 61 6c 6c 79 0a 20 20 20 20 23 20 74 68 61  ically.    # tha
0180: 74 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  t the following 
0190: 6c 69 6e 65 20 6f 75 74 20 69 66 20 79 6f 75 20  line out if you 
01a0: 77 61 6e 74 20 74 6f 20 72 75 6e 20 77 69 74 68  want to run with
01b0: 6f 75 74 20 47 55 49 0a 20 20 20 20 70 61 63 6b  out GUI.    pack
01c0: 61 67 65 20 72 65 71 75 69 72 65 20 54 6b 20 38  age require Tk 8
01d0: 2e 35 0a 7d 0a 0a 70 61 63 6b 61 67 65 20 72 65  .5.}..package re
01e0: 71 75 69 72 65 20 6d 73 67 63 61 74 0a 0a 69 66  quire msgcat..if
01f0: 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64   { [info command
0200: 73 20 5f 5d 20 65 71 20 22 22 20 7d 20 7b 0a 20  s _] eq "" } {. 
0210: 20 20 20 70 72 6f 63 20 3a 3a 5f 20 7b 20 61 72     proc ::_ { ar
0220: 67 73 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 72 65  gs } {..if { [re
0230: 67 65 78 70 20 7b 28 2e 2a 29 23 43 23 28 2e 2a  gexp {(.*)#C#(.*
0240: 29 7d 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73  )} [lindex $args
0250: 20 30 5d 20 7b 7d 20 73 74 72 20 63 6f 6d 6d 5d   0] {} str comm]
0260: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 61 72   } {..    set ar
0270: 67 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72  gs [lreplace $ar
0280: 67 73 20 30 20 30 20 24 73 74 72 5d 0a 09 7d 0a  gs 0 0 $str]..}.
0290: 09 72 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c  .return [uplevel
02a0: 20 31 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20   1 ::msgcat::mc 
02b0: 24 61 72 67 73 5d 0a 20 20 20 20 7d 0a 7d 0a 0a  $args].    }.}..
02c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0310: 0a 23 20 20 54 68 69 73 20 73 6f 66 74 77 61 72  .#  This softwar
0320: 65 20 69 73 20 63 6f 70 79 72 69 67 68 74 65 64  e is copyrighted
0330: 20 62 79 20 52 61 6d 6f 6e 20 52 69 62 6f 20 28   by Ramon Ribo (
0340: 52 41 4d 53 41 4e 29 20 72 61 6d 73 61 6e 40 63  RAMSAN) ramsan@c
0350: 6f 6d 70 61 73 73 69 73 2e 63 6f 6d 0a 23 20 20  ompassis.com.#  
0360: 28 68 74 74 70 3a 2f 2f 77 77 77 2e 67 69 64 68  (http://www.gidh
0370: 6f 6d 65 2e 63 6f 6d 2f 72 61 6d 73 61 6e 29 20  ome.com/ramsan) 
0380: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65  The following te
0390: 72 6d 73 20 61 70 70 6c 79 20 74 6f 20 61 6c 6c  rms apply to all
03a0: 20 66 69 6c 65 73 20 0a 23 20 20 61 73 73 6f 63   files .#  assoc
03b0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
03c0: 6f 66 74 77 61 72 65 20 75 6e 6c 65 73 73 20 65  oftware unless e
03d0: 78 70 6c 69 63 69 74 6c 79 20 64 69 73 63 6c 61  xplicitly discla
03e0: 69 6d 65 64 20 69 6e 20 69 6e 64 69 76 69 64 75  imed in individu
03f0: 61 6c 20 66 69 6c 65 73 2e 0a 0a 23 20 20 54 68  al files...#  Th
0400: 65 20 61 75 74 68 6f 72 73 20 68 65 72 65 62 79  e authors hereby
0410: 20 67 72 61 6e 74 20 70 65 72 6d 69 73 73 69 6f   grant permissio
0420: 6e 20 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20  n to use, copy, 
0430: 6d 6f 64 69 66 79 2c 20 64 69 73 74 72 69 62 75  modify, distribu
0440: 74 65 2c 0a 23 20 20 61 6e 64 20 6c 69 63 65 6e  te,.#  and licen
0450: 73 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  se this software
0460: 20 61 6e 64 20 69 74 73 20 64 6f 63 75 6d 65 6e   and its documen
0470: 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 79 20 70  tation for any p
0480: 75 72 70 6f 73 65 2c 20 70 72 6f 76 69 64 65 64  urpose, provided
0490: 0a 23 20 20 74 68 61 74 20 65 78 69 73 74 69 6e  .#  that existin
04a0: 67 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69  g copyright noti
04b0: 63 65 73 20 61 72 65 20 72 65 74 61 69 6e 65 64  ces are retained
04c0: 20 69 6e 20 61 6c 6c 20 63 6f 70 69 65 73 20 61   in all copies a
04d0: 6e 64 20 74 68 61 74 20 74 68 69 73 0a 23 20 20  nd that this.#  
04e0: 6e 6f 74 69 63 65 20 69 73 20 69 6e 63 6c 75 64  notice is includ
04f0: 65 64 20 76 65 72 62 61 74 69 6d 20 69 6e 20 61  ed verbatim in a
0500: 6e 79 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73  ny distributions
0510: 2e 20 4e 6f 20 77 72 69 74 74 65 6e 20 61 67 72  . No written agr
0520: 65 65 6d 65 6e 74 2c 0a 23 20 20 6c 69 63 65 6e  eement,.#  licen
0530: 73 65 2c 20 6f 72 20 72 6f 79 61 6c 74 79 20 66  se, or royalty f
0540: 65 65 20 69 73 20 72 65 71 75 69 72 65 64 20 66  ee is required f
0550: 6f 72 20 61 6e 79 20 6f 66 20 74 68 65 20 61 75  or any of the au
0560: 74 68 6f 72 69 7a 65 64 20 75 73 65 73 2e 0a 23  thorized uses..#
0570: 20 20 4d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20    Modifications 
0580: 74 6f 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  to this software
0590: 20 6d 61 79 20 62 65 20 63 6f 70 79 72 69 67 68   may be copyrigh
05a0: 74 65 64 20 62 79 20 74 68 65 69 72 20 61 75 74  ted by their aut
05b0: 68 6f 72 73 0a 23 20 20 61 6e 64 20 6e 65 65 64  hors.#  and need
05c0: 20 6e 6f 74 20 66 6f 6c 6c 6f 77 20 74 68 65 20   not follow the 
05d0: 6c 69 63 65 6e 73 69 6e 67 20 74 65 72 6d 73 20  licensing terms 
05e0: 64 65 73 63 72 69 62 65 64 20 68 65 72 65 2c 20  described here, 
05f0: 70 72 6f 76 69 64 65 64 20 74 68 61 74 0a 23 20  provided that.# 
0600: 20 74 68 65 20 6e 65 77 20 74 65 72 6d 73 20 61   the new terms a
0610: 72 65 20 63 6c 65 61 72 6c 79 20 69 6e 64 69 63  re clearly indic
0620: 61 74 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73  ated on the firs
0630: 74 20 70 61 67 65 20 6f 66 20 65 61 63 68 20 66  t page of each f
0640: 69 6c 65 20 77 68 65 72 65 0a 23 20 20 74 68 65  ile where.#  the
0650: 79 20 61 70 70 6c 79 2e 0a 0a 23 20 20 49 4e 20  y apply...#  IN 
0660: 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54  NO EVENT SHALL T
0670: 48 45 20 41 55 54 48 4f 52 53 20 4f 52 20 44 49  HE AUTHORS OR DI
0680: 53 54 52 49 42 55 54 4f 52 53 20 42 45 20 4c 49  STRIBUTORS BE LI
0690: 41 42 4c 45 20 54 4f 20 41 4e 59 20 50 41 52 54  ABLE TO ANY PART
06a0: 59 0a 23 20 20 46 4f 52 20 44 49 52 45 43 54 2c  Y.#  FOR DIRECT,
06b0: 20 49 4e 44 49 52 45 43 54 2c 20 53 50 45 43 49   INDIRECT, SPECI
06c0: 41 4c 2c 20 49 4e 43 49 44 45 4e 54 41 4c 2c 20  AL, INCIDENTAL, 
06d0: 4f 52 20 43 4f 4e 53 45 51 55 45 4e 54 49 41 4c  OR CONSEQUENTIAL
06e0: 20 44 41 4d 41 47 45 53 0a 23 20 20 41 52 49 53   DAMAGES.#  ARIS
06f0: 49 4e 47 20 4f 55 54 20 4f 46 20 54 48 45 20 55  ING OUT OF THE U
0700: 53 45 20 4f 46 20 54 48 49 53 20 53 4f 46 54 57  SE OF THIS SOFTW
0710: 41 52 45 2c 20 49 54 53 20 44 4f 43 55 4d 45 4e  ARE, ITS DOCUMEN
0720: 54 41 54 49 4f 4e 2c 20 4f 52 20 41 4e 59 0a 23  TATION, OR ANY.#
0730: 20 20 44 45 52 49 56 41 54 49 56 45 53 20 54 48    DERIVATIVES TH
0740: 45 52 45 4f 46 2c 20 45 56 45 4e 20 49 46 20 54  EREOF, EVEN IF T
0750: 48 45 20 41 55 54 48 4f 52 53 20 48 41 56 45 20  HE AUTHORS HAVE 
0760: 42 45 45 4e 20 41 44 56 49 53 45 44 20 4f 46 20  BEEN ADVISED OF 
0770: 54 48 45 0a 23 20 20 50 4f 53 53 49 42 49 4c 49  THE.#  POSSIBILI
0780: 54 59 20 4f 46 20 53 55 43 48 20 44 41 4d 41 47  TY OF SUCH DAMAG
0790: 45 2e 0a 0a 23 20 20 54 48 45 20 41 55 54 48 4f  E...#  THE AUTHO
07a0: 52 53 20 41 4e 44 20 44 49 53 54 52 49 42 55 54  RS AND DISTRIBUT
07b0: 4f 52 53 20 53 50 45 43 49 46 49 43 41 4c 4c 59  ORS SPECIFICALLY
07c0: 20 44 49 53 43 4c 41 49 4d 20 41 4e 59 20 57 41   DISCLAIM ANY WA
07d0: 52 52 41 4e 54 49 45 53 2c 0a 23 20 20 49 4e 43  RRANTIES,.#  INC
07e0: 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f 54 20  LUDING, BUT NOT 
07f0: 4c 49 4d 49 54 45 44 20 54 4f 2c 20 54 48 45 20  LIMITED TO, THE 
0800: 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49  IMPLIED WARRANTI
0810: 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42  ES OF MERCHANTAB
0820: 49 4c 49 54 59 2c 0a 23 20 20 46 49 54 4e 45 53  ILITY,.#  FITNES
0830: 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c  S FOR A PARTICUL
0840: 41 52 20 50 55 52 50 4f 53 45 2c 20 41 4e 44 20  AR PURPOSE, AND 
0850: 4e 4f 4e 2d 49 4e 46 52 49 4e 47 45 4d 45 4e 54  NON-INFRINGEMENT
0860: 2e 20 20 54 48 49 53 20 53 4f 46 54 57 41 52 45  .  THIS SOFTWARE
0870: 0a 23 20 20 49 53 20 50 52 4f 56 49 44 45 44 20  .#  IS PROVIDED 
0880: 4f 4e 20 41 4e 20 22 41 53 20 49 53 22 20 42 41  ON AN "AS IS" BA
0890: 53 49 53 2c 20 41 4e 44 20 54 48 45 20 41 55 54  SIS, AND THE AUT
08a0: 48 4f 52 53 20 41 4e 44 20 44 49 53 54 52 49 42  HORS AND DISTRIB
08b0: 55 54 4f 52 53 20 48 41 56 45 0a 23 20 20 4e 4f  UTORS HAVE.#  NO
08c0: 20 4f 42 4c 49 47 41 54 49 4f 4e 20 54 4f 20 50   OBLIGATION TO P
08d0: 52 4f 56 49 44 45 20 4d 41 49 4e 54 45 4e 41 4e  ROVIDE MAINTENAN
08e0: 43 45 2c 20 53 55 50 50 4f 52 54 2c 20 55 50 44  CE, SUPPORT, UPD
08f0: 41 54 45 53 2c 20 45 4e 48 41 4e 43 45 4d 45 4e  ATES, ENHANCEMEN
0900: 54 53 2c 20 4f 52 0a 23 20 20 4d 4f 44 49 46 49  TS, OR.#  MODIFI
0910: 43 41 54 49 4f 4e 53 2e 0a 23 23 23 23 23 23 23  CATIONS..#######
0920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0960: 23 23 23 23 23 23 23 23 23 0a 0a 6e 61 6d 65 73  #########..names
0970: 70 61 63 65 20 65 76 61 6c 20 52 61 6d 44 65 62  pace eval RamDeb
0980: 75 67 67 65 72 20 7b 0a 0a 20 20 20 20 23 23 23  ugger {..    ###
0990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
09a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
09b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
09c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
09d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20  #############.  
09e0: 20 20 23 20 20 20 20 52 61 6d 44 65 62 75 67 67    #    RamDebugg
09f0: 65 72 20 76 65 72 73 69 6f 6e 0a 20 20 20 20 23  er version.    #
0a00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0a50: 0a 20 20 20 20 73 65 74 20 56 65 72 73 69 6f 6e  .    set Version
0a60: 20 37 2e 39 0a 0a 20 20 20 20 23 23 23 23 23 23   7.9..    ######
0a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0aa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ab0: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23  ##########.    #
0ac0: 20 20 20 20 4e 6f 6e 20 47 55 49 20 63 6f 6d 6d      Non GUI comm
0ad0: 61 6e 64 73 0a 20 20 20 20 23 23 23 23 23 23 23  ands.    #######
0ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b20: 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 6e  #########..    n
0b30: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20  amespace export 
0b40: 72 68 65 6c 70 20 72 64 65 62 75 67 20 72 6c 69  rhelp rdebug rli
0b50: 73 74 20 72 65 76 61 6c 20 72 63 6f 6e 74 20 72  st reval rcont r
0b60: 6e 65 78 74 20 72 73 74 65 70 20 72 62 72 65 61  next rstep rbrea
0b70: 6b 20 72 63 6f 6e 64 20 72 69 6e 66 6f 20 72 64  k rcond rinfo rd
0b80: 65 6c 20 5c 0a 09 72 73 74 61 63 6b 20 72 6f 75  el \..rstack rou
0b90: 74 70 75 74 20 72 74 69 6d 65 20 72 65 6e 61 62  tput rtime renab
0ba0: 6c 65 64 69 73 61 62 6c 65 0a 0a 20 20 20 20 23  ledisable..    #
0bb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0c00: 20 20 20 20 23 20 63 6f 6d 6d 75 6e 69 63 61 74      # communicat
0c10: 69 6f 6e 73 20 69 73 73 75 65 73 0a 20 20 20 20  ions issues.    
0c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0c40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0c50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0c70: 0a 0a 20 20 20 20 23 20 63 61 6e 20 62 65 3a 20  ..    # can be: 
0c80: 72 65 6d 6f 74 65 3b 20 6c 6f 63 61 6c 3b 20 6d  remote; local; m
0c90: 61 73 74 65 72 3b 20 6f 72 20 67 64 62 0a 20 20  aster; or gdb.  
0ca0: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74    variable remot
0cb0: 65 73 65 72 76 65 72 54 79 70 65 20 22 22 0a 20  eserverType "". 
0cc0: 20 20 20 23 20 77 68 65 6e 20 72 65 6d 6f 74 65     # when remote
0cd0: 73 65 72 76 65 72 54 79 70 65 20 69 73 20 6d 61  serverType is ma
0ce0: 73 74 65 72 2c 20 69 74 20 63 61 6e 20 62 65 20  ster, it can be 
0cf0: 6d 61 73 74 65 72 2c 20 22 6d 61 73 74 65 72 20  master, "master 
0d00: 70 72 6f 63 22 2c 20 6f 72 20 22 6d 61 73 74 65  proc", or "maste
0d10: 72 20 61 6c 6c 22 0a 20 20 20 20 76 61 72 69 61  r all".    varia
0d20: 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72  ble remoteserver
0d30: 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65   "".    variable
0d40: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d   remoteserverNum
0d50: 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65   "".    variable
0d60: 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72 20   debuggerserver 
0d70: 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  "".    variable 
0d80: 64 65 62 75 67 67 65 72 73 65 72 76 65 72 4e 75  debuggerserverNu
0d90: 6d 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c  m "".    variabl
0da0: 65 20 73 65 72 76 69 63 65 73 0a 20 20 20 20 76  e services.    v
0db0: 61 72 69 61 62 6c 65 20 75 73 65 63 6f 6d 6d 52  ariable usecommR
0dc0: 20 31 0a 20 20 20 20 0a 20 20 20 20 23 23 23 23   1.    .    ####
0dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e10: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20  ############.   
0e20: 20 23 20 64 65 62 75 67 67 65 72 20 73 74 61 74   # debugger stat
0e30: 65 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  e.    ##########
0e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e80: 23 23 23 23 23 23 0a 0a 20 20 20 20 76 61 72 69  ######..    vari
0e90: 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 74 61  able debuggersta
0ea0: 74 65 20 22 22 20 3b 23 20 63 61 6e 20 62 65 3a  te "" ;# can be:
0eb0: 20 22 22 20 6f 72 20 64 65 62 75 67 20 6f 72 20   "" or debug or 
0ec0: 74 69 6d 65 0a 20 20 20 20 76 61 72 69 61 62 6c  time.    variabl
0ed0: 65 20 63 75 72 72 65 6e 74 66 69 6c 65 20 22 22  e currentfile ""
0ee0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
0ef0: 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e  rrentfile_endlin
0f00: 65 20 61 75 74 6f 0a 20 20 20 20 76 61 72 69 61  e auto.    varia
0f10: 62 6c 65 20 63 75 72 72 65 6e 74 6c 69 6e 65 20  ble currentline 
0f20: 31 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  1.    variable c
0f30: 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69  urrentfileIsModi
0f40: 66 69 65 64 20 30 0a 20 20 20 20 76 61 72 69 61  fied 0.    varia
0f50: 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61  ble files.    va
0f60: 72 69 61 62 6c 65 20 66 69 6c 65 73 5f 65 6e 64  riable files_end
0f70: 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c  line.    variabl
0f80: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
0f90: 6c 65 73 50 0a 20 20 20 20 76 61 72 69 61 62 6c  lesP.    variabl
0fa0: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
0fb0: 6c 65 73 52 0a 20 20 20 20 76 61 72 69 61 62 6c  lesR.    variabl
0fc0: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
0fd0: 6c 65 73 54 69 6d 65 0a 20 20 20 20 76 61 72 69  lesTime.    vari
0fe0: 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
0ff0: 64 66 69 6c 65 73 53 65 6e 74 0a 20 20 20 20 76  dfilesSent.    v
1000: 61 72 69 61 62 6c 65 20 66 69 6c 65 73 6c 69 73  ariable fileslis
1010: 74 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c  t "".    variabl
1020: 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 22 22  e breakpoints ""
1030: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 54 69  .    variable Ti
1040: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 20 22 22  meMeasureData ""
1050: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 64  .    variable gd
1060: 62 6c 6f 67 20 22 22 0a 20 20 20 20 76 61 72 69  blog "".    vari
1070: 61 62 6c 65 20 43 68 65 63 6b 45 78 74 65 72 6e  able CheckExtern
1080: 61 6c 46 69 6c 65 4d 6f 64 69 66 69 63 61 74 69  alFileModificati
1090: 6f 6e 20 31 0a 0a 20 20 20 20 76 61 72 69 61 62  on 1..    variab
10a0: 6c 65 20 43 61 63 68 65 44 69 72 0a 20 20 20 20  le CacheDir.    
10b0: 76 61 72 69 61 62 6c 65 20 41 70 70 44 61 74 61  variable AppData
10c0: 44 69 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65  Dir.    variable
10d0: 20 69 6e 66 6f 5f 73 63 72 69 70 74 0a 0a 20 20   info_script..  
10e0: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
10f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1130: 23 23 0a 20 20 20 20 23 20 47 55 49 20 73 74 61  ##.    # GUI sta
1140: 74 65 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  te.    #########
1150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1190: 23 23 23 23 23 23 23 0a 0a 20 20 20 20 76 61 72  #######..    var
11a0: 69 61 62 6c 65 20 74 65 78 74 20 22 22 0a 20 20  iable text "".  
11b0: 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 53    variable textS
11c0: 54 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  T.    variable t
11d0: 65 78 74 4f 55 54 0a 20 20 20 20 76 61 72 69 61  extOUT.    varia
11e0: 62 6c 65 20 74 65 78 74 43 4f 4d 50 0a 20 20 20  ble textCOMP.   
11f0: 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74   variable IsInSt
1200: 6f 70 20 30 0a 20 20 20 20 76 61 72 69 61 62 6c  op 0.    variabl
1210: 65 20 54 65 78 74 4d 6f 74 69 6f 6e 41 66 74 65  e TextMotionAfte
1220: 72 49 64 20 22 22 0a 20 20 20 20 76 61 72 69 61  rId "".    varia
1230: 62 6c 65 20 61 66 74 65 72 69 64 5f 66 6f 72 6d  ble afterid_form
1240: 65 73 73 61 67 65 20 22 22 0a 20 20 20 20 76 61  essage "".    va
1250: 72 69 61 62 6c 65 20 45 78 70 72 65 73 73 69 6f  riable Expressio
1260: 6e 52 65 73 75 6c 74 20 22 22 0a 20 20 20 20 76  nResult "".    v
1270: 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 0a 20 20  ariable count.  
1280: 20 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62    variable listb
1290: 6f 78 20 22 22 0a 20 20 20 20 76 61 72 69 61 62  ox "".    variab
12a0: 6c 65 20 70 72 6f 67 72 65 73 73 76 61 72 0a 20  le progressvar. 
12b0: 20 20 20 76 61 72 69 61 62 6c 65 20 73 74 61 74     variable stat
12c0: 75 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  us.    variable 
12d0: 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20  WindowFilesList 
12e0: 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  "".    variable 
12f0: 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c  WindowFilesListL
1300: 69 6e 65 4e 75 6d 73 20 22 22 0a 20 20 20 20 76  ineNums "".    v
1310: 61 72 69 61 62 6c 65 20 6f 6c 64 50 61 73 74 65  ariable oldPaste
1320: 53 74 61 63 6b 20 22 22 0a 20 20 20 20 76 61 72  Stack "".    var
1330: 69 61 62 6c 65 20 43 75 73 74 6f 6d 46 69 6c 65  iable CustomFile
1340: 54 79 70 65 4d 65 6e 75 53 74 61 63 6b 20 22 22  TypeMenuStack ""
1350: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 6c  .    variable ol
1360: 64 47 72 61 62 0a 20 20 20 20 76 61 72 69 61 62  dGrab.    variab
1370: 6c 65 20 67 72 61 62 53 74 61 74 75 73 0a 20 20  le grabStatus.  
1380: 20 20 76 61 72 69 61 62 6c 65 20 6f 6c 64 46 6f    variable oldFo
1390: 63 75 73 0a 20 20 20 20 0a 20 20 20 20 23 23 23  cus.    .    ###
13a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20  #############.  
13f0: 20 20 23 20 48 61 6e 64 6c 65 72 73 20 74 6f 20    # Handlers to 
1400: 73 61 76 65 20 66 69 6c 65 73 2e 20 41 72 72 61  save files. Arra
1410: 79 20 77 69 74 68 20 6e 61 6d 65 73 3a 20 66 69  y with names: fi
1420: 6c 65 6e 61 6d 65 0a 20 20 20 20 23 23 23 23 23  lename.    #####
1430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1470: 23 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20  ###########..   
1480: 20 76 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61   variable FileSa
1490: 76 65 48 61 6e 64 6c 65 72 73 0a 0a 20 20 20 20  veHandlers..    
14a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f0: 0a 20 20 20 20 23 20 50 72 65 66 65 72 65 6e 63  .    # Preferenc
1500: 65 73 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  es.    #########
1510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1550: 23 23 23 23 23 23 23 0a 0a 20 20 20 20 76 61 72  #######..    var
1560: 69 61 62 6c 65 20 72 65 61 64 77 72 69 74 65 70  iable readwritep
1570: 72 65 66 73 0a 20 20 20 20 76 61 72 69 61 62 6c  refs.    variabl
1580: 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61  e options.    va
1590: 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 5f 64  riable options_d
15a0: 65 66 0a 20 20 20 20 0a 20 20 20 20 76 61 72 69  ef.    .    vari
15b0: 61 62 6c 65 20 74 6f 70 64 69 72 20 5b 66 69 6c  able topdir [fil
15c0: 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c  e normalize [fil
15d0: 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20  e dirname [info 
15e0: 73 63 72 69 70 74 5d 5d 5d 0a 20 20 20 20 69 66  script]]].    if
15f0: 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   { [info exists 
1600: 73 74 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d  starkit::topdir]
1610: 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 66 69 6c 65   } {..if { [file
1620: 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20 64 69   exists [file di
1630: 72 6e 61 6d 65 20 24 73 74 61 72 6b 69 74 3a 3a  rname $starkit::
1640: 74 6f 70 64 69 72 5d 2f 2e 2e 2f 73 68 61 72 65  topdir]/../share
1650: 2f 72 61 6d 64 65 62 75 67 67 65 72 5d 20 7d 20  /ramdebugger] } 
1660: 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20  {..    variable 
1670: 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 20  topdir_external 
1680: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20  [file normalize 
1690: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24   [file dirname $
16a0: 73 74 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d  starkit::topdir]
16b0: 2f 2e 2e 2f 73 68 61 72 65 2f 72 61 6d 64 65 62  /../share/ramdeb
16c0: 75 67 67 65 72 5d 0a 09 7d 20 65 6c 73 65 20 7b  ugger]..} else {
16d0: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  ..    variable t
16e0: 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 20 5b  opdir_external [
16f0: 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b  file normalize [
1700: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 73 74  file dirname $st
1710: 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d 5d 0a  arkit::topdir]].
1720: 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  .}.    } else {.
1730: 09 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72  .variable topdir
1740: 5f 65 78 74 65 72 6e 61 6c 20 24 74 6f 70 64 69  _external $topdi
1750: 72 0a 20 20 20 20 7d 0a 7d 0a 0a 23 23 23 23 23  r.    }.}..#####
1760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17a0: 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 20 20  ###########.#   
17b0: 49 6e 69 74 20 70 72 6f 63 0a 23 23 23 23 23 23  Init proc.######
17c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1800: 23 23 23 23 23 23 23 23 23 23 0a 0a 70 72 6f 63  ##########..proc
1810: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e   RamDebugger::In
1820: 69 74 20 7b 20 5f 72 65 61 64 77 72 69 74 65 70  it { _readwritep
1830: 72 65 66 73 20 7b 20 72 65 67 69 73 74 65 72 61  refs { registera
1840: 73 72 65 6d 6f 74 65 20 31 20 7d 20 7d 20 7b 0a  sremote 1 } } {.
1850: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62      variable deb
1860: 75 67 67 65 72 73 65 72 76 65 72 0a 20 20 20 20  uggerserver.    
1870: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65  variable debugge
1880: 72 73 65 72 76 65 72 4e 75 6d 0a 20 20 20 20 76  rserverNum.    v
1890: 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 0a 20  ariable topdir. 
18a0: 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64     variable topd
18b0: 69 72 5f 65 78 74 65 72 6e 61 6c 0a 20 20 20 20  ir_external.    
18c0: 76 61 72 69 61 62 6c 65 20 43 61 63 68 65 44 69  variable CacheDi
18d0: 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 41  r.    variable A
18e0: 70 70 44 61 74 61 44 69 72 0a 20 20 20 20 76 61  ppDataDir.    va
18f0: 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 5f 64  riable options_d
1900: 65 66 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ef.    variable 
1910: 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69  options.    vari
1920: 61 62 6c 65 20 72 65 61 64 77 72 69 74 65 70 72  able readwritepr
1930: 65 66 73 20 24 5f 72 65 61 64 77 72 69 74 65 70  efs $_readwritep
1940: 72 65 66 73 0a 20 20 20 20 76 61 72 69 61 62 6c  refs.    variabl
1950: 65 20 69 73 77 69 6e 63 65 0a 20 20 20 20 76 61  e iswince.    va
1960: 72 69 61 62 6c 65 20 69 6e 66 6f 5f 73 63 72 69  riable info_scri
1970: 70 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  pt.    variable 
1980: 75 73 65 63 6f 6d 6d 52 0a 0a 20 20 20 20 73 65  usecommR..    se
1990: 74 20 69 6e 66 6f 5f 73 63 72 69 70 74 20 5b 69  t info_script [i
19a0: 6e 66 6f 20 73 63 72 69 70 74 5d 0a 20 20 20 20  nfo script].    
19b0: 0a 20 20 20 20 69 66 20 7b 20 21 5b 66 69 6c 65  .    if { ![file
19c0: 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69   isdirectory [fi
19d0: 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 5f  le join $topdir_
19e0: 65 78 74 65 72 6e 61 6c 20 61 64 64 6f 6e 73 5d  external addons]
19f0: 5d 20 7d 20 7b 0a 09 73 65 74 20 74 65 78 74 20  ] } {..set text 
1a00: 5b 5f 20 22 45 72 72 6f 72 3a 20 62 61 64 20 69  [_ "Error: bad i
1a10: 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 20 44 69 72  nstallation. Dir
1a20: 65 63 74 6f 72 79 20 27 61 64 64 6f 6e 73 27 20  ectory 'addons' 
1a30: 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 66 6f 75  could not be fou
1a40: 6e 64 20 69 6e 20 27 25 73 27 22 20 24 74 6f 70  nd in '%s'" $top
1a50: 64 69 72 5f 65 78 74 65 72 6e 61 6c 5d 0a 09 70  dir_external]..p
1a60: 75 74 73 20 24 74 65 78 74 0a 09 63 61 74 63 68  uts $text..catch
1a70: 20 7b 20 74 6b 5f 6d 65 73 73 61 67 65 42 6f 78   { tk_messageBox
1a80: 20 2d 6d 65 73 73 61 67 65 20 24 74 65 78 74 20   -message $text 
1a90: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20  }.    }..    if 
1aa0: 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73  { [info commands
1ab0: 20 77 69 6e 66 6f 5d 20 6e 65 20 22 22 20 26 26   winfo] ne "" &&
1ac0: 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69   [winfo screenwi
1ad0: 64 74 68 20 2e 5d 20 3c 20 33 35 30 20 7d 20 7b  dth .] < 350 } {
1ae0: 0a 09 73 65 74 20 69 73 77 69 6e 63 65 20 31 0a  ..set iswince 1.
1af0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74      } else { set
1b00: 20 69 73 77 69 6e 63 65 20 30 20 7d 0a 20 20 20   iswince 0 }.   
1b10: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 61  .    lappend ::a
1b20: 75 74 6f 5f 70 61 74 68 20 5b 66 69 6c 65 20 64  uto_path [file d
1b30: 69 72 6e 61 6d 65 20 24 74 6f 70 64 69 72 5d 0a  irname $topdir].
1b40: 20 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 61 75      lappend ::au
1b50: 74 6f 5f 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f  to_path [file jo
1b60: 69 6e 20 24 74 6f 70 64 69 72 20 73 63 72 69 70  in $topdir scrip
1b70: 74 73 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  ts].    lappend 
1b80: 3a 3a 61 75 74 6f 5f 70 61 74 68 20 5b 66 69 6c  ::auto_path [fil
1b90: 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 5f 65  e join $topdir_e
1ba0: 78 74 65 72 6e 61 6c 20 61 64 64 6f 6e 73 5d 0a  xternal addons].
1bb0: 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e  .    if { $iswin
1bc0: 63 65 20 7d 20 7b 0a 09 73 65 74 20 41 70 70 44  ce } {..set AppD
1bd0: 61 74 61 44 69 72 20 24 74 6f 70 64 69 72 5f 65  ataDir $topdir_e
1be0: 78 74 65 72 6e 61 6c 0a 20 20 20 20 7d 20 65 6c  xternal.    } el
1bf0: 73 65 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c  seif { $::tcl_pl
1c00: 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29  atform(platform)
1c10: 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 7d 20   eq "windows" } 
1c20: 7b 0a 09 73 65 74 20 75 73 65 63 6f 6d 6d 52 20  {..set usecommR 
1c30: 31 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78  1..if { [info ex
1c40: 69 73 74 73 20 3a 3a 65 6e 76 28 41 50 50 44 41  ists ::env(APPDA
1c50: 54 41 29 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65  TA)] } {..    se
1c60: 74 20 41 70 70 44 61 74 61 44 69 72 20 5b 66 69  t AppDataDir [fi
1c70: 6c 65 20 6a 6f 69 6e 20 24 3a 3a 65 6e 76 28 41  le join $::env(A
1c80: 50 50 44 41 54 41 29 20 52 61 6d 44 65 62 75 67  PPDATA) RamDebug
1c90: 67 65 72 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09  ger]..} else {..
1ca0: 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75      package requ
1cb0: 69 72 65 20 72 65 67 69 73 74 72 79 0a 09 20 20  ire registry..  
1cc0: 20 20 73 65 74 20 6b 65 79 20 7b 48 4b 45 59 5f    set key {HKEY_
1cd0: 43 55 52 52 45 4e 54 5f 55 53 45 52 5c 53 6f 66  CURRENT_USER\Sof
1ce0: 74 77 61 72 65 5c 4d 69 63 72 6f 73 6f 66 74 5c  tware\Microsoft\
1cf0: 57 69 6e 64 6f 77 73 5c 43 75 72 72 65 6e 74 56  Windows\CurrentV
1d00: 65 72 73 69 6f 6e 7d 0a 09 20 20 20 20 61 70 70  ersion}..    app
1d10: 65 6e 64 20 6b 65 79 20 7b 5c 45 78 70 6c 6f 72  end key {\Explor
1d20: 65 72 5c 53 68 65 6c 6c 20 46 6f 6c 64 65 72 73  er\Shell Folders
1d30: 7d 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b  }..    set err [
1d40: 63 61 74 63 68 20 7b 20 72 65 67 69 73 74 72 79  catch { registry
1d50: 20 67 65 74 20 24 6b 65 79 20 41 70 70 44 61 74   get $key AppDat
1d60: 61 20 7d 20 41 70 70 44 61 74 61 5d 0a 09 20 20  a } AppData]..  
1d70: 20 20 69 66 20 7b 20 21 24 65 72 72 20 7d 20 7b    if { !$err } {
1d80: 0a 09 09 73 65 74 20 41 70 70 44 61 74 61 44 69  ...set AppDataDi
1d90: 72 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 72 65  r [file join [re
1da0: 67 69 73 74 72 79 20 67 65 74 20 24 6b 65 79 20  gistry get $key 
1db0: 41 70 70 44 61 74 61 5d 20 52 61 6d 44 65 62 75  AppData] RamDebu
1dc0: 67 67 65 72 5d 0a 09 20 20 20 20 7d 20 65 6c 73  gger]..    } els
1dd0: 65 20 7b 0a 09 09 73 65 74 20 41 70 70 44 61 74  e {...set AppDat
1de0: 61 44 69 72 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  aDir [file join 
1df0: 24 3a 3a 65 6e 76 28 48 4f 4d 45 29 20 2e 52 61  $::env(HOME) .Ra
1e00: 6d 44 65 62 75 67 67 65 72 5d 0a 09 20 20 20 20  mDebugger]..    
1e10: 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20  }..}.    } else 
1e20: 7b 0a 09 73 65 74 20 41 70 70 44 61 74 61 44 69  {..set AppDataDi
1e30: 72 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a  r [file join $::
1e40: 65 6e 76 28 48 4f 4d 45 29 20 2e 52 61 6d 44 65  env(HOME) .RamDe
1e50: 62 75 67 67 65 72 5d 0a 20 20 20 20 7d 0a 20 20  bugger].    }.  
1e60: 20 20 73 65 74 20 65 78 65 20 5b 66 69 6c 65 20    set exe [file 
1e70: 6a 6f 69 6e 20 24 41 70 70 44 61 74 61 44 69 72  join $AppDataDir
1e80: 20 65 78 65 5d 0a 20 20 20 20 69 66 20 7b 20 21   exe].    if { !
1e90: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 65 78  [file exists $ex
1ea0: 65 5d 20 7d 20 7b 0a 09 66 69 6c 65 20 6d 6b 64  e] } {..file mkd
1eb0: 69 72 20 24 65 78 65 0a 20 20 20 20 7d 0a 20 20  ir $exe.    }.  
1ec0: 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c    if { $::tcl_pl
1ed0: 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29  atform(platform)
1ee0: 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 26 26   eq "windows" &&
1ef0: 20 21 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09   !$iswince } {..
1f00: 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
1f10: 74 73 20 3a 3a 65 6e 76 28 50 41 54 48 29 5d 20  ts ::env(PATH)] 
1f20: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 73  } {..    set lis
1f30: 74 20 22 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09  t ""..} else {..
1f40: 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 73 70      set list [sp
1f50: 6c 69 74 20 24 3a 3a 65 6e 76 28 50 41 54 48 29  lit $::env(PATH)
1f60: 20 5c 3b 5d 0a 09 7d 0a 09 73 65 74 20 73 68 6f   \;]..}..set sho
1f70: 72 74 6e 61 6d 65 20 5b 66 69 6c 65 20 6e 61 74  rtname [file nat
1f80: 69 76 65 20 5b 66 69 6c 65 20 61 74 74 72 69 62  ive [file attrib
1f90: 75 74 65 73 20 24 65 78 65 20 2d 73 68 6f 72 74  utes $exe -short
1fa0: 6e 61 6d 65 5d 5d 0a 09 69 66 20 7b 20 5b 73 65  name]]..if { [se
1fb0: 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
1fc0: 2d 65 78 61 63 74 20 24 6c 69 73 74 20 24 73 68  -exact $list $sh
1fd0: 6f 72 74 6e 61 6d 65 5d 5d 20 21 3d 20 30 20 7d  ortname]] != 0 }
1fe0: 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70   {..    if { $ip
1ff0: 6f 73 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 73  os != -1 } {...s
2000: 65 74 20 6c 69 73 74 20 5b 6c 72 65 70 6c 61 63  et list [lreplac
2010: 65 20 24 6c 69 73 74 20 24 69 70 6f 73 20 24 69  e $list $ipos $i
2020: 70 6f 73 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20  pos]..    }..   
2030: 20 73 65 74 20 6c 69 73 74 20 5b 6c 69 6e 73 65   set list [linse
2040: 72 74 20 24 6c 69 73 74 20 30 20 24 73 68 6f 72  rt $list 0 $shor
2050: 74 6e 61 6d 65 5d 0a 09 20 20 20 20 73 65 74 20  tname]..    set 
2060: 3a 3a 65 6e 76 28 50 41 54 48 29 20 5b 6a 6f 69  ::env(PATH) [joi
2070: 6e 20 24 6c 69 73 74 20 5c 3b 5d 0a 09 20 20 20  n $list \;]..   
2080: 20 23 20 74 68 69 73 20 69 73 20 61 20 76 61 72   # this is a var
2090: 69 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 54  iable from the T
20a0: 43 4c 20 6c 69 62 72 61 72 79 0a 09 20 20 20 20  CL library..    
20b0: 61 72 72 61 79 20 75 6e 73 65 74 20 3a 3a 61 75  array unset ::au
20c0: 74 6f 5f 65 78 65 63 73 0a 09 7d 0a 20 20 20 20  to_execs..}.    
20d0: 7d 20 65 6c 73 65 69 66 20 7b 20 24 3a 3a 74 63  } elseif { $::tc
20e0: 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 29 20 65  l_platform(os) e
20f0: 71 20 22 44 61 72 77 69 6e 22 20 7d 20 7b 0a 09  q "Darwin" } {..
2100: 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
2110: 74 73 20 3a 3a 65 6e 76 28 50 41 54 48 29 5d 20  ts ::env(PATH)] 
2120: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 73  } {..    set lis
2130: 74 20 22 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09  t ""..} else {..
2140: 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 73 70      set list [sp
2150: 6c 69 74 20 24 3a 3a 65 6e 76 28 50 41 54 48 29  lit $::env(PATH)
2160: 20 22 3a 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b   ":"]..}..if { [
2170: 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63  set ipos [lsearc
2180: 68 20 2d 65 78 61 63 74 20 24 6c 69 73 74 20 24  h -exact $list $
2190: 65 78 65 5d 5d 20 21 3d 20 30 20 7d 20 7b 0a 09  exe]] != 0 } {..
21a0: 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21      if { $ipos !
21b0: 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 6c  = -1 } {...set l
21c0: 69 73 74 20 5b 6c 72 65 70 6c 61 63 65 20 24 6c  ist [lreplace $l
21d0: 69 73 74 20 24 69 70 6f 73 20 24 69 70 6f 73 5d  ist $ipos $ipos]
21e0: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74  ..    }..    set
21f0: 20 6c 69 73 74 20 5b 6c 69 6e 73 65 72 74 20 24   list [linsert $
2200: 6c 69 73 74 20 30 20 24 65 78 65 5d 0a 09 20 20  list 0 $exe]..  
2210: 20 20 73 65 74 20 3a 3a 65 6e 76 28 50 41 54 48    set ::env(PATH
2220: 29 20 5b 6a 6f 69 6e 20 24 6c 69 73 74 20 22 3a  ) [join $list ":
2230: 22 5d 0a 09 20 20 20 20 23 20 74 68 69 73 20 69  "]..    # this i
2240: 73 20 61 20 76 61 72 69 61 62 6c 65 20 66 72 6f  s a variable fro
2250: 6d 20 74 68 65 20 54 43 4c 20 6c 69 62 72 61 72  m the TCL librar
2260: 79 0a 09 20 20 20 20 61 72 72 61 79 20 75 6e 73  y..    array uns
2270: 65 74 20 3a 3a 61 75 74 6f 5f 65 78 65 63 73 0a  et ::auto_execs.
2280: 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  .}.    }.    if 
2290: 7b 20 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 63  { [auto_execok c
22a0: 76 73 5d 20 65 71 20 22 22 20 7c 7c 20 5b 61 75  vs] eq "" || [au
22b0: 74 6f 5f 65 78 65 63 6f 6b 20 64 69 66 66 5d 20  to_execok diff] 
22c0: 65 71 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20  eq "" } {..if { 
22d0: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
22e0: 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69  platform) eq "wi
22f0: 6e 64 6f 77 73 22 20 26 26 20 21 24 69 73 77 69  ndows" && !$iswi
2300: 6e 63 65 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  nce } {..    set
2310: 20 65 78 65 4c 69 73 74 20 5b 6c 69 73 74 20 63   exeList [list c
2320: 61 74 2e 65 78 65 20 63 76 73 2e 65 78 65 20 64  at.exe cvs.exe d
2330: 69 66 66 2e 65 78 65 20 67 72 65 70 2e 65 78 65  iff.exe grep.exe
2340: 20 6b 69 6c 6c 2e 65 78 65 20 74 6c 69 73 74 2e   kill.exe tlist.
2350: 65 78 65 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b  exe]..} elseif {
2360: 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d   $::tcl_platform
2370: 28 6f 73 29 20 65 71 20 22 44 61 72 77 69 6e 22  (os) eq "Darwin"
2380: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 78   } {..    set ex
2390: 65 4c 69 73 74 20 5b 6c 69 73 74 20 63 76 73 5d  eList [list cvs]
23a0: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
23b0: 73 65 74 20 65 78 65 4c 69 73 74 20 22 22 0a 09  set exeList ""..
23c0: 7d 0a 09 69 66 20 7b 20 21 5b 66 69 6c 65 20 65  }..if { ![file e
23d0: 78 69 73 74 73 20 24 65 78 65 5d 20 26 26 20 24  xists $exe] && $
23e0: 65 78 65 4c 69 73 74 20 6e 65 20 22 22 20 7d 20  exeList ne "" } 
23f0: 7b 0a 09 20 20 20 20 66 69 6c 65 20 6d 6b 64 69  {..    file mkdi
2400: 72 20 24 65 78 65 0a 09 7d 0a 09 66 6f 72 65 61  r $exe..}..forea
2410: 63 68 20 69 20 24 65 78 65 4c 69 73 74 20 7b 0a  ch i $exeList {.
2420: 09 20 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20  .    if { [file 
2430: 65 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69  exists [file joi
2440: 6e 20 24 74 6f 70 64 69 72 20 61 64 64 6f 6e 73  n $topdir addons
2450: 20 65 78 65 20 24 69 5d 5d 20 7d 20 7b 0a 09 09   exe $i]] } {...
2460: 66 69 6c 65 20 63 6f 70 79 20 2d 66 6f 72 63 65  file copy -force
2470: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70   [file join $top
2480: 64 69 72 20 61 64 64 6f 6e 73 20 65 78 65 20 24  dir addons exe $
2490: 69 5d 20 24 65 78 65 0a 09 20 20 20 20 7d 0a 09  i] $exe..    }..
24a0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
24b0: 64 69 72 73 20 22 22 0a 20 20 20 20 6c 61 70 70  dirs "".    lapp
24c0: 65 6e 64 20 64 69 72 73 20 5b 66 69 6c 65 20 6a  end dirs [file j
24d0: 6f 69 6e 20 24 41 70 70 44 61 74 61 44 69 72 20  oin $AppDataDir 
24e0: 63 61 63 68 65 5d 0a 20 20 20 20 6c 61 70 70 65  cache].    lappe
24f0: 6e 64 20 64 69 72 73 20 5b 66 69 6c 65 20 6a 6f  nd dirs [file jo
2500: 69 6e 20 24 74 6f 70 64 69 72 5f 65 78 74 65 72  in $topdir_exter
2510: 6e 61 6c 20 63 61 63 68 65 5d 0a 0a 20 20 20 20  nal cache]..    
2520: 66 6f 72 65 61 63 68 20 69 20 24 64 69 72 73 20  foreach i $dirs 
2530: 7b 0a 09 63 61 74 63 68 20 7b 20 66 69 6c 65 20  {..catch { file 
2540: 6d 6b 64 69 72 20 24 69 20 7d 0a 09 69 66 20 7b  mkdir $i }..if {
2550: 20 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f   [file isdirecto
2560: 72 79 20 24 69 5d 20 7d 20 7b 0a 09 20 20 20 20  ry $i] } {..    
2570: 73 65 74 20 43 61 63 68 65 44 69 72 20 24 69 0a  set CacheDir $i.
2580: 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 20 20  .    break..}.  
2590: 20 20 7d 0a 0a 20 20 20 20 23 23 23 23 23 23 23    }..    #######
25a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
25b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
25c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
25d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
25e0: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 20  #########.    # 
25f0: 53 65 74 74 69 6e 67 20 70 72 65 66 65 72 65 6e  Setting preferen
2600: 63 65 73 0a 20 20 20 20 23 23 23 23 23 23 23 23  ces.    ########
2610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2650: 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 73 65  ########..    se
2660: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 69 6e  t options_def(in
2670: 64 65 6e 74 73 69 7a 65 54 43 4c 29 20 34 0a 20  dentsizeTCL) 4. 
2680: 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64     set options_d
2690: 65 66 28 69 6e 64 65 6e 74 73 69 7a 65 43 2b 2b  ef(indentsizeC++
26a0: 29 20 32 0a 20 20 20 20 73 65 74 20 6f 70 74 69  ) 2.    set opti
26b0: 6f 6e 73 5f 64 65 66 28 43 6f 6e 66 69 72 6d 53  ons_def(ConfirmS
26c0: 74 61 72 74 44 65 62 75 67 67 69 6e 67 29 20 31  tartDebugging) 1
26d0: 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73  .    set options
26e0: 5f 64 65 66 28 69 6e 73 74 72 75 6d 65 6e 74 5f  _def(instrument_
26f0: 73 6f 75 72 63 65 29 20 61 75 74 6f 0a 20 20 20  source) auto.   
2700: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66   set options_def
2710: 28 69 6e 73 74 72 75 6d 65 6e 74 5f 70 72 6f 63  (instrument_proc
2720: 5f 6c 61 73 74 5f 6c 69 6e 65 29 20 30 0a 20 20  _last_line) 0.  
2730: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65    set options_de
2740: 66 28 43 6f 6e 66 69 72 6d 4d 6f 64 69 66 79 56  f(ConfirmModifyV
2750: 61 72 69 61 62 6c 65 29 20 31 0a 20 20 20 20 73  ariable) 1.    s
2760: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 6f  et options_def(o
2770: 70 65 6e 66 69 6c 65 5f 62 72 6f 77 73 65 72 29  penfile_browser)
2780: 20 31 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f   1.    set optio
2790: 6e 73 5f 64 65 66 28 4c 6f 63 61 6c 44 65 62 75  ns_def(LocalDebu
27a0: 67 67 69 6e 67 54 79 70 65 29 20 74 6b 0a 20 20  ggingType) tk.  
27b0: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65    set options_de
27c0: 66 28 65 78 65 63 75 74 61 62 6c 65 5f 64 69 72  f(executable_dir
27d0: 73 29 20 22 22 0a 20 20 20 20 73 65 74 20 6f 70  s) "".    set op
27e0: 74 69 6f 6e 73 5f 64 65 66 28 64 65 62 75 67 72  tions_def(debugr
27f0: 65 6c 65 61 73 65 29 20 64 65 62 75 67 0a 20 20  elease) debug.  
2800: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65    set options_de
2810: 66 28 56 69 65 77 4c 6f 63 61 6c 56 61 72 69 61  f(ViewLocalVaria
2820: 62 6c 65 73 29 20 31 0a 20 20 20 20 73 65 74 20  bles) 1.    set 
2830: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 73 61 76 65  options_def(save
2840: 64 5f 70 6f 73 69 74 69 6f 6e 73 5f 73 74 61 63  d_positions_stac
2850: 6b 29 20 22 22 0a 20 20 20 20 73 65 74 20 6f 70  k) "".    set op
2860: 74 69 6f 6e 73 5f 64 65 66 28 73 68 6f 77 73 74  tions_def(showst
2870: 61 74 75 73 62 61 72 29 20 31 0a 20 20 20 20 73  atusbar) 1.    s
2880: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 73  et options_def(s
2890: 68 6f 77 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61  howbuttonstoolba
28a0: 72 29 20 31 0a 20 20 20 20 73 65 74 20 6f 70 74  r) 1.    set opt
28b0: 69 6f 6e 73 5f 64 65 66 28 43 6f 6d 70 69 6c 65  ions_def(Compile
28c0: 46 61 73 74 49 6e 73 74 72 75 6d 65 6e 74 65 72  FastInstrumenter
28d0: 29 20 2d 31 0a 20 20 20 20 73 65 74 20 6f 70 74  ) -1.    set opt
28e0: 69 6f 6e 73 5f 64 65 66 28 73 70 61 63 65 73 5f  ions_def(spaces_
28f0: 74 6f 5f 74 61 62 73 29 20 31 0a 0a 20 20 20 20  to_tabs) 1..    
2900: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28  set options_def(
2910: 63 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f 75 6e  colors,foregroun
2920: 64 29 20 62 6c 61 63 6b 0a 20 20 20 20 73 65 74  d) black.    set
2930: 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f 6c   options_def(col
2940: 6f 72 73 2c 62 61 63 6b 67 72 6f 75 6e 64 29 20  ors,background) 
2950: 77 68 69 74 65 0a 20 20 20 20 73 65 74 20 6f 70  white.    set op
2960: 74 69 6f 6e 73 5f 64 65 66 28 63 6f 6c 6f 72 73  tions_def(colors
2970: 2c 63 6f 6d 6d 61 6e 64 73 29 20 6d 61 67 65 6e  ,commands) magen
2980: 74 61 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f  ta.    set optio
2990: 6e 73 5f 64 65 66 28 63 6f 6c 6f 72 73 2c 64 65  ns_def(colors,de
29a0: 66 69 6e 65 73 29 20 6d 61 67 65 6e 74 61 32 0a  fines) magenta2.
29b0: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f      set options_
29c0: 64 65 66 28 63 6f 6c 6f 72 73 2c 70 72 6f 63 6e  def(colors,procn
29d0: 61 6d 65 73 29 20 62 6c 75 65 0a 20 20 20 20 73  ames) blue.    s
29e0: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63  et options_def(c
29f0: 6f 6c 6f 72 73 2c 71 75 6f 74 65 73 74 72 69 6e  olors,quotestrin
2a00: 67 73 29 20 67 72 65 79 34 30 0a 20 20 20 20 73  gs) grey40.    s
2a10: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63  et options_def(c
2a20: 6f 6c 6f 72 73 2c 73 65 74 29 20 67 72 65 65 6e  olors,set) green
2a30: 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73  .    set options
2a40: 5f 64 65 66 28 63 6f 6c 6f 72 73 2c 63 6f 6d 6d  _def(colors,comm
2a50: 65 6e 74 73 29 20 72 65 64 0a 20 20 20 20 73 65  ents) red.    se
2a60: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f  t options_def(co
2a70: 6c 6f 72 73 2c 76 61 72 6e 61 6d 65 73 29 20 5c  lors,varnames) \
2a80: 23 62 38 38 36 30 62 0a 0a 20 20 20 20 73 65 74  #b8860b..    set
2a90: 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 6c 69 73   options_def(lis
2aa0: 74 66 69 6c 65 73 70 61 6e 65 29 20 30 0a 20 20  tfilespane) 0.  
2ab0: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65    set options_de
2ac0: 66 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 70  f(viewvariablesp
2ad0: 61 6e 65 29 20 30 0a 20 20 20 20 73 65 74 20 6f  ane) 0.    set o
2ae0: 70 74 69 6f 6e 73 5f 64 65 66 28 61 75 74 6f 5f  ptions_def(auto_
2af0: 72 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 61 63  raise_stack_trac
2b00: 65 29 20 31 0a 20 20 20 20 0a 20 20 20 20 73 65  e) 1.    .    se
2b10: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 66 69  t options_def(fi
2b20: 6c 65 74 79 70 65 29 20 61 75 74 6f 0a 20 20 20  letype) auto.   
2b30: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66   set options_def
2b40: 28 66 69 6c 65 74 79 70 65 5f 6f 6e 6c 79 5f 74  (filetype_only_t
2b50: 68 69 73 5f 66 69 6c 65 29 20 31 0a 20 20 20 20  his_file) 1.    
2b60: 0a 20 20 20 20 73 77 69 74 63 68 20 24 3a 3a 74  .    switch $::t
2b70: 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
2b80: 66 6f 72 6d 29 20 7b 0a 09 77 69 6e 64 6f 77 73  form) {..windows
2b90: 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 69 73   {..    if { $is
2ba0: 77 69 6e 63 65 20 7d 20 7b 0a 09 09 23 20 57 69  wince } {...# Wi
2bb0: 6e 63 65 0a 09 09 73 65 74 20 6f 70 74 69 6f 6e  nce...set option
2bc0: 73 5f 64 65 66 28 4e 6f 72 6d 61 6c 46 6f 6e 74  s_def(NormalFont
2bd0: 29 20 7b 20 2d 66 61 6d 69 6c 79 20 22 54 61 68  ) { -family "Tah
2be0: 6f 6d 61 22 20 2d 73 69 7a 65 20 37 20 2d 77 65  oma" -size 7 -we
2bf0: 69 67 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 09  ight normal \...
2c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c20: 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 2d    -slant roman -
2c30: 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 65  underline 0 -ove
2c40: 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 09 73 65  rstrike 0 }...se
2c50: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 46 69  t options_def(Fi
2c60: 78 65 64 46 6f 6e 74 29 20 20 7b 20 2d 66 61 6d  xedFont)  { -fam
2c70: 69 6c 79 20 22 43 6f 75 72 69 65 72 22 20 2d 73  ily "Courier" -s
2c80: 69 7a 65 20 37 20 2d 77 65 69 67 68 74 20 6e 6f  ize 7 -weight no
2c90: 72 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 20  rmal \...       
2ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb0: 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c 61 6e             -slan
2cc0: 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 6c 69  t roman -underli
2cd0: 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 6b 65  ne 0 -overstrike
2ce0: 20 30 20 7d 0a 09 09 73 65 74 20 6f 70 74 69 6f   0 }...set optio
2cf0: 6e 73 5f 64 65 66 28 48 65 6c 70 46 6f 6e 74 29  ns_def(HelpFont)
2d00: 20 20 7b 20 2d 66 61 6d 69 6c 79 20 22 48 65 6c    { -family "Hel
2d10: 76 65 74 69 63 61 22 20 2d 73 69 7a 65 20 37 20  vetica" -size 7 
2d20: 2d 77 65 69 67 68 74 20 6e 6f 72 6d 61 6c 20 5c  -weight normal \
2d30: 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d50: 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e      -slant roman
2d60: 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f   -underline 0 -o
2d70: 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 09  verstrike 0 }...
2d80: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28  set options_def(
2d90: 73 68 6f 77 73 74 61 74 75 73 62 61 72 29 20 30  showstatusbar) 0
2da0: 0a 09 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64  ...set options_d
2db0: 65 66 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f  ef(ViewOnlyTextO
2dc0: 72 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a 09  rAll) OnlyText..
2dd0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73      } else {...s
2de0: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 4e  et options_def(N
2df0: 6f 72 6d 61 6c 46 6f 6e 74 29 20 7b 20 2d 66 61  ormalFont) { -fa
2e00: 6d 69 6c 79 20 22 4d 53 20 53 61 6e 73 20 53 65  mily "MS Sans Se
2e10: 72 69 66 22 20 2d 73 69 7a 65 20 38 20 2d 77 65  rif" -size 8 -we
2e20: 69 67 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 09  ight normal \...
2e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e50: 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 2d    -slant roman -
2e60: 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 65  underline 0 -ove
2e70: 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 09 73 65  rstrike 0 }...se
2e80: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 46 69  t options_def(Fi
2e90: 78 65 64 46 6f 6e 74 29 20 20 7b 20 2d 66 61 6d  xedFont)  { -fam
2ea0: 69 6c 79 20 22 43 6f 75 72 69 65 72 22 20 2d 73  ily "Courier" -s
2eb0: 69 7a 65 20 38 20 2d 77 65 69 67 68 74 20 6e 6f  ize 8 -weight no
2ec0: 72 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 20  rmal \...       
2ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee0: 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c 61 6e             -slan
2ef0: 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 6c 69  t roman -underli
2f00: 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 6b 65  ne 0 -overstrike
2f10: 20 30 20 7d 0a 09 09 73 65 74 20 6f 70 74 69 6f   0 }...set optio
2f20: 6e 73 5f 64 65 66 28 48 65 6c 70 46 6f 6e 74 29  ns_def(HelpFont)
2f30: 20 20 7b 20 2d 66 61 6d 69 6c 79 20 22 48 65 6c    { -family "Hel
2f40: 76 65 74 69 63 61 22 20 2d 73 69 7a 65 20 31 31  vetica" -size 11
2f50: 20 2d 77 65 69 67 68 74 20 6e 6f 72 6d 61 6c 20   -weight normal 
2f60: 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f80: 20 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61       -slant roma
2f90: 6e 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d  n -underline 0 -
2fa0: 6f 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09  overstrike 0 }..
2fb0: 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66  .set options_def
2fc0: 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41  (ViewOnlyTextOrA
2fd0: 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a 09 20 20  ll) OnlyText..  
2fe0: 20 20 7d 0a 09 7d 0a 09 64 65 66 61 75 6c 74 20    }..}..default 
2ff0: 7b 0a 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f  {..    set optio
3000: 6e 73 5f 64 65 66 28 4e 6f 72 6d 61 6c 46 6f 6e  ns_def(NormalFon
3010: 74 29 20 7b 20 2d 66 61 6d 69 6c 79 20 22 46 72  t) { -family "Fr
3020: 65 65 53 61 6e 73 22 20 2d 73 69 7a 65 20 31 30  eeSans" -size 10
3030: 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20   \...           
3040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3050: 20 20 20 2d 77 65 69 67 68 74 20 6e 6f 72 6d 61     -weight norma
3060: 6c 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 2d  l -slant roman -
3070: 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 65  underline 0 -ove
3080: 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 20 20 20  rstrike 0 }..   
3090: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66   set options_def
30a0: 28 46 69 78 65 64 46 6f 6e 74 29 20 20 7b 20 2d  (FixedFont)  { -
30b0: 66 61 6d 69 6c 79 20 22 46 72 65 65 53 61 6e 73  family "FreeSans
30c0: 22 20 2d 73 69 7a 65 20 31 30 20 2d 77 65 69 67  " -size 10 -weig
30d0: 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 09 20 20  ht normal \...  
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c 61              -sla
3100: 6e 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 6c  nt roman -underl
3110: 69 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 6b  ine 0 -overstrik
3120: 65 20 30 20 7d 0a 09 20 20 20 20 73 65 74 20 6f  e 0 }..    set o
3130: 70 74 69 6f 6e 73 5f 64 65 66 28 48 65 6c 70 46  ptions_def(HelpF
3140: 6f 6e 74 29 20 20 7b 20 2d 66 61 6d 69 6c 79 20  ont)  { -family 
3150: 22 48 65 6c 76 65 74 69 63 61 22 20 2d 73 69 7a  "Helvetica" -siz
3160: 65 20 31 32 20 2d 77 65 69 67 68 74 20 6e 6f 72  e 12 -weight nor
3170: 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 20 20  mal \...        
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3190: 20 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61       -slant roma
31a0: 6e 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d  n -underline 0 -
31b0: 6f 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09  overstrike 0 }..
31c0: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f      set options_
31d0: 64 65 66 28 56 69 65 77 4f 6e 6c 79 54 65 78 74  def(ViewOnlyText
31e0: 4f 72 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a  OrAll) OnlyText.
31f0: 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65  .}.    }..    se
3200: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 65 78  t options_def(ex
3210: 74 65 6e 73 69 6f 6e 73 2c 54 43 4c 29 20 22 2e  tensions,TCL) ".
3220: 74 63 6c 20 2a 22 0a 20 20 20 20 73 65 74 20 6f  tcl *".    set o
3230: 70 74 69 6f 6e 73 5f 64 65 66 28 65 78 74 65 6e  ptions_def(exten
3240: 73 69 6f 6e 73 2c 43 2f 43 2b 2b 29 20 22 2e 63  sions,C/C++) ".c
3250: 20 2e 63 70 70 20 2e 63 63 20 2e 68 22 0a 20 20   .cpp .cc .h".  
3260: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65    set options_de
3270: 66 28 65 78 74 65 6e 73 69 6f 6e 73 2c 58 4d 4c  f(extensions,XML
3280: 29 20 22 2e 78 6d 6c 20 2e 73 70 64 20 2e 78 73  ) ".xml .spd .xs
3290: 6c 20 2e 78 73 6c 74 20 2e 73 76 67 20 28 78 6d  l .xslt .svg (xm
32a0: 6c 29 2a 22 0a 20 20 20 20 73 65 74 20 22 6f 70  l)*".    set "op
32b0: 74 69 6f 6e 73 5f 64 65 66 28 65 78 74 65 6e 73  tions_def(extens
32c0: 69 6f 6e 73 2c 47 69 44 20 42 41 53 20 66 69 6c  ions,GiD BAS fil
32d0: 65 29 22 20 2e 62 61 73 0a 20 20 20 20 73 65 74  e)" .bas.    set
32e0: 20 22 6f 70 74 69 6f 6e 73 5f 64 65 66 28 65 78   "options_def(ex
32f0: 74 65 6e 73 69 6f 6e 73 2c 47 69 44 20 64 61 74  tensions,GiD dat
3300: 61 20 66 69 6c 65 73 29 22 20 22 2e 70 72 62 20  a files)" ".prb 
3310: 2e 6d 61 74 20 2e 63 6e 64 22 0a 20 20 20 20 73  .mat .cnd".    s
3320: 65 74 20 22 6f 70 74 69 6f 6e 73 5f 64 65 66 28  et "options_def(
3330: 65 78 74 65 6e 73 69 6f 6e 73 2c 4d 61 6b 65 66  extensions,Makef
3340: 69 6c 65 29 22 20 22 4d 61 6b 65 66 69 6c 65 22  ile)" "Makefile"
3350: 0a 0a 20 20 20 20 23 20 74 68 69 73 20 76 61 72  ..    # this var
3360: 69 61 62 6c 65 20 69 73 20 6f 6e 6c 79 20 75 73  iable is only us
3370: 65 64 20 6f 6e 20 77 69 6e 64 6f 77 73 2e 20 49  ed on windows. I
3380: 74 20 63 61 6e 20 62 65 3a 0a 20 20 20 20 23 20  t can be:.    # 
3390: 30 3a 20 4f 6e 6c 79 20 63 68 65 63 6b 20 72 65  0: Only check re
33a0: 6d 6f 74 65 20 70 72 6f 67 72 61 6d 73 20 6f 6e  mote programs on
33b0: 20 64 65 6d 61 6e 64 20 28 75 73 65 66 75 6c 20   demand (useful 
33c0: 69 66 20 6e 6f 74 20 6d 61 6b 69 6e 67 20 72 65  if not making re
33d0: 6d 6f 74 65 20 64 65 62 75 67 67 69 6e 67 2c 20  mote debugging, 
33e0: 74 68 65 0a 20 20 20 20 23 20 20 20 20 73 74 61  the.    #    sta
33f0: 72 74 20 75 70 20 69 73 20 66 61 73 74 65 72 29  rt up is faster)
3400: 0a 20 20 20 20 23 20 31 3a 20 52 65 67 69 73 74  .    # 1: Regist
3410: 65 72 20 61 73 20 72 65 6d 6f 74 65 20 61 6e 64  er as remote and
3420: 20 63 68 65 63 6b 20 72 65 6d 6f 74 65 20 70 72   check remote pr
3430: 6f 67 72 61 6d 73 20 6f 6e 20 73 74 61 72 74 20  ograms on start 
3440: 75 70 2e 20 49 74 20 63 61 6e 20 62 65 20 73 6c  up. It can be sl
3450: 6f 77 65 72 20 74 68 65 0a 20 20 20 20 23 20 20  ower the.    #  
3460: 20 20 73 74 61 72 74 20 75 70 20 62 75 74 20 69    start up but i
3470: 73 20 62 65 74 74 65 72 20 77 68 65 6e 20 6d 61  s better when ma
3480: 6b 69 6e 67 20 72 65 6d 6f 74 65 20 64 65 62 75  king remote debu
3490: 67 67 69 6e 67 0a 0a 20 20 20 20 73 65 74 20 6f  gging..    set o
34a0: 70 74 69 6f 6e 73 5f 64 65 66 28 43 68 65 63 6b  ptions_def(Check
34b0: 52 65 6d 6f 74 65 73 29 20 31 0a 0a 20 20 20 20  Remotes) 1..    
34c0: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28  set options_def(
34d0: 41 75 74 6f 53 61 76 65 52 65 76 69 73 69 6f 6e  AutoSaveRevision
34e0: 73 29 20 31 0a 20 20 20 20 73 65 74 20 6f 70 74  s) 1.    set opt
34f0: 69 6f 6e 73 5f 64 65 66 28 41 75 74 6f 53 61 76  ions_def(AutoSav
3500: 65 52 65 76 69 73 69 6f 6e 73 5f 74 69 6d 65 29  eRevisions_time)
3510: 20 35 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f   5.    set optio
3520: 6e 73 5f 64 65 66 28 41 75 74 6f 53 61 76 65 52  ns_def(AutoSaveR
3530: 65 76 69 73 69 6f 6e 73 5f 69 64 6c 65 74 69 6d  evisions_idletim
3540: 65 29 20 35 0a 0a 20 20 20 20 73 65 74 20 6f 70  e) 5..    set op
3550: 74 69 6f 6e 73 5f 64 65 66 28 6e 6f 6e 49 6e 73  tions_def(nonIns
3560: 74 72 75 6d 65 6e 74 69 6e 67 50 72 6f 63 73 29  trumentingProcs)
3570: 20 22 22 0a 0a 20 20 20 20 23 23 23 23 23 23 23   ""..    #######
3580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
35a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
35b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
35c0: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 20  #########.    # 
35d0: 52 65 61 64 69 6e 67 20 70 72 65 66 65 72 65 6e  Reading preferen
35e0: 63 65 73 20 28 74 68 65 79 20 61 72 65 20 6f 6e  ces (they are on
35f0: 6c 79 20 73 61 76 65 64 20 69 6e 20 47 55 49 20  ly saved in GUI 
3600: 6d 6f 64 65 29 0a 20 20 20 20 23 23 23 23 23 23  mode).    ######
3610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3650: 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20  ##########..    
3660: 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74  if { $::tcl_plat
3670: 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d  form(platform) =
3680: 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a  = "windows" } {.
3690: 09 69 66 20 7b 20 5b 63 61 74 63 68 20 7b 20 70  .if { [catch { p
36a0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 72  ackage require r
36b0: 65 67 69 73 74 72 79 20 7d 5d 20 7d 20 7b 0a 09  egistry }] } {..
36c0: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 69      foreach i [i
36d0: 6e 66 6f 20 6c 6f 61 64 65 64 5d 20 7b 0a 09 09  nfo loaded] {...
36e0: 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 65 71 75  if { [string equ
36f0: 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 6c 69 6e 64  al -nocase [lind
3700: 65 78 20 24 69 20 31 5d 20 22 72 65 67 69 73 74  ex $i 1] "regist
3710: 72 79 22 5d 20 7d 20 7b 0a 09 09 20 20 20 20 6c  ry"] } {...    l
3720: 6f 61 64 20 5b 6c 69 6e 64 65 78 20 24 69 20 30  oad [lindex $i 0
3730: 5d 0a 09 09 20 20 20 20 62 72 65 61 6b 0a 09 09  ]...    break...
3740: 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 70 61 63  }..    }..}..pac
3750: 6b 61 67 65 20 72 65 71 75 69 72 65 20 72 65 67  kage require reg
3760: 69 73 74 72 79 0a 20 20 20 20 7d 0a 0a 20 20 20  istry.    }..   
3770: 20 61 72 72 61 79 20 73 65 74 20 6f 70 74 69 6f   array set optio
3780: 6e 73 20 5b 61 72 72 61 79 20 67 65 74 20 6f 70  ns [array get op
3790: 74 69 6f 6e 73 5f 64 65 66 5d 0a 0a 20 20 20 20  tions_def]..    
37a0: 69 66 20 7b 20 24 72 65 61 64 77 72 69 74 65 70  if { $readwritep
37b0: 72 65 66 73 20 65 71 20 22 79 65 73 22 20 7c 7c  refs eq "yes" ||
37c0: 20 24 72 65 61 64 77 72 69 74 65 70 72 65 66 73   $readwriteprefs
37d0: 20 65 71 20 22 6e 6f 77 72 69 74 65 22 20 7d 20   eq "nowrite" } 
37e0: 7b 0a 09 52 65 61 64 50 72 65 66 65 72 65 6e 63  {..ReadPreferenc
37f0: 65 73 0a 20 20 20 20 7d 0a 0a 20 20 20 20 55 70  es.    }..    Up
3800: 64 61 74 65 45 78 65 63 44 69 72 73 0a 0a 20 20  dateExecDirs..  
3810: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
3820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3860: 23 23 0a 20 20 20 20 23 20 52 65 67 69 73 74 65  ##.    # Registe
3870: 72 69 6e 67 20 61 73 20 72 65 6d 6f 74 65 20 73  ring as remote s
3880: 65 72 76 65 72 0a 20 20 20 20 23 23 23 23 23 23  erver.    ######
3890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38d0: 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20  ##########..    
38e0: 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 65  if { $debuggerse
38f0: 72 76 65 72 20 21 3d 20 22 22 20 7d 20 7b 20 72  rver != "" } { r
3900: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 65 74  eturn }..    set
3910: 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72 20   debuggerserver 
3920: 72 61 6d 64 65 62 75 67 67 65 72 0a 0a 20 20 20  ramdebugger..   
3930: 20 69 66 20 7b 20 24 75 73 65 63 6f 6d 6d 52 20   if { $usecommR 
3940: 7d 20 7b 0a 09 69 66 20 7b 20 24 6f 70 74 69 6f  } {..if { $optio
3950: 6e 73 28 43 68 65 63 6b 52 65 6d 6f 74 65 73 29  ns(CheckRemotes)
3960: 20 3d 3d 20 31 20 7d 20 7b 0a 09 20 20 20 20 75   == 1 } {..    u
3970: 70 6c 65 76 65 6c 20 5c 23 30 20 70 61 63 6b 61  plevel \#0 packa
3980: 67 65 20 72 65 71 75 69 72 65 20 63 6f 6d 6d 52  ge require commR
3990: 20 20 3b 23 6d 6f 64 69 66 69 63 61 74 69 6f 6e    ;#modification
39a0: 20 28 63 6f 6d 6d 52 29 20 6f 66 20 74 63 6c 6c   (commR) of tcll
39b0: 69 62 20 63 6f 6d 6d 20 70 61 63 6b 61 67 65 0a  ib comm package.
39c0: 09 20 20 20 20 73 65 74 20 64 65 62 75 67 67 65  .    set debugge
39d0: 72 73 65 72 76 65 72 4e 75 6d 20 5b 63 6f 6d 6d  rserverNum [comm
39e0: 52 3a 3a 72 65 67 69 73 74 65 72 20 52 61 6d 44  R::register RamD
39f0: 65 62 75 67 67 65 72 20 31 5d 0a 09 7d 0a 20 20  ebugger 1]..}.  
3a00: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b    } else {..if {
3a10: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20   [info commands 
3a20: 77 6d 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20  wm] != "" } {.. 
3a30: 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69     package requi
3a40: 72 65 20 54 6b 0a 09 20 20 20 20 77 6d 20 77 69  re Tk..    wm wi
3a50: 74 68 64 72 61 77 20 2e 0a 09 7d 0a 09 73 65 74  thdraw ...}..set
3a60: 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72 20   debuggerserver 
3a70: 5b 74 6b 20 61 70 70 6e 61 6d 65 20 24 64 65 62  [tk appname $deb
3a80: 75 67 67 65 72 73 65 72 76 65 72 5d 0a 20 20 20  uggerserver].   
3a90: 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
3aa0: 62 75 67 67 65 72 3a 3a 53 65 74 46 6f 6e 74 20  bugger::SetFont 
3ab0: 7b 20 63 75 61 6c 20 63 6f 6d 6f 20 7d 20 7b 0a  { cual como } {.
3ac0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74      variable opt
3ad0: 69 6f 6e 73 0a 0a 20 20 20 20 73 65 74 20 69 64  ions..    set id
3ae0: 78 20 5b 20 6c 73 65 61 72 63 68 20 7b 4e 6f 72  x [ lsearch {Nor
3af0: 6d 61 6c 46 6f 6e 74 20 46 69 78 65 64 46 6f 6e  malFont FixedFon
3b00: 74 20 48 65 6c 70 46 6f 6e 74 7d 20 24 63 75 61  t HelpFont} $cua
3b10: 6c 5d 0a 20 20 20 20 69 66 20 7b 20 24 69 64 78  l].    if { $idx
3b20: 20 21 3d 20 2d 31 7d 20 7b 0a 09 73 65 74 20 6f   != -1} {..set o
3b30: 70 74 69 6f 6e 73 28 24 63 75 61 6c 29 20 24 63  ptions($cual) $c
3b40: 6f 6d 6f 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  omo.    }.}..pro
3b50: 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55  c RamDebugger::U
3b60: 70 64 61 74 65 45 78 65 63 44 69 72 73 20 7b 7d  pdateExecDirs {}
3b70: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
3b80: 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69  options.    vari
3b90: 61 62 6c 65 20 74 6f 70 64 69 72 0a 20 20 20 20  able topdir.    
3ba0: 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 5f  variable topdir_
3bb0: 65 78 74 65 72 6e 61 6c 0a 0a 20 20 20 20 69 66  external..    if
3bc0: 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f   { $::tcl_platfo
3bd0: 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d 20  rm(platform) == 
3be0: 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 73  "windows" } {..s
3bf0: 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72  et file [filenor
3c00: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 6a 6f 69  malize [file joi
3c10: 6e 20 24 74 6f 70 64 69 72 5f 65 78 74 65 72 6e  n $topdir_extern
3c20: 61 6c 20 61 64 64 6f 6e 73 5d 5d 0a 09 69 66 20  al addons]]..if 
3c30: 7b 20 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74  { [file isdirect
3c40: 6f 72 79 20 24 66 69 6c 65 5d 20 26 26 20 5b 6c  ory $file] && [l
3c50: 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 6f  search -exact $o
3c60: 70 74 69 6f 6e 73 28 65 78 65 63 75 74 61 62 6c  ptions(executabl
3c70: 65 5f 64 69 72 73 29 20 24 66 69 6c 65 5d 20 3d  e_dirs) $file] =
3c80: 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 6c 61  = -1 } {..    la
3c90: 70 70 65 6e 64 20 6f 70 74 69 6f 6e 73 28 65 78  ppend options(ex
3ca0: 65 63 75 74 61 62 6c 65 5f 64 69 72 73 29 20 24  ecutable_dirs) $
3cb0: 66 69 6c 65 0a 09 7d 0a 09 66 6f 72 65 61 63 68  file..}..foreach
3cc0: 20 69 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70   i [glob -nocomp
3cd0: 6c 61 69 6e 20 2d 64 69 72 20 63 3a 20 6d 69 6e  lain -dir c: min
3ce0: 67 77 2a 5d 20 7b 0a 09 20 20 20 20 73 65 74 20  gw*] {..    set 
3cf0: 64 69 72 73 5f 69 6e 20 5b 67 6c 6f 62 20 2d 6e  dirs_in [glob -n
3d00: 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72 20 24  ocomplain -dir $
3d10: 69 20 6d 69 6e 67 77 2a 5d 0a 09 20 20 20 20 66  i mingw*]..    f
3d20: 6f 72 65 61 63 68 20 6a 20 5b 63 6f 6e 63 61 74  oreach j [concat
3d30: 20 5b 6c 69 73 74 20 24 69 5d 20 24 64 69 72 73   [list $i] $dirs
3d40: 5f 69 6e 5d 20 7b 0a 09 09 69 66 20 7b 20 5b 66  _in] {...if { [f
3d50: 69 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20  ile isdirectory 
3d60: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6a 20 62 69  [file join $j bi
3d70: 6e 5d 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65  n]] } {...    se
3d80: 74 20 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d  t file [filenorm
3d90: 61 6c 69 7a 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  alize [file join
3da0: 20 24 6a 20 62 69 6e 5d 5d 0a 09 09 20 20 20 20   $j bin]]...    
3db0: 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 2d 65  if { [lsearch -e
3dc0: 78 61 63 74 20 24 6f 70 74 69 6f 6e 73 28 65 78  xact $options(ex
3dd0: 65 63 75 74 61 62 6c 65 5f 64 69 72 73 29 20 24  ecutable_dirs) $
3de0: 66 69 6c 65 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a  file] == -1 } {.
3df0: 09 09 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e  ..        lappen
3e00: 64 20 6f 70 74 69 6f 6e 73 28 65 78 65 63 75 74  d options(execut
3e10: 61 62 6c 65 5f 64 69 72 73 29 20 24 66 69 6c 65  able_dirs) $file
3e20: 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20  ...    }...}..  
3e30: 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20    }..}.    }..  
3e40: 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78    if { ![info ex
3e50: 69 73 74 73 20 3a 3a 65 6e 76 28 50 41 54 48 29  ists ::env(PATH)
3e60: 5d 20 7d 20 7b 0a 09 73 65 74 20 6c 69 73 74 20  ] } {..set list 
3e70: 22 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  "".    } else {.
3e80: 09 73 65 74 20 6c 69 73 74 20 5b 73 70 6c 69 74  .set list [split
3e90: 20 24 3a 3a 65 6e 76 28 50 41 54 48 29 20 5c 3b   $::env(PATH) \;
3ea0: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  ].    }.    set 
3eb0: 68 61 73 63 68 61 6e 67 65 64 20 30 0a 20 20 20  haschanged 0.   
3ec0: 20 66 6f 72 65 61 63 68 20 69 20 24 6f 70 74 69   foreach i $opti
3ed0: 6f 6e 73 28 65 78 65 63 75 74 61 62 6c 65 5f 64  ons(executable_d
3ee0: 69 72 73 29 20 7b 0a 09 69 66 20 7b 20 24 3a 3a  irs) {..if { $::
3ef0: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61  tcl_platform(pla
3f00: 74 66 6f 72 6d 29 20 65 71 20 22 77 69 6e 64 6f  tform) eq "windo
3f10: 77 73 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  ws" } {..    set
3f20: 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 73 65   err [catch { se
3f30: 74 20 73 68 6f 72 74 6e 61 6d 65 20 5b 66 69 6c  t shortname [fil
3f40: 65 20 6e 61 74 69 76 65 20 5b 66 69 6c 65 20 61  e native [file a
3f50: 74 74 72 69 62 75 74 65 73 20 24 69 20 2d 73 68  ttributes $i -sh
3f60: 6f 72 74 6e 61 6d 65 5d 5d 20 7d 5d 0a 09 20 20  ortname]] }]..  
3f70: 20 20 69 66 20 7b 20 21 24 65 72 72 20 7d 20 7b    if { !$err } {
3f80: 20 73 65 74 20 69 20 24 73 68 6f 72 74 6e 61 6d   set i $shortnam
3f90: 65 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c 73  e }..}..if { [ls
3fa0: 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 6c 69  earch -exact $li
3fb0: 73 74 20 24 69 5d 20 3d 3d 20 2d 31 20 7d 20 7b  st $i] == -1 } {
3fc0: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 6c 69  ..    lappend li
3fd0: 73 74 20 24 69 0a 09 20 20 20 20 73 65 74 20 68  st $i..    set h
3fe0: 61 73 63 68 61 6e 67 65 64 20 31 0a 09 7d 0a 20  aschanged 1..}. 
3ff0: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 68     }.    if { $h
4000: 61 73 63 68 61 6e 67 65 64 20 7d 20 7b 0a 09 73  aschanged } {..s
4010: 65 74 20 3a 3a 65 6e 76 28 50 41 54 48 29 20 5b  et ::env(PATH) [
4020: 6a 6f 69 6e 20 24 6c 69 73 74 20 5c 3b 5d 0a 09  join $list \;]..
4030: 23 20 74 68 69 73 20 69 73 20 61 20 76 61 72 69  # this is a vari
4040: 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 54 43  able from the TC
4050: 4c 20 6c 69 62 72 61 72 79 0a 09 61 72 72 61 79  L library..array
4060: 20 75 6e 73 65 74 20 3a 3a 61 75 74 6f 5f 65 78   unset ::auto_ex
4070: 65 63 73 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20  ecs.    }.    . 
4080: 20 20 20 73 65 74 20 64 69 72 73 20 22 22 0a 20     set dirs "". 
4090: 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 6f 70     foreach i $op
40a0: 74 69 6f 6e 73 28 65 78 65 63 75 74 61 62 6c 65  tions(executable
40b0: 5f 64 69 72 73 29 20 7b 0a 09 69 66 20 7b 20 24  _dirs) {..if { $
40c0: 69 20 6e 69 20 24 3a 3a 61 75 74 6f 5f 70 61 74  i ni $::auto_pat
40d0: 68 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65  h } {..    lappe
40e0: 6e 64 20 64 69 72 73 20 24 69 0a 09 7d 0a 20 20  nd dirs $i..}.  
40f0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 6c 6c    }.    if { [ll
4100: 65 6e 67 74 68 20 24 64 69 72 73 5d 20 7d 20 7b  ength $dirs] } {
4110: 0a 09 73 65 74 20 3a 3a 61 75 74 6f 5f 70 61 74  ..set ::auto_pat
4120: 68 20 5b 6c 69 6e 73 65 72 74 20 24 3a 3a 61 75  h [linsert $::au
4130: 74 6f 5f 70 61 74 68 20 30 20 7b 2a 7d 24 64 69  to_path 0 {*}$di
4140: 72 73 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 23 23 23  rs].    }.}..###
4150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4190: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20  #############.# 
41a0: 20 20 20 20 20 20 4d 61 69 6e 20 6e 6f 6e 20 47        Main non G
41b0: 55 49 20 66 75 6e 63 74 69 6f 6e 73 0a 23 23 23  UI functions.###
41c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4200: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 0a  #############...
4210: 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72  proc RamDebugger
4220: 3a 3a 72 68 65 6c 70 20 7b 20 61 72 67 73 20 7d  ::rhelp { args }
4230: 20 7b 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67   {..    set usag
4240: 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20  estring {usage: 
4250: 72 68 65 6c 70 20 3f 73 77 69 74 63 68 65 73 3f  rhelp ?switches?
4260: 20 3f 63 6f 6d 6d 61 6e 64 3f 0a 09 2d 68 3a 20   ?command?..-h: 
4270: 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 20 75        displays u
4280: 73 61 67 65 0a 09 2d 2d 3a 20 20 20 20 20 65 6e  sage..--:     en
4290: 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 54  d of options...T
42a0: 6f 20 6f 62 74 61 69 6e 20 6d 6f 72 65 20 69 6e  o obtain more in
42b0: 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 61 20 63  formation of a c
42c0: 6f 6d 6d 61 6e 64 2c 20 75 73 65 20 27 72 68 65  ommand, use 'rhe
42d0: 6c 70 20 63 6f 6d 6d 61 6e 64 27 20 6f 72 20 27  lp command' or '
42e0: 63 6f 6d 6d 61 6e 64 20 2d 68 27 2e 0a 09 54 6f  command -h'...To
42f0: 20 62 65 67 69 6e 20 64 65 62 75 67 67 69 6e 67   begin debugging
4300: 2c 20 75 73 65 20 72 64 65 62 75 67 2e 0a 20 20  , use rdebug..  
4310: 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 67    }.    ParseArg
4320: 73 20 24 61 72 67 73 20 24 75 73 61 67 65 73 74  s $args $usagest
4330: 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20 20 69  ring opts..    i
4340: 66 20 7b 20 24 6f 70 74 73 28 63 6f 6d 6d 61 6e  f { $opts(comman
4350: 64 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 69 66  d) != "" } {..if
4360: 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64   { [info command
4370: 73 20 24 6f 70 74 73 28 63 6f 6d 6d 61 6e 64 29  s $opts(command)
4380: 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20  ] == "" } {..   
4390: 20 65 72 72 6f 72 20 5b 5f 20 22 63 6f 6d 6d 61   error [_ "comma
43a0: 6e 64 20 27 25 73 27 20 64 6f 65 73 20 6e 6f 74  nd '%s' does not
43b0: 20 65 78 69 73 74 22 20 24 6f 70 74 73 28 63 6f   exist" $opts(co
43c0: 6d 6d 61 6e 64 29 5d 5c 6e 24 75 73 61 67 65 73  mmand)]\n$usages
43d0: 74 72 69 6e 67 0a 09 7d 0a 09 63 61 74 63 68 20  tring..}..catch 
43e0: 7b 20 24 6f 70 74 73 28 63 6f 6d 6d 61 6e 64 29  { $opts(command)
43f0: 20 2d 68 20 7d 20 73 74 72 69 6e 67 0a 09 72 65   -h } string..re
4400: 74 75 72 6e 20 24 73 74 72 69 6e 67 0a 20 20 20  turn $string.   
4410: 20 7d 0a 20 20 20 20 73 65 74 20 6c 69 73 74 20   }.    set list 
4420: 5b 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72  [namespace expor
4430: 74 5d 0a 20 20 20 20 73 65 74 20 72 65 74 76 61  t].    set retva
4440: 6c 20 5b 5f 20 22 55 73 65 20 27 72 68 65 6c 70  l [_ "Use 'rhelp
4450: 20 2d 68 27 20 6f 72 20 27 72 68 65 6c 70 20 63   -h' or 'rhelp c
4460: 6f 6d 6d 61 6e 64 27 20 66 6f 72 20 6d 6f 72 65  ommand' for more
4470: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 22 5d 5c 6e   information"]\n
4480: 5c 6e 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69  \n.    foreach i
4490: 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f   [namespace expo
44a0: 72 74 5d 20 7b 0a 09 63 61 74 63 68 20 7b 20 24  rt] {..catch { $
44b0: 69 20 2d 68 20 7d 20 73 74 72 69 6e 67 0a 09 72  i -h } string..r
44c0: 65 67 65 78 70 20 7b 5e 2e 2a 3a 28 2e 2a 29 7d  egexp {^.*:(.*)}
44d0: 20 5b 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20   [lindex [split 
44e0: 24 73 74 72 69 6e 67 20 5c 6e 5d 20 30 5d 20 7b  $string \n] 0] {
44f0: 7d 20 73 74 72 69 6e 67 0a 09 61 70 70 65 6e 64  } string..append
4500: 20 72 65 74 76 61 6c 20 22 24 73 74 72 69 6e 67   retval "$string
4510: 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 72 65  \n".    }.    re
4520: 74 75 72 6e 20 24 72 65 74 76 61 6c 0a 7d 0a 0a  turn $retval.}..
4530: 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72  proc RamDebugger
4540: 3a 3a 72 64 65 62 75 67 20 7b 20 61 72 67 73 20  ::rdebug { args 
4550: 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
4560: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20   remoteserver.  
4570: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74    variable remot
4580: 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20  eserverType.    
4590: 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73  variable remotes
45a0: 65 72 76 65 72 4e 75 6d 0a 20 20 20 20 76 61 72  erverNum.    var
45b0: 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 65  iable debuggerse
45c0: 72 76 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c  rver.    variabl
45d0: 65 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72  e debuggerserver
45e0: 4e 75 6d 0a 20 20 20 20 76 61 72 69 61 62 6c 65  Num.    variable
45f0: 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20   currentfile.   
4600: 20 76 61 72 69 61 62 6c 65 20 73 65 72 76 69 63   variable servic
4610: 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  es.    variable 
4620: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65  instrumentedfile
4630: 73 53 65 6e 74 0a 20 20 20 20 76 61 72 69 61 62  sSent.    variab
4640: 6c 65 20 64 65 62 75 67 67 65 72 73 74 61 74 65  le debuggerstate
4650: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 64  .    variable gd
4660: 62 6c 6f 67 0a 20 20 20 20 76 61 72 69 61 62 6c  blog.    variabl
4670: 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61  e options.    va
4680: 72 69 61 62 6c 65 20 69 6e 69 74 69 61 6c 63 6f  riable initialco
4690: 6d 6d 61 6e 64 73 0a 20 20 20 20 76 61 72 69 61  mmands.    varia
46a0: 62 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 20 20 20  ble usecommR.   
46b0: 20 76 61 72 69 61 62 6c 65 20 74 63 6c 73 68 5f   variable tclsh_
46c0: 64 65 66 61 75 6c 74 5f 64 69 72 73 0a 0a 20 20  default_dirs..  
46d0: 20 20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e    set usagestrin
46e0: 67 20 7b 75 73 61 67 65 3a 20 72 64 65 62 75 67  g {usage: rdebug
46f0: 20 3f 73 77 69 74 63 68 65 73 3f 20 3f 70 72 6f   ?switches? ?pro
4700: 67 72 61 6d 3f 0a 09 2d 68 3a 20 20 20 20 20 20  gram?..-h:      
4710: 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 20         displays 
4720: 75 73 61 67 65 0a 09 2d 61 63 74 69 76 65 73 3a  usage..-actives:
4730: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 63         return ac
4740: 74 69 76 65 20 70 72 6f 67 72 61 6d 73 0a 09 2d  tive programs..-
4750: 66 6f 72 63 65 75 70 64 61 74 65 3a 20 20 20 66  forceupdate:   f
4760: 6f 72 63 65 20 75 70 64 61 74 65 20 6f 66 20 72  orce update of r
4770: 65 6d 6f 74 65 20 70 72 6f 67 72 61 6d 20 73 65  emote program se
4780: 61 72 63 68 0a 09 2d 66 6f 72 63 65 75 70 64 61  arch..-forceupda
4790: 74 65 32 3a 20 20 66 6f 72 63 65 20 75 70 64 61  te2:  force upda
47a0: 74 65 20 6f 66 20 72 65 6d 6f 74 65 20 70 72 6f  te of remote pro
47b0: 67 72 61 6d 20 73 65 61 72 63 68 2c 20 74 72 79  gram search, try
47c0: 20 68 61 72 64 65 72 0a 09 2d 64 69 73 63 6f 6e   harder..-discon
47d0: 6e 65 63 74 3a 20 20 20 20 64 69 73 63 6f 6e 6e  nect:    disconn
47e0: 65 63 74 20 66 72 6f 6d 20 72 65 6d 6f 74 65 73  ect from remotes
47f0: 65 72 76 65 72 0a 09 2d 63 75 72 72 65 6e 74 66  erver..-currentf
4800: 69 6c 65 3a 20 20 20 65 78 65 63 75 74 65 20 61  ile:   execute a
4810: 6e 64 20 64 65 62 75 67 20 63 75 72 72 65 6e 74  nd debug current
4820: 66 69 6c 65 0a 09 2d 6d 61 73 74 65 72 3a 20 20  file..-master:  
4830: 20 20 20 20 20 20 6f 6e 6c 79 20 76 61 6c 69 64        only valid
4840: 20 77 68 65 6e 20 52 61 6d 44 65 62 75 67 67 65   when RamDebugge
4850: 72 20 69 73 20 69 6e 63 6c 75 64 65 64 20 61 73  r is included as
4860: 20 70 61 63 6b 61 67 65 2e 20 44 65 62 75 67 73   package. Debugs
4870: 20 6d 61 73 74 65 72 20 70 72 6f 67 72 61 6d 0a   master program.
4880: 09 2d 64 65 62 75 67 63 70 6c 75 73 70 6c 75 73  .-debugcplusplus
4890: 3a 20 65 78 65 63 75 74 65 20 61 6e 64 20 64 65  : execute and de
48a0: 62 75 67 20 61 20 63 2b 2b 20 66 69 6c 65 2e 20  bug a c++ file. 
48b0: 70 72 6f 67 72 61 6d 20 69 73 20 61 20 6c 69 73  program is a lis
48c0: 74 20 77 69 74 68 20 70 72 67 2e 20 6e 61 6d 65  t with prg. name
48d0: 20 61 6e 64 20 61 72 67 73 0a 09 2d 2d 3a 20 20   and args..--:  
48e0: 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 6f             end o
48f0: 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 54 6f 20 62  f options...To b
4900: 65 67 69 6e 20 64 65 62 75 67 67 69 6e 67 20 61  egin debugging a
4910: 20 54 43 4c 20 66 69 6c 65 2c 20 73 65 6c 65 63   TCL file, selec
4920: 74 20 74 68 65 20 66 69 6c 65 20 77 69 74 68 20  t the file with 
4930: 27 72 6c 69 73 74 27 20 61 6e 64 20 75 73 65 20  'rlist' and use 
4940: 27 72 64 65 62 75 67 20 2d 63 75 72 72 65 6e 74  'rdebug -current
4950: 66 69 6c 65 27 2e 0a 09 54 6f 20 62 65 67 69 6e  file'...To begin
4960: 20 64 65 62 75 67 67 69 6e 67 20 61 20 72 65 6d   debugging a rem
4970: 6f 74 65 20 70 72 6f 67 72 61 6d 2c 20 75 73 65  ote program, use
4980: 20 27 72 64 65 62 75 67 20 70 72 6f 67 72 61 6d   'rdebug program
4990: 27 2c 20 77 68 65 72 65 20 70 72 6f 67 72 61 6d  ', where program
49a0: 20 69 73 20 6f 6e 65 20 61 63 74 69 76 65 0a 09   is one active..
49b0: 70 72 6f 67 72 61 6d 2c 20 74 68 61 74 20 6d 75  program, that mu
49c0: 73 74 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65  st belong to the
49d0: 20 73 65 72 76 69 63 65 73 20 6c 69 73 74 2e 0a   services list..
49e0: 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41      }.    ParseA
49f0: 72 67 73 20 24 61 72 67 73 20 24 75 73 61 67 65  rgs $args $usage
4a00: 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20  string opts..   
4a10: 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 6d 61 73   if { $opts(-mas
4a20: 74 65 72 29 20 7d 20 7b 0a 09 23 20 6e 6f 74 68  ter) } {..# noth
4a30: 69 6e 67 0a 20 20 20 20 7d 20 65 6c 73 65 69 66  ing.    } elseif
4a40: 20 7b 20 24 6f 70 74 73 28 2d 66 6f 72 63 65 75   { $opts(-forceu
4a50: 70 64 61 74 65 32 29 20 7d 20 7b 0a 09 46 69 6e  pdate2) } {..Fin
4a60: 64 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 20  dActivePrograms 
4a70: 32 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  2.    } elseif {
4a80: 20 24 6f 70 74 73 28 2d 66 6f 72 63 65 75 70 64   $opts(-forceupd
4a90: 61 74 65 29 20 7d 20 7b 0a 09 46 69 6e 64 41 63  ate) } {..FindAc
4aa0: 74 69 76 65 50 72 6f 67 72 61 6d 73 20 31 0a 20  tivePrograms 1. 
4ab0: 20 20 20 7d 20 65 6c 73 65 20 7b 20 46 69 6e 64     } else { Find
4ac0: 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 20 30  ActivePrograms 0
4ad0: 20 7d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b   }.    .    if {
4ae0: 20 24 6f 70 74 73 28 2d 61 63 74 69 76 65 73 29   $opts(-actives)
4af0: 20 7d 20 7b 20 72 65 74 75 72 6e 20 5b 61 72 72   } { return [arr
4b00: 61 79 20 6e 61 6d 65 73 20 73 65 72 76 69 63 65  ay names service
4b10: 73 5d 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24  s] }..    if { $
4b20: 6f 70 74 73 28 2d 64 69 73 63 6f 6e 6e 65 63 74  opts(-disconnect
4b30: 29 20 7d 20 7b 0a 09 69 66 20 7b 20 24 72 65 6d  ) } {..if { $rem
4b40: 6f 74 65 73 65 72 76 65 72 20 3d 3d 20 22 22 20  oteserver == "" 
4b50: 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b  } {..    error [
4b60: 5f 20 22 45 72 72 6f 72 2e 20 54 68 65 72 65 20  _ "Error. There 
4b70: 69 73 20 6e 6f 20 64 65 62 75 67 67 69 6e 67 20  is no debugging 
4b80: 73 65 73 73 69 6f 6e 20 61 63 74 69 76 65 20 74  session active t
4b90: 6f 20 73 74 6f 70 22 5d 0a 09 7d 0a 09 69 66 20  o stop"]..}..if 
4ba0: 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54  { $remoteserverT
4bb0: 79 70 65 20 3d 3d 20 22 6d 61 73 74 65 72 22 20  ype == "master" 
4bc0: 7d 20 7b 0a 09 20 20 20 20 23 20 77 68 79 20 6e  } {..    # why n
4bd0: 6f 74 3f 0a 09 20 20 20 20 23 65 72 72 6f 72 20  ot?..    #error 
4be0: 5b 5f 20 22 49 74 20 69 73 20 6e 6f 74 20 70 6f  [_ "It is not po
4bf0: 73 73 69 62 6c 65 20 74 6f 20 73 74 6f 70 20 74  ssible to stop t
4c00: 68 69 73 20 74 79 70 65 20 6f 66 20 64 65 62 75  his type of debu
4c10: 67 67 69 6e 67 2e 20 55 73 65 20 27 51 75 69 74  gging. Use 'Quit
4c20: 27 20 69 6e 73 74 65 61 64 22 5d 0a 09 7d 20 65  ' instead"]..} e
4c30: 6c 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 73  lseif { $remotes
4c40: 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6c 6f  erverType == "lo
4c50: 63 61 6c 22 20 7d 20 7b 0a 09 20 20 20 20 63 61  cal" } {..    ca
4c60: 74 63 68 20 7b 20 6c 6f 63 61 6c 20 65 76 61 6c  tch { local eval
4c70: 20 64 65 73 74 72 6f 79 20 2e 20 7d 0a 09 20 20   destroy . }..  
4c80: 20 20 63 61 74 63 68 20 7b 20 69 6e 74 65 72 70    catch { interp
4c90: 20 64 65 6c 65 74 65 20 6c 6f 63 61 6c 20 7d 0a   delete local }.
4ca0: 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 72 65 6d  .} elseif { $rem
4cb0: 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d  oteserverType ==
4cc0: 20 22 67 64 62 22 20 7d 20 7b 0a 09 20 20 20 20   "gdb" } {..    
4cd0: 63 61 74 63 68 20 7b 0a 09 09 6c 61 73 73 69 67  catch {...lassig
4ce0: 6e 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20  n $remoteserver 
4cf0: 66 69 64 0a 09 09 23 70 75 74 73 20 2d 6e 6f 6e  fid...#puts -non
4d00: 65 77 6c 69 6e 65 20 5b 6c 69 6e 64 65 78 20 24  ewline [lindex $
4d10: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 30 5d 20  remoteserver 0] 
4d20: 7b 5c 78 30 33 7d 0a 09 09 69 66 20 7b 20 24 3a  {\x03}...if { $:
4d30: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c  :tcl_platform(pl
4d40: 61 74 66 6f 72 6d 29 20 65 71 20 22 75 6e 69 78  atform) eq "unix
4d50: 22 20 7d 20 7b 0a 09 09 20 20 20 20 65 78 65 63  " } {...    exec
4d60: 20 6b 69 6c 6c 20 2d 73 20 49 4e 54 20 5b 6c 69   kill -s INT [li
4d70: 6e 64 65 78 20 5b 70 69 64 20 24 66 69 64 5d 20  ndex [pid $fid] 
4d80: 30 5d 0a 09 09 7d 0a 09 09 70 75 74 73 20 24 66  0]...}...puts $f
4d90: 69 64 20 71 75 69 74 0a 09 09 63 6c 6f 73 65 20  id quit...close 
4da0: 24 66 69 64 0a 09 20 20 20 20 7d 0a 09 7d 0a 09  $fid..    }..}..
4db0: 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72  set remoteserver
4dc0: 20 22 22 0a 09 73 65 74 20 72 65 6d 6f 74 65 73   ""..set remotes
4dd0: 65 72 76 65 72 54 79 70 65 20 22 22 0a 09 69 66  erverType ""..if
4de0: 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 74   { $debuggerstat
4df0: 65 20 3d 3d 20 22 64 65 62 75 67 22 20 7d 20 7b  e == "debug" } {
4e00: 20 73 65 74 20 64 65 62 75 67 67 65 72 73 74 61   set debuggersta
4e10: 74 65 20 22 22 20 7d 0a 09 54 61 6b 65 41 72 72  te "" }..TakeArr
4e20: 6f 77 4f 75 74 46 72 6f 6d 54 65 78 74 0a 09 72  owOutFromText..r
4e30: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20  eturn.    }.    
4e40: 54 65 78 74 4f 75 74 43 6c 65 61 72 0a 0a 20 20  TextOutClear..  
4e50: 20 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 6d 61    if { $opts(-ma
4e60: 73 74 65 72 29 20 7d 20 7b 0a 09 69 66 20 7b 20  ster) } {..if { 
4e70: 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70  $remoteserverTyp
4e80: 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 7b  e == "local" } {
4e90: 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 6c 6f  ..    catch { lo
4ea0: 63 61 6c 20 65 76 61 6c 20 64 65 73 74 72 6f 79  cal eval destroy
4eb0: 20 2e 20 7d 0a 09 20 20 20 20 63 61 74 63 68 20   . }..    catch 
4ec0: 7b 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20  { interp delete 
4ed0: 6c 6f 63 61 6c 20 7d 0a 09 7d 20 65 6c 73 65 69  local }..} elsei
4ee0: 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65  f { $remoteserve
4ef0: 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d  rType == "gdb" }
4f00: 20 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b 0a   {..    catch {.
4f10: 09 09 70 75 74 73 20 5b 6c 69 6e 64 65 78 20 24  ..puts [lindex $
4f20: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 30 5d 20  remoteserver 0] 
4f30: 71 75 69 74 0a 09 09 63 6c 6f 73 65 20 5b 6c 69  quit...close [li
4f40: 6e 64 65 78 20 24 72 65 6d 6f 74 65 73 65 72 76  ndex $remoteserv
4f50: 65 72 20 30 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a  er 0]..    }..}.
4f60: 09 73 65 74 20 67 64 62 6c 6f 67 20 22 22 0a 0a  .set gdblog ""..
4f70: 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73  .if { [info exis
4f80: 74 73 20 6f 70 74 69 6f 6e 73 28 6d 61 73 74 65  ts options(maste
4f90: 72 5f 74 79 70 65 29 5d 20 7d 20 7b 0a 09 20 20  r_type)] } {..  
4fa0: 20 20 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76    set remoteserv
4fb0: 65 72 20 24 6f 70 74 69 6f 6e 73 28 6d 61 73 74  er $options(mast
4fc0: 65 72 5f 74 79 70 65 29 0a 09 7d 20 65 6c 73 65  er_type)..} else
4fd0: 20 7b 0a 09 20 20 20 20 23 73 65 74 20 72 65 6d   {..    #set rem
4fe0: 6f 74 65 73 65 72 76 65 72 20 6d 61 73 74 65 72  oteserver master
4ff0: 0a 09 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65  ..    set remote
5000: 73 65 72 76 65 72 20 22 6d 61 73 74 65 72 20 70  server "master p
5010: 72 6f 63 22 0a 09 7d 0a 09 73 65 74 20 72 65 6d  roc"..}..set rem
5020: 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 6d 61  oteserverType ma
5030: 73 74 65 72 0a 09 54 61 6b 65 41 72 72 6f 77 4f  ster..TakeArrowO
5040: 75 74 46 72 6f 6d 54 65 78 74 0a 20 20 20 20 7d  utFromText.    }
5050: 20 65 6c 73 65 69 66 20 7b 20 24 6f 70 74 73 28   elseif { $opts(
5060: 2d 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d 20  -currentfile) } 
5070: 7b 0a 09 69 66 20 7b 20 5b 69 6e 74 65 72 70 20  {..if { [interp 
5080: 65 78 69 73 74 73 20 6c 6f 63 61 6c 5d 20 7d 20  exists local] } 
5090: 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 6c  {..    catch { l
50a0: 6f 63 61 6c 20 65 76 61 6c 20 64 65 73 74 72 6f  ocal eval destro
50b0: 79 20 2e 20 7d 0a 09 20 20 20 20 63 61 74 63 68  y . }..    catch
50c0: 20 7b 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65   { interp delete
50d0: 20 6c 6f 63 61 6c 20 7d 0a 09 7d 0a 09 69 6e 74   local }..}..int
50e0: 65 72 70 20 63 72 65 61 74 65 20 6c 6f 63 61 6c  erp create local
50f0: 0a 09 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c  ..interp alias l
5100: 6f 63 61 6c 20 73 65 6e 64 6d 61 73 74 65 72 20  ocal sendmaster 
5110: 22 22 20 65 76 61 6c 0a 09 23 20 64 69 72 74 79  "" eval..# dirty
5120: 20 74 72 69 63 6b 20 74 6f 20 61 76 6f 69 64 20   trick to avoid 
5130: 74 68 65 20 73 6c 61 76 65 20 69 6e 74 65 72 70  the slave interp
5140: 20 62 6c 6f 63 6b 0a 09 69 6e 74 65 72 70 20 65   block..interp e
5150: 76 61 6c 20 6c 6f 63 61 6c 20 7b 0a 09 20 20 20  val local {..   
5160: 20 70 72 6f 63 20 75 70 64 61 74 65 6d 61 73 74   proc updatemast
5170: 65 72 20 7b 7d 20 7b 0a 09 09 73 65 6e 64 6d 61  er {} {...sendma
5180: 73 74 65 72 20 75 70 64 61 74 65 0a 09 09 61 66  ster update...af
5190: 74 65 72 20 33 30 30 30 20 75 70 64 61 74 65 6d  ter 3000 updatem
51a0: 61 73 74 65 72 0a 09 20 20 20 20 7d 0a 09 7d 0a  aster..    }..}.
51b0: 09 70 72 6f 63 20 65 78 69 74 5f 73 6c 61 76 65  .proc exit_slave
51c0: 20 7b 20 61 72 67 73 20 7d 20 7b 0a 09 20 20 20   { args } {..   
51d0: 20 69 66 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69   if { [catch [li
51e0: 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  st RamDebugger::
51f0: 72 64 65 62 75 67 20 2d 64 69 73 63 6f 6e 6e 65  rdebug -disconne
5200: 63 74 5d 20 65 72 72 73 74 72 69 6e 67 5d 20 7d  ct] errstring] }
5210: 20 7b 0a 09 09 57 61 72 6e 57 69 6e 20 24 65 72   {...WarnWin $er
5220: 72 73 74 72 69 6e 67 0a 09 20 20 20 20 7d 20 65  rstring..    } e
5230: 6c 73 65 20 7b 0a 09 09 73 65 74 20 63 6f 64 65  lse {...set code
5240: 20 30 0a 09 09 69 66 20 7b 20 5b 6c 6c 65 6e 67   0...if { [lleng
5250: 74 68 20 24 61 72 67 73 5d 20 3d 3d 20 31 20 7d  th $args] == 1 }
5260: 20 7b 20 73 65 74 20 63 6f 64 65 20 5b 6c 69 6e   { set code [lin
5270: 64 65 78 20 24 61 72 67 73 20 30 5d 20 7d 0a 09  dex $args 0] }..
5280: 09 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09  .TextOutRaise...
5290: 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64  TextOutInsertRed
52a0: 20 5b 5f 20 22 50 72 6f 67 72 61 6d 20 65 78 69   [_ "Program exi
52b0: 74 65 64 20 77 69 74 68 20 63 6f 64 65 20 25 73  ted with code %s
52c0: 22 20 24 63 6f 64 65 5d 0a 09 20 20 20 20 7d 0a  " $code]..    }.
52d0: 09 7d 0a 09 69 6e 74 65 72 70 20 61 6c 69 61 73  .}..interp alias
52e0: 20 6c 6f 63 61 6c 20 65 78 69 74 20 22 22 20 52   local exit "" R
52f0: 61 6d 44 65 62 75 67 67 65 72 3a 3a 65 78 69 74  amDebugger::exit
5300: 5f 73 6c 61 76 65 0a 09 6c 6f 63 61 6c 20 65 76  _slave..local ev
5310: 61 6c 20 7b 20 73 65 74 20 61 72 67 63 20 30 20  al { set argc 0 
5320: 3b 20 73 65 74 20 61 72 67 76 20 22 22 20 7d 0a  ; set argv "" }.
5330: 09 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73  .local eval [lis
5340: 74 20 73 65 74 20 3a 3a 61 75 74 6f 5f 70 61 74  t set ::auto_pat
5350: 68 20 24 3a 3a 61 75 74 6f 5f 70 61 74 68 5d 0a  h $::auto_path].
5360: 09 6c 6f 63 61 6c 20 65 76 61 6c 20 7b 0a 09 20  .local eval {.. 
5370: 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78     if { [info ex
5380: 69 73 74 73 20 65 6e 76 28 54 43 4c 4c 49 42 50  ists env(TCLLIBP
5390: 41 54 48 29 5d 20 7d 20 7b 0a 09 09 66 6f 72 65  ATH)] } {...fore
53a0: 61 63 68 20 69 20 24 65 6e 76 28 54 43 4c 4c 49  ach i $env(TCLLI
53b0: 42 50 41 54 48 29 20 7b 0a 09 09 20 20 20 20 6c  BPATH) {...    l
53c0: 61 70 70 65 6e 64 20 3a 3a 61 75 74 6f 5f 70 61  append ::auto_pa
53d0: 74 68 20 24 69 0a 09 09 7d 0a 09 20 20 20 20 7d  th $i...}..    }
53e0: 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 6e  ..    foreach "n
53f0: 20 76 22 20 5b 61 72 72 61 79 20 67 65 74 20 65   v" [array get e
5400: 6e 76 20 54 43 4c 2a 5f 54 4d 5f 50 41 54 48 5d  nv TCL*_TM_PATH]
5410: 20 7b 0a 09 09 66 6f 72 65 61 63 68 20 69 20 5b   {...foreach i [
5420: 73 70 6c 69 74 20 24 76 20 22 3a 3b 22 5d 20 7b  split $v ":;"] {
5430: 0a 09 09 20 20 20 20 3a 3a 74 63 6c 3a 3a 74 6d  ...    ::tcl::tm
5440: 3a 3a 70 61 74 68 20 61 64 64 20 24 69 0a 09 09  ::path add $i...
5450: 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20  }..    }..}..if 
5460: 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
5470: 74 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64 69  tclsh_default_di
5480: 72 73 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  rs] } {..    set
5490: 20 74 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64   tclsh_default_d
54a0: 69 72 73 20 5b 6c 69 73 74 20 22 22 20 22 22 5d  irs [list "" ""]
54b0: 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63  ..    set err [c
54c0: 61 74 63 68 20 7b 20 65 78 65 63 20 74 63 6c 73  atch { exec tcls
54d0: 68 20 3c 3c 20 7b 70 75 74 73 20 5b 73 65 74 20  h << {puts [set 
54e0: 61 75 74 6f 5f 70 61 74 68 5d 7d 7d 20 72 65 74  auto_path]}} ret
54f0: 5d 0a 09 20 20 20 20 69 66 20 7b 20 21 24 65 72  ]..    if { !$er
5500: 72 20 7d 20 7b 0a 09 09 6c 73 65 74 20 74 63 6c  r } {...lset tcl
5510: 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20  sh_default_dirs 
5520: 30 20 24 72 65 74 0a 09 20 20 20 20 7d 0a 09 20  0 $ret..    }.. 
5530: 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63     set err [catc
5540: 68 20 7b 20 65 78 65 63 20 74 63 6c 73 68 20 3c  h { exec tclsh <
5550: 3c 20 7b 70 75 74 73 20 5b 3a 3a 74 63 6c 3a 3a  < {puts [::tcl::
5560: 74 6d 3a 3a 70 61 74 68 20 6c 69 73 74 5d 7d 7d  tm::path list]}}
5570: 20 72 65 74 5d 0a 09 20 20 20 20 69 66 20 7b 20   ret]..    if { 
5580: 21 24 65 72 72 20 7d 20 7b 0a 09 09 6c 73 65 74  !$err } {...lset
5590: 20 74 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64   tclsh_default_d
55a0: 69 72 73 20 31 20 24 72 65 74 0a 09 20 20 20 20  irs 1 $ret..    
55b0: 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c 6c 65 6e  }..}..if { [llen
55c0: 67 74 68 20 5b 6c 69 6e 64 65 78 20 24 74 63 6c  gth [lindex $tcl
55d0: 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20  sh_default_dirs 
55e0: 30 5d 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 6f 63  0]] } {..    loc
55f0: 61 6c 20 65 76 61 6c 20 6c 61 70 70 65 6e 64 20  al eval lappend 
5600: 3a 61 75 74 6f 5f 70 61 74 68 20 5b 6c 69 6e 64  :auto_path [lind
5610: 65 78 20 24 74 63 6c 73 68 5f 64 65 66 61 75 6c  ex $tclsh_defaul
5620: 74 5f 64 69 72 73 20 30 5d 0a 09 7d 0a 09 69 66  t_dirs 0]..}..if
5630: 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 5b 6c 69 6e   { [llength [lin
5640: 64 65 78 20 24 74 63 6c 73 68 5f 64 65 66 61 75  dex $tclsh_defau
5650: 6c 74 5f 64 69 72 73 20 31 5d 5d 20 7d 20 7b 0a  lt_dirs 1]] } {.
5660: 09 20 20 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20  .    local eval 
5670: 3a 3a 74 63 6c 3a 3a 74 6d 3a 3a 70 61 74 68 20  ::tcl::tm::path 
5680: 61 64 64 20 5b 6c 69 6e 64 65 78 20 24 74 63 6c  add [lindex $tcl
5690: 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20  sh_default_dirs 
56a0: 31 5d 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 74  1]..}..set filet
56b0: 6f 64 65 62 75 67 20 24 63 75 72 72 65 6e 74 66  odebug $currentf
56c0: 69 6c 65 0a 09 73 65 74 20 4c 6f 63 61 6c 44 65  ile..set LocalDe
56d0: 62 75 67 67 69 6e 67 54 79 70 65 20 74 6b 0a 09  buggingType tk..
56e0: 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
56f0: 73 20 6f 70 74 69 6f 6e 73 28 4c 6f 63 61 6c 44  s options(LocalD
5700: 65 62 75 67 67 69 6e 67 54 79 70 65 29 5d 20 7d  ebuggingType)] }
5710: 20 7b 0a 09 20 20 20 20 73 65 74 20 4c 6f 63 61   {..    set Loca
5720: 6c 44 65 62 75 67 67 69 6e 67 54 79 70 65 20 24  lDebuggingType $
5730: 6f 70 74 69 6f 6e 73 28 4c 6f 63 61 6c 44 65 62  options(LocalDeb
5740: 75 67 67 69 6e 67 54 79 70 65 29 0a 09 7d 0a 09  uggingType)..}..
5750: 73 65 74 20 63 68 61 6e 67 65 64 5f 64 69 72 20  set changed_dir 
5760: 30 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78  0..if { [info ex
5770: 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 63 75 72  ists options(cur
5780: 72 65 6e 74 66 69 6c 65 61 72 67 73 35 29 5d 20  rentfileargs5)] 
5790: 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68  } {..    foreach
57a0: 20 22 63 75 72 72 20 63 75 72 72 5f 61 73 20 64   "curr curr_as d
57b0: 69 72 5f 69 6e 20 61 72 67 5f 69 6e 20 74 63 6c  ir_in arg_in tcl
57c0: 5f 6f 72 5f 74 6b 22 20 24 6f 70 74 69 6f 6e 73  _or_tk" $options
57d0: 28 63 75 72 72 65 6e 74 66 69 6c 65 61 72 67 73  (currentfileargs
57e0: 35 29 20 7b 0a 09 09 69 66 20 7b 20 24 63 75 72  5) {...if { $cur
57f0: 72 20 3d 3d 20 24 63 75 72 72 65 6e 74 66 69 6c  r == $currentfil
5800: 65 20 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b  e } {...    if {
5810: 20 24 63 75 72 72 5f 61 73 20 21 3d 20 22 22 20   $curr_as != "" 
5820: 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65  } {...        se
5830: 74 20 66 69 6c 65 74 6f 64 65 62 75 67 20 24 63  t filetodebug $c
5840: 75 72 72 5f 61 73 0a 09 09 20 20 20 20 7d 0a 09  urr_as...    }..
5850: 09 20 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20  .    if { [file 
5860: 69 73 64 69 72 65 63 74 6f 72 79 20 24 64 69 72  isdirectory $dir
5870: 5f 69 6e 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20  _in] } {...     
5880: 20 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c     local eval [l
5890: 69 73 74 20 63 64 20 24 64 69 72 5f 69 6e 5d 0a  ist cd $dir_in].
58a0: 09 09 20 20 20 20 20 20 20 20 73 65 74 20 63 68  ..        set ch
58b0: 61 6e 67 65 64 5f 64 69 72 20 31 0a 09 09 20 20  anged_dir 1...  
58c0: 20 20 20 20 20 20 73 65 74 20 74 78 74 20 5b 5f        set txt [_
58d0: 20 22 45 78 65 63 75 74 69 6e 67 20 27 25 73 27   "Executing '%s'
58e0: 5c 6e 69 6e 20 64 69 72 65 63 74 6f 72 79 3a 20  \nin directory: 
58f0: 25 73 5c 6e 22 20 24 66 69 6c 65 74 6f 64 65 62  %s\n" $filetodeb
5900: 75 67 20 24 64 69 72 5f 69 6e 5d 0a 09 09 20 20  ug $dir_in]...  
5910: 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 74    } else { set t
5920: 78 74 20 5b 5f 20 22 45 78 65 63 75 74 69 6e 67  xt [_ "Executing
5930: 20 27 25 73 27 5c 6e 22 20 24 66 69 6c 65 74 6f   '%s'\n" $fileto
5940: 64 65 62 75 67 5d 20 7d 0a 09 09 20 20 20 20 54  debug] }...    T
5950: 65 78 74 4f 75 74 49 6e 73 65 72 74 42 6c 75 65  extOutInsertBlue
5960: 20 24 74 78 74 0a 09 09 20 20 20 20 53 65 74 4d   $txt...    SetM
5970: 65 73 73 61 67 65 20 5b 5f 20 22 45 78 65 63 75  essage [_ "Execu
5980: 74 69 6e 67 20 27 25 73 27 22 20 24 66 69 6c 65  ting '%s'" $file
5990: 74 6f 64 65 62 75 67 5d 0a 09 09 20 20 20 20 6c  todebug]...    l
59a0: 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73 74 20  ocal eval [list 
59b0: 73 65 74 20 61 72 67 63 20 5b 6c 6c 65 6e 67 74  set argc [llengt
59c0: 68 20 24 61 72 67 5f 69 6e 5d 5d 0a 09 09 20 20  h $arg_in]]...  
59d0: 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69    local eval [li
59e0: 73 74 20 73 65 74 20 61 72 67 76 20 24 61 72 67  st set argv $arg
59f0: 5f 69 6e 5d 0a 09 09 20 20 20 20 54 65 78 74 4f  _in]...    TextO
5a00: 75 74 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20  utInsertBlue [_ 
5a10: 22 55 73 69 6e 67 20 61 72 67 75 6d 65 6e 74 73  "Using arguments
5a20: 3a 20 27 25 73 27 5c 6e 22 20 24 61 72 67 5f 69  : '%s'\n" $arg_i
5a30: 6e 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 24 74  n]...    if { $t
5a40: 63 6c 5f 6f 72 5f 74 6b 20 21 3d 20 22 61 75 74  cl_or_tk != "aut
5a50: 6f 22 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20  o" } {...       
5a60: 20 73 65 74 20 4c 6f 63 61 6c 44 65 62 75 67 67   set LocalDebugg
5a70: 69 6e 67 54 79 70 65 20 24 74 63 6c 5f 6f 72 5f  ingType $tcl_or_
5a80: 74 6b 0a 09 09 20 20 20 20 20 20 20 20 54 65 78  tk...        Tex
5a90: 74 4f 75 74 49 6e 73 65 72 74 42 6c 75 65 20 5b  tOutInsertBlue [
5aa0: 5f 20 22 43 6f 6e 73 69 64 65 72 69 6e 67 20 66  _ "Considering f
5ab0: 69 6c 65 20 61 73 20 74 79 70 65 3a 20 25 73 22  ile as type: %s"
5ac0: 20 24 74 63 6c 5f 6f 72 5f 74 6b 5d 0a 09 09 20   $tcl_or_tk]... 
5ad0: 20 20 20 7d 0a 09 09 20 20 20 20 54 65 78 74 4f     }...    TextO
5ae0: 75 74 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20  utInsertBlue [_ 
5af0: 22 44 65 66 69 6e 65 64 20 69 6e 3a 20 46 69 6c  "Defined in: Fil
5b00: 65 2d 3e 44 65 62 75 67 20 6f 6e 2d 3e 43 75 72  e->Debug on->Cur
5b10: 72 65 6e 74 20 66 69 6c 65 20 61 72 67 75 6d 65  rent file argume
5b20: 6e 74 73 5c 6e 22 5d 0a 09 09 20 20 20 20 62 72  nts\n"]...    br
5b30: 65 61 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09  eak...}..    }..
5b40: 7d 0a 09 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c  }..local eval [l
5b50: 69 73 74 20 73 65 74 20 61 72 67 76 30 20 24 66  ist set argv0 $f
5b60: 69 6c 65 74 6f 64 65 62 75 67 5d 0a 0a 09 73 65  iletodebug]...se
5b70: 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 70 61  t err [catch {pa
5b80: 63 6b 61 67 65 20 70 72 65 73 65 6e 74 20 72 65  ckage present re
5b90: 67 69 73 74 72 79 7d 20 76 65 72 5d 0a 09 69 66  gistry} ver]..if
5ba0: 20 7b 20 21 24 65 72 72 20 7d 20 7b 0a 09 20 20   { !$err } {..  
5bb0: 20 20 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c    interp alias l
5bc0: 6f 63 61 6c 20 72 65 67 69 73 74 72 79 20 22 22  ocal registry ""
5bd0: 20 72 65 67 69 73 74 72 79 0a 09 20 20 20 20 69   registry..    i
5be0: 6e 74 65 72 70 20 65 76 61 6c 20 6c 6f 63 61 6c  nterp eval local
5bf0: 20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65   package provide
5c00: 20 72 65 67 69 73 74 72 79 20 24 76 65 72 0a 09   registry $ver..
5c10: 7d 0a 09 69 66 20 7b 20 24 4c 6f 63 61 6c 44 65  }..if { $LocalDe
5c20: 62 75 67 67 69 6e 67 54 79 70 65 20 3d 3d 20 22  buggingType == "
5c30: 74 6b 22 20 7d 20 7b 0a 09 20 20 20 20 69 6e 74  tk" } {..    int
5c40: 65 72 70 20 65 76 61 6c 20 6c 6f 63 61 6c 20 5b  erp eval local [
5c50: 6c 69 73 74 20 6c 6f 61 64 20 7b 7d 20 54 6b 5d  list load {} Tk]
5c60: 0a 09 20 20 20 20 23 69 6e 74 65 72 70 20 65 76  ..    #interp ev
5c70: 61 6c 20 6c 6f 63 61 6c 20 70 61 63 6b 61 67 65  al local package
5c80: 20 72 65 71 75 69 72 65 20 54 6b 0a 09 20 20 20   require Tk..   
5c90: 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61   if { $::tcl_pla
5ca0: 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20  tform(platform) 
5cb0: 3d 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b  == "windows" } {
5cc0: 0a 09 09 69 6e 74 65 72 70 20 61 6c 69 61 73 20  ...interp alias 
5cd0: 6c 6f 63 61 6c 20 63 6f 6e 73 6f 6c 65 20 22 22  local console ""
5ce0: 20 63 6f 6e 73 6f 6c 65 0a 09 20 20 20 20 7d 0a   console..    }.
5cf0: 09 20 20 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20  .    local eval 
5d00: 5b 6c 69 73 74 20 62 69 6e 64 20 2e 20 3c 44 65  [list bind . <De
5d10: 73 74 72 6f 79 3e 20 7b 20 69 66 20 7b 20 22 25  stroy> { if { "%
5d20: 57 22 20 3d 3d 20 22 2e 22 20 7d 20 7b 20 65 78  W" == "." } { ex
5d30: 69 74 20 7d 20 7d 5d 0a 09 7d 0a 09 73 65 74 20  it } }]..}..set 
5d40: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
5d50: 20 6c 6f 63 61 6c 0a 09 69 66 20 7b 20 24 66 69   local..if { $fi
5d60: 6c 65 74 6f 64 65 62 75 67 20 3d 3d 20 22 22 20  letodebug == "" 
5d70: 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b  } {..    error [
5d80: 5f 20 22 45 72 72 6f 72 2e 20 74 68 65 72 65 20  _ "Error. there 
5d90: 69 73 20 6e 6f 20 63 75 72 72 65 6e 74 20 66 69  is no current fi
5da0: 6c 65 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 21 24  le"]..}..if { !$
5db0: 63 68 61 6e 67 65 64 5f 64 69 72 20 7d 20 7b 20  changed_dir } { 
5dc0: 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 63 64 20 5b  local eval [cd [
5dd0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 66 69  file dirname $fi
5de0: 6c 65 74 6f 64 65 62 75 67 5d 5d 20 7d 0a 0a 09  letodebug]] }...
5df0: 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72  set remoteserver
5e00: 20 24 66 69 6c 65 74 6f 64 65 62 75 67 0a 09 54   $filetodebug..T
5e10: 61 6b 65 41 72 72 6f 77 4f 75 74 46 72 6f 6d 54  akeArrowOutFromT
5e20: 65 78 74 0a 20 20 20 20 7d 20 65 6c 73 65 69 66  ext.    } elseif
5e30: 20 7b 20 24 6f 70 74 73 28 2d 64 65 62 75 67 63   { $opts(-debugc
5e40: 70 6c 75 73 70 6c 75 73 29 20 7d 20 7b 0a 09 69  plusplus) } {..i
5e50: 66 20 7b 20 24 6f 70 74 73 28 70 72 6f 67 72 61  f { $opts(progra
5e60: 6d 29 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20  m) == "" } {..  
5e70: 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65    if { $remotese
5e80: 72 76 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a 09  rver != "" } {..
5e90: 09 72 65 74 75 72 6e 20 5b 6c 69 6e 64 65 78 20  .return [lindex 
5ea0: 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 31 5d  $remoteserver 1]
5eb0: 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 65  ..    } else { e
5ec0: 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e 20  rror [_ "Error. 
5ed0: 25 73 5c 6e 41 63 74 69 76 65 20 70 72 6f 67 72  %s\nActive progr
5ee0: 61 6d 73 3a 20 25 73 22 20 24 75 73 61 67 65 73  ams: %s" $usages
5ef0: 74 72 69 6e 67 20 5b 61 72 72 61 79 20 6e 61 6d  tring [array nam
5f00: 65 73 20 73 65 72 76 69 63 65 73 5d 5d 20 7d 0a  es services]] }.
5f10: 09 7d 0a 0a 09 69 66 20 7b 20 5b 61 75 74 6f 5f  .}...if { [auto_
5f20: 65 78 65 63 6f 6b 20 67 64 62 5d 20 3d 3d 20 22  execok gdb] == "
5f30: 22 20 7d 20 7b 0a 09 20 20 20 20 76 61 72 69 61  " } {..    varia
5f40: 62 6c 65 20 74 65 78 74 0a 09 20 20 20 20 69 66  ble text..    if
5f50: 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   { [info exists 
5f60: 74 65 78 74 5d 20 26 26 20 5b 77 69 6e 66 6f 20  text] && [winfo 
5f70: 65 78 69 73 74 73 20 24 74 65 78 74 5d 20 7d 20  exists $text] } 
5f80: 7b 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69 61  {...set ret [Dia
5f90: 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42  logWin::messageB
5fa0: 6f 78 20 2d 64 65 66 61 75 6c 74 20 79 65 73 20  ox -default yes 
5fb0: 2d 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d  -icon question -
5fc0: 6d 65 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20  message \...    
5fd0: 20 20 20 20 20 20 20 20 20 5b 5f 20 22 43 6f 75           [_ "Cou
5fe0: 6c 64 20 6e 6f 74 20 66 69 6e 64 20 63 6f 6d 6d  ld not find comm
5ff0: 61 6e 64 20 27 67 64 62 27 2e 20 44 6f 20 79 6f  and 'gdb'. Do yo
6000: 75 20 77 61 6e 74 20 74 6f 20 73 65 65 20 74 68  u want to see th
6010: 65 20 68 65 6c 70 3f 22 5d 20 2d 70 61 72 65 6e  e help?"] -paren
6020: 74 20 24 74 65 78 74 53 54 20 5c 0a 09 09 20 20  t $textST \...  
6030: 20 20 20 20 20 20 20 20 20 20 20 2d 74 69 74 6c             -titl
6040: 65 20 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 6e 6f  e [_ "Command no
6050: 74 20 66 6f 75 6e 64 22 5d 20 2d 74 79 70 65 20  t found"] -type 
6060: 79 65 73 6e 6f 5d 0a 09 09 69 66 20 7b 20 24 72  yesno]...if { $r
6070: 65 74 20 3d 3d 20 22 79 65 73 22 20 7d 20 7b 0a  et == "yes" } {.
6080: 09 09 20 20 20 20 56 69 65 77 48 65 6c 70 46 6f  ..    ViewHelpFo
6090: 72 57 6f 72 64 20 22 44 65 62 75 67 67 69 6e 67  rWord "Debugging
60a0: 20 63 2b 2b 22 0a 09 09 20 20 20 20 23 52 61 6d   c++"...    #Ram
60b0: 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77 48 65  Debugger::ViewHe
60c0: 6c 70 46 69 6c 65 20 22 30 31 52 61 6d 44 65 62  lpFile "01RamDeb
60d0: 75 67 67 65 72 2f 52 61 6d 44 65 62 75 67 67 65  ugger/RamDebugge
60e0: 72 5f 31 32 2e 68 74 6d 6c 22 0a 09 09 7d 0a 09  r_12.html"...}..
60f0: 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 20 65  .return..    } e
6100: 6c 73 65 20 7b 0a 09 09 65 72 72 6f 72 20 5b 5f  lse {...error [_
6110: 20 22 43 6f 75 6c 64 20 6e 6f 74 20 66 69 6e 64   "Could not find
6120: 20 63 6f 6d 6d 61 6e 64 20 27 67 64 62 27 22 5d   command 'gdb'"]
6130: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 0a 09 69 66  ..    }..}....if
6140: 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72   { $remoteserver
6150: 54 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20  Type == "local" 
6160: 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b  } {..    catch {
6170: 20 6c 6f 63 61 6c 20 65 76 61 6c 20 64 65 73 74   local eval dest
6180: 72 6f 79 20 2e 20 7d 0a 09 20 20 20 20 63 61 74  roy . }..    cat
6190: 63 68 20 7b 20 69 6e 74 65 72 70 20 64 65 6c 65  ch { interp dele
61a0: 74 65 20 6c 6f 63 61 6c 20 7d 0a 09 7d 20 65 6c  te local }..} el
61b0: 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65  seif { $remotese
61c0: 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62  rverType == "gdb
61d0: 22 20 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68  " } {..    catch
61e0: 20 7b 0a 09 09 70 75 74 73 20 5b 6c 69 6e 64 65   {...puts [linde
61f0: 78 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20  x $remoteserver 
6200: 30 5d 20 71 75 69 74 0a 09 09 63 6c 6f 73 65 20  0] quit...close 
6210: 5b 6c 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73  [lindex $remotes
6220: 65 72 76 65 72 20 30 5d 0a 09 20 20 20 20 7d 0a  erver 0]..    }.
6230: 09 7d 0a 09 73 65 74 20 67 64 62 6c 6f 67 20 22  .}..set gdblog "
6240: 22 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72  "..set remoteser
6250: 76 65 72 54 79 70 65 20 67 64 62 0a 09 23 20 20  verType gdb..#  
6260: 20 20 20 20 20 20 20 20 69 66 20 7b 20 24 3a 3a          if { $::
6270: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61  tcl_platform(pla
6280: 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f  tform) == "windo
6290: 77 73 22 20 7d 20 7b 0a 09 23 20 20 20 20 20 20  ws" } {..#      
62a0: 20 20 20 20 20 20 20 20 73 65 74 20 63 61 74 20          set cat 
62b0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64  [file join $topd
62c0: 69 72 20 61 64 64 6f 6e 73 20 63 61 74 2e 65 78  ir addons cat.ex
62d0: 65 5d 0a 09 23 20 20 20 20 20 20 20 20 20 20 7d  e]..#          }
62e0: 20 65 6c 73 65 20 7b 20 73 65 74 20 63 61 74 20   else { set cat 
62f0: 63 61 74 20 7d 0a 09 73 65 74 20 64 69 72 20 5b  cat }..set dir [
6300: 6c 69 6e 64 65 78 20 24 6f 70 74 73 28 70 72 6f  lindex $opts(pro
6310: 67 72 61 6d 29 20 31 5d 0a 09 73 65 74 20 70 77  gram) 1]..set pw
6320: 64 20 5b 70 77 64 5d 0a 09 69 66 20 7b 20 24 64  d [pwd]..if { $d
6330: 69 72 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20 20  ir ne "" } {..  
6340: 20 20 63 64 20 24 64 69 72 20 20 20 20 20 20 20    cd $dir       
6350: 20 0a 09 7d 0a 09 73 65 74 20 66 69 64 20 5b 6f   ..}..set fid [o
6360: 70 65 6e 20 22 7c 67 64 62 20 2d 71 20 7c 26 20  pen "|gdb -q |& 
6370: 63 61 74 22 20 72 2b 5d 0a 09 63 64 20 24 70 77  cat" r+]..cd $pw
6380: 64 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72  d..set remoteser
6390: 76 65 72 20 5b 6c 69 73 74 20 24 66 69 64 20 24  ver [list $fid $
63a0: 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 20 73 74  opts(program) st
63b0: 61 72 74 5d 0a 09 66 63 6f 6e 66 69 67 75 72 65  art]..fconfigure
63c0: 20 24 66 69 64 20 2d 62 6c 6f 63 6b 69 6e 67 20   $fid -blocking 
63d0: 30 20 2d 62 75 66 66 65 72 69 6e 67 20 6c 69 6e  0 -buffering lin
63e0: 65 0a 09 66 69 6c 65 65 76 65 6e 74 20 24 66 69  e..fileevent $fi
63f0: 64 20 72 65 61 64 61 62 6c 65 20 52 61 6d 44 65  d readable RamDe
6400: 62 75 67 67 65 72 3a 3a 52 65 63 69 65 76 65 46  bugger::RecieveF
6410: 72 6f 6d 47 64 62 0a 09 54 61 6b 65 41 72 72 6f  romGdb..TakeArro
6420: 77 4f 75 74 46 72 6f 6d 54 65 78 74 0a 20 20 20  wOutFromText.   
6430: 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20   } else {..if { 
6440: 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 20 3d  $opts(program) =
6450: 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 69 66  = "" } {..    if
6460: 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72   { $remoteserver
6470: 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 72 65 74   != "" } {...ret
6480: 75 72 6e 20 24 72 65 6d 6f 74 65 73 65 72 76 65  urn $remoteserve
6490: 72 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 20  r..    } else { 
64a0: 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e  error [_ "Error.
64b0: 20 25 73 5c 6e 41 63 74 69 76 65 20 70 72 6f 67   %s\nActive prog
64c0: 72 61 6d 73 3a 20 25 73 22 20 24 75 73 61 67 65  rams: %s" $usage
64d0: 73 74 72 69 6e 67 20 5b 61 72 72 61 79 20 6e 61  string [array na
64e0: 6d 65 73 20 73 65 72 76 69 63 65 73 5d 5d 20 7d  mes services]] }
64f0: 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72  ..}..if { [lsear
6500: 63 68 20 2d 65 78 61 63 74 20 5b 61 72 72 61 79  ch -exact [array
6510: 20 6e 61 6d 65 73 20 73 65 72 76 69 63 65 73 5d   names services]
6520: 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 5d   $opts(program)]
6530: 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20   == -1 } {..    
6540: 46 69 6e 64 41 63 74 69 76 65 50 72 6f 67 72 61  FindActiveProgra
6550: 6d 73 20 31 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c  ms 1..}..if { [l
6560: 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 5b 61  search -exact [a
6570: 72 72 61 79 20 6e 61 6d 65 73 20 73 65 72 76 69  rray names servi
6580: 63 65 73 5d 20 24 6f 70 74 73 28 70 72 6f 67 72  ces] $opts(progr
6590: 61 6d 29 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09  am)] != -1 } {..
65a0: 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65 73 65      set remotese
65b0: 72 76 65 72 20 24 6f 70 74 73 28 70 72 6f 67 72  rver $opts(progr
65c0: 61 6d 29 0a 09 20 20 20 20 73 65 74 20 72 65 6d  am)..    set rem
65d0: 6f 74 65 73 65 72 76 65 72 4e 75 6d 20 24 73 65  oteserverNum $se
65e0: 72 76 69 63 65 73 28 24 72 65 6d 6f 74 65 73 65  rvices($remotese
65f0: 72 76 65 72 29 0a 09 7d 20 65 6c 73 65 20 7b 20  rver)..} else { 
6600: 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e  error [_ "Error.
6610: 20 25 73 5c 6e 41 63 74 69 76 65 20 70 72 6f 67   %s\nActive prog
6620: 72 61 6d 73 3a 20 25 73 22 20 24 75 73 61 67 65  rams: %s" $usage
6630: 73 74 72 69 6e 67 20 5b 61 72 72 61 79 20 6e 61  string [array na
6640: 6d 65 73 20 73 65 72 76 69 63 65 73 5d 5d 20 7d  mes services]] }
6650: 0a 09 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65  ..if { $remotese
6660: 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6c 6f 63  rverType == "loc
6670: 61 6c 22 20 7d 20 7b 0a 09 20 20 20 20 63 61 74  al" } {..    cat
6680: 63 68 20 7b 20 6c 6f 63 61 6c 20 65 76 61 6c 20  ch { local eval 
6690: 64 65 73 74 72 6f 79 20 2e 20 7d 0a 09 20 20 20  destroy . }..   
66a0: 20 63 61 74 63 68 20 7b 20 69 6e 74 65 72 70 20   catch { interp 
66b0: 64 65 6c 65 74 65 20 6c 6f 63 61 6c 20 7d 0a 09  delete local }..
66c0: 7d 20 65 6c 73 65 69 66 20 7b 20 24 72 65 6d 6f  } elseif { $remo
66d0: 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20  teserverType == 
66e0: 22 67 64 62 22 20 7d 20 7b 0a 09 20 20 20 20 63  "gdb" } {..    c
66f0: 61 74 63 68 20 7b 0a 09 09 70 75 74 73 20 5b 6c  atch {...puts [l
6700: 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73 65 72  index $remoteser
6710: 76 65 72 20 30 5d 20 71 75 69 74 0a 09 09 63 6c  ver 0] quit...cl
6720: 6f 73 65 20 5b 6c 69 6e 64 65 78 20 24 72 65 6d  ose [lindex $rem
6730: 6f 74 65 73 65 72 76 65 72 20 30 5d 0a 09 20 20  oteserver 0]..  
6740: 20 20 7d 0a 09 7d 0a 09 73 65 74 20 72 65 6d 6f    }..}..set remo
6750: 74 65 73 65 72 76 65 72 54 79 70 65 20 72 65 6d  teserverType rem
6760: 6f 74 65 0a 09 54 61 6b 65 41 72 72 6f 77 4f 75  ote..TakeArrowOu
6770: 74 46 72 6f 6d 54 65 78 74 0a 20 20 20 20 7d 0a  tFromText.    }.
6780: 0a 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65 63  .    set remotec
6790: 6f 6d 6d 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65  omm {..namespace
67a0: 20 65 76 61 6c 20 52 44 43 20 7b 0a 09 20 20 20   eval RDC {..   
67b0: 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b 73   variable breaks
67c0: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  ..    variable t
67d0: 72 61 63 65 73 20 22 22 0a 09 20 20 20 20 76 61  races ""..    va
67e0: 72 69 61 62 6c 65 20 74 72 61 63 65 64 5f 76 61  riable traced_va
67f0: 72 69 61 62 6c 65 73 0a 09 20 20 20 20 76 61 72  riables..    var
6800: 69 61 62 6c 65 20 65 76 61 6c 68 61 6e 64 6c 65  iable evalhandle
6810: 72 20 22 22 0a 09 20 20 20 20 76 61 72 69 61 62  r ""..    variab
6820: 6c 65 20 63 6f 64 65 20 22 22 0a 09 20 20 20 20  le code ""..    
6830: 76 61 72 69 61 62 6c 65 20 73 74 6f 70 6e 65 78  variable stopnex
6840: 74 20 30 0a 09 20 20 20 20 76 61 72 69 61 62 6c  t 0..    variabl
6850: 65 20 63 6f 6e 74 74 6f 20 22 22 0a 09 20 20 20  e contto ""..   
6860: 20 76 61 72 69 61 62 6c 65 20 6f 75 74 70 75 74   variable output
6870: 6c 69 6e 65 20 30 0a 09 20 20 20 20 76 61 72 69  line 0..    vari
6880: 61 62 6c 65 20 6c 61 73 74 70 72 6f 63 73 74 61  able lastprocsta
6890: 63 6b 20 22 22 0a 09 20 20 20 20 76 61 72 69 61  ck ""..    varia
68a0: 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 20  ble currentfile 
68b0: 22 22 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65  ""..    variable
68c0: 20 6c 69 6e 65 63 6f 75 6e 74 65 72 20 30 0a 09   linecounter 0..
68d0: 7d 0a 09 70 72 6f 63 20 52 44 43 3a 3a 53 65 6e  }..proc RDC::Sen
68e0: 64 44 65 76 20 7b 20 63 6f 6d 6d 20 7d 20 7b 0a  dDev { comm } {.
68f0: 09 20 20 20 20 53 45 4e 44 44 45 56 42 4f 44 59  .    SENDDEVBODY
6900: 0a 09 7d 0a 09 70 72 6f 63 20 52 44 43 3a 3a 4d  ..}..proc RDC::M
6910: 65 61 73 75 72 65 54 69 6d 65 20 7b 20 6e 61 6d  easureTime { nam
6920: 65 20 6c 65 76 65 6c 20 74 69 6d 65 73 74 72 20  e level timestr 
6930: 7d 20 7b 0a 09 20 20 20 20 53 65 6e 64 44 65 76  } {..    SendDev
6940: 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
6950: 65 72 3a 3a 52 65 63 69 65 76 65 54 69 6d 65 46  er::RecieveTimeF
6960: 72 6f 6d 50 72 6f 67 72 61 6d 20 24 6e 61 6d 65  romProgram $name
6970: 20 24 6c 65 76 65 6c 20 5b 6c 69 6e 64 65 78 20   $level [lindex 
6980: 24 74 69 6d 65 73 74 72 20 30 5d 5d 0a 09 7d 0a  $timestr 0]]..}.
6990: 09 70 72 6f 63 20 52 44 43 3a 3a 43 6f 6e 74 69  .proc RDC::Conti
69a0: 6e 75 65 20 7b 7d 20 7b 0a 09 20 20 20 20 73 65  nue {} {..    se
69b0: 74 20 3a 3a 52 44 43 3a 3a 63 6f 64 65 20 22 22  t ::RDC::code ""
69c0: 0a 09 7d 0a 09 70 72 6f 63 20 52 44 43 3a 3a 45  ..}..proc RDC::E
69d0: 76 61 6c 20 7b 20 63 6f 6d 6d 20 7b 20 68 61 6e  val { comm { han
69e0: 64 6c 65 72 20 22 22 20 7d 20 7d 20 7b 0a 09 20  dler "" } } {.. 
69f0: 20 20 20 76 61 72 69 61 62 6c 65 20 65 76 61 6c     variable eval
6a00: 68 61 6e 64 6c 65 72 20 24 68 61 6e 64 6c 65 72  handler $handler
6a10: 0a 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a  ..    set ::RDC:
6a20: 3a 63 6f 64 65 20 24 63 6f 6d 6d 0a 09 20 20 20  :code $comm..   
6a30: 20 75 70 64 61 74 65 0a 09 7d 0a 09 70 72 6f 63   update..}..proc
6a40: 20 52 44 43 3a 3a 47 65 74 4c 61 73 74 56 69 73   RDC::GetLastVis
6a50: 69 74 65 64 20 7b 20 7d 20 7b 0a 09 20 20 20 20  ited { } {..    
6a60: 76 61 72 69 61 62 6c 65 20 64 61 74 61 0a 09 20  variable data.. 
6a70: 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78     if { [info ex
6a80: 69 73 74 73 20 64 61 74 61 28 76 69 73 69 74 65  ists data(visite
6a90: 64 2c 66 69 6c 65 6e 75 6d 29 5d 20 7d 20 7b 0a  d,filenum)] } {.
6aa0: 09 09 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 24  ..return [list $
6ab0: 64 61 74 61 28 76 69 73 69 74 65 64 2c 66 69 6c  data(visited,fil
6ac0: 65 6e 75 6d 29 20 24 64 61 74 61 28 76 69 73 69  enum) $data(visi
6ad0: 74 65 64 2c 6c 69 6e 65 29 5d 0a 09 20 20 20 20  ted,line)]..    
6ae0: 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 72 6e 20  } else { return 
6af0: 22 22 20 7d 0a 09 7d 0a 09 70 72 6f 63 20 52 44  "" }..}..proc RD
6b00: 43 3a 3a 46 20 7b 20 66 69 6c 65 6e 75 6d 20 6c  C::F { filenum l
6b10: 69 6e 65 20 7d 20 7b 0a 09 20 20 20 20 76 61 72  ine } {..    var
6b20: 69 61 62 6c 65 20 63 6f 64 65 0a 09 20 20 20 20  iable code..    
6b30: 76 61 72 69 61 62 6c 65 20 65 76 61 6c 68 61 6e  variable evalhan
6b40: 64 6c 65 72 0a 09 20 20 20 20 23 20 3d 3d 20 31  dler..    # == 1
6b50: 20 6e 65 78 74 20 3b 20 3d 3d 20 32 20 73 74 65   next ; == 2 ste
6b60: 70 20 3b 20 3d 3d 20 33 20 6e 65 78 74 66 75 6c  p ; == 3 nextful
6b70: 6c 20 3b 20 3d 3d 20 34 20 6e 65 78 74 72 65 74  l ; == 4 nextret
6b80: 75 72 6e 0a 09 20 20 20 20 76 61 72 69 61 62 6c  urn..    variabl
6b90: 65 20 73 74 6f 70 6e 65 78 74 0a 09 20 20 20 20  e stopnext..    
6ba0: 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 74 6f 0a  variable contto.
6bb0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 62 72  .    variable br
6bc0: 65 61 6b 73 0a 09 20 20 20 20 76 61 72 69 61 62  eaks..    variab
6bd0: 6c 65 20 74 72 61 63 65 73 0a 09 20 20 20 20 76  le traces..    v
6be0: 61 72 69 61 62 6c 65 20 74 72 61 63 65 64 5f 76  ariable traced_v
6bf0: 61 72 69 61 62 6c 65 73 0a 09 20 20 20 20 76 61  ariables..    va
6c00: 72 69 61 62 6c 65 20 6f 75 74 70 75 74 6c 69 6e  riable outputlin
6c10: 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20  e..    variable 
6c20: 6c 61 73 74 70 72 6f 63 73 74 61 63 6b 0a 09 20  lastprocstack.. 
6c30: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 6e 65     variable line
6c40: 63 6f 75 6e 74 65 72 0a 0a 09 20 20 20 20 76 61  counter...    va
6c50: 72 69 61 62 6c 65 20 64 61 74 61 0a 09 20 20 20  riable data..   
6c60: 20 73 65 74 20 64 61 74 61 28 76 69 73 69 74 65   set data(visite
6c70: 64 2c 66 69 6c 65 6e 75 6d 29 20 24 66 69 6c 65  d,filenum) $file
6c80: 6e 75 6d 0a 09 20 20 20 20 73 65 74 20 64 61 74  num..    set dat
6c90: 61 28 76 69 73 69 74 65 64 2c 6c 69 6e 65 29 20  a(visited,line) 
6ca0: 24 6c 69 6e 65 0a 09 20 20 20 20 0a 09 20 20 20  $line..    ..   
6cb0: 20 73 65 74 20 70 72 6f 63 73 74 61 63 6b 20 22   set procstack "
6cc0: 22 0a 09 20 20 20 20 73 65 74 20 70 72 6f 63 6e  "..    set procn
6cd0: 61 6d 65 20 22 22 0a 09 20 20 20 20 66 6f 72 20  ame ""..    for 
6ce0: 7b 20 73 65 74 20 69 20 5b 65 78 70 72 20 7b 5b  { set i [expr {[
6cf0: 69 6e 66 6f 20 6c 65 76 65 6c 5d 2d 31 7d 5d 20  info level]-1}] 
6d00: 7d 20 7b 20 24 69 20 3e 3d 20 31 20 7d 20 7b 20  } { $i >= 1 } { 
6d10: 69 6e 63 72 20 69 20 2d 31 20 7d 20 7b 0a 09 09  incr i -1 } {...
6d20: 73 65 74 20 70 72 6f 67 6e 61 6d 65 4c 20 5b 6c  set prognameL [l
6d30: 69 6e 64 65 78 20 5b 69 6e 66 6f 20 6c 65 76 65  index [info leve
6d40: 6c 20 2d 24 69 5d 20 30 5d 0a 09 09 73 65 74 20  l -$i] 0]...set 
6d50: 70 72 6f 63 6e 61 6d 65 4c 20 5b 75 70 6c 65 76  procnameL [uplev
6d60: 65 6c 20 24 69 20 5b 6c 69 73 74 20 6e 61 6d 65  el $i [list name
6d70: 73 70 61 63 65 20 77 68 69 63 68 20 2d 63 6f 6d  space which -com
6d80: 6d 61 6e 64 20 24 70 72 6f 67 6e 61 6d 65 4c 5d  mand $prognameL]
6d90: 5d 0a 09 09 6c 61 70 70 65 6e 64 20 70 72 6f 63  ]...lappend proc
6da0: 73 74 61 63 6b 20 24 70 72 6f 63 6e 61 6d 65 4c  stack $procnameL
6db0: 0a 09 09 69 66 20 7b 20 24 69 20 3d 3d 20 31 20  ...if { $i == 1 
6dc0: 7d 20 7b 20 73 65 74 20 70 72 6f 63 6e 61 6d 65  } { set procname
6dd0: 20 24 70 72 6f 63 6e 61 6d 65 4c 20 7d 0a 09 20   $procnameL }.. 
6de0: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 73 74     }..    set st
6df0: 6f 70 20 30 0a 09 20 20 20 20 73 65 74 20 62 72  op 0..    set br
6e00: 65 61 6b 6e 75 6d 20 30 0a 09 20 20 20 20 73 65  eaknum 0..    se
6e10: 74 20 63 6f 6e 64 69 6e 66 6f 20 22 22 0a 09 20  t condinfo "".. 
6e20: 20 20 20 73 65 74 20 6c 65 6e 20 5b 6c 6c 65 6e     set len [llen
6e30: 67 74 68 20 24 70 72 6f 63 73 74 61 63 6b 5d 0a  gth $procstack].
6e40: 09 20 20 20 20 73 65 74 20 6c 61 73 74 6c 65 6e  .    set lastlen
6e50: 20 5b 6c 6c 65 6e 67 74 68 20 24 6c 61 73 74 70   [llength $lastp
6e60: 72 6f 63 73 74 61 63 6b 5d 0a 09 20 20 20 20 73  rocstack]..    s
6e70: 77 69 74 63 68 20 24 73 74 6f 70 6e 65 78 74 20  witch $stopnext 
6e80: 7b 0a 09 09 31 20 7b 0a 09 09 20 20 20 20 73 65  {...1 {...    se
6e90: 74 20 6c 6d 31 20 5b 65 78 70 72 20 7b 24 6c 65  t lm1 [expr {$le
6ea0: 6e 2d 31 7d 5d 0a 09 09 20 20 20 20 69 66 20 7b  n-1}]...    if {
6eb0: 20 24 6c 65 6e 20 3c 3d 20 24 6c 61 73 74 6c 65   $len <= $lastle
6ec0: 6e 20 26 26 20 24 70 72 6f 63 73 74 61 63 6b 20  n && $procstack 
6ed0: 3d 3d 20 5b 6c 72 61 6e 67 65 20 24 6c 61 73 74  == [lrange $last
6ee0: 70 72 6f 63 73 74 61 63 6b 20 30 20 24 6c 6d 31  procstack 0 $lm1
6ef0: 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20  ] } {...        
6f00: 73 65 74 20 73 74 6f 70 20 31 0a 09 09 20 20 20  set stop 1...   
6f10: 20 7d 0a 09 09 7d 0a 09 09 32 20 7b 0a 09 09 20   }...}...2 {... 
6f20: 20 20 20 69 66 20 7b 20 24 6c 65 6e 20 3c 20 24     if { $len < $
6f30: 6c 61 73 74 6c 65 6e 20 7d 20 7b 20 73 65 74 20  lastlen } { set 
6f40: 6c 6d 31 20 5b 65 78 70 72 20 7b 24 6c 65 6e 2d  lm1 [expr {$len-
6f50: 31 7d 5d 0a 09 09 20 20 20 20 7d 20 65 6c 73 65  1}]...    } else
6f60: 20 7b 20 73 65 74 20 6c 6d 31 20 5b 65 78 70 72   { set lm1 [expr
6f70: 20 7b 24 6c 61 73 74 6c 65 6e 2d 31 7d 5d 20 7d   {$lastlen-1}] }
6f80: 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 6c 72 61  ...    if { [lra
6f90: 6e 67 65 20 24 70 72 6f 63 73 74 61 63 6b 20 30  nge $procstack 0
6fa0: 20 24 6c 6d 31 5d 20 3d 3d 20 5b 6c 72 61 6e 67   $lm1] == [lrang
6fb0: 65 20 24 6c 61 73 74 70 72 6f 63 73 74 61 63 6b  e $lastprocstack
6fc0: 20 30 20 24 6c 6d 31 5d 20 7d 20 7b 0a 09 09 20   0 $lm1] } {... 
6fd0: 20 20 20 20 20 20 20 73 65 74 20 73 74 6f 70 20         set stop 
6fe0: 31 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09  1...    }...}...
6ff0: 33 20 7b 20 73 65 74 20 73 74 6f 70 20 31 20 7d  3 { set stop 1 }
7000: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20  ..    }..    if 
7010: 7b 20 5b 6c 69 6e 64 65 78 20 24 63 6f 6e 74 74  { [lindex $contt
7020: 6f 20 30 5d 20 3d 3d 20 24 66 69 6c 65 6e 75 6d  o 0] == $filenum
7030: 20 26 26 20 5b 6c 69 6e 64 65 78 20 24 63 6f 6e   && [lindex $con
7040: 74 74 6f 20 31 5d 20 3d 3d 20 24 6c 69 6e 65 20  tto 1] == $line 
7050: 7d 20 7b 0a 09 09 69 66 20 7b 20 24 6c 65 6e 20  } {...if { $len 
7060: 3e 20 24 6c 61 73 74 6c 65 6e 20 26 26 20 5b 6c  > $lastlen && [l
7070: 69 6e 64 65 78 20 24 70 72 6f 63 73 74 61 63 6b  index $procstack
7080: 20 65 6e 64 5d 20 65 71 20 5b 6c 69 6e 64 65 78   end] eq [lindex
7090: 20 24 6c 61 73 74 70 72 6f 63 73 74 61 63 6b 20   $lastprocstack 
70a0: 65 6e 64 5d 20 7d 20 7b 0a 09 09 20 20 20 20 23  end] } {...    #
70b0: 20 6e 6f 74 68 69 6e 67 0a 09 09 7d 20 65 6c 73   nothing...} els
70c0: 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 73 74  e {...    set st
70d0: 6f 70 20 31 0a 09 09 20 20 20 20 73 65 74 20 63  op 1...    set c
70e0: 6f 6e 74 74 6f 20 22 22 0a 09 09 7d 0a 09 20 20  ontto ""...}..  
70f0: 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b 69    }..    if { [i
7100: 6e 66 6f 20 65 78 69 73 74 73 20 62 72 65 61 6b  nfo exists break
7110: 73 28 24 66 69 6c 65 6e 75 6d 2c 24 6c 69 6e 65  s($filenum,$line
7120: 29 5d 20 7d 20 7b 0a 09 09 73 65 74 20 62 72 65  )] } {...set bre
7130: 61 6b 6e 75 6d 20 5b 6c 69 6e 64 65 78 20 24 62  aknum [lindex $b
7140: 72 65 61 6b 73 28 24 66 69 6c 65 6e 75 6d 2c 24  reaks($filenum,$
7150: 6c 69 6e 65 29 20 30 5d 0a 09 09 73 65 74 20 63  line) 0]...set c
7160: 6f 6e 64 20 5b 6c 69 6e 64 65 78 20 24 62 72 65  ond [lindex $bre
7170: 61 6b 73 28 24 66 69 6c 65 6e 75 6d 2c 24 6c 69  aks($filenum,$li
7180: 6e 65 29 20 31 5d 0a 09 09 69 66 20 7b 20 24 63  ne) 1]...if { $c
7190: 6f 6e 64 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09  ond == "" } {...
71a0: 20 20 20 20 73 65 74 20 73 74 6f 70 20 31 0a 09      set stop 1..
71b0: 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20  .} else {...    
71c0: 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 5b  set err [catch [
71d0: 6c 69 73 74 20 75 70 6c 65 76 65 6c 20 31 20 5b  list uplevel 1 [
71e0: 6c 69 73 74 20 65 78 70 72 20 24 63 6f 6e 64 5d  list expr $cond]
71f0: 5d 20 63 6f 6e 64 69 6e 66 6f 5d 0a 09 09 20 20  ] condinfo]...  
7200: 20 20 69 66 20 7b 20 24 65 72 72 20 7c 7c 20 24    if { $err || $
7210: 63 6f 6e 64 69 6e 66 6f 20 21 3d 20 30 20 7d 20  condinfo != 0 } 
7220: 7b 20 73 65 74 20 73 74 6f 70 20 31 20 7d 0a 09  { set stop 1 }..
7230: 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66  .}..    }..    f
7240: 6f 72 65 61 63 68 20 74 72 61 63 65 20 24 74 72  oreach trace $tr
7250: 61 63 65 73 20 7b 0a 09 09 73 65 74 20 63 6f 6e  aces {...set con
7260: 64 20 5b 6c 69 6e 64 65 78 20 24 74 72 61 63 65  d [lindex $trace
7270: 20 31 5d 0a 09 09 69 66 20 7b 20 5b 72 65 67 65   1]...if { [rege
7280: 78 70 20 7b 5e 5c 73 2a 76 61 72 69 61 62 6c 65  xp {^\s*variable
7290: 5c 73 2b 28 2e 2a 29 7d 20 24 63 6f 6e 64 20 7b  \s+(.*)} $cond {
72a0: 7d 20 76 61 72 6e 61 6d 65 5d 20 7d 20 7b 0a 09  } varname] } {..
72b0: 09 20 20 20 20 73 65 74 20 62 72 65 61 6b 6e 75  .    set breaknu
72c0: 6d 20 5b 6c 69 6e 64 65 78 20 24 74 72 61 63 65  m [lindex $trace
72d0: 20 30 5d 0a 09 09 20 20 20 20 73 65 74 20 65 78   0]...    set ex
72e0: 69 73 74 73 20 5b 75 70 6c 65 76 65 6c 20 31 20  ists [uplevel 1 
72f0: 5b 6c 69 73 74 20 69 6e 66 6f 20 65 78 69 73 74  [list info exist
7300: 73 20 24 76 61 72 6e 61 6d 65 5d 5d 0a 09 09 20  s $varname]]... 
7310: 20 20 20 73 65 74 20 65 78 69 73 74 65 64 20 5b     set existed [
7320: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 72 61 63  info exists trac
7330: 65 64 5f 76 61 72 69 61 62 6c 65 73 28 24 76 61  ed_variables($va
7340: 72 6e 61 6d 65 29 5d 0a 09 09 20 20 20 20 69 66  rname)]...    if
7350: 20 7b 20 24 65 78 69 73 74 73 20 7d 20 7b 0a 09   { $exists } {..
7360: 09 20 20 20 20 20 20 20 20 73 65 74 20 76 20 5b  .        set v [
7370: 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 74 20  uplevel 1 [list 
7380: 73 65 74 20 24 76 61 72 6e 61 6d 65 5d 5d 0a 09  set $varname]]..
7390: 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 21 24  .        if { !$
73a0: 65 78 69 73 74 65 64 20 7d 20 7b 0a 09 09 20 20  existed } {...  
73b0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 72            set tr
73c0: 61 63 65 64 5f 76 61 72 69 61 62 6c 65 73 28 24  aced_variables($
73d0: 76 61 72 6e 61 6d 65 29 20 24 76 0a 09 09 20 20  varname) $v...  
73e0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63 6f            set co
73f0: 6e 64 69 6e 66 6f 20 22 76 61 72 69 61 62 6c 65  ndinfo "variable
7400: 20 27 24 76 61 72 6e 61 6d 65 27 20 68 61 73 20   '$varname' has 
7410: 62 65 65 6e 20 63 72 65 61 74 65 64 22 0a 09 09  been created"...
7420: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
7430: 73 74 6f 70 20 31 0a 09 09 20 20 20 20 20 20 20  stop 1...       
7440: 20 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20 20       break...   
7450: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09       } else {...
7460: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
7470: 6f 6c 64 5f 76 20 24 74 72 61 63 65 64 5f 76 61  old_v $traced_va
7480: 72 69 61 62 6c 65 73 28 24 76 61 72 6e 61 6d 65  riables($varname
7490: 29 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  )...            
74a0: 73 65 74 20 74 72 61 63 65 64 5f 76 61 72 69 61  set traced_varia
74b0: 62 6c 65 73 28 24 76 61 72 6e 61 6d 65 29 20 24  bles($varname) $
74c0: 76 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  v...            
74d0: 69 66 20 7b 20 24 76 20 21 3d 20 24 6f 6c 64 5f  if { $v != $old_
74e0: 76 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20  v } {...        
74f0: 20 20 20 20 20 20 20 20 73 65 74 20 63 6f 6e 64          set cond
7500: 69 6e 66 6f 20 22 76 61 72 69 61 62 6c 65 20 27  info "variable '
7510: 24 76 61 72 6e 61 6d 65 27 20 68 61 73 20 63 68  $varname' has ch
7520: 61 6e 67 65 64 20 76 61 6c 75 65 20 74 6f 20 27  anged value to '
7530: 24 76 27 22 0a 09 09 20 20 20 20 20 20 20 20 20  $v'"...         
7540: 20 20 20 20 20 20 20 73 65 74 20 73 74 6f 70 20         set stop 
7550: 31 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  1...            
7560: 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20 20 20      break...    
7570: 20 20 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20          }...    
7580: 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 20 65 6c      }...    } el
7590: 73 65 69 66 20 7b 20 24 65 78 69 73 74 65 64 20  seif { $existed 
75a0: 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 75 6e  } {...        un
75b0: 73 65 74 20 74 72 61 63 65 64 5f 76 61 72 69 61  set traced_varia
75c0: 62 6c 65 73 28 24 76 61 72 6e 61 6d 65 29 0a 09  bles($varname)..
75d0: 09 20 20 20 20 20 20 20 20 73 65 74 20 63 6f 6e  .        set con
75e0: 64 69 6e 66 6f 20 22 76 61 72 69 61 62 6c 65 20  dinfo "variable 
75f0: 27 24 76 61 72 6e 61 6d 65 27 20 68 61 73 20 62  '$varname' has b
7600: 65 65 6e 20 64 65 6c 65 74 65 64 22 0a 09 09 20  een deleted"... 
7610: 20 20 20 20 20 20 20 73 65 74 20 73 74 6f 70 20         set stop 
7620: 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 61  1...        brea
7630: 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d 20 65 6c  k...    }...} el
7640: 73 65 69 66 20 7b 20 24 63 6f 6e 64 20 6e 65 20  seif { $cond ne 
7650: 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74  "" } {...    set
7660: 20 65 72 72 20 5b 63 61 74 63 68 20 5b 6c 69 73   err [catch [lis
7670: 74 20 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73  t uplevel 1 [lis
7680: 74 20 65 78 70 72 20 24 63 6f 6e 64 5d 5d 20 63  t expr $cond]] c
7690: 6f 6e 64 69 6e 66 6f 5d 0a 09 09 20 20 20 20 69  ondinfo]...    i
76a0: 66 20 7b 20 24 65 72 72 20 7c 7c 20 24 63 6f 6e  f { $err || $con
76b0: 64 69 6e 66 6f 20 21 3d 20 30 20 7d 20 7b 0a 09  dinfo != 0 } {..
76c0: 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 21 24  .        if { !$
76d0: 65 72 72 20 7d 20 7b 0a 09 09 20 20 20 20 20 20  err } {...      
76e0: 20 20 20 20 20 20 73 65 74 20 63 6f 6e 64 69 6e        set condin
76f0: 66 6f 20 22 24 63 6f 6e 64 20 3d 20 24 63 6f 6e  fo "$cond = $con
7700: 64 69 6e 66 6f 22 0a 09 09 20 20 20 20 20 20 20  dinfo"...       
7710: 20 7d 0a 09 09 20 20 20 20 20 20 20 20 73 65 74   }...        set
7720: 20 62 72 65 61 6b 6e 75 6d 20 5b 6c 69 6e 64 65   breaknum [linde
7730: 78 20 24 74 72 61 63 65 20 30 5d 0a 09 09 20 20  x $trace 0]...  
7740: 20 20 20 20 20 20 73 65 74 20 73 74 6f 70 20 31        set stop 1
7750: 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 61 6b  ...        break
7760: 0a 09 09 20 20 20 20 7d 0a 09 09 7d 20 65 6c 73  ...    }...} els
7770: 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 73 74  e {...    set st
7780: 6f 70 20 31 0a 09 09 20 20 20 20 62 72 65 61 6b  op 1...    break
7790: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20  ...}..    }..   
77a0: 20 69 6e 63 72 20 6c 69 6e 65 63 6f 75 6e 74 65   incr linecounte
77b0: 72 0a 09 20 20 20 20 69 66 20 7b 20 24 6c 69 6e  r..    if { $lin
77c0: 65 63 6f 75 6e 74 65 72 20 3e 3d 20 35 30 30 20  ecounter >= 500 
77d0: 7d 20 7b 0a 09 09 52 44 43 3a 3a 53 65 6e 64 44  } {...RDC::SendD
77e0: 65 76 20 75 70 64 61 74 65 0a 09 09 73 65 74 20  ev update...set 
77f0: 6c 69 6e 65 63 6f 75 6e 74 65 72 20 30 0a 09 20  linecounter 0.. 
7800: 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 21     }..    if { !
7810: 24 73 74 6f 70 20 7d 20 7b 0a 09 09 69 66 20 7b  $stop } {...if {
7820: 20 24 6f 75 74 70 75 74 6c 69 6e 65 20 7d 20 7b   $outputline } {
7830: 0a 09 09 20 20 20 20 73 65 74 20 70 72 6f 63 6e  ...    set procn
7840: 61 6d 65 20 5b 6c 69 6e 64 65 78 20 5b 69 6e 66  ame [lindex [inf
7850: 6f 20 6c 65 76 65 6c 20 2d 31 5d 20 30 5d 0a 09  o level -1] 0]..
7860: 09 20 20 20 20 53 65 6e 64 44 65 76 20 5b 6c 69  .    SendDev [li
7870: 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  st RamDebugger::
7880: 52 65 63 69 65 76 65 46 72 6f 6d 50 72 6f 67 72  RecieveFromProgr
7890: 61 6d 20 6f 75 74 70 75 74 20 5c 0a 09 09 20 20  am output \...  
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
78b0: 66 69 6c 65 6e 75 6d 20 24 6c 69 6e 65 20 24 70  filenum $line $p
78c0: 72 6f 63 6e 61 6d 65 20 22 22 20 22 22 5d 0a 09  rocname "" ""]..
78d0: 09 20 20 20 20 0a 09 09 7d 0a 09 09 72 65 74 75  .    ...}...retu
78e0: 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73  rn..    }..    s
78f0: 65 74 20 6c 61 73 74 70 72 6f 63 73 74 61 63 6b  et lastprocstack
7900: 20 24 70 72 6f 63 73 74 61 63 6b 0a 09 20 20 20   $procstack..   
7910: 20 73 65 74 20 74 65 78 74 6c 69 6e 65 20 22 22   set textline ""
7920: 0a 09 20 20 20 20 73 65 74 20 63 6f 64 65 20 22  ..    set code "
7930: 22 0a 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43  "..    set ::RDC
7940: 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 24 3a 3a 65  ::errorInfo $::e
7950: 72 72 6f 72 49 6e 66 6f 0a 09 20 20 20 20 73 65  rrorInfo..    se
7960: 74 20 3a 3a 52 44 43 3a 3a 65 72 72 20 5b 63 61  t ::RDC::err [ca
7970: 74 63 68 20 7b 0a 09 09 72 65 67 65 78 70 20 22  tch {...regexp "
7980: 52 44 43 3a 3a 46 5c 5c 73 2b 24 66 69 6c 65 6e  RDC::F\\s+$filen
7990: 75 6d 2b 5c 5c 73 2b 24 6c 69 6e 65 5c 5c 73 2b  um+\\s+$line\\s+
79a0: 3b 20 28 5c 5b 5e 5c 6e 5d 2a 29 22 20 5b 69 6e  ; (\[^\n]*)" [in
79b0: 66 6f 20 62 6f 64 79 20 24 70 72 6f 63 6e 61 6d  fo body $procnam
79c0: 65 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 20 71 74  e] {} \...    qt
79d0: 65 78 74 6c 69 6e 65 0a 09 20 20 20 20 7d 5d 0a  extline..    }].
79e0: 09 20 20 20 20 69 66 20 7b 20 24 3a 3a 52 44 43  .    if { $::RDC
79f0: 3a 3a 65 72 72 20 7d 20 7b 20 73 65 74 20 3a 3a  ::err } { set ::
7a00: 65 72 72 6f 72 49 6e 66 6f 20 24 3a 3a 52 44 43  errorInfo $::RDC
7a10: 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 7d 0a 0a 09  ::errorInfo }...
7a20: 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 65 76      RDC::SendDev
7a30: 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
7a40: 65 72 3a 3a 52 65 63 69 65 76 65 46 72 6f 6d 50  er::RecieveFromP
7a50: 72 6f 67 72 61 6d 20 24 62 72 65 61 6b 6e 75 6d  rogram $breaknum
7a60: 20 24 66 69 6c 65 6e 75 6d 20 5c 0a 09 09 20 20   $filenum \...  
7a70: 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 69 6e              $lin
7a80: 65 20 24 70 72 6f 63 6e 61 6d 65 20 24 74 65 78  e $procname $tex
7a90: 74 6c 69 6e 65 20 24 63 6f 6e 64 69 6e 66 6f 5d  tline $condinfo]
7aa0: 0a 09 20 20 20 20 77 68 69 6c 65 20 31 20 7b 0a  ..    while 1 {.
7ab0: 09 09 69 66 20 7b 20 24 63 6f 64 65 20 3d 3d 20  ..if { $code == 
7ac0: 22 22 20 7d 20 7b 20 76 77 61 69 74 20 3a 3a 52  "" } { vwait ::R
7ad0: 44 43 3a 3a 63 6f 64 65 20 7d 0a 09 09 69 66 20  DC::code }...if 
7ae0: 7b 20 24 63 6f 64 65 20 3d 3d 20 22 22 20 7d 20  { $code == "" } 
7af0: 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 24 73 74  {...    if { $st
7b00: 6f 70 6e 65 78 74 20 3d 3d 20 34 20 7d 20 7b 0a  opnext == 4 } {.
7b10: 09 09 20 20 20 20 20 20 20 20 73 65 74 20 73 74  ..        set st
7b20: 6f 70 6e 65 78 74 20 33 0a 09 09 20 20 20 20 20  opnext 3...     
7b30: 20 20 20 72 65 74 75 72 6e 20 2d 63 6f 64 65 20     return -code 
7b40: 72 65 74 75 72 6e 0a 09 09 20 20 20 20 7d 0a 09  return...    }..
7b50: 09 20 20 20 20 72 65 74 75 72 6e 0a 09 09 7d 0a  .    return...}.
7b60: 09 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68  ..set err [catch
7b70: 20 7b 20 75 70 6c 65 76 65 6c 20 31 20 24 63 6f   { uplevel 1 $co
7b80: 64 65 20 7d 20 72 65 74 75 72 6e 76 61 6c 75 65  de } returnvalue
7b90: 5d 0a 09 09 73 65 74 20 63 6f 64 65 20 22 22 0a  ]...set code "".
7ba0: 09 09 69 66 20 7b 20 24 65 76 61 6c 68 61 6e 64  ..if { $evalhand
7bb0: 6c 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09  ler != "" } {...
7bc0: 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 65 76      RDC::SendDev
7bd0: 20 22 24 65 76 61 6c 68 61 6e 64 6c 65 72 20 5b   "$evalhandler [
7be0: 6c 69 73 74 20 5b 6c 69 73 74 20 24 65 72 72 20  list [list $err 
7bf0: 24 72 65 74 75 72 6e 76 61 6c 75 65 5d 5d 22 0a  $returnvalue]]".
7c00: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20  ..} else {...   
7c10: 20 52 44 43 3a 3a 53 65 6e 64 44 65 76 20 5b 6c   RDC::SendDev [l
7c20: 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
7c30: 3a 52 65 63 69 65 76 65 46 72 6f 6d 50 72 6f 67  :RecieveFromProg
7c40: 72 61 6d 45 78 70 72 20 24 65 72 72 20 24 72 65  ramExpr $err $re
7c50: 74 75 72 6e 76 61 6c 75 65 5d 0a 09 09 7d 0a 09  turnvalue]...}..
7c60: 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b      }..}..if { [
7c70: 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a  info commands ::
7c80: 52 44 43 3a 3a 62 67 65 72 72 6f 72 5f 62 61 73  RDC::bgerror_bas
7c90: 65 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20  e] == "" } {..  
7ca0: 20 20 63 61 74 63 68 20 7b 20 61 75 74 6f 5f 69    catch { auto_i
7cb0: 6d 70 6f 72 74 20 3a 3a 62 67 65 72 72 6f 72 20  mport ::bgerror 
7cc0: 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66  }..    if { [inf
7cd0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a 62 67 65  o commands ::bge
7ce0: 72 72 6f 72 5d 20 21 3d 20 22 22 20 7d 20 7b 0a  rror] != "" } {.
7cf0: 09 09 72 65 6e 61 6d 65 20 3a 3a 62 67 65 72 72  ..rename ::bgerr
7d00: 6f 72 20 3a 3a 52 44 43 3a 3a 62 67 65 72 72 6f  or ::RDC::bgerro
7d10: 72 5f 62 61 73 65 0a 09 20 20 20 20 7d 0a 09 20  r_base..    }.. 
7d20: 20 20 20 70 72 6f 63 20 3a 3a 62 67 65 72 72 6f     proc ::bgerro
7d30: 72 20 65 72 72 20 7b 0a 09 09 52 44 43 3a 3a 53  r err {...RDC::S
7d40: 65 6e 64 44 65 76 20 5b 6c 69 73 74 20 52 61 6d  endDev [list Ram
7d50: 44 65 62 75 67 67 65 72 3a 3a 52 65 63 69 65 76  Debugger::Reciev
7d60: 65 45 72 72 6f 72 46 72 6f 6d 50 72 6f 67 72 61  eErrorFromProgra
7d70: 6d 20 24 65 72 72 20 24 3a 3a 65 72 72 6f 72 49  m $err $::errorI
7d80: 6e 66 6f 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09  nfo]..    }..}..
7d90: 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61  if { [info comma
7da0: 6e 64 73 20 3a 3a 52 44 43 3a 3a 70 75 74 73 5f  nds ::RDC::puts_
7db0: 62 61 73 65 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a  base] == "" } {.
7dc0: 09 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 70 75  .    rename ::pu
7dd0: 74 73 20 3a 3a 52 44 43 3a 3a 70 75 74 73 5f 62  ts ::RDC::puts_b
7de0: 61 73 65 0a 09 20 20 20 20 70 72 6f 63 20 3a 3a  ase..    proc ::
7df0: 70 75 74 73 20 61 72 67 73 20 7b 0a 09 09 73 65  puts args {...se
7e00: 74 20 61 72 67 73 4e 20 24 61 72 67 73 0a 09 09  t argsN $args...
7e10: 73 65 74 20 68 61 73 6e 65 77 6c 69 6e 65 20 31  set hasnewline 1
7e20: 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20  ...if { [lindex 
7e30: 24 61 72 67 73 4e 20 30 5d 20 3d 3d 20 22 2d 6e  $argsN 0] == "-n
7e40: 6f 6e 65 77 6c 69 6e 65 22 20 7d 20 7b 0a 09 09  onewline" } {...
7e50: 20 20 20 20 73 65 74 20 68 61 73 6e 65 77 6c 69      set hasnewli
7e60: 6e 65 20 30 0a 09 09 20 20 20 20 73 65 74 20 61  ne 0...    set a
7e70: 72 67 73 4e 20 5b 6c 72 61 6e 67 65 20 24 61 72  rgsN [lrange $ar
7e80: 67 73 4e 20 31 20 65 6e 64 5d 0a 09 09 7d 0a 09  gsN 1 end]...}..
7e90: 09 73 65 74 20 63 68 61 6e 6e 65 6c 49 64 20 73  .set channelId s
7ea0: 74 64 6f 75 74 0a 09 09 69 66 20 7b 20 5b 6c 6c  tdout...if { [ll
7eb0: 65 6e 67 74 68 20 24 61 72 67 73 4e 5d 20 3d 3d  ength $argsN] ==
7ec0: 20 32 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74   2 } {...    set
7ed0: 20 63 68 61 6e 6e 65 6c 49 64 20 5b 6c 69 6e 64   channelId [lind
7ee0: 65 78 20 24 61 72 67 73 4e 20 30 5d 0a 09 09 20  ex $argsN 0]... 
7ef0: 20 20 20 73 65 74 20 61 72 67 73 4e 20 5b 6c 72     set argsN [lr
7f00: 61 6e 67 65 20 24 61 72 67 73 4e 20 31 20 65 6e  ange $argsN 1 en
7f10: 64 5d 0a 09 09 7d 0a 09 09 69 66 20 7b 20 5b 6c  d]...}...if { [l
7f20: 6c 65 6e 67 74 68 20 24 61 72 67 73 4e 5d 20 3d  length $argsN] =
7f30: 3d 20 31 20 26 26 20 5b 72 65 67 65 78 70 20 7b  = 1 && [regexp {
7f40: 73 74 64 6f 75 74 7c 73 74 64 65 72 72 7d 20 24  stdout|stderr} $
7f50: 63 68 61 6e 6e 65 6c 49 64 5d 20 7d 20 7b 0a 09  channelId] } {..
7f60: 09 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 65  .    RDC::SendDe
7f70: 76 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  v [list RamDebug
7f80: 67 65 72 3a 3a 52 65 63 69 65 76 65 4f 75 74 70  ger::RecieveOutp
7f90: 75 74 46 72 6f 6d 50 72 6f 67 72 61 6d 20 24 63  utFromProgram $c
7fa0: 68 61 6e 6e 65 6c 49 64 20 5c 0a 09 09 20 20 20  hannelId \...   
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fc0: 20 20 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73     [lindex $args
7fd0: 4e 20 30 5d 20 24 68 61 73 6e 65 77 6c 69 6e 65  N 0] $hasnewline
7fe0: 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20  ]...} else {... 
7ff0: 20 20 20 65 76 61 6c 20 3a 3a 52 44 43 3a 3a 70     eval ::RDC::p
8000: 75 74 73 5f 62 61 73 65 20 24 61 72 67 73 0a 09  uts_base $args..
8010: 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66  .}..    }..}..if
8020: 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64   { [info command
8030: 73 20 3a 3a 52 44 43 3a 3a 69 6e 66 6f 70 72 6f  s ::RDC::infopro
8040: 63 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20  c] == "" } {..  
8050: 20 20 72 65 6e 61 6d 65 20 3a 3a 69 6e 66 6f 20    rename ::info 
8060: 3a 3a 52 44 43 3a 3a 69 6e 66 6f 70 72 6f 63 0a  ::RDC::infoproc.
8070: 09 20 20 20 20 70 72 6f 63 20 3a 3a 69 6e 66 6f  .    proc ::info
8080: 20 7b 20 61 72 67 73 20 7d 20 7b 0a 09 09 73 65   { args } {...se
8090: 74 20 72 65 74 76 61 6c 20 5b 75 70 6c 65 76 65  t retval [upleve
80a0: 6c 20 31 20 3a 3a 52 44 43 3a 3a 69 6e 66 6f 70  l 1 ::RDC::infop
80b0: 72 6f 63 20 24 61 72 67 73 5d 0a 09 09 69 66 20  roc $args]...if 
80c0: 7b 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  { [lindex $args 
80d0: 30 5d 20 3d 3d 20 22 73 63 72 69 70 74 22 20 26  0] == "script" &
80e0: 26 20 24 72 65 74 76 61 6c 20 3d 3d 20 22 22 20  & $retval == "" 
80f0: 7d 20 7b 0a 09 09 20 20 20 20 72 65 74 75 72 6e  } {...    return
8100: 20 24 3a 3a 52 44 43 3a 3a 63 75 72 72 65 6e 74   $::RDC::current
8110: 66 69 6c 65 0a 09 09 7d 0a 09 09 72 65 74 75 72  file...}...retur
8120: 6e 20 24 72 65 74 76 61 6c 0a 09 20 20 20 20 7d  n $retval..    }
8130: 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20  ..}..if { [info 
8140: 63 6f 6d 6d 61 6e 64 73 20 3a 3a 52 44 43 3a 3a  commands ::RDC::
8150: 73 6f 75 72 63 65 70 72 6f 63 5d 20 3d 3d 20 22  sourceproc] == "
8160: 22 20 7d 20 7b 0a 09 20 20 20 20 72 65 6e 61 6d  " } {..    renam
8170: 65 20 3a 3a 73 6f 75 72 63 65 20 3a 3a 52 44 43  e ::source ::RDC
8180: 3a 3a 73 6f 75 72 63 65 70 72 6f 63 0a 09 20 20  ::sourceproc..  
8190: 20 20 70 72 6f 63 20 3a 3a 73 6f 75 72 63 65 20    proc ::source 
81a0: 7b 20 61 72 67 73 20 7d 20 7b 0a 09 09 73 65 74  { args } {...set
81b0: 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e   file [file join
81c0: 20 5b 70 77 64 5d 20 5b 6c 69 6e 64 65 78 20 24   [pwd] [lindex $
81d0: 61 72 67 73 20 65 6e 64 5d 5d 0a 09 09 73 65 74  args end]]...set
81e0: 20 61 72 67 73 20 5b 6c 72 65 70 6c 61 63 65 20   args [lreplace 
81f0: 24 61 72 67 73 20 65 6e 64 20 65 6e 64 20 24 66  $args end end $f
8200: 69 6c 65 5d 0a 0a 09 09 73 65 74 20 72 65 74 76  ile]....set retv
8210: 61 6c 20 5b 52 44 43 3a 3a 53 65 6e 64 44 65 76  al [RDC::SendDev
8220: 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52   "RamDebugger::R
8230: 65 63 69 65 76 65 46 72 6f 6d 50 72 6f 67 72 61  ecieveFromProgra
8240: 6d 53 6f 75 72 63 65 20 24 61 72 67 73 22 5d 0a  mSource $args"].
8250: 09 09 69 66 20 7b 20 24 72 65 74 76 61 6c 20 21  ..if { $retval !
8260: 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 69  = "" } {...    i
8270: 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74  f { ![string mat
8280: 63 68 20 22 3a 3a 52 44 43 3a 3a 73 6f 75 72 63  ch "::RDC::sourc
8290: 65 70 72 6f 63 2a 22 20 24 72 65 74 76 61 6c 5d  eproc*" $retval]
82a0: 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73   } {...        s
82b0: 65 74 20 6f 6c 64 66 69 6c 65 20 5b 69 6e 66 6f  et oldfile [info
82c0: 20 73 63 72 69 70 74 5d 0a 09 09 20 20 20 20 20   script]...     
82d0: 20 20 20 23 20 63 61 74 63 68 20 69 73 20 68 65     # catch is he
82e0: 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 38  re for version 8
82f0: 2e 33 0a 09 09 20 20 20 20 20 20 20 20 63 61 74  .3...        cat
8300: 63 68 20 7b 20 69 6e 66 6f 20 73 63 72 69 70 74  ch { info script
8310: 20 24 66 69 6c 65 20 7d 0a 09 09 20 20 20 20 7d   $file }...    }
8320: 0a 09 09 20 20 20 20 75 70 6c 65 76 65 6c 20 31  ...    uplevel 1
8330: 20 24 72 65 74 76 61 6c 0a 09 09 20 20 20 20 69   $retval...    i
8340: 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74  f { ![string mat
8350: 63 68 20 22 3a 3a 52 44 43 3a 3a 73 6f 75 72 63  ch "::RDC::sourc
8360: 65 70 72 6f 63 2a 22 20 24 72 65 74 76 61 6c 5d  eproc*" $retval]
8370: 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 23   } {...        #
8380: 20 63 61 74 63 68 20 69 73 20 68 65 72 65 20 66   catch is here f
8390: 6f 72 20 76 65 72 73 69 6f 6e 20 38 2e 33 0a 09  or version 8.3..
83a0: 09 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b  .        catch {
83b0: 20 69 6e 66 6f 20 73 63 72 69 70 74 20 24 6f 6c   info script $ol
83c0: 64 66 69 6c 65 20 7d 0a 09 09 20 20 20 20 7d 0a  dfile }...    }.
83d0: 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  ..}..    }..    
83e0: 61 72 72 61 79 20 75 6e 73 65 74 20 74 72 61 63  array unset trac
83f0: 65 64 5f 76 61 72 69 61 62 6c 65 73 0a 09 7d 0a  ed_variables..}.
8400: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24      }.    if { $
8410: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
8420: 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 7b 0a   == "local" } {.
8430: 09 73 65 74 20 72 65 6d 6f 74 65 63 6f 6d 6d 20  .set remotecomm 
8440: 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73  [string map [lis
8450: 74 20 53 45 4e 44 44 45 56 42 4f 44 59 20 22 73  t SENDDEVBODY "s
8460: 65 6e 64 6d 61 73 74 65 72 20 5c 24 63 6f 6d 6d  endmaster \$comm
8470: 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  "] \...         
8480: 20 20 20 24 72 65 6d 6f 74 65 63 6f 6d 6d 5d 0a     $remotecomm].
8490: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24      } elseif { $
84a0: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
84b0: 20 3d 3d 20 22 6d 61 73 74 65 72 22 20 7d 20 7b   == "master" } {
84c0: 0a 09 73 65 74 20 72 65 6d 6f 74 65 63 6f 6d 6d  ..set remotecomm
84d0: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69   [string map [li
84e0: 73 74 20 53 45 4e 44 44 45 56 42 4f 44 59 20 22  st SENDDEVBODY "
84f0: 72 61 6d 64 65 62 75 67 67 65 72 20 65 76 61 6c  ramdebugger eval
8500: 20 5c 24 63 6f 6d 6d 22 5d 20 5c 0a 09 09 20 20   \$comm"] \...  
8510: 20 20 20 20 20 20 20 20 20 20 24 72 65 6d 6f 74            $remot
8520: 65 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 65 6c 73  ecomm].    } els
8530: 65 69 66 20 7b 20 20 24 72 65 6d 6f 74 65 73 65  eif {  $remotese
8540: 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62  rverType == "gdb
8550: 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d 6f 74  " } {..set remot
8560: 65 63 6f 6d 6d 20 22 73 65 74 20 63 6f 6e 66 69  ecomm "set confi
8570: 72 6d 20 6f 66 66 5c 6e 22 0a 09 61 70 70 65 6e  rm off\n"..appen
8580: 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 73 65  d remotecomm "se
8590: 74 20 62 72 65 61 6b 70 6f 69 6e 74 20 70 65 6e  t breakpoint pen
85a0: 64 69 6e 67 20 6f 6e 5c 6e 22 0a 09 61 70 70 65  ding on\n"..appe
85b0: 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 73  nd remotecomm "s
85c0: 65 74 20 70 72 69 6e 74 20 65 6c 65 6d 65 6e 74  et print element
85d0: 73 20 32 30 30 30 5c 6e 22 0a 09 6c 61 73 73 69  s 2000\n"..lassi
85e0: 67 6e 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d  gn $opts(program
85f0: 29 20 63 6d 64 20 64 69 72 20 61 72 67 73 0a 09  ) cmd dir args..
8600: 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 74  if { [file exist
8610: 73 20 24 64 69 72 5d 20 7d 20 7b 0a 09 20 20 20  s $dir] } {..   
8620: 20 61 70 70 65 6e 64 20 72 65 6d 6f 74 65 63 6f   append remoteco
8630: 6d 6d 20 22 63 64 20 5c 22 24 64 69 72 5c 22 5c  mm "cd \"$dir\"\
8640: 6e 22 0a 09 7d 0a 09 69 66 20 7b 20 5b 73 74 72  n"..}..if { [str
8650: 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20 24  ing is integer $
8660: 63 6d 64 5d 20 7d 20 7b 0a 09 20 20 20 20 61 70  cmd] } {..    ap
8670: 70 65 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20  pend remotecomm 
8680: 22 61 74 74 61 63 68 20 24 63 6d 64 5c 6e 22 0a  "attach $cmd\n".
8690: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 61  .} else {..    a
86a0: 70 70 65 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d  ppend remotecomm
86b0: 20 22 66 69 6c 65 20 5c 22 24 63 6d 64 5c 22 5c   "file \"$cmd\"\
86c0: 6e 22 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 69  n"..    if { [li
86d0: 6e 64 65 78 20 24 6f 70 74 73 28 70 72 6f 67 72  ndex $opts(progr
86e0: 61 6d 29 20 31 5d 20 21 3d 20 22 22 20 7d 20 7b  am) 1] != "" } {
86f0: 0a 09 09 61 70 70 65 6e 64 20 72 65 6d 6f 74 65  ...append remote
8700: 63 6f 6d 6d 20 22 73 65 74 20 61 72 67 73 20 24  comm "set args $
8710: 61 72 67 73 22 0a 09 20 20 20 20 7d 0a 09 7d 0a  args"..    }..}.
8720: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24      } elseif { $
8730: 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09 73 65  usecommR } {..se
8740: 74 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 5b 73 74  t remotecomm [st
8750: 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 53  ring map [list S
8760: 45 4e 44 44 45 56 42 4f 44 59 20 22 63 6f 6d 6d  ENDDEVBODY "comm
8770: 52 3a 3a 63 6f 6d 6d 20 73 65 6e 64 20 24 64 65  R::comm send $de
8780: 62 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d 20  buggerserverNum 
8790: 5c 24 63 6f 6d 6d 22 5d 20 5c 0a 09 09 20 20 20  \$comm"] \...   
87a0: 20 20 20 20 20 20 20 20 20 24 72 65 6d 6f 74 65           $remote
87b0: 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 65 6c 73 65  comm].    } else
87c0: 20 7b 0a 09 73 65 74 20 72 65 6d 6f 74 65 63 6f   {..set remoteco
87d0: 6d 6d 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b  mm [string map [
87e0: 6c 69 73 74 20 53 45 4e 44 44 45 56 42 4f 44 59  list SENDDEVBODY
87f0: 20 22 73 65 6e 64 20 5c 22 24 64 65 62 75 67 67   "send \"$debugg
8800: 65 72 73 65 72 76 65 72 5c 22 20 5c 24 63 6f 6d  erserver\" \$com
8810: 6d 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20  m"] \...        
8820: 20 20 20 20 24 72 65 6d 6f 74 65 63 6f 6d 6d 5d      $remotecomm]
8830: 0a 20 20 20 20 7d 0a 20 20 20 20 45 76 61 6c 52  .    }.    EvalR
8840: 65 6d 6f 74 65 20 24 72 65 6d 6f 74 65 63 6f 6d  emote $remotecom
8850: 6d 0a 20 20 20 20 63 61 74 63 68 20 7b 20 75 6e  m.    catch { un
8860: 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  set instrumented
8870: 66 69 6c 65 73 53 65 6e 74 20 7d 0a 0a 20 20 20  filesSent }..   
8880: 20 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73   if { $debuggers
8890: 74 61 74 65 20 3d 3d 20 22 22 20 7c 7c 20 24 64  tate == "" || $d
88a0: 65 62 75 67 67 65 72 73 74 61 74 65 20 3d 3d 20  ebuggerstate == 
88b0: 22 64 65 62 75 67 22 20 7d 20 7b 0a 09 73 65 74  "debug" } {..set
88c0: 20 64 65 62 75 67 67 65 72 73 74 61 74 65 20 64   debuggerstate d
88d0: 65 62 75 67 0a 09 55 70 64 61 74 65 52 65 6d 6f  ebug..UpdateRemo
88e0: 74 65 42 72 65 61 6b 73 0a 20 20 20 20 7d 0a 0a  teBreaks.    }..
88f0: 20 20 20 20 73 77 69 74 63 68 20 24 72 65 6d 6f      switch $remo
8900: 74 65 73 65 72 76 65 72 54 79 70 65 20 7b 0a 09  teserverType {..
8910: 72 65 6d 6f 74 65 20 2d 20 6d 61 73 74 65 72 20  remote - master 
8920: 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 63 75 72  {..    if { $cur
8930: 72 65 6e 74 66 69 6c 65 20 21 3d 20 22 22 20 7d  rentfile != "" }
8940: 20 7b 0a 09 09 72 6c 69 73 74 20 2d 71 75 69 65   {...rlist -quie
8950: 74 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 09  t $currentfile..
8960: 20 20 20 20 7d 0a 09 20 20 20 20 45 76 61 6c 52      }..    EvalR
8970: 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 20  emote [list set 
8980: 3a 3a 52 44 43 3a 3a 66 69 6e 69 73 68 65 64 5f  ::RDC::finished_
8990: 6c 6f 61 64 69 6e 67 5f 64 65 62 75 67 67 65 72  loading_debugger
89a0: 20 31 5d 0a 09 7d 0a 09 6c 6f 63 61 6c 20 7b 0a   1]..}..local {.
89b0: 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20  .    EvalRemote 
89c0: 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 3a  [list set ::RDC:
89d0: 3a 63 75 72 72 65 6e 74 66 69 6c 65 20 24 66 69  :currentfile $fi
89e0: 6c 65 74 6f 64 65 62 75 67 5d 0a 09 20 20 20 20  letodebug]..    
89f0: 73 65 74 20 74 6f 64 6f 20 22 5b 6c 69 73 74 20  set todo "[list 
8a00: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 6c 69  RamDebugger::rli
8a10: 73 74 20 2d 71 75 69 65 74 20 2d 61 73 6d 61 69  st -quiet -asmai
8a20: 6e 66 69 6c 65 20 24 66 69 6c 65 74 6f 64 65 62  nfile $filetodeb
8a30: 75 67 5d 3b 22 0a 09 20 20 20 20 61 70 70 65 6e  ug];"..    appen
8a40: 64 20 74 6f 64 6f 20 22 5b 6c 69 73 74 20 73 65  d todo "[list se
8a50: 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 63  t RamDebugger::c
8a60: 75 72 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72  urrentfile $curr
8a70: 65 6e 74 66 69 6c 65 5d 22 0a 09 20 20 20 20 61  entfile]"..    a
8a80: 66 74 65 72 20 69 64 6c 65 20 24 74 6f 64 6f 0a  fter idle $todo.
8a90: 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20  .    EvalRemote 
8aa0: 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 3a  [list set ::RDC:
8ab0: 3a 66 69 6e 69 73 68 65 64 5f 6c 6f 61 64 69 6e  :finished_loadin
8ac0: 67 5f 64 65 62 75 67 67 65 72 20 31 5d 0a 09 7d  g_debugger 1]..}
8ad0: 0a 09 67 64 62 20 7b 0a 09 20 20 20 20 6c 61 73  ..gdb {..    las
8ae0: 73 69 67 6e 20 24 6f 70 74 73 28 70 72 6f 67 72  sign $opts(progr
8af0: 61 6d 29 20 63 6d 64 20 64 69 72 20 61 72 67 73  am) cmd dir args
8b00: 0a 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69  ..    if { [stri
8b10: 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20 24 63  ng is integer $c
8b20: 6d 64 5d 20 7d 20 7b 0a 09 09 45 76 61 6c 52 65  md] } {...EvalRe
8b30: 6d 6f 74 65 20 22 63 6f 6e 74 69 6e 75 65 22 0a  mote "continue".
8b40: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
8b50: 45 76 61 6c 52 65 6d 6f 74 65 20 22 72 75 6e 22  EvalRemote "run"
8b60: 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d  ..    }..}.    }
8b70: 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 5f 20 22  .    return [_ "
8b80: 42 65 67 69 6e 20 64 65 62 75 67 67 69 6e 67 20  Begin debugging 
8b90: 6f 66 20 70 72 6f 67 72 61 6d 20 27 25 73 27 22  of program '%s'"
8ba0: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 5d 0a   $remoteserver].
8bb0: 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
8bc0: 67 65 72 3a 3a 72 65 76 61 6c 20 7b 20 61 72 67  ger::reval { arg
8bd0: 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  s } {.    variab
8be0: 6c 65 20 45 78 70 72 65 73 73 69 6f 6e 52 65 73  le ExpressionRes
8bf0: 75 6c 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ult.    variable
8c00: 20 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 20   debuggerstate. 
8c10: 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f     variable remo
8c20: 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20  teserverType.   
8c30: 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65   variable remote
8c40: 73 65 72 76 65 72 0a 0a 20 20 20 20 69 66 20 7b  server..    if {
8c50: 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20   $debuggerstate 
8c60: 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a 09 65  == "time" } {..e
8c70: 72 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 6e 64  rror [_ "Command
8c80: 20 72 65 76 61 6c 20 63 61 6e 6e 6f 74 20 62 65   reval cannot be
8c90: 20 75 73 65 64 20 69 6e 20 27 74 69 6d 65 27 20   used in 'time' 
8ca0: 6d 6f 64 65 2e 20 43 68 65 63 6b 20 72 74 69 6d  mode. Check rtim
8cb0: 65 22 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  e"].    }..    s
8cc0: 65 74 20 75 73 61 67 65 73 74 72 69 6e 67 20 7b  et usagestring {
8cd0: 75 73 61 67 65 3a 20 72 65 76 61 6c 20 3f 73 77  usage: reval ?sw
8ce0: 69 74 63 68 65 73 3f 20 61 72 67 20 3f 61 72 67  itches? arg ?arg
8cf0: 2e 2e 2e 3f 0a 09 2d 68 3a 20 20 20 20 20 20 20  ...?..-h:       
8d00: 20 20 20 20 64 69 73 70 6c 61 79 73 20 75 73 61      displays usa
8d10: 67 65 0a 09 2d 6e 6f 6e 69 63 65 3a 20 20 20 20  ge..-nonice:    
8d20: 20 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20    return a list 
8d30: 77 69 74 68 20 61 6e 20 69 6e 74 65 67 65 72 20  with an integer 
8d40: 6f 66 20 74 68 65 20 65 72 72 6f 72 20 61 6e 64  of the error and
8d50: 20 74 68 65 20 73 74 72 69 6e 67 0a 09 2d 68 61   the string..-ha
8d60: 6e 64 6c 65 72 20 63 6f 6d 6d 3a 20 72 65 74 75  ndler comm: retu
8d70: 72 6e 73 20 69 6e 6d 65 64 69 61 74 65 6c 79 20  rns inmediately 
8d80: 61 6e 64 20 63 61 6c 6c 73 20 6c 61 74 65 72 20  and calls later 
8d90: 74 6f 20 27 63 6f 6d 6d 27 20 77 69 74 68 20 74  to 'comm' with t
8da0: 68 65 20 72 65 73 75 6c 74 73 20 61 73 20 61 72  he results as ar
8db0: 67 75 6d 65 6e 74 0a 09 2d 2d 3a 20 20 20 20 20  gument..--:     
8dc0: 20 20 20 20 20 20 65 6e 64 20 6f 66 20 6f 70 74        end of opt
8dd0: 69 6f 6e 73 0a 0a 09 54 68 69 73 20 63 6f 6d 6d  ions...This comm
8de0: 61 6e 64 20 69 73 20 74 79 70 69 63 61 6c 6c 79  and is typically
8df0: 20 75 73 65 20 77 68 65 6e 20 74 68 65 20 70 72   use when the pr
8e00: 6f 67 72 61 6d 20 68 61 73 20 61 6c 72 65 61 64  ogram has alread
8e10: 79 20 73 74 6f 70 70 65 64 20 69 6e 20 6f 6e 65  y stopped in one
8e20: 20 62 72 65 61 6b 70 6f 69 6e 74 2e 0a 09 50 65   breakpoint...Pe
8e30: 72 6d 6d 69 74 73 20 74 6f 20 65 76 61 6c 75 61  rmmits to evalua
8e40: 74 65 20 6f 6e 65 20 65 78 70 72 65 73 69 6f 6e  te one expresion
8e50: 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20   in the context 
8e60: 6c 65 76 65 6c 20 6f 66 20 74 68 65 20 62 72 65  level of the bre
8e70: 61 6b 70 6f 69 6e 74 2e 20 54 68 65 20 65 78 70  akpoint. The exp
8e80: 72 65 73 73 69 6f 6e 0a 09 63 61 6e 20 61 6c 73  ression..can als
8e90: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  o change the val
8ea0: 75 65 20 6f 66 20 6f 6e 65 20 76 61 72 69 61 62  ue of one variab
8eb0: 6c 65 2e 0a 20 20 20 20 7d 0a 20 20 20 20 50 61  le..    }.    Pa
8ec0: 72 73 65 41 72 67 73 20 24 61 72 67 73 20 24 75  rseArgs $args $u
8ed0: 73 61 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a  sagestring opts.
8ee0: 20 20 20 20 73 65 74 20 45 78 70 72 65 73 73 69      set Expressi
8ef0: 6f 6e 52 65 73 75 6c 74 20 22 22 0a 20 20 20 20  onResult "".    
8f00: 69 66 20 7b 20 24 6f 70 74 73 28 2d 68 61 6e 64  if { $opts(-hand
8f10: 6c 65 72 29 20 21 3d 20 30 20 7d 20 7b 0a 09 69  ler) != 0 } {..i
8f20: 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65  f { $remoteserve
8f30: 72 54 79 70 65 20 21 3d 20 22 67 64 62 22 20 7d  rType != "gdb" }
8f40: 20 7b 0a 09 20 20 20 20 45 76 61 6c 52 65 6d 6f   {..    EvalRemo
8f50: 74 65 20 5b 6c 69 73 74 20 3a 3a 52 44 43 3a 3a  te [list ::RDC::
8f60: 45 76 61 6c 20 24 6f 70 74 73 28 61 72 67 29 20  Eval $opts(arg) 
8f70: 24 6f 70 74 73 28 2d 68 61 6e 64 6c 65 72 29 5d  $opts(-handler)]
8f80: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
8f90: 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72  set remoteserver
8fa0: 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f   [lreplace $remo
8fb0: 74 65 73 65 72 76 65 72 20 32 20 32 20 5b 6c 69  teserver 2 2 [li
8fc0: 73 74 20 70 72 69 6e 74 20 24 6f 70 74 73 28 2d  st print $opts(-
8fd0: 68 61 6e 64 6c 65 72 29 5d 5d 0a 09 20 20 20 20  handler)]]..    
8fe0: 45 76 61 6c 52 65 6d 6f 74 65 20 22 70 72 69 6e  EvalRemote "prin
8ff0: 74 20 24 6f 70 74 73 28 61 72 67 29 22 0a 09 7d  t $opts(arg)"..}
9000: 0a 09 72 65 74 75 72 6e 20 22 22 0a 20 20 20 20  ..return "".    
9010: 7d 0a 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f  }.    if { $remo
9020: 74 65 73 65 72 76 65 72 54 79 70 65 20 21 3d 20  teserverType != 
9030: 22 67 64 62 22 20 7d 20 7b 0a 09 45 76 61 6c 52  "gdb" } {..EvalR
9040: 65 6d 6f 74 65 20 5b 6c 69 73 74 20 3a 3a 52 44  emote [list ::RD
9050: 43 3a 3a 45 76 61 6c 20 24 6f 70 74 73 28 61 72  C::Eval $opts(ar
9060: 67 29 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  g)].    } else {
9070: 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76  ..set remoteserv
9080: 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65  er [lreplace $re
9090: 6d 6f 74 65 73 65 72 76 65 72 20 32 20 32 20 70  moteserver 2 2 p
90a0: 72 69 6e 74 5d 0a 09 45 76 61 6c 52 65 6d 6f 74  rint]..EvalRemot
90b0: 65 20 22 70 72 69 6e 74 20 24 6f 70 74 73 28 61  e "print $opts(a
90c0: 72 67 29 22 0a 20 20 20 20 7d 0a 20 20 20 20 69  rg)".    }.    i
90d0: 66 20 7b 20 24 45 78 70 72 65 73 73 69 6f 6e 52  f { $ExpressionR
90e0: 65 73 75 6c 74 20 3d 3d 20 22 22 20 7d 20 7b 20  esult == "" } { 
90f0: 76 77 61 69 74 20 52 61 6d 44 65 62 75 67 67 65  vwait RamDebugge
9100: 72 3a 3a 45 78 70 72 65 73 73 69 6f 6e 52 65 73  r::ExpressionRes
9110: 75 6c 74 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20  ult }..    if { 
9120: 21 24 6f 70 74 73 28 2d 6e 6f 6e 69 63 65 29 20  !$opts(-nonice) 
9130: 7d 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65  } {..if { [linde
9140: 78 20 24 45 78 70 72 65 73 73 69 6f 6e 52 65 73  x $ExpressionRes
9150: 75 6c 74 20 30 5d 20 3d 3d 20 30 20 7d 20 7b 0a  ult 0] == 0 } {.
9160: 09 20 20 20 20 72 65 74 75 72 6e 20 5b 6c 69 6e  .    return [lin
9170: 64 65 78 20 24 45 78 70 72 65 73 73 69 6f 6e 52  dex $ExpressionR
9180: 65 73 75 6c 74 20 31 5d 0a 09 7d 20 65 6c 73 65  esult 1]..} else
9190: 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b 6c   {..    error [l
91a0: 69 6e 64 65 78 20 24 45 78 70 72 65 73 73 69 6f  index $Expressio
91b0: 6e 52 65 73 75 6c 74 20 31 5d 0a 09 7d 0a 20 20  nResult 1]..}.  
91c0: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72 65 74 75    } else {..retu
91d0: 72 6e 20 24 45 78 70 72 65 73 73 69 6f 6e 52 65  rn $ExpressionRe
91e0: 73 75 6c 74 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  sult.    }.}..pr
91f0: 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
9200: 72 73 74 61 63 6b 20 7b 20 61 72 67 73 20 7d 20  rstack { args } 
9210: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64  {.    variable d
9220: 65 62 75 67 67 65 72 73 74 61 74 65 0a 20 20 20  ebuggerstate.   
9230: 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65   variable remote
9240: 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 61  server.    varia
9250: 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72  ble remoteserver
9260: 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c  Type.    variabl
9270: 65 20 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75  e ExpressionResu
9280: 6c 74 0a 0a 20 20 20 20 69 66 20 7b 20 24 64 65  lt..    if { $de
9290: 62 75 67 67 65 72 73 74 61 74 65 20 3d 3d 20 22  buggerstate == "
92a0: 74 69 6d 65 22 20 7d 20 7b 0a 09 65 72 72 6f 72  time" } {..error
92b0: 20 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 72 73 74   [_ "Command rst
92c0: 61 63 6b 20 63 61 6e 6e 6f 74 20 62 65 20 75 73  ack cannot be us
92d0: 65 64 20 69 6e 20 27 74 69 6d 65 27 20 6d 6f 64  ed in 'time' mod
92e0: 65 2e 20 43 68 65 63 6b 20 72 74 69 6d 65 22 5d  e. Check rtime"]
92f0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20  .    }..    set 
9300: 75 73 61 67 65 73 74 72 69 6e 67 20 7b 75 73 61  usagestring {usa
9310: 67 65 3a 20 72 73 74 61 63 6b 20 3f 73 77 69 74  ge: rstack ?swit
9320: 63 68 65 73 3f 0a 09 2d 68 3a 20 20 20 20 20 20  ches?..-h:      
9330: 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a   displays usage.
9340: 09 2d 6e 6f 6e 69 63 65 3a 20 72 65 74 75 72 6e  .-nonice: return
9350: 20 61 20 6c 69 73 74 20 77 69 74 68 20 61 6e 20   a list with an 
9360: 69 6e 74 65 67 65 72 20 6f 66 20 74 68 65 20 65  integer of the e
9370: 72 72 6f 72 20 61 6e 64 20 74 68 65 20 73 74 72  rror and the str
9380: 69 6e 67 0a 09 2d 68 61 6e 64 6c 65 72 20 63 6f  ing..-handler co
9390: 6d 6d 3a 20 72 65 74 75 72 6e 73 20 69 6e 6d 65  mm: returns inme
93a0: 64 69 61 74 65 6c 79 20 61 6e 64 20 63 61 6c 6c  diately and call
93b0: 73 20 6c 61 74 65 72 20 74 6f 20 27 63 6f 6d 6d  s later to 'comm
93c0: 27 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c  ' with the resul
93d0: 74 73 20 61 73 20 61 72 67 75 6d 65 6e 74 0a 09  ts as argument..
93e0: 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 20 6f  --:     end of o
93f0: 70 74 69 6f 6e 73 0a 20 20 20 20 7d 0a 20 20 20  ptions.    }.   
9400: 20 50 61 72 73 65 41 72 67 73 20 24 61 72 67 73   ParseArgs $args
9410: 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 6f 70   $usagestring op
9420: 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 72 65  ts..    if { $re
9430: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d  moteserverType =
9440: 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 73 65 74  = "gdb" } {..set
9450: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c   remoteserver [l
9460: 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73  replace $remotes
9470: 65 72 76 65 72 20 32 20 32 20 62 61 63 6b 74 72  erver 2 2 backtr
9480: 61 63 65 5d 0a 09 73 65 74 20 45 78 70 72 65 73  ace]..set Expres
9490: 73 69 6f 6e 52 65 73 75 6c 74 20 22 22 0a 09 45  sionResult ""..E
94a0: 76 61 6c 52 65 6d 6f 74 65 20 22 62 61 63 6b 74  valRemote "backt
94b0: 72 61 63 65 5c 6e 70 72 69 6e 74 66 20 5c 22 46  race\nprintf \"F
94c0: 49 4e 49 53 48 45 44 20 42 41 43 4b 54 52 41 43  INISHED BACKTRAC
94d0: 45 5c 5c 6e 5c 22 22 0a 09 69 66 20 7b 20 24 45  E\\n\""..if { $E
94e0: 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 20  xpressionResult 
94f0: 3d 3d 20 22 22 20 7d 20 7b 20 76 77 61 69 74 20  == "" } { vwait 
9500: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 78 70  RamDebugger::Exp
9510: 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 20 7d 0a  ressionResult }.
9520: 09 69 66 20 7b 20 24 6f 70 74 73 28 2d 68 61 6e  .if { $opts(-han
9530: 64 6c 65 72 29 20 21 3d 20 22 22 20 7d 20 7b 0a  dler) != "" } {.
9540: 09 20 20 20 20 75 70 6c 65 76 65 6c 20 5c 23 30  .    uplevel \#0
9550: 20 24 6f 70 74 73 28 2d 68 61 6e 64 6c 65 72 29   $opts(-handler)
9560: 20 5b 6c 69 73 74 20 24 45 78 70 72 65 73 73 69   [list $Expressi
9570: 6f 6e 52 65 73 75 6c 74 5d 0a 09 20 20 20 20 72  onResult]..    r
9580: 65 74 75 72 6e 0a 09 7d 20 65 6c 73 65 20 7b 0a  eturn..} else {.
9590: 09 20 20 20 20 72 65 74 75 72 6e 20 24 45 78 70  .    return $Exp
95a0: 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 0a 09 7d  ressionResult..}
95b0: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63  .    }.    set c
95c0: 6f 6d 6d 20 7b 0a 09 73 65 74 20 3a 3a 52 44 43  omm {..set ::RDC
95d0: 3a 3a 72 65 74 76 61 6c 20 22 53 54 41 43 4b 20  ::retval "STACK 
95e0: 54 52 41 43 45 5c 6e 22 0a 09 73 65 74 20 3a 3a  TRACE\n"..set ::
95f0: 52 44 43 3a 3a 63 75 72 72 65 6e 74 20 5b 69 6e  RDC::current [in
9600: 66 6f 20 6c 65 76 65 6c 5d 0a 09 66 6f 72 20 7b  fo level]..for {
9610: 20 73 65 74 20 3a 3a 52 44 43 3a 3a 69 20 24 3a   set ::RDC::i $:
9620: 3a 52 44 43 3a 3a 63 75 72 72 65 6e 74 20 7d 20  :RDC::current } 
9630: 7b 20 24 3a 3a 52 44 43 3a 3a 69 20 3e 20 30 20  { $::RDC::i > 0 
9640: 7d 20 7b 20 69 6e 63 72 20 3a 3a 52 44 43 3a 3a  } { incr ::RDC::
9650: 69 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 73 65  i -1 } {..    se
9660: 74 20 3a 3a 52 44 43 3a 3a 6c 65 76 65 6c 20 22  t ::RDC::level "
9670: 22 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 3a  "..    foreach :
9680: 3a 52 44 43 3a 3a 6a 20 5b 69 6e 66 6f 20 6c 65  :RDC::j [info le
9690: 76 65 6c 20 24 3a 3a 52 44 43 3a 3a 69 5d 20 7b  vel $::RDC::i] {
96a0: 0a 09 09 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b  ...regsub -all {
96b0: 5c 6e 7d 20 24 3a 3a 52 44 43 3a 3a 6a 20 7b 20  \n} $::RDC::j { 
96c0: 7d 20 3a 3a 52 44 43 3a 3a 6a 0a 09 09 69 66 20  } ::RDC::j...if 
96d0: 7b 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  { [string length
96e0: 20 24 3a 3a 52 44 43 3a 3a 6a 5d 20 3e 20 31 30   $::RDC::j] > 10
96f0: 30 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20  0 } {...    set 
9700: 3a 3a 52 44 43 3a 3a 6a 20 5b 73 74 72 69 6e 67  ::RDC::j [string
9710: 20 72 61 6e 67 65 20 24 3a 3a 52 44 43 3a 3a 6a   range $::RDC::j
9720: 20 30 20 39 36 5d 2e 2e 2e 0a 09 09 7d 0a 09 09   0 96]......}...
9730: 6c 61 70 70 65 6e 64 20 3a 3a 52 44 43 3a 3a 6c  lappend ::RDC::l
9740: 65 76 65 6c 20 24 3a 3a 52 44 43 3a 3a 6a 0a 09  evel $::RDC::j..
9750: 20 20 20 20 7d 0a 09 20 20 20 20 61 70 70 65 6e      }..    appen
9760: 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20  d ::RDC::retval 
9770: 22 6c 65 76 65 6c 20 24 3a 3a 52 44 43 3a 3a 69  "level $::RDC::i
9780: 20 24 3a 3a 52 44 43 3a 3a 6c 65 76 65 6c 5c 6e   $::RDC::level\n
9790: 22 0a 09 7d 0a 09 73 65 74 20 3a 3a 52 44 43 3a  "..}..set ::RDC:
97a0: 3a 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a 20 20  :retval.    }.  
97b0: 20 20 72 65 74 75 72 6e 20 5b 65 76 61 6c 20 72    return [eval r
97c0: 65 76 61 6c 20 24 61 72 67 73 20 5b 6c 69 73 74  eval $args [list
97d0: 20 24 63 6f 6d 6d 5d 5d 0a 7d 0a 0a 70 72 6f 63   $comm]].}..proc
97e0: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 63   RamDebugger::rc
97f0: 6f 6e 74 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20  ont { args } {. 
9800: 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
9810: 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69  entfile.    vari
9820: 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
9830: 64 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69  dfilesP.    vari
9840: 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
9850: 64 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69  dfilesR.    vari
9860: 61 62 6c 65 20 63 75 72 72 65 6e 74 6c 69 6e 65  able currentline
9870: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 69  .    variable fi
9880: 6c 65 73 6c 69 73 74 0a 20 20 20 20 76 61 72 69  leslist.    vari
9890: 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 74 61  able debuggersta
98a0: 74 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  te.    variable 
98b0: 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20  remoteserver.   
98c0: 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65   variable remote
98d0: 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 76  serverType.    v
98e0: 61 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 0a 20  ariable files.. 
98f0: 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 65     if { $debugge
9900: 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22  rstate == "time"
9910: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22   } {..error [_ "
9920: 43 6f 6d 6d 61 6e 64 20 72 63 6f 6e 74 20 63 61  Command rcont ca
9930: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20  nnot be used in 
9940: 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65  'time' mode. Che
9950: 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d  ck rtime"].    }
9960: 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73  ..    set usages
9970: 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 63  tring {usage: rc
9980: 6f 6e 74 20 3f 73 77 69 74 63 68 65 73 3f 20 3f  ont ?switches? ?
9990: 6c 69 6e 65 3f 0a 09 2d 68 3a 20 20 20 20 20 20  line?..-h:      
99a0: 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a   displays usage.
99b0: 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 20  .--:     end of 
99c0: 6f 70 74 69 6f 6e 73 0a 20 20 20 20 7d 0a 20 20  options.    }.  
99d0: 20 20 50 61 72 73 65 41 72 67 73 20 24 61 72 67    ParseArgs $arg
99e0: 73 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 6f  s $usagestring o
99f0: 70 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b  pts..    if { ![
9a00: 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65  string is intege
9a10: 72 20 24 6f 70 74 73 28 6c 69 6e 65 29 5d 20 7d  r $opts(line)] }
9a20: 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 6c 69   {..error [_ "li
9a30: 6e 65 20 27 25 73 27 20 6d 75 73 74 20 62 65 20  ne '%s' must be 
9a40: 61 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20 24 6f  a number\n%s" $o
9a50: 70 74 73 28 6c 69 6e 65 29 20 24 75 73 61 67 65  pts(line) $usage
9a60: 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 0a 20  string].    }.. 
9a70: 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74     if { $current
9a80: 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  file == "" } {..
9a90: 65 72 72 6f 72 20 5b 5f 20 22 54 68 65 72 65 20  error [_ "There 
9aa0: 69 73 20 6e 6f 20 66 69 6c 65 20 73 65 6c 65 63  is no file selec
9ab0: 74 65 64 5c 6e 25 73 22 20 24 75 73 61 67 65 73  ted\n%s" $usages
9ac0: 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 20  tring].    }.   
9ad0: 20 69 66 20 7b 20 24 6f 70 74 73 28 6c 69 6e 65   if { $opts(line
9ae0: 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 73 65 74  ) != "" } {..set
9af0: 20 63 75 72 72 65 6e 74 6c 69 6e 65 20 24 6f 70   currentline $op
9b00: 74 73 28 6c 69 6e 65 29 0a 09 73 65 74 20 66 69  ts(line)..set fi
9b10: 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 68 66 69  lenum [lsearchfi
9b20: 6c 65 20 24 66 69 6c 65 73 6c 69 73 74 20 24 63  le $fileslist $c
9b30: 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 69 66 20  urrentfile]..if 
9b40: 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54  { $remoteserverT
9b50: 79 70 65 20 21 3d 20 22 67 64 62 22 20 7d 20 7b  ype != "gdb" } {
9b60: 0a 09 20 20 20 20 73 65 74 20 69 70 6f 73 20 5b  ..    set ipos [
9b70: 73 74 72 69 6e 67 20 66 69 72 73 74 20 22 52 44  string first "RD
9b80: 43 3a 3a 46 20 24 66 69 6c 65 6e 75 6d 20 24 63  C::F $filenum $c
9b90: 75 72 72 65 6e 74 6c 69 6e 65 20 3b 22 20 5c 0a  urrentline ;" \.
9ba0: 09 09 20 20 20 20 20 20 20 20 20 20 24 69 6e 73  ..          $ins
9bb0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28  trumentedfilesP(
9bc0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 0a 09  $currentfile)]..
9bd0: 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 3d      if { $ipos =
9be0: 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 69  = -1 } {...set i
9bf0: 70 6f 73 20 5b 73 74 72 69 6e 67 20 66 69 72 73  pos [string firs
9c00: 74 20 22 52 44 43 3a 3a 46 20 24 66 69 6c 65 6e  t "RDC::F $filen
9c10: 75 6d 20 24 63 75 72 72 65 6e 74 6c 69 6e 65 20  um $currentline 
9c20: 3b 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  ;" \...         
9c30: 20 20 20 20 20 24 69 6e 73 74 72 75 6d 65 6e 74       $instrument
9c40: 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 65 6e  edfilesR($curren
9c50: 74 66 69 6c 65 29 5d 0a 09 09 69 66 20 7b 20 24  tfile)]...if { $
9c60: 69 70 6f 73 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09  ipos == -1 } {..
9c70: 09 20 20 20 20 73 65 74 20 65 72 72 6f 72 6d 65  .    set errorme
9c80: 73 73 61 67 65 20 5b 5f 20 22 45 72 72 6f 72 3a  ssage [_ "Error:
9c90: 20 6c 69 6e 65 20 25 73 20 69 73 20 6e 6f 74 20   line %s is not 
9ca0: 69 6e 73 74 72 75 6d 65 6e 74 65 64 22 20 24 63  instrumented" $c
9cb0: 75 72 72 65 6e 74 6c 69 6e 65 5d 0a 09 09 20 20  urrentline]...  
9cc0: 20 20 73 65 74 20 6c 69 6e 65 74 78 74 20 5b 6c    set linetxt [l
9cd0: 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 66 69  index [split $fi
9ce0: 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 6c 65  les($currentfile
9cf0: 29 20 5c 6e 5d 20 5b 65 78 70 72 20 7b 24 63 75  ) \n] [expr {$cu
9d00: 72 72 65 6e 74 6c 69 6e 65 2d 31 7d 5d 5d 0a 09  rrentline-1}]]..
9d10: 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e  .    if { [strin
9d20: 67 20 74 72 69 6d 20 24 6c 69 6e 65 74 78 74 5d  g trim $linetxt]
9d30: 20 3d 3d 20 22 5c 7d 22 20 7d 20 7b 0a 09 09 20   == "\}" } {... 
9d40: 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 65 72         append er
9d50: 72 6f 72 6d 65 73 73 61 67 65 20 5b 5f 20 22 2e  rormessage [_ ".
9d60: 20 43 6f 6e 73 69 64 65 72 20 6f 70 74 69 6f 6e   Consider option
9d70: 20 27 49 6e 73 74 72 75 6d 65 6e 74 20 70 72 6f   'Instrument pro
9d80: 63 20 6c 61 73 74 20 6c 69 6e 65 27 20 69 6e 20  c last line' in 
9d90: 50 72 65 66 65 72 65 6e 63 65 73 22 5d 0a 09 09  Preferences"]...
9da0: 20 20 20 20 7d 0a 09 09 20 20 20 20 65 72 72 6f      }...    erro
9db0: 72 20 24 65 72 72 6f 72 6d 65 73 73 61 67 65 0a  r $errormessage.
9dc0: 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20  ..}..    }..}.  
9dd0: 20 20 7d 0a 0a 20 20 20 20 72 6c 69 73 74 20 2d    }..    rlist -
9de0: 71 75 69 65 74 0a 20 20 20 20 53 74 6f 70 41 74  quiet.    StopAt
9df0: 47 55 49 20 22 22 20 22 22 0a 20 20 20 20 69 66  GUI "" "".    if
9e00: 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72   { $remoteserver
9e10: 54 79 70 65 20 21 3d 20 22 67 64 62 22 20 7d 20  Type != "gdb" } 
9e20: 7b 0a 09 69 66 20 7b 20 24 6f 70 74 73 28 6c 69  {..if { $opts(li
9e30: 6e 65 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20  ne) != "" } {.. 
9e40: 20 20 20 73 65 74 20 66 69 6c 65 6e 75 6d 20 5b     set filenum [
9e50: 6c 73 65 61 72 63 68 66 69 6c 65 20 24 66 69 6c  lsearchfile $fil
9e60: 65 73 6c 69 73 74 20 24 63 75 72 72 65 6e 74 66  eslist $currentf
9e70: 69 6c 65 5d 0a 09 20 20 20 20 45 76 61 6c 52 65  ile]..    EvalRe
9e80: 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 20 3a  mote [list set :
9e90: 3a 52 44 43 3a 3a 63 6f 6e 74 74 6f 20 5b 6c 69  :RDC::contto [li
9ea0: 73 74 20 24 66 69 6c 65 6e 75 6d 20 24 63 75 72  st $filenum $cur
9eb0: 72 65 6e 74 6c 69 6e 65 5d 5d 0a 09 7d 0a 09 45  rentline]]..}..E
9ec0: 76 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20  valRemote [list 
9ed0: 73 65 74 20 3a 3a 52 44 43 3a 3a 73 74 6f 70 6e  set ::RDC::stopn
9ee0: 65 78 74 20 30 5d 0a 09 45 76 61 6c 52 65 6d 6f  ext 0]..EvalRemo
9ef0: 74 65 20 3a 3a 52 44 43 3a 3a 43 6f 6e 74 69 6e  te ::RDC::Contin
9f00: 75 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ue.    } else {.
9f10: 09 69 66 20 7b 20 24 6f 70 74 73 28 6c 69 6e 65  .if { $opts(line
9f20: 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20  ) != "" } {..   
9f30: 20 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65   set remoteserve
9f40: 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d  r [lreplace $rem
9f50: 6f 74 65 73 65 72 76 65 72 20 32 20 32 20 73 65  oteserver 2 2 se
9f60: 74 62 72 65 61 6b 70 6f 69 6e 74 73 5d 0a 09 20  tbreakpoints].. 
9f70: 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 22 74     EvalRemote "t
9f80: 62 72 65 61 6b 20 5b 66 69 6c 65 20 74 61 69 6c  break [file tail
9f90: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 3a 24   $currentfile]:$
9fa0: 63 75 72 72 65 6e 74 6c 69 6e 65 22 0a 09 20 20  currentline"..  
9fb0: 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 22 70 72    EvalRemote "pr
9fc0: 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 45 44 20  intf \"FINISHED 
9fd0: 53 45 54 20 42 52 45 41 4b 50 4f 49 4e 54 53 5c  SET BREAKPOINTS\
9fe0: 5c 6e 5c 22 22 0a 09 7d 0a 09 45 76 61 6c 52 65  \n\""..}..EvalRe
9ff0: 6d 6f 74 65 20 22 63 6f 6e 74 22 0a 20 20 20 20  mote "cont".    
a000: 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  }.}..proc RamDeb
a010: 75 67 67 65 72 3a 3a 72 6e 65 78 74 20 7b 20 61  ugger::rnext { a
a020: 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  rgs } {.    vari
a030: 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 74 61  able debuggersta
a040: 74 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  te.    variable 
a050: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
a060: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65  .    variable re
a070: 6d 6f 74 65 73 65 72 76 65 72 0a 0a 20 20 20 20  moteserver..    
a080: 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 74  if { $debuggerst
a090: 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20  ate == "time" } 
a0a0: 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d  {..error [_ "Com
a0b0: 6d 61 6e 64 20 72 6e 65 78 74 20 63 61 6e 6e 6f  mand rnext canno
a0c0: 74 20 62 65 20 75 73 65 64 20 69 6e 20 27 74 69  t be used in 'ti
a0d0: 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65 63 6b 20  me' mode. Check 
a0e0: 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d 0a 20 20  rtime"].    }.  
a0f0: 20 20 0a 20 20 20 20 73 65 74 20 75 73 61 67 65    .    set usage
a100: 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72  string {usage: r
a110: 6e 65 78 74 20 3f 73 77 69 74 63 68 65 73 3f 0a  next ?switches?.
a120: 09 2d 68 3a 20 20 20 20 20 20 20 64 69 73 70 6c  .-h:       displ
a130: 61 79 73 20 75 73 61 67 65 0a 09 2d 66 75 6c 6c  ays usage..-full
a140: 3a 20 20 20 20 54 72 69 65 73 20 74 6f 20 73 74  :    Tries to st
a150: 6f 70 20 70 72 6f 67 72 61 6d 20 65 78 65 63 75  op program execu
a160: 74 69 6f 6e 20 69 6e 20 61 6e 79 20 6c 69 6e 65  tion in any line
a170: 0a 09 2d 72 65 74 75 72 6e 3a 20 20 4d 61 6b 65  ..-return:  Make
a180: 73 20 74 68 65 20 63 6f 64 65 20 72 65 74 75 72  s the code retur
a190: 6e 20 66 72 6f 6d 20 70 72 6f 63 20 77 69 74 68  n from proc with
a1a0: 6f 75 74 20 66 69 6e 69 73 68 69 6e 67 20 65 78  out finishing ex
a1b0: 65 63 75 74 69 6f 6e 0a 09 2d 2d 3a 20 20 20 20  ecution..--:    
a1c0: 20 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e     end of option
a1d0: 73 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73  s.    }.    Pars
a1e0: 65 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61  eArgs $args $usa
a1f0: 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20  gestring opts.. 
a200: 20 20 20 72 6c 69 73 74 20 2d 71 75 69 65 74 0a     rlist -quiet.
a210: 20 20 20 20 53 74 6f 70 41 74 47 55 49 20 22 22      StopAtGUI ""
a220: 20 22 22 0a 0a 20 20 20 20 69 66 20 7b 20 24 72   ""..    if { $r
a230: 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20  emoteserverType 
a240: 6e 65 20 22 67 64 62 22 20 7d 20 7b 0a 09 69 66  ne "gdb" } {..if
a250: 20 7b 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e   { $opts(-return
a260: 29 20 7d 20 7b 0a 09 20 20 20 20 45 76 61 6c 52  ) } {..    EvalR
a270: 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 20  emote [list set 
a280: 3a 3a 52 44 43 3a 3a 73 74 6f 70 6e 65 78 74 20  ::RDC::stopnext 
a290: 34 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24  4]..} elseif { $
a2a0: 6f 70 74 73 28 2d 66 75 6c 6c 29 20 7d 20 7b 0a  opts(-full) } {.
a2b0: 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20  .    EvalRemote 
a2c0: 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 3a  [list set ::RDC:
a2d0: 3a 73 74 6f 70 6e 65 78 74 20 33 5d 0a 09 7d 20  :stopnext 3]..} 
a2e0: 65 6c 73 65 20 7b 0a 09 20 20 20 20 45 76 61 6c  else {..    Eval
a2f0: 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74  Remote [list set
a300: 20 3a 3a 52 44 43 3a 3a 73 74 6f 70 6e 65 78 74   ::RDC::stopnext
a310: 20 31 5d 0a 09 7d 0a 09 45 76 61 6c 52 65 6d 6f   1]..}..EvalRemo
a320: 74 65 20 3a 3a 52 44 43 3a 3a 43 6f 6e 74 69 6e  te ::RDC::Contin
a330: 75 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ue.    } else {.
a340: 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65  .set remoteserve
a350: 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d  r [lreplace $rem
a360: 6f 74 65 73 65 72 76 65 72 20 32 20 32 20 6e 65  oteserver 2 2 ne
a370: 78 74 5d 0a 09 6c 61 73 73 69 67 6e 20 24 72 65  xt]..lassign $re
a380: 6d 6f 74 65 73 65 72 76 65 72 20 66 69 64 0a 09  moteserver fid..
a390: 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74  if { $::tcl_plat
a3a0: 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 65  form(platform) e
a3b0: 71 20 22 75 6e 69 78 22 20 7d 20 7b 0a 09 20 20  q "unix" } {..  
a3c0: 20 20 65 78 65 63 20 6b 69 6c 6c 20 2d 73 20 49    exec kill -s I
a3d0: 4e 54 20 5b 6c 69 6e 64 65 78 20 5b 70 69 64 20  NT [lindex [pid 
a3e0: 24 66 69 64 5d 20 30 5d 0a 09 7d 0a 09 23 45 76  $fid] 0]..}..#Ev
a3f0: 61 6c 52 65 6d 6f 74 65 20 5c 30 30 33 0a 09 45  alRemote \003..E
a400: 76 61 6c 52 65 6d 6f 74 65 20 6e 65 78 74 0a 20  valRemote next. 
a410: 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
a420: 44 65 62 75 67 67 65 72 3a 3a 72 73 74 65 70 20  Debugger::rstep 
a430: 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76  { args } {.    v
a440: 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72  ariable debugger
a450: 73 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62  state.    variab
a460: 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54  le remoteserverT
a470: 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ype.    variable
a480: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 0a 20   remoteserver.. 
a490: 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 65     if { $debugge
a4a0: 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22  rstate == "time"
a4b0: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22   } {..error [_ "
a4c0: 43 6f 6d 6d 61 6e 64 20 72 73 74 65 70 20 63 61  Command rstep ca
a4d0: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20  nnot be used in 
a4e0: 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65  'time' mode. Che
a4f0: 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d  ck rtime"].    }
a500: 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73  ..    set usages
a510: 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 73  tring {usage: rs
a520: 74 65 70 20 3f 73 77 69 74 63 68 65 73 3f 0a 09  tep ?switches?..
a530: 2d 68 3a 20 20 20 20 20 20 20 64 69 73 70 6c 61  -h:       displa
a540: 79 73 20 75 73 61 67 65 0a 09 2d 2d 3a 20 20 20  ys usage..--:   
a550: 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73    end of options
a560: 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65  .    }.    Parse
a570: 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61 67  Args $args $usag
a580: 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20  estring opts..  
a590: 20 20 72 6c 69 73 74 20 2d 71 75 69 65 74 0a 20    rlist -quiet. 
a5a0: 20 20 20 53 74 6f 70 41 74 47 55 49 20 22 22 20     StopAtGUI "" 
a5b0: 22 22 0a 0a 20 20 20 20 69 66 20 7b 20 24 72 65  ""..    if { $re
a5c0: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 21  moteserverType !
a5d0: 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 45 76 61  = "gdb" } {..Eva
a5e0: 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65  lRemote [list se
a5f0: 74 20 3a 3a 52 44 43 3a 3a 73 74 6f 70 6e 65 78  t ::RDC::stopnex
a600: 74 20 32 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65  t 2]..EvalRemote
a610: 20 3a 3a 52 44 43 3a 3a 43 6f 6e 74 69 6e 75 65   ::RDC::Continue
a620: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
a630: 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20  et remoteserver 
a640: 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74  [lreplace $remot
a650: 65 73 65 72 76 65 72 20 32 20 32 20 73 74 65 70  eserver 2 2 step
a660: 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 73 74  ]..EvalRemote st
a670: 65 70 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63  ep.    }.}..proc
a680: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 6f   RamDebugger::ro
a690: 75 74 70 75 74 20 7b 20 61 72 67 73 20 7d 20 7b  utput { args } {
a6a0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65  .    variable de
a6b0: 62 75 67 67 65 72 73 74 61 74 65 0a 0a 20 20 20  buggerstate..   
a6c0: 20 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73   if { $debuggers
a6d0: 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d  tate == "time" }
a6e0: 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f   {..error [_ "Co
a6f0: 6d 6d 61 6e 64 20 72 6f 75 74 70 75 74 20 63 61  mmand routput ca
a700: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20  nnot be used in 
a710: 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65  'time' mode. Che
a720: 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d  ck rtime"].    }
a730: 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73  ..    set usages
a740: 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 6f  tring {usage: ro
a750: 75 74 70 75 74 20 3f 73 77 69 74 63 68 65 73 3f  utput ?switches?
a760: 20 62 6f 6f 6c 65 61 6e 0a 09 2d 68 3a 20 20 20   boolean..-h:   
a770: 20 20 20 20 64 69 73 70 6c 61 79 73 20 75 73 61      displays usa
a780: 67 65 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20  ge..--:     end 
a790: 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 7d  of options.    }
a7a0: 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 20 24  .    ParseArgs $
a7b0: 61 72 67 73 20 24 75 73 61 67 65 73 74 72 69 6e  args $usagestrin
a7c0: 67 20 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b  g opts..    if {
a7d0: 20 24 6f 70 74 73 28 62 6f 6f 6c 65 61 6e 29 20   $opts(boolean) 
a7e0: 7d 20 7b 0a 09 73 65 74 20 77 68 61 74 20 31 0a  } {..set what 1.
a7f0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74      } else { set
a800: 20 77 68 61 74 20 30 20 7d 0a 20 20 20 20 45 76   what 0 }.    Ev
a810: 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73  alRemote [list s
a820: 65 74 20 3a 3a 52 44 43 3a 3a 6f 75 74 70 75 74  et ::RDC::output
a830: 6c 69 6e 65 20 24 77 68 61 74 5d 0a 7d 0a 0a 70  line $what].}..p
a840: 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
a850: 3a 72 74 69 6d 65 20 7b 20 61 72 67 73 20 7d 20  :rtime { args } 
a860: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64  {.    variable d
a870: 65 62 75 67 67 65 72 73 74 61 74 65 0a 20 20 20  ebuggerstate.   
a880: 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65   variable remote
a890: 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 61  server.    varia
a8a0: 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72  ble remoteserver
a8b0: 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c  Type.    variabl
a8c0: 65 20 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74  e TimeMeasureDat
a8d0: 61 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  a.    variable c
a8e0: 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76  urrentfile.    v
a8f0: 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
a900: 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20  ile_endline.    
a910: 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d  variable instrum
a920: 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 0a 0a  entedfilesTime..
a930: 20 20 20 20 73 65 74 20 75 73 61 67 65 73 74 72      set usagestr
a940: 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 74 69 6d  ing {usage: rtim
a950: 65 20 3f 73 77 69 74 63 68 65 73 3f 20 3f 6e 61  e ?switches? ?na
a960: 6d 65 3f 20 3f 6c 69 6e 65 69 6e 69 3f 20 3f 6c  me? ?lineini? ?l
a970: 69 6e 65 65 6e 64 3f 0a 09 2d 68 3a 20 20 20 20  ineend?..-h:    
a980: 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79           display
a990: 73 20 75 73 61 67 65 0a 09 2d 73 74 61 72 74 3a  s usage..-start:
a9a0: 20 20 20 20 20 20 20 20 20 73 74 61 72 74 20 74           start t
a9b0: 69 6d 65 20 6d 6f 64 65 0a 09 2d 73 74 6f 70 3a  ime mode..-stop:
a9c0: 20 20 20 20 20 20 20 20 20 20 73 74 6f 70 20 74            stop t
a9d0: 69 6d 65 20 6d 6f 64 65 20 61 6e 64 20 67 6f 20  ime mode and go 
a9e0: 74 6f 20 64 65 62 75 67 67 69 6e 67 20 6d 6f 64  to debugging mod
a9f0: 65 0a 09 2d 61 64 64 3a 20 20 20 20 20 20 20 20  e..-add:        
aa00: 20 20 20 41 64 64 20 61 20 74 69 6d 65 20 62 6c     Add a time bl
aa10: 6f 63 6b 20 62 79 20 67 69 76 69 6e 67 20 6e 61  ock by giving na
aa20: 6d 65 20 6c 69 6e 65 69 6e 69 20 61 6e 64 20 6c  me lineini and l
aa30: 69 6e 65 65 6e 64 0a 09 2d 64 65 6c 65 74 65 3a  ineend..-delete:
aa40: 20 20 20 20 20 20 20 20 44 65 6c 65 74 65 20 6e          Delete n
aa50: 61 6d 65 64 20 74 69 6d 65 20 62 6c 6f 63 6b 0a  amed time block.
aa60: 09 2d 6c 69 73 74 3a 20 20 20 20 20 20 20 20 20  .-list:         
aa70: 20 4c 69 73 74 20 70 72 65 76 69 6f 75 73 6c 79   List previously
aa80: 20 64 65 66 69 6e 65 64 20 74 69 6d 65 20 62 6c   defined time bl
aa90: 6f 63 6b 73 0a 09 2d 64 69 73 70 6c 61 79 20 75  ocks..-display u
aaa0: 6e 69 74 73 3a 20 44 69 73 70 6c 61 79 73 20 74  nits: Displays t
aab0: 61 62 6c 65 20 6f 66 20 72 65 73 75 6c 74 73 2e  able of results.
aac0: 20 75 6e 69 74 73 20 63 61 6e 20 62 65 3a 20 6d   units can be: m
aad0: 69 63 72 6f 73 65 63 2c 20 6d 69 6c 69 73 65 63  icrosec, milisec
aae0: 2c 20 73 65 63 2c 20 6d 69 6e 0a 09 2d 63 6c 65  , sec, min..-cle
aaf0: 61 72 74 69 6d 65 73 3a 20 20 20 20 43 6c 65 61  artimes:    Clea
ab00: 72 20 74 69 6d 65 73 20 74 61 62 6c 65 0a 09 2d  r times table..-
ab10: 2d 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 65  -:             e
ab20: 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09  nd of options...
ab30: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  This function is
ab40: 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
ab50: 61 62 73 6f 6c 75 74 65 20 61 6e 64 20 72 65 6c  absolute and rel
ab60: 61 74 69 76 65 20 74 69 6d 65 73 20 6f 66 20 73  ative times of s
ab70: 65 76 65 72 61 6c 20 62 6c 6f 63 6b 73 0a 09 6f  everal blocks..o
ab80: 66 20 74 68 65 20 63 6f 64 65 2e 20 54 68 65 20  f the code. The 
ab90: 70 72 6f 63 65 73 73 20 69 73 3a 20 64 65 66 69  process is: defi
aba0: 6e 65 20 6f 6e 65 20 6f 72 20 73 65 76 65 72 61  ne one or severa
abb0: 6c 20 62 6c 6f 63 6b 73 20 67 69 76 69 6e 67 20  l blocks giving 
abc0: 74 68 65 20 62 6c 6f 63 6b 20 6e 61 6d 65 2c 0a  the block name,.
abd0: 09 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6c  .the beginning l
abe0: 69 6e 65 20 61 6e 64 20 74 68 65 20 65 6e 64 20  ine and the end 
abf0: 6c 69 6e 65 20 77 69 74 68 20 6f 70 74 69 6f 6e  line with option
ac00: 20 2d 61 64 64 2e 20 41 66 74 65 72 2c 20 73 65   -add. After, se
ac10: 6c 65 63 74 20 6f 70 74 69 6f 6e 20 2d 73 74 61  lect option -sta
ac20: 72 74 2e 0a 09 57 68 65 6e 20 66 69 6e 69 73 68  rt...When finish
ac30: 65 64 20 6d 65 61 73 75 72 69 6e 67 20 74 69 6d  ed measuring tim
ac40: 65 73 2c 20 75 73 65 20 6f 70 74 69 6f 6e 20 2d  es, use option -
ac50: 64 69 73 70 6c 61 79 20 74 6f 20 73 65 65 20 74  display to see t
ac60: 68 65 20 72 65 73 75 6c 74 73 2e 20 55 73 65 20  he results. Use 
ac70: 2d 64 65 6c 65 74 65 0a 09 74 6f 20 66 69 6e 69  -delete..to fini
ac80: 73 68 2e 0a 20 20 20 20 7d 0a 20 20 20 20 50 61  sh..    }.    Pa
ac90: 72 73 65 41 72 67 73 20 24 61 72 67 73 20 24 75  rseArgs $args $u
aca0: 73 61 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a  sagestring opts.
acb0: 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24 6f      .    if { $o
acc0: 70 74 73 28 2d 63 6c 65 61 72 74 69 6d 65 73 29  pts(-cleartimes)
acd0: 20 7d 20 7b 0a 09 73 65 74 20 54 69 6d 65 4d 65   } {..set TimeMe
ace0: 61 73 75 72 65 44 61 74 61 4e 65 77 20 22 22 0a  asureDataNew "".
acf0: 09 66 6f 72 65 61 63 68 20 69 20 24 54 69 6d 65  .foreach i $Time
ad00: 4d 65 61 73 75 72 65 44 61 74 61 20 7b 0a 09 20  MeasureData {.. 
ad10: 20 20 20 66 6f 72 65 61 63 68 20 22 6e 61 6d 65     foreach "name
ad20: 20 66 69 6c 65 20 6c 69 6e 65 69 6e 69 20 6c 69   file lineini li
ad30: 6e 65 65 6e 64 20 6c 61 73 74 74 69 6d 65 22 20  neend lasttime" 
ad40: 24 69 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 54  $i {...lappend T
ad50: 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 4e 65  imeMeasureDataNe
ad60: 77 20 5b 6c 69 73 74 20 24 6e 61 6d 65 20 24 66  w [list $name $f
ad70: 69 6c 65 20 24 6c 69 6e 65 69 6e 69 20 24 6c 69  ile $lineini $li
ad80: 6e 65 65 6e 64 20 22 22 5d 0a 09 20 20 20 20 7d  neend ""]..    }
ad90: 0a 09 7d 0a 09 73 65 74 20 54 69 6d 65 4d 65 61  ..}..set TimeMea
ada0: 73 75 72 65 44 61 74 61 20 24 54 69 6d 65 4d 65  sureData $TimeMe
adb0: 61 73 75 72 65 44 61 74 61 4e 65 77 0a 09 72 65  asureDataNew..re
adc0: 74 75 72 6e 20 5b 5f 20 22 63 6c 65 61 72 65 64  turn [_ "cleared
add0: 20 74 69 6d 65 73 20 74 61 62 6c 65 22 5d 0a 20   times table"]. 
ade0: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6f     }.    if { $o
adf0: 70 74 73 28 2d 73 74 61 72 74 29 20 7d 20 7b 0a  pts(-start) } {.
ae00: 09 73 65 74 20 64 65 62 75 67 67 65 72 73 74 61  .set debuggersta
ae10: 74 65 20 74 69 6d 65 0a 0a 09 73 65 74 20 54 69  te time...set Ti
ae20: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 4e 65 77  meMeasureDataNew
ae30: 20 22 22 0a 09 73 65 74 20 66 69 6c 65 73 20 22   ""..set files "
ae40: 22 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69  "..set currentfi
ae50: 6c 65 5f 73 61 76 65 20 24 63 75 72 72 65 6e 74  le_save $current
ae60: 66 69 6c 65 0a 09 73 65 74 20 63 75 72 72 65 6e  file..set curren
ae70: 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61  tfile_endline_sa
ae80: 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f  ve $currentfile_
ae90: 65 6e 64 6c 69 6e 65 0a 09 73 65 74 20 65 72 72  endline..set err
aea0: 20 5b 63 61 74 63 68 20 7b 0a 09 20 20 20 20 66   [catch {..    f
aeb0: 6f 72 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65  oreach i $TimeMe
aec0: 61 73 75 72 65 44 61 74 61 20 7b 0a 09 09 66 6f  asureData {...fo
aed0: 72 65 61 63 68 20 22 6e 61 6d 65 20 66 69 6c 65  reach "name file
aee0: 20 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64   lineini lineend
aef0: 20 6c 61 73 74 74 69 6d 65 22 20 24 69 20 7b 0a   lasttime" $i {.
af00: 09 09 20 20 20 20 6c 61 70 70 65 6e 64 20 54 69  ..    lappend Ti
af10: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 4e 65 77  meMeasureDataNew
af20: 20 5b 6c 69 73 74 20 24 6e 61 6d 65 20 24 66 69   [list $name $fi
af30: 6c 65 20 24 6c 69 6e 65 69 6e 69 20 24 6c 69 6e  le $lineini $lin
af40: 65 65 6e 64 20 22 22 5d 0a 09 09 20 20 20 20 69  eend ""]...    i
af50: 66 20 7b 20 5b 6c 73 65 61 72 63 68 66 69 6c 65  f { [lsearchfile
af60: 20 24 66 69 6c 65 73 20 24 66 69 6c 65 5d 20 3d   $files $file] =
af70: 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20 20  = -1 } {...     
af80: 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 78     if { [file ex
af90: 69 73 74 73 20 24 66 69 6c 65 5d 20 7d 20 7b 0a  ists $file] } {.
afa0: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 72 6c  ..            rl
afb0: 69 73 74 20 2d 71 75 69 65 74 20 24 66 69 6c 65  ist -quiet $file
afc0: 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 6c  ...            l
afd0: 61 70 70 65 6e 64 20 66 69 6c 65 73 20 24 66 69  append files $fi
afe0: 6c 65 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09  le...        }..
aff0: 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20  .    }...}..    
b000: 7d 0a 09 7d 20 65 72 72 6f 72 73 74 72 69 6e 67  }..} errorstring
b010: 5d 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69  ]..set currentfi
b020: 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f  le $currentfile_
b030: 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e  save..set curren
b040: 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63  tfile_endline $c
b050: 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69  urrentfile_endli
b060: 6e 65 5f 73 61 76 65 0a 09 69 66 20 7b 20 24 65  ne_save..if { $e
b070: 72 72 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f  rr } {..    erro
b080: 72 20 24 65 72 72 6f 72 73 74 72 69 6e 67 0a 09  r $errorstring..
b090: 7d 0a 09 73 65 74 20 54 69 6d 65 4d 65 61 73 75  }..set TimeMeasu
b0a0: 72 65 44 61 74 61 20 24 54 69 6d 65 4d 65 61 73  reData $TimeMeas
b0b0: 75 72 65 44 61 74 61 4e 65 77 0a 09 69 66 20 7b  ureDataNew..if {
b0c0: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79   $remoteserverTy
b0d0: 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 26 26  pe == "local" &&
b0e0: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 21   $remoteserver !
b0f0: 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 23 20  = "" } {..    # 
b100: 77 68 79 20 63 75 72 72 65 6e 74 66 69 6c 65 20  why currentfile 
b110: 73 68 6f 75 6c 64 20 62 65 20 63 68 61 6e 67 65  should be change
b120: 64 20 68 65 72 65 3f 0a 09 20 20 20 20 23 20 20  d here?..    #  
b130: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63             set c
b140: 75 72 72 65 6e 74 66 69 6c 65 20 24 72 65 6d 6f  urrentfile $remo
b150: 74 65 73 65 72 76 65 72 0a 09 20 20 20 20 72 64  teserver..    rd
b160: 65 62 75 67 20 2d 63 75 72 72 65 6e 74 66 69 6c  ebug -currentfil
b170: 65 0a 09 7d 0a 09 69 66 20 7b 20 24 72 65 6d 6f  e..}..if { $remo
b180: 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20  teserverType == 
b190: 22 22 20 26 26 20 5b 69 6e 66 6f 20 63 6f 6d 6d  "" && [info comm
b1a0: 61 6e 64 73 20 6d 61 73 74 65 72 5d 20 21 3d 20  ands master] != 
b1b0: 22 22 20 7d 20 7b 0a 09 20 20 20 20 72 64 65 62  "" } {..    rdeb
b1c0: 75 67 20 2d 6d 61 73 74 65 72 0a 09 7d 0a 09 72  ug -master..}..r
b1d0: 65 74 75 72 6e 20 5b 5f 20 22 55 73 69 6e 67 20  eturn [_ "Using 
b1e0: 27 6d 65 61 73 75 72 65 20 74 69 6d 65 73 27 20  'measure times' 
b1f0: 6d 6f 64 65 22 5d 0a 20 20 20 20 7d 0a 20 20 20  mode"].    }.   
b200: 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 73 74 6f   if { $opts(-sto
b210: 70 29 20 7d 20 7b 0a 09 69 66 20 7b 20 24 72 65  p) } {..if { $re
b220: 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d 20 22 22  moteserver == ""
b230: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 64 65   } {..    set de
b240: 62 75 67 67 65 72 73 74 61 74 65 20 22 22 0a 09  buggerstate ""..
b250: 20 20 20 20 72 65 74 75 72 6e 20 5b 5f 20 22 55      return [_ "U
b260: 73 69 6e 67 20 6e 6f 20 6d 6f 64 65 22 5d 0a 09  sing no mode"]..
b270: 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65  } else {..    se
b280: 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 20  t debuggerstate 
b290: 64 65 62 75 67 0a 09 20 20 20 20 72 65 74 75 72  debug..    retur
b2a0: 6e 20 5b 5f 20 22 55 73 69 6e 67 20 27 64 65 62  n [_ "Using 'deb
b2b0: 75 67 27 20 6d 6f 64 65 22 5d 0a 09 7d 0a 20 20  ug' mode"]..}.  
b2c0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6f 70    }.    if { $op
b2d0: 74 73 28 2d 64 65 6c 65 74 65 29 20 7d 20 7b 0a  ts(-delete) } {.
b2e0: 09 73 65 74 20 69 70 6f 73 20 30 0a 09 66 6f 72  .set ipos 0..for
b2f0: 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65 61 73  each i $TimeMeas
b300: 75 72 65 44 61 74 61 20 7b 0a 09 20 20 20 20 66  ureData {..    f
b310: 6f 72 65 61 63 68 20 22 6e 61 6d 65 20 66 69 6c  oreach "name fil
b320: 65 20 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e  e lineini lineen
b330: 64 20 6c 61 73 74 74 69 6d 65 22 20 24 69 20 7b  d lasttime" $i {
b340: 0a 09 09 69 66 20 7b 20 24 6e 61 6d 65 20 3d 3d  ...if { $name ==
b350: 20 24 6f 70 74 73 28 6e 61 6d 65 29 20 7d 20 7b   $opts(name) } {
b360: 0a 09 09 20 20 20 20 73 65 74 20 54 69 6d 65 4d  ...    set TimeM
b370: 65 61 73 75 72 65 44 61 74 61 20 5b 6c 72 65 70  easureData [lrep
b380: 6c 61 63 65 20 24 54 69 6d 65 4d 65 61 73 75 72  lace $TimeMeasur
b390: 65 44 61 74 61 20 24 69 70 6f 73 20 24 69 70 6f  eData $ipos $ipo
b3a0: 73 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 69  s]...    if { [i
b3b0: 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72  nfo exists instr
b3c0: 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65  umentedfilesTime
b3d0: 28 24 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 09 20  ($file)] } {... 
b3e0: 20 20 20 20 20 20 20 75 6e 73 65 74 20 69 6e 73         unset ins
b3f0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69  trumentedfilesTi
b400: 6d 65 28 24 66 69 6c 65 29 0a 09 09 20 20 20 20  me($file)...    
b410: 7d 0a 09 09 20 20 20 20 72 65 74 75 72 6e 20 5b  }...    return [
b420: 5f 20 22 64 65 6c 65 74 65 64 20 74 69 6d 65 20  _ "deleted time 
b430: 62 6c 6f 63 6b 20 27 25 73 27 22 20 24 6f 70 74  block '%s'" $opt
b440: 73 28 6e 61 6d 65 29 5d 0a 09 09 7d 0a 09 20 20  s(name)]...}..  
b450: 20 20 7d 0a 09 20 20 20 20 69 6e 63 72 20 69 70    }..    incr ip
b460: 6f 73 0a 09 7d 0a 09 65 72 72 6f 72 20 5b 5f 20  os..}..error [_ 
b470: 22 45 72 72 6f 72 3a 20 74 69 6d 65 20 62 6c 6f  "Error: time blo
b480: 63 6b 20 27 25 73 27 20 6e 6f 74 20 66 6f 75 6e  ck '%s' not foun
b490: 64 22 20 24 6f 70 74 73 28 6e 61 6d 65 29 5d 0a  d" $opts(name)].
b4a0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24      }.    if { $
b4b0: 6f 70 74 73 28 2d 6c 69 73 74 29 20 7d 20 7b 0a  opts(-list) } {.
b4c0: 09 73 65 74 20 72 65 74 76 61 6c 20 22 22 0a 09  .set retval ""..
b4d0: 66 6f 72 65 61 63 68 20 69 20 24 54 69 6d 65 4d  foreach i $TimeM
b4e0: 65 61 73 75 72 65 44 61 74 61 20 7b 0a 09 20 20  easureData {..  
b4f0: 20 20 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20    append retval 
b500: 24 69 5c 6e 0a 09 7d 0a 09 72 65 74 75 72 6e 20  $i\n..}..return 
b510: 24 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a 20 20  $retval.    }.  
b520: 20 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 64 69    if { $opts(-di
b530: 73 70 6c 61 79 29 20 21 3d 20 30 20 7d 20 7b 0a  splay) != 0 } {.
b540: 09 73 65 74 20 64 61 74 61 6e 61 6d 65 73 20 22  .set datanames "
b550: 22 0a 09 73 65 74 20 74 64 61 74 61 20 22 22 0a  "..set tdata "".
b560: 09 66 6f 72 20 7b 20 73 65 74 20 69 20 30 20 7d  .for { set i 0 }
b570: 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68   { $i < [llength
b580: 20 24 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74   $TimeMeasureDat
b590: 61 5d 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20  a] } { incr i } 
b5a0: 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 22  {..    foreach "
b5b0: 6e 61 6d 65 20 66 69 6c 65 20 6c 69 6e 65 69 6e  name file linein
b5c0: 69 20 6c 69 6e 65 65 6e 64 20 74 69 6d 65 22 20  i lineend time" 
b5d0: 5b 6c 69 6e 64 65 78 20 24 54 69 6d 65 4d 65 61  [lindex $TimeMea
b5e0: 73 75 72 65 44 61 74 61 20 24 69 5d 20 62 72 65  sureData $i] bre
b5f0: 61 6b 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c  ak..    if { [ll
b600: 65 6e 67 74 68 20 24 74 69 6d 65 5d 20 3d 3d 20  ength $time] == 
b610: 30 20 7d 20 7b 0a 09 09 73 65 74 20 74 64 61 74  0 } {...set tdat
b620: 65 20 5b 6c 69 6e 64 65 78 20 24 54 69 6d 65 4d  e [lindex $TimeM
b630: 65 61 73 75 72 65 44 61 74 61 20 24 69 5d 0a 09  easureData $i]..
b640: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b      } elseif { [
b650: 6c 6c 65 6e 67 74 68 20 24 74 69 6d 65 5d 20 3d  llength $time] =
b660: 3d 31 20 7d 20 7b 0a 09 09 6c 61 70 70 65 6e 64  =1 } {...lappend
b670: 20 74 64 61 74 61 20 5b 6c 69 73 74 20 24 6e 61   tdata [list $na
b680: 6d 65 20 24 66 69 6c 65 20 24 6c 69 6e 65 69 6e  me $file $linein
b690: 69 20 24 6c 69 6e 65 65 6e 64 20 5c 0a 09 09 20  i $lineend \... 
b6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6b0: 20 20 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65    [lindex [linde
b6c0: 78 20 24 74 69 6d 65 20 30 5d 20 31 5d 5d 0a 09  x $time 0] 1]]..
b6d0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 66      } else {...f
b6e0: 6f 72 65 61 63 68 20 6a 20 5b 6c 73 6f 72 74 20  oreach j [lsort 
b6f0: 2d 69 6e 74 65 67 65 72 20 2d 69 6e 64 65 78 20  -integer -index 
b700: 30 20 24 74 69 6d 65 5d 20 7b 0a 09 09 20 20 20  0 $time] {...   
b710: 20 6c 61 70 70 65 6e 64 20 74 64 61 74 61 20 5b   lappend tdata [
b720: 6c 69 73 74 20 22 24 6e 61 6d 65 20 28 6c 65 76  list "$name (lev
b730: 65 6c 3d 5b 6c 69 6e 64 65 78 20 24 6a 20 30 5d  el=[lindex $j 0]
b740: 29 22 20 24 66 69 6c 65 20 24 6c 69 6e 65 69 6e  )" $file $linein
b750: 69 20 24 6c 69 6e 65 65 6e 64 20 5c 0a 09 09 20  i $lineend \... 
b760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b770: 20 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 24 6a        [lindex $j
b780: 20 31 5d 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a   1]]...}..    }.
b790: 09 7d 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20  .}..for { set i 
b7a0: 30 20 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e  0 } { $i < [llen
b7b0: 67 74 68 20 24 74 64 61 74 61 5d 20 7d 20 7b 20  gth $tdata] } { 
b7c0: 69 6e 63 72 20 69 20 7d 20 7b 0a 09 20 20 20 20  incr i } {..    
b7d0: 66 6f 72 65 61 63 68 20 22 6e 61 6d 65 20 2d 20  foreach "name - 
b7e0: 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64 20  lineini lineend 
b7f0: 74 69 6d 65 22 20 5b 6c 69 6e 64 65 78 20 24 74  time" [lindex $t
b800: 64 61 74 61 20 24 69 5d 20 62 72 65 61 6b 0a 09  data $i] break..
b810: 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20      if { ![info 
b820: 65 78 69 73 74 73 20 64 61 74 61 28 24 6e 61 6d  exists data($nam
b830: 65 29 5d 20 7d 20 7b 0a 09 09 73 65 74 20 68 69  e)] } {...set hi
b840: 6c 65 76 65 6c 20 30 0a 09 09 73 65 74 20 64 61  level 0...set da
b850: 74 61 28 24 6e 61 6d 65 29 20 5b 6c 69 73 74 20  ta($name) [list 
b860: 24 68 69 6c 65 76 65 6c 20 24 74 69 6d 65 20 30  $hilevel $time 0
b870: 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ]..    } else {.
b880: 09 09 73 65 74 20 68 69 6c 65 76 65 6c 20 5b 6c  ..set hilevel [l
b890: 69 6e 64 65 78 20 24 64 61 74 61 28 24 6e 61 6d  index $data($nam
b8a0: 65 29 20 30 5d 0a 09 09 0a 09 20 20 20 20 7d 0a  e) 0].....    }.
b8b0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 61 74  .    lappend dat
b8c0: 61 6e 61 6d 65 73 20 24 6e 61 6d 65 0a 09 20 20  anames $name..  
b8d0: 20 20 69 66 20 7b 20 24 74 69 6d 65 20 3d 3d 20    if { $time == 
b8e0: 22 22 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20  "" } { continue 
b8f0: 7d 0a 0a 09 20 20 20 20 69 6e 63 72 20 68 69 6c  }...    incr hil
b900: 65 76 65 6c 0a 09 20 20 20 20 73 65 74 20 73 75  evel..    set su
b910: 6d 20 30 0a 09 20 20 20 20 66 6f 72 20 7b 73 65  m 0..    for {se
b920: 74 20 6a 20 5b 65 78 70 72 20 24 69 2b 31 5d 20  t j [expr $i+1] 
b930: 7d 20 7b 20 24 6a 20 3c 20 5b 6c 6c 65 6e 67 74  } { $j < [llengt
b940: 68 20 24 74 64 61 74 61 5d 20 7d 20 7b 20 69 6e  h $tdata] } { in
b950: 63 72 20 6a 20 7d 20 7b 0a 09 09 66 6f 72 65 61  cr j } {...forea
b960: 63 68 20 22 6e 61 6d 65 5f 69 6e 20 2d 20 6c 69  ch "name_in - li
b970: 6e 65 69 6e 69 5f 69 6e 20 6c 69 6e 65 65 6e 64  neini_in lineend
b980: 5f 69 6e 20 74 69 6d 65 5f 69 6e 22 20 5b 6c 69  _in time_in" [li
b990: 6e 64 65 78 20 24 74 64 61 74 61 20 24 6a 5d 20  ndex $tdata $j] 
b9a0: 62 72 65 61 6b 0a 09 09 69 66 20 7b 20 24 6c 69  break...if { $li
b9b0: 6e 65 69 6e 69 5f 69 6e 20 3e 20 24 6c 69 6e 65  neini_in > $line
b9c0: 65 6e 64 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a  end } { break }.
b9d0: 09 09 69 66 20 7b 20 24 6c 69 6e 65 69 6e 69 5f  ..if { $lineini_
b9e0: 69 6e 20 3d 3d 20 24 6c 69 6e 65 69 6e 69 20 26  in == $lineini &
b9f0: 26 20 24 6c 69 6e 65 65 6e 64 5f 69 6e 20 3d 3d  & $lineend_in ==
ba00: 20 24 6c 69 6e 65 65 6e 64 20 7d 20 7b 20 63 6f   $lineend } { co
ba10: 6e 74 69 6e 75 65 20 7d 0a 09 09 69 66 20 7b 20  ntinue }...if { 
ba20: 24 74 69 6d 65 5f 69 6e 20 3d 3d 20 22 22 20 7d  $time_in == "" }
ba30: 20 7b 0a 09 09 20 20 20 20 73 65 74 20 70 65 72   {...    set per
ba40: 63 65 6e 74 20 22 22 0a 09 09 7d 20 65 6c 73 65  cent ""...} else
ba50: 20 7b 0a 09 09 20 20 20 20 73 65 74 20 70 65 72   {...    set per
ba60: 63 65 6e 74 20 5b 65 78 70 72 20 24 74 69 6d 65  cent [expr $time
ba70: 5f 69 6e 2a 31 30 30 2f 64 6f 75 62 6c 65 28 24  _in*100/double($
ba80: 74 69 6d 65 29 5d 0a 09 09 20 20 20 20 69 6e 63  time)]...    inc
ba90: 72 20 73 75 6d 20 24 74 69 6d 65 5f 69 6e 0a 09  r sum $time_in..
baa0: 09 7d 0a 09 09 73 65 74 20 64 61 74 61 28 24 6e  .}...set data($n
bab0: 61 6d 65 5f 69 6e 29 20 5b 6c 69 73 74 20 24 68  ame_in) [list $h
bac0: 69 6c 65 76 65 6c 20 24 74 69 6d 65 5f 69 6e 20  ilevel $time_in 
bad0: 24 70 65 72 63 65 6e 74 5d 0a 09 20 20 20 20 7d  $percent]..    }
bae0: 0a 09 20 20 20 20 69 66 20 7b 20 24 73 75 6d 20  ..    if { $sum 
baf0: 3e 20 30 20 26 26 20 24 74 69 6d 65 20 21 3d 20  > 0 && $time != 
bb00: 22 22 20 26 26 20 24 73 75 6d 20 3c 20 24 74 69  "" && $sum < $ti
bb10: 6d 65 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d  me } {...set rem
bb20: 6e 61 6d 65 20 5b 5f 20 22 52 65 6d 61 69 6e 69  name [_ "Remaini
bb30: 6e 67 20 74 69 6d 65 20 66 6f 72 20 27 25 73 27  ng time for '%s'
bb40: 22 20 24 6e 61 6d 65 5d 0a 09 09 73 65 74 20 74  " $name]...set t
bb50: 69 6d 65 5f 72 65 6d 20 5b 65 78 70 72 20 24 74  ime_rem [expr $t
bb60: 69 6d 65 2d 24 73 75 6d 5d 0a 09 09 73 65 74 20  ime-$sum]...set 
bb70: 64 61 74 61 28 24 72 65 6d 6e 61 6d 65 29 20 5b  data($remname) [
bb80: 6c 69 73 74 20 24 68 69 6c 65 76 65 6c 20 24 74  list $hilevel $t
bb90: 69 6d 65 5f 72 65 6d 20 5b 65 78 70 72 20 24 74  ime_rem [expr $t
bba0: 69 6d 65 5f 72 65 6d 2a 31 30 30 2f 64 6f 75 62  ime_rem*100/doub
bbb0: 6c 65 28 24 74 69 6d 65 29 5d 5d 0a 09 09 6c 61  le($time)]]...la
bbc0: 70 70 65 6e 64 20 64 61 74 61 6e 61 6d 65 73 20  ppend datanames 
bbd0: 24 72 65 6d 6e 61 6d 65 0a 09 20 20 20 20 7d 0a  $remname..    }.
bbe0: 09 7d 0a 09 73 65 74 20 75 6e 69 74 6e 61 6d 65  .}..set unitname
bbf0: 20 24 6f 70 74 73 28 2d 64 69 73 70 6c 61 79 29   $opts(-display)
bc00: 0a 09 73 77 69 74 63 68 20 2d 2d 20 24 6f 70 74  ..switch -- $opt
bc10: 73 28 2d 64 69 73 70 6c 61 79 29 20 7b 0a 09 20  s(-display) {.. 
bc20: 20 20 20 6d 69 63 72 6f 73 65 63 20 7b 20 73 65     microsec { se
bc30: 74 20 75 6e 69 74 66 61 63 74 6f 72 20 31 20 3b  t unitfactor 1 ;
bc40: 20 73 65 74 20 66 6f 72 6d 61 74 20 25 69 20 7d   set format %i }
bc50: 0a 09 20 20 20 20 6d 69 6c 69 73 65 63 20 7b 20  ..    milisec { 
bc60: 73 65 74 20 75 6e 69 74 66 61 63 74 6f 72 20 31  set unitfactor 1
bc70: 65 2d 33 20 20 3b 20 73 65 74 20 66 6f 72 6d 61  e-3  ; set forma
bc80: 74 20 25 2e 34 67 20 7d 0a 09 20 20 20 20 73 65  t %.4g }..    se
bc90: 63 20 7b 20 73 65 74 20 75 6e 69 74 66 61 63 74  c { set unitfact
bca0: 6f 72 20 31 65 2d 36 20 20 3b 20 73 65 74 20 66  or 1e-6  ; set f
bcb0: 6f 72 6d 61 74 20 25 2e 34 67 20 7d 0a 09 20 20  ormat %.4g }..  
bcc0: 20 20 6d 69 6e 20 7b 20 73 65 74 20 75 6e 69 74    min { set unit
bcd0: 66 61 63 74 6f 72 20 31 65 2d 36 2f 36 30 2e 30  factor 1e-6/60.0
bce0: 20 20 3b 20 73 65 74 20 66 6f 72 6d 61 74 20 25    ; set format %
bcf0: 2e 34 67 20 7d 0a 09 20 20 20 20 64 65 66 61 75  .4g }..    defau
bd00: 6c 74 20 7b 0a 09 09 65 72 72 6f 72 20 5b 2d 20  lt {...error [- 
bd10: 22 45 72 72 6f 72 20 69 6e 20 64 69 73 70 6c 61  "Error in displa
bd20: 79 20 75 6e 69 74 73 2e 5c 6e 25 73 22 20 24 75  y units.\n%s" $u
bd30: 73 61 67 65 73 74 72 69 6e 67 5d 0a 09 20 20 20  sagestring]..   
bd40: 20 7d 0a 09 7d 0a 09 73 65 74 20 72 65 74 76 61   }..}..set retva
bd50: 6c 20 22 22 0a 09 66 6f 72 65 61 63 68 20 69 20  l ""..foreach i 
bd60: 24 64 61 74 61 6e 61 6d 65 73 20 7b 0a 09 20 20  $datanames {..  
bd70: 20 20 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20    append retval 
bd80: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
bd90: 2e 2e 2e 2e 2e 22 20 5b 6c 69 6e 64 65 78 20 24  ....." [lindex $
bda0: 64 61 74 61 28 24 69 29 20 30 5d 5d 0a 09 20 20  data($i) 0]]..  
bdb0: 20 20 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20    append retval 
bdc0: 24 69 0a 09 20 20 20 20 73 65 74 20 74 69 6d 65  $i..    set time
bdd0: 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61 28 24   [lindex $data($
bde0: 69 29 20 31 5d 0a 09 20 20 20 20 69 66 20 7b 20  i) 1]..    if { 
bdf0: 24 74 69 6d 65 20 21 3d 20 22 22 20 7d 20 7b 20  $time != "" } { 
be00: 73 65 74 20 74 69 6d 65 20 5b 66 6f 72 6d 61 74  set time [format
be10: 20 24 66 6f 72 6d 61 74 20 5b 65 78 70 72 20 24   $format [expr $
be20: 74 69 6d 65 2a 24 75 6e 69 74 66 61 63 74 6f 72  time*$unitfactor
be30: 5d 5d 20 7d 0a 09 20 20 20 20 61 70 70 65 6e 64  ]] }..    append
be40: 20 72 65 74 76 61 6c 20 22 20 24 74 69 6d 65 20   retval " $time 
be50: 24 75 6e 69 74 6e 61 6d 65 22 0a 09 20 20 20 20  $unitname"..    
be60: 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 64 61  if { [lindex $da
be70: 74 61 28 24 69 29 20 32 5d 20 21 3d 20 22 22 20  ta($i) 2] != "" 
be80: 26 26 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61  && [lindex $data
be90: 28 24 69 29 20 32 5d 20 21 3d 20 30 20 7d 20 7b  ($i) 2] != 0 } {
bea0: 0a 09 09 61 70 70 65 6e 64 20 72 65 74 76 61 6c  ...append retval
beb0: 20 22 20 28 5b 66 6f 72 6d 61 74 20 25 2e 33 67   " ([format %.3g
bec0: 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61 28 24   [lindex $data($
bed0: 69 29 20 32 5d 5d 25 29 22 0a 09 20 20 20 20 7d  i) 2]]%)"..    }
bee0: 0a 09 20 20 20 20 69 66 20 7b 24 74 69 6d 65 20  ..    if {$time 
bef0: 3d 3d 20 22 22 20 7d 20 7b 20 61 70 70 65 6e 64  == "" } { append
bf00: 20 72 65 74 76 61 6c 20 5b 5f 20 22 20 28 74 68   retval [_ " (th
bf10: 69 73 20 62 6c 6f 63 6b 20 6e 6f 74 20 65 78 65  is block not exe
bf20: 63 75 74 65 64 20 73 69 6e 63 65 20 73 74 61 72  cuted since star
bf30: 74 29 22 5d 20 7d 0a 09 20 20 20 20 61 70 70 65  t)"] }..    appe
bf40: 6e 64 20 72 65 74 76 61 6c 20 5c 6e 0a 09 7d 0a  nd retval \n..}.
bf50: 09 72 65 74 75 72 6e 20 24 72 65 74 76 61 6c 0a  .return $retval.
bf60: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21      }.    if { !
bf70: 24 6f 70 74 73 28 2d 61 64 64 29 20 7d 20 7b 0a  $opts(-add) } {.
bf80: 09 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72  .error [_ "Error
bf90: 3a 20 69 74 20 69 73 20 6e 65 63 65 73 73 61 72  : it is necessar
bfa0: 79 20 74 6f 20 73 65 6c 65 63 74 20 6f 6e 65 20  y to select one 
bfb0: 73 77 69 74 63 68 5c 6e 25 73 22 20 24 75 73 61  switch\n%s" $usa
bfc0: 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a  gestring].    }.
bfd0: 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 6e      if { $opts(n
bfe0: 61 6d 65 29 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  ame) == "" } {..
bff0: 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 3a  error [_ "Error:
c000: 20 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79   it is necessary
c010: 20 74 6f 20 65 6e 74 65 72 20 61 20 6e 61 6d 65   to enter a name
c020: 20 66 6f 72 20 74 68 65 20 62 6c 6f 63 6b 5c 6e   for the block\n
c030: 25 73 22 20 24 75 73 61 67 65 73 74 72 69 6e 67  %s" $usagestring
c040: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b  ].    }.    if {
c050: 20 21 5b 73 74 72 69 6e 67 20 69 73 20 69 6e 74   ![string is int
c060: 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 6f 70  eger -strict $op
c070: 74 73 28 6c 69 6e 65 69 6e 69 29 5d 20 7c 7c 20  ts(lineini)] || 
c080: 24 6f 70 74 73 28 6c 69 6e 65 69 6e 69 29 20 3c  $opts(lineini) <
c090: 20 31 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f   1 } {..error [_
c0a0: 20 22 45 72 72 6f 72 3a 20 6c 69 6e 65 69 6e 69   "Error: lineini
c0b0: 20 6d 75 73 74 20 62 65 20 61 20 70 6f 73 69 74   must be a posit
c0c0: 69 76 65 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20  ive number\n%s" 
c0d0: 24 75 73 61 67 65 73 74 72 69 6e 67 5d 0a 20 20  $usagestring].  
c0e0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 5b 73    }.    if { ![s
c0f0: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
c100: 20 2d 73 74 72 69 63 74 20 24 6f 70 74 73 28 6c   -strict $opts(l
c110: 69 6e 65 65 6e 64 29 5d 20 7c 7c 20 24 6f 70 74  ineend)] || $opt
c120: 73 28 6c 69 6e 65 65 6e 64 29 20 3c 20 31 20 7d  s(lineend) < 1 }
c130: 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 45 72   {..error [_ "Er
c140: 72 6f 72 3a 20 6c 69 6e 65 65 6e 64 20 6d 75 73  ror: lineend mus
c150: 74 20 62 65 20 61 20 70 6f 73 69 74 69 76 65 20  t be a positive 
c160: 6e 75 6d 62 65 72 5c 6e 25 73 22 20 24 75 73 61  number\n%s" $usa
c170: 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a  gestring].    }.
c180: 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 6c      if { $opts(l
c190: 69 6e 65 65 6e 64 29 20 3c 20 24 6f 70 74 73 28  ineend) < $opts(
c1a0: 6c 69 6e 65 69 6e 69 29 20 7d 20 7b 0a 09 65 72  lineini) } {..er
c1b0: 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 3a 20 6c  ror [_ "Error: l
c1c0: 69 6e 65 65 6e 64 20 63 61 6e 6e 6f 74 20 62 65  ineend cannot be
c1d0: 20 73 6d 61 6c 6c 65 72 20 74 68 61 6e 20 6c 69   smaller than li
c1e0: 6e 65 69 6e 69 5c 6e 25 73 22 20 24 75 73 61 67  neini\n%s" $usag
c1f0: 65 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20  estring].    }. 
c200: 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74     if { $current
c210: 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  file == "" } {..
c220: 65 72 72 6f 72 5b 5f 20 20 22 45 72 72 6f 72 3a  error[_  "Error:
c230: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 63 75 72   there is no cur
c240: 72 65 6e 74 20 66 69 6c 65 22 5d 0a 20 20 20 20  rent file"].    
c250: 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  }.    foreach i 
c260: 24 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61  $TimeMeasureData
c270: 20 7b 0a 09 66 6f 72 65 61 63 68 20 22 6e 61 6d   {..foreach "nam
c280: 65 20 66 69 6c 65 20 6c 69 6e 65 69 6e 69 20 6c  e file lineini l
c290: 69 6e 65 65 6e 64 20 6c 61 73 74 74 69 6d 65 22  ineend lasttime"
c2a0: 20 24 69 20 7b 0a 09 20 20 20 20 69 66 20 7b 20   $i {..    if { 
c2b0: 24 6e 61 6d 65 20 3d 3d 20 24 6f 70 74 73 28 6e  $name == $opts(n
c2c0: 61 6d 65 29 20 7d 20 7b 0a 09 09 65 72 72 6f 72  ame) } {...error
c2d0: 20 5b 5f 20 22 62 6c 6f 63 6b 20 6e 61 6d 65 20   [_ "block name 
c2e0: 27 25 73 27 20 61 6c 72 65 61 64 79 20 65 78 69  '%s' already exi
c2f0: 73 74 73 22 20 24 6f 70 74 73 28 6e 61 6d 65 29  sts" $opts(name)
c300: 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65  ]..    }..    se
c310: 74 20 66 61 69 6c 20 30 0a 09 20 20 20 20 69 66  t fail 0..    if
c320: 20 7b 20 24 6f 70 74 73 28 6c 69 6e 65 69 6e 69   { $opts(lineini
c330: 29 20 3c 20 24 6c 69 6e 65 69 6e 69 20 26 26 20  ) < $lineini && 
c340: 24 6f 70 74 73 28 6c 69 6e 65 65 6e 64 29 20 3e  $opts(lineend) >
c350: 3d 20 24 6c 69 6e 65 69 6e 69 20 26 26 20 5c 0a  = $lineini && \.
c360: 09 09 20 20 20 20 20 24 6f 70 74 73 28 6c 69 6e  ..     $opts(lin
c370: 65 65 6e 64 29 20 3c 20 24 6c 69 6e 65 65 6e 64  eend) < $lineend
c380: 20 7d 20 7b 20 73 65 74 20 66 61 69 6c 20 31 20   } { set fail 1 
c390: 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74  }..    if { $opt
c3a0: 73 28 6c 69 6e 65 69 6e 69 29 20 3e 20 24 6c 69  s(lineini) > $li
c3b0: 6e 65 69 6e 69 20 26 26 20 24 6f 70 74 73 28 6c  neini && $opts(l
c3c0: 69 6e 65 69 6e 69 29 20 3c 3d 20 24 6c 69 6e 65  ineini) <= $line
c3d0: 65 6e 64 20 26 26 20 0a 09 09 20 24 6f 70 74 73  end && ... $opts
c3e0: 28 6c 69 6e 65 65 6e 64 29 20 3e 20 24 6c 69 6e  (lineend) > $lin
c3f0: 65 65 6e 64 20 7d 20 7b 20 73 65 74 20 66 61 69  eend } { set fai
c400: 6c 20 31 20 7d 0a 09 20 20 20 20 69 66 20 7b 20  l 1 }..    if { 
c410: 24 66 61 69 6c 20 7d 20 7b 0a 09 09 65 72 72 6f  $fail } {...erro
c420: 72 20 5b 5f 20 22 45 72 72 6f 72 3a 20 62 6c 6f  r [_ "Error: blo
c430: 63 6b 20 69 73 20 63 72 6f 73 73 69 6e 67 20 77  ck is crossing w
c440: 69 74 68 20 62 6c 6f 63 6b 20 27 25 73 27 22 20  ith block '%s'" 
c450: 24 6e 61 6d 65 5d 0a 09 20 20 20 20 7d 0a 09 7d  $name]..    }..}
c460: 0a 20 20 20 20 7d 0a 20 20 20 20 70 72 6f 63 20  .    }.    proc 
c470: 53 6f 72 74 54 69 6d 65 4d 65 61 73 75 72 65 44  SortTimeMeasureD
c480: 61 74 61 20 7b 20 61 31 20 61 32 20 7d 20 7b 0a  ata { a1 a2 } {.
c490: 09 73 65 74 20 61 31 5f 6c 69 20 5b 6c 69 6e 64  .set a1_li [lind
c4a0: 65 78 20 24 61 31 20 32 5d 0a 09 73 65 74 20 61  ex $a1 2]..set a
c4b0: 31 5f 6c 65 20 5b 6c 69 6e 64 65 78 20 24 61 31  1_le [lindex $a1
c4c0: 20 33 5d 0a 09 73 65 74 20 61 32 5f 6c 69 20 5b   3]..set a2_li [
c4d0: 6c 69 6e 64 65 78 20 24 61 32 20 32 5d 0a 09 73  lindex $a2 2]..s
c4e0: 65 74 20 61 32 5f 6c 65 20 5b 6c 69 6e 64 65 78  et a2_le [lindex
c4f0: 20 24 61 32 20 33 5d 0a 09 0a 09 69 66 20 7b 20   $a2 3]....if { 
c500: 24 61 31 5f 6c 69 20 3c 20 24 61 32 5f 6c 69 20  $a1_li < $a2_li 
c510: 7d 20 7b 20 72 65 74 75 72 6e 20 2d 31 20 7d 0a  } { return -1 }.
c520: 09 69 66 20 7b 20 24 61 31 5f 6c 69 20 3e 20 24  .if { $a1_li > $
c530: 61 32 5f 6c 69 20 7d 20 7b 20 72 65 74 75 72 6e  a2_li } { return
c540: 20 31 20 7d 0a 09 69 66 20 7b 20 24 61 31 5f 6c   1 }..if { $a1_l
c550: 65 20 3e 20 24 61 32 5f 6c 65 20 7d 20 7b 20 72  e > $a2_le } { r
c560: 65 74 75 72 6e 20 2d 31 20 7d 0a 09 69 66 20 7b  eturn -1 }..if {
c570: 20 24 61 31 5f 6c 65 20 3c 20 24 61 32 5f 6c 65   $a1_le < $a2_le
c580: 20 7d 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 0a   } { return 1 }.
c590: 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d 0a  .return 0.    }.
c5a0: 20 20 20 20 6c 61 70 70 65 6e 64 20 54 69 6d 65      lappend Time
c5b0: 4d 65 61 73 75 72 65 44 61 74 61 20 5b 6c 69 73  MeasureData [lis
c5c0: 74 20 24 6f 70 74 73 28 6e 61 6d 65 29 20 24 63  t $opts(name) $c
c5d0: 75 72 72 65 6e 74 66 69 6c 65 20 24 6f 70 74 73  urrentfile $opts
c5e0: 28 6c 69 6e 65 69 6e 69 29 20 24 6f 70 74 73 28  (lineini) $opts(
c5f0: 6c 69 6e 65 65 6e 64 29 20 22 22 5d 0a 20 20 20  lineend) ""].   
c600: 20 73 65 74 20 54 69 6d 65 4d 65 61 73 75 72 65   set TimeMeasure
c610: 44 61 74 61 20 5b 6c 73 6f 72 74 20 2d 63 6f 6d  Data [lsort -com
c620: 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72  mand RamDebugger
c630: 3a 3a 53 6f 72 74 54 69 6d 65 4d 65 61 73 75 72  ::SortTimeMeasur
c640: 65 44 61 74 61 20 24 54 69 6d 65 4d 65 61 73 75  eData $TimeMeasu
c650: 72 65 44 61 74 61 5d 0a 0a 20 20 20 20 69 66 20  reData]..    if 
c660: 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69  { [info exists i
c670: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
c680: 54 69 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c  Time($currentfil
c690: 65 29 5d 20 7d 20 7b 0a 09 75 6e 73 65 74 20 69  e)] } {..unset i
c6a0: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
c6b0: 54 69 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c  Time($currentfil
c6c0: 65 29 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74  e).    }.    ret
c6d0: 75 72 6e 20 5b 5f 20 22 41 64 64 65 64 20 74 69  urn [_ "Added ti
c6e0: 6d 65 20 62 6c 6f 63 6b 20 27 25 73 27 22 20 24  me block '%s'" $
c6f0: 6f 70 74 73 28 6e 61 6d 65 29 5d 0a 7d 0a 0a 70  opts(name)].}..p
c700: 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
c710: 3a 72 6c 69 73 74 20 7b 20 61 72 67 73 20 7d 20  :rlist { args } 
c720: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  {.    variable c
c730: 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76  urrentfile.    v
c740: 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
c750: 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20  ile_endline.    
c760: 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74  variable current
c770: 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c  line.    variabl
c780: 65 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d  e currentfileIsM
c790: 6f 64 69 66 69 65 64 0a 20 20 20 20 76 61 72 69  odified.    vari
c7a0: 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76  able files.    v
c7b0: 61 72 69 61 62 6c 65 20 66 69 6c 65 73 5f 65 6e  ariable files_en
c7c0: 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62  dline.    variab
c7d0: 6c 65 20 66 69 6c 65 73 6d 74 69 6d 65 0a 20 20  le filesmtime.  
c7e0: 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73    variable files
c7f0: 6c 69 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c  list.    variabl
c800: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
c810: 6c 65 73 50 0a 20 20 20 20 76 61 72 69 61 62 6c  lesP.    variabl
c820: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
c830: 6c 65 73 52 0a 20 20 20 20 76 61 72 69 61 62 6c  lesR.    variabl
c840: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  e instrumentedfi
c850: 6c 65 73 54 69 6d 65 0a 20 20 20 20 76 61 72 69  lesTime.    vari
c860: 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
c870: 64 66 69 6c 65 73 53 65 6e 74 0a 20 20 20 20 76  dfilesSent.    v
c880: 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65  ariable instrume
c890: 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20 20  ntedfilesInfo.  
c8a0: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74    variable remot
c8b0: 65 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 69  eserver.    vari
c8c0: 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65  able remoteserve
c8d0: 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 62  rType.    variab
c8e0: 6c 65 20 64 65 62 75 67 67 65 72 73 74 61 74 65  le debuggerstate
c8f0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 54 69  .    variable Ti
c900: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 0a 20 20  meMeasureData.  
c910: 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
c920: 6e 73 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67  ns..    set usag
c930: 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20  estring {usage: 
c940: 72 6c 69 73 74 20 3f 73 77 69 74 63 68 65 73 3f  rlist ?switches?
c950: 20 3f 66 69 6c 65 3f 20 3f 6c 69 6e 65 3f 0a 09   ?file? ?line?..
c960: 2d 68 3a 20 20 20 20 20 20 20 20 20 20 20 20 64  -h:            d
c970: 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a 09 2d  isplays usage..-
c980: 71 75 69 65 74 3a 20 20 20 20 20 20 20 20 64 6f  quiet:        do
c990: 20 6e 6f 74 20 70 72 69 6e 74 20 61 6e 79 74 68   not print anyth
c9a0: 69 6e 67 0a 09 2d 66 6f 72 63 65 3a 20 20 20 20  ing..-force:    
c9b0: 20 20 20 20 66 6f 72 63 65 20 74 6f 20 72 65 6c      force to rel
c9c0: 6f 61 64 20 66 69 6c 65 0a 09 2d 72 65 69 6e 73  oad file..-reins
c9d0: 74 72 75 6d 65 6e 74 3a 20 66 6f 72 63 65 20 74  trument: force t
c9e0: 6f 20 72 65 69 6e 73 74 72 75 6d 65 6e 74 0a 09  o reinstrument..
c9f0: 2d 72 65 73 65 6e 64 3a 20 20 20 20 20 20 20 66  -resend:       f
ca00: 6f 72 63 65 20 74 6f 20 73 65 6e 64 20 61 67 61  orce to send aga
ca10: 69 6e 0a 09 2d 61 73 6d 61 69 6e 66 69 6c 65 3a  in..-asmainfile:
ca20: 20 20 20 57 68 65 6e 20 64 65 62 75 67 67 69 6e     When debuggin
ca30: 67 20 6c 6f 63 61 6c 6c 79 2c 20 74 68 65 20 66  g locally, the f
ca40: 69 72 73 74 20 66 69 6c 65 2c 20 66 69 72 73 74  irst file, first
ca50: 20 74 69 6d 65 20 20 6d 75 73 74 20 62 65 20 6c   time  must be l
ca60: 69 73 74 20 6c 69 6b 65 20 74 68 69 73 0a 09 2d  ist like this..-
ca70: 72 65 74 75 72 6e 64 61 74 61 3a 20 20 20 49 6e  returndata:   In
ca80: 73 74 65 61 64 20 6f 66 20 73 65 6e 64 69 6e 67  stead of sending
ca90: 20 69 6e 73 74 72 20 66 69 6c 65 2c 20 72 65 74   instr file, ret
caa0: 75 72 6e 20 69 74 0a 09 2d 65 6e 63 6f 64 69 6e  urn it..-encodin
cab0: 67 20 65 6e 63 3a 20 6f 70 65 6e 20 66 69 6c 65  g enc: open file
cac0: 20 77 69 74 68 20 74 68 65 20 67 69 76 65 6e 20   with the given 
cad0: 65 6e 63 6f 64 69 6e 67 0a 09 2d 72 65 74 75 72  encoding..-retur
cae0: 6e 5f 65 72 72 6f 72 3a 20 20 49 6e 73 74 65 61  n_error:  Instea
caf0: 64 20 6f 66 20 6f 70 65 6e 69 6e 67 20 61 20 77  d of opening a w
cb00: 61 72 6e 69 6e 67 20 77 69 6e 64 6f 77 2c 20 72  arning window, r
cb10: 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 0a  eturns an error.
cb20: 09 2d 2d 3a 20 20 20 20 20 20 20 20 20 20 20 20  .--:            
cb30: 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 20  end of options. 
cb40: 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72     }.    ParseAr
cb50: 67 73 20 24 61 72 67 73 20 24 75 73 61 67 65 73  gs $args $usages
cb60: 74 72 69 6e 67 20 6f 70 74 73 0a 20 20 20 20 73  tring opts.    s
cb70: 65 74 20 66 6f 72 63 65 20 24 6f 70 74 73 28 2d  et force $opts(-
cb80: 66 6f 72 63 65 29 0a 20 20 20 20 73 65 74 20 72  force).    set r
cb90: 65 69 6e 73 74 72 75 6d 65 6e 74 20 24 6f 70 74  einstrument $opt
cba0: 73 28 2d 72 65 69 6e 73 74 72 75 6d 65 6e 74 29  s(-reinstrument)
cbb0: 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 73 74 72  ..    if { ![str
cbc0: 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20 24  ing is integer $
cbd0: 6f 70 74 73 28 6c 69 6e 65 29 5d 20 7d 20 7b 0a  opts(line)] } {.
cbe0: 09 65 72 72 6f 72 20 5b 5f 20 22 6c 69 6e 65 20  .error [_ "line 
cbf0: 27 25 73 27 20 6d 75 73 74 20 62 65 20 61 20 6e  '%s' must be a n
cc00: 75 6d 62 65 72 5c 6e 25 73 22 20 24 6f 70 74 73  umber\n%s" $opts
cc10: 28 6c 69 6e 65 29 20 24 75 73 61 67 65 73 74 72  (line) $usagestr
cc20: 69 6e 67 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ing].    }..    
cc30: 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  set currentfile_
cc40: 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c  save $currentfil
cc50: 65 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e  e.    set curren
cc60: 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61  tfile_endline_sa
cc70: 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f  ve $currentfile_
cc80: 65 6e 64 6c 69 6e 65 0a 20 20 20 20 69 66 20 7b  endline.    if {
cc90: 20 24 6f 70 74 73 28 66 69 6c 65 29 20 21 3d 20   $opts(file) != 
cca0: 22 22 20 7d 20 7b 20 73 65 74 20 63 75 72 72 65  "" } { set curre
ccb0: 6e 74 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d  ntfile [filenorm
ccc0: 61 6c 69 7a 65 20 24 6f 70 74 73 28 66 69 6c 65  alize $opts(file
ccd0: 29 5d 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24  )] }..    if { $
cce0: 63 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22  currentfile == "
ccf0: 22 20 7d 20 7b 0a 09 73 65 74 20 63 75 72 72 65  " } {..set curre
cd00: 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66  ntfile $currentf
cd10: 69 6c 65 5f 73 61 76 65 0a 09 73 65 74 20 63 75  ile_save..set cu
cd20: 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e  rrentfile_endlin
cd30: 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65  e $currentfile_e
cd40: 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 09 65 72 72  ndline_save..err
cd50: 6f 72 20 5b 5f 20 22 69 74 20 69 73 20 6e 65 63  or [_ "it is nec
cd60: 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20  essary to enter 
cd70: 61 20 66 69 6c 65 20 6e 61 6d 65 5c 6e 25 73 22  a file name\n%s"
cd80: 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d 0a 20   $usagestring]. 
cd90: 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 66 69     }..    set fi
cda0: 6c 65 74 79 70 65 20 5b 47 69 76 65 46 69 6c 65  letype [GiveFile
cdb0: 54 79 70 65 20 24 63 75 72 72 65 6e 74 66 69 6c  Type $currentfil
cdc0: 65 5d 0a 20 20 20 20 23 20 20 20 20 20 69 66 20  e].    #     if 
cdd0: 7b 20 5b 72 65 67 65 78 70 20 7b 5c 2e 28 68 7c  { [regexp {\.(h|
cde0: 63 7c 63 63 29 24 7d 20 24 63 75 72 72 65 6e 74  c|cc)$} $current
cdf0: 66 69 6c 65 5d 20 7d 20 7b 0a 20 20 20 20 23 20  file] } {.    # 
ce00: 20 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65          set file
ce10: 74 79 70 65 20 63 2b 2b 0a 20 20 20 20 23 20 20  type c++.    #  
ce20: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
ce30: 23 20 20 20 20 20 20 20 20 20 73 65 74 20 66 69  #         set fi
ce40: 6c 65 74 79 70 65 20 74 63 6c 0a 20 20 20 20 23  letype tcl.    #
ce50: 20 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20       }.    if { 
ce60: 24 63 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20  $currentfile == 
ce70: 22 2a 4d 61 63 72 6f 73 2a 22 20 26 26 20 21 24  "*Macros*" && !$
ce80: 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64  currentfileIsMod
ce90: 69 66 69 65 64 20 26 26 20 5c 0a 09 20 20 20 20  ified && \..    
cea0: 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69   ![info exists i
ceb0: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
cec0: 50 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d  P($currentfile)]
ced0: 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 73 28   } {..set files(
cee0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 47  $currentfile) [G
cef0: 69 76 65 4d 61 63 72 6f 73 44 6f 63 75 6d 65 6e  iveMacrosDocumen
cf00: 74 5d 0a 09 73 65 74 20 66 69 6c 65 73 5f 65 6e  t]..set files_en
cf10: 64 6c 69 6e 65 28 24 63 75 72 72 65 6e 74 66 69  dline($currentfi
cf20: 6c 65 29 20 61 75 74 6f 0a 0a 09 69 66 20 7b 20  le) auto...if { 
cf30: 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24 66 69  [lsearchfile $fi
cf40: 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 6e 74  leslist $current
cf50: 66 69 6c 65 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a  file] == -1 } {.
cf60: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 66 69 6c  .    lappend fil
cf70: 65 73 6c 69 73 74 20 24 63 75 72 72 65 6e 74 66  eslist $currentf
cf80: 69 6c 65 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e  ile..}..if { [in
cf90: 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75  fo exists instru
cfa0: 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 28  mentedfilesTime(
cfb0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d  $currentfile)] }
cfc0: 20 7b 0a 09 20 20 20 20 75 6e 73 65 74 20 69 6e   {..    unset in
cfd0: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54  strumentedfilesT
cfe0: 69 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65  ime($currentfile
cff0: 29 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  )..}.    }..    
d000: 69 66 20 7b 20 28 24 63 75 72 72 65 6e 74 66 69  if { ($currentfi
d010: 6c 65 20 3d 3d 20 22 2a 4e 65 77 20 66 69 6c 65  le == "*New file
d020: 2a 22 20 7c 7c 20 24 63 75 72 72 65 6e 74 66 69  *" || $currentfi
d030: 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 29 20 26  leIsModified ) &
d040: 26 20 5c 0a 09 20 20 20 20 20 21 5b 69 6e 66 6f  & \..     ![info
d050: 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65   exists instrume
d060: 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 72 72  ntedfilesP($curr
d070: 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 76  entfile)] } {..v
d080: 61 72 69 61 62 6c 65 20 74 65 78 74 0a 09 69 66  ariable text..if
d090: 20 7b 20 24 6f 70 74 69 6f 6e 73 28 73 70 61 63   { $options(spac
d0a0: 65 73 5f 74 6f 5f 74 61 62 73 29 20 7d 20 7b 0a  es_to_tabs) } {.
d0b0: 09 20 20 20 20 73 65 74 20 6d 61 70 20 5b 6c 69  .    set map [li
d0c0: 73 74 20 22 5c 6e 5b 73 74 72 69 6e 67 20 72 65  st "\n[string re
d0d0: 70 65 61 74 20 7b 20 7d 20 31 36 5d 22 20 22 5c  peat { } 16]" "\
d0e0: 6e 5c 74 5c 74 22 20 22 5c 6e 5b 73 74 72 69 6e  n\t\t" "\n[strin
d0f0: 67 20 72 65 70 65 61 74 20 7b 20 7d 20 38 5d 22  g repeat { } 8]"
d100: 20 22 5c 6e 5c 74 22 5d 0a 09 7d 20 65 6c 73 65   "\n\t"]..} else
d110: 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 61 70 20   {..    set map 
d120: 22 22 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 73  ""..}..set files
d130: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b  ($currentfile) [
d140: 73 74 72 69 6e 67 20 6d 61 70 20 24 6d 61 70 20  string map $map 
d150: 5b 24 74 65 78 74 20 67 65 74 20 31 2e 30 20 65  [$text get 1.0 e
d160: 6e 64 2d 31 63 5d 5d 0a 09 73 65 74 20 66 69 6c  nd-1c]]..set fil
d170: 65 73 5f 65 6e 64 6c 69 6e 65 28 24 63 75 72 72  es_endline($curr
d180: 65 6e 74 66 69 6c 65 29 20 24 63 75 72 72 65 6e  entfile) $curren
d190: 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 0a 09  tfile_endline...
d1a0: 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 66 69 6c  if { [lsearchfil
d1b0: 65 20 24 66 69 6c 65 73 6c 69 73 74 20 24 63 75  e $fileslist $cu
d1c0: 72 72 65 6e 74 66 69 6c 65 5d 20 3d 3d 20 2d 31  rrentfile] == -1
d1d0: 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e   } {..    lappen
d1e0: 64 20 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72  d fileslist $cur
d1f0: 72 65 6e 74 66 69 6c 65 0a 09 7d 0a 09 69 66 20  rentfile..}..if 
d200: 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69  { [info exists i
d210: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
d220: 54 69 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c  Time($currentfil
d230: 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 75 6e 73  e)] } {..    uns
d240: 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66  et instrumentedf
d250: 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72 65 6e  ilesTime($curren
d260: 74 66 69 6c 65 29 0a 09 7d 0a 20 20 20 20 7d 0a  tfile)..}.    }.
d270: 20 20 20 20 69 66 20 7b 20 5b 6c 73 65 61 72 63      if { [lsearc
d280: 68 66 69 6c 65 20 24 66 69 6c 65 73 6c 69 73 74  hfile $fileslist
d290: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 3d   $currentfile] =
d2a0: 3d 20 2d 31 20 7d 20 7b 0a 09 6c 61 70 70 65 6e  = -1 } {..lappen
d2b0: 64 20 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72  d fileslist $cur
d2c0: 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 7d 0a 0a  rentfile.    }..
d2d0: 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20      if { ![info 
d2e0: 65 78 69 73 74 73 20 66 69 6c 65 73 28 24 63 75  exists files($cu
d2f0: 72 72 65 6e 74 66 69 6c 65 29 5d 20 7c 7c 20 24  rrentfile)] || $
d300: 66 6f 72 63 65 7d 20 7b 0a 09 0a 09 73 65 74 20  force} {....set 
d310: 65 72 72 20 5b 63 61 74 63 68 20 5b 6c 69 73 74  err [catch [list
d320: 20 6f 70 65 6e 20 24 63 75 72 72 65 6e 74 66 69   open $currentfi
d330: 6c 65 20 72 5d 20 66 69 6e 5d 0a 09 69 66 20 7b  le r] fin]..if {
d340: 20 24 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 73   $err } {..    s
d350: 65 74 20 66 69 6c 65 74 72 79 20 24 63 75 72 72  et filetry $curr
d360: 65 6e 74 66 69 6c 65 0a 09 20 20 20 20 73 65 74  entfile..    set
d370: 20 63 75 72 72 65 6e 74 66 69 6c 65 20 24 63 75   currentfile $cu
d380: 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65 0a 09  rrentfile_save..
d390: 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66      set currentf
d3a0: 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72  ile_endline $cur
d3b0: 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  rentfile_endline
d3c0: 5f 73 61 76 65 0a 09 20 20 20 20 65 72 72 6f 72  _save..    error
d3d0: 20 5b 5f 20 22 66 69 6c 65 20 27 25 73 27 20 64   [_ "file '%s' d
d3e0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 5c 6e 25  oes not exist\n%
d3f0: 73 22 20 24 66 69 6c 65 74 72 79 20 24 75 73 61  s" $filetry $usa
d400: 67 65 73 74 72 69 6e 67 5d 0a 09 7d 0a 09 73 65  gestring]..}..se
d410: 74 20 66 63 6f 6e 66 20 5b 66 63 6f 6e 66 69 67  t fconf [fconfig
d420: 75 72 65 20 24 66 69 6e 5d 0a 09 66 63 6f 6e 66  ure $fin]..fconf
d430: 69 67 75 72 65 20 24 66 69 6e 20 2d 74 72 61 6e  igure $fin -tran
d440: 73 6c 61 74 69 6f 6e 20 62 69 6e 61 72 79 0a 09  slation binary..
d450: 73 65 74 20 68 65 61 64 65 72 20 5b 72 65 61 64  set header [read
d460: 20 24 66 69 6e 20 31 30 32 34 5d 0a 09 73 65 65   $fin 1024]..see
d470: 6b 20 24 66 69 6e 20 30 0a 09 66 63 6f 6e 66 69  k $fin 0..fconfi
d480: 67 75 72 65 20 24 66 69 6e 20 7b 2a 7d 24 66 63  gure $fin {*}$fc
d490: 6f 6e 66 0a 09 69 66 20 7b 20 24 6f 70 74 73 28  onf..if { $opts(
d4a0: 2d 65 6e 63 6f 64 69 6e 67 29 20 21 3d 20 30 20  -encoding) != 0 
d4b0: 26 26 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69  && $opts(-encodi
d4c0: 6e 67 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20  ng) != "" } {.. 
d4d0: 20 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 66     fconfigure $f
d4e0: 69 6e 20 2d 65 6e 63 6f 64 69 6e 67 20 24 6f 70  in -encoding $op
d4f0: 74 73 28 2d 65 6e 63 6f 64 69 6e 67 29 0a 09 7d  ts(-encoding)..}
d500: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74   else {..    set
d510: 20 72 65 78 20 7b 2d 5c 2a 2d 2e 2a 63 6f 64 69   rex {-\*-.*codi
d520: 6e 67 3a 5c 73 2a 75 74 66 2d 38 5c 73 2a 3b 2e  ng:\s*utf-8\s*;.
d530: 2a 2d 5c 2a 2d 7c 65 6e 63 6f 64 69 6e 67 3d 5b  *-\*-|encoding=[
d540: 27 5c 22 5d 75 74 66 2d 38 5b 27 5c 22 5d 7d 0a  '\"]utf-8['\"]}.
d550: 09 20 20 20 20 61 70 70 65 6e 64 20 72 65 78 20  .    append rex 
d560: 7b 7c 3c 5c 3f 78 6d 6c 5c 73 2b 76 65 72 73 69  {|<\?xml\s+versi
d570: 6f 6e 3d 5c 53 2b 5c 73 2a 5c 3f 3e 7d 0a 09 20  on=\S+\s*\?>}.. 
d580: 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20     if { [regexp 
d590: 2d 6e 6f 63 61 73 65 20 2d 6c 69 6e 65 20 2d 2d  -nocase -line --
d5a0: 20 24 72 65 78 20 24 68 65 61 64 65 72 5d 20 7d   $rex $header] }
d5b0: 20 7b 0a 09 09 66 63 6f 6e 66 69 67 75 72 65 20   {...fconfigure 
d5c0: 24 66 69 6e 20 2d 65 6e 63 6f 64 69 6e 67 20 75  $fin -encoding u
d5d0: 74 66 2d 38 0a 09 20 20 20 20 7d 0a 09 7d 0a 09  tf-8..    }..}..
d5e0: 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  set currentfile_
d5f0: 65 6e 64 6c 69 6e 65 20 61 75 74 6f 0a 09 73 65  endline auto..se
d600: 74 20 6c 65 6e 20 5b 73 74 72 69 6e 67 20 6c 65  t len [string le
d610: 6e 67 74 68 20 24 68 65 61 64 65 72 5d 0a 09 69  ngth $header]..i
d620: 66 20 7b 20 24 6c 65 6e 20 3e 20 30 20 7d 20 7b  f { $len > 0 } {
d630: 0a 09 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65  ..    if { [rege
d640: 78 70 20 2d 61 6c 6c 20 7b 5c 72 5c 6e 7d 20 24  xp -all {\r\n} $
d650: 68 65 61 64 65 72 5d 2a 31 2e 30 2f 24 6c 65 6e  header]*1.0/$len
d660: 20 3e 3d 20 30 2e 30 30 35 20 7d 20 7b 0a 09 09   >= 0.005 } {...
d670: 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  set currentfile_
d680: 65 6e 64 6c 69 6e 65 20 63 72 6c 66 0a 09 20 20  endline crlf..  
d690: 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65    } elseif { [re
d6a0: 67 65 78 70 20 2d 61 6c 6c 20 7b 5c 6e 7d 20 24  gexp -all {\n} $
d6b0: 68 65 61 64 65 72 5d 2a 31 2e 30 2f 24 6c 65 6e  header]*1.0/$len
d6c0: 20 3e 3d 20 30 2e 30 30 35 20 7d 20 7b 0a 09 09   >= 0.005 } {...
d6d0: 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  set currentfile_
d6e0: 65 6e 64 6c 69 6e 65 20 6c 66 0a 09 20 20 20 20  endline lf..    
d6f0: 7d 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 73 28  }..}..set files(
d700: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 72  $currentfile) [r
d710: 65 61 64 20 24 66 69 6e 5d 0a 09 73 65 74 20 66  ead $fin]..set f
d720: 69 6c 65 73 5f 65 6e 64 6c 69 6e 65 28 24 63 75  iles_endline($cu
d730: 72 72 65 6e 74 66 69 6c 65 29 20 24 63 75 72 72  rrentfile) $curr
d740: 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a  entfile_endline.
d750: 09 63 6c 6f 73 65 20 24 66 69 6e 0a 09 69 66 20  .close $fin..if 
d760: 7b 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24  { [lsearchfile $
d770: 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65  fileslist $curre
d780: 6e 74 66 69 6c 65 5d 20 3d 3d 20 2d 31 20 7d 20  ntfile] == -1 } 
d790: 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 66  {..    lappend f
d7a0: 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 6e  ileslist $curren
d7b0: 74 66 69 6c 65 0a 09 7d 0a 09 73 65 74 20 66 69  tfile..}..set fi
d7c0: 6c 65 73 6d 74 69 6d 65 28 24 63 75 72 72 65 6e  lesmtime($curren
d7d0: 74 66 69 6c 65 29 20 5b 66 69 6c 65 20 6d 74 69  tfile) [file mti
d7e0: 6d 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d  me $currentfile]
d7f0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
d800: 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65  et currentfile_e
d810: 6e 64 6c 69 6e 65 20 24 66 69 6c 65 73 5f 65 6e  ndline $files_en
d820: 64 6c 69 6e 65 28 24 63 75 72 72 65 6e 74 66 69  dline($currentfi
d830: 6c 65 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69  le).    }..    i
d840: 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74  f { ![info exist
d850: 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  s instrumentedfi
d860: 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74  lesInfo($current
d870: 66 69 6c 65 29 5d 20 26 26 20 21 24 66 6f 72 63  file)] && !$forc
d880: 65 20 26 26 20 21 24 72 65 69 6e 73 74 72 75 6d  e && !$reinstrum
d890: 65 6e 74 20 7d 20 7b 0a 09 73 65 74 20 69 6e 66  ent } {..set inf
d8a0: 6f 66 69 6c 65 20 5b 47 69 76 65 49 6e 73 74 46  ofile [GiveInstF
d8b0: 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ile $currentfile
d8c0: 20 31 20 49 5d 0a 09 69 66 20 7b 20 24 69 6e 66   1 I]..if { $inf
d8d0: 6f 66 69 6c 65 20 21 3d 20 22 22 20 7d 20 7b 0a  ofile != "" } {.
d8e0: 09 20 20 20 20 73 65 74 20 66 69 6e 20 5b 6f 70  .    set fin [op
d8f0: 65 6e 20 24 69 6e 66 6f 66 69 6c 65 20 72 5d 0a  en $infofile r].
d900: 09 20 20 20 20 73 65 74 20 69 6e 73 74 72 75 6d  .    set instrum
d910: 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24  entedfilesInfo($
d920: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 72 65  currentfile) [re
d930: 61 64 20 24 66 69 6e 5d 0a 09 20 20 20 20 63 6c  ad $fin]..    cl
d940: 6f 73 65 20 24 66 69 6e 0a 09 7d 0a 20 20 20 20  ose $fin..}.    
d950: 7d 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65  }.    if { [rege
d960: 78 70 20 2d 2d 20 7b 2d 5c 2a 2d 28 2e 2a 3f 29  xp -- {-\*-(.*?)
d970: 2d 5c 2a 2d 7d 20 5b 73 74 72 69 6e 67 20 72 61  -\*-} [string ra
d980: 6e 67 65 20 24 66 69 6c 65 73 28 24 63 75 72 72  nge $files($curr
d990: 65 6e 74 66 69 6c 65 29 20 30 20 32 35 36 5d 20  entfile) 0 256] 
d9a0: 7b 7d 20 65 6d 61 63 73 5f 6d 6f 64 65 5d 20 7d  {} emacs_mode] }
d9b0: 20 7b 0a 09 69 66 20 7b 20 21 5b 72 65 67 65 78   {..if { ![regex
d9c0: 70 20 7b 6d 6f 64 65 3a 5c 73 2a 28 5c 77 2b 29  p {mode:\s*(\w+)
d9d0: 7d 20 24 65 6d 61 63 73 5f 6d 6f 64 65 20 7b 7d  } $emacs_mode {}
d9e0: 20 65 6d 61 63 73 5f 6d 6f 64 65 5d 20 7d 20 7b   emacs_mode] } {
d9f0: 0a 09 20 20 20 20 73 65 74 20 65 6d 61 63 73 5f  ..    set emacs_
da00: 6d 6f 64 65 20 5b 73 74 72 69 6e 67 20 74 72 69  mode [string tri
da10: 6d 20 24 65 6d 61 63 73 5f 6d 6f 64 65 5d 0a 09  m $emacs_mode]..
da20: 7d 0a 09 73 77 69 74 63 68 20 2d 6e 6f 63 61 73  }..switch -nocas
da30: 65 20 2d 2d 20 24 65 6d 61 63 73 5f 6d 6f 64 65  e -- $emacs_mode
da40: 20 7b 0a 09 20 20 20 20 74 63 6c 20 7b 20 73 65   {..    tcl { se
da50: 74 20 66 69 6c 65 74 79 70 65 20 54 43 4c 20 7d  t filetype TCL }
da60: 0a 09 20 20 20 20 78 6d 6c 20 7b 20 73 65 74 20  ..    xml { set 
da70: 66 69 6c 65 74 79 70 65 20 58 4d 4c 20 7d 0a 09  filetype XML }..
da80: 20 20 20 20 63 2b 2b 20 2d 20 63 20 7b 20 73 65      c++ - c { se
da90: 74 20 66 69 6c 65 74 79 70 65 20 22 43 2f 43 2b  t filetype "C/C+
daa0: 2b 22 20 7d 0a 09 20 20 20 20 4d 61 6b 65 66 69  +" }..    Makefi
dab0: 6c 65 20 7b 20 73 65 74 20 66 69 6c 65 74 79 70  le { set filetyp
dac0: 65 20 22 4d 61 6b 65 66 69 6c 65 22 20 7d 0a 09  e "Makefile" }..
dad0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b  }.    }.    if {
dae0: 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 54   $filetype == "T
daf0: 43 4c 22 20 26 26 20 21 5b 69 6e 66 6f 20 65 78  CL" && ![info ex
db00: 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65  ists instrumente
db10: 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e 74  dfilesP($current
db20: 66 69 6c 65 29 5d 20 5c 0a 09 20 20 20 20 20 26  file)] \..     &
db30: 26 20 21 24 66 6f 72 63 65 20 26 26 20 21 24 72  & !$force && !$r
db40: 65 69 6e 73 74 72 75 6d 65 6e 74 20 26 26 20 21  einstrument && !
db50: 24 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f  $currentfileIsMo
db60: 64 69 66 69 65 64 20 7d 20 7b 0a 09 73 65 74 20  dified } {..set 
db70: 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 68  filenum [lsearch
db80: 66 69 6c 65 20 24 66 69 6c 65 73 6c 69 73 74 20  file $fileslist 
db90: 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 0a 09  $currentfile]...
dba0: 66 6f 72 65 61 63 68 20 69 20 5b 6c 69 73 74 20  foreach i [list 
dbb0: 50 20 52 5d 20 7b 0a 09 20 20 20 20 73 65 74 20  P R] {..    set 
dbc0: 69 6e 73 74 66 69 6c 65 20 5b 47 69 76 65 49 6e  instfile [GiveIn
dbd0: 73 74 46 69 6c 65 20 24 63 75 72 72 65 6e 74 66  stFile $currentf
dbe0: 69 6c 65 20 31 20 24 69 5d 0a 0a 09 20 20 20 20  ile 1 $i]...    
dbf0: 69 66 20 7b 20 24 69 6e 73 74 66 69 6c 65 20 21  if { $instfile !
dc00: 3d 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 66  = "" } {...set f
dc10: 69 6e 20 5b 6f 70 65 6e 20 24 69 6e 73 74 66 69  in [open $instfi
dc20: 6c 65 20 72 5d 0a 09 09 69 66 20 7b 20 24 6f 70  le r]...if { $op
dc30: 74 73 28 2d 65 6e 63 6f 64 69 6e 67 29 20 21 3d  ts(-encoding) !=
dc40: 20 30 20 26 26 20 24 6f 70 74 73 28 2d 65 6e 63   0 && $opts(-enc
dc50: 6f 64 69 6e 67 29 20 21 3d 20 22 22 20 7d 20 7b  oding) != "" } {
dc60: 0a 09 09 20 20 20 20 66 63 6f 6e 66 69 67 75 72  ...    fconfigur
dc70: 65 20 24 66 69 6e 20 2d 65 6e 63 6f 64 69 6e 67  e $fin -encoding
dc80: 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69 6e 67   $opts(-encoding
dc90: 29 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20  )...} else {... 
dca0: 20 20 20 73 65 74 20 68 65 61 64 65 72 20 5b 72     set header [r
dcb0: 65 61 64 20 24 66 69 6e 20 32 35 36 5d 0a 09 09  ead $fin 256]...
dcc0: 20 20 20 20 73 65 74 20 72 65 78 20 7b 2d 5c 2a      set rex {-\*
dcd0: 2d 2e 2a 63 6f 64 69 6e 67 3a 5c 73 2a 75 74 66  -.*coding:\s*utf
dce0: 2d 38 5c 73 2a 3b 2e 2a 2d 5c 2a 2d 7c 65 6e 63  -8\s*;.*-\*-|enc
dcf0: 6f 64 69 6e 67 3d 5b 27 5c 22 5d 75 74 66 2d 38  oding=['\"]utf-8
dd00: 5b 27 5c 22 5d 7d 0a 09 09 20 20 20 20 69 66 20  ['\"]}...    if 
dd10: 7b 20 5b 72 65 67 65 78 70 20 2d 6e 6f 63 61 73  { [regexp -nocas
dd20: 65 20 2d 6c 69 6e 65 20 2d 2d 20 24 72 65 78 20  e -line -- $rex 
dd30: 24 68 65 61 64 65 72 5d 20 7d 20 7b 0a 09 09 20  $header] } {... 
dd40: 20 20 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72         fconfigur
dd50: 65 20 24 66 69 6e 20 2d 65 6e 63 6f 64 69 6e 67  e $fin -encoding
dd60: 20 75 74 66 2d 38 0a 09 09 20 20 20 20 7d 0a 09   utf-8...    }..
dd70: 09 20 20 20 20 73 65 65 6b 20 24 66 69 6e 20 30  .    seek $fin 0
dd80: 0a 09 09 7d 0a 09 09 73 65 74 20 69 6e 73 74 72  ...}...set instr
dd90: 75 6d 65 6e 74 65 64 66 69 6c 65 73 24 7b 69 7d  umentedfiles${i}
dda0: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b  ($currentfile) [
ddb0: 72 65 61 64 20 24 66 69 6e 5d 0a 09 09 0a 09 09  read $fin]......
ddc0: 73 65 74 20 6f 6c 64 66 69 6c 65 6e 75 6d 20 30  set oldfilenum 0
ddd0: 20 3b 23 20 66 6f 72 20 66 69 6c 65 73 20 74 68   ;# for files th
dde0: 61 74 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 61  at do not have a
ddf0: 6e 79 20 69 6e 73 74 72 75 6d 2e 20 6c 69 6e 65  ny instrum. line
de00: 0a 09 09 72 65 67 65 78 70 20 7b 52 44 43 3a 3a  ...regexp {RDC::
de10: 46 20 28 5b 2d 30 2d 39 5d 2b 29 7d 20 5b 73 65  F ([-0-9]+)} [se
de20: 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  t instrumentedfi
de30: 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 65 6e 74  les${i}($current
de40: 66 69 6c 65 29 5d 20 7b 7d 20 6f 6c 64 66 69 6c  file)] {} oldfil
de50: 65 6e 75 6d 0a 09 09 69 66 20 7b 20 24 6f 6c 64  enum...if { $old
de60: 66 69 6c 65 6e 75 6d 20 21 3d 20 24 66 69 6c 65  filenum != $file
de70: 6e 75 6d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65  num } {...    se
de80: 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  t instrumentedfi
de90: 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 65 6e 74  les${i}($current
dea0: 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 20  file) \...      
deb0: 20 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c    [string map [l
dec0: 69 73 74 20 22 52 44 43 3a 3a 46 20 24 6f 6c 64  ist "RDC::F $old
ded0: 66 69 6c 65 6e 75 6d 20 22 20 22 52 44 43 3a 3a  filenum " "RDC::
dee0: 46 20 24 66 69 6c 65 6e 75 6d 20 22 5d 20 5c 0a  F $filenum "] \.
def0: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 5b  ..             [
df00: 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  set instrumented
df10: 66 69 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 65  files${i}($curre
df20: 6e 74 66 69 6c 65 29 5d 5d 0a 09 09 7d 0a 09 09  ntfile)]]...}...
df30: 63 6c 6f 73 65 20 24 66 69 6e 0a 09 20 20 20 20  close $fin..    
df40: 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69  }..}.    }.    i
df50: 66 20 7b 20 28 24 66 69 6c 65 74 79 70 65 20 3d  f { ($filetype =
df60: 3d 20 22 54 43 4c 22 20 20 26 26 20 21 5b 69 6e  = "TCL"  && ![in
df70: 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75  fo exists instru
df80: 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75  mentedfilesP($cu
df90: 72 72 65 6e 74 66 69 6c 65 29 5d 29 20 7c 7c 20  rrentfile)]) || 
dfa0: 5c 0a 09 20 20 20 20 20 21 5b 69 6e 66 6f 20 65  \..     ![info e
dfb0: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74  xists instrument
dfc0: 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72  edfilesInfo($cur
dfd0: 72 65 6e 74 66 69 6c 65 29 5d 20 7c 7c 20 24 66  rentfile)] || $f
dfe0: 6f 72 63 65 20 7c 7c 20 24 72 65 69 6e 73 74 72  orce || $reinstr
dff0: 75 6d 65 6e 74 20 7d 20 7b 0a 09 53 65 74 4d 65  ument } {..SetMe
e000: 73 73 61 67 65 20 5b 5f 20 22 49 6e 73 74 72 75  ssage [_ "Instru
e010: 6d 65 6e 74 69 6e 67 20 66 69 6c 65 20 27 25 73  menting file '%s
e020: 27 22 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d  '" $currentfile]
e030: 2e 2e 2e 0a 0a 09 73 65 74 20 66 69 6c 65 6e 75  ......set filenu
e040: 6d 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24  m [lsearchfile $
e050: 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65  fileslist $curre
e060: 6e 74 66 69 6c 65 5d 0a 0a 09 69 66 20 7b 20 24  ntfile]...if { $
e070: 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 43 2f 43  filetype == "C/C
e080: 2b 2b 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20  ++" } {..    if 
e090: 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 49 6e 73  { [catch {...Ins
e0a0: 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72  trumenter::DoWor
e0b0: 6b 46 6f 72 43 2b 2b 20 24 66 69 6c 65 73 28 24  kForC++ $files($
e0c0: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73  currentfile) ins
e0d0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e  trumentedfilesIn
e0e0: 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29  fo($currentfile)
e0f0: 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e  ..    } errstrin
e100: 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75  g] } {...RamDebu
e110: 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61  gger::ProgressVa
e120: 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73  r 100...if { ![s
e130: 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75  tring match  "*u
e140: 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72  ser demand*" $er
e150: 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20  rstring] } {... 
e160: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a     RamDebugger::
e170: 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20  TextOutRaise... 
e180: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a     RamDebugger::
e190: 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64  TextOutInsertRed
e1a0: 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09   $::errorInfo...
e1b0: 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d  }...if { $opts(-
e1c0: 72 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20  return_error) } 
e1d0: 7b 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65  {...    error $e
e1e0: 72 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73  rrstring...} els
e1f0: 65 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69  e {...    WarnWi
e200: 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d  n $errstring...}
e210: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b  ..    }..}..if {
e220: 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 58   $filetype == "X
e230: 4d 4c 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  ML" } {..    set
e240: 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 64 6f   err [catch { do
e250: 6d 20 70 61 72 73 65 74 20 24 66 69 6c 65 73 28  m parset $files(
e260: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d 20  $currentfile) } 
e270: 64 6f 63 5d 0a 09 20 20 20 20 69 66 20 7b 20 21  doc]..    if { !
e280: 24 65 72 72 20 7d 20 7b 0a 09 09 73 65 74 20 66  $err } {...set f
e290: 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 6c  iles($currentfil
e2a0: 65 29 20 5b 24 64 6f 63 20 61 73 58 4d 4c 5d 0a  e) [$doc asXML].
e2b0: 09 09 24 64 6f 63 20 64 65 6c 65 74 65 0a 09 20  ..$doc delete.. 
e2c0: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 65 72     }..    set er
e2d0: 72 20 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 72  r [catch { Instr
e2e0: 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46  umenter::DoWorkF
e2f0: 6f 72 58 4d 4c 20 24 66 69 6c 65 73 28 24 63 75  orXML $files($cu
e300: 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72  rrentfile) instr
e310: 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f  umentedfilesInfo
e320: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d  ($currentfile) }
e330: 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20   errstring]..   
e340: 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09   if { $err } {..
e350: 09 73 65 74 20 65 69 6e 66 6f 20 24 3a 3a 65 72  .set einfo $::er
e360: 72 6f 72 49 6e 66 6f 0a 09 09 52 61 6d 44 65 62  rorInfo...RamDeb
e370: 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56  ugger::ProgressV
e380: 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b  ar 100...if { ![
e390: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a  string match  "*
e3a0: 75 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65  user demand*" $e
e3b0: 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09  rrstring] } {...
e3c0: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a      RamDebugger:
e3d0: 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09  :TextOutRaise...
e3e0: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a      RamDebugger:
e3f0: 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65  :TextOutInsertRe
e400: 64 20 24 65 69 6e 66 6f 0a 09 09 7d 0a 09 09 23  d $einfo...}...#
e410: 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69  WarnWin $errstri
e420: 6e 67 2d 2d 24 65 69 6e 66 6f 0a 09 09 69 66 20  ng--$einfo...if 
e430: 7b 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f  { $opts(-return_
e440: 65 72 72 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20  error) } {...   
e450: 20 65 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e   error $errstrin
e460: 67 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20  g...} else {... 
e470: 20 20 20 57 61 72 6e 57 69 6e 20 24 65 72 72 73     WarnWin $errs
e480: 74 72 69 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d  tring...}..    }
e490: 0a 09 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74  ..}..if { $filet
e4a0: 79 70 65 20 3d 3d 20 22 47 69 44 20 42 41 53 20  ype == "GiD BAS 
e4b0: 66 69 6c 65 22 20 7d 20 7b 0a 09 20 20 20 20 69  file" } {..    i
e4c0: 66 20 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 49  f { [catch {...I
e4d0: 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57  nstrumenter::DoW
e4e0: 6f 72 6b 46 6f 72 42 61 73 20 24 66 69 6c 65 73  orkForBas $files
e4f0: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69  ($currentfile) i
e500: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
e510: 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c  Info($currentfil
e520: 65 29 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72  e)..    } errstr
e530: 69 6e 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65  ing] } {...RamDe
e540: 62 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73  bugger::Progress
e550: 56 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21  Var 100...if { !
e560: 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22  [string match  "
e570: 2a 75 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24  *user demand*" $
e580: 65 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09  errstring] } {..
e590: 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72  .    RamDebugger
e5a0: 3a 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09  ::TextOutRaise..
e5b0: 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72  .    RamDebugger
e5c0: 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52  ::TextOutInsertR
e5d0: 65 64 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a  ed $::errorInfo.
e5e0: 09 09 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73  ..}...if { $opts
e5f0: 28 2d 72 65 74 75 72 6e 5f 65 72 72 6f 72 29 20  (-return_error) 
e600: 7d 20 7b 0a 09 09 20 20 20 20 65 72 72 6f 72 20  } {...    error 
e610: 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d 20 65  $errstring...} e
e620: 6c 73 65 20 7b 0a 09 09 20 20 20 20 57 61 72 6e  lse {...    Warn
e630: 57 69 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09  Win $errstring..
e640: 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66  .}..    }..}..if
e650: 20 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20   { $filetype == 
e660: 22 47 69 44 20 64 61 74 61 20 66 69 6c 65 73 22  "GiD data files"
e670: 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b   } {..    if { [
e680: 63 61 74 63 68 20 7b 0a 09 09 49 6e 73 74 72 75  catch {...Instru
e690: 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f  menter::DoWorkFo
e6a0: 72 47 69 44 44 61 74 61 20 24 66 69 6c 65 73 28  rGiDData $files(
e6b0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e  $currentfile) in
e6c0: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49  strumentedfilesI
e6d0: 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65  nfo($currentfile
e6e0: 29 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72 69  )..    } errstri
e6f0: 6e 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62  ng] } {...RamDeb
e700: 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56  ugger::ProgressV
e710: 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b  ar 100...if { ![
e720: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a  string match  "*
e730: 75 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65  user demand*" $e
e740: 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09  rrstring] } {...
e750: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a      RamDebugger:
e760: 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09  :TextOutRaise...
e770: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a      RamDebugger:
e780: 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65  :TextOutInsertRe
e790: 64 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09  d $::errorInfo..
e7a0: 09 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28  .}...if { $opts(
e7b0: 2d 72 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d  -return_error) }
e7c0: 20 7b 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24   {...    error $
e7d0: 65 72 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c  errstring...} el
e7e0: 73 65 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57  se {...    WarnW
e7f0: 69 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09  in $errstring...
e800: 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20  }..    }..}..if 
e810: 7b 20 24 66 69 6c 65 74 79 70 65 20 65 71 20 22  { $filetype eq "
e820: 4d 61 6b 65 66 69 6c 65 22 20 7d 20 7b 0a 09 20  Makefile" } {.. 
e830: 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 7b     if { [catch {
e840: 0a 09 09 20 20 20 20 49 6e 73 74 72 75 6d 65 6e  ...    Instrumen
e850: 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 4d 61  ter::DoWorkForMa
e860: 6b 65 66 69 6c 65 20 24 66 69 6c 65 73 28 24 63  kefile $files($c
e870: 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74  urrentfile) inst
e880: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66  rumentedfilesInf
e890: 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a  o($currentfile).
e8a0: 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e 67  .    } errstring
e8b0: 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 67  ] } {...RamDebug
e8c0: 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72  ger::ProgressVar
e8d0: 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 74   100...if { ![st
e8e0: 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 73  ring match  "*us
e8f0: 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 72  er demand*" $err
e900: 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 20  string] } {...  
e910: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54    RamDebugger::T
e920: 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20 20  extOutRaise...  
e930: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54    RamDebugger::T
e940: 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20  extOutInsertRed 
e950: 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09 7d  $::errorInfo...}
e960: 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d 72  ...if { $opts(-r
e970: 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 7b  eturn_error) } {
e980: 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65 72  ...    error $er
e990: 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73 65  rstring...} else
e9a0: 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69 6e   {...    WarnWin
e9b0: 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d 0a   $errstring...}.
e9c0: 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20  .    }..}..if { 
e9d0: 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 54 43  $filetype == "TC
e9e0: 4c 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b  L" } {..    if {
e9f0: 20 5b 63 61 74 63 68 20 7b 0a 09 09 49 6e 73 74   [catch {...Inst
ea00: 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b  rumenter::DoWork
ea10: 46 6f 72 54 63 6c 20 24 66 69 6c 65 73 28 24 63  ForTcl $files($c
ea20: 75 72 72 65 6e 74 66 69 6c 65 29 20 24 66 69 6c  urrentfile) $fil
ea30: 65 6e 75 6d 20 69 6e 73 74 72 75 6d 65 6e 74 65  enum instrumente
ea40: 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e 74  dfilesP($current
ea50: 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 69 6e  file) \...    in
ea60: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 52  strumentedfilesR
ea70: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69  ($currentfile) i
ea80: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
ea90: 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c  Info($currentfil
eaa0: 65 29 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72  e)..    } errstr
eab0: 69 6e 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65  ing] } {...RamDe
eac0: 62 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73  bugger::Progress
ead0: 56 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 5b  Var 100...if { [
eae0: 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74  info exists inst
eaf0: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24  rumentedfilesP($
eb00: 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20  currentfile)] } 
eb10: 7b 0a 09 09 20 20 20 20 75 6e 73 65 74 20 69 6e  {...    unset in
eb20: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50  strumentedfilesP
eb30: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09  ($currentfile)..
eb40: 09 7d 0a 09 09 69 66 20 7b 20 5b 69 6e 66 6f 20  .}...if { [info 
eb50: 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e  exists instrumen
eb60: 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 65  tedfilesR($curre
eb70: 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 09 20  ntfile)] } {... 
eb80: 20 20 20 75 6e 73 65 74 20 69 6e 73 74 72 75 6d     unset instrum
eb90: 65 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72  entedfilesR($cur
eba0: 72 65 6e 74 66 69 6c 65 29 0a 09 09 7d 0a 09 09  rentfile)...}...
ebb0: 69 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61  if { ![string ma
ebc0: 74 63 68 20 20 22 2a 75 73 65 72 20 64 65 6d 61  tch  "*user dema
ebd0: 6e 64 2a 22 20 24 65 72 72 73 74 72 69 6e 67 5d  nd*" $errstring]
ebe0: 20 7d 20 7b 0a 09 09 20 20 20 20 52 61 6d 44 65   } {...    RamDe
ebf0: 62 75 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 52  bugger::TextOutR
ec00: 61 69 73 65 0a 09 09 20 20 20 20 52 61 6d 44 65  aise...    RamDe
ec10: 62 75 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 49  bugger::TextOutI
ec20: 6e 73 65 72 74 52 65 64 20 24 3a 3a 65 72 72 6f  nsertRed $::erro
ec30: 72 49 6e 66 6f 0a 09 09 7d 0a 09 09 69 66 20 7b  rInfo...}...if {
ec40: 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f 65   $opts(-return_e
ec50: 72 72 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20 20  rror) } {...    
ec60: 65 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e 67  error $errstring
ec70: 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20  ...} else {...  
ec80: 20 20 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74    WarnWin $errst
ec90: 72 69 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d 0a  ring...}..    }.
eca0: 09 7d 0a 09 0a 09 66 6f 72 65 61 63 68 20 69 20  .}....foreach i 
ecb0: 5b 6c 69 73 74 20 50 20 52 5d 20 7b 0a 09 20 20  [list P R] {..  
ecc0: 20 20 73 65 74 20 69 6e 73 74 66 69 6c 65 20 5b    set instfile [
ecd0: 47 69 76 65 49 6e 73 74 46 69 6c 65 20 24 63 75  GiveInstFile $cu
ece0: 72 72 65 6e 74 66 69 6c 65 20 30 20 24 69 5d 0a  rrentfile 0 $i].
ecf0: 09 20 20 20 20 69 66 20 7b 20 24 69 6e 73 74 66  .    if { $instf
ed00: 69 6c 65 20 21 3d 20 22 22 20 26 26 20 5b 69 6e  ile != "" && [in
ed10: 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75  fo exists instru
ed20: 6d 65 6e 74 65 64 66 69 6c 65 73 24 7b 69 7d 28  mentedfiles${i}(
ed30: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 26  $currentfile)] &
ed40: 26 20 5c 0a 09 09 20 20 20 20 20 21 24 63 75 72  & \...     !$cur
ed50: 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69  rentfileIsModifi
ed60: 65 64 20 7d 20 7b 0a 09 09 73 65 74 20 66 6f 75  ed } {...set fou
ed70: 74 20 5b 6f 70 65 6e 20 24 69 6e 73 74 66 69 6c  t [open $instfil
ed80: 65 20 77 5d 0a 09 09 69 66 20 7b 20 24 6f 70 74  e w]...if { $opt
ed90: 73 28 2d 65 6e 63 6f 64 69 6e 67 29 20 21 3d 20  s(-encoding) != 
eda0: 30 20 26 26 20 24 6f 70 74 73 28 2d 65 6e 63 6f  0 && $opts(-enco
edb0: 64 69 6e 67 29 20 21 3d 20 22 22 20 7d 20 7b 0a  ding) != "" } {.
edc0: 09 09 20 20 20 20 66 63 6f 6e 66 69 67 75 72 65  ..    fconfigure
edd0: 20 24 66 6f 75 74 20 2d 65 6e 63 6f 64 69 6e 67   $fout -encoding
ede0: 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69 6e 67   $opts(-encoding
edf0: 29 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20  )...} else {... 
ee00: 20 20 20 73 65 74 20 68 65 61 64 65 72 20 5b 73     set header [s
ee10: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 73 65 74  tring range [set
ee20: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c   instrumentedfil
ee30: 65 73 24 7b 69 7d 28 24 63 75 72 72 65 6e 74 66  es${i}($currentf
ee40: 69 6c 65 29 5d 20 30 20 32 35 35 5d 0a 09 09 20  ile)] 0 255]... 
ee50: 20 20 20 73 65 74 20 72 65 78 20 7b 2d 5c 2a 2d     set rex {-\*-
ee60: 2e 2a 63 6f 64 69 6e 67 3a 5c 73 2a 75 74 66 2d  .*coding:\s*utf-
ee70: 38 5c 73 2a 3b 2e 2a 2d 5c 2a 2d 7c 65 6e 63 6f  8\s*;.*-\*-|enco
ee80: 64 69 6e 67 3d 5b 27 5c 22 5d 75 74 66 2d 38 5b  ding=['\"]utf-8[
ee90: 27 5c 22 5d 7d 0a 09 09 20 20 20 20 69 66 20 7b  '\"]}...    if {
eea0: 20 5b 72 65 67 65 78 70 20 2d 6e 6f 63 61 73 65   [regexp -nocase
eeb0: 20 2d 6c 69 6e 65 20 2d 2d 20 24 72 65 78 20 24   -line -- $rex $
eec0: 68 65 61 64 65 72 5d 20 7d 20 7b 0a 09 09 20 20  header] } {...  
eed0: 20 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72 65        fconfigure
eee0: 20 24 66 6f 75 74 20 2d 65 6e 63 6f 64 69 6e 67   $fout -encoding
eef0: 20 75 74 66 2d 38 0a 09 09 20 20 20 20 7d 0a 09   utf-8...    }..
ef00: 09 7d 0a 09 09 70 75 74 73 20 2d 6e 6f 6e 65 77  .}...puts -nonew
ef10: 6c 69 6e 65 20 24 66 6f 75 74 20 5b 73 65 74 20  line $fout [set 
ef20: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65  instrumentedfile
ef30: 73 24 7b 69 7d 28 24 63 75 72 72 65 6e 74 66 69  s${i}($currentfi
ef40: 6c 65 29 5d 0a 09 09 63 6c 6f 73 65 20 24 66 6f  le)]...close $fo
ef50: 75 74 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65  ut..    }..}..se
ef60: 74 20 69 6e 66 6f 66 69 6c 65 20 5b 47 69 76 65  t infofile [Give
ef70: 49 6e 73 74 46 69 6c 65 20 24 63 75 72 72 65 6e  InstFile $curren
ef80: 74 66 69 6c 65 20 30 20 49 5d 0a 09 69 66 20 7b  tfile 0 I]..if {
ef90: 20 24 69 6e 66 6f 66 69 6c 65 20 21 3d 20 22 22   $infofile != ""
efa0: 20 26 26 20 5b 69 6e 66 6f 20 65 78 69 73 74 73   && [info exists
efb0: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c   instrumentedfil
efc0: 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66  esInfo($currentf
efd0: 69 6c 65 29 5d 20 26 26 20 5c 0a 09 09 20 21 24  ile)] && \... !$
efe0: 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64  currentfileIsMod
eff0: 69 66 69 65 64 20 7d 20 7b 0a 09 20 20 20 20 73  ified } {..    s
f000: 65 74 20 66 6f 75 74 20 5b 6f 70 65 6e 20 24 69  et fout [open $i
f010: 6e 66 6f 66 69 6c 65 20 77 5d 0a 09 20 20 20 20  nfofile w]..    
f020: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20  puts -nonewline 
f030: 24 66 6f 75 74 20 24 69 6e 73 74 72 75 6d 65 6e  $fout $instrumen
f040: 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75  tedfilesInfo($cu
f050: 72 72 65 6e 74 66 69 6c 65 29 0a 09 20 20 20 20  rrentfile)..    
f060: 63 6c 6f 73 65 20 24 66 6f 75 74 0a 09 7d 0a 09  close $fout..}..
f070: 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
f080: 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  s instrumentedfi
f090: 6c 65 73 53 65 6e 74 28 24 63 75 72 72 65 6e 74  lesSent($current
f0a0: 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20  file)] } {..    
f0b0: 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74  unset instrument
f0c0: 65 64 66 69 6c 65 73 53 65 6e 74 28 24 63 75 72  edfilesSent($cur
f0d0: 72 65 6e 74 66 69 6c 65 29 0a 09 7d 0a 09 53 65  rentfile)..}..Se
f0e0: 74 4d 65 73 73 61 67 65 20 22 22 0a 20 20 20 20  tMessage "".    
f0f0: 7d 0a 20 20 20 20 69 66 20 7b 20 24 64 65 62 75  }.    if { $debu
f100: 67 67 65 72 73 74 61 74 65 20 3d 3d 20 22 74 69  ggerstate == "ti
f110: 6d 65 22 20 26 26 20 5b 69 6e 66 6f 20 65 78 69  me" && [info exi
f120: 73 74 73 20 66 69 6c 65 73 28 24 63 75 72 72 65  sts files($curre
f130: 6e 74 66 69 6c 65 29 5d 20 26 26 20 5c 0a 09 20  ntfile)] && \.. 
f140: 20 20 20 20 28 21 5b 69 6e 66 6f 20 65 78 69 73      (![info exis
f150: 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66  ts instrumentedf
f160: 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72 65 6e  ilesTime($curren
f170: 74 66 69 6c 65 29 5d 20 7c 7c 20 24 66 6f 72 63  tfile)] || $forc
f180: 65 20 7c 7c 20 24 72 65 69 6e 73 74 72 75 6d 65  e || $reinstrume
f190: 6e 74 29 20 7d 20 7b 0a 09 53 65 74 4d 65 73 73  nt) } {..SetMess
f1a0: 61 67 65 20 5b 5f 20 22 49 6e 73 74 72 75 6d 65  age [_ "Instrume
f1b0: 6e 74 69 6e 67 20 66 69 6c 65 20 27 25 73 27 20  nting file '%s' 
f1c0: 66 6f 72 20 74 69 6d 65 20 6d 65 61 73 75 72 65  for time measure
f1d0: 22 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 2e  " $currentfile].
f1e0: 2e 2e 0a 09 49 6e 73 74 72 75 6d 65 6e 74 65 72  ....Instrumenter
f1f0: 3a 3a 44 6f 57 6f 72 6b 46 6f 72 54 69 6d 65 20  ::DoWorkForTime 
f200: 24 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66  $files($currentf
f210: 69 6c 65 29 20 24 63 75 72 72 65 6e 74 66 69 6c  ile) $currentfil
f220: 65 20 5c 0a 09 20 20 20 20 69 6e 73 74 72 75 6d  e \..    instrum
f230: 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 28 24  entedfilesTime($
f240: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 24 54 69  currentfile) $Ti
f250: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 0a 09 69  meMeasureData..i
f260: 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73  f { [info exists
f270: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c   instrumentedfil
f280: 65 73 53 65 6e 74 28 24 63 75 72 72 65 6e 74 66  esSent($currentf
f290: 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 75  ile)] } {..    u
f2a0: 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65  nset instrumente
f2b0: 64 66 69 6c 65 73 53 65 6e 74 28 24 63 75 72 72  dfilesSent($curr
f2c0: 65 6e 74 66 69 6c 65 29 0a 09 7d 0a 09 53 65 74  entfile)..}..Set
f2d0: 4d 65 73 73 61 67 65 20 22 22 0a 20 20 20 20 7d  Message "".    }
f2e0: 0a 0a 20 20 20 20 73 65 74 20 72 65 74 76 61 6c  ..    set retval
f2f0: 20 22 22 0a 0a 20 20 20 20 73 65 74 20 64 6f 73   ""..    set dos
f300: 65 6e 64 20 2d 31 0a 0a 20 20 20 20 69 66 20 7b  end -1..    if {
f310: 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20   $debuggerstate 
f320: 3d 3d 20 22 22 20 7c 7c 20 24 72 65 6d 6f 74 65  == "" || $remote
f330: 73 65 72 76 65 72 20 3d 3d 20 22 22 20 7c 7c 20  server == "" || 
f340: 5c 0a 09 20 20 20 20 20 21 5b 69 6e 66 6f 20 65  \..     ![info e
f350: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74  xists instrument
f360: 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e  edfilesP($curren
f370: 74 66 69 6c 65 29 5d 20 7d 20 7b 20 73 65 74 20  tfile)] } { set 
f380: 64 6f 73 65 6e 64 20 30 20 7d 0a 20 20 20 20 69  dosend 0 }.    i
f390: 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65  f { $remoteserve
f3a0: 72 20 3d 3d 20 22 6d 61 73 74 65 72 22 20 26 26  r == "master" &&
f3b0: 20 21 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 64   !$opts(-returnd
f3c0: 61 74 61 29 20 7d 20 7b 20 73 65 74 20 64 6f 73  ata) } { set dos
f3d0: 65 6e 64 20 30 20 7d 0a 20 20 20 20 69 66 20 7b  end 0 }.    if {
f3e0: 20 24 64 6f 73 65 6e 64 20 21 3d 20 30 20 26 26   $dosend != 0 &&
f3f0: 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69   ![info exists i
f400: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
f410: 53 65 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c  Sent($currentfil
f420: 65 29 5d 20 7d 20 7b 20 73 65 74 20 64 6f 73 65  e)] } { set dose
f430: 6e 64 20 31 20 7d 0a 20 20 20 20 69 66 20 7b 20  nd 1 }.    if { 
f440: 24 64 6f 73 65 6e 64 20 21 3d 20 30 20 26 26 20  $dosend != 0 && 
f450: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73  [info exists ins
f460: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65  trumentedfilesSe
f470: 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29  nt($currentfile)
f480: 5d 20 26 26 20 5c 0a 09 20 20 20 20 20 24 69 6e  ] && \..     $in
f490: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53  strumentedfilesS
f4a0: 65 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65  ent($currentfile
f4b0: 29 20 21 3d 20 24 64 65 62 75 67 67 65 72 73 74  ) != $debuggerst
f4c0: 61 74 65 20 20 7d 20 7b 20 73 65 74 20 64 6f 73  ate  } { set dos
f4d0: 65 6e 64 20 31 20 7d 0a 20 20 20 20 69 66 20 7b  end 1 }.    if {
f4e0: 20 24 64 6f 73 65 6e 64 20 21 3d 20 30 20 26 26   $dosend != 0 &&
f4f0: 20 28 24 6f 70 74 73 28 2d 72 65 73 65 6e 64 29   ($opts(-resend)
f500: 20 7c 7c 20 24 66 6f 72 63 65 20 7c 7c 20 24 6f   || $force || $o
f510: 70 74 73 28 2d 72 65 74 75 72 6e 64 61 74 61 29  pts(-returndata)
f520: 29 20 7d 20 7b 20 73 65 74 20 64 6f 73 65 6e 64  ) } { set dosend
f530: 20 31 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24   1 }..    if { $
f540: 64 6f 73 65 6e 64 20 3d 3d 20 31 20 7d 20 7b 0a  dosend == 1 } {.
f550: 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20  .set err [catch 
f560: 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 64 65 62  {..    if { $deb
f570: 75 67 67 65 72 73 74 61 74 65 20 3d 3d 20 22 64  uggerstate == "d
f580: 65 62 75 67 22 20 7d 20 7b 0a 09 09 69 66 20 7b  ebug" } {...if {
f590: 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 64 61   $opts(-returnda
f5a0: 74 61 29 20 7d 20 7b 0a 09 09 20 20 20 20 61 70  ta) } {...    ap
f5b0: 70 65 6e 64 20 72 65 74 76 61 6c 20 24 69 6e 73  pend retval $ins
f5c0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28  trumentedfilesP(
f5d0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5c 6e 0a  $currentfile)\n.
f5e0: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20  ..} else {...   
f5f0: 20 45 76 61 6c 52 65 6d 6f 74 65 20 24 69 6e 73   EvalRemote $ins
f600: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28  trumentedfilesP(
f610: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 09  $currentfile)...
f620: 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d  }...if { $opts(-
f630: 61 73 6d 61 69 6e 66 69 6c 65 29 20 7c 7c 20 24  asmainfile) || $
f640: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d 20  remoteserver == 
f650: 22 6d 61 73 74 65 72 20 61 6c 6c 22 20 7d 20 7b  "master all" } {
f660: 0a 09 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74  ...    if { $opt
f670: 73 28 2d 72 65 74 75 72 6e 64 61 74 61 29 20 7d  s(-returndata) }
f680: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 61 70 70   {...        app
f690: 65 6e 64 20 72 65 74 76 61 6c 20 24 69 6e 73 74  end retval $inst
f6a0: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 52 28 24  rumentedfilesR($
f6b0: 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 09 20  currentfile)... 
f6c0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20     } else {...  
f6d0: 20 20 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65        EvalRemote
f6e0: 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69   $instrumentedfi
f6f0: 6c 65 73 52 28 24 63 75 72 72 65 6e 74 66 69 6c  lesR($currentfil
f700: 65 29 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09  e)...    }...}..
f710: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 45      } else {...E
f720: 76 61 6c 52 65 6d 6f 74 65 20 24 69 6e 73 74 72  valRemote $instr
f730: 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65  umentedfilesTime
f740: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09  ($currentfile)..
f750: 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 69      }..    set i
f760: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
f770: 53 65 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c  Sent($currentfil
f780: 65 29 20 24 64 65 62 75 67 67 65 72 73 74 61 74  e) $debuggerstat
f790: 65 0a 0a 09 20 20 20 20 46 69 6c 6c 4c 69 73 74  e...    FillList
f7a0: 42 6f 78 0a 09 7d 20 65 72 72 73 74 72 69 6e 67  Box..} errstring
f7b0: 5d 0a 09 0a 09 69 66 20 7b 20 24 65 72 72 20 3d  ]....if { $err =
f7c0: 3d 20 31 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  = 1 } {..    set
f7d0: 20 65 72 72 73 74 72 69 6e 67 20 24 3a 3a 65 72   errstring $::er
f7e0: 72 6f 72 49 6e 66 6f 0a 09 20 20 20 20 0a 09 20  rorInfo..    .. 
f7f0: 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 72     if { $opts(-r
f800: 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 7b  eturn_error) } {
f810: 0a 09 09 65 72 72 6f 72 20 24 65 72 72 73 74 72  ...error $errstr
f820: 69 6e 67 0a 09 20 20 20 20 7d 20 65 6c 73 65 69  ing..    } elsei
f830: 66 20 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 57  f { [catch {...W
f840: 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 6e  arnWin $errstrin
f850: 67 0a 09 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 09  g..    }] } {...
f860: 70 75 74 73 20 24 65 72 72 73 74 72 69 6e 67 0a  puts $errstring.
f870: 09 20 20 20 20 7d 0a 09 7d 20 65 6c 73 65 69 66  .    }..} elseif
f880: 20 7b 20 24 65 72 72 20 3d 3d 20 32 20 7d 20 7b   { $err == 2 } {
f890: 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a  ..    return..}.
f8a0: 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20      }..    if { 
f8b0: 24 6f 70 74 73 28 6c 69 6e 65 29 20 21 3d 20 22  $opts(line) != "
f8c0: 22 20 7d 20 7b 0a 09 73 65 74 20 63 75 72 72 65  " } {..set curre
f8d0: 6e 74 6c 69 6e 65 20 24 6f 70 74 73 28 6c 69 6e  ntline $opts(lin
f8e0: 65 29 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  e).    }.    if 
f8f0: 7b 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 64  { $opts(-returnd
f900: 61 74 61 29 20 7c 7c 20 24 6f 70 74 73 28 2d 71  ata) || $opts(-q
f910: 75 69 65 74 29 20 7d 20 7b 0a 09 72 65 74 75 72  uiet) } {..retur
f920: 6e 20 24 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a  n $retval.    }.
f930: 0a 20 20 20 20 73 65 74 20 6c 69 6e 65 73 20 5b  .    set lines [
f940: 73 70 6c 69 74 20 24 66 69 6c 65 73 28 24 63 75  split $files($cu
f950: 72 72 65 6e 74 66 69 6c 65 29 20 5c 6e 5d 0a 20  rrentfile) \n]. 
f960: 20 20 20 73 65 74 20 72 65 74 76 61 6c 20 22 22     set retval ""
f970: 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69  .    for { set i
f980: 20 2d 31 20 7d 20 7b 20 24 69 20 3c 20 33 20 7d   -1 } { $i < 3 }
f990: 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 61   { incr i } {..a
f9a0: 70 70 65 6e 64 20 72 65 74 76 61 6c 20 22 5b 66  ppend retval "[f
f9b0: 6f 72 6d 61 74 20 25 34 64 20 5b 65 78 70 72 20  ormat %4d [expr 
f9c0: 24 63 75 72 72 65 6e 74 6c 69 6e 65 2b 24 69 2b  $currentline+$i+
f9d0: 31 5d 5d 20 2d 2d 3e 20 22 0a 09 61 70 70 65 6e  1]] --> "..appen
f9e0: 64 20 72 65 74 76 61 6c 20 22 5b 6c 69 6e 64 65  d retval "[linde
f9f0: 78 20 24 6c 69 6e 65 73 20 5b 65 78 70 72 20 24  x $lines [expr $
fa00: 63 75 72 72 65 6e 74 6c 69 6e 65 2b 24 69 5d 5d  currentline+$i]]
fa10: 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e  \n".    }.    in
fa20: 63 72 20 63 75 72 72 65 6e 74 6c 69 6e 65 20 34  cr currentline 4
fa30: 0a 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 74  .    return $ret
fa40: 76 61 6c 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44  val.}..proc RamD
fa50: 65 62 75 67 67 65 72 3a 3a 72 63 6f 6e 64 20 7b  ebugger::rcond {
fa60: 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61   args } {.    va
fa70: 72 69 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 6e  riable breakpoin
fa80: 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ts.    variable 
fa90: 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 0a 20  debuggerstate.. 
faa0: 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 65     if { $debugge
fab0: 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22  rstate == "time"
fac0: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22   } {..error [_ "
fad0: 43 6f 6d 6d 61 6e 64 20 72 63 6f 6e 64 20 63 61  Command rcond ca
fae0: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20  nnot be used in 
faf0: 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65  'time' mode. Che
fb00: 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d  ck rtime"].    }
fb10: 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73  ..    set usages
fb20: 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 63  tring {usage: rc
fb30: 6f 6e 64 20 3f 73 77 69 74 63 68 65 73 3f 20 62  ond ?switches? b
fb40: 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 20 63 6f 6e  reakpointnum con
fb50: 64 0a 09 2d 68 3a 20 20 20 20 20 20 20 64 69 73  d..-h:       dis
fb60: 70 6c 61 79 73 20 75 73 61 67 65 0a 09 2d 71 75  plays usage..-qu
fb70: 69 65 74 3a 20 64 6f 20 6e 6f 74 20 70 72 69 6e  iet: do not prin
fb80: 74 20 61 6e 79 74 68 69 6e 67 0a 09 2d 2d 3a 20  t anything..--: 
fb90: 20 20 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f      end of optio
fba0: 6e 73 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72  ns.    }.    Par
fbb0: 73 65 41 72 67 73 20 24 61 72 67 73 20 24 75 73  seArgs $args $us
fbc0: 61 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a  agestring opts..
fbd0: 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20 30 0a      set found 0.
fbe0: 20 20 20 20 73 65 74 20 69 70 6f 73 20 30 0a 20      set ipos 0. 
fbf0: 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 62 72     foreach i $br
fc00: 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 69 66 20  eakpoints {..if 
fc10: 7b 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 20  { [lindex $i 0] 
fc20: 3d 3d 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f  == $opts(breakpo
fc30: 69 6e 74 6e 75 6d 29 20 7d 20 7b 0a 09 20 20 20  intnum) } {..   
fc40: 20 73 65 74 20 66 6f 75 6e 64 20 31 0a 09 20 20   set found 1..  
fc50: 20 20 62 72 65 61 6b 0a 09 7d 0a 09 69 6e 63 72    break..}..incr
fc60: 20 69 70 6f 73 0a 20 20 20 20 7d 0a 20 20 20 20   ipos.    }.    
fc70: 69 66 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20 7b  if { !$found } {
fc80: 0a 09 65 72 72 6f 72 20 5b 5f 20 22 42 72 65 61  ..error [_ "Brea
fc90: 6b 70 6f 69 6e 74 73 20 25 73 20 64 6f 65 73 20  kpoints %s does 
fca0: 6e 6f 74 20 65 78 69 73 74 5c 6e 25 73 22 20 24  not exist\n%s" $
fcb0: 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e  opts(breakpointn
fcc0: 75 6d 29 20 24 75 73 61 67 65 73 74 72 69 6e 67  um) $usagestring
fcd0: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  ].    }.    set 
fce0: 62 72 65 61 6b 70 6f 69 6e 74 73 20 5b 6c 72 65  breakpoints [lre
fcf0: 70 6c 61 63 65 20 24 62 72 65 61 6b 70 6f 69 6e  place $breakpoin
fd00: 74 73 20 24 69 70 6f 73 20 24 69 70 6f 73 20 5b  ts $ipos $ipos [
fd10: 6c 72 65 70 6c 61 63 65 20 24 69 20 34 20 34 20  lreplace $i 4 4 
fd20: 24 6f 70 74 73 28 63 6f 6e 64 29 5d 5d 0a 0a 20  $opts(cond)]].. 
fd30: 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74 65 42     UpdateRemoteB
fd40: 72 65 61 6b 73 0a 0a 20 20 20 20 69 66 20 7b 20  reaks..    if { 
fd50: 21 24 6f 70 74 73 28 2d 71 75 69 65 74 29 20 7d  !$opts(-quiet) }
fd60: 20 7b 0a 09 72 65 74 75 72 6e 20 5b 5f 20 22 63   {..return [_ "c
fd70: 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 62 72 65  ondition for bre
fd80: 61 6b 70 6f 69 6e 74 20 25 73 3a 20 25 73 22 20  akpoint %s: %s" 
fd90: 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74  $opts(breakpoint
fda0: 6e 75 6d 29 20 24 6f 70 74 73 28 63 6f 6e 64 29  num) $opts(cond)
fdb0: 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20  ].    }.}..proc 
fdc0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 6e  RamDebugger::ren
fdd0: 61 62 6c 65 64 69 73 61 62 6c 65 20 7b 20 61 72  abledisable { ar
fde0: 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  gs } {.    varia
fdf0: 62 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a  ble breakpoints.
fe00: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62      variable deb
fe10: 75 67 67 65 72 73 74 61 74 65 0a 0a 20 20 20 20  uggerstate..    
fe20: 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 74  if { $debuggerst
fe30: 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20  ate == "time" } 
fe40: 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d  {..error [_ "Com
fe50: 6d 61 6e 64 20 72 65 6e 61 62 6c 65 64 69 73 61  mand renabledisa
fe60: 62 6c 65 20 63 61 6e 6e 6f 74 20 62 65 20 75 73  ble cannot be us
fe70: 65 64 20 69 6e 20 27 74 69 6d 65 27 20 6d 6f 64  ed in 'time' mod
fe80: 65 2e 20 43 68 65 63 6b 20 72 74 69 6d 65 22 5d  e. Check rtime"]
fe90: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20  .    }..    set 
fea0: 75 73 61 67 65 73 74 72 69 6e 67 20 7b 75 73 61  usagestring {usa
feb0: 67 65 3a 20 72 65 6e 61 62 6c 65 64 69 73 61 62  ge: renabledisab
fec0: 6c 65 20 3f 73 77 69 74 63 68 65 73 3f 20 62 72  le ?switches? br
fed0: 65 61 6b 70 6f 69 6e 74 6e 75 6d 0a 09 2d 68 3a  eakpointnum..-h:
fee0: 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 20         displays 
fef0: 75 73 61 67 65 0a 09 2d 71 75 69 65 74 3a 20 64  usage..-quiet: d
ff00: 6f 20 6e 6f 74 20 70 72 69 6e 74 20 61 6e 79 74  o not print anyt
ff10: 68 69 6e 67 0a 09 2d 2d 3a 20 20 20 20 20 65 6e  hing..--:     en
ff20: 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 20 20  d of options.   
ff30: 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 67 73   }.    ParseArgs
ff40: 20 24 61 72 67 73 20 24 75 73 61 67 65 73 74 72   $args $usagestr
ff50: 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20 20 73 65  ing opts..    se
ff60: 74 20 66 6f 75 6e 64 20 30 0a 20 20 20 20 73 65  t found 0.    se
ff70: 74 20 69 70 6f 73 20 30 0a 20 20 20 20 66 6f 72  t ipos 0.    for
ff80: 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f 69  each i $breakpoi
ff90: 6e 74 73 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e  nts {..if { [lin
ffa0: 64 65 78 20 24 69 20 30 5d 20 3d 3d 20 24 6f 70  dex $i 0] == $op
ffb0: 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d  ts(breakpointnum
ffc0: 29 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66  ) } {..    set f
ffd0: 6f 75 6e 64 20 31 0a 09 20 20 20 20 62 72 65 61  ound 1..    brea
ffe0: 6b 0a 09 7d 0a 09 69 6e 63 72 20 69 70 6f 73 0a  k..}..incr ipos.
fff0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21      }.    if { !
10000 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 65 72 72 6f  $found } {..erro
10010 72 20 5b 5f 20 22 42 72 65 61 6b 70 6f 69 6e 74  r [_ "Breakpoint
10020 73 20 25 73 20 64 6f 65 73 20 6e 6f 74 20 65 78  s %s does not ex
10030 69 73 74 5c 6e 25 73 22 20 24 6f 70 74 73 28 62  ist\n%s" $opts(b
10040 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 24 75  reakpointnum) $u
10050 73 61 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 20  sagestring].    
10060 7d 0a 20 20 20 20 73 65 74 20 62 72 20 5b 6c 69  }.    set br [li
10070 6e 64 65 78 20 24 62 72 65 61 6b 70 6f 69 6e 74  ndex $breakpoint
10080 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 69 66 20  s $ipos].    if 
10090 7b 20 5b 6c 69 6e 64 65 78 20 24 62 72 20 31 5d  { [lindex $br 1]
100a0 20 7d 20 7b 0a 09 6c 73 65 74 20 62 72 20 31 20   } {..lset br 1 
100b0 30 0a 09 73 65 74 20 65 6e 61 62 6c 65 64 69 73  0..set enabledis
100c0 61 62 6c 65 20 30 0a 20 20 20 20 7d 20 65 6c 73  able 0.    } els
100d0 65 20 7b 0a 09 6c 73 65 74 20 62 72 20 31 20 31  e {..lset br 1 1
100e0 0a 09 73 65 74 20 65 6e 61 62 6c 65 64 69 73 61  ..set enabledisa
100f0 62 6c 65 20 31 0a 20 20 20 20 7d 0a 20 20 20 20  ble 1.    }.    
10100 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 73 20  set breakpoints 
10110 5b 6c 72 65 70 6c 61 63 65 20 24 62 72 65 61 6b  [lreplace $break
10120 70 6f 69 6e 74 73 20 24 69 70 6f 73 20 24 69 70  points $ipos $ip
10130 6f 73 20 24 62 72 5d 0a 0a 20 20 20 20 55 70 64  os $br]..    Upd
10140 61 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 0a  ateRemoteBreaks.
10150 0a 20 20 20 20 69 66 20 7b 20 21 24 6f 70 74 73  .    if { !$opts
10160 28 2d 71 75 69 65 74 29 20 7d 20 7b 0a 09 72 65  (-quiet) } {..re
10170 74 75 72 6e 20 5b 5f 20 22 62 72 65 61 6b 70 6f  turn [_ "breakpo
10180 69 6e 74 20 25 73 20 65 6e 61 62 6c 65 2f 64 69  int %s enable/di
10190 73 61 62 6c 65 3a 20 25 73 22 20 24 6f 70 74 73  sable: %s" $opts
101a0 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20  (breakpointnum) 
101b0 24 65 6e 61 62 6c 65 64 69 73 61 62 6c 65 5d 0a  $enabledisable].
101c0 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61      }.}..proc Ra
101d0 6d 44 65 62 75 67 67 65 72 3a 3a 72 62 72 65 61  mDebugger::rbrea
101e0 6b 74 6f 74 72 61 63 65 20 7b 20 61 72 67 73 20  ktotrace { args 
101f0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
10200 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20   breakpoints.   
10210 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 67   variable debugg
10220 65 72 73 74 61 74 65 0a 0a 20 20 20 20 69 66 20  erstate..    if 
10230 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65  { $debuggerstate
10240 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a 09   == "time" } {..
10250 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 6e  error [_ "Comman
10260 64 20 72 62 72 65 61 6b 74 6f 74 72 61 63 65 20  d rbreaktotrace 
10270 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69  cannot be used i
10280 6e 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43  n 'time' mode. C
10290 68 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20  heck rtime"].   
102a0 20 7d 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67   }..    set usag
102b0 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20  estring {usage: 
102c0 72 62 72 65 61 6b 74 6f 74 72 61 63 65 20 3f 73  rbreaktotrace ?s
102d0 77 69 74 63 68 65 73 3f 20 62 72 65 61 6b 70 6f  witches? breakpo
102e0 69 6e 74 6e 75 6d 0a 09 2d 68 3a 20 20 20 20 20  intnum..-h:     
102f0 20 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65    displays usage
10300 0a 09 2d 71 75 69 65 74 3a 20 64 6f 20 6e 6f 74  ..-quiet: do not
10310 20 70 72 69 6e 74 20 61 6e 79 74 68 69 6e 67 0a   print anything.
10320 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 20  .--:     end of 
10330 6f 70 74 69 6f 6e 73 0a 20 20 20 20 7d 0a 20 20  options.    }.  
10340 20 20 50 61 72 73 65 41 72 67 73 20 24 61 72 67    ParseArgs $arg
10350 73 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 6f  s $usagestring o
10360 70 74 73 0a 0a 20 20 20 20 73 65 74 20 66 6f 75  pts..    set fou
10370 6e 64 20 30 0a 20 20 20 20 73 65 74 20 69 70 6f  nd 0.    set ipo
10380 73 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20  s 0.    foreach 
10390 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b  i $breakpoints {
103a0 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24  ..if { [lindex $
103b0 69 20 30 5d 20 3d 3d 20 24 6f 70 74 73 28 62 72  i 0] == $opts(br
103c0 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 7d 20 7b  eakpointnum) } {
103d0 0a 09 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20  ..    set found 
103e0 31 0a 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a  1..    break..}.
103f0 09 69 6e 63 72 20 69 70 6f 73 0a 20 20 20 20 7d  .incr ipos.    }
10400 0a 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75 6e  .    if { !$foun
10410 64 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20  d } {..error [_ 
10420 22 42 72 65 61 6b 70 6f 69 6e 74 20 25 73 20 64  "Breakpoint %s d
10430 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 5c 6e 25  oes not exist\n%
10440 73 22 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f  s" $opts(breakpo
10450 69 6e 74 6e 75 6d 29 20 24 75 73 61 67 65 73 74  intnum) $usagest
10460 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 20 20  ring].    }.    
10470 73 65 74 20 62 72 20 5b 6c 69 6e 64 65 78 20 24  set br [lindex $
10480 62 72 65 61 6b 70 6f 69 6e 74 73 20 24 69 70 6f  breakpoints $ipo
10490 73 5d 0a 20 20 20 20 6c 73 65 74 20 62 72 20 32  s].    lset br 2
104a0 20 22 22 0a 20 20 20 20 6c 73 65 74 20 62 72 20   "".    lset br 
104b0 33 20 22 22 0a 20 20 20 20 73 65 74 20 62 72 65  3 "".    set bre
104c0 61 6b 70 6f 69 6e 74 73 20 5b 6c 72 65 70 6c 61  akpoints [lrepla
104d0 63 65 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20  ce $breakpoints 
104e0 24 69 70 6f 73 20 24 69 70 6f 73 20 24 62 72 5d  $ipos $ipos $br]
104f0 0a 0a 20 20 20 20 55 70 64 61 74 65 52 65 6d 6f  ..    UpdateRemo
10500 74 65 42 72 65 61 6b 73 0a 0a 20 20 20 20 69 66  teBreaks..    if
10510 20 7b 20 21 24 6f 70 74 73 28 2d 71 75 69 65 74   { !$opts(-quiet
10520 29 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 5f  ) } {..return [_
10530 20 22 62 72 65 61 6b 70 6f 69 6e 74 20 25 73 20   "breakpoint %s 
10540 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 74 72 61  converted to tra
10550 63 65 22 20 24 6f 70 74 73 28 62 72 65 61 6b 70  ce" $opts(breakp
10560 6f 69 6e 74 6e 75 6d 29 5d 0a 20 20 20 20 7d 0a  ointnum)].    }.
10570 7d 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  }...proc RamDebu
10580 67 67 65 72 3a 3a 72 62 72 65 61 6b 20 7b 20 61  gger::rbreak { a
10590 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  rgs } {.    vari
105a0 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65  able remoteserve
105b0 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  r.    variable c
105c0 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76  urrentfile.    v
105d0 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
105e0 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20  ile_endline.    
105f0 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74  variable current
10600 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c  line.    variabl
10610 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61 72 69  e files.    vari
10620 61 62 6c 65 20 66 69 6c 65 73 6c 69 73 74 0a 20  able fileslist. 
10630 20 20 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74     variable inst
10640 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 0a 20  rumentedfilesP. 
10650 20 20 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74     variable inst
10660 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 52 0a 20  rumentedfilesR. 
10670 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f     variable remo
10680 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20  teserverType.   
10690 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70   variable breakp
106a0 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62  oints.    variab
106b0 6c 65 20 64 65 62 75 67 67 65 72 73 74 61 74 65  le debuggerstate
106c0 0a 0a 20 20 20 20 69 66 20 7b 20 24 64 65 62 75  ..    if { $debu
106d0 67 67 65 72 73 74 61 74 65 20 3d 3d 20 22 74 69  ggerstate == "ti
106e0 6d 65 22 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b  me" } {..error [
106f0 5f 20 22 43 6f 6d 6d 61 6e 64 20 72 62 72 65 61  _ "Command rbrea
10700 6b 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64  k cannot be used
10710 20 69 6e 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e   in 'time' mode.
10720 20 43 68 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20   Check rtime"]. 
10730 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 75 73     }..    set us
10740 61 67 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65  agestring {usage
10750 3a 20 72 62 72 65 61 6b 20 3f 73 77 69 74 63 68  : rbreak ?switch
10760 65 73 3f 20 3f 66 69 6c 65 3f 20 6c 69 6e 65 0a  es? ?file? line.
10770 09 2d 68 3a 20 20 20 20 20 64 69 73 70 6c 61 79  .-h:     display
10780 73 20 75 73 61 67 65 0a 09 2d 71 75 69 65 74 3a  s usage..-quiet:
10790 20 64 6f 20 6e 6f 74 20 70 72 69 6e 74 20 61 6e   do not print an
107a0 79 74 68 69 6e 67 0a 09 2d 66 6f 72 63 65 3a 20  ything..-force: 
107b0 66 6f 72 63 65 20 74 6f 20 72 65 6c 6f 61 64 20  force to reload 
107c0 66 69 6c 65 0a 09 2d 2d 3a 20 20 20 20 20 65 6e  file..--:     en
107d0 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 54  d of options...T
107e0 68 69 73 20 63 6f 6d 6d 61 6e 64 20 73 65 74 73  his command sets
107f0 20 61 20 62 72 65 61 6b 70 6f 69 6e 74 20 69 6e   a breakpoint in
10800 20 74 68 65 20 67 69 76 65 6e 20 6c 69 6e 65 2e   the given line.
10810 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65  .    }.    Parse
10820 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61 67  Args $args $usag
10830 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20  estring opts..  
10840 20 20 69 66 20 7b 20 24 6f 70 74 73 28 6c 69 6e    if { $opts(lin
10850 65 29 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72  e) == "" } {..er
10860 72 6f 72 20 5b 5f 20 22 49 74 20 69 73 20 6e 65  ror [_ "It is ne
10870 63 65 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72  cessary to enter
10880 20 61 20 6c 69 6e 65 20 6e 75 6d 62 65 72 5c 6e   a line number\n
10890 25 73 22 20 24 75 73 61 67 65 73 74 72 69 6e 67  %s" $usagestring
108a0 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  ].    }.    set 
108b0 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65  currentfile_save
108c0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20   $currentfile.  
108d0 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c    set currentfil
108e0 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 20 24  e_endline_save $
108f0 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c  currentfile_endl
10900 69 6e 65 0a 20 20 20 20 69 66 20 7b 20 5b 63 61  ine.    if { [ca
10910 74 63 68 20 7b 0a 09 72 6c 69 73 74 20 2d 71 75  tch {..rlist -qu
10920 69 65 74 20 24 6f 70 74 73 28 66 69 6c 65 29 20  iet $opts(file) 
10930 24 6f 70 74 73 28 6c 69 6e 65 29 0a 20 20 20 20  $opts(line).    
10940 7d 20 65 72 72 63 61 74 63 68 5d 20 7d 20 7b 0a  } errcatch] } {.
10950 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65  .set currentfile
10960 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61   $currentfile_sa
10970 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66  ve..set currentf
10980 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72  ile_endline $cur
10990 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  rentfile_endline
109a0 5f 73 61 76 65 0a 09 65 72 72 6f 72 20 22 5b 6c  _save..error "[l
109b0 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 65 72  index [split $er
109c0 72 63 61 74 63 68 20 5c 6e 5d 20 30 5d 5c 6e 24  rcatch \n] 0]\n$
109d0 75 73 61 67 65 73 74 72 69 6e 67 22 0a 20 20 20  usagestring".   
109e0 20 7d 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65   }..    set file
109f0 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78  num [lsearch -ex
10a00 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24  act $fileslist $
10a10 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20 20  currentfile].   
10a20 20 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74 79   .    set filety
10a30 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65  pe [GiveFileType
10a40 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20   $currentfile]. 
10a50 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70     if { $filetyp
10a60 65 20 3d 3d 20 22 54 43 4c 22 20 7d 20 7b 0a 09  e == "TCL" } {..
10a70 73 65 74 20 69 70 6f 73 20 5b 73 74 72 69 6e 67  set ipos [string
10a80 20 66 69 72 73 74 20 22 52 44 43 3a 3a 46 20 24   first "RDC::F $
10a90 66 69 6c 65 6e 75 6d 20 24 63 75 72 72 65 6e 74  filenum $current
10aa0 6c 69 6e 65 20 3b 22 20 24 69 6e 73 74 72 75 6d  line ;" $instrum
10ab0 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 72  entedfilesP($cur
10ac0 72 65 6e 74 66 69 6c 65 29 5d 0a 09 69 66 20 7b  rentfile)]..if {
10ad0 20 24 69 70 6f 73 20 3d 3d 20 2d 31 20 7d 20 7b   $ipos == -1 } {
10ae0 0a 09 20 20 20 20 73 65 74 20 69 70 6f 73 20 5b  ..    set ipos [
10af0 73 74 72 69 6e 67 20 66 69 72 73 74 20 22 52 44  string first "RD
10b00 43 3a 3a 46 20 24 66 69 6c 65 6e 75 6d 20 24 63  C::F $filenum $c
10b10 75 72 72 65 6e 74 6c 69 6e 65 20 3b 22 20 24 69  urrentline ;" $i
10b20 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
10b30 52 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d  R($currentfile)]
10b40 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73  ..    if { $ipos
10b50 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74   == -1 } {...set
10b60 20 65 72 72 6f 72 6d 65 73 73 61 67 65 20 5b 5f   errormessage [_
10b70 20 22 45 72 72 6f 72 3a 20 6c 69 6e 65 20 25 73   "Error: line %s
10b80 20 69 73 20 6e 6f 74 20 69 6e 73 74 72 75 6d 65   is not instrume
10b90 6e 74 65 64 22 20 24 63 75 72 72 65 6e 74 6c 69  nted" $currentli
10ba0 6e 65 5d 0a 09 09 73 65 74 20 6c 69 6e 65 74 78  ne]...set linetx
10bb0 74 20 5b 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74  t [lindex [split
10bc0 20 24 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74   $files($current
10bd0 66 69 6c 65 29 20 5c 6e 5d 20 5b 65 78 70 72 20  file) \n] [expr 
10be0 7b 24 63 75 72 72 65 6e 74 6c 69 6e 65 2d 31 7d  {$currentline-1}
10bf0 5d 5d 0a 09 09 69 66 20 7b 20 5b 73 74 72 69 6e  ]]...if { [strin
10c00 67 20 74 72 69 6d 20 24 6c 69 6e 65 74 78 74 5d  g trim $linetxt]
10c10 20 3d 3d 20 22 5c 7d 22 20 7d 20 7b 0a 09 09 20   == "\}" } {... 
10c20 20 20 20 61 70 70 65 6e 64 20 65 72 72 6f 72 6d     append errorm
10c30 65 73 73 61 67 65 20 5b 5f 20 22 2e 20 43 6f 6e  essage [_ ". Con
10c40 73 69 64 65 72 20 6f 70 74 69 6f 6e 20 27 49 6e  sider option 'In
10c50 73 74 72 75 6d 65 6e 74 20 70 72 6f 63 20 6c 61  strument proc la
10c60 73 74 20 6c 69 6e 65 27 20 69 6e 20 50 72 65 66  st line' in Pref
10c70 65 72 65 6e 63 65 73 22 5d 0a 09 09 7d 0a 09 09  erences"]...}...
10c80 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 20  set currentfile 
10c90 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 76  $currentfile_sav
10ca0 65 0a 09 09 73 65 74 20 63 75 72 72 65 6e 74 66  e...set currentf
10cb0 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72  ile_endline $cur
10cc0 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  rentfile_endline
10cd0 5f 73 61 76 65 0a 09 09 65 72 72 6f 72 20 24 65  _save...error $e
10ce0 72 72 6f 72 6d 65 73 73 61 67 65 0a 09 20 20 20  rrormessage..   
10cf0 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65   }..}.    } else
10d00 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 3d  if { $filetype =
10d10 3d 20 22 43 2f 43 2b 2b 22 20 7d 20 7b 0a 09 23  = "C/C++" } {..#
10d20 20 6e 6f 74 68 69 6e 67 0a 20 20 20 20 7d 20 65   nothing.    } e
10d30 6c 73 65 20 7b 0a 09 73 65 74 20 65 72 72 6f 72  lse {..set error
10d40 6d 65 73 73 61 67 65 20 5b 5f 20 22 45 72 72 6f  message [_ "Erro
10d50 72 3a 20 74 68 69 73 20 74 79 70 65 20 6f 66 20  r: this type of 
10d60 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 70 65  file does not pe
10d70 72 6d 6d 69 74 20 64 65 62 75 67 67 69 6e 67 22  rmmit debugging"
10d80 5d 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69  ]..set currentfi
10d90 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f  le $currentfile_
10da0 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e  save..set curren
10db0 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63  tfile_endline $c
10dc0 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69  urrentfile_endli
10dd0 6e 65 5f 73 61 76 65 0a 09 65 72 72 6f 72 20 24  ne_save..error $
10de0 65 72 72 6f 72 6d 65 73 73 61 67 65 0a 20 20 20  errormessage.   
10df0 20 7d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20   }.    .    set 
10e00 4e 75 6d 42 72 65 61 6b 50 6f 69 6e 74 20 31 0a  NumBreakPoint 1.
10e10 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 62      foreach i $b
10e20 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 69 66  reakpoints {..if
10e30 20 7b 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d   { [lindex $i 0]
10e40 20 3e 3d 20 24 4e 75 6d 42 72 65 61 6b 50 6f 69   >= $NumBreakPoi
10e50 6e 74 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  nt } {..    set 
10e60 4e 75 6d 42 72 65 61 6b 50 6f 69 6e 74 20 5b 65  NumBreakPoint [e
10e70 78 70 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 30  xpr [lindex $i 0
10e80 5d 2b 31 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20  ]+1]..}.    }.  
10e90 20 20 6c 61 70 70 65 6e 64 20 62 72 65 61 6b 70    lappend breakp
10ea0 6f 69 6e 74 73 20 5b 6c 69 73 74 20 24 4e 75 6d  oints [list $Num
10eb0 42 72 65 61 6b 50 6f 69 6e 74 20 31 20 24 63 75  BreakPoint 1 $cu
10ec0 72 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65  rrentfile $curre
10ed0 6e 74 6c 69 6e 65 20 22 22 5d 0a 20 20 20 20 55  ntline ""].    U
10ee0 70 64 61 74 65 52 65 6d 6f 74 65 42 72 65 61 6b  pdateRemoteBreak
10ef0 73 0a 0a 20 20 20 20 73 65 74 20 63 75 72 72 65  s..    set curre
10f00 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66  ntfile $currentf
10f10 69 6c 65 5f 73 61 76 65 0a 20 20 20 20 73 65 74  ile_save.    set
10f20 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64   currentfile_end
10f30 6c 69 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c  line $currentfil
10f40 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 20  e_endline_save. 
10f50 20 20 20 69 66 20 7b 20 21 24 6f 70 74 73 28 2d     if { !$opts(-
10f60 71 75 69 65 74 29 20 7d 20 7b 0a 09 72 65 74 75  quiet) } {..retu
10f70 72 6e 20 5b 5f 20 22 73 65 74 20 62 72 65 61 6b  rn [_ "set break
10f80 70 6f 69 6e 74 20 25 73 20 61 74 20 25 73 20 25  point %s at %s %
10f90 73 22 20 24 4e 75 6d 42 72 65 61 6b 50 6f 69 6e  s" $NumBreakPoin
10fa0 74 20 24 6f 70 74 73 28 66 69 6c 65 29 20 24 63  t $opts(file) $c
10fb0 75 72 72 65 6e 74 6c 69 6e 65 5d 0a 20 20 20 20  urrentline].    
10fc0 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  }.}..proc RamDeb
10fd0 75 67 67 65 72 3a 3a 72 69 6e 66 6f 20 7b 20 61  ugger::rinfo { a
10fe0 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  rgs } {.    vari
10ff0 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73  able breakpoints
11000 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
11010 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 73  rrentfile..    s
11020 65 74 20 75 73 61 67 65 73 74 72 69 6e 67 20 7b  et usagestring {
11030 75 73 61 67 65 3a 20 72 69 6e 66 6f 20 3f 73 77  usage: rinfo ?sw
11040 69 74 63 68 65 73 3f 20 3f 6c 69 6e 65 3f 0a 09  itches? ?line?..
11050 2d 66 75 6c 6c 3a 20 20 20 20 72 65 74 75 72 6e  -full:    return
11060 73 20 61 6c 6c 20 62 72 65 61 6b 70 6f 69 6e 74  s all breakpoint
11070 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72   information for
11080 20 6c 69 6e 65 0a 09 2d 68 3a 20 20 20 20 20 20   line..-h:      
11090 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a   displays usage.
110a0 09 2d 2d 3a 20 20 20 20 20 20 20 65 6e 64 20 6f  .--:       end o
110b0 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 44 69 73 70  f options...Disp
110c0 6c 61 79 20 61 63 74 69 76 65 20 62 72 65 61 6b  lay active break
110d0 70 6f 69 6e 74 73 2e 20 49 66 20 6c 69 6e 65 20  points. If line 
110e0 69 73 20 65 6e 74 65 72 65 64 2c 20 69 74 20 72  is entered, it r
110f0 65 66 65 72 73 20 74 6f 20 74 68 65 0a 09 63 75  efers to the..cu
11100 72 72 65 6e 74 66 69 6c 65 2e 0a 20 20 20 20 7d  rrentfile..    }
11110 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 20 24  .    ParseArgs $
11120 61 72 67 73 20 24 75 73 61 67 65 73 74 72 69 6e  args $usagestrin
11130 67 20 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b  g opts..    if {
11140 20 24 6f 70 74 73 28 6c 69 6e 65 29 20 21 3d 20   $opts(line) != 
11150 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 73  "" } {..if { ![s
11160 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
11170 20 24 6f 70 74 73 28 6c 69 6e 65 29 5d 20 7d 20   $opts(line)] } 
11180 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b 5f 20  {..    error [_ 
11190 22 6c 69 6e 65 20 27 25 73 27 20 6d 75 73 74 20  "line '%s' must 
111a0 62 65 20 61 20 6e 75 6d 62 65 72 5c 6e 25 73 22  be a number\n%s"
111b0 20 24 6c 69 6e 65 20 24 75 73 61 67 65 73 74 72   $line $usagestr
111c0 69 6e 67 5d 0a 09 7d 0a 09 73 65 74 20 72 65 74  ing]..}..set ret
111d0 76 61 6c 20 22 22 0a 09 66 6f 72 65 61 63 68 20  val ""..foreach 
111e0 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b  i $breakpoints {
111f0 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64  ..    if { [lind
11200 65 78 20 24 69 20 32 5d 20 3d 3d 20 24 63 75 72  ex $i 2] == $cur
11210 72 65 6e 74 66 69 6c 65 20 26 26 20 5b 6c 69 6e  rentfile && [lin
11220 64 65 78 20 24 69 20 33 5d 20 3d 3d 20 24 6f 70  dex $i 3] == $op
11230 74 73 28 6c 69 6e 65 29 20 7d 20 7b 0a 09 09 69  ts(line) } {...i
11240 66 20 7b 20 24 6f 70 74 73 28 2d 66 75 6c 6c 29  f { $opts(-full)
11250 20 7d 20 7b 0a 09 09 20 20 20 20 6c 61 70 70 65   } {...    lappe
11260 6e 64 20 72 65 74 76 61 6c 20 24 69 0a 09 09 7d  nd retval $i...}
11270 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 6c 61   else {...    la
11280 70 70 65 6e 64 20 72 65 74 76 61 6c 20 5b 6c 69  ppend retval [li
11290 6e 64 65 78 20 24 69 20 30 5d 0a 09 09 7d 0a 09  ndex $i 0]...}..
112a0 20 20 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e      }..}..return
112b0 20 24 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a 0a   $retval.    }..
112c0 20 20 20 20 73 65 74 20 72 65 74 76 61 6c 20 22      set retval "
112d0 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  ".    foreach i 
112e0 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09  $breakpoints {..
112f0 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20 24 69  append retval $i
11300 5c 6e 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74  \n.    }.    ret
11310 75 72 6e 20 24 72 65 74 76 61 6c 0a 7d 0a 0a 70  urn $retval.}..p
11320 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
11330 3a 72 64 65 6c 20 7b 20 61 72 67 73 20 7d 20 7b  :rdel { args } {
11340 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 69  .    variable fi
11350 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65  les.    variable
11360 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 0a 20 20   breakpoints..  
11370 20 20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e    set usagestrin
11380 67 20 7b 75 73 61 67 65 3a 20 72 64 65 6c 20 3f  g {usage: rdel ?
11390 73 77 69 74 63 68 65 73 3f 20 3f 62 72 65 61 6b  switches? ?break
113a0 70 6f 69 6e 74 6e 75 6d 3f 0a 09 2d 68 3a 20 20  pointnum?..-h:  
113b0 20 20 20 64 69 73 70 6c 61 79 73 20 75 73 61 67     displays usag
113c0 65 0a 09 2d 61 6c 6c 3a 20 20 20 64 65 6c 65 74  e..-all:   delet
113d0 65 20 61 6c 6c 20 62 72 65 61 6b 70 6f 69 6e 74  e all breakpoint
113e0 73 20 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20  s ..--:     end 
113f0 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 44 65 6c  of options...Del
11400 65 74 65 20 6f 6e 65 20 70 72 65 76 69 6f 75 73  ete one previous
11410 6c 79 20 64 65 66 69 6e 65 64 20 62 72 65 61 6b  ly defined break
11420 70 6f 69 6e 74 73 0a 20 20 20 20 7d 0a 20 20 20  points.    }.   
11430 20 50 61 72 73 65 41 72 67 73 20 24 61 72 67 73   ParseArgs $args
11440 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 6f 70   $usagestring op
11450 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 6f 70  ts..    if { $op
11460 74 73 28 2d 61 6c 6c 29 20 7d 20 7b 0a 09 69 66  ts(-all) } {..if
11470 20 7b 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f   { $opts(breakpo
11480 69 6e 74 6e 75 6d 29 20 21 3d 20 22 22 20 7d 20  intnum) != "" } 
11490 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b 5f 20  {..    error [_ 
114a0 22 77 68 65 6e 20 75 73 69 6e 67 20 2d 61 6c 6c  "when using -all
114b0 2c 20 6e 6f 20 62 72 65 61 6b 70 6f 69 6e 74 6e  , no breakpointn
114c0 75 6d 20 6d 75 73 74 20 62 65 20 77 72 69 74 74  um must be writt
114d0 65 6e 5c 6e 25 73 22 20 24 75 73 61 67 65 73 74  en\n%s" $usagest
114e0 72 69 6e 67 5d 0a 09 7d 0a 09 73 65 74 20 62 72  ring]..}..set br
114f0 65 61 6b 70 6f 69 6e 74 73 20 22 22 0a 09 55 70  eakpoints ""..Up
11500 64 61 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73  dateRemoteBreaks
11510 0a 09 72 65 74 75 72 6e 20 5b 5f 20 22 64 65 6c  ..return [_ "del
11520 65 74 65 64 20 61 6c 6c 20 62 72 65 61 6b 70 6f  eted all breakpo
11530 69 6e 74 73 22 5d 0a 20 20 20 20 7d 0a 20 20 20  ints"].    }.   
11540 20 69 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 69   if { ![string i
11550 73 20 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63  s integer -stric
11560 74 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69  t $opts(breakpoi
11570 6e 74 6e 75 6d 29 5d 20 7d 20 7b 0a 09 65 72 72  ntnum)] } {..err
11580 6f 72 20 5b 5f 20 22 62 72 65 61 6b 70 6f 69 6e  or [_ "breakpoin
11590 74 6e 75 6d 20 27 25 73 27 20 6d 75 73 74 20 62  tnum '%s' must b
115a0 65 20 61 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20  e a number\n%s" 
115b0 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74  $opts(breakpoint
115c0 6e 75 6d 29 20 24 75 73 61 67 65 73 74 72 69 6e  num) $usagestrin
115d0 67 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74  g].    }.    set
115e0 20 69 70 6f 73 20 30 0a 20 20 20 20 66 6f 72 65   ipos 0.    fore
115f0 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f 69 6e  ach i $breakpoin
11600 74 73 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64  ts {..if { [lind
11610 65 78 20 24 69 20 30 5d 20 3d 3d 20 24 6f 70 74  ex $i 0] == $opt
11620 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29  s(breakpointnum)
11630 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 62 72   } {..    set br
11640 65 61 6b 70 6f 69 6e 74 73 20 5b 6c 72 65 70 6c  eakpoints [lrepl
11650 61 63 65 20 24 62 72 65 61 6b 70 6f 69 6e 74 73  ace $breakpoints
11660 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 20   $ipos $ipos].. 
11670 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74 65 42     UpdateRemoteB
11680 72 65 61 6b 73 0a 09 20 20 20 20 72 65 74 75 72  reaks..    retur
11690 6e 20 5b 5f 20 22 64 65 6c 65 74 65 64 20 62 72  n [_ "deleted br
116a0 65 61 6b 70 6f 69 6e 74 20 25 73 22 20 24 6f 70  eakpoint %s" $op
116b0 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d  ts(breakpointnum
116c0 29 5d 0a 09 7d 0a 09 69 6e 63 72 20 69 70 6f 73  )]..}..incr ipos
116d0 0a 20 20 20 20 7d 0a 20 20 20 20 65 72 72 6f 72  .    }.    error
116e0 20 5b 5f 20 22 62 72 65 61 6b 70 6f 69 6e 74 20   [_ "breakpoint 
116f0 25 73 20 6e 6f 74 20 66 6f 75 6e 64 22 20 6f 70  %s not found" op
11700 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d  ts(breakpointnum
11710 29 5d 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23  )].}..##########
11720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11730 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11760 23 23 23 23 23 23 0a 23 20 20 20 20 48 65 6c 70  ######.#    Help
11770 65 72 20 62 61 73 69 63 20 66 75 6e 63 74 69 6f  er basic functio
11780 6e 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ns.#############
11790 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
117a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
117b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
117c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
117d0 23 23 23 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  ###..proc RamDeb
117e0 75 67 67 65 72 3a 3a 66 69 6c 65 6e 6f 72 6d 61  ugger::filenorma
117f0 6c 69 7a 65 20 7b 20 66 69 6c 65 20 7d 20 7b 0a  lize { file } {.
11800 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e  .    if { [strin
11810 67 20 69 6e 64 65 78 20 24 66 69 6c 65 20 30 5d  g index $file 0]
11820 20 3d 3d 20 22 2a 22 20 7d 20 7b 20 72 65 74 75   == "*" } { retu
11830 72 6e 20 24 66 69 6c 65 20 7d 0a 20 20 20 20 69  rn $file }.    i
11840 66 20 7b 20 24 66 69 6c 65 20 65 71 20 22 22 20  f { $file eq "" 
11850 7d 20 7b 20 72 65 74 75 72 6e 20 22 22 20 7d 0a  } { return "" }.
11860 20 20 20 20 0a 20 20 20 20 73 65 74 20 66 69 6c      .    set fil
11870 65 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a  e [file normaliz
11880 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 73 65 74  e $file].    set
11890 20 70 77 64 20 5b 70 77 64 5d 0a 20 20 20 20 63   pwd [pwd].    c
118a0 61 74 63 68 20 7b 0a 09 63 64 20 5b 66 69 6c 65  atch {..cd [file
118b0 20 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a   dirname $file].
118c0 09 73 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20  .set file [file 
118d0 6a 6f 69 6e 20 5b 70 77 64 5d 20 5b 66 69 6c 65  join [pwd] [file
118e0 20 74 61 69 6c 20 24 66 69 6c 65 5d 5d 0a 20 20   tail $file]].  
118f0 20 20 7d 0a 20 20 20 20 63 64 20 24 70 77 64 0a    }.    cd $pwd.
11900 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c  .    if { $::tcl
11910 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f  _platform(platfo
11920 72 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22  rm) eq "windows"
11930 20 7d 20 7b 0a 09 63 61 74 63 68 20 7b 20 73 65   } {..catch { se
11940 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 61 74 74  t file [file att
11950 72 69 62 75 74 65 73 20 24 66 69 6c 65 20 2d 6c  ributes $file -l
11960 6f 6e 67 6e 61 6d 65 5d 20 7d 0a 20 20 20 20 7d  ongname] }.    }
11970 0a 20 20 20 20 72 65 74 75 72 6e 20 24 66 69 6c  .    return $fil
11980 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  e.}..proc RamDeb
11990 75 67 67 65 72 3a 3a 47 69 76 65 46 69 6c 65 54  ugger::GiveFileT
119a0 79 70 65 46 6f 72 46 69 6c 65 42 72 6f 77 73 65  ypeForFileBrowse
119b0 72 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  r {} {.    varia
119c0 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20  ble options..   
119d0 20 73 65 74 20 74 79 70 65 73 20 22 22 0a 20 20   set types "".  
119e0 20 20 73 65 74 20 65 78 74 73 20 5b 61 72 72 61    set exts [arra
119f0 79 20 6e 61 6d 65 73 20 6f 70 74 69 6f 6e 73 20  y names options 
11a00 65 78 74 65 6e 73 69 6f 6e 73 2c 2a 5d 0a 20 20  extensions,*].  
11a10 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61    set ipos [lsea
11a20 72 63 68 20 24 65 78 74 73 20 65 78 74 65 6e 73  rch $exts extens
11a30 69 6f 6e 73 2c 54 43 4c 5d 0a 20 20 20 20 73 65  ions,TCL].    se
11a40 74 20 65 6c 6d 20 5b 6c 69 6e 64 65 78 20 24 65  t elm [lindex $e
11a50 78 74 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 73  xts $ipos].    s
11a60 65 74 20 65 78 74 73 20 5b 6c 72 65 70 6c 61 63  et exts [lreplac
11a70 65 20 24 65 78 74 73 20 24 69 70 6f 73 20 24 69  e $exts $ipos $i
11a80 70 6f 73 5d 0a 20 20 20 20 73 65 74 20 65 78 74  pos].    set ext
11a90 73 20 5b 6c 69 6e 73 65 72 74 20 24 65 78 74 73  s [linsert $exts
11aa0 20 30 20 24 65 6c 6d 5d 0a 20 20 20 20 66 6f 72   0 $elm].    for
11ab0 65 61 63 68 20 69 20 24 65 78 74 73 20 7b 0a 09  each i $exts {..
11ac0 72 65 67 65 78 70 20 7b 2c 28 2e 2a 29 7d 20 24  regexp {,(.*)} $
11ad0 69 20 7b 7d 20 74 79 70 65 0a 09 6c 61 70 70 65  i {} type..lappe
11ae0 6e 64 20 74 79 70 65 73 20 5b 6c 69 73 74 20 24  nd types [list $
11af0 74 79 70 65 20 24 6f 70 74 69 6f 6e 73 28 24 69  type $options($i
11b00 29 5d 0a 20 20 20 20 7d 0a 20 20 20 20 6c 61 70  )].    }.    lap
11b10 70 65 6e 64 20 74 79 70 65 73 20 5b 6c 69 73 74  pend types [list
11b20 20 5b 5f 20 22 41 6c 6c 20 46 69 6c 65 73 22 5d   [_ "All Files"]
11b30 20 22 2a 22 5d 0a 20 20 20 20 72 65 74 75 72 6e   "*"].    return
11b40 20 24 74 79 70 65 73 0a 7d 0a 0a 70 72 6f 63 20   $types.}..proc 
11b50 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 69 76  RamDebugger::Giv
11b60 65 46 69 6c 65 54 79 70 65 20 7b 20 66 69 6c 65  eFileType { file
11b70 6e 61 6d 65 20 7d 20 7b 0a 20 20 20 20 76 61 72  name } {.    var
11b80 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20  iable options.  
11b90 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
11ba0 6e 73 5f 64 65 66 0a 20 20 20 20 0a 20 20 20 20  ns_def.    .    
11bb0 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 66 69  if { $options(fi
11bc0 6c 65 74 79 70 65 29 20 6e 65 20 22 61 75 74 6f  letype) ne "auto
11bd0 22 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 24 6f  " } {..return $o
11be0 70 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29  ptions(filetype)
11bf0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b  .    }..    if {
11c00 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 6f 70   [array names op
11c10 74 69 6f 6e 73 20 65 78 74 65 6e 73 69 6f 6e 73  tions extensions
11c20 2c 2a 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 66  ,*] == "" } {..f
11c30 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 20  oreach i [array 
11c40 6e 61 6d 65 73 20 6f 70 74 69 6f 6e 73 5f 64 65  names options_de
11c50 66 20 65 78 74 65 6e 73 69 6f 6e 73 2c 2a 5d 20  f extensions,*] 
11c60 7b 0a 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f  {..    set optio
11c70 6e 73 28 24 69 29 20 24 6f 70 74 69 6f 6e 73 5f  ns($i) $options_
11c80 64 65 66 28 24 69 29 0a 09 7d 0a 20 20 20 20 7d  def($i)..}.    }
11c90 0a 20 20 20 20 73 65 74 20 74 79 70 65 73 20 22  .    set types "
11ca0 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  ".    foreach i 
11cb0 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 6f 70 74  [array names opt
11cc0 69 6f 6e 73 20 65 78 74 65 6e 73 69 6f 6e 73 2c  ions extensions,
11cd0 2a 5d 20 7b 0a 09 66 6f 72 65 61 63 68 20 65 78  *] {..foreach ex
11ce0 74 20 24 6f 70 74 69 6f 6e 73 28 24 69 29 20 7b  t $options($i) {
11cf0 0a 09 20 20 20 20 69 66 20 7b 20 24 65 78 74 20  ..    if { $ext 
11d00 3d 3d 20 22 2a 22 20 7d 20 7b 0a 09 09 69 66 20  == "*" } {...if 
11d10 7b 20 21 5b 72 65 67 65 78 70 20 7b 5e 5c 2a 2e  { ![regexp {^\*.
11d20 2a 5c 2a 24 7d 20 24 66 69 6c 65 6e 61 6d 65 5d  *\*$} $filename]
11d30 20 26 26 20 5b 66 69 6c 65 20 65 78 74 65 6e 73   && [file extens
11d40 69 6f 6e 20 24 66 69 6c 65 6e 61 6d 65 5d 20 21  ion $filename] !
11d50 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 63  = "" } {...    c
11d60 6f 6e 74 69 6e 75 65 0a 09 09 7d 0a 09 09 72 65  ontinue...}...re
11d70 67 65 78 70 20 7b 2c 28 2e 2a 29 7d 20 24 69 20  gexp {,(.*)} $i 
11d80 7b 7d 20 74 79 70 65 0a 09 09 6c 61 70 70 65 6e  {} type...lappen
11d90 64 20 74 79 70 65 73 20 5b 6c 69 73 74 20 32 20  d types [list 2 
11da0 24 74 79 70 65 5d 0a 09 20 20 20 20 7d 20 65 6c  $type]..    } el
11db0 73 65 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20  seif { [set pos 
11dc0 5b 73 74 72 69 6e 67 20 6c 61 73 74 20 24 65 78  [string last $ex
11dd0 74 20 24 66 69 6c 65 6e 61 6d 65 5d 5d 20 21 3d  t $filename]] !=
11de0 20 2d 31 20 26 26 20 5c 0a 09 09 24 70 6f 73 2b   -1 && \...$pos+
11df0 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
11e00 65 78 74 5d 20 3d 3d 20 5b 73 74 72 69 6e 67 20  ext] == [string 
11e10 6c 65 6e 67 74 68 20 24 66 69 6c 65 6e 61 6d 65  length $filename
11e20 5d 20 7d 20 7b 0a 09 09 72 65 67 65 78 70 20 7b  ] } {...regexp {
11e30 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 74 79 70  ,(.*)} $i {} typ
11e40 65 0a 09 09 6c 61 70 70 65 6e 64 20 74 79 70 65  e...lappend type
11e50 73 20 5b 6c 69 73 74 20 31 20 24 74 79 70 65 5d  s [list 1 $type]
11e60 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d  ..    }..}.    }
11e70 0a 20 20 20 20 73 65 74 20 74 79 70 65 73 20 5b  .    set types [
11e80 6c 73 6f 72 74 20 2d 69 6e 74 65 67 65 72 20 2d  lsort -integer -
11e90 69 6e 64 65 78 20 30 20 24 74 79 70 65 73 5d 0a  index 0 $types].
11ea0 20 20 20 20 72 65 74 75 72 6e 20 5b 6c 69 6e 64      return [lind
11eb0 65 78 20 24 74 79 70 65 73 20 30 20 31 5d 0a 7d  ex $types 0 1].}
11ec0 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67  ..proc RamDebugg
11ed0 65 72 3a 3a 50 61 72 73 65 41 72 67 73 20 7b 20  er::ParseArgs { 
11ee0 61 72 67 73 20 75 73 61 67 65 73 74 72 69 6e 67  args usagestring
11ef0 20 4f 70 74 73 4e 61 6d 65 20 7d 20 7b 0a 20 20   OptsName } {.  
11f00 20 20 75 70 76 61 72 20 31 20 24 4f 70 74 73 4e    upvar 1 $OptsN
11f10 61 6d 65 20 6f 70 74 73 0a 0a 20 20 20 20 73 65  ame opts..    se
11f20 74 20 73 77 69 74 63 68 65 73 20 22 22 0a 20 20  t switches "".  
11f30 20 20 66 6f 72 65 61 63 68 20 69 20 5b 6c 72 61    foreach i [lra
11f40 6e 67 65 20 5b 73 70 6c 69 74 20 24 75 73 61 67  nge [split $usag
11f50 65 73 74 72 69 6e 67 20 5c 6e 5d 20 31 20 65 6e  estring \n] 1 en
11f60 64 5d 20 7b 0a 09 69 66 20 7b 20 5b 73 74 72 69  d] {..if { [stri
11f70 6e 67 20 74 72 69 6d 20 24 69 5d 20 3d 3d 20 22  ng trim $i] == "
11f80 22 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 72  " } { break }..r
11f90 65 67 65 78 70 20 7b 28 2e 2a 29 3a 7d 20 24 69  egexp {(.*):} $i
11fa0 20 7b 7d 20 73 77 0a 09 69 66 20 7b 20 5b 72 65   {} sw..if { [re
11fb0 67 65 78 70 20 7b 28 2d 5c 53 2b 29 5c 73 2b 28  gexp {(-\S+)\s+(
11fc0 5c 53 2b 29 7d 20 24 73 77 20 7b 7d 20 73 77 20  \S+)} $sw {} sw 
11fd0 61 72 67 73 77 5d 20 7d 20 7b 0a 09 20 20 20 20  argsw] } {..    
11fe0 6c 61 70 70 65 6e 64 20 73 77 69 74 63 68 65 73  lappend switches
11ff0 20 24 73 77 0a 09 20 20 20 20 73 65 74 20 73 77   $sw..    set sw
12000 69 74 63 68 65 73 61 72 67 28 24 73 77 29 20 31  itchesarg($sw) 1
12010 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
12020 6c 61 70 70 65 6e 64 20 73 77 69 74 63 68 65 73  lappend switches
12030 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 73   [string trim $s
12040 77 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20  w]..}.    }.    
12050 73 65 74 20 6e 6f 72 6d 61 6c 61 72 67 73 20 5b  set normalargs [
12060 6c 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 5b  lrange [lindex [
12070 73 70 6c 69 74 20 24 75 73 61 67 65 73 74 72 69  split $usagestri
12080 6e 67 20 5c 6e 5d 20 30 5d 20 33 20 65 6e 64 5d  ng \n] 0] 3 end]
12090 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  ..    foreach i 
120a0 24 73 77 69 74 63 68 65 73 20 7b 20 73 65 74 20  $switches { set 
120b0 6f 70 74 73 28 24 69 29 20 30 20 7d 0a 20 20 20  opts($i) 0 }.   
120c0 20 66 6f 72 65 61 63 68 20 69 20 24 6e 6f 72 6d   foreach i $norm
120d0 61 6c 61 72 67 73 20 7b 20 73 65 74 20 6f 70 74  alargs { set opt
120e0 73 28 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  s([string trim $
120f0 69 20 3f 5d 29 20 22 22 20 7d 0a 0a 20 20 20 20  i ?]) "" }..    
12100 73 65 74 20 63 61 6e 68 61 76 65 66 6c 61 67 73  set canhaveflags
12110 20 31 0a 20 20 20 20 73 65 74 20 69 61 72 67 73   1.    set iargs
12120 20 30 0a 0a 20 20 20 20 66 6f 72 20 7b 20 73 65   0..    for { se
12130 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b  t i 0 } { $i < [
12140 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 20 7d  llength $args] }
12150 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 73   { incr i } {..s
12160 65 74 20 61 72 67 20 5b 6c 69 6e 64 65 78 20 24  et arg [lindex $
12170 61 72 67 73 20 24 69 5d 0a 0a 09 69 66 20 7b 20  args $i]...if { 
12180 24 63 61 6e 68 61 76 65 66 6c 61 67 73 20 26 26  $canhaveflags &&
12190 20 24 61 72 67 20 3d 3d 20 22 2d 2d 22 20 7d 20   $arg == "--" } 
121a0 7b 0a 09 20 20 20 20 73 65 74 20 63 61 6e 68 61  {..    set canha
121b0 76 65 66 6c 61 67 73 20 30 0a 09 7d 20 65 6c 73  veflags 0..} els
121c0 65 69 66 20 7b 20 24 63 61 6e 68 61 76 65 66 6c  eif { $canhavefl
121d0 61 67 73 20 26 26 20 24 61 72 67 20 3d 3d 20 22  ags && $arg == "
121e0 2d 68 22 20 7d 20 7b 0a 09 20 20 20 20 72 65 74  -h" } {..    ret
121f0 75 72 6e 20 2d 63 6f 64 65 20 72 65 74 75 72 6e  urn -code return
12200 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69   [string map [li
12210 73 74 20 5c 74 20 5b 73 74 72 69 6e 67 20 72 65  st \t [string re
12220 70 65 61 74 20 22 20 22 20 38 5d 5d 20 24 75 73  peat " " 8]] $us
12230 61 67 65 73 74 72 69 6e 67 5d 0a 09 7d 20 65 6c  agestring]..} el
12240 73 65 69 66 20 7b 20 24 63 61 6e 68 61 76 65 66  seif { $canhavef
12250 6c 61 67 73 20 26 26 20 5b 6c 73 65 61 72 63 68  lags && [lsearch
12260 20 24 73 77 69 74 63 68 65 73 20 24 61 72 67 5d   $switches $arg]
12270 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20   != -1 } {..    
12280 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
12290 73 20 73 77 69 74 63 68 65 73 61 72 67 28 24 61  s switchesarg($a
122a0 72 67 29 5d 20 7d 20 7b 0a 09 09 69 6e 63 72 20  rg)] } {...incr 
122b0 69 0a 09 09 73 65 74 20 6f 70 74 73 28 24 61 72  i...set opts($ar
122c0 67 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73  g) [lindex $args
122d0 20 24 69 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65   $i]..    } else
122e0 20 7b 0a 09 09 73 65 74 20 6f 70 74 73 28 24 61   {...set opts($a
122f0 72 67 29 20 31 0a 09 20 20 20 20 7d 0a 09 7d 20  rg) 1..    }..} 
12300 65 6c 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70  elseif { [regexp
12310 20 7b 5e 5b 3f 5d 2e 2a 5b 2e 5d 7b 33 7d 5b 3f   {^[?].*[.]{3}[?
12320 5d 24 7d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72  ]$} [lindex $nor
12330 6d 61 6c 61 72 67 73 20 24 69 61 72 67 73 5d 5d  malargs $iargs]]
12340 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 61 72   } {..    set ar
12350 67 6e 61 6d 65 20 5b 73 74 72 69 6e 67 20 74 72  gname [string tr
12360 69 6d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d  im [lindex $norm
12370 61 6c 61 72 67 73 20 5b 65 78 70 72 20 24 69 61  alargs [expr $ia
12380 72 67 73 2d 31 5d 5d 20 22 3f 2e 22 5d 0a 09 20  rgs-1]] "?."].. 
12390 20 20 20 73 65 74 20 6f 70 74 73 28 24 61 72 67     set opts($arg
123a0 6e 61 6d 65 29 20 5b 63 6f 6e 63 61 74 20 24 6f  name) [concat $o
123b0 70 74 73 28 24 61 72 67 6e 61 6d 65 29 20 24 61  pts($argname) $a
123c0 72 67 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20  rg]..} else {.. 
123d0 20 20 20 73 65 74 20 63 61 6e 68 61 76 65 66 6c     set canhavefl
123e0 61 67 73 20 30 0a 09 20 20 20 20 77 68 69 6c 65  ags 0..    while
123f0 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e 5b 3f 5d   { [regexp {^[?]
12400 2e 2a 5b 3f 5d 24 7d 20 5b 6c 69 6e 64 65 78 20  .*[?]$} [lindex 
12410 24 6e 6f 72 6d 61 6c 61 72 67 73 20 24 69 5d 5d  $normalargs $i]]
12420 20 26 26 20 5c 0a 09 09 20 20 20 20 20 20 20 20   && \...        
12430 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 2d  [llength $args]-
12440 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 6e  $i < [llength $n
12450 6f 72 6d 61 6c 61 72 67 73 5d 2d 24 69 61 72 67  ormalargs]-$iarg
12460 73 20 26 26 20 5c 0a 09 09 20 20 20 20 20 20 20  s && \...       
12470 20 21 5b 72 65 67 65 78 70 20 7b 5e 5b 3f 5d 2e   ![regexp {^[?].
12480 2a 5b 3f 5d 24 7d 20 5b 6c 69 6e 64 65 78 20 24  *[?]$} [lindex $
12490 6e 6f 72 6d 61 6c 61 72 67 73 20 65 6e 64 5d 5d  normalargs end]]
124a0 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 69 61 72   } {...if { $iar
124b0 67 73 20 3e 3d 20 5b 6c 6c 65 6e 67 74 68 20 24  gs >= [llength $
124c0 6e 6f 72 6d 61 6c 61 72 67 73 5d 20 7d 20 7b 20  normalargs] } { 
124d0 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e  error [_ "Error.
124e0 20 25 73 22 20 24 75 73 61 67 65 73 74 72 69 6e   %s" $usagestrin
124f0 67 5d 20 7d 0a 09 09 73 65 74 20 6f 70 74 73 28  g] }...set opts(
12500 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 5b 6c 69  [string trim [li
12510 6e 64 65 78 20 24 6e 6f 72 6d 61 6c 61 72 67 73  ndex $normalargs
12520 20 24 69 61 72 67 73 5d 20 3f 5d 29 20 22 22 0a   $iargs] ?]) "".
12530 09 09 69 6e 63 72 20 69 61 72 67 73 0a 09 20 20  ..incr iargs..  
12540 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 69    }..    if { $i
12550 61 72 67 73 20 3e 3d 20 5b 6c 6c 65 6e 67 74 68  args >= [llength
12560 20 24 6e 6f 72 6d 61 6c 61 72 67 73 5d 20 7d 20   $normalargs] } 
12570 7b 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f  { error [_ "Erro
12580 72 2e 20 25 73 22 20 24 75 73 61 67 65 73 74 72  r. %s" $usagestr
12590 69 6e 67 5d 20 7d 0a 09 20 20 20 20 73 65 74 20  ing] }..    set 
125a0 6f 70 74 73 28 5b 73 74 72 69 6e 67 20 74 72 69  opts([string tri
125b0 6d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61  m [lindex $norma
125c0 6c 61 72 67 73 20 24 69 61 72 67 73 5d 20 3f 5d  largs $iargs] ?]
125d0 29 20 24 61 72 67 0a 09 20 20 20 20 69 6e 63 72  ) $arg..    incr
125e0 20 69 61 72 67 73 0a 09 7d 0a 20 20 20 20 7d 0a   iargs..}.    }.
125f0 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20      for { set i 
12600 24 69 61 72 67 73 20 7d 20 7b 20 24 69 20 3c 20  $iargs } { $i < 
12610 5b 6c 6c 65 6e 67 74 68 20 24 6e 6f 72 6d 61 6c  [llength $normal
12620 61 72 67 73 5d 20 7d 20 7b 20 69 6e 63 72 20 69  args] } { incr i
12630 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 72 65 67   } {..if { ![reg
12640 65 78 70 20 7b 5e 5b 3f 5d 2e 2a 5b 3f 5d 24 7d  exp {^[?].*[?]$}
12650 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61 6c   [lindex $normal
12660 61 72 67 73 20 24 69 5d 5d 20 7d 20 7b 0a 09 20  args $i]] } {.. 
12670 20 20 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 72     error [_ "Err
12680 6f 72 2e 20 25 73 22 20 24 75 73 61 67 65 73 74  or. %s" $usagest
12690 72 69 6e 67 5d 0a 09 7d 20 65 6c 73 65 20 7b 20  ring]..} else { 
126a0 73 65 74 20 6f 70 74 73 28 5b 73 74 72 69 6e 67  set opts([string
126b0 20 74 72 69 6d 20 5b 6c 69 6e 64 65 78 20 24 6e   trim [lindex $n
126c0 6f 72 6d 61 6c 61 72 67 73 20 24 69 5d 20 3f 5d  ormalargs $i] ?]
126d0 29 20 22 22 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a  ) "" }.    }.}..
126e0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72  proc RamDebugger
126f0 3a 3a 4d 79 4e 61 6d 65 49 73 20 7b 20 6e 61 6d  ::MyNameIs { nam
12700 65 20 69 64 20 7d 20 7b 0a 20 20 20 20 76 61 72  e id } {.    var
12710 69 61 62 6c 65 20 73 65 72 76 69 63 65 73 0a 20  iable services. 
12720 20 20 20 53 65 74 4d 65 73 73 61 67 65 20 5b 5f     SetMessage [_
12730 20 22 52 65 6d 6f 74 65 20 70 72 6f 67 72 61 6d   "Remote program
12740 3a 20 25 73 22 20 24 6e 61 6d 65 5d 0a 20 20 20  : %s" $name].   
12750 20 73 65 74 20 73 65 72 76 69 63 65 73 28 24 6e   set services($n
12760 61 6d 65 29 20 24 69 64 0a 7d 0a 0a 70 72 6f 63  ame) $id.}..proc
12770 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 46 69   RamDebugger::Fi
12780 6e 64 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73  ndActivePrograms
12790 20 7b 20 66 6f 72 63 65 20 7d 20 7b 0a 20 20 20   { force } {.   
127a0 20 76 61 72 69 61 62 6c 65 20 73 65 72 76 69 63   variable servic
127b0 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  es.    variable 
127c0 64 65 62 75 67 67 65 72 73 65 72 76 65 72 0a 20  debuggerserver. 
127d0 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75     variable debu
127e0 67 67 65 72 73 65 72 76 65 72 4e 75 6d 0a 20 20  ggerserverNum.  
127f0 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
12800 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ns.    variable 
12810 69 73 77 69 6e 63 65 0a 20 20 20 20 76 61 72 69  iswince.    vari
12820 61 62 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 0a 20  able usecommR.. 
12830 20 20 20 69 66 20 7b 20 24 75 73 65 63 6f 6d 6d     if { $usecomm
12840 52 20 7d 20 7b 0a 09 69 66 20 7b 20 21 24 6f 70  R } {..if { !$op
12850 74 69 6f 6e 73 28 43 68 65 63 6b 52 65 6d 6f 74  tions(CheckRemot
12860 65 73 29 20 26 26 20 21 24 66 6f 72 63 65 20 7d  es) && !$force }
12870 20 7b 0a 09 20 20 20 20 23 20 64 69 72 74 79 20   {..    # dirty 
12880 74 72 69 63 6b 20 74 6f 20 6d 61 6b 65 20 61 72  trick to make ar
12890 72 61 79 20 65 78 69 73 74 0a 09 20 20 20 20 73  ray exist..    s
128a0 65 74 20 73 65 72 76 69 63 65 73 28 31 31 29 20  et services(11) 
128b0 22 22 0a 09 20 20 20 20 75 6e 73 65 74 20 73 65  ""..    unset se
128c0 72 76 69 63 65 73 28 31 31 29 0a 09 20 20 20 20  rvices(11)..    
128d0 72 65 74 75 72 6e 0a 09 7d 0a 09 69 66 20 7b 20  return..}..if { 
128e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 65 72  [info exists ser
128f0 76 69 63 65 73 5d 20 26 26 20 21 24 66 6f 72 63  vices] && !$forc
12900 65 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09  e } { return }..
12910 63 61 74 63 68 20 7b 20 75 6e 73 65 74 20 73 65  catch { unset se
12920 72 76 69 63 65 73 20 7d 0a 0a 09 53 65 74 4d 65  rvices }...SetMe
12930 73 73 61 67 65 20 5b 5f 20 22 53 65 61 72 63 68  ssage [_ "Search
12940 69 6e 67 20 65 78 74 65 72 6e 61 6c 20 70 72 6f  ing external pro
12950 67 72 61 6d 73 22 5d 2e 2e 2e 0a 09 50 72 6f 67  grams"].....Prog
12960 72 65 73 73 56 61 72 20 30 0a 09 57 61 69 74 53  ressVar 0..WaitS
12970 74 61 74 65 20 31 0a 0a 09 69 66 20 7b 20 24 64  tate 1...if { $d
12980 65 62 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d  ebuggerserverNum
12990 20 3d 3d 20 22 22 20 26 26 20 21 24 69 73 77 69   == "" && !$iswi
129a0 6e 63 65 20 7d 20 7b 0a 09 20 20 20 20 75 70 6c  nce } {..    upl
129b0 65 76 65 6c 20 5c 23 30 20 70 61 63 6b 61 67 65  evel \#0 package
129c0 20 72 65 71 75 69 72 65 20 63 6f 6d 6d 52 20 3b   require commR ;
129d0 23 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 28 63  #modification (c
129e0 6f 6d 6d 52 29 20 6f 66 20 74 63 6c 6c 69 62 20  ommR) of tcllib 
129f0 63 6f 6d 6d 20 70 61 63 6b 61 67 65 0a 09 20 20  comm package..  
12a00 20 20 73 65 74 20 64 65 62 75 67 67 65 72 73 65    set debuggerse
12a10 72 76 65 72 4e 75 6d 20 5b 63 6f 6d 6d 52 3a 3a  rverNum [commR::
12a20 72 65 67 69 73 74 65 72 20 52 61 6d 44 65 62 75  register RamDebu
12a30 67 67 65 72 20 31 5d 0a 09 7d 0a 09 52 61 6d 44  gger 1]..}..RamD
12a40 65 62 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73  ebugger::Progres
12a50 73 56 61 72 20 32 30 0a 09 73 65 74 20 69 70 72  sVar 20..set ipr
12a60 6f 67 72 65 73 73 20 32 30 0a 0a 09 66 6f 72 20  ogress 20...for 
12a70 7b 20 73 65 74 20 69 20 31 32 33 35 30 20 7d 20  { set i 12350 } 
12a80 7b 20 24 69 20 3c 20 31 32 33 36 30 20 7d 20 7b  { $i < 12360 } {
12a90 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 20 20 20   incr i } {..   
12aa0 20 69 66 20 7b 20 24 69 20 3d 3d 20 24 64 65 62   if { $i == $deb
12ab0 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d 20 7d  uggerserverNum }
12ac0 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20   { continue }.. 
12ad0 20 20 20 69 6e 63 72 20 69 70 72 6f 67 72 65 73     incr iprogres
12ae0 73 20 34 30 0a 09 20 20 20 20 69 66 20 7b 20 24  s 40..    if { $
12af0 69 70 72 6f 67 72 65 73 73 20 3e 20 39 30 20 7d  iprogress > 90 }
12b00 20 7b 20 73 65 74 20 69 70 72 6f 67 72 65 73 73   { set iprogress
12b10 20 39 30 20 7d 0a 09 20 20 20 20 52 61 6d 44 65   90 }..    RamDe
12b20 62 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73  bugger::Progress
12b30 56 61 72 20 24 69 70 72 6f 67 72 65 73 73 0a 09  Var $iprogress..
12b40 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 5b 6c 69      set comm [li
12b50 73 74 20 63 6f 6d 6d 52 3a 3a 63 6f 6d 6d 20 73  st commR::comm s
12b60 65 6e 64 20 2d 61 73 79 6e 63 20 24 69 20 5c 0a  end -async $i \.
12b70 09 09 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73  ..          [lis
12b80 74 20 63 61 74 63 68 20 5b 6c 69 73 74 20 63 6f  t catch [list co
12b90 6d 6d 52 3a 3a 67 69 76 65 6e 61 6d 65 20 24 64  mmR::givename $d
12ba0 65 62 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d  ebuggerserverNum
12bb0 5d 5d 5d 0a 09 20 20 20 20 73 65 74 20 65 72 72  ]]]..    set err
12bc0 20 5b 63 61 74 63 68 20 24 63 6f 6d 6d 20 65 72   [catch $comm er
12bd0 72 73 74 72 69 6e 67 5d 0a 09 7d 0a 09 23 20 64  rstring]..}..# d
12be0 69 72 74 79 20 74 72 69 63 6b 20 74 6f 20 6d 61  irty trick to ma
12bf0 6b 65 20 61 72 72 61 79 20 65 78 69 73 74 0a 09  ke array exist..
12c00 73 65 74 20 73 65 72 76 69 63 65 73 28 31 31 29  set services(11)
12c10 20 22 22 0a 09 75 6e 73 65 74 20 73 65 72 76 69   ""..unset servi
12c20 63 65 73 28 31 31 29 0a 09 57 61 69 74 53 74 61  ces(11)..WaitSta
12c30 74 65 20 30 0a 09 52 61 6d 44 65 62 75 67 67 65  te 0..RamDebugge
12c40 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72 20 31  r::ProgressVar 1
12c50 30 30 0a 09 52 61 6d 44 65 62 75 67 67 65 72 3a  00..RamDebugger:
12c60 3a 53 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22  :SetMessage [_ "
12c70 53 65 61 72 63 68 69 6e 67 20 65 78 74 65 72 6e  Searching extern
12c80 61 6c 20 70 72 6f 67 72 61 6d 73 2e 2e 2e 64 6f  al programs...do
12c90 6e 65 22 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20  ne"].    } else 
12ca0 7b 0a 09 63 61 74 63 68 20 7b 20 75 6e 73 65 74  {..catch { unset
12cb0 20 73 65 72 76 69 63 65 73 20 7d 0a 09 66 6f 72   services }..for
12cc0 65 61 63 68 20 69 20 5b 77 69 6e 66 6f 20 69 6e  each i [winfo in
12cd0 74 65 72 70 73 5d 20 7b 0a 09 20 20 20 20 69 66  terps] {..    if
12ce0 20 7b 20 24 69 20 3d 3d 20 24 64 65 62 75 67 67   { $i == $debugg
12cf0 65 72 73 65 72 76 65 72 20 7d 20 7b 20 63 6f 6e  erserver } { con
12d00 74 69 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74  tinue }..    set
12d10 20 73 65 72 76 69 63 65 73 28 24 69 29 20 24 69   services($i) $i
12d20 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  ..}.    }.}..pro
12d30 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52  c RamDebugger::R
12d40 65 63 69 65 76 65 54 69 6d 65 46 72 6f 6d 50 72  ecieveTimeFromPr
12d50 6f 67 72 61 6d 20 7b 20 6e 61 6d 65 20 6c 65 76  ogram { name lev
12d60 65 6c 20 74 69 6d 65 20 7d 20 7b 0a 20 20 20 20  el time } {.    
12d70 76 61 72 69 61 62 6c 65 20 54 69 6d 65 4d 65 61  variable TimeMea
12d80 73 75 72 65 44 61 74 61 0a 0a 20 20 20 20 73 65  sureData..    se
12d90 74 20 69 70 6f 73 20 30 0a 20 20 20 20 66 6f 72  t ipos 0.    for
12da0 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65 61 73  each i $TimeMeas
12db0 75 72 65 44 61 74 61 20 7b 0a 09 66 6f 72 65 61  ureData {..forea
12dc0 63 68 20 22 6e 61 6d 65 5f 69 6e 20 66 69 6c 65  ch "name_in file
12dd0 20 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64   lineini lineend
12de0 20 6c 61 73 74 74 69 6d 65 22 20 24 69 20 7b 0a   lasttime" $i {.
12df0 09 20 20 20 20 69 66 20 7b 20 24 6e 61 6d 65 20  .    if { $name 
12e00 3d 3d 20 24 6e 61 6d 65 5f 69 6e 20 7d 20 7b 0a  == $name_in } {.
12e10 09 09 73 65 74 20 66 6f 75 6e 64 20 30 0a 09 09  ..set found 0...
12e20 73 65 74 20 69 63 20 30 0a 09 09 66 6f 72 65 61  set ic 0...forea
12e30 63 68 20 6a 20 24 6c 61 73 74 74 69 6d 65 20 7b  ch j $lasttime {
12e40 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e  ...    if { [lin
12e50 64 65 78 20 24 6a 20 30 5d 20 3d 3d 20 24 6c 65  dex $j 0] == $le
12e60 76 65 6c 20 7d 20 7b 0a 09 09 20 20 20 20 20 20  vel } {...      
12e70 20 20 6c 73 65 74 20 6c 61 73 74 74 69 6d 65 20    lset lasttime 
12e80 24 69 63 20 5b 6c 69 73 74 20 24 6c 65 76 65 6c  $ic [list $level
12e90 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
12ea0 24 6a 20 31 5d 2b 24 74 69 6d 65 7d 5d 5d 0a 09  $j 1]+$time}]]..
12eb0 09 20 20 20 20 20 20 20 20 73 65 74 20 66 6f 75  .        set fou
12ec0 6e 64 20 31 0a 09 09 20 20 20 20 20 20 20 20 62  nd 1...        b
12ed0 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 20  reak...    }... 
12ee0 20 20 20 69 6e 63 72 20 69 63 0a 09 09 7d 0a 09     incr ic...}..
12ef0 09 69 66 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20  .if { !$found } 
12f00 7b 20 6c 61 70 70 65 6e 64 20 6c 61 73 74 74 69  { lappend lastti
12f10 6d 65 20 5b 6c 69 73 74 20 24 6c 65 76 65 6c 20  me [list $level 
12f20 24 74 69 6d 65 5d 20 7d 0a 09 09 73 65 74 20 69  $time] }...set i
12f30 20 5b 6c 72 65 70 6c 61 63 65 20 24 69 20 34 20   [lreplace $i 4 
12f40 34 20 24 6c 61 73 74 74 69 6d 65 5d 0a 09 09 73  4 $lasttime]...s
12f50 65 74 20 54 69 6d 65 4d 65 61 73 75 72 65 44 61  et TimeMeasureDa
12f60 74 61 20 5b 6c 72 65 70 6c 61 63 65 20 24 54 69  ta [lreplace $Ti
12f70 6d 65 4d 65 61 73 75 72 65 44 61 74 61 20 24 69  meMeasureData $i
12f80 70 6f 73 20 24 69 70 6f 73 20 24 69 5d 0a 09 09  pos $ipos $i]...
12f90 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 7d  return..    }..}
12fa0 0a 09 69 6e 63 72 20 69 70 6f 73 0a 20 20 20 20  ..incr ipos.    
12fb0 7d 0a 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 22  }.    error [_ "
12fc0 45 72 72 6f 72 20 72 65 63 69 65 76 69 6e 67 20  Error recieving 
12fd0 66 72 6f 6d 20 70 72 6f 67 72 61 6d 2e 20 54 69  from program. Ti
12fe0 6d 65 20 6d 65 61 73 75 72 65 20 62 6c 6f 63 6b  me measure block
12ff0 20 27 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 65   '%s' does not e
13000 78 69 73 74 73 22 20 24 6e 61 6d 65 5d 20 0a 7d  xists" $name] .}
13010 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67  ..proc RamDebugg
13020 65 72 3a 3a 52 65 63 69 65 76 65 46 72 6f 6d 50  er::RecieveFromP
13030 72 6f 67 72 61 6d 45 78 70 72 20 7b 20 65 72 72  rogramExpr { err
13040 20 76 61 6c 20 7d 20 7b 0a 20 20 20 20 76 61 72   val } {.    var
13050 69 61 62 6c 65 20 45 78 70 72 65 73 73 69 6f 6e  iable Expression
13060 52 65 73 75 6c 74 0a 0a 20 20 20 20 61 66 74 65  Result..    afte
13070 72 20 30 20 5b 6c 69 73 74 20 73 65 74 20 52 61  r 0 [list set Ra
13080 6d 44 65 62 75 67 67 65 72 3a 3a 45 78 70 72 65  mDebugger::Expre
13090 73 73 69 6f 6e 52 65 73 75 6c 74 20 5b 6c 69 73  ssionResult [lis
130a0 74 20 24 65 72 72 20 24 76 61 6c 5d 5d 0a 20 20  t $err $val]].  
130b0 20 20 72 65 74 75 72 6e 20 22 22 0a 7d 0a 0a 70    return "".}..p
130c0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
130d0 3a 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 7b  :AreFilesEqual {
130e0 20 66 69 6c 65 31 20 66 69 6c 65 32 20 7d 20 7b   file1 file2 } {
130f0 0a 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63  ..    if { $::tc
13100 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66  l_platform(platf
13110 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73  orm) == "windows
13120 22 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 73  " } {..return [s
13130 74 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63  tring equal -noc
13140 61 73 65 20 24 66 69 6c 65 31 20 24 66 69 6c 65  ase $file1 $file
13150 32 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  2].    } else {.
13160 09 72 65 74 75 72 6e 20 5b 73 74 72 69 6e 67 20  .return [string 
13170 65 71 75 61 6c 20 24 66 69 6c 65 31 20 24 66 69  equal $file1 $fi
13180 6c 65 32 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  le2].    }.}..pr
13190 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
131a0 6c 73 65 61 72 63 68 66 69 6c 65 20 7b 20 6c 69  lsearchfile { li
131b0 73 74 20 66 69 6c 65 20 7d 20 7b 0a 20 20 20 20  st file } {.    
131c0 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74  if { $::tcl_plat
131d0 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d  form(platform) =
131e0 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a  = "windows" } {.
131f0 09 72 65 74 75 72 6e 20 5b 6c 73 65 61 72 63 68  .return [lsearch
13200 20 2d 65 78 61 63 74 20 5b 73 74 72 69 6e 67 20   -exact [string 
13210 74 6f 6c 6f 77 65 72 20 24 6c 69 73 74 5d 20 5b  tolower $list] [
13220 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24  string tolower $
13230 66 69 6c 65 5d 5d 0a 20 20 20 20 7d 20 65 6c 73  file]].    } els
13240 65 20 7b 0a 09 72 65 74 75 72 6e 20 5b 6c 73 65  e {..return [lse
13250 61 72 63 68 20 2d 65 78 61 63 74 20 24 6c 69 73  arch -exact $lis
13260 74 20 24 66 69 6c 65 5d 0a 20 20 20 20 7d 0a 7d  t $file].    }.}
13270 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67  ..proc RamDebugg
13280 65 72 3a 3a 52 65 63 69 65 76 65 46 72 6f 6d 50  er::RecieveFromP
13290 72 6f 67 72 61 6d 20 7b 20 62 72 65 61 6b 6e 75  rogram { breaknu
132a0 6d 20 66 69 6c 65 6e 75 6d 20 6c 69 6e 65 20 70  m filenum line p
132b0 72 6f 63 6e 61 6d 65 20 74 65 78 74 6c 69 6e 65  rocname textline
132c0 20 63 6f 6e 64 69 6e 66 6f 20 7d 20 7b 0a 20 20   condinfo } {.  
132d0 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73    variable files
132e0 6c 69 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c  list.    variabl
132f0 65 20 74 65 78 74 0a 0a 20 20 20 20 73 65 74 20  e text..    set 
13300 66 69 6c 65 20 5b 6c 69 6e 64 65 78 20 24 66 69  file [lindex $fi
13310 6c 65 73 6c 69 73 74 20 24 66 69 6c 65 6e 75 6d  leslist $filenum
13320 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20  ].    .    if { 
13330 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24  ![winfo exists $
13340 74 65 78 74 5d 20 7d 20 7b 0a 09 23 20 6e 6f 6e  text] } {..# non
13350 20 47 55 49 20 6d 6f 64 65 0a 09 69 66 20 7b 20   GUI mode..if { 
13360 24 62 72 65 61 6b 6e 75 6d 20 3d 3d 20 22 6f 75  $breaknum == "ou
13370 74 70 75 74 22 20 7d 20 7b 0a 09 20 20 20 20 70  tput" } {..    p
13380 75 74 73 20 5b 5f 20 22 6f 75 74 70 75 74 20 6c  uts [_ "output l
13390 69 6e 65 20 25 73 20 25 73 20 25 73 22 20 24 62  ine %s %s %s" $b
133a0 72 65 61 6b 6e 75 6d 20 24 66 69 6c 65 20 24 6c  reaknum $file $l
133b0 69 6e 65 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b  ine]..} elseif {
133c0 20 24 62 72 65 61 6b 6e 75 6d 20 7d 20 7b 0a 09   $breaknum } {..
133d0 20 20 20 20 70 75 74 73 20 5b 5f 20 22 62 72 65      puts [_ "bre
133e0 61 6b 20 25 73 20 61 74 20 25 73 20 25 73 20 25  ak %s at %s %s %
133f0 73 22 20 24 62 72 65 61 6b 6e 75 6d 20 24 70 72  s" $breaknum $pr
13400 6f 63 6e 61 6d 65 20 24 66 69 6c 65 20 24 6c 69  ocname $file $li
13410 6e 65 5d 20 0a 09 20 20 20 20 69 66 20 7b 20 24  ne] ..    if { $
13420 74 65 78 74 6c 69 6e 65 20 21 3d 20 22 22 20 7d  textline != "" }
13430 20 7b 20 70 75 74 73 20 22 2d 2d 2d 3e 20 24 74   { puts "---> $t
13440 65 78 74 6c 69 6e 65 22 20 7d 0a 09 7d 20 65 6c  extline" }..} el
13450 73 65 69 66 20 7b 20 24 66 69 6c 65 6e 75 6d 20  seif { $filenum 
13460 3e 3d 20 30 20 7d 20 7b 0a 09 20 20 20 20 70 75  >= 0 } {..    pu
13470 74 73 20 5b 5f 20 22 62 72 65 61 6b 20 61 74 20  ts [_ "break at 
13480 25 73 20 25 73 20 25 73 20 22 20 24 70 72 6f 63  %s %s %s " $proc
13490 6e 61 6d 65 20 24 66 69 6c 65 20 24 6c 69 6e 65  name $file $line
134a0 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 74 65 78  ]..    if { $tex
134b0 74 6c 69 6e 65 20 21 3d 20 22 22 20 7d 20 7b 20  tline != "" } { 
134c0 70 75 74 73 20 22 2d 2d 2d 3e 20 24 74 65 78 74  puts "---> $text
134d0 6c 69 6e 65 22 20 7d 0a 09 7d 20 65 6c 73 65 20  line" }..} else 
134e0 7b 0a 09 20 20 20 20 70 75 74 73 20 5b 5f 20 22  {..    puts [_ "
134f0 62 72 65 61 6b 20 61 74 20 25 73 20 6c 6f 63 61  break at %s loca
13500 6c 20 66 75 6e 63 20 6c 69 6e 65 3a 20 25 73 22  l func line: %s"
13510 20 24 70 72 6f 63 6e 61 6d 65 20 24 6c 69 6e 65   $procname $line
13520 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 74 65 78  ]..    if { $tex
13530 74 6c 69 6e 65 20 21 3d 20 22 22 20 7d 20 7b 20  tline != "" } { 
13540 70 75 74 73 20 22 2d 2d 2d 3e 20 24 74 65 78 74  puts "---> $text
13550 6c 69 6e 65 22 20 7d 0a 09 7d 0a 09 69 66 20 7b  line" }..}..if {
13560 20 24 63 6f 6e 64 69 6e 66 6f 20 21 3d 20 22 22   $condinfo != ""
13570 20 7d 20 7b 0a 09 20 20 20 20 70 75 74 73 20 5b   } {..    puts [
13580 5f 20 22 43 6f 6e 64 69 74 69 6f 6e 20 72 65 73  _ "Condition res
13590 75 6c 74 73 3a 20 25 73 22 20 24 63 6f 6e 64 69  ults: %s" $condi
135a0 6e 66 6f 5d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c  nfo]..}.    } el
135b0 73 65 69 66 20 7b 20 24 66 69 6c 65 20 21 3d 20  seif { $file != 
135c0 22 22 20 26 26 20 24 6c 69 6e 65 20 21 3d 20 22  "" && $line != "
135d0 22 20 20 7d 20 7b 0a 09 23 20 47 55 49 20 6d 6f  "  } {..# GUI mo
135e0 64 65 0a 09 61 66 74 65 72 20 30 20 5b 6c 69 73  de..after 0 [lis
135f0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53  t RamDebugger::S
13600 74 6f 70 41 74 47 55 49 20 24 66 69 6c 65 20 24  topAtGUI $file $
13610 6c 69 6e 65 20 24 63 6f 6e 64 69 6e 66 6f 5d 0a  line $condinfo].
13620 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e      }.    return
13630 20 22 22 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44   "".}..proc RamD
13640 65 62 75 67 67 65 72 3a 3a 52 65 63 69 65 76 65  ebugger::Recieve
13650 45 72 72 6f 72 46 72 6f 6d 50 72 6f 67 72 61 6d  ErrorFromProgram
13660 20 7b 20 65 72 72 20 65 72 72 49 6e 66 6f 20 61   { err errInfo a
13670 72 67 73 20 7d 20 7b 0a 20 20 20 20 54 65 78 74  rgs } {.    Text
13680 4f 75 74 49 6e 73 65 72 74 52 65 64 20 22 2d 2d  OutInsertRed "--
13690 2d 2d 2d 2d 52 45 43 49 45 56 45 44 20 45 52 52  ----RECIEVED ERR
136a0 4f 52 20 46 52 4f 4d 20 44 45 42 55 47 47 45 44  OR FROM DEBUGGED
136b0 20 50 52 4f 47 52 41 4d 2d 2d 2d 2d 2d 2d 2d 2d   PROGRAM--------
136c0 2d 2d 2d 2d 2d 5c 6e 22 0a 20 20 20 20 54 65 78  -----\n".    Tex
136d0 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 24 65  tOutInsertRed $e
136e0 72 72 49 6e 66 6f 5c 6e 0a 20 20 20 20 54 65 78  rrInfo\n.    Tex
136f0 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 22 2d  tOutInsertRed "-
13700 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13710 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13730 2d 2d 2d 2d 2d 2d 5c 6e 22 0a 20 20 20 20 54 65  ------\n".    Te
13740 78 74 4f 75 74 52 61 69 73 65 0a 20 20 20 20 61  xtOutRaise.    a
13750 66 74 65 72 20 69 64 6c 65 20 5b 73 74 72 69 6e  fter idle [strin
13760 67 20 6d 61 70 20 5b 6c 69 73 74 20 25 65 20 5b  g map [list %e [
13770 6c 69 73 74 20 24 65 72 72 5d 20 25 6e 20 5c 6e  list $err] %n \n
13780 5d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 7b 52 65  ] {..WarnWin {Re
13790 63 69 65 76 65 64 20 45 72 72 6f 72 20 66 72 6f  cieved Error fro
137a0 6d 20 44 65 62 75 67 67 65 64 20 70 72 6f 67 72  m Debugged progr
137b0 61 6d 3a 25 6e 25 65 25 6e 43 68 65 63 6b 20 4f  am:%n%e%nCheck O
137c0 75 74 70 75 74 20 66 6f 72 20 64 65 74 61 69 6c  utput for detail
137d0 73 7d 0a 09 23 52 61 6d 44 65 62 75 67 67 65 72  s}..#RamDebugger
137e0 3a 3a 53 74 6f 70 41 74 47 55 49 20 22 22 20 2d  ::StopAtGUI "" -
137f0 31 0a 20 20 20 20 7d 5d 0a 7d 0a 0a 70 72 6f 63  1.    }].}..proc
13800 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65   RamDebugger::Re
13810 63 69 65 76 65 4f 75 74 70 75 74 46 72 6f 6d 50  cieveOutputFromP
13820 72 6f 67 72 61 6d 20 7b 20 63 68 61 6e 6e 65 6c  rogram { channel
13830 49 64 20 73 74 72 69 6e 67 20 68 61 73 6e 65 77  Id string hasnew
13840 6c 69 6e 65 20 7d 20 7b 0a 20 20 20 20 69 66 20  line } {.    if 
13850 7b 20 24 68 61 73 6e 65 77 6c 69 6e 65 20 7d 20  { $hasnewline } 
13860 7b 20 61 70 70 65 6e 64 20 73 74 72 69 6e 67 20  { append string 
13870 5c 6e 20 7d 0a 20 20 20 20 73 77 69 74 63 68 20  \n }.    switch 
13880 24 63 68 61 6e 6e 65 6c 49 64 20 7b 0a 09 73 74  $channelId {..st
13890 64 6f 75 74 20 7b 0a 09 20 20 20 20 54 65 78 74  dout {..    Text
138a0 4f 75 74 49 6e 73 65 72 74 20 24 73 74 72 69 6e  OutInsert $strin
138b0 67 0a 09 7d 0a 09 73 74 64 65 72 72 20 7b 0a 09  g..}..stderr {..
138c0 20 20 20 20 54 65 78 74 4f 75 74 49 6e 73 65 72      TextOutInser
138d0 74 52 65 64 20 24 73 74 72 69 6e 67 0a 09 7d 0a  tRed $string..}.
138e0 20 20 20 20 7d 0a 20 20 20 20 54 65 78 74 4f 75      }.    TextOu
138f0 74 52 61 69 73 65 0a 20 20 20 20 75 70 64 61 74  tRaise.    updat
13900 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  e.}..proc RamDeb
13910 75 67 67 65 72 3a 3a 52 65 63 69 65 76 65 46 72  ugger::RecieveFr
13920 6f 6d 50 72 6f 67 72 61 6d 53 6f 75 72 63 65 20  omProgramSource 
13930 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76  { args } {.    v
13940 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
13950 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ile.    variable
13960 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64   currentfile_end
13970 6c 69 6e 65 0a 0a 20 20 20 20 69 66 20 7b 20 5b  line..    if { [
13980 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d 20  lindex $args 0] 
13990 65 71 20 22 2d 65 6e 63 6f 64 69 6e 67 22 20 7d  eq "-encoding" }
139a0 20 7b 0a 09 73 65 74 20 65 6e 63 6f 64 69 6e 67   {..set encoding
139b0 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 31   [lindex $args 1
139c0 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ].    } else {..
139d0 73 65 74 20 65 6e 63 6f 64 69 6e 67 20 22 22 0a  set encoding "".
139e0 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 66 69      }.    set fi
139f0 6c 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73  le [lindex $args
13a00 20 65 6e 64 5d 0a 20 20 20 20 73 65 74 20 72 65   end].    set re
13a10 74 76 61 6c 20 5b 44 6f 69 6e 73 74 72 75 6d 65  tval [Doinstrume
13a20 6e 74 54 68 69 73 66 69 6c 65 20 24 66 69 6c 65  ntThisfile $file
13a30 5d 0a 20 20 20 20 69 66 20 7b 20 24 72 65 74 76  ].    if { $retv
13a40 61 6c 20 3d 3d 20 31 20 7d 20 7b 0a 09 54 65 78  al == 1 } {..Tex
13a50 74 4f 75 74 52 61 69 73 65 0a 09 54 65 78 74 4f  tOutRaise..TextO
13a60 75 74 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20  utInsertBlue [_ 
13a70 22 53 65 6e 64 69 6e 67 20 49 6e 73 74 72 75 6d  "Sending Instrum
13a80 65 6e 74 65 64 20 66 69 6c 65 20 27 25 73 27 22  ented file '%s'"
13a90 20 24 66 69 6c 65 5d 5c 6e 0a 0a 09 73 65 74 20   $file]\n...set 
13aa0 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65  currentfile_save
13ab0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 09 73   $currentfile..s
13ac0 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65  et currentfile_e
13ad0 6e 64 6c 69 6e 65 5f 73 61 76 65 20 24 63 75 72  ndline_save $cur
13ae0 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  rentfile_endline
13af0 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68  ..set err [catch
13b00 20 7b 0a 09 20 20 20 20 73 65 74 20 72 65 74 76   {..    set retv
13b10 61 6c 20 5b 72 6c 69 73 74 20 2d 72 65 74 75 72  al [rlist -retur
13b20 6e 64 61 74 61 20 2d 65 6e 63 6f 64 69 6e 67 20  ndata -encoding 
13b30 24 65 6e 63 6f 64 69 6e 67 20 2d 61 73 6d 61 69  $encoding -asmai
13b40 6e 66 69 6c 65 20 24 66 69 6c 65 5d 0a 09 7d 20  nfile $file]..} 
13b50 65 72 72 73 74 72 69 6e 67 5d 0a 09 73 65 74 20  errstring]..set 
13b60 63 75 72 72 65 6e 74 66 69 6c 65 20 24 63 75 72  currentfile $cur
13b70 72 65 6e 74 66 69 6c 65 5f 73 61 76 65 0a 09 73  rentfile_save..s
13b80 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65  et currentfile_e
13b90 6e 64 6c 69 6e 65 20 24 63 75 72 72 65 6e 74 66  ndline $currentf
13ba0 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65  ile_endline_save
13bb0 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a  ..if { $err } {.
13bc0 09 20 20 20 20 65 72 72 6f 72 20 24 65 72 72 73  .    error $errs
13bd0 74 72 69 6e 67 0a 09 7d 0a 09 72 65 74 75 72 6e  tring..}..return
13be0 20 24 72 65 74 76 61 6c 0a 20 20 20 20 7d 20 65   $retval.    } e
13bf0 6c 73 65 69 66 20 7b 20 24 72 65 74 76 61 6c 20  lseif { $retval 
13c00 3d 3d 20 32 20 7d 20 7b 0a 09 54 65 78 74 4f 75  == 2 } {..TextOu
13c10 74 52 61 69 73 65 0a 09 54 65 78 74 4f 75 74 49  tRaise..TextOutI
13c20 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20 22 53 6f  nsertBlue [_ "So
13c30 75 72 63 69 6e 67 20 66 69 6c 65 20 27 25 73 27  urcing file '%s'
13c40 22 20 24 66 69 6c 65 5d 5c 6e 0a 20 20 20 20 7d  " $file]\n.    }
13c50 0a 20 20 20 20 72 65 74 75 72 6e 20 22 3a 3a 52  .    return "::R
13c60 44 43 3a 3a 73 6f 75 72 63 65 70 72 6f 63 20 24  DC::sourceproc $
13c70 61 72 67 73 22 0a 7d 0a 0a 70 72 6f 63 20 52 61  args".}..proc Ra
13c80 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 52  mDebugger::EvalR
13c90 65 6d 6f 74 65 20 7b 20 63 6f 6d 6d 20 7d 20 7b  emote { comm } {
13ca0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65  .    variable re
13cb0 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 76  moteserver.    v
13cc0 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65  ariable remotese
13cd0 72 76 65 72 4e 75 6d 0a 20 20 20 20 76 61 72 69  rverNum.    vari
13ce0 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65  able remoteserve
13cf0 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 62  rType.    variab
13d00 6c 65 20 67 64 62 6c 6f 67 0a 20 20 20 20 76 61  le gdblog.    va
13d10 72 69 61 62 6c 65 20 75 73 65 63 6f 6d 6d 52 0a  riable usecommR.
13d20 0a 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74  .    if { $remot
13d30 65 73 65 72 76 65 72 20 3d 3d 20 22 22 20 7d 20  eserver == "" } 
13d40 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 45 72 72  {..error [_ "Err
13d50 6f 72 3a 20 61 20 70 72 6f 67 72 61 6d 20 74 6f  or: a program to
13d60 20 64 65 62 75 67 20 6d 75 73 74 20 62 65 20 73   debug must be s
13d70 65 6c 65 63 74 65 64 20 75 73 69 6e 67 20 72 64  elected using rd
13d80 65 62 75 67 22 5d 0a 20 20 20 20 7d 0a 0a 20 20  ebug"].    }..  
13d90 20 20 73 65 74 20 65 72 72 20 30 0a 20 20 20 20    set err 0.    
13da0 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76  if { $remoteserv
13db0 65 72 54 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c  erType == "local
13dc0 22 20 7d 20 7b 0a 09 69 6e 74 65 72 70 20 65 76  " } {..interp ev
13dd0 61 6c 20 6c 6f 63 61 6c 20 61 66 74 65 72 20 69  al local after i
13de0 64 6c 65 20 5b 6c 69 73 74 20 24 63 6f 6d 6d 5d  dle [list $comm]
13df0 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20  .    } elseif { 
13e00 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70  $remoteserverTyp
13e10 65 20 3d 3d 20 22 6d 61 73 74 65 72 22 20 7d 20  e == "master" } 
13e20 7b 0a 09 6d 61 73 74 65 72 20 61 66 74 65 72 20  {..master after 
13e30 69 64 6c 65 20 5b 6c 69 73 74 20 24 63 6f 6d 6d  idle [list $comm
13e40 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  ].    } elseif {
13e50 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79   $remoteserverTy
13e60 70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a  pe == "gdb" } {.
13e70 09 66 6f 72 65 61 63 68 20 22 66 69 64 20 70 72  .foreach "fid pr
13e80 6f 67 72 61 6d 20 73 74 61 74 65 22 20 24 72 65  ogram state" $re
13e90 6d 6f 74 65 73 65 72 76 65 72 20 62 72 65 61 6b  moteserver break
13ea0 0a 09 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 28  ..regsub -all {(
13eb0 5e 7c 5c 6e 29 28 2e 29 7d 20 24 63 6f 6d 6d 5c  ^|\n)(.)} $comm\
13ec0 6e 20 7b 5c 31 2d 2d 3e 5c 32 7d 20 63 6f 6d 6d  n {\1-->\2} comm
13ed0 6c 6f 67 0a 09 61 70 70 65 6e 64 20 67 64 62 6c  log..append gdbl
13ee0 6f 67 20 24 63 6f 6d 6d 6c 6f 67 0a 09 70 75 74  og $commlog..put
13ef0 73 20 24 66 69 64 20 24 63 6f 6d 6d 0a 09 66 6c  s $fid $comm..fl
13f00 75 73 68 20 24 66 69 64 0a 20 20 20 20 7d 20 65  ush $fid.    } e
13f10 6c 73 65 69 66 20 7b 20 24 75 73 65 63 6f 6d 6d  lseif { $usecomm
13f20 52 20 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b  R } {..set err [
13f30 63 61 74 63 68 20 7b 20 63 6f 6d 6d 52 3a 3a 63  catch { commR::c
13f40 6f 6d 6d 20 73 65 6e 64 20 24 72 65 6d 6f 74 65  omm send $remote
13f50 73 65 72 76 65 72 4e 75 6d 20 24 63 6f 6d 6d 20  serverNum $comm 
13f60 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 20 20 20  } errstring].   
13f70 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 65   } else {..set e
13f80 72 72 20 5b 63 61 74 63 68 20 7b 20 73 65 6e 64  rr [catch { send
13f90 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24   $remoteserver $
13fa0 63 6f 6d 6d 20 7d 20 65 72 72 73 74 72 69 6e 67  comm } errstring
13fb0 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b  ].    }.    if {
13fc0 20 24 65 72 72 20 7d 20 7b 0a 09 57 61 72 6e 57   $err } {..WarnW
13fd0 69 6e 20 5b 5f 20 22 44 65 62 75 67 67 65 64 20  in [_ "Debugged 
13fe0 70 72 6f 67 72 61 6d 20 69 73 20 6e 6f 74 20 61  program is not a
13ff0 76 61 69 6c 61 62 6c 65 20 61 6e 79 6d 6f 72 65  vailable anymore
14000 2e 20 44 69 73 63 6f 6e 6e 65 63 74 69 6e 67 20  . Disconnecting 
14010 28 25 73 29 22 20 5c 0a 09 09 24 65 72 72 73 74  (%s)" \...$errst
14020 72 69 6e 67 5d 0a 09 44 69 73 63 6f 6e 6e 65 63  ring]..Disconnec
14030 74 53 74 6f 70 0a 09 72 65 74 75 72 6e 20 2d 63  tStop..return -c
14040 6f 64 65 20 72 65 74 75 72 6e 0a 20 20 20 20 7d  ode return.    }
14050 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
14060 67 67 65 72 3a 3a 45 76 61 6c 52 65 6d 6f 74 65  gger::EvalRemote
14070 41 6e 64 52 65 74 75 72 6e 20 7b 20 63 6f 6d 6d  AndReturn { comm
14080 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
14090 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20  e remoteserver. 
140a0 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f     variable remo
140b0 74 65 73 65 72 76 65 72 4e 75 6d 0a 20 20 20 20  teserverNum.    
140c0 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73  variable remotes
140d0 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61  erverType.    va
140e0 72 69 61 62 6c 65 20 67 64 62 6c 6f 67 0a 20 20  riable gdblog.  
140f0 20 20 76 61 72 69 61 62 6c 65 20 75 73 65 63 6f    variable useco
14100 6d 6d 52 0a 0a 20 20 20 20 69 66 20 7b 20 24 72  mmR..    if { $r
14110 65 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d 20 22  emoteserver == "
14120 22 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20  " } {..error [_ 
14130 22 45 72 72 6f 72 3a 20 61 20 70 72 6f 67 72 61  "Error: a progra
14140 6d 20 74 6f 20 64 65 62 75 67 20 6d 75 73 74 20  m to debug must 
14150 62 65 20 73 65 6c 65 63 74 65 64 20 75 73 69 6e  be selected usin
14160 67 20 72 64 65 62 75 67 22 5d 0a 20 20 20 20 7d  g rdebug"].    }
14170 0a 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74  .    if { $remot
14180 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22  eserverType == "
14190 6c 6f 63 61 6c 22 20 7d 20 7b 0a 09 73 65 74 20  local" } {..set 
141a0 72 65 74 20 5b 6c 6f 63 61 6c 20 65 76 61 6c 20  ret [local eval 
141b0 24 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 65 6c 73  $comm].    } els
141c0 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72  eif { $remoteser
141d0 76 65 72 54 79 70 65 20 3d 3d 20 22 6d 61 73 74  verType == "mast
141e0 65 72 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 74  er" } {..set ret
141f0 20 5b 6d 61 73 74 65 72 20 24 63 6f 6d 6d 5d 0a   [master $comm].
14200 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24      } elseif { $
14210 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
14220 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 66   == "gdb" } {..f
14230 6f 72 65 61 63 68 20 22 66 69 64 20 70 72 6f 67  oreach "fid prog
14240 72 61 6d 20 73 74 61 74 65 22 20 24 72 65 6d 6f  ram state" $remo
14250 74 65 73 65 72 76 65 72 20 62 72 65 61 6b 0a 09  teserver break..
14260 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 28 5e 7c  regsub -all {(^|
14270 5c 6e 29 28 2e 29 7d 20 24 63 6f 6d 6d 5c 6e 20  \n)(.)} $comm\n 
14280 7b 5c 31 2d 2d 3e 5c 32 7d 20 63 6f 6d 6d 6c 6f  {\1-->\2} commlo
14290 67 0a 09 61 70 70 65 6e 64 20 67 64 62 6c 6f 67  g..append gdblog
142a0 20 24 63 6f 6d 6d 6c 6f 67 0a 09 70 75 74 73 20   $commlog..puts 
142b0 24 66 69 64 20 24 63 6f 6d 6d 0a 09 66 6c 75 73  $fid $comm..flus
142c0 68 20 24 66 69 64 0a 09 73 65 74 20 72 65 74 20  h $fid..set ret 
142d0 22 22 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20  "".    } elseif 
142e0 7b 20 24 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a  { $usecommR } {.
142f0 09 73 65 74 20 72 65 74 20 5b 63 6f 6d 6d 52 3a  .set ret [commR:
14300 3a 63 6f 6d 6d 20 73 65 6e 64 20 24 72 65 6d 6f  :comm send $remo
14310 74 65 73 65 72 76 65 72 4e 75 6d 20 24 63 6f 6d  teserverNum $com
14320 6d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  m].    } else {.
14330 09 73 65 74 20 72 65 74 20 5b 73 65 6e 64 20 24  .set ret [send $
14340 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24 63 6f  remoteserver $co
14350 6d 6d 5d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65  mm].    }.    re
14360 74 75 72 6e 20 24 72 65 74 0a 7d 0a 0a 70 72 6f  turn $ret.}..pro
14370 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47  c RamDebugger::G
14380 69 76 65 49 6e 73 74 46 69 6c 65 20 7b 20 66 69  iveInstFile { fi
14390 6c 65 20 6f 6e 6c 79 69 66 6e 65 77 65 72 20 66  le onlyifnewer f
143a0 69 6c 65 74 79 70 65 20 7d 20 7b 0a 20 20 20 20  iletype } {.    
143b0 76 61 72 69 61 62 6c 65 20 43 61 63 68 65 44 69  variable CacheDi
143c0 72 0a 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72  r..    if { [str
143d0 69 6e 67 20 69 6e 64 65 78 20 24 66 69 6c 65 20  ing index $file 
143e0 30 5d 20 3d 3d 20 22 2a 22 20 7d 20 7b 20 72 65  0] == "*" } { re
143f0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 69 66 20 7b  turn }..    if {
14400 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 43 61   [info exists Ca
14410 63 68 65 44 69 72 5d 20 7d 20 7b 0a 09 72 65 67  cheDir] } {..reg
14420 73 75 62 20 2d 61 6c 6c 20 7b 28 2f 7c 3a 29 7d  sub -all {(/|:)}
14430 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 70 77 64   [file join [pwd
14440 5d 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  ] [file dirname 
14450 24 66 69 6c 65 5d 5d 20 5c 23 20 6d 6f 64 70 61  $file]] \# modpa
14460 74 68 0a 09 73 65 74 20 6d 6f 64 70 61 74 68 20  th..set modpath 
14470 5b 73 74 72 69 6e 67 20 74 72 69 6d 72 69 67 68  [string trimrigh
14480 74 20 24 6d 6f 64 70 61 74 68 20 22 2e 5c 23 22  t $modpath ".\#"
14490 5d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 79 70  ]..if { $filetyp
144a0 65 20 3d 3d 20 22 49 22 20 7d 20 7b 0a 09 20 20  e == "I" } {..  
144b0 20 20 73 65 74 20 69 6e 73 74 66 69 6c 65 20 5b    set instfile [
144c0 66 69 6c 65 20 6a 6f 69 6e 20 24 43 61 63 68 65  file join $Cache
144d0 44 69 72 20 5b 66 69 6c 65 20 74 61 69 6c 20 24  Dir [file tail $
144e0 66 69 6c 65 5d 5f 24 6d 6f 64 70 61 74 68 2e 69  file]_$modpath.i
144f0 6e 66 6f 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b  nfo]..} elseif {
14500 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 50   $filetype == "P
14510 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69  " } {..    set i
14520 6e 73 74 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f  nstfile [file jo
14530 69 6e 20 24 43 61 63 68 65 44 69 72 20 5b 66 69  in $CacheDir [fi
14540 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d 5f 24  le tail $file]_$
14550 6d 6f 64 70 61 74 68 2e 69 6e 73 74 72 50 5d 0a  modpath.instrP].
14560 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73  .} else {..    s
14570 65 74 20 69 6e 73 74 66 69 6c 65 20 5b 66 69 6c  et instfile [fil
14580 65 20 6a 6f 69 6e 20 24 43 61 63 68 65 44 69 72  e join $CacheDir
14590 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c   [file tail $fil
145a0 65 5d 5f 24 6d 6f 64 70 61 74 68 2e 69 6e 73 74  e]_$modpath.inst
145b0 72 52 5d 0a 09 7d 0a 09 69 66 20 7b 20 24 6f 6e  rR]..}..if { $on
145c0 6c 79 69 66 6e 65 77 65 72 20 7d 20 7b 0a 09 20  lyifnewer } {.. 
145d0 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 78     if { [file ex
145e0 69 73 74 73 20 24 69 6e 73 74 66 69 6c 65 5d 20  ists $instfile] 
145f0 26 26 20 5b 66 69 6c 65 20 6d 74 69 6d 65 20 24  && [file mtime $
14600 69 6e 73 74 66 69 6c 65 5d 20 3e 20 5b 66 69 6c  instfile] > [fil
14610 65 20 6d 74 69 6d 65 20 24 66 69 6c 65 5d 20 7d  e mtime $file] }
14620 20 7b 0a 09 09 72 65 74 75 72 6e 20 24 69 6e 73   {...return $ins
14630 74 66 69 6c 65 0a 09 20 20 20 20 7d 20 65 6c 73  tfile..    } els
14640 65 20 7b 20 72 65 74 75 72 6e 20 22 22 20 7d 0a  e { return "" }.
14650 09 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 72 6e  .} else { return
14660 20 24 69 6e 73 74 66 69 6c 65 20 7d 0a 20 20 20   $instfile }.   
14670 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 22 22   }.    return ""
14680 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
14690 67 67 65 72 3a 3a 55 70 64 61 74 65 52 65 6d 6f  gger::UpdateRemo
146a0 74 65 42 72 65 61 6b 73 20 7b 7d 20 7b 0a 20 20  teBreaks {} {.  
146b0 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b    variable break
146c0 70 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61  points.    varia
146d0 62 6c 65 20 66 69 6c 65 73 6c 69 73 74 0a 20 20  ble fileslist.  
146e0 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67    variable debug
146f0 67 65 72 73 74 61 74 65 0a 20 20 20 20 76 61 72  gerstate.    var
14700 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76  iable remoteserv
14710 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  er.    variable 
14720 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65  remoteserverType
14730 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
14740 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 69  rrentfile..    i
14750 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61  f { $debuggersta
14760 74 65 20 21 3d 20 22 64 65 62 75 67 22 20 7d 20  te != "debug" } 
14770 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 0a 20 20 20  { return }...   
14780 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72   if { $remoteser
14790 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22  verType == "gdb"
147a0 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d 6f 74 65   } {..set remote
147b0 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65  server [lreplace
147c0 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 32   $remoteserver 2
147d0 20 32 20 73 65 74 62 72 65 61 6b 70 6f 69 6e 74   2 setbreakpoint
147e0 73 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 22  s]..EvalRemote "
147f0 64 65 6c 65 74 65 22 0a 09 66 6f 72 65 61 63 68  delete"..foreach
14800 20 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20   i $breakpoints 
14810 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 24  {..    lassign $
14820 69 20 6e 75 6d 20 65 6e 61 62 6c 65 5f 64 69 73  i num enable_dis
14830 61 62 6c 65 20 66 69 6c 65 20 6c 69 6e 65 20 63  able file line c
14840 6f 6e 64 0a 09 20 20 20 20 69 66 20 7b 20 21 24  ond..    if { !$
14850 65 6e 61 62 6c 65 5f 64 69 73 61 62 6c 65 20 7d  enable_disable }
14860 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20   { continue }.. 
14870 20 20 20 73 65 74 20 66 69 6c 65 6e 75 6d 20 5b     set filenum [
14880 6c 73 65 61 72 63 68 66 69 6c 65 20 24 66 69 6c  lsearchfile $fil
14890 65 73 6c 69 73 74 20 24 66 69 6c 65 5d 0a 09 20  eslist $file].. 
148a0 20 20 20 69 66 20 7b 20 24 66 69 6c 65 6e 75 6d     if { $filenum
148b0 20 3d 3d 20 2d 31 20 7d 20 7b 20 63 6f 6e 74 69   == -1 } { conti
148c0 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74 20 66  nue }..    set f
148d0 69 6c 65 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b  ile [file tail [
148e0 6c 69 6e 64 65 78 20 24 66 69 6c 65 73 6c 69 73  lindex $fileslis
148f0 74 20 24 66 69 6c 65 6e 75 6d 5d 5d 0a 09 20 20  t $filenum]]..  
14900 20 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b    set filetype [
14910 47 69 76 65 46 69 6c 65 54 79 70 65 20 24 63 75  GiveFileType $cu
14920 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20  rrentfile]..    
14930 69 66 20 7b 20 24 63 6f 6e 64 20 6e 65 20 22 22  if { $cond ne ""
14940 20 7d 20 7b 0a 09 09 73 65 74 20 63 6e 64 4c 69   } {...set cndLi
14950 73 74 20 22 20 69 66 20 24 63 6f 6e 64 22 0a 09  st " if $cond"..
14960 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73      } else {...s
14970 65 74 20 63 6e 64 4c 69 73 74 20 22 22 0a 09 20  et cndList "".. 
14980 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24     }..    if { $
14990 66 69 6c 65 74 79 70 65 20 65 71 20 22 43 2f 43  filetype eq "C/C
149a0 2b 2b 22 20 7d 20 7b 0a 09 09 45 76 61 6c 52 65  ++" } {...EvalRe
149b0 6d 6f 74 65 20 22 62 72 65 61 6b 20 24 66 69 6c  mote "break $fil
149c0 65 3a 24 6c 69 6e 65 24 63 6e 64 4c 69 73 74 22  e:$line$cndList"
149d0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 23 20 43  ..    }..    # C
149e0 4f 4e 44 49 54 49 4f 4e 20 69 73 20 66 6f 72 67  ONDITION is forg
149f0 6f 74 74 65 6e 20 62 79 20 6e 6f 77 0a 09 20 20  otten by now..  
14a00 20 20 23 20 54 52 41 43 45 53 20 61 72 65 20 66    # TRACES are f
14a10 6f 72 67 6f 74 74 65 6e 20 62 79 20 6e 6f 77 0a  orgotten by now.
14a20 09 7d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 22  .}..EvalRemote "
14a30 70 72 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 45  printf \"FINISHE
14a40 44 20 53 45 54 20 42 52 45 41 4b 50 4f 49 4e 54  D SET BREAKPOINT
14a50 53 5c 5c 6e 5c 22 22 0a 20 20 20 20 7d 20 65 6c  S\\n\"".    } el
14a60 73 65 20 7b 0a 09 45 76 61 6c 52 65 6d 6f 74 65  se {..EvalRemote
14a70 20 7b 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78   { if { [info ex
14a80 69 73 74 73 20 52 44 43 3a 3a 62 72 65 61 6b 73  ists RDC::breaks
14a90 5d 20 7d 20 7b 20 75 6e 73 65 74 20 52 44 43 3a  ] } { unset RDC:
14aa0 3a 62 72 65 61 6b 73 20 7d 20 7d 0a 09 45 76 61  :breaks } }..Eva
14ab0 6c 52 65 6d 6f 74 65 20 7b 20 69 66 20 7b 20 5b  lRemote { if { [
14ac0 69 6e 66 6f 20 65 78 69 73 74 73 20 52 44 43 3a  info exists RDC:
14ad0 3a 74 72 61 63 65 73 5d 20 7d 20 7b 20 73 65 74  :traces] } { set
14ae0 20 52 44 43 3a 3a 74 72 61 63 65 73 20 22 22 20   RDC::traces "" 
14af0 7d 20 7d 0a 09 66 6f 72 65 61 63 68 20 69 20 24  } }..foreach i $
14b00 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 20  breakpoints {.. 
14b10 20 20 20 69 66 20 7b 20 21 5b 6c 69 6e 64 65 78     if { ![lindex
14b20 20 24 69 20 31 5d 20 7d 20 7b 20 63 6f 6e 74 69   $i 1] } { conti
14b30 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74 20 6c  nue }..    set l
14b40 69 6e 65 20 5b 6c 69 6e 64 65 78 20 24 69 20 33  ine [lindex $i 3
14b50 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 6c 69 6e  ]..    if { $lin
14b60 65 20 65 71 20 22 22 20 7d 20 7b 0a 09 09 45 76  e eq "" } {...Ev
14b70 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 6c  alRemote [list l
14b80 61 70 70 65 6e 64 20 52 44 43 3a 3a 74 72 61 63  append RDC::trac
14b90 65 73 20 5b 6c 69 73 74 20 5b 6c 69 6e 64 65 78  es [list [lindex
14ba0 20 24 69 20 30 5d 20 5b 6c 69 6e 64 65 78 20 24   $i 0] [lindex $
14bb0 69 20 34 5d 5d 5d 0a 09 20 20 20 20 7d 20 65 6c  i 4]]]..    } el
14bc0 73 65 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 6e  se {...set filen
14bd0 75 6d 20 5b 6c 73 65 61 72 63 68 20 24 66 69 6c  um [lsearch $fil
14be0 65 73 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 24  eslist [lindex $
14bf0 69 20 32 5d 5d 0a 09 09 69 66 20 7b 20 24 66 69  i 2]]...if { $fi
14c00 6c 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b 20  lenum == -1 } { 
14c10 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 45 76 61  continue }...Eva
14c20 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65  lRemote [list se
14c30 74 20 52 44 43 3a 3a 62 72 65 61 6b 73 28 24 66  t RDC::breaks($f
14c40 69 6c 65 6e 75 6d 2c 24 6c 69 6e 65 29 20 5b 6c  ilenum,$line) [l
14c50 69 73 74 20 5b 6c 69 6e 64 65 78 20 24 69 20 30  ist [lindex $i 0
14c60 5d 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d 5d  ] [lindex $i 4]]
14c70 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20  ]..    }..}.    
14c80 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  }.}..proc RamDeb
14c90 75 67 67 65 72 3a 3a 52 65 63 69 65 76 65 46 72  ugger::RecieveFr
14ca0 6f 6d 47 64 62 20 7b 7d 20 7b 0a 20 20 20 20 76  omGdb {} {.    v
14cb0 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72  ariable debugger
14cc0 73 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62  state.    variab
14cd0 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54  le remoteserverT
14ce0 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ype.    variable
14cf0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20   remoteserver.  
14d00 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65    variable curre
14d10 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61  ntfile.    varia
14d20 62 6c 65 20 67 64 62 6c 6f 67 0a 20 20 20 20 76  ble gdblog.    v
14d30 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70 6f 69  ariable breakpoi
14d40 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65  nts.    variable
14d50 20 66 69 6c 65 73 6c 69 73 74 0a 20 20 20 20 76   fileslist.    v
14d60 61 72 69 61 62 6c 65 20 45 78 70 72 65 73 73 69  ariable Expressi
14d70 6f 6e 52 65 73 75 6c 74 0a 20 20 20 20 76 61 72  onResult.    var
14d80 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20  iable options.  
14d90 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f    variable Windo
14da0 77 46 69 6c 65 73 4c 69 73 74 0a 0a 20 20 20 20  wFilesList..    
14db0 66 6f 72 65 61 63 68 20 22 66 69 64 20 70 72 6f  foreach "fid pro
14dc0 67 72 61 6d 20 73 74 61 74 65 22 20 24 72 65 6d  gram state" $rem
14dd0 6f 74 65 73 65 72 76 65 72 20 62 72 65 61 6b 0a  oteserver break.
14de0 0a 20 20 20 20 69 66 20 7b 20 5b 65 6f 66 20 24  .    if { [eof $
14df0 66 69 64 5d 20 7d 20 7b 0a 09 73 65 74 20 65 72  fid] } {..set er
14e00 72 20 5b 63 61 74 63 68 20 7b 20 63 6c 6f 73 65  r [catch { close
14e10 20 24 66 69 64 20 7d 20 65 72 72 73 74 72 69 6e   $fid } errstrin
14e20 67 5d 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65  g]..set remotese
14e30 72 76 65 72 54 79 70 65 20 22 22 0a 09 73 65 74  rverType ""..set
14e40 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 22 22   remoteserver ""
14e50 0a 09 73 65 74 20 64 65 62 75 67 67 65 72 73 74  ..set debuggerst
14e60 61 74 65 20 22 22 0a 09 57 61 72 6e 57 69 6e 20  ate ""..WarnWin 
14e70 5b 5f 20 22 50 72 6f 67 72 61 6d 20 65 78 69 74  [_ "Program exit
14e80 65 64 20 28 25 73 29 22 20 24 65 72 72 73 74 72  ed (%s)" $errstr
14e90 69 6e 67 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20  ing]..return.   
14ea0 20 7d 0a 20 20 20 20 73 65 74 20 61 61 20 5b 72   }.    set aa [r
14eb0 65 61 64 20 24 66 69 64 5d 0a 0a 20 20 20 20 72  ead $fid]..    r
14ec0 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 20 5c 74  egsub -all {[ \t
14ed0 5d 2a 5c 28 67 64 62 5c 29 5b 20 5c 74 5d 2a 7d  ]*\(gdb\)[ \t]*}
14ee0 20 24 61 61 20 7b 7d 20 61 61 0a 0a 20 20 20 20   $aa {} aa..    
14ef0 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 28 5e 7c  regsub -all {(^|
14f00 5c 6e 29 28 2e 29 7d 20 24 61 61 20 7b 5c 31 3c  \n)(.)} $aa {\1<
14f10 2d 2d 5c 32 7d 20 61 61 6c 6f 67 0a 20 20 20 20  --\2} aalog.    
14f20 61 70 70 65 6e 64 20 67 64 62 6c 6f 67 20 24 61  append gdblog $a
14f30 61 6c 6f 67 0a 0a 20 20 20 20 23 69 66 20 7b 20  alog..    #if { 
14f40 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 61 61  [string trim $aa
14f50 5d 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75  ] == "" } { retu
14f60 72 6e 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68  rn }..    switch
14f70 20 2d 67 6c 6f 62 20 2d 2d 20 24 73 74 61 74 65   -glob -- $state
14f80 20 7b 0a 09 73 74 61 72 74 20 7b 0a 09 20 20 20   {..start {..   
14f90 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61   if { [string ma
14fa0 74 63 68 20 22 2a 4e 6f 20 73 79 6d 62 6f 6c 20  tch "*No symbol 
14fb0 74 61 62 6c 65 20 69 73 20 6c 6f 61 64 65 64 2a  table is loaded*
14fc0 22 20 24 61 61 5d 20 7c 7c 20 5c 0a 09 09 20 20  " $aa] || \...  
14fd0 20 20 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68     [string match
14fe0 20 22 2a 4e 6f 20 73 75 63 68 20 66 69 6c 65 20   "*No such file 
14ff0 6f 72 20 64 69 72 65 63 74 6f 72 79 2a 22 20 24  or directory*" $
15000 61 61 5d 20 7c 7c 20 5c 0a 09 09 20 20 20 20 20  aa] || \...     
15010 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 2a  [string match "*
15020 4e 6f 20 65 78 65 63 75 74 61 62 6c 65 20 66 69  No executable fi
15030 6c 65 20 73 70 65 63 69 66 69 65 64 2a 22 20 24  le specified*" $
15040 61 61 5d 20 7d 20 7b 0a 09 09 73 65 74 20 65 72  aa] } {...set er
15050 72 20 5b 63 61 74 63 68 20 7b 20 63 6c 6f 73 65  r [catch { close
15060 20 24 66 69 64 20 7d 20 65 72 72 73 74 72 69 6e   $fid } errstrin
15070 67 5d 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73  g]...set remotes
15080 65 72 76 65 72 54 79 70 65 20 22 22 0a 09 09 73  erverType ""...s
15090 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20  et remoteserver 
150a0 22 22 0a 09 09 73 65 74 20 64 65 62 75 67 67 65  ""...set debugge
150b0 72 73 74 61 74 65 20 22 22 0a 09 09 57 61 72 6e  rstate ""...Warn
150c0 57 69 6e 20 5b 5f 20 22 50 72 6f 67 72 61 6d 20  Win [_ "Program 
150d0 65 78 69 74 65 64 20 28 25 73 29 22 20 24 61 61  exited (%s)" $aa
150e0 5d 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20  ]...return..    
150f0 7d 20 0a 09 20 20 20 20 73 65 74 20 72 65 6d 6f  } ..    set remo
15100 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61  teserver [lrepla
15110 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72  ce $remoteserver
15120 20 32 20 32 20 22 22 5d 0a 09 7d 0a 09 67 65 74   2 2 ""]..}..get
15130 64 61 74 61 2a 20 7b 0a 09 20 20 20 20 73 65 74  data* {..    set
15140 20 68 61 6e 64 6c 65 72 20 5b 6c 69 6e 64 65 78   handler [lindex
15150 20 24 73 74 61 74 65 20 31 5d 0a 09 20 20 20 20   $state 1]..    
15160 73 65 74 20 61 61 20 5b 6c 69 6e 64 65 78 20 24  set aa [lindex $
15170 73 74 61 74 65 20 32 5d 5c 6e 24 61 61 0a 09 20  state 2]\n$aa.. 
15180 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 78 70     if { ![regexp
15190 20 7b 46 49 4e 49 53 48 45 44 20 47 45 54 44 41   {FINISHED GETDA
151a0 54 41 5c 73 2a 24 7d 20 24 61 61 5d 20 7d 20 7b  TA\s*$} $aa] } {
151b0 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72  ...set remoteser
151c0 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72  ver [lreplace $r
151d0 65 6d 6f 74 65 73 65 72 76 65 72 20 32 20 32 20  emoteserver 2 2 
151e0 5b 6c 69 73 74 20 67 65 74 64 61 74 61 20 24 68  [list getdata $h
151f0 61 6e 64 6c 65 72 20 24 61 61 5d 5d 0a 09 20 20  andler $aa]]..  
15200 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74    } else {...set
15210 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c   remoteserver [l
15220 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73  replace $remotes
15230 65 72 76 65 72 20 32 20 32 20 22 22 5d 0a 09 09  erver 2 2 ""]...
15240 72 65 67 65 78 70 20 7b 28 2e 2a 29 46 49 4e 49  regexp {(.*)FINI
15250 53 48 45 44 20 47 45 54 44 41 54 41 5c 73 2a 24  SHED GETDATA\s*$
15260 7d 20 24 61 61 20 7b 7d 20 62 6c 6f 63 6b 0a 09  } $aa {} block..
15270 09 75 70 6c 65 76 65 6c 20 5c 23 30 20 24 68 61  .uplevel \#0 $ha
15280 6e 64 6c 65 72 20 5b 6c 69 73 74 20 5b 73 74 72  ndler [list [str
15290 69 6e 67 20 74 72 69 6d 6c 65 66 74 20 24 62 6c  ing trimleft $bl
152a0 6f 63 6b 20 5c 6e 5d 5d 0a 09 20 20 20 20 7d 0a  ock \n]]..    }.
152b0 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09  .    return..}..
152c0 70 72 69 6e 74 2a 20 7b 0a 09 20 20 20 20 69 66  print* {..    if
152d0 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e 5c 24 5b   { [regexp {^\$[
152e0 30 2d 39 5d 2b 5c 73 2b 3d 5c 73 2b 28 2e 2a 29  0-9]+\s+=\s+(.*)
152f0 7d 20 24 61 61 20 7b 7d 20 72 65 73 5d 20 7d 20  } $aa {} res] } 
15300 7b 0a 09 09 73 65 74 20 45 78 70 72 65 73 73 69  {...set Expressi
15310 6f 6e 52 65 73 75 6c 74 20 5b 6c 69 73 74 20 30  onResult [list 0
15320 20 24 72 65 73 5d 0a 09 20 20 20 20 7d 20 65 6c   $res]..    } el
15330 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b  seif { [regexp {
15340 4e 6f 20 73 79 6d 62 6f 6c 20 2e 2a 20 69 6e 20  No symbol .* in 
15350 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 78 74 7d  current context}
15360 20 24 61 61 5d 20 7d 20 7b 0a 09 09 73 65 74 20   $aa] } {...set 
15370 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74  ExpressionResult
15380 20 5b 6c 69 73 74 20 31 20 24 61 61 5d 0a 09 20   [list 1 $aa].. 
15390 20 20 20 7d 20 65 6c 73 65 20 7b 20 72 65 74 75     } else { retu
153a0 72 6e 20 7d 0a 0a 09 20 20 20 20 73 65 74 20 68  rn }...    set h
153b0 61 6e 64 6c 65 72 20 5b 6c 69 6e 64 65 78 20 24  andler [lindex $
153c0 73 74 61 74 65 20 31 5d 0a 09 20 20 20 20 73 65  state 1]..    se
153d0 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b  t remoteserver [
153e0 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65  lreplace $remote
153f0 73 65 72 76 65 72 20 32 20 32 20 22 22 5d 0a 0a  server 2 2 ""]..
15400 09 20 20 20 20 69 66 20 7b 20 24 68 61 6e 64 6c  .    if { $handl
15410 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 75  er != "" } {...u
15420 70 6c 65 76 65 6c 20 5c 23 30 20 24 68 61 6e 64  plevel \#0 $hand
15430 6c 65 72 20 5b 6c 69 73 74 20 24 45 78 70 72 65  ler [list $Expre
15440 73 73 69 6f 6e 52 65 73 75 6c 74 5d 0a 09 20 20  ssionResult]..  
15450 20 20 7d 0a 09 20 20 20 20 72 65 74 75 72 6e 0a    }..    return.
15460 09 7d 0a 09 62 61 63 6b 74 72 61 63 65 2a 20 7b  .}..backtrace* {
15470 0a 09 20 20 20 20 73 65 74 20 61 61 20 5b 6c 69  ..    set aa [li
15480 6e 64 65 78 20 24 73 74 61 74 65 20 31 5d 24 61  ndex $state 1]$a
15490 61 0a 09 20 20 20 20 69 66 20 7b 20 21 5b 72 65  a..    if { ![re
154a0 67 65 78 70 20 7b 46 49 4e 49 53 48 45 44 20 42  gexp {FINISHED B
154b0 41 43 4b 54 52 41 43 45 5c 73 2a 24 7d 20 24 61  ACKTRACE\s*$} $a
154c0 61 5d 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d  a] } {...set rem
154d0 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c  oteserver [lrepl
154e0 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65  ace $remoteserve
154f0 72 20 32 20 32 20 5b 6c 69 73 74 20 62 61 63 6b  r 2 2 [list back
15500 74 72 61 63 65 20 24 61 61 5d 5d 0a 09 20 20 20  trace $aa]]..   
15510 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20   } else {...set 
15520 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72  remoteserver [lr
15530 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65  eplace $remotese
15540 72 76 65 72 20 32 20 32 20 22 22 5d 0a 09 09 72  rver 2 2 ""]...r
15550 65 67 65 78 70 20 7b 28 2e 2a 29 46 49 4e 49 53  egexp {(.*)FINIS
15560 48 45 44 20 42 41 43 4b 54 52 41 43 45 5c 73 2a  HED BACKTRACE\s*
15570 24 7d 20 24 61 61 20 7b 7d 20 62 6c 6f 63 6b 0a  $} $aa {} block.
15580 09 09 73 65 74 20 45 78 70 72 65 73 73 69 6f 6e  ..set Expression
15590 52 65 73 75 6c 74 20 5b 6c 69 73 74 20 30 20 22  Result [list 0 "
155a0 53 54 41 43 4b 20 54 52 41 43 45 5c 6e 24 62 6c  STACK TRACE\n$bl
155b0 6f 63 6b 22 5d 0a 09 20 20 20 20 7d 0a 09 20 20  ock"]..    }..  
155c0 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09 6e 65 78    return..}..nex
155d0 74 20 2d 20 73 74 65 70 20 7b 0a 09 20 20 20 20  t - step {..    
155e0 69 66 20 7b 20 21 5b 72 65 67 65 78 70 20 7b 61  if { ![regexp {a
155f0 74 5c 73 2b 28 5b 5e 3a 5d 2b 29 3a 28 5b 30 2d  t\s+([^:]+):([0-
15600 39 5d 2b 29 7d 20 24 61 61 20 7b 7d 20 66 69 6c  9]+)} $aa {} fil
15610 65 20 6c 69 6e 65 5d 20 7d 20 7b 0a 09 09 69 66  e line] } {...if
15620 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e 5c 73 2a   { [regexp {^\s*
15630 28 5b 30 2d 39 5d 2b 29 5c 73 7d 20 24 61 61 20  ([0-9]+)\s} $aa 
15640 7b 7d 20 6c 69 6e 65 5d 20 7d 20 7b 0a 09 09 20  {} line] } {... 
15650 20 20 20 73 65 74 20 66 69 6c 65 20 24 63 75 72     set file $cur
15660 72 65 6e 74 66 69 6c 65 0a 09 09 7d 20 65 6c 73  rentfile...} els
15670 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 6c 69  e {...    set li
15680 6e 65 20 22 22 0a 09 09 20 20 20 20 23 70 75 74  ne ""...    #put
15690 73 20 2d 2d 2d 24 61 61 2d 2d 2d 0a 09 09 20 20  s ---$aa---...  
156a0 20 20 23 57 61 72 6e 57 69 6e 20 22 43 6f 75 6c    #WarnWin "Coul
156b0 64 20 6e 6f 74 20 64 6f 20 61 20 27 24 73 74 61  d not do a '$sta
156c0 74 65 27 22 0a 09 09 7d 0a 09 20 20 20 20 7d 20  te'"...}..    } 
156d0 65 6c 73 65 20 7b 0a 09 09 69 66 20 7b 20 21 5b  else {...if { ![
156e0 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c  file exists $fil
156f0 65 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74  e] } {...    set
15700 20 66 75 6c 6c 66 69 6c 65 20 5b 63 70 72 6f 6a   fullfile [cproj
15710 65 63 74 3a 3a 54 72 79 54 6f 46 69 6e 64 50 61  ect::TryToFindPa
15720 74 68 20 24 66 69 6c 65 5d 0a 09 09 20 20 20 20  th $file]...    
15730 69 66 20 7b 20 24 66 75 6c 6c 66 69 6c 65 20 21  if { $fullfile !
15740 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 20  = "" } {...     
15750 20 20 20 73 65 74 20 66 69 6c 65 20 24 66 75 6c     set file $ful
15760 6c 66 69 6c 65 0a 09 09 20 20 20 20 20 20 20 20  lfile...        
15770 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 69  ...    }...}...i
15780 66 20 7b 20 5b 66 69 6c 65 20 70 61 74 68 74 79  f { [file pathty
15790 70 65 20 24 66 69 6c 65 5d 20 65 71 20 22 72 65  pe $file] eq "re
157a0 6c 61 74 69 76 65 22 20 7d 20 7b 0a 09 09 20 20  lative" } {...  
157b0 20 20 66 6f 72 65 61 63 68 20 69 20 24 57 69 6e    foreach i $Win
157c0 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 7b 0a 09  dowFilesList {..
157d0 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b 66  .        if { [f
157e0 69 6c 65 20 74 61 69 6c 20 24 69 5d 20 65 71 20  ile tail $i] eq 
157f0 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 20 20  $file } {...    
15800 20 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65          set file
15810 20 24 69 0a 09 09 20 20 20 20 20 20 20 20 20 20   $i...          
15820 20 20 62 72 65 61 6b 0a 09 09 20 20 20 20 20 20    break...      
15830 20 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a    }...    }...}.
15840 09 09 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69  ..if { [file exi
15850 73 74 73 20 24 66 69 6c 65 5d 20 7d 20 7b 0a 09  sts $file] } {..
15860 09 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b 66  .    set file [f
15870 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 24 66 69  ilenormalize $fi
15880 6c 65 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09  le]...}..    }..
15890 20 20 20 20 69 66 20 7b 20 24 6c 69 6e 65 20 6e      if { $line n
158a0 65 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 72  e "" } {...set r
158b0 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65  emoteserver [lre
158c0 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72  place $remoteser
158d0 76 65 72 20 32 20 32 20 22 22 5d 0a 09 09 73 65  ver 2 2 ""]...se
158e0 74 20 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72  t filenum [lsear
158f0 63 68 20 2d 65 78 61 63 74 20 24 66 69 6c 65 73  ch -exact $files
15900 6c 69 73 74 20 24 66 69 6c 65 5d 0a 09 09 69 66  list $file]...if
15910 20 7b 20 24 66 69 6c 65 6e 75 6d 20 3d 3d 20 2d   { $filenum == -
15920 31 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20  1 } {...    set 
15930 65 72 72 20 5b 63 61 74 63 68 20 7b 4f 70 65 6e  err [catch {Open
15940 46 69 6c 65 46 20 2d 72 61 69 73 65 5f 65 72 72  FileF -raise_err
15950 6f 72 20 31 20 24 66 69 6c 65 7d 20 65 72 72 73  or 1 $file} errs
15960 74 72 69 6e 67 5d 0a 09 09 20 20 20 20 69 66 20  tring]...    if 
15970 7b 20 24 65 72 72 20 7d 20 7b 0a 09 09 20 20 20  { $err } {...   
15980 20 20 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20       WarnWin [_ 
15990 22 43 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20  "Could not open 
159a0 66 69 6c 65 20 27 25 73 27 20 66 6f 72 20 73 74  file '%s' for st
159b0 6f 70 70 69 6e 67 20 70 72 6f 67 72 61 6d 22 20  opping program" 
159c0 24 66 69 6c 65 5d 0a 09 09 20 20 20 20 20 20 20  $file]...       
159d0 20 72 65 74 75 72 6e 0a 09 09 20 20 20 20 7d 0a   return...    }.
159e0 09 09 20 20 20 20 73 65 74 20 66 69 6c 65 6e 75  ..    set filenu
159f0 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63  m [lsearch -exac
15a00 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24 66 69  t $fileslist $fi
15a10 6c 65 5d 0a 09 09 7d 0a 09 09 52 65 63 69 65 76  le]...}...Reciev
15a20 65 46 72 6f 6d 50 72 6f 67 72 61 6d 20 22 22 20  eFromProgram "" 
15a30 24 66 69 6c 65 6e 75 6d 20 24 6c 69 6e 65 20 22  $filenum $line "
15a40 22 20 22 22 20 22 22 0a 09 09 72 65 74 75 72 6e  " "" ""...return
15a50 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 6e 66 6f  ..    }..}..info
15a60 6c 6f 63 61 6c 73 2a 20 7b 0a 09 20 20 20 20 73  locals* {..    s
15a70 65 74 20 61 61 20 5b 6c 69 6e 64 65 78 20 24 73  et aa [lindex $s
15a80 74 61 74 65 20 31 5d 24 61 61 0a 09 20 20 20 20  tate 1]$aa..    
15a90 69 66 20 7b 20 21 5b 72 65 67 65 78 70 20 7b 46  if { ![regexp {F
15aa0 49 4e 49 53 48 45 44 20 49 4e 46 4f 20 4c 4f 43  INISHED INFO LOC
15ab0 41 4c 53 5c 73 2a 24 7d 20 24 61 61 5d 20 7d 20  ALS\s*$} $aa] } 
15ac0 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65  {...set remotese
15ad0 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24  rver [lreplace $
15ae0 72 65 6d 6f 74 65 73 65 72 76 65 72 20 32 20 32  remoteserver 2 2
15af0 20 5b 6c 69 73 74 20 69 6e 66 6f 6c 6f 63 61 6c   [list infolocal
15b00 73 20 24 61 61 5d 5d 0a 09 20 20 20 20 7d 20 65  s $aa]]..    } e
15b10 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f  lse {...set remo
15b20 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61  teserver [lrepla
15b30 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72  ce $remoteserver
15b40 20 32 20 32 20 22 22 5d 0a 09 09 72 65 67 65 78   2 2 ""]...regex
15b50 70 20 7b 28 2e 2a 29 46 49 4e 49 53 48 45 44 20  p {(.*)FINISHED 
15b60 49 4e 46 4f 20 4c 4f 43 41 4c 53 5c 73 2a 24 7d  INFO LOCALS\s*$}
15b70 20 24 61 61 20 7b 7d 20 62 6c 6f 63 6b 0a 09 09   $aa {} block...
15b80 73 65 74 20 6c 69 73 74 20 22 22 0a 09 09 73 65  set list ""...se
15b90 74 20 6c 69 6e 65 20 22 22 0a 09 09 66 6f 72 65  t line ""...fore
15ba0 61 63 68 20 69 20 5b 73 70 6c 69 74 20 24 62 6c  ach i [split $bl
15bb0 6f 63 6b 20 5c 6e 5d 20 7b 0a 09 09 20 20 20 20  ock \n] {...    
15bc0 61 70 70 65 6e 64 20 6c 69 6e 65 20 24 69 0a 09  append line $i..
15bd0 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20  .    if { [info 
15be0 63 6f 6d 70 6c 65 74 65 20 24 6c 69 6e 65 5d 20  complete $line] 
15bf0 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 69 66  } {...        if
15c00 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e 28 5b 5e   { [regexp {^([^
15c10 3d 5d 2b 29 3d 28 2e 2a 29 7d 20 24 6c 69 6e 65  =]+)=(.*)} $line
15c20 20 7b 7d 20 6e 61 6d 65 20 76 61 6c 75 65 5d 20   {} name value] 
15c30 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20  } {...          
15c40 20 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 20 24    lappend list $
15c50 6e 61 6d 65 20 22 22 20 24 76 61 6c 75 65 0a 09  name "" $value..
15c60 09 20 20 20 20 20 20 20 20 7d 0a 09 09 20 20 20  .        }...   
15c70 20 20 20 20 20 73 65 74 20 6c 69 6e 65 20 22 22       set line ""
15c80 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 43  ...    }...}...C
15c90 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 4c  heckEvalEntriesL
15ca0 20 72 65 73 20 22 22 20 5b 6c 69 73 74 20 30 20   res "" [list 0 
15cb0 24 6c 69 73 74 5d 0a 09 20 20 20 20 7d 0a 09 20  $list]..    }.. 
15cc0 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09 6d 75     return..}..mu
15cd0 6c 74 69 70 6c 65 70 72 69 6e 74 2a 20 7b 0a 09  ltipleprint* {..
15ce0 20 20 20 20 73 65 74 20 61 61 20 5b 6c 69 6e 64      set aa [lind
15cf0 65 78 20 24 73 74 61 74 65 20 31 5d 24 61 61 0a  ex $state 1]$aa.
15d00 09 20 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65  .    if { ![rege
15d10 78 70 20 7b 46 49 4e 49 53 48 45 44 20 4d 55 4c  xp {FINISHED MUL
15d20 54 49 50 4c 45 50 52 49 4e 54 5c 73 2a 24 7d 20  TIPLEPRINT\s*$} 
15d30 24 61 61 5d 20 7d 20 7b 0a 09 09 73 65 74 20 72  $aa] } {...set r
15d40 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65  emoteserver [lre
15d50 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72  place $remoteser
15d60 76 65 72 20 32 20 32 20 5b 6c 69 73 74 20 6d 75  ver 2 2 [list mu
15d70 6c 74 69 70 6c 65 70 72 69 6e 74 20 24 61 61 5d  ltipleprint $aa]
15d80 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ]..    } else {.
15d90 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76  ..set remoteserv
15da0 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65  er [lreplace $re
15db0 6d 6f 74 65 73 65 72 76 65 72 20 32 20 32 20 22  moteserver 2 2 "
15dc0 22 5d 0a 09 09 72 65 67 65 78 70 20 7b 28 2e 2a  "]...regexp {(.*
15dd0 29 46 49 4e 49 53 48 45 44 20 4d 55 4c 54 49 50  )FINISHED MULTIP
15de0 4c 45 50 52 49 4e 54 5c 73 2a 24 7d 20 24 61 61  LEPRINT\s*$} $aa
15df0 20 7b 7d 20 62 6c 6f 63 6b 0a 09 09 73 65 74 20   {} block...set 
15e00 6c 69 73 74 20 22 22 0a 09 09 73 65 74 20 6c 69  list ""...set li
15e10 6e 65 20 22 22 0a 09 09 66 6f 72 65 61 63 68 20  ne ""...foreach 
15e20 69 20 5b 73 70 6c 69 74 20 24 62 6c 6f 63 6b 20  i [split $block 
15e30 5c 6e 5d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b  \n] {...    if {
15e40 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 69   [string trim $i
15e50 5d 20 3d 3d 20 22 22 20 7d 20 7b 20 63 6f 6e 74  ] == "" } { cont
15e60 69 6e 75 65 20 7d 0a 09 09 20 20 20 20 61 70 70  inue }...    app
15e70 65 6e 64 20 6c 69 6e 65 20 24 69 0a 09 09 20 20  end line $i...  
15e80 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d    if { [info com
15e90 70 6c 65 74 65 20 24 6c 69 6e 65 5d 20 7d 20 7b  plete $line] } {
15ea0 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20  ...        if { 
15eb0 5b 72 65 67 65 78 70 20 7b 5e 5c 73 2a 5c 24 5b  [regexp {^\s*\$[
15ec0 30 2d 39 5d 2b 5c 73 2a 3d 5c 73 2b 28 2e 2a 29  0-9]+\s*=\s+(.*)
15ed0 7d 20 24 6c 69 6e 65 20 7b 7d 20 72 65 73 74 5d  } $line {} rest]
15ee0 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20   } {...         
15ef0 20 20 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 20     lappend list 
15f00 22 22 20 24 72 65 73 74 0a 09 09 20 20 20 20 20  "" $rest...     
15f10 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20     } else {...  
15f20 20 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e            lappen
15f30 64 20 6c 69 73 74 20 65 72 72 6f 72 20 24 6c 69  d list error $li
15f40 6e 65 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09  ne...        }..
15f50 09 20 20 20 20 20 20 20 20 73 65 74 20 6c 69 6e  .        set lin
15f60 65 20 22 22 0a 09 09 20 20 20 20 7d 0a 09 09 7d  e ""...    }...}
15f70 0a 09 09 43 68 65 63 6b 45 76 61 6c 45 6e 74 72  ...CheckEvalEntr
15f80 69 65 73 20 72 65 73 20 22 22 20 5b 6c 69 73 74  ies res "" [list
15f90 20 30 20 24 6c 69 73 74 5d 0a 09 20 20 20 20 7d   0 $list]..    }
15fa0 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a  ..    return..}.
15fb0 09 73 65 74 62 72 65 61 6b 70 6f 69 6e 74 73 20  .setbreakpoints 
15fc0 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 72 65 67  {..    if { [reg
15fd0 65 78 70 20 7b 46 49 4e 49 53 48 45 44 20 53 45  exp {FINISHED SE
15fe0 54 20 42 52 45 41 4b 50 4f 49 4e 54 53 5c 73 2a  T BREAKPOINTS\s*
15ff0 28 2e 2a 29 24 7d 20 24 61 61 20 7b 7d 20 72 65  (.*)$} $aa {} re
16000 73 74 5d 20 7d 20 7b 0a 09 09 73 65 74 20 72 65  st] } {...set re
16010 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70  moteserver [lrep
16020 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76  lace $remoteserv
16030 65 72 20 32 20 32 20 22 22 5d 0a 09 09 69 66 20  er 2 2 ""]...if 
16040 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  { [string trim $
16050 72 65 73 74 5d 20 3d 3d 20 22 22 20 7d 20 7b 20  rest] == "" } { 
16060 72 65 74 75 72 6e 20 7d 0a 09 20 20 20 20 7d 20  return }..    } 
16070 65 6c 73 65 20 7b 20 72 65 74 75 72 6e 20 7d 0a  else { return }.
16080 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66  .}.    }..    if
16090 20 7b 20 5b 72 65 67 65 78 70 20 7b 28 42 72 65   { [regexp {(Bre
160a0 61 6b 70 6f 69 6e 74 5c 73 5b 30 2d 39 5d 2b 2c  akpoint\s[0-9]+,
160b0 5c 73 2b 29 3f 28 5c 53 2b 5c 73 2b 5c 28 5b 5e  \s+)?(\S+\s+\([^
160c0 5c 29 5d 2a 5c 29 29 5c 73 2b 61 74 5c 73 2b 28  \)]*\))\s+at\s+(
160d0 5b 5e 3a 5d 2b 29 3a 28 5b 30 2d 39 5d 2b 29 7d  [^:]+):([0-9]+)}
160e0 20 5c 0a 09 20 20 20 20 20 20 24 61 61 20 7b 7d   \..      $aa {}
160f0 20 7b 7d 20 70 72 6f 63 6e 61 6d 65 20 66 69 6c   {} procname fil
16100 65 20 6c 69 6e 65 5d 20 7d 20 7b 0a 0a 09 69 66  e line] } {...if
16110 20 7b 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73   { ![file exists
16120 20 24 66 69 6c 65 5d 20 7d 20 7b 0a 09 20 20 20   $file] } {..   
16130 20 73 65 74 20 66 75 6c 6c 66 69 6c 65 20 5b 63   set fullfile [c
16140 70 72 6f 6a 65 63 74 3a 3a 54 72 79 54 6f 46 69  project::TryToFi
16150 6e 64 50 61 74 68 20 24 66 69 6c 65 5d 0a 09 20  ndPath $file].. 
16160 20 20 20 69 66 20 7b 20 24 66 75 6c 6c 66 69 6c     if { $fullfil
16170 65 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 73 65  e != "" } {...se
16180 74 20 66 69 6c 65 20 24 66 75 6c 6c 66 69 6c 65  t file $fullfile
16190 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b  ..    }..}..if {
161a0 20 5b 66 69 6c 65 20 70 61 74 68 74 79 70 65 20   [file pathtype 
161b0 24 66 69 6c 65 5d 20 3d 3d 20 22 72 65 6c 61 74  $file] == "relat
161c0 69 76 65 22 20 7d 20 7b 0a 09 20 20 20 20 73 65  ive" } {..    se
161d0 74 20 65 78 65 63 75 74 61 62 6c 65 20 5b 6c 69  t executable [li
161e0 6e 64 65 78 20 24 6f 70 74 69 6f 6e 73 28 64 65  ndex $options(de
161f0 62 75 67 63 70 6c 75 73 70 6c 75 73 29 20 30 5d  bugcplusplus) 0]
16200 0a 09 20 20 20 20 73 65 74 20 64 69 72 20 5b 66  ..    set dir [f
16210 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 65 78 65  ile dirname $exe
16220 63 75 74 61 62 6c 65 5d 0a 09 20 20 20 20 69 66  cutable]..    if
16230 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20   { [file exists 
16240 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20  [file join $dir 
16250 24 66 69 6c 65 5d 5d 20 7d 20 7b 0a 09 09 73 65  $file]] } {...se
16260 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69  t file [file joi
16270 6e 20 24 64 69 72 20 24 66 69 6c 65 5d 0a 09 20  n $dir $file].. 
16280 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b     }..    if { [
16290 69 6e 66 6f 20 65 78 69 73 74 73 20 63 70 72 6f  info exists cpro
162a0 6a 65 63 74 3a 3a 70 72 6f 6a 65 63 74 5d 20 26  ject::project] &
162b0 26 20 5c 0a 09 09 20 20 20 20 20 5b 66 69 6c 65  & \...     [file
162c0 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f   exists [file jo
162d0 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  in [file dirname
162e0 20 24 63 70 72 6f 6a 65 63 74 3a 3a 70 72 6f 6a   $cproject::proj
162f0 65 63 74 5d 20 24 66 69 6c 65 5d 5d 20 7d 20 7b  ect] $file]] } {
16300 0a 09 09 73 65 74 20 66 69 6c 65 20 5b 66 69 6c  ...set file [fil
16310 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72  e join [file dir
16320 6e 61 6d 65 20 24 63 70 72 6f 6a 65 63 74 3a 3a  name $cproject::
16330 70 72 6f 6a 65 63 74 5d 20 24 66 69 6c 65 5d 0a  project] $file].
16340 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20  .    }..}..if { 
16350 5b 66 69 6c 65 20 70 61 74 68 74 79 70 65 20 24  [file pathtype $
16360 66 69 6c 65 5d 20 65 71 20 22 72 65 6c 61 74 69  file] eq "relati
16370 76 65 22 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72  ve" } {..    for
16380 65 61 63 68 20 69 20 24 57 69 6e 64 6f 77 46 69  each i $WindowFi
16390 6c 65 73 4c 69 73 74 20 7b 0a 09 09 69 66 20 7b  lesList {...if {
163a0 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 69 5d 20   [file tail $i] 
163b0 65 71 20 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20  eq $file } {... 
163c0 20 20 20 73 65 74 20 66 69 6c 65 20 24 69 0a 09     set file $i..
163d0 09 20 20 20 20 62 72 65 61 6b 0a 09 09 7d 0a 09  .    break...}..
163e0 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b      }..}..if { [
163f0 66 69 6c 65 20 70 61 74 68 74 79 70 65 20 24 66  file pathtype $f
16400 69 6c 65 5d 20 3d 3d 20 22 76 6f 6c 75 6d 65 72  ile] == "volumer
16410 65 6c 61 74 69 76 65 22 20 7d 20 7b 0a 09 20 20  elative" } {..  
16420 20 20 73 65 74 20 64 72 69 76 65 20 5b 73 74 72    set drive [str
16430 69 6e 67 20 74 72 69 6d 20 5b 6c 69 6e 64 65 78  ing trim [lindex
16440 20 5b 66 69 6c 65 20 73 70 6c 69 74 20 5b 70 77   [file split [pw
16450 64 5d 5d 20 30 5d 20 2f 5d 0a 09 20 20 20 20 73  d]] 0] /]..    s
16460 65 74 20 66 69 6c 65 20 24 64 72 69 76 65 24 66  et file $drive$f
16470 69 6c 65 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65  ile..}..set file
16480 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20   [filenormalize 
16490 24 66 69 6c 65 5d 0a 09 73 65 74 20 66 69 6c 65  $file]..set file
164a0 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78  num [lsearch -ex
164b0 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24  act $fileslist $
164c0 66 69 6c 65 5d 0a 09 69 66 20 7b 20 24 66 69 6c  file]..if { $fil
164d0 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09  enum == -1 } {..
164e0 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74      set err [cat
164f0 63 68 20 7b 4f 70 65 6e 46 69 6c 65 46 20 2d 72  ch {OpenFileF -r
16500 61 69 73 65 5f 65 72 72 6f 72 20 31 20 24 66 69  aise_error 1 $fi
16510 6c 65 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09  le} errstring]..
16520 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20      if { $err } 
16530 7b 0a 09 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22  {...WarnWin [_ "
16540 43 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 66  Could not open f
16550 69 6c 65 20 27 25 73 27 20 66 6f 72 20 73 74 6f  ile '%s' for sto
16560 70 70 69 6e 67 20 70 72 6f 67 72 61 6d 22 20 24  pping program" $
16570 66 69 6c 65 5d 0a 09 09 72 65 74 75 72 6e 0a 09  file]...return..
16580 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 66      }..    set f
16590 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20  ilenum [lsearch 
165a0 2d 65 78 61 63 74 20 24 66 69 6c 65 73 6c 69 73  -exact $fileslis
165b0 74 20 24 66 69 6c 65 5d 0a 09 7d 0a 09 52 65 63  t $file]..}..Rec
165c0 69 65 76 65 46 72 6f 6d 50 72 6f 67 72 61 6d 20  ieveFromProgram 
165d0 22 22 20 24 66 69 6c 65 6e 75 6d 20 24 6c 69 6e  "" $filenum $lin
165e0 65 20 24 70 72 6f 63 6e 61 6d 65 20 22 22 20 22  e $procname "" "
165f0 22 0a 09 72 65 74 75 72 6e 0a 0a 09 23 20 20 20  "..return...#   
16600 20 20 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20        set found 
16610 30 0a 09 23 20 20 20 20 20 20 20 20 20 66 6f 72  0..#         for
16620 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f 69  each i $breakpoi
16630 6e 74 73 20 7b 0a 09 23 20 20 20 20 20 20 20 20  nts {..#        
16640 20 20 20 20 20 73 65 74 20 62 72 65 61 6b 6e 75       set breaknu
16650 6d 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 0a  m [lindex $i 0].
16660 09 23 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .#             s
16670 65 74 20 6c 69 6e 65 5f 69 6e 20 5b 6c 69 6e 64  et line_in [lind
16680 65 78 20 24 69 20 32 5d 0a 09 23 20 20 20 20 20  ex $i 2]..#     
16690 20 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65          set file
166a0 5f 69 6e 20 5b 6c 69 6e 64 65 78 20 24 69 20 31  _in [lindex $i 1
166b0 5d 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20  ]..#            
166c0 20 69 66 20 7b 20 24 6c 69 6e 65 20 3d 3d 20 24   if { $line == $
166d0 6c 69 6e 65 5f 69 6e 20 26 26 20 5b 41 72 65 46  line_in && [AreF
166e0 69 6c 65 73 45 71 75 61 6c 20 24 66 69 6c 65 20  ilesEqual $file 
166f0 24 66 69 6c 65 5f 69 6e 5d 20 7d 20 7b 0a 09 23  $file_in] } {..#
16700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16710 20 73 65 74 20 66 6f 75 6e 64 20 31 0a 09 23 20   set found 1..# 
16720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16730 62 72 65 61 6b 0a 09 23 20 20 20 20 20 20 20 20  break..#        
16740 20 20 20 20 20 7d 0a 09 23 20 20 20 20 20 20 20       }..#       
16750 20 20 20 20 20 20 23 20 43 4f 4e 44 49 54 49 4f        # CONDITIO
16760 4e 20 69 73 20 66 6f 72 67 6f 74 74 65 6e 20 62  N is forgotten b
16770 79 20 6e 6f 77 0a 09 23 20 20 20 20 20 20 20 20  y now..#        
16780 20 7d 0a 09 23 20 20 20 20 20 20 20 20 20 69 66   }..#         if
16790 20 7b 20 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 23   { $found } {..#
167a0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
167b0 20 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63   filenum [lsearc
167c0 68 20 2d 65 78 61 63 74 20 24 66 69 6c 65 73 6c  h -exact $filesl
167d0 69 73 74 20 24 66 69 6c 65 5d 0a 09 23 20 20 20  ist $file]..#   
167e0 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 20 24            if { $
167f0 66 69 6c 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20  filenum == -1 } 
16800 7b 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20  {..#            
16810 20 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61       set err [ca
16820 74 63 68 20 7b 4f 70 65 6e 46 69 6c 65 46 20 24  tch {OpenFileF $
16830 66 69 6c 65 7d 20 65 72 72 73 74 72 69 6e 67 5d  file} errstring]
16840 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20 20  ..#             
16850 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20      if { $err } 
16860 7b 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20  {..#            
16870 20 20 20 20 20 20 20 20 20 57 61 72 6e 57 69 6e           WarnWin
16880 20 22 43 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e   "Could not open
16890 20 66 69 6c 65 20 27 24 66 69 6c 65 27 20 66 6f   file '$file' fo
168a0 72 20 73 74 6f 70 70 69 6e 67 20 70 72 6f 67 72  r stopping progr
168b0 61 6d 22 0a 09 23 20 20 20 20 20 20 20 20 20 20  am"..#          
168c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
168d0 6e 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20  n..#            
168e0 20 20 20 20 20 7d 0a 09 23 20 20 20 20 20 20 20       }..#       
168f0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 69            set fi
16900 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d  lenum [lsearch -
16910 65 78 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74  exact $fileslist
16920 20 24 66 69 6c 65 5d 0a 09 23 20 20 20 20 20 20   $file]..#      
16930 20 20 20 20 20 20 20 7d 0a 09 23 20 20 20 20 20         }..#     
16940 20 20 20 20 20 20 20 20 52 65 63 69 65 76 65 46          RecieveF
16950 72 6f 6d 50 72 6f 67 72 61 6d 20 24 62 72 65 61  romProgram $brea
16960 6b 6e 75 6d 20 24 66 69 6c 65 6e 75 6d 20 24 6c  knum $filenum $l
16970 69 6e 65 20 24 70 72 6f 63 6e 61 6d 65 20 22 22  ine $procname ""
16980 20 22 22 0a 09 23 20 20 20 20 20 20 20 20 20 20   ""..#          
16990 20 20 20 72 65 74 75 72 6e 0a 09 23 20 20 20 20     return..#    
169a0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 23       } else {..#
169b0 20 20 20 20 20 20 20 20 20 20 20 20 20 57 61 72               War
169c0 6e 57 69 6e 20 22 50 72 6f 62 6c 65 6d 73 20 66  nWin "Problems f
169d0 69 6e 64 69 6e 67 20 62 72 65 61 6b 70 6f 69 6e  inding breakpoin
169e0 74 20 69 6e 20 66 69 6c 65 20 24 66 69 6c 65 20  t in file $file 
169f0 28 24 61 61 29 22 0a 09 23 20 20 20 20 20 20 20  ($aa)"..#       
16a00 20 20 7d 0a 09 23 20 20 20 20 20 20 20 20 20 72    }..#         r
16a10 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20  eturn.    }..   
16a20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 50   if { [regexp {P
16a30 72 6f 67 72 61 6d 20 65 78 69 74 65 64 5b 5e 5c  rogram exited[^\
16a40 6e 5d 2a 7d 20 24 61 61 20 6d 65 73 73 5d 20 7d  n]*} $aa mess] }
16a50 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74   {..set err [cat
16a60 63 68 20 7b 20 63 6c 6f 73 65 20 24 66 69 64 20  ch { close $fid 
16a70 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 73 65  } errstring]..se
16a80 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 20  t debuggerstate 
16a90 22 22 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65  ""..set remotese
16aa0 72 76 65 72 54 79 70 65 20 22 22 0a 09 73 65 74  rverType ""..set
16ab0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 22 22   remoteserver ""
16ac0 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a  ..if { $err } {.
16ad0 09 20 20 20 20 61 70 70 65 6e 64 20 6d 65 73 73  .    append mess
16ae0 20 22 20 28 24 65 72 72 73 74 72 69 6e 67 29 22   " ($errstring)"
16af0 0a 09 7d 0a 09 57 61 72 6e 57 69 6e 20 24 6d 65  ..}..WarnWin $me
16b00 73 73 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  ss.    }.    if 
16b10 7b 20 5b 72 65 67 65 78 70 20 7b 50 72 6f 67 72  { [regexp {Progr
16b20 61 6d 20 72 65 63 65 69 76 65 64 20 73 69 67 6e  am received sign
16b30 61 6c 7d 20 24 61 61 5d 20 7d 20 7b 0a 09 57 61  al} $aa] } {..Wa
16b40 72 6e 57 69 6e 20 24 61 61 0a 09 54 65 78 74 4f  rnWin $aa..TextO
16b50 75 74 49 6e 73 65 72 74 20 24 61 61 0a 09 72 73  utInsert $aa..rs
16b60 74 61 63 6b 20 2d 68 61 6e 64 6c 65 72 20 52 61  tack -handler Ra
16b70 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74  mDebugger::Updat
16b80 65 47 55 49 53 74 61 63 6b 0a 09 56 69 65 77 4f  eGUIStack..ViewO
16b90 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 2d 66 6f  nlyTextOrAll -fo
16ba0 72 63 65 5f 61 6c 6c 0a 09 72 65 74 75 72 6e 0a  rce_all..return.
16bb0 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b      }.    if { [
16bc0 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 2a 4e  string match "*N
16bd0 6f 20 65 78 65 63 75 74 61 62 6c 65 20 73 70 65  o executable spe
16be0 63 69 66 69 65 64 2c 20 75 73 65 20 27 74 61 72  cified, use 'tar
16bf0 67 65 74 20 65 78 65 63 27 2e 2a 22 20 24 61 61  get exec'.*" $aa
16c00 5d 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 5b  ] } {..WarnWin [
16c10 5f 20 22 45 72 72 6f 72 20 64 65 66 69 6e 69 6e  _ "Error definin
16c20 67 20 74 68 65 20 64 65 62 75 67 67 65 64 20 65  g the debugged e
16c30 78 65 63 75 74 61 62 6c 65 2e 20 55 73 65 20 27  xecutable. Use '
16c40 55 74 69 6c 69 74 69 65 73 2d 3e 67 64 62 20 6c  Utilities->gdb l
16c50 6f 67 27 20 66 6f 72 20 64 65 74 61 69 6c 73 22  og' for details"
16c60 5d 0a 20 20 20 20 7d 0a 20 20 20 20 54 65 78 74  ].    }.    Text
16c70 4f 75 74 49 6e 73 65 72 74 20 24 61 61 0a 20 20  OutInsert $aa.  
16c80 20 20 54 65 78 74 4f 75 74 52 61 69 73 65 0a 7d    TextOutRaise.}
16c90 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
16ca0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16cb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16cc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16cd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16ce0 23 23 0a 23 20 20 20 20 20 20 20 20 20 20 20 20  ##.#            
16cf0 20 20 20 20 20 20 20 52 61 6d 44 65 62 75 67 67         RamDebugg
16d00 65 72 20 47 55 49 0a 23 23 23 23 23 23 23 23 23  er GUI.#########
16d10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16d20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16d30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16d40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16d50 23 23 23 23 23 23 23 0a 0a 70 72 6f 63 20 52 61  #######..proc Ra
16d60 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e  mDebugger::Secon
16d70 64 61 72 79 54 65 78 74 48 65 6c 70 20 7b 20 77  daryTextHelp { w
16d80 68 61 74 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  hat } {.    vari
16d90 61 62 6c 65 20 74 65 78 74 5f 73 65 63 6f 6e 64  able text_second
16da0 61 72 79 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ary.    variable
16db0 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63   currentfile_sec
16dc0 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 72 69 61  ondary.    varia
16dd0 62 6c 65 20 5f 73 65 63 6f 6e 64 74 65 78 74 68  ble _secondtexth
16de0 65 6c 70 5f 61 66 74 65 72 0a 0a 20 20 20 20 73  elp_after..    s
16df0 77 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 62  witch $what {..b
16e00 65 67 69 6e 20 7b 0a 09 20 20 20 20 73 65 74 20  egin {..    set 
16e10 5f 73 65 63 6f 6e 64 74 65 78 74 68 65 6c 70 5f  _secondtexthelp_
16e20 61 66 74 65 72 20 5b 61 66 74 65 72 20 35 30 30  after [after 500
16e30 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65   RamDebugger::Se
16e40 63 6f 6e 64 61 72 79 54 65 78 74 48 65 6c 70 20  condaryTextHelp 
16e50 73 68 6f 77 5d 0a 09 20 20 20 20 62 69 6e 64 20  show]..    bind 
16e60 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20  $text_secondary 
16e70 3c 4c 65 61 76 65 3e 20 5b 6c 69 73 74 20 52 61  <Leave> [list Ra
16e80 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e  mDebugger::Secon
16e90 64 61 72 79 54 65 78 74 48 65 6c 70 20 68 69 64  daryTextHelp hid
16ea0 65 5d 0a 09 7d 0a 09 73 68 6f 77 20 7b 0a 09 20  e]..}..show {.. 
16eb0 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65     if { ![info e
16ec0 78 69 73 74 73 20 74 65 78 74 5f 73 65 63 6f 6e  xists text_secon
16ed0 64 61 72 79 5d 20 7d 20 7b 20 72 65 74 75 72 6e  dary] } { return
16ee0 20 7d 0a 09 20 20 20 20 73 65 74 20 74 78 74 20   }..    set txt 
16ef0 22 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65  "$currentfile_se
16f00 63 6f 6e 64 61 72 79 5c 6e 50 72 65 73 73 20 63  condary\nPress c
16f10 65 6e 74 72 61 6c 20 6d 6f 75 73 65 20 62 75 74  entral mouse but
16f20 74 6f 6e 20 74 6f 20 64 72 61 67 22 0a 09 20 20  ton to drag"..  
16f30 20 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78    if { [winfo ex
16f40 69 73 74 73 20 24 74 65 78 74 5f 73 65 63 6f 6e  ists $text_secon
16f50 64 61 72 79 2e 6c 5d 20 7d 20 7b 0a 09 09 24 74  dary.l] } {...$t
16f60 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 2e 6c 20  ext_secondary.l 
16f70 63 6f 6e 66 69 67 75 72 65 20 2d 74 65 78 74 20  configure -text 
16f80 24 74 78 74 0a 09 09 72 65 74 75 72 6e 0a 09 20  $txt...return.. 
16f90 20 20 20 7d 0a 09 20 20 20 20 6c 61 62 65 6c 20     }..    label 
16fa0 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 2e  $text_secondary.
16fb0 6c 20 2d 74 65 78 74 20 24 74 78 74 20 2d 6a 75  l -text $txt -ju
16fc0 73 74 69 66 79 20 6c 65 66 74 20 2d 62 64 20 31  stify left -bd 1
16fd0 20 2d 72 65 6c 69 65 66 20 72 69 64 67 65 20 5c   -relief ridge \
16fe0 0a 09 09 2d 62 67 20 5b 24 74 65 78 74 5f 73 65  ...-bg [$text_se
16ff0 63 6f 6e 64 61 72 79 20 63 67 65 74 20 2d 62 67  condary cget -bg
17000 5d 0a 09 20 20 20 20 70 6c 61 63 65 20 24 74 65  ]..    place $te
17010 78 74 5f 73 65 63 6f 6e 64 61 72 79 2e 6c 20 2d  xt_secondary.l -
17020 61 6e 63 68 6f 72 20 6e 65 20 2d 72 65 6c 78 20  anchor ne -relx 
17030 31 20 2d 72 65 6c 79 20 30 0a 09 20 20 20 20 61  1 -rely 0..    a
17040 66 74 65 72 20 31 30 30 30 20 5b 6c 69 73 74 20  fter 1000 [list 
17050 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 63  RamDebugger::Sec
17060 6f 6e 64 61 72 79 54 65 78 74 48 65 6c 70 20 68  ondaryTextHelp h
17070 69 64 65 5d 0a 09 20 20 20 20 62 69 6e 64 20 24  ide]..    bind $
17080 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c  text_secondary <
17090 46 6f 63 75 73 4f 75 74 3e 20 5b 6c 69 73 74 20  FocusOut> [list 
170a0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 63  RamDebugger::Sec
170b0 6f 6e 64 61 72 79 54 65 78 74 48 65 6c 70 20 68  ondaryTextHelp h
170c0 69 64 65 5d 0a 09 7d 0a 09 68 69 64 65 20 7b 0a  ide]..}..hide {.
170d0 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20  .    if { [info 
170e0 65 78 69 73 74 73 20 5f 73 65 63 6f 6e 64 74 65  exists _secondte
170f0 78 74 68 65 6c 70 5f 61 66 74 65 72 5d 20 7d 20  xthelp_after] } 
17100 7b 0a 09 09 61 66 74 65 72 20 63 61 6e 63 65 6c  {...after cancel
17110 20 24 5f 73 65 63 6f 6e 64 74 65 78 74 68 65 6c   $_secondtexthel
17120 70 5f 61 66 74 65 72 0a 09 09 75 6e 73 65 74 20  p_after...unset 
17130 5f 73 65 63 6f 6e 64 74 65 78 74 68 65 6c 70 5f  _secondtexthelp_
17140 61 66 74 65 72 0a 09 20 20 20 20 7d 0a 09 20 20  after..    }..  
17150 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69    if { [info exi
17160 73 74 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 61  sts text_seconda
17170 72 79 5d 20 7d 20 7b 0a 09 09 64 65 73 74 72 6f  ry] } {...destro
17180 79 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72  y $text_secondar
17190 79 2e 6c 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a 20  y.l..    }..}.. 
171a0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
171b0 44 65 62 75 67 67 65 72 3a 3a 5f 73 65 63 6f 6e  Debugger::_secon
171c0 64 74 65 78 74 73 61 76 65 70 6f 73 20 7b 7d 20  dtextsavepos {} 
171d0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d  {.    variable m
171e0 61 69 6e 66 72 61 6d 65 0a 20 20 20 20 76 61 72  ainframe.    var
171f0 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20  iable options.. 
17200 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 73     set options(s
17210 65 63 6f 6e 64 61 72 79 70 61 6e 65 73 29 20 22  econdarypanes) "
17220 22 0a 20 20 20 20 73 65 74 20 66 20 5b 24 6d 61  ".    set f [$ma
17230 69 6e 66 72 61 6d 65 20 67 65 74 66 72 61 6d 65  inframe getframe
17240 5d 0a 20 20 20 20 69 66 20 7b 20 5b 77 69 6e 66  ].    if { [winf
17250 6f 20 65 78 69 73 74 73 20 24 66 2e 74 65 78 74  o exists $f.text
17260 70 61 6e 65 5d 20 7d 20 7b 0a 09 66 6f 72 65 61  pane] } {..forea
17270 63 68 20 69 20 5b 24 66 2e 74 65 78 74 70 61 6e  ch i [$f.textpan
17280 65 20 70 61 6e 65 73 5d 20 7b 0a 09 20 20 20 20  e panes] {..    
17290 6c 61 70 70 65 6e 64 20 6f 70 74 69 6f 6e 73 28  lappend options(
172a0 73 65 63 6f 6e 64 61 72 79 70 61 6e 65 73 29 20  secondarypanes) 
172b0 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 69  [winfo height $i
172c0 5d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  ]..}.    }.}..pr
172d0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
172e0 54 6f 67 67 6c 65 56 69 65 77 73 20 7b 7d 20 7b  ToggleViews {} {
172f0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
17300 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  xt.    variable 
17310 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20  text_secondary. 
17320 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
17330 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69  entfile.    vari
17340 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65  able currentfile
17350 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20  _secondary..    
17360 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
17370 74 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72  ts text_secondar
17380 79 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  y] } { return }.
17390 0a 20 20 20 20 66 6f 63 75 73 20 24 74 65 78 74  .    focus $text
173a0 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 6e 65  .    .    set ne
173b0 77 5f 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65  w_currentfile_se
173c0 63 6f 6e 64 61 72 79 20 24 63 75 72 72 65 6e 74  condary $current
173d0 66 69 6c 65 0a 20 20 20 20 4f 70 65 6e 46 69 6c  file.    OpenFil
173e0 65 46 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f  eF $currentfile_
173f0 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 4f 70  secondary.    Op
17400 65 6e 46 69 6c 65 53 65 63 6f 6e 64 61 72 79 20  enFileSecondary 
17410 24 6e 65 77 5f 63 75 72 72 65 6e 74 66 69 6c 65  $new_currentfile
17420 5f 73 65 63 6f 6e 64 61 72 79 0a 7d 0a 0a 70 72  _secondary.}..pr
17430 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
17440 56 69 65 77 53 65 63 6f 6e 64 54 65 78 74 20 7b  ViewSecondText {
17450 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
17460 20 6d 61 69 6e 66 72 61 6d 65 0a 20 20 20 20 76   mainframe.    v
17470 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20  ariable text.   
17480 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73   variable text_s
17490 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 72  econdary.    var
174a0 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
174b0 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  e.    variable c
174c0 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e  urrentfile_secon
174d0 64 61 72 79 0a 20 20 20 20 76 61 72 69 61 62 6c  dary.    variabl
174e0 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73  e options..    s
174f0 65 74 20 66 20 5b 24 6d 61 69 6e 66 72 61 6d 65  et f [$mainframe
17500 20 67 65 74 66 72 61 6d 65 5d 0a 20 20 20 20 69   getframe].    i
17510 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 78 69 73  f { ![winfo exis
17520 74 73 20 24 66 2e 74 65 78 74 70 61 6e 65 5d 20  ts $f.textpane] 
17530 7d 20 7b 0a 0a 09 24 66 2e 66 75 6c 6c 74 65 78  } {...$f.fulltex
17540 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 69  t configure -hei
17550 67 68 74 20 35 0a 09 67 72 69 64 20 70 72 6f 70  ght 5..grid prop
17560 61 67 61 74 65 20 24 66 2e 66 75 6c 6c 74 65 78  agate $f.fulltex
17570 74 20 30 0a 0a 09 70 61 6e 65 64 77 69 6e 64 6f  t 0...panedwindo
17580 77 20 24 66 2e 74 65 78 74 70 61 6e 65 20 2d 6f  w $f.textpane -o
17590 72 69 65 6e 74 20 76 65 72 74 69 63 61 6c 20 2d  rient vertical -
175a0 62 64 20 30 0a 09 66 72 61 6d 65 20 24 66 2e 74  bd 0..frame $f.t
175b0 65 78 74 70 61 6e 65 2e 66 0a 09 73 65 74 20 74  extpane.f..set t
175c0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 5b 74  ext_secondary [t
175d0 65 78 74 20 24 66 2e 74 65 78 74 70 61 6e 65 2e  ext $f.textpane.
175e0 66 2e 66 75 6c 6c 74 65 78 74 5f 73 65 63 6f 6e  f.fulltext_secon
175f0 64 61 72 79 20 2d 62 67 20 67 72 65 79 39 30 20  dary -bg grey90 
17600 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 20  -state disabled 
17610 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
17620 20 20 20 20 2d 66 6f 6e 74 20 46 69 78 65 64 46      -font FixedF
17630 6f 6e 74 20 2d 68 69 67 68 6c 69 67 68 74 74 68  ont -highlightth
17640 69 63 6b 6e 65 73 73 20 31 20 2d 62 64 20 30 20  ickness 1 -bd 0 
17650 2d 77 72 61 70 20 6e 6f 6e 65 5c 0a 09 09 20 20  -wrap none\...  
17660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 79                -y
17670 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e 64 20 5b 6c  scrollcommand [l
17680 69 73 74 20 24 66 2e 74 65 78 74 70 61 6e 65 2e  ist $f.textpane.
17690 66 2e 79 73 63 72 6f 6c 6c 20 73 65 74 5d 5d 0a  f.yscroll set]].
176a0 09 73 63 72 6f 6c 6c 62 61 72 20 24 66 2e 74 65  .scrollbar $f.te
176b0 78 74 70 61 6e 65 2e 66 2e 79 73 63 72 6f 6c 6c  xtpane.f.yscroll
176c0 20 2d 6f 72 69 65 6e 74 20 76 65 72 74 69 63 61   -orient vertica
176d0 6c 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74  l -command [list
176e0 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79   $text_secondary
176f0 20 79 76 69 65 77 5d 0a 09 62 69 6e 64 20 24 74   yview]..bind $t
17700 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c 31  ext_secondary <1
17710 3e 20 5b 6c 69 73 74 20 66 6f 63 75 73 20 25 57  > [list focus %W
17720 5d 0a 09 62 69 6e 64 20 24 74 65 78 74 5f 73 65  ]..bind $text_se
17730 63 6f 6e 64 61 72 79 20 3c 46 6f 63 75 73 49 6e  condary <FocusIn
17740 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  > [list RamDebug
17750 67 65 72 3a 3a 53 65 63 6f 6e 64 61 72 79 54 65  ger::SecondaryTe
17760 78 74 48 65 6c 70 20 73 68 6f 77 5d 0a 09 62 69  xtHelp show]..bi
17770 6e 64 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61  nd $text_seconda
17780 72 79 20 3c 45 6e 74 65 72 3e 20 5b 6c 69 73 74  ry <Enter> [list
17790 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65   RamDebugger::Se
177a0 63 6f 6e 64 61 72 79 54 65 78 74 48 65 6c 70 20  condaryTextHelp 
177b0 62 65 67 69 6e 5d 0a 09 67 72 69 64 20 24 74 65  begin]..grid $te
177c0 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 24 66 2e  xt_secondary $f.
177d0 74 65 78 74 70 61 6e 65 2e 66 2e 79 73 63 72 6f  textpane.f.yscro
177e0 6c 6c 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 0a  ll -sticky nsew.
177f0 0a 09 62 69 6e 64 20 24 74 65 78 74 5f 73 65 63  ..bind $text_sec
17800 6f 6e 64 61 72 79 20 3c 24 3a 3a 61 6c 74 2d 4c  ondary <$::alt-L
17810 65 66 74 3e 20 22 52 61 6d 44 65 62 75 67 67 65  eft> "RamDebugge
17820 72 3a 3a 47 6f 74 6f 50 72 65 76 69 6f 75 73 4e  r::GotoPreviousN
17830 65 78 74 49 6e 57 69 6e 4c 69 73 74 20 70 72 65  extInWinList pre
17840 76 20 3b 20 62 72 65 61 6b 22 0a 09 62 69 6e 64  v ; break"..bind
17850 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79   $text_secondary
17860 20 3c 24 3a 3a 61 6c 74 2d 52 69 67 68 74 3e 20   <$::alt-Right> 
17870 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 6f  "RamDebugger::Go
17880 74 6f 50 72 65 76 69 6f 75 73 4e 65 78 74 49 6e  toPreviousNextIn
17890 57 69 6e 4c 69 73 74 20 6e 65 78 74 20 3b 20 62  WinList next ; b
178a0 72 65 61 6b 22 0a 09 62 69 6e 64 20 24 74 65 78  reak"..bind $tex
178b0 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c 43 6f 6e  t_secondary <Con
178c0 74 72 6f 6c 2d 54 61 62 3e 20 5b 62 69 6e 64 20  trol-Tab> [bind 
178d0 24 74 65 78 74 20 3c 43 6f 6e 74 72 6f 6c 2d 4b  $text <Control-K
178e0 65 79 50 72 65 73 73 2d 54 61 62 3e 5d 0a 09 62  eyPress-Tab>]..b
178f0 69 6e 64 20 24 74 65 78 74 5f 73 65 63 6f 6e 64  ind $text_second
17900 61 72 79 20 3c 54 61 62 3e 20 22 52 61 6d 44 65  ary <Tab> "RamDe
17910 62 75 67 67 65 72 3a 3a 49 6e 64 65 6e 74 20 3b  bugger::Indent ;
17920 20 62 72 65 61 6b 22 0a 0a 09 41 70 70 6c 79 43   break"...ApplyC
17930 6f 6c 6f 72 50 72 65 66 73 20 24 74 65 78 74 5f  olorPrefs $text_
17940 73 65 63 6f 6e 64 61 72 79 0a 09 0a 09 67 72 69  secondary....gri
17950 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72  d columnconfigur
17960 65 20 24 66 2e 74 65 78 74 70 61 6e 65 2e 66 20  e $f.textpane.f 
17970 30 20 2d 77 65 69 67 68 74 20 31 0a 09 67 72 69  0 -weight 1..gri
17980 64 20 72 6f 77 63 6f 6e 66 69 67 75 72 65 20 24  d rowconfigure $
17990 66 2e 74 65 78 74 70 61 6e 65 2e 66 20 30 20 2d  f.textpane.f 0 -
179a0 77 65 69 67 68 74 20 31 0a 0a 09 24 66 2e 74 65  weight 1...$f.te
179b0 78 74 70 61 6e 65 20 61 64 64 20 24 66 2e 74 65  xtpane add $f.te
179c0 78 74 70 61 6e 65 2e 66 0a 09 73 65 74 20 70 61  xtpane.f..set pa
179d0 72 65 6e 74 20 5b 6c 69 6e 64 65 78 20 5b 67 72  rent [lindex [gr
179e0 69 64 20 69 6e 66 6f 20 24 66 2e 66 75 6c 6c 74  id info $f.fullt
179f0 65 78 74 5d 20 31 5d 0a 09 67 72 69 64 20 72 65  ext] 1]..grid re
17a00 6d 6f 76 65 20 24 66 2e 66 75 6c 6c 74 65 78 74  move $f.fulltext
17a10 0a 09 24 66 2e 74 65 78 74 70 61 6e 65 20 61 64  ..$f.textpane ad
17a20 64 20 24 66 2e 66 75 6c 6c 74 65 78 74 0a 0a 09  d $f.fulltext...
17a30 67 72 69 64 20 24 66 2e 74 65 78 74 70 61 6e 65  grid $f.textpane
17a40 20 2d 69 6e 20 24 70 61 72 65 6e 74 20 2d 73 74   -in $parent -st
17a50 69 63 6b 79 20 6e 73 65 77 0a 0a 09 66 6f 72 65  icky nsew...fore
17a60 61 63 68 20 22 77 65 69 67 68 74 31 20 77 65 69  ach "weight1 wei
17a70 67 68 74 32 22 20 5b 6c 69 73 74 20 31 20 31 5d  ght2" [list 1 1]
17a80 20 62 72 65 61 6b 0a 09 69 66 20 7b 20 5b 69 6e   break..if { [in
17a90 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e  fo exists option
17aa0 73 28 73 65 63 6f 6e 64 61 72 79 70 61 6e 65 73  s(secondarypanes
17ab0 29 5d 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65  )] } {..    fore
17ac0 61 63 68 20 22 77 65 69 67 68 74 31 20 77 65 69  ach "weight1 wei
17ad0 67 68 74 32 22 20 24 6f 70 74 69 6f 6e 73 28 73  ght2" $options(s
17ae0 65 63 6f 6e 64 61 72 79 70 61 6e 65 73 29 20 62  econdarypanes) b
17af0 72 65 61 6b 0a 09 7d 0a 09 69 66 20 7b 20 21 5b  reak..}..if { ![
17b00 69 6e 66 6f 20 65 78 69 73 74 73 20 63 75 72 72  info exists curr
17b10 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72  entfile_secondar
17b20 79 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  y] } {..    set 
17b30 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f  currentfile_seco
17b40 6e 64 61 72 79 20 24 63 75 72 72 65 6e 74 66 69  ndary $currentfi
17b50 6c 65 0a 09 7d 0a 09 75 70 64 61 74 65 20 69 64  le..}..update id
17b60 6c 65 74 61 73 6b 73 0a 09 69 66 20 7b 20 5b 77  letasks..if { [w
17b70 69 6e 66 6f 20 65 78 69 73 74 73 20 24 66 2e 74  info exists $f.t
17b80 65 78 74 70 61 6e 65 5d 20 7d 20 7b 0a 09 20 20  extpane] } {..  
17b90 20 20 73 65 74 20 77 73 75 6d 20 5b 65 78 70 72    set wsum [expr
17ba0 20 7b 64 6f 75 62 6c 65 28 24 77 65 69 67 68 74   {double($weight
17bb0 31 2b 24 77 65 69 67 68 74 32 29 7d 5d 0a 09 20  1+$weight2)}].. 
17bc0 20 20 20 73 65 74 20 68 31 20 5b 65 78 70 72 20     set h1 [expr 
17bd0 7b 69 6e 74 28 24 77 65 69 67 68 74 31 2a 5b 77  {int($weight1*[w
17be0 69 6e 66 6f 20 68 65 69 67 68 74 20 24 70 61 72  info height $par
17bf0 65 6e 74 5d 2f 24 77 73 75 6d 29 7d 5d 0a 09 20  ent]/$wsum)}].. 
17c00 20 20 20 24 66 2e 74 65 78 74 70 61 6e 65 20 73     $f.textpane s
17c10 61 73 68 20 70 6c 61 63 65 20 30 20 30 20 24 68  ash place 0 0 $h
17c20 31 0a 09 7d 0a 09 4f 70 65 6e 46 69 6c 65 53 65  1..}..OpenFileSe
17c30 63 6f 6e 64 61 72 79 20 24 63 75 72 72 65 6e 74  condary $current
17c40 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 0a 09  file_secondary..
17c50 72 61 69 73 65 20 24 66 2e 66 75 6c 6c 74 65 78  raise $f.fulltex
17c60 74 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  t.    } else {..
17c70 5f 73 65 63 6f 6e 64 74 65 78 74 73 61 76 65 70  _secondtextsavep
17c80 6f 73 0a 09 69 66 20 7b 20 5b 24 74 65 78 74 20  os..if { [$text 
17c90 63 67 65 74 20 2d 73 79 6e 63 74 65 78 74 77 69  cget -synctextwi
17ca0 64 67 65 74 5d 20 6e 65 20 22 22 20 7d 20 7b 0a  dget] ne "" } {.
17cb0 09 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 69  .    $text confi
17cc0 67 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69  gure -synctextwi
17cd0 64 67 65 74 20 22 22 0a 09 7d 0a 09 73 65 74 20  dget ""..}..set 
17ce0 70 61 72 65 6e 74 20 5b 6c 69 6e 64 65 78 20 5b  parent [lindex [
17cf0 67 72 69 64 20 69 6e 66 6f 20 24 66 2e 74 65 78  grid info $f.tex
17d00 74 70 61 6e 65 5d 20 31 5d 0a 09 64 65 73 74 72  tpane] 1]..destr
17d10 6f 79 20 24 66 2e 74 65 78 74 70 61 6e 65 0a 09  oy $f.textpane..
17d20 67 72 69 64 20 24 66 2e 66 75 6c 6c 74 65 78 74  grid $f.fulltext
17d30 20 2d 69 6e 20 24 70 61 72 65 6e 74 20 2d 73 74   -in $parent -st
17d40 69 63 6b 79 20 6e 73 65 77 0a 09 67 72 69 64 20  icky nsew..grid 
17d50 70 72 6f 70 61 67 61 74 65 20 24 66 2e 66 75 6c  propagate $f.ful
17d60 6c 74 65 78 74 20 31 0a 09 75 6e 73 65 74 20 74  ltext 1..unset t
17d70 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 09 75  ext_secondary..u
17d80 6e 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65  nset currentfile
17d90 5f 73 65 63 6f 6e 64 61 72 79 0a 09 66 6f 63 75  _secondary..focu
17da0 73 20 24 74 65 78 74 0a 20 20 20 20 7d 0a 7d 0a  s $text.    }.}.
17db0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
17dc0 72 3a 3a 46 6f 63 75 73 53 65 63 6f 6e 64 54 65  r::FocusSecondTe
17dd0 78 74 54 6f 67 67 6c 65 20 7b 7d 20 7b 0a 20 20  xtToggle {} {.  
17de0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
17df0 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78      variable tex
17e00 74 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20  t_secondary..   
17e10 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73   if { [info exis
17e20 74 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72  ts text_secondar
17e30 79 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 66 6f  y] } {..if { [fo
17e40 63 75 73 5d 20 65 71 20 24 74 65 78 74 20 7d 20  cus] eq $text } 
17e50 7b 0a 09 20 20 20 20 66 6f 63 75 73 20 24 74 65  {..    focus $te
17e60 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20  xt_secondary..} 
17e70 65 6c 73 65 20 7b 20 66 6f 63 75 73 20 24 74 65  else { focus $te
17e80 78 74 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20  xt }.    } else 
17e90 7b 20 66 6f 63 75 73 20 24 74 65 78 74 20 7d 0a  { focus $text }.
17ea0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
17eb0 67 67 65 72 3a 3a 43 68 65 63 6b 4c 69 73 74 46  gger::CheckListF
17ec0 69 6c 65 73 50 61 6e 65 20 7b 7d 20 7b 0a 20 20  ilesPane {} {.  
17ed0 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
17ee0 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ns.    variable 
17ef0 70 61 6e 65 31 0a 20 20 20 20 76 61 72 69 61 62  pane1.    variab
17f00 6c 65 20 70 61 6e 65 32 0a 20 20 20 20 0a 20 20  le pane2.    .  
17f10 20 20 73 65 74 20 70 77 20 5b 46 69 6e 64 50 61    set pw [FindPa
17f20 6e 65 64 57 69 6e 64 6f 77 46 72 6f 6d 50 61 6e  nedWindowFromPan
17f30 65 20 24 70 61 6e 65 32 5d 0a 0a 20 20 20 20 69  e $pane2]..    i
17f40 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 6c 69 73  f { $options(lis
17f50 74 66 69 6c 65 73 70 61 6e 65 29 20 7d 20 7b 0a  tfilespane) } {.
17f60 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b  .if { [lsearch [
17f70 24 70 77 20 70 61 6e 65 73 5d 20 24 70 61 6e 65  $pw panes] $pane
17f80 31 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20  1] == -1 } {..  
17f90 20 20 24 70 77 20 61 64 64 20 24 70 61 6e 65 31    $pw add $pane1
17fa0 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 2d 62   -sticky nsew -b
17fb0 65 66 6f 72 65 20 24 70 61 6e 65 32 20 2d 77 69  efore $pane2 -wi
17fc0 64 74 68 20 31 30 30 20 2d 6d 69 6e 73 69 7a 65  dth 100 -minsize
17fd0 20 31 30 30 0a 09 20 20 20 20 56 69 65 77 4f 6e   100..    ViewOn
17fe0 6c 79 54 65 78 74 4f 72 41 6c 6c 20 2d 66 6f 72  lyTextOrAll -for
17ff0 63 65 5f 61 6c 6c 0a 09 7d 0a 20 20 20 20 7d 20  ce_all..}.    } 
18000 65 6c 73 65 69 66 20 7b 20 5b 6c 73 65 61 72 63  elseif { [lsearc
18010 68 20 5b 24 70 77 20 70 61 6e 65 73 5d 20 24 70  h [$pw panes] $p
18020 61 6e 65 31 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a  ane1] != -1 } {.
18030 09 24 70 77 20 66 6f 72 67 65 74 20 24 70 61 6e  .$pw forget $pan
18040 65 31 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63  e1.    }.}..proc
18050 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68   RamDebugger::Ch
18060 65 63 6b 56 69 65 77 56 61 72 69 61 62 6c 65 73  eckViewVariables
18070 50 61 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61  Pane {} {.    va
18080 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20  riable options. 
18090 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65     variable pane
180a0 31 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70  1.    variable p
180b0 61 6e 65 32 0a 20 20 20 20 76 61 72 69 61 62 6c  ane2.    variabl
180c0 65 20 70 61 6e 65 33 0a 0a 20 20 20 20 73 65 74  e pane3..    set
180d0 20 70 77 20 5b 46 69 6e 64 50 61 6e 65 64 57 69   pw [FindPanedWi
180e0 6e 64 6f 77 46 72 6f 6d 50 61 6e 65 20 24 70 61  ndowFromPane $pa
180f0 6e 65 33 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24  ne3]..    if { $
18100 6f 70 74 69 6f 6e 73 28 76 69 65 77 76 61 72 69  options(viewvari
18110 61 62 6c 65 73 70 61 6e 65 29 20 7d 20 7b 0a 09  ablespane) } {..
18120 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b 24  if { [lsearch [$
18130 70 77 20 70 61 6e 65 73 5d 20 24 70 61 6e 65 33  pw panes] $pane3
18140 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20  ] == -1 } {..   
18150 20 24 70 77 20 61 64 64 20 24 70 61 6e 65 33 20   $pw add $pane3 
18160 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 2d 61 66  -sticky nsew -af
18170 74 65 72 20 24 70 61 6e 65 32 20 2d 77 69 64 74  ter $pane2 -widt
18180 68 20 31 30 30 20 2d 6d 69 6e 73 69 7a 65 20 31  h 100 -minsize 1
18190 30 30 0a 09 20 20 20 20 56 69 65 77 4f 6e 6c 79  00..    ViewOnly
181a0 54 65 78 74 4f 72 41 6c 6c 20 2d 66 6f 72 63 65  TextOrAll -force
181b0 5f 61 6c 6c 0a 09 7d 0a 20 20 20 20 7d 20 65 6c  _all..}.    } el
181c0 73 65 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20  seif { [lsearch 
181d0 5b 24 70 77 20 70 61 6e 65 73 5d 20 24 70 61 6e  [$pw panes] $pan
181e0 65 33 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 24  e3] != -1 } {..$
181f0 70 77 20 66 6f 72 67 65 74 20 24 70 61 6e 65 33  pw forget $pane3
18200 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52  .    }.}..proc R
18210 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77  amDebugger::View
18220 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 7b 20  OnlyTextOrAll { 
18230 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72  args } {.    var
18240 69 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a  iable mainframe.
18250 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78      variable tex
18260 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70  t.    variable p
18270 61 6e 65 32 69 6e 31 0a 20 20 20 20 76 61 72 69  ane2in1.    vari
18280 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20  able options.   
18290 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 31 0a   variable pane1.
182a0 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e      variable pan
182b0 65 32 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  e2.    variable 
182c0 70 61 6e 65 33 0a 20 20 20 20 76 61 72 69 61 62  pane3.    variab
182d0 6c 65 20 6c 69 73 74 62 6f 78 6c 61 62 65 6c 66  le listboxlabelf
182e0 72 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 73 65  rame.    .    se
182f0 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20  t optional {..{ 
18300 2d 66 6f 72 63 65 5f 61 6c 6c 20 22 22 20 30 20  -force_all "" 0 
18310 7d 0a 09 7b 20 2d 66 6f 72 63 65 5f 6f 6e 6c 79  }..{ -force_only
18320 5f 74 65 78 74 20 22 22 20 30 20 7d 0a 09 7b 20  _text "" 0 }..{ 
18330 2d 72 65 74 75 72 6e 5f 73 74 61 74 65 20 22 22  -return_state ""
18340 20 30 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73   0 }.    }.    s
18350 65 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 22  et compulsory ""
18360 0a 20 20 20 20 70 61 72 73 65 5f 61 72 67 73 20  .    parse_args 
18370 24 6f 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75  $optional $compu
18380 6c 73 6f 72 79 20 24 61 72 67 73 0a 20 20 20 20  lsory $args.    
18390 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f  .    if { $optio
183a0 6e 73 28 6c 69 73 74 66 69 6c 65 73 70 61 6e 65  ns(listfilespane
183b0 29 20 7c 7c 20 24 6f 70 74 69 6f 6e 73 28 76 69  ) || $options(vi
183c0 65 77 76 61 72 69 61 62 6c 65 73 70 61 6e 65 29  ewvariablespane)
183d0 20 7d 20 7b 0a 09 73 65 74 20 76 69 65 77 5f 61   } {..set view_a
183e0 6c 6c 5f 73 69 6d 70 6c 65 20 30 0a 20 20 20 20  ll_simple 0.    
183f0 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 76 69  } else {..set vi
18400 65 77 5f 61 6c 6c 5f 73 69 6d 70 6c 65 20 31 0a  ew_all_simple 1.
18410 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 66 20      }.    set f 
18420 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 66  [$mainframe getf
18430 72 61 6d 65 5d 0a 20 20 20 20 73 65 74 20 74 20  rame].    set t 
18440 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20  [winfo toplevel 
18450 24 6d 61 69 6e 66 72 61 6d 65 5d 0a 20 20 20 20  $mainframe].    
18460 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f 70  set w [winfo top
18470 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a 20 20 20  level $text].   
18480 20 0a 20 20 20 20 69 66 20 7b 20 5b 77 69 6e 66   .    if { [winf
18490 6f 20 65 78 69 73 74 73 20 24 66 2e 74 65 78 74  o exists $f.text
184a0 70 61 6e 65 5d 20 7d 20 7b 0a 09 73 65 74 20 66  pane] } {..set f
184b0 75 6c 6c 74 65 78 74 20 24 66 2e 74 65 78 74 70  ulltext $f.textp
184c0 61 6e 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ane.    } else {
184d0 0a 09 73 65 74 20 66 75 6c 6c 74 65 78 74 20 24  ..set fulltext $
184e0 66 2e 66 75 6c 6c 74 65 78 74 0a 20 20 20 20 7d  f.fulltext.    }
184f0 0a 0a 20 20 20 20 69 66 20 7b 20 24 72 65 74 75  ..    if { $retu
18500 72 6e 5f 73 74 61 74 65 20 7d 20 7b 0a 09 69 66  rn_state } {..if
18510 20 7b 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69 64   { [lindex [grid
18520 20 69 6e 66 6f 20 24 66 75 6c 6c 74 65 78 74 5d   info $fulltext]
18530 20 31 5d 20 21 3d 20 24 66 20 7d 20 7b 0a 09 20   1] != $f } {.. 
18540 20 20 20 72 65 74 75 72 6e 20 61 6c 6c 0a 09 7d     return all..}
18550 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 72 65 74   else {..    ret
18560 75 72 6e 20 6f 6e 6c 79 5f 74 65 78 74 0a 09 7d  urn only_text..}
18570 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20  .    }.    if { 
18580 24 66 6f 72 63 65 5f 61 6c 6c 20 26 26 20 5b 6c  $force_all && [l
18590 69 6e 64 65 78 20 5b 67 72 69 64 20 69 6e 66 6f  index [grid info
185a0 20 24 66 75 6c 6c 74 65 78 74 5d 20 31 5d 20 21   $fulltext] 1] !
185b0 3d 20 24 66 20 7d 20 7b 0a 09 72 65 74 75 72 6e  = $f } {..return
185c0 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20  .    }.    if { 
185d0 24 66 6f 72 63 65 5f 6f 6e 6c 79 5f 74 65 78 74  $force_only_text
185e0 20 26 26 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69   && [lindex [gri
185f0 64 20 69 6e 66 6f 20 24 66 75 6c 6c 74 65 78 74  d info $fulltext
18600 5d 20 31 5d 20 3d 3d 20 24 66 20 7d 20 7b 0a 09  ] 1] == $f } {..
18610 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20  return.    }.   
18620 20 73 65 74 20 64 65 6c 74 61 20 5b 65 78 70 72   set delta [expr
18630 20 7b 5b 24 66 2e 70 77 20 63 67 65 74 20 2d 73   {[$f.pw cget -s
18640 61 73 68 77 69 64 74 68 5d 2b 32 2a 5b 24 66 2e  ashwidth]+2*[$f.
18650 70 77 20 63 67 65 74 20 2d 73 61 73 68 70 61 64  pw cget -sashpad
18660 5d 7d 5d 0a 20 20 20 20 73 65 74 20 64 65 6c 74  ]}].    set delt
18670 61 5f 65 78 74 20 5b 65 78 70 72 20 7b 32 2a 5b  a_ext [expr {2*[
18680 24 66 2e 70 77 20 63 67 65 74 20 2d 62 6f 72 64  $f.pw cget -bord
18690 65 72 77 69 64 74 68 5d 2b 34 7d 5d 0a 0a 20 20  erwidth]+4}]..  
186a0 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d 61    set geomkey ma
186b0 69 6e 67 65 6f 6d 65 74 72 79 5f 24 6f 70 74 69  ingeometry_$opti
186c0 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74  ons(ViewOnlyText
186d0 4f 72 41 6c 6c 29 0a 20 20 20 20 69 66 20 7b 20  OrAll).    if { 
186e0 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
186f0 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69  platform) eq "wi
18700 6e 64 6f 77 73 22 20 26 26 20 5b 77 6d 20 73 74  ndows" && [wm st
18710 61 74 65 20 24 77 5d 20 65 71 20 22 7a 6f 6f 6d  ate $w] eq "zoom
18720 65 64 22 20 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f  ed" } {..set zoo
18730 6d 65 64 20 31 0a 20 20 20 20 7d 20 65 6c 73 65  med 1.    } else
18740 69 66 20 7b 20 21 5b 63 61 74 63 68 20 7b 20 77  if { ![catch { w
18750 6d 20 61 74 74 72 69 62 75 74 65 73 20 24 77 20  m attributes $w 
18760 2d 7a 6f 6f 6d 65 64 20 7d 20 72 65 74 5d 20 26  -zoomed } ret] &
18770 26 20 24 72 65 74 20 7d 20 7b 0a 09 73 65 74 20  & $ret } {..set 
18780 7a 6f 6f 6d 65 64 20 31 0a 20 20 20 20 7d 20 65  zoomed 1.    } e
18790 6c 73 65 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65  lse {..set zoome
187a0 64 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  d 0.    }.    if
187b0 20 7b 20 24 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09   { $zoomed } {..
187c0 73 65 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f  set options($geo
187d0 6d 6b 65 79 29 20 7a 6f 6f 6d 65 64 0a 20 20 20  mkey) zoomed.   
187e0 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 77 6d 20   } elseif { [wm 
187f0 73 74 61 74 65 20 24 77 5d 20 65 71 20 22 6e 6f  state $w] eq "no
18800 72 6d 61 6c 22 20 26 26 20 5b 77 69 6e 66 6f 20  rmal" && [winfo 
18810 77 69 64 74 68 20 24 77 5d 20 3e 20 31 20 7d 20  width $w] > 1 } 
18820 7b 0a 09 72 65 67 65 78 70 20 7b 28 5c 64 2b 29  {..regexp {(\d+)
18830 78 28 5c 64 2b 29 5c 2b 28 5b 2d 5c 64 5d 5b 5c  x(\d+)\+([-\d][\
18840 64 5d 2a 29 5c 2b 3f 28 5b 2d 5c 64 5d 2b 29 7d  d]*)\+?([-\d]+)}
18850 20 5b 63 75 3a 3a 67 69 76 65 5f 77 69 6e 64 6f   [cu::give_windo
18860 77 5f 67 65 6f 6d 65 74 72 79 20 24 77 5d 20 5c  w_geometry $w] \
18870 0a 09 20 20 20 20 7b 7d 20 77 69 64 74 68 20 68  ..    {} width h
18880 65 69 67 68 74 20 78 20 79 0a 09 69 66 20 7b 20  eight x y..if { 
18890 24 78 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74  $x < -20 } { set
188a0 20 78 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24   x -20 }..if { $
188b0 79 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74 20  y < -20 } { set 
188c0 79 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24 78  y -20 }..if { $x
188d0 20 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e   > [winfo screen
188e0 77 69 64 74 68 20 24 74 65 78 74 5d 2d 32 30 20  width $text]-20 
188f0 7d 20 7b 20 73 65 74 20 78 20 5b 65 78 70 72 20  } { set x [expr 
18900 7b 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69  {[winfo screenwi
18910 64 74 68 20 24 74 65 78 74 5d 2d 32 30 7d 5d 20  dth $text]-20}] 
18920 7d 0a 09 69 66 20 7b 20 24 79 20 3e 20 5b 77 69  }..if { $y > [wi
18930 6e 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74  nfo screenheight
18940 20 24 74 65 78 74 5d 2d 32 30 20 7d 20 7b 20 73   $text]-20 } { s
18950 65 74 20 79 20 5b 65 78 70 72 20 7b 5b 77 69 6e  et y [expr {[win
18960 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 20  fo screenheight 
18970 24 74 65 78 74 5d 2d 32 30 7d 5d 20 7d 0a 09 73  $text]-20}] }..s
18980 65 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d  et options($geom
18990 6b 65 79 29 20 24 7b 77 69 64 74 68 7d 78 24 68  key) ${width}x$h
189a0 65 69 67 68 74 2b 24 78 2b 24 79 0a 20 20 20 20  eight+$x+$y.    
189b0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e  }..    if { [lin
189c0 64 65 78 20 5b 67 72 69 64 20 69 6e 66 6f 20 24  dex [grid info $
189d0 66 75 6c 6c 74 65 78 74 5d 20 31 5d 20 21 3d 20  fulltext] 1] != 
189e0 24 66 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20  $f } {..foreach 
189f0 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 6f  i [array names o
18a00 70 74 69 6f 6e 73 20 70 61 6e 65 77 65 69 67 68  ptions paneweigh
18a10 74 73 2c 2a 5d 20 7b 0a 09 20 20 20 20 72 65 67  ts,*] {..    reg
18a20 65 78 70 20 7b 70 61 6e 65 77 65 69 67 68 74 73  exp {paneweights
18a30 2c 28 2e 2a 29 2c 28 2e 2a 29 7d 20 24 69 20 7b  ,(.*),(.*)} $i {
18a40 7d 20 6f 72 69 65 6e 74 20 70 61 6e 65 64 77 0a  } orient panedw.
18a50 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73  .    set options
18a60 28 24 69 29 20 22 22 0a 09 20 20 20 20 69 66 20  ($i) ""..    if 
18a70 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20  { [winfo exists 
18a80 24 70 61 6e 65 64 77 5d 20 7d 20 7b 0a 09 09 73  $panedw] } {...s
18a90 65 74 20 69 64 78 20 30 0a 09 09 73 65 74 20 73  et idx 0...set s
18aa0 75 6d 20 30 0a 09 09 73 65 74 20 72 65 73 20 22  um 0...set res "
18ab0 22 0a 09 09 66 6f 72 65 61 63 68 20 70 61 6e 65  "...foreach pane
18ac0 20 5b 24 70 61 6e 65 64 77 20 70 61 6e 65 73 5d   [$panedw panes]
18ad0 20 7b 0a 09 09 20 20 20 20 73 77 69 74 63 68 20   {...    switch 
18ae0 24 6f 72 69 65 6e 74 20 7b 0a 09 09 20 20 20 20  $orient {...    
18af0 20 20 20 20 68 20 7b 20 6c 61 70 70 65 6e 64 20      h { lappend 
18b00 72 65 73 20 5b 77 69 6e 66 6f 20 77 69 64 74 68  res [winfo width
18b10 20 24 70 61 6e 65 5d 20 7d 0a 09 09 20 20 20 20   $pane] }...    
18b20 20 20 20 20 76 20 7b 20 6c 61 70 70 65 6e 64 20      v { lappend 
18b30 72 65 73 20 5b 77 69 6e 66 6f 20 68 65 69 67 68  res [winfo heigh
18b40 74 20 24 70 61 6e 65 5d 20 7d 0a 09 09 20 20 20  t $pane] }...   
18b50 20 7d 0a 09 09 20 20 20 20 69 6e 63 72 20 69 64   }...    incr id
18b60 78 0a 09 09 20 20 20 20 73 65 74 20 73 75 6d 20  x...    set sum 
18b70 5b 65 78 70 72 20 7b 24 73 75 6d 2b 5b 6c 69 6e  [expr {$sum+[lin
18b80 64 65 78 20 24 72 65 73 20 65 6e 64 5d 7d 5d 0a  dex $res end]}].
18b90 09 09 7d 0a 09 09 69 66 20 7b 20 24 73 75 6d 20  ..}...if { $sum 
18ba0 3e 20 24 69 64 78 20 7d 20 7b 20 73 65 74 20 6f  > $idx } { set o
18bb0 70 74 69 6f 6e 73 28 24 69 29 20 24 72 65 73 20  ptions($i) $res 
18bc0 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 67 72 69  }..    }..}..gri
18bd0 64 20 72 65 6d 6f 76 65 20 24 66 2e 70 77 0a 09  d remove $f.pw..
18be0 67 72 69 64 20 24 66 75 6c 6c 74 65 78 74 20 2d  grid $fulltext -
18bf0 69 6e 20 24 66 20 2d 73 74 69 63 6b 79 20 6e 73  in $f -sticky ns
18c00 65 77 0a 0a 09 67 72 69 64 20 72 6f 77 63 6f 6e  ew...grid rowcon
18c10 66 20 24 66 20 30 20 2d 77 65 69 67 68 74 20 31  f $f 0 -weight 1
18c20 0a 09 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e  ..grid columncon
18c30 66 20 24 66 20 30 20 2d 77 65 69 67 68 74 20 31  f $f 0 -weight 1
18c40 0a 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68  ...if { [lsearch
18c50 20 5b 24 66 2e 70 77 20 70 61 6e 65 73 5d 20 24   [$f.pw panes] $
18c60 70 61 6e 65 31 5d 20 21 3d 20 2d 31 20 7d 20 7b  pane1] != -1 } {
18c70 0a 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31  ..    set wpane1
18c80 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70   [winfo width $p
18c90 61 6e 65 31 5d 0a 09 20 20 20 20 73 65 74 20 78  ane1]..    set x
18ca0 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 78   [expr {[winfo x
18cb0 20 24 74 5d 2b 24 77 70 61 6e 65 31 2b 24 64 65   $t]+$wpane1+$de
18cc0 6c 74 61 7d 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a  lta}]..} else {.
18cd0 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31 20  .    set wpane1 
18ce0 30 0a 09 20 20 20 20 73 65 74 20 78 20 5b 77 69  0..    set x [wi
18cf0 6e 66 6f 20 78 20 24 74 5d 0a 09 7d 0a 09 69 66  nfo x $t]..}..if
18d00 20 7b 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73 69   { !$view_all_si
18d10 6d 70 6c 65 20 7d 20 7b 0a 09 20 20 20 20 63 75  mple } {..    cu
18d20 3a 3a 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f  ::set_window_geo
18d30 6d 65 74 72 79 20 24 74 20 5b 77 69 6e 66 6f 20  metry $t [winfo 
18d40 77 69 64 74 68 20 24 66 75 6c 6c 74 65 78 74 5d  width $fulltext]
18d50 78 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24  x[winfo height $
18d60 74 5d 2b 24 78 2b 5b 77 69 6e 66 6f 20 79 20 24  t]+$x+[winfo y $
18d70 74 5d 0a 09 7d 0a 09 73 65 74 20 6f 70 74 69 6f  t]..}..set optio
18d80 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f  ns(ViewOnlyTextO
18d90 72 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a 20  rAll) OnlyText. 
18da0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74     } else {..set
18db0 20 77 69 64 74 68 20 5b 77 69 6e 66 6f 20 77 69   width [winfo wi
18dc0 64 74 68 20 24 66 75 6c 6c 74 65 78 74 5d 0a 09  dth $fulltext]..
18dd0 0a 09 67 72 69 64 20 24 66 2e 70 77 0a 09 67 72  ..grid $f.pw..gr
18de0 69 64 20 24 66 75 6c 6c 74 65 78 74 20 2d 69 6e  id $fulltext -in
18df0 20 24 70 61 6e 65 32 69 6e 31 20 2d 73 74 69 63   $pane2in1 -stic
18e00 6b 79 20 6e 73 65 77 0a 09 0a 09 73 65 74 20 77  ky nsew....set w
18e10 70 61 6e 65 33 20 5b 77 69 6e 66 6f 20 77 69 64  pane3 [winfo wid
18e20 74 68 20 24 70 61 6e 65 33 5d 0a 09 69 66 20 7b  th $pane3]..if {
18e30 20 24 77 70 61 6e 65 33 20 3c 3d 20 31 20 7d 20   $wpane3 <= 1 } 
18e40 7b 0a 09 20 20 20 20 73 65 74 20 77 70 61 6e 65  {..    set wpane
18e50 33 20 5b 77 69 6e 66 6f 20 72 65 71 77 69 64 74  3 [winfo reqwidt
18e60 68 20 24 70 61 6e 65 33 5d 0a 09 7d 0a 09 69 6e  h $pane3]..}..in
18e70 63 72 20 77 69 64 74 68 20 24 77 70 61 6e 65 33  cr width $wpane3
18e80 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20  ..if { [lsearch 
18e90 5b 24 66 2e 70 77 20 70 61 6e 65 73 5d 20 24 70  [$f.pw panes] $p
18ea0 61 6e 65 31 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a  ane1] != -1 } {.
18eb0 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31 20  .    set wpane1 
18ec0 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70 61  [winfo width $pa
18ed0 6e 65 31 5d 0a 09 20 20 20 20 69 66 20 7b 20 24  ne1]..    if { $
18ee0 77 70 61 6e 65 31 20 3c 3d 20 31 20 7d 20 7b 0a  wpane1 <= 1 } {.
18ef0 09 09 73 65 74 20 77 70 61 6e 65 31 20 5b 77 69  ..set wpane1 [wi
18f00 6e 66 6f 20 72 65 71 77 69 64 74 68 20 24 70 61  nfo reqwidth $pa
18f10 6e 65 31 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20  ne1]..    }..   
18f20 20 69 6e 63 72 20 77 69 64 74 68 20 24 77 70 61   incr width $wpa
18f30 6e 65 31 0a 09 20 20 20 20 69 6e 63 72 20 77 69  ne1..    incr wi
18f40 64 74 68 20 24 64 65 6c 74 61 0a 09 20 20 20 20  dth $delta..    
18f50 73 65 74 20 78 20 5b 65 78 70 72 20 7b 5b 77 69  set x [expr {[wi
18f60 6e 66 6f 20 78 20 24 74 5d 2d 24 64 65 6c 74 61  nfo x $t]-$delta
18f70 2d 24 77 70 61 6e 65 31 7d 5d 0a 09 7d 20 65 6c  -$wpane1}]..} el
18f80 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 77 70  se {..    set wp
18f90 61 6e 65 31 20 30 0a 09 20 20 20 20 73 65 74 20  ane1 0..    set 
18fa0 78 20 5b 77 69 6e 66 6f 20 78 20 24 74 5d 0a 09  x [winfo x $t]..
18fb0 7d 0a 09 0a 09 69 6e 63 72 20 77 69 64 74 68 20  }....incr width 
18fc0 5b 65 78 70 72 20 7b 24 64 65 6c 74 61 2b 24 64  [expr {$delta+$d
18fd0 65 6c 74 61 5f 65 78 74 7d 5d 0a 09 69 66 20 7b  elta_ext}]..if {
18fe0 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73 69 6d 70   !$view_all_simp
18ff0 6c 65 20 7d 20 7b 0a 09 20 20 20 20 63 75 3a 3a  le } {..    cu::
19000 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65  set_window_geome
19010 74 72 79 20 24 74 20 24 7b 77 69 64 74 68 7d 78  try $t ${width}x
19020 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 74  [winfo height $t
19030 5d 2b 24 78 2b 5b 77 69 6e 66 6f 20 79 20 24 74  ]+$x+[winfo y $t
19040 5d 0a 09 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e  ]..}..set option
19050 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72  s(ViewOnlyTextOr
19060 41 6c 6c 29 20 41 6c 6c 0a 20 20 20 20 7d 0a 20  All) All.    }. 
19070 20 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d     set geomkey m
19080 61 69 6e 67 65 6f 6d 65 74 72 79 5f 24 6f 70 74  aingeometry_$opt
19090 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78  ions(ViewOnlyTex
190a0 74 4f 72 41 6c 6c 29 0a 20 20 20 20 69 66 20 7b  tOrAll).    if {
190b0 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70   [info exists op
190c0 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 5d  tions($geomkey)]
190d0 20 26 26 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73   && !$view_all_s
190e0 69 6d 70 6c 65 20 7d 20 7b 0a 09 69 66 20 7b 20  imple } {..if { 
190f0 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65  $options($geomke
19100 79 29 20 65 71 20 22 7a 6f 6f 6d 65 64 22 20 7d  y) eq "zoomed" }
19110 20 7b 0a 09 20 20 20 20 63 75 3a 3a 73 65 74 5f   {..    cu::set_
19120 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 20  window_geometry 
19130 24 77 20 38 30 30 78 36 30 30 2b 30 2b 30 0a 09  $w 800x600+0+0..
19140 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f      if { $::tcl_
19150 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72  platform(platfor
19160 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20  m) eq "windows" 
19170 7d 20 7b 0a 09 09 77 6d 20 73 74 61 74 65 20 24  } {...wm state $
19180 77 20 7a 6f 6f 6d 65 64 0a 09 20 20 20 20 7d 20  w zoomed..    } 
19190 65 6c 73 65 20 7b 0a 09 09 63 61 74 63 68 20 7b  else {...catch {
191a0 20 77 6d 20 61 74 74 72 69 62 75 74 65 73 20 24   wm attributes $
191b0 77 20 2d 7a 6f 6f 6d 65 64 20 31 20 7d 0a 09 20  w -zoomed 1 }.. 
191c0 20 20 20 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09     }..} else {..
191d0 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 79 20      wm geometry 
191e0 24 77 20 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f  $w $options($geo
191f0 6d 6b 65 79 29 0a 09 20 20 20 20 69 66 20 7b 20  mkey)..    if { 
19200 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
19210 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69  platform) eq "wi
19220 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 09 77 6d 20  ndows" } {...wm 
19230 73 74 61 74 65 20 24 77 20 6e 6f 72 6d 61 6c 0a  state $w normal.
19240 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
19250 63 61 74 63 68 20 7b 20 77 6d 20 61 74 74 72 69  catch { wm attri
19260 62 75 74 65 73 20 24 77 20 2d 7a 6f 6f 6d 65 64  butes $w -zoomed
19270 20 30 20 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20   0 }..    }..}. 
19280 20 20 20 7d 0a 23 20 20 20 20 20 69 66 20 7b 20     }.#     if { 
19290 5b 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c  [[winfo toplevel
192a0 20 24 74 5d 20 63 67 65 74 20 2d 75 73 65 5d 20   $t] cget -use] 
192b0 3d 3d 20 22 22 20 7d 20 7b 0a 23 20 20 20 20 20  == "" } {.#     
192c0 20 20 20 20 77 6d 20 77 69 74 68 64 72 61 77 20      wm withdraw 
192d0 24 74 0a 23 20 20 20 20 20 20 20 20 20 75 70 64  $t.#         upd
192e0 61 74 65 0a 23 20 20 20 20 20 20 20 20 20 61 66  ate.#         af
192f0 74 65 72 20 30 20 77 6d 20 64 65 69 63 6f 6e 69  ter 0 wm deiconi
19300 66 79 20 24 74 0a 23 20 20 20 20 20 20 20 20 20  fy $t.#         
19310 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
19320 73 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b  s options($geomk
19330 65 79 29 5d 20 26 26 20 24 6f 70 74 69 6f 6e 73  ey)] && $options
19340 28 24 67 65 6f 6d 6b 65 79 29 20 3d 3d 20 22 7a  ($geomkey) == "z
19350 6f 6f 6d 65 64 22 20 7d 20 7b 0a 23 20 20 20 20  oomed" } {.#    
19360 20 20 20 20 20 20 20 20 20 77 6d 20 73 74 61 74           wm stat
19370 65 20 24 77 20 7a 6f 6f 6d 65 64 0a 23 20 20 20  e $w zoomed.#   
19380 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 7d 0a        }.#     }.
19390 7d 0a 0a 23 6f 70 74 69 6f 6e 20 61 64 64 20 2a  }..#option add *
193a0 50 61 6e 65 64 77 69 6e 64 6f 77 2e 53 74 72 65  Panedwindow.Stre
193b0 74 63 68 20 61 6c 77 61 79 73 0a 0a 70 72 6f 63  tch always..proc
193c0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65   RamDebugger::Re
193d0 73 69 7a 65 50 61 6e 65 64 57 69 6e 64 6f 77 20  sizePanedWindow 
193e0 7b 20 77 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  { w } {.    vari
193f0 61 62 6c 65 20 72 65 73 69 7a 65 5f 70 61 6e 65  able resize_pane
19400 64 77 69 6e 64 6f 77 5f 69 64 0a 20 20 20 20 69  dwindow_id.    i
19410 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73  f { [info exists
19420 20 72 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e   resize_panedwin
19430 64 6f 77 5f 69 64 5d 20 7d 20 7b 0a 09 61 66 74  dow_id] } {..aft
19440 65 72 20 63 61 6e 63 65 6c 20 24 72 65 73 69 7a  er cancel $resiz
19450 65 5f 70 61 6e 65 64 77 69 6e 64 6f 77 5f 69 64  e_panedwindow_id
19460 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 72  .    }.    set r
19470 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e 64 6f  esize_panedwindo
19480 77 5f 69 64 20 5b 61 66 74 65 72 20 69 64 6c 65  w_id [after idle
19490 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 61   \..    [list Ra
194a0 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 73 69 7a  mDebugger::Resiz
194b0 65 50 61 6e 65 64 57 69 6e 64 6f 77 44 6f 20 24  ePanedWindowDo $
194c0 77 5d 5d 0a 7d 0a 70 72 6f 63 20 52 61 6d 44 65  w]].}.proc RamDe
194d0 62 75 67 67 65 72 3a 3a 52 65 73 69 7a 65 50 61  bugger::ResizePa
194e0 6e 65 64 57 69 6e 64 6f 77 44 6f 20 7b 20 77 20  nedWindowDo { w 
194f0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
19500 20 72 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e   resize_panedwin
19510 64 6f 77 5f 69 64 0a 0a 20 20 20 20 75 6e 73 65  dow_id..    unse
19520 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65  t -nocomplain re
19530 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e 64 6f 77  size_panedwindow
19540 5f 69 64 0a 0a 20 20 20 20 73 77 69 74 63 68 20  _id..    switch 
19550 5b 24 77 20 63 67 65 74 20 2d 6f 72 69 65 6e 74  [$w cget -orient
19560 5d 20 7b 0a 09 68 6f 72 69 7a 6f 6e 74 61 6c 20  ] {..horizontal 
19570 7b 20 73 65 74 20 4c 45 4e 20 77 69 64 74 68 20  { set LEN width 
19580 7d 0a 09 76 65 72 74 69 63 61 6c 20 7b 20 73 65  }..vertical { se
19590 74 20 4c 45 4e 20 68 65 69 67 68 74 20 7d 0a 20  t LEN height }. 
195a0 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6c 65 6e     }.    set len
195b0 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69   0.    foreach i
195c0 20 5b 24 77 20 70 61 6e 65 73 5d 20 7b 0a 09 69   [$w panes] {..i
195d0 66 20 7b 20 5b 24 77 20 70 61 6e 65 63 67 65 74  f { [$w panecget
195e0 20 24 69 20 2d 24 4c 45 4e 5d 20 6e 65 20 22 22   $i -$LEN] ne ""
195f0 20 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 20 6c   } {..    incr l
19600 65 6e 20 5b 24 77 20 70 61 6e 65 63 67 65 74 20  en [$w panecget 
19610 24 69 20 2d 24 4c 45 4e 5d 0a 09 7d 20 65 6c 73  $i -$LEN]..} els
19620 65 20 7b 20 69 6e 63 72 20 6c 65 6e 20 5b 77 69  e { incr len [wi
19630 6e 66 6f 20 72 65 71 24 4c 45 4e 20 24 69 5d 20  nfo req$LEN $i] 
19640 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
19650 64 65 6c 74 61 20 5b 65 78 70 72 20 7b 5b 77 69  delta [expr {[wi
19660 6e 66 6f 20 24 4c 45 4e 20 24 77 5d 2d 24 6c 65  nfo $LEN $w]-$le
19670 6e 7d 5d 0a 0a 20 20 20 20 73 65 74 20 73 70 61  n}]..    set spa
19680 64 20 5b 24 77 20 63 67 65 74 20 2d 73 61 73 68  d [$w cget -sash
19690 70 61 64 5d 0a 20 20 20 20 73 65 74 20 73 77 69  pad].    set swi
196a0 64 74 68 20 5b 24 77 20 63 67 65 74 20 2d 73 61  dth [$w cget -sa
196b0 73 68 77 69 64 74 68 5d 0a 20 20 20 20 73 65 74  shwidth].    set
196c0 20 74 6c 65 6e 20 30 0a 20 20 20 20 66 6f 72 20   tlen 0.    for 
196d0 7b 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24 69  { set i 0 } { $i
196e0 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 5b 24 77 20   < [llength [$w 
196f0 70 61 6e 65 73 5d 5d 20 7d 20 7b 20 69 6e 63 72  panes]] } { incr
19700 20 69 20 7d 20 7b 0a 09 73 65 74 20 70 61 6e 65   i } {..set pane
19710 20 5b 6c 69 6e 64 65 78 20 5b 24 77 20 70 61 6e   [lindex [$w pan
19720 65 73 5d 20 24 69 5d 0a 09 69 66 20 7b 20 5b 24  es] $i]..if { [$
19730 77 20 70 61 6e 65 63 67 65 74 20 24 70 61 6e 65  w panecget $pane
19740 20 2d 24 4c 45 4e 5d 20 6e 65 20 22 22 20 7d 20   -$LEN] ne "" } 
19750 7b 0a 09 20 20 20 20 73 65 74 20 6c 20 5b 24 77  {..    set l [$w
19760 20 70 61 6e 65 63 67 65 74 20 24 70 61 6e 65 20   panecget $pane 
19770 2d 24 4c 45 4e 5d 0a 09 7d 20 65 6c 73 65 20 7b  -$LEN]..} else {
19780 20 73 65 74 20 6c 20 5b 77 69 6e 66 6f 20 72 65   set l [winfo re
19790 71 24 4c 45 4e 20 24 70 61 6e 65 5d 20 7d 0a 09  q$LEN $pane] }..
197a0 69 6e 63 72 20 74 6c 65 6e 20 5b 65 78 70 72 20  incr tlen [expr 
197b0 7b 24 6c 2b 24 73 70 61 64 2b 69 6e 74 28 24 64  {$l+$spad+int($d
197c0 65 6c 74 61 2a 24 6c 2f 24 6c 65 6e 2b 2e 35 29  elta*$l/$len+.5)
197d0 7d 5d 0a 09 69 66 20 7b 20 24 69 20 3c 20 5b 6c  }]..if { $i < [l
197e0 6c 65 6e 67 74 68 20 5b 24 77 20 70 61 6e 65 73  length [$w panes
197f0 5d 5d 2d 31 20 7d 20 7b 0a 09 20 20 20 20 24 77  ]]-1 } {..    $w
19800 20 73 61 73 68 20 70 6c 61 63 65 20 24 69 20 24   sash place $i $
19810 74 6c 65 6e 20 24 74 6c 65 6e 0a 09 7d 0a 09 69  tlen $tlen..}..i
19820 6e 63 72 20 74 6c 65 6e 20 5b 65 78 70 72 20 7b  ncr tlen [expr {
19830 24 73 77 69 64 74 68 2b 24 73 70 61 64 7d 5d 0a  $swidth+$spad}].
19840 20 20 20 20 7d 0a 7d 0a 0a 23 20 6f 72 69 65 6e      }.}..# orien
19850 74 20 6d 75 73 74 20 62 65 3a 20 68 20 6f 72 20  t must be: h or 
19860 76 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67  v.proc RamDebugg
19870 65 72 3a 3a 4d 61 6e 61 67 65 50 61 6e 65 73 20  er::ManagePanes 
19880 7b 20 70 61 6e 65 64 77 20 6f 72 69 65 6e 74 20  { panedw orient 
19890 64 65 66 61 75 6c 74 20 7d 20 7b 0a 20 20 20 20  default } {.    
198a0 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73  variable options
198b0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70  .    variable op
198c0 74 69 6f 6e 73 69 6e 69 74 69 61 6c 0a 0a 20 20  tionsinitial..  
198d0 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 69 6e 69    set optionsini
198e0 74 69 61 6c 28 24 6f 72 69 65 6e 74 2c 24 70 61  tial($orient,$pa
198f0 6e 65 64 77 29 20 24 64 65 66 61 75 6c 74 0a 0a  nedw) $default..
19900 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65      if { [info e
19910 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 70 61  xists options(pa
19920 6e 65 77 65 69 67 68 74 73 2c 24 6f 72 69 65 6e  neweights,$orien
19930 74 2c 24 70 61 6e 65 64 77 29 5d 20 26 26 20 5c  t,$panedw)] && \
19940 0a 09 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 28  ..     $options(
19950 70 61 6e 65 77 65 69 67 68 74 73 2c 24 6f 72 69  paneweights,$ori
19960 65 6e 74 2c 24 70 61 6e 65 64 77 29 20 21 3d 20  ent,$panedw) != 
19970 22 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 74 20  "" } {..set ret 
19980 24 6f 70 74 69 6f 6e 73 28 70 61 6e 65 77 65 69  $options(panewei
19990 67 68 74 73 2c 24 6f 72 69 65 6e 74 2c 24 70 61  ghts,$orient,$pa
199a0 6e 65 64 77 29 0a 20 20 20 20 7d 20 65 6c 73 65  nedw).    } else
199b0 20 7b 0a 09 73 65 74 20 72 65 74 20 5b 73 65 74   {..set ret [set
199c0 20 6f 70 74 69 6f 6e 73 28 70 61 6e 65 77 65 69   options(panewei
199d0 67 68 74 73 2c 24 6f 72 69 65 6e 74 2c 24 70 61  ghts,$orient,$pa
199e0 6e 65 64 77 29 20 24 64 65 66 61 75 6c 74 5d 0a  nedw) $default].
199f0 20 20 20 20 7d 0a 23 20 20 20 20 20 73 65 74 20      }.#     set 
19a00 6e 65 77 72 65 74 20 22 22 0a 23 20 20 20 20 20  newret "".#     
19a10 66 6f 72 65 61 63 68 20 69 20 24 72 65 74 20 7b  foreach i $ret {
19a20 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 7b 20  .#         if { 
19a30 24 69 20 3d 3d 20 31 20 7d 20 7b 0a 23 20 20 20  $i == 1 } {.#   
19a40 20 20 20 20 20 20 20 20 20 20 73 65 74 20 69 20            set i 
19a50 32 30 0a 23 20 20 20 20 20 20 20 20 20 7d 0a 23  20.#         }.#
19a60 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64           lappend
19a70 20 6e 65 77 72 65 74 20 24 69 0a 23 20 20 20 20   newret $i.#    
19a80 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 24 72   }.    return $r
19a90 65 74 0a 20 20 20 20 0a 7d 0a 0a 70 72 6f 63 20  et.    .}..proc 
19aa0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 78 69  RamDebugger::Exi
19ab0 74 47 55 49 20 7b 7d 20 7b 0a 20 20 20 20 76 61  tGUI {} {.    va
19ac0 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20  riable options. 
19ad0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
19ae0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65  .    variable re
19af0 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 76  moteserver.    v
19b00 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65  ariable remotese
19b10 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72  rverType.    var
19b20 69 61 62 6c 65 20 45 76 61 6c 45 6e 74 72 69 65  iable EvalEntrie
19b30 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  s.    variable c
19b40 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76  urrentfile.    v
19b50 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 6c  ariable currentl
19b60 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ine.    variable
19b70 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20   breakpoints.   
19b80 20 76 61 72 69 61 62 6c 65 20 54 69 6d 65 4d 65   variable TimeMe
19b90 61 73 75 72 65 44 61 74 61 0a 20 20 20 20 76 61  asureData.    va
19ba0 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 73  riable debuggers
19bb0 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62 6c  tate.    variabl
19bc0 65 20 72 65 61 64 77 72 69 74 65 70 72 65 66 73  e readwriteprefs
19bd0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 53 65  .    variable Se
19be0 61 72 63 68 54 6f 6f 6c 62 61 72 0a 0a 20 20 20  archToolbar..   
19bf0 20 69 66 20 7b 20 5b 53 61 76 65 46 69 6c 65 20   if { [SaveFile 
19c00 61 73 6b 5d 20 3d 3d 20 2d 31 20 7d 20 7b 20 72  ask] == -1 } { r
19c10 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 69 66 20  eturn }..    if 
19c20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20  { $remoteserver 
19c30 21 3d 20 22 22 20 26 26 20 24 72 65 6d 6f 74 65  != "" && $remote
19c40 73 65 72 76 65 72 54 79 70 65 20 21 3d 20 22 6d  serverType != "m
19c50 61 73 74 65 72 22 20 7d 20 7b 0a 09 72 64 65 62  aster" } {..rdeb
19c60 75 67 20 2d 64 69 73 63 6f 6e 6e 65 63 74 0a 20  ug -disconnect. 
19c70 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70     }..    set op
19c80 74 69 6f 6e 73 28 4e 6f 72 6d 61 6c 46 6f 6e 74  tions(NormalFont
19c90 29 20 5b 66 6f 6e 74 20 63 6f 6e 66 69 67 75 72  ) [font configur
19ca0 65 20 4e 6f 72 6d 61 6c 46 6f 6e 74 5d 0a 20 20  e NormalFont].  
19cb0 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 46 69    set options(Fi
19cc0 78 65 64 46 6f 6e 74 29 20 5b 66 6f 6e 74 20 63  xedFont) [font c
19cd0 6f 6e 66 69 67 75 72 65 20 46 69 78 65 64 46 6f  onfigure FixedFo
19ce0 6e 74 5d 0a 20 20 20 20 73 65 74 20 6f 70 74 69  nt].    set opti
19cf0 6f 6e 73 28 48 65 6c 70 46 6f 6e 74 29 20 5b 66  ons(HelpFont) [f
19d00 6f 6e 74 20 63 6f 6e 66 69 67 75 72 65 20 48 65  ont configure He
19d10 6c 70 46 6f 6e 74 5d 0a 0a 20 20 20 20 69 66 20  lpFont]..    if 
19d20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 72  { [info exists r
19d30 65 6d 6f 74 65 73 65 72 76 65 72 5d 20 26 26 20  emoteserver] && 
19d40 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 6d 61  [string match ma
19d50 73 74 65 72 2a 20 24 72 65 6d 6f 74 65 73 65 72  ster* $remoteser
19d60 76 65 72 5d 20 7d 20 7b 0a 09 73 65 74 20 6f 70  ver] } {..set op
19d70 74 69 6f 6e 73 28 6d 61 73 74 65 72 5f 74 79 70  tions(master_typ
19d80 65 29 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72  e) $remoteserver
19d90 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b  .    }..    if {
19da0 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 53 65   [info exists Se
19db0 61 72 63 68 54 6f 6f 6c 62 61 72 5d 20 7d 20 7b  archToolbar] } {
19dc0 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 53 65  ..set options(Se
19dd0 61 72 63 68 54 6f 6f 6c 62 61 72 29 20 24 53 65  archToolbar) $Se
19de0 61 72 63 68 54 6f 6f 6c 62 61 72 0a 20 20 20 20  archToolbar.    
19df0 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f  }..    set optio
19e00 6e 73 28 64 65 62 75 67 67 65 72 73 74 61 74 65  ns(debuggerstate
19e10 29 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65  ) $debuggerstate
19e20 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e  ..    set option
19e30 73 28 77 61 74 63 68 65 64 76 61 72 73 29 20 22  s(watchedvars) "
19e40 22 0a 20 20 20 20 73 65 74 20 69 20 30 0a 20 20  ".    set i 0.  
19e50 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 69 66 20    while 1 {..if 
19e60 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
19e70 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c  EvalEntries($i,l
19e80 65 66 74 29 5d 20 7d 20 7b 20 62 72 65 61 6b 20  eft)] } { break 
19e90 7d 0a 09 6c 61 70 70 65 6e 64 20 6f 70 74 69 6f  }..lappend optio
19ea0 6e 73 28 77 61 74 63 68 65 64 76 61 72 73 29 20  ns(watchedvars) 
19eb0 24 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c  $EvalEntries($i,
19ec0 6c 65 66 74 29 0a 09 69 6e 63 72 20 69 0a 20 20  left)..incr i.  
19ed0 20 20 7d 0a 23 20 20 20 20 20 69 66 20 7b 20 21    }.#     if { !
19ee0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74  [info exists opt
19ef0 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78  ions(ViewOnlyTex
19f00 74 4f 72 41 6c 6c 29 5d 20 7c 7c 20 24 6f 70 74  tOrAll)] || $opt
19f10 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78  ions(ViewOnlyTex
19f20 74 4f 72 41 6c 6c 29 20 21 3d 20 22 4f 6e 6c 79  tOrAll) != "Only
19f30 54 65 78 74 22 20 7d 20 7b 0a 23 20 20 20 20 20  Text" } {.#     
19f40 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61      foreach i [a
19f50 72 72 61 79 20 6e 61 6d 65 73 20 6f 70 74 69 6f  rray names optio
19f60 6e 73 20 70 61 6e 65 77 65 69 67 68 74 73 2c 2a  ns paneweights,*
19f70 5d 20 7b 0a 23 20 20 20 20 20 20 20 20 20 20 20  ] {.#           
19f80 20 20 72 65 67 65 78 70 20 7b 70 61 6e 65 77 65    regexp {panewe
19f90 69 67 68 74 73 2c 28 2e 2a 29 2c 28 2e 2a 29 7d  ights,(.*),(.*)}
19fa0 20 24 69 20 7b 7d 20 6f 72 69 65 6e 74 20 70 61   $i {} orient pa
19fb0 6e 65 64 77 0a 23 20 20 20 20 20 20 20 20 20 20  nedw.#          
19fc0 20 20 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65     if { [winfo e
19fd0 78 69 73 74 73 20 24 70 61 6e 65 64 77 5d 20 7d  xists $panedw] }
19fe0 20 7b 0a 23 20 20 20 20 20 20 20 20 20 20 20 20   {.#            
19ff0 20 20 20 20 20 73 65 74 20 69 64 78 20 30 0a 23       set idx 0.#
1a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a010 20 73 65 74 20 73 75 6d 20 30 0a 23 20 20 20 20   set sum 0.#    
1a020 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1a030 20 72 65 73 20 22 22 0a 23 20 20 20 20 20 20 20   res "".#       
1a040 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
1a050 68 20 70 61 6e 65 20 5b 24 70 61 6e 65 64 77 20  h pane [$panedw 
1a060 70 61 6e 65 73 5d 20 7b 0a 23 20 20 20 20 20 20  panes] {.#      
1a070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1a080 77 69 74 63 68 20 24 6f 72 69 65 6e 74 20 7b 0a  witch $orient {.
1a090 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
1a0a0 20 20 20 20 20 20 20 20 20 20 68 20 7b 20 6c 61            h { la
1a0b0 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e 66 6f  ppend res [winfo
1a0c0 20 77 69 64 74 68 20 24 70 61 6e 65 5d 20 7d 0a   width $pane] }.
1a0d0 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
1a0e0 20 20 20 20 20 20 20 20 20 20 76 20 7b 20 6c 61            v { la
1a0f0 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e 66 6f  ppend res [winfo
1a100 20 68 65 69 67 68 74 20 24 70 61 6e 65 5d 20 7d   height $pane] }
1a110 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .#              
1a120 20 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20         }.#      
1a130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a140 6e 63 72 20 69 64 78 0a 23 20 20 20 20 20 20 20  ncr idx.#       
1a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
1a160 74 20 73 75 6d 20 5b 65 78 70 72 20 7b 24 73 75  t sum [expr {$su
1a170 6d 2b 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 65  m+[lindex $res e
1a180 6e 64 5d 7d 5d 0a 23 20 20 20 20 20 20 20 20 20  nd]}].#         
1a190 20 20 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20          }.#     
1a1a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b              if {
1a1b0 20 24 73 75 6d 20 3e 20 24 69 64 78 20 7d 20 7b   $sum > $idx } {
1a1c0 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 24 69 29   set options($i)
1a1d0 20 24 72 65 73 20 7d 0a 23 20 20 20 20 20 20 20   $res }.#       
1a1e0 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20        }.#       
1a1f0 20 20 7d 0a 23 20 20 20 20 20 7d 0a 20 20 20 20    }.#     }.    
1a200 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79  foreach i [array
1a210 20 6e 61 6d 65 73 20 6f 70 74 69 6f 6e 73 20 70   names options p
1a220 61 6e 65 77 65 69 67 68 74 73 2c 2a 5d 20 7b 0a  aneweights,*] {.
1a230 09 72 65 67 65 78 70 20 7b 70 61 6e 65 77 65 69  .regexp {panewei
1a240 67 68 74 73 2c 28 2e 2a 29 2c 28 2e 2a 29 7d 20  ghts,(.*),(.*)} 
1a250 24 69 20 7b 7d 20 6f 72 69 65 6e 74 20 70 61 6e  $i {} orient pan
1a260 65 64 77 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f  edw..if { [winfo
1a270 20 65 78 69 73 74 73 20 24 70 61 6e 65 64 77 5d   exists $panedw]
1a280 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64   } {..    set id
1a290 78 20 30 0a 09 20 20 20 20 73 65 74 20 73 75 6d  x 0..    set sum
1a2a0 20 30 0a 09 20 20 20 20 73 65 74 20 72 65 73 20   0..    set res 
1a2b0 22 22 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20  ""..    foreach 
1a2c0 70 61 6e 65 20 5b 24 70 61 6e 65 64 77 20 70 61  pane [$panedw pa
1a2d0 6e 65 73 5d 20 7b 0a 09 09 73 77 69 74 63 68 20  nes] {...switch 
1a2e0 24 6f 72 69 65 6e 74 20 7b 0a 09 09 20 20 20 20  $orient {...    
1a2f0 68 20 7b 20 6c 61 70 70 65 6e 64 20 72 65 73 20  h { lappend res 
1a300 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70 61  [winfo width $pa
1a310 6e 65 5d 20 7d 0a 09 09 20 20 20 20 76 20 7b 20  ne] }...    v { 
1a320 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e  lappend res [win
1a330 66 6f 20 68 65 69 67 68 74 20 24 70 61 6e 65 5d  fo height $pane]
1a340 20 7d 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69 64   }...}...incr id
1a350 78 0a 09 09 73 65 74 20 73 75 6d 20 5b 65 78 70  x...set sum [exp
1a360 72 20 7b 24 73 75 6d 2b 5b 6c 69 6e 64 65 78 20  r {$sum+[lindex 
1a370 24 72 65 73 20 65 6e 64 5d 7d 5d 0a 09 20 20 20  $res end]}]..   
1a380 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 73 75   }..    if { $su
1a390 6d 20 3e 20 24 69 64 78 20 7d 20 7b 20 73 65 74  m > $idx } { set
1a3a0 20 6f 70 74 69 6f 6e 73 28 24 69 29 20 24 72 65   options($i) $re
1a3b0 73 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20  s }..}.    }..  
1a3c0 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 63 75    set options(cu
1a3d0 72 72 65 6e 74 66 69 6c 65 29 20 24 63 75 72 72  rrentfile) $curr
1a3e0 65 6e 74 66 69 6c 65 0a 20 20 20 20 73 65 74 20  entfile.    set 
1a3f0 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 69  options(currenti
1a400 64 78 29 20 5b 24 74 65 78 74 20 69 6e 64 65 78  dx) [$text index
1a410 20 69 6e 73 65 72 74 5d 0a 0a 20 20 20 20 73 65   insert]..    se
1a420 74 20 6f 70 74 69 6f 6e 73 28 62 72 65 61 6b 70  t options(breakp
1a430 6f 69 6e 74 73 29 20 22 22 0a 20 20 20 20 66 6f  oints) "".    fo
1a440 72 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f  reach i $breakpo
1a450 69 6e 74 73 20 7b 0a 09 73 65 74 20 66 69 6c 65  ints {..set file
1a460 20 5b 6c 69 6e 64 65 78 20 24 69 20 32 5d 0a 09   [lindex $i 2]..
1a470 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64  if { [string ind
1a480 65 78 20 24 66 69 6c 65 20 30 5d 20 21 3d 20 22  ex $file 0] != "
1a490 2a 22 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70  *" } {..    lapp
1a4a0 65 6e 64 20 6f 70 74 69 6f 6e 73 28 62 72 65 61  end options(brea
1a4b0 6b 70 6f 69 6e 74 73 29 20 24 69 0a 09 7d 0a 20  kpoints) $i..}. 
1a4c0 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6f 70 74     }.    set opt
1a4d0 69 6f 6e 73 28 54 69 6d 65 4d 65 61 73 75 72 65  ions(TimeMeasure
1a4e0 44 61 74 61 29 20 24 54 69 6d 65 4d 65 61 73 75  Data) $TimeMeasu
1a4f0 72 65 44 61 74 61 0a 20 20 20 20 73 65 74 20 6f  reData.    set o
1a500 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 73 65 72  ptions(remoteser
1a510 76 65 72 54 79 70 65 29 20 24 72 65 6d 6f 74 65  verType) $remote
1a520 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 73  serverType.    s
1a530 65 74 20 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74  et options(remot
1a540 65 73 65 72 76 65 72 29 20 24 72 65 6d 6f 74 65  eserver) $remote
1a550 73 65 72 76 65 72 0a 0a 20 20 20 20 73 65 74 20  server..    set 
1a560 67 65 6f 6d 6b 65 79 20 6d 61 69 6e 67 65 6f 6d  geomkey maingeom
1a570 65 74 72 79 5f 24 6f 70 74 69 6f 6e 73 28 56 69  etry_$options(Vi
1a580 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29  ewOnlyTextOrAll)
1a590 0a 20 20 20 20 73 65 74 20 77 20 20 5b 77 69 6e  .    set w  [win
1a5a0 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78  fo toplevel $tex
1a5b0 74 5d 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74  t].    if { $::t
1a5c0 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
1a5d0 66 6f 72 6d 29 20 65 71 20 22 77 69 6e 64 6f 77  form) eq "window
1a5e0 73 22 20 26 26 20 5b 77 6d 20 73 74 61 74 65 20  s" && [wm state 
1a5f0 24 77 5d 20 65 71 20 22 7a 6f 6f 6d 65 64 22 20  $w] eq "zoomed" 
1a600 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65 64 20  } {..set zoomed 
1a610 31 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  1.    } elseif {
1a620 20 21 5b 63 61 74 63 68 20 7b 20 77 6d 20 61 74   ![catch { wm at
1a630 74 72 69 62 75 74 65 73 20 24 77 20 2d 7a 6f 6f  tributes $w -zoo
1a640 6d 65 64 20 7d 20 72 65 74 5d 20 26 26 20 24 72  med } ret] && $r
1a650 65 74 20 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d  et } {..set zoom
1a660 65 64 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 20  ed 1.    } else 
1a670 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65 64 20 30 0a  {..set zoomed 0.
1a680 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24      }.    if { $
1a690 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09 73 65 74 20  zoomed } {..set 
1a6a0 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79  options($geomkey
1a6b0 29 20 7a 6f 6f 6d 65 64 0a 20 20 20 20 7d 20 65  ) zoomed.    } e
1a6c0 6c 73 65 20 7b 0a 09 72 65 67 65 78 70 20 7b 28  lse {..regexp {(
1a6d0 5c 64 2b 29 78 28 5c 64 2b 29 5c 2b 28 5b 2d 5c  \d+)x(\d+)\+([-\
1a6e0 64 5d 2b 29 5c 2b 28 5b 2d 5c 64 5d 2b 29 7d 20  d]+)\+([-\d]+)} 
1a6f0 5b 63 75 3a 3a 67 69 76 65 5f 77 69 6e 64 6f 77  [cu::give_window
1a700 5f 67 65 6f 6d 65 74 72 79 20 24 77 5d 20 5c 0a  _geometry $w] \.
1a710 09 20 20 20 20 7b 7d 20 77 69 64 74 68 20 68 65  .    {} width he
1a720 69 67 68 74 20 78 20 79 0a 09 69 66 20 7b 20 24  ight x y..if { $
1a730 78 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74 20  x < -20 } { set 
1a740 78 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24 79  x -20 }..if { $y
1a750 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74 20 79   < -20 } { set y
1a760 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24 78 20   -20 }..if { $x 
1a770 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77  > [winfo screenw
1a780 69 64 74 68 20 24 74 65 78 74 5d 2d 32 30 20 7d  idth $text]-20 }
1a790 20 7b 20 73 65 74 20 78 20 5b 65 78 70 72 20 7b   { set x [expr {
1a7a0 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 64  [winfo screenwid
1a7b0 74 68 20 24 74 65 78 74 5d 2d 32 30 7d 5d 20 7d  th $text]-20}] }
1a7c0 0a 09 69 66 20 7b 20 24 79 20 3e 20 5b 77 69 6e  ..if { $y > [win
1a7d0 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 20  fo screenheight 
1a7e0 24 74 65 78 74 5d 2d 32 30 20 7d 20 7b 20 73 65  $text]-20 } { se
1a7f0 74 20 79 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66  t y [expr {[winf
1a800 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 20 24  o screenheight $
1a810 74 65 78 74 5d 2d 32 30 7d 5d 20 7d 0a 09 73 65  text]-20}] }..se
1a820 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b  t options($geomk
1a830 65 79 29 20 24 7b 77 69 64 74 68 7d 78 24 68 65  ey) ${width}x$he
1a840 69 67 68 74 2b 24 78 2b 24 79 0a 20 20 20 20 7d  ight+$x+$y.    }
1a850 0a 0a 20 20 20 20 5f 73 65 63 6f 6e 64 74 65 78  ..    _secondtex
1a860 74 73 61 76 65 70 6f 73 0a 0a 20 20 20 20 69 66  tsavepos..    if
1a870 20 7b 20 24 72 65 61 64 77 72 69 74 65 70 72 65   { $readwritepre
1a880 66 73 20 65 71 20 22 79 65 73 22 20 7d 20 7b 0a  fs eq "yes" } {.
1a890 09 53 61 76 65 50 72 65 66 65 72 65 6e 63 65 73  .SavePreferences
1a8a0 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20   0.    }.    if 
1a8b0 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54  { $remoteserverT
1a8c0 79 70 65 20 3d 3d 20 22 6d 61 73 74 65 72 22 20  ype == "master" 
1a8d0 7d 20 7b 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20  } {..EvalRemote 
1a8e0 5b 6c 69 73 74 20 70 61 63 6b 61 67 65 20 66 6f  [list package fo
1a8f0 72 67 65 74 20 52 61 6d 44 65 62 75 67 67 65 72  rget RamDebugger
1a900 5d 0a 09 76 61 72 69 61 62 6c 65 20 62 72 65 61  ]..variable brea
1a910 6b 70 6f 69 6e 74 73 20 22 22 0a 09 55 70 64 61  kpoints ""..Upda
1a920 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 0a 09  teRemoteBreaks..
1a930 64 65 73 74 72 6f 79 20 5b 77 69 6e 66 6f 20 74  destroy [winfo t
1a940 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a 20  oplevel $text]. 
1a950 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 69     } elseif { [i
1a960 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 65 78 69  nfo commands exi
1a970 74 5f 66 69 6e 61 6c 5d 20 21 3d 20 22 22 20 7d  t_final] != "" }
1a980 20 7b 0a 09 65 78 69 74 5f 66 69 6e 61 6c 0a 20   {..exit_final. 
1a990 20 20 20 7d 20 65 6c 73 65 20 7b 20 65 78 69 74     } else { exit
1a9a0 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
1a9b0 62 75 67 67 65 72 3a 3a 52 65 61 64 50 72 65 66  bugger::ReadPref
1a9c0 65 72 65 6e 63 65 73 20 7b 7d 20 7b 0a 20 20 20  erences {} {.   
1a9d0 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e   variable option
1a9e0 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 41  s.    variable A
1a9f0 70 70 44 61 74 61 44 69 72 0a 20 20 20 20 76 61  ppDataDir.    va
1aa00 72 69 61 62 6c 65 20 69 73 77 69 6e 63 65 0a 20  riable iswince. 
1aa10 20 20 20 0a 20 20 20 20 63 61 74 63 68 20 7b 0a     .    catch {.
1aa20 09 69 66 20 7b 20 24 69 73 77 69 6e 63 65 20 7d  .if { $iswince }
1aa30 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6e 20   {..    set fin 
1aa40 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e  [open [file join
1aa50 20 24 41 70 70 44 61 74 61 44 69 72 20 72 61 6d   $AppDataDir ram
1aa60 64 65 62 75 67 67 65 72 5f 70 72 65 66 73 5d 20  debugger_prefs] 
1aa70 72 5d 0a 09 20 20 20 20 73 65 74 20 64 61 74 61  r]..    set data
1aa80 20 5b 72 65 61 64 20 24 66 69 6e 5d 0a 09 20 20   [read $fin]..  
1aa90 20 20 63 6c 6f 73 65 20 24 66 69 6e 0a 09 7d 20    close $fin..} 
1aaa0 65 6c 73 65 69 66 20 7b 20 24 3a 3a 74 63 6c 5f  elseif { $::tcl_
1aab0 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72  platform(platfor
1aac0 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22 20  m) == "windows" 
1aad0 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 64 61 74  } {..    set dat
1aae0 61 20 5b 72 65 67 69 73 74 72 79 20 67 65 74 20  a [registry get 
1aaf0 7b 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53  {HKEY_CURRENT_US
1ab00 45 52 5c 53 6f 66 74 77 61 72 65 5c 52 61 6d 44  ER\Software\RamD
1ab10 65 62 75 67 67 65 72 7d 20 49 6e 69 44 61 74 61  ebugger} IniData
1ab20 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20  ]..} else {..   
1ab30 20 73 65 74 20 66 69 6e 20 5b 6f 70 65 6e 20 7e   set fin [open ~
1ab40 2f 2e 72 61 6d 64 65 62 75 67 67 65 72 5f 70 72  /.ramdebugger_pr
1ab50 65 66 73 20 72 5d 0a 09 20 20 20 20 73 65 74 20  efs r]..    set 
1ab60 64 61 74 61 20 5b 72 65 61 64 20 24 66 69 6e 5d  data [read $fin]
1ab70 0a 09 20 20 20 20 63 6c 6f 73 65 20 24 66 69 6e  ..    close $fin
1ab80 0a 09 7d 0a 09 61 72 72 61 79 20 73 65 74 20 6f  ..}..array set o
1ab90 70 74 69 6f 6e 73 20 24 64 61 74 61 0a 20 20 20  ptions $data.   
1aba0 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
1abb0 62 75 67 67 65 72 3a 3a 53 61 76 65 50 72 65 66  bugger::SavePref
1abc0 65 72 65 6e 63 65 73 20 7b 20 7b 20 72 61 69 73  erences { { rais
1abd0 65 5f 65 72 72 6f 72 20 30 20 7d 20 7d 20 7b 0a  e_error 0 } } {.
1abe0 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74      variable opt
1abf0 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c  ions.    variabl
1ac00 65 20 41 70 70 44 61 74 61 44 69 72 0a 20 20 20  e AppDataDir.   
1ac10 20 76 61 72 69 61 62 6c 65 20 69 73 77 69 6e 63   variable iswinc
1ac20 65 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 65  e.    .    set e
1ac30 72 72 20 5b 63 61 74 63 68 20 7b 0a 09 20 20 20  rr [catch {..   
1ac40 20 69 66 20 7b 20 24 69 73 77 69 6e 63 65 20 7d   if { $iswince }
1ac50 20 7b 0a 09 09 73 65 74 20 66 6f 75 74 20 5b 6f   {...set fout [o
1ac60 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  pen [file join $
1ac70 41 70 70 44 61 74 61 44 69 72 20 72 61 6d 64 65  AppDataDir ramde
1ac80 62 75 67 67 65 72 5f 70 72 65 66 73 5d 20 77 5d  bugger_prefs] w]
1ac90 0a 09 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69  ...puts -nonewli
1aca0 6e 65 20 24 66 6f 75 74 20 5b 61 72 72 61 79 20  ne $fout [array 
1acb0 67 65 74 20 6f 70 74 69 6f 6e 73 5d 0a 09 09 63  get options]...c
1acc0 6c 6f 73 65 20 24 66 6f 75 74 0a 09 20 20 20 20  lose $fout..    
1acd0 7d 20 65 6c 73 65 69 66 20 7b 20 24 3a 3a 74 63  } elseif { $::tc
1ace0 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66  l_platform(platf
1acf0 6f 72 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73  orm) eq "windows
1ad00 22 20 7d 20 7b 0a 09 09 72 65 67 69 73 74 72 79  " } {...registry
1ad10 20 73 65 74 20 7b 48 4b 45 59 5f 43 55 52 52 45   set {HKEY_CURRE
1ad20 4e 54 5f 55 53 45 52 5c 53 6f 66 74 77 61 72 65  NT_USER\Software
1ad30 5c 52 61 6d 44 65 62 75 67 67 65 72 7d 20 49 6e  \RamDebugger} In
1ad40 69 44 61 74 61 20 5c 0a 09 09 20 20 20 20 5b 61  iData \...    [a
1ad50 72 72 61 79 20 67 65 74 20 6f 70 74 69 6f 6e 73  rray get options
1ad60 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ]..    } else {.
1ad70 09 09 73 65 74 20 66 6f 75 74 20 5b 6f 70 65 6e  ..set fout [open
1ad80 20 7e 2f 2e 72 61 6d 64 65 62 75 67 67 65 72 5f   ~/.ramdebugger_
1ad90 70 72 65 66 73 20 77 5d 0a 09 09 70 75 74 73 20  prefs w]...puts 
1ada0 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74  -nonewline $fout
1adb0 20 5b 61 72 72 61 79 20 67 65 74 20 6f 70 74 69   [array get opti
1adc0 6f 6e 73 5d 0a 09 09 63 6c 6f 73 65 20 24 66 6f  ons]...close $fo
1add0 75 74 0a 09 20 20 20 20 7d 0a 09 7d 20 65 72 72  ut..    }..} err
1ade0 73 74 72 69 6e 67 5d 0a 20 20 20 20 69 66 20 7b  string].    if {
1adf0 20 24 65 72 72 20 7d 20 7b 0a 09 69 66 20 7b 20   $err } {..if { 
1ae00 24 72 61 69 73 65 5f 65 72 72 6f 72 20 7d 20 7b  $raise_error } {
1ae10 0a 09 20 20 20 20 65 72 72 6f 72 20 24 65 72 72  ..    error $err
1ae20 73 74 72 69 6e 67 20 24 3a 3a 65 72 72 6f 72 49  string $::errorI
1ae30 6e 66 6f 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20  nfo..} else {.. 
1ae40 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 43     WarnWin [_ "C
1ae50 6f 75 6c 64 20 6e 6f 74 20 73 61 76 65 20 70 72  ould not save pr
1ae60 65 66 65 72 65 6e 63 65 73 3a 20 25 73 22 20 24  eferences: %s" $
1ae70 65 72 72 73 74 72 69 6e 67 5d 0a 09 7d 0a 20 20  errstring]..}.  
1ae80 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44    }.}..proc RamD
1ae90 65 62 75 67 67 65 72 3a 3a 53 65 74 50 72 65 66  ebugger::SetPref
1aea0 65 72 65 6e 63 65 20 7b 20 6e 61 6d 65 20 76 61  erence { name va
1aeb0 6c 75 65 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  lue } {.    vari
1aec0 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20  able options.   
1aed0 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 24 6e 61   set options($na
1aee0 6d 65 29 20 24 76 61 6c 75 65 0a 7d 0a 0a 70 72  me) $value.}..pr
1aef0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
1af00 47 65 74 50 72 65 66 65 72 65 6e 63 65 20 7b 20  GetPreference { 
1af10 6e 61 6d 65 20 7b 20 64 65 66 61 75 6c 74 20 22  name { default "
1af20 22 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  " } } {.    vari
1af30 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20  able options.   
1af40 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73   if { [info exis
1af50 74 73 20 6f 70 74 69 6f 6e 73 28 24 6e 61 6d 65  ts options($name
1af60 29 5d 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 24  )] } {..return $
1af70 6f 70 74 69 6f 6e 73 28 24 6e 61 6d 65 29 0a 20  options($name). 
1af80 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20     }.    return 
1af90 24 64 65 66 61 75 6c 74 0a 7d 0a 0a 70 72 6f 63  $default.}..proc
1afa0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 41 70   RamDebugger::Ap
1afb0 70 6c 79 43 6f 6c 6f 72 50 72 65 66 73 20 7b 20  plyColorPrefs { 
1afc0 74 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  t } {.    variab
1afd0 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 0a  le options.    .
1afe0 20 20 20 20 24 74 20 63 6f 6e 66 20 2d 66 6f 72      $t conf -for
1aff0 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73  eground $options
1b000 28 63 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f 75  (colors,foregrou
1b010 6e 64 29 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75  nd) \..-backgrou
1b020 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f  nd $options(colo
1b030 72 73 2c 62 61 63 6b 67 72 6f 75 6e 64 29 0a 20  rs,background). 
1b040 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 6d     $t tag conf m
1b050 61 67 65 6e 74 61 20 2d 66 6f 72 65 67 72 6f 75  agenta -foregrou
1b060 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f  nd $options(colo
1b070 72 73 2c 63 6f 6d 6d 61 6e 64 73 29 0a 20 20 20  rs,commands).   
1b080 20 24 74 20 74 61 67 20 63 6f 6e 66 20 6d 61 67   $t tag conf mag
1b090 65 6e 74 61 32 20 2d 66 6f 72 65 67 72 6f 75 6e  enta2 -foregroun
1b0a0 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72  d $options(color
1b0b0 73 2c 64 65 66 69 6e 65 73 29 0a 20 20 20 20 24  s,defines).    $
1b0c0 74 20 74 61 67 20 63 6f 6e 66 20 62 6c 75 65 20  t tag conf blue 
1b0d0 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74  -foreground $opt
1b0e0 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 70 72 6f 63  ions(colors,proc
1b0f0 6e 61 6d 65 73 29 0a 20 20 20 20 24 74 20 74 61  names).    $t ta
1b100 67 20 63 6f 6e 66 20 67 72 65 79 20 2d 66 6f 72  g conf grey -for
1b110 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73  eground $options
1b120 28 63 6f 6c 6f 72 73 2c 71 75 6f 74 65 73 74 72  (colors,quotestr
1b130 69 6e 67 73 29 0a 20 20 20 20 24 74 20 74 61 67  ings).    $t tag
1b140 20 63 6f 6e 66 20 67 72 65 65 6e 20 2d 66 6f 72   conf green -for
1b150 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73  eground $options
1b160 28 63 6f 6c 6f 72 73 2c 73 65 74 29 0a 20 20 20  (colors,set).   
1b170 20 24 74 20 74 61 67 20 63 6f 6e 66 20 72 65 64   $t tag conf red
1b180 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70   -foreground $op
1b190 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63 6f 6d  tions(colors,com
1b1a0 6d 65 6e 74 73 29 0a 20 20 20 20 24 74 20 74 61  ments).    $t ta
1b1b0 67 20 63 6f 6e 66 20 63 79 61 6e 20 2d 66 6f 72  g conf cyan -for
1b1c0 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73  eground $options
1b1d0 28 63 6f 6c 6f 72 73 2c 76 61 72 6e 61 6d 65 73  (colors,varnames
1b1e0 29 0a 7d 0a 0a 23 20 77 68 61 74 20 63 61 6e 20  ).}..# what can 
1b1f0 62 65 20 74 65 78 74 20 6f 72 20 74 65 78 74 5f  be text or text_
1b200 73 65 63 6f 6e 64 61 72 79 0a 70 72 6f 63 20 52  secondary.proc R
1b210 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6c 6f  amDebugger::Colo
1b220 72 69 7a 65 20 7b 20 7b 20 77 68 61 74 20 74 65  rize { { what te
1b230 78 74 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72  xt } } {.    var
1b240 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76  iable text.    v
1b250 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 63  ariable text_sec
1b260 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 72 69 61  ondary.    varia
1b270 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  ble instrumented
1b280 66 69 6c 65 73 49 6e 66 6f 0a 20 20 20 20 76 61  filesInfo.    va
1b290 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69  riable currentfi
1b2a0 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  le.    variable 
1b2b0 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f  currentfile_seco
1b2c0 6e 64 61 72 79 0a 20 20 20 20 76 61 72 69 61 62  ndary.    variab
1b2d0 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20  le options..    
1b2e0 69 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 74  if { $what eq "t
1b2f0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 22 20 7d  ext_secondary" }
1b300 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 63 75   {..set file $cu
1b310 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64  rrentfile_second
1b320 61 72 79 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ary.    } else {
1b330 20 20 73 65 74 20 66 69 6c 65 20 24 63 75 72 72    set file $curr
1b340 65 6e 74 66 69 6c 65 20 7d 0a 0a 20 20 20 20 69  entfile }..    i
1b350 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74  f { ![info exist
1b360 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69  s instrumentedfi
1b370 6c 65 73 49 6e 66 6f 28 24 66 69 6c 65 29 5d 20  lesInfo($file)] 
1b380 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20  } { return }..  
1b390 20 20 69 66 20 7b 20 24 77 68 61 74 20 65 71 20    if { $what eq 
1b3a0 22 74 65 78 74 22 20 7d 20 7b 0a 09 73 65 74 20  "text" } {..set 
1b3b0 65 64 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d  ed [$text cget -
1b3c0 65 64 69 74 61 62 6c 65 5d 0a 09 24 74 65 78 74  editable]..$text
1b3d0 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20   conf -editable 
1b3e0 31 0a 09 73 65 74 20 74 20 5b 24 74 65 78 74 20  1..set t [$text 
1b3f0 6f 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20 7d 20  original].    } 
1b400 65 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f 73 65  else {..$text_se
1b410 63 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72  condary configur
1b420 65 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a  e -state normal.
1b430 09 73 65 74 20 74 20 24 74 65 78 74 5f 73 65 63  .set t $text_sec
1b440 6f 6e 64 61 72 79 0a 20 20 20 20 7d 0a 0a 23 20  ondary.    }..# 
1b450 20 20 20 20 24 74 20 63 6f 6e 66 20 2d 66 6f 72      $t conf -for
1b460 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73  eground $options
1b470 28 63 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f 75  (colors,foregrou
1b480 6e 64 29 20 5c 0a 23 20 20 20 20 20 20 20 20 20  nd) \.#         
1b490 2d 62 61 63 6b 67 72 6f 75 6e 64 20 24 6f 70 74  -background $opt
1b4a0 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 62 61 63 6b  ions(colors,back
1b4b0 67 72 6f 75 6e 64 29 0a 23 20 20 20 20 20 24 74  ground).#     $t
1b4c0 20 74 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74   tag conf magent
1b4d0 61 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f  a -foreground $o
1b4e0 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63 6f  ptions(colors,co
1b4f0 6d 6d 61 6e 64 73 29 0a 23 20 20 20 20 20 24 74  mmands).#     $t
1b500 20 74 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74   tag conf magent
1b510 61 32 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24  a2 -foreground $
1b520 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 64  options(colors,d
1b530 65 66 69 6e 65 73 29 0a 23 20 20 20 20 20 24 74  efines).#     $t
1b540 20 74 61 67 20 63 6f 6e 66 20 62 6c 75 65 20 2d   tag conf blue -
1b550 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69  foreground $opti
1b560 6f 6e 73 28 63 6f 6c 6f 72 73 2c 70 72 6f 63 6e  ons(colors,procn
1b570 61 6d 65 73 29 0a 23 20 20 20 20 20 24 74 20 74  ames).#     $t t
1b580 61 67 20 63 6f 6e 66 20 67 72 65 79 20 2d 66 6f  ag conf grey -fo
1b590 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e  reground $option
1b5a0 73 28 63 6f 6c 6f 72 73 2c 71 75 6f 74 65 73 74  s(colors,quotest
1b5b0 72 69 6e 67 73 29 0a 23 20 20 20 20 20 24 74 20  rings).#     $t 
1b5c0 74 61 67 20 63 6f 6e 66 20 67 72 65 65 6e 20 2d  tag conf green -
1b5d0 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69  foreground $opti
1b5e0 6f 6e 73 28 63 6f 6c 6f 72 73 2c 73 65 74 29 0a  ons(colors,set).
1b5f0 23 20 20 20 20 20 24 74 20 74 61 67 20 63 6f 6e  #     $t tag con
1b600 66 20 72 65 64 20 2d 66 6f 72 65 67 72 6f 75 6e  f red -foregroun
1b610 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72  d $options(color
1b620 73 2c 63 6f 6d 6d 65 6e 74 73 29 0a 23 20 20 20  s,comments).#   
1b630 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 63 79    $t tag conf cy
1b640 61 6e 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24  an -foreground $
1b650 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 76  options(colors,v
1b660 61 72 6e 61 6d 65 73 29 0a 0a 20 20 20 20 73 65  arnames)..    se
1b670 74 20 69 6c 69 6e 65 20 31 0a 20 20 20 20 66 6f  t iline 1.    fo
1b680 72 65 61 63 68 20 69 20 24 69 6e 73 74 72 75 6d  reach i $instrum
1b690 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24  entedfilesInfo($
1b6a0 66 69 6c 65 29 20 7b 0a 09 66 6f 72 65 61 63 68  file) {..foreach
1b6b0 20 22 74 61 67 20 6c 69 20 6c 65 22 20 5b 6c 72   "tag li le" [lr
1b6c0 61 6e 67 65 20 24 69 20 32 20 65 6e 64 5d 20 7b  ange $i 2 end] {
1b6d0 0a 09 20 20 20 20 24 74 20 74 61 67 20 61 64 64  ..    $t tag add
1b6e0 20 24 74 61 67 20 24 69 6c 69 6e 65 2e 24 6c 69   $tag $iline.$li
1b6f0 20 24 69 6c 69 6e 65 2e 24 6c 65 0a 09 7d 0a 09   $iline.$le..}..
1b700 69 6e 63 72 20 69 6c 69 6e 65 0a 20 20 20 20 7d  incr iline.    }
1b710 0a 20 20 20 20 24 74 20 74 61 67 20 72 61 69 73  .    $t tag rais
1b720 65 20 73 65 6c 0a 20 20 20 20 69 66 20 7b 20 24  e sel.    if { $
1b730 77 68 61 74 20 65 71 20 22 74 65 78 74 22 20 7d  what eq "text" }
1b740 20 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 20 2d   {..$text conf -
1b750 65 64 69 74 61 62 6c 65 20 24 65 64 0a 20 20 20  editable $ed.   
1b760 20 7d 20 65 6c 73 65 20 7b 0a 09 24 74 65 78 74   } else {..$text
1b770 5f 73 65 63 6f 6e 64 61 72 79 20 63 6f 6e 66 69  _secondary confi
1b780 67 75 72 65 20 2d 73 74 61 74 65 20 64 69 73 61  gure -state disa
1b790 62 6c 65 64 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20  bled.    }.}..# 
1b7a0 77 68 61 74 20 63 61 6e 20 62 65 20 74 65 78 74  what can be text
1b7b0 20 6f 72 20 74 65 78 74 5f 73 65 63 6f 6e 64 61   or text_seconda
1b7c0 72 79 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  ry.proc RamDebug
1b7d0 67 65 72 3a 3a 43 6f 6c 6f 72 69 7a 65 4c 69 6e  ger::ColorizeLin
1b7e0 65 73 20 7b 20 6c 31 20 6c 32 20 7b 20 77 68 61  es { l1 l2 { wha
1b7f0 74 20 74 65 78 74 20 7d 20 7d 20 7b 0a 20 20 20  t text } } {.   
1b800 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20   variable text. 
1b810 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
1b820 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76  _secondary.    v
1b830 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65  ariable instrume
1b840 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20 20  ntedfilesInfo.  
1b850 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65    variable curre
1b860 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61  ntfile.    varia
1b870 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  ble currentfile_
1b880 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61  secondary.    va
1b890 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a  riable options..
1b8a0 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 65      if { $what e
1b8b0 71 20 22 74 65 78 74 5f 73 65 63 6f 6e 64 61 72  q "text_secondar
1b8c0 79 22 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65  y" } {..set file
1b8d0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65   $currentfile_se
1b8e0 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65 6c  condary.    } el
1b8f0 73 65 20 7b 20 20 73 65 74 20 66 69 6c 65 20 24  se {  set file $
1b900 63 75 72 72 65 6e 74 66 69 6c 65 20 7d 0a 0a 0a  currentfile }...
1b910 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 65      if { $what e
1b920 71 20 22 74 65 78 74 22 20 7d 20 7b 0a 09 73 65  q "text" } {..se
1b930 74 20 65 64 20 5b 24 74 65 78 74 20 63 67 65 74  t ed [$text cget
1b940 20 2d 65 64 69 74 61 62 6c 65 5d 0a 09 24 74 65   -editable]..$te
1b950 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c  xt conf -editabl
1b960 65 20 31 0a 09 73 65 74 20 74 20 5b 24 74 65 78  e 1..set t [$tex
1b970 74 20 6f 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20  t original].    
1b980 7d 20 65 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f  } else {..$text_
1b990 73 65 63 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67  secondary config
1b9a0 75 72 65 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61  ure -state norma
1b9b0 6c 0a 09 73 65 74 20 74 20 24 74 65 78 74 5f 73  l..set t $text_s
1b9c0 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 0a 23  econdary.    }.#
1b9d0 20 20 20 20 20 24 74 20 63 6f 6e 66 20 2d 66 6f       $t conf -fo
1b9e0 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e  reground $option
1b9f0 73 28 63 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f  s(colors,foregro
1ba00 75 6e 64 29 20 5c 0a 23 20 20 20 20 20 20 20 20  und) \.#        
1ba10 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 24 6f 70   -background $op
1ba20 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 62 61 63  tions(colors,bac
1ba30 6b 67 72 6f 75 6e 64 29 0a 23 20 20 20 20 20 24  kground).#     $
1ba40 74 20 74 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e  t tag conf magen
1ba50 74 61 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24  ta -foreground $
1ba60 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63  options(colors,c
1ba70 6f 6d 6d 61 6e 64 73 29 0a 23 20 20 20 20 20 24  ommands).#     $
1ba80 74 20 74 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e  t tag conf magen
1ba90 74 61 32 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20  ta2 -foreground 
1baa0 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c  $options(colors,
1bab0 64 65 66 69 6e 65 73 29 0a 23 20 20 20 20 20 24  defines).#     $
1bac0 74 20 74 61 67 20 63 6f 6e 66 20 62 6c 75 65 20  t tag conf blue 
1bad0 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74  -foreground $opt
1bae0 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 70 72 6f 63  ions(colors,proc
1baf0 6e 61 6d 65 73 29 0a 23 20 20 20 20 20 24 74 20  names).#     $t 
1bb00 74 61 67 20 63 6f 6e 66 20 67 72 65 79 20 2d 66  tag conf grey -f
1bb10 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f  oreground $optio
1bb20 6e 73 28 63 6f 6c 6f 72 73 2c 71 75 6f 74 65 73  ns(colors,quotes
1bb30 74 72 69 6e 67 73 29 0a 23 20 20 20 20 20 24 74  trings).#     $t
1bb40 20 74 61 67 20 63 6f 6e 66 20 67 72 65 65 6e 20   tag conf green 
1bb50 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74  -foreground $opt
1bb60 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 73 65 74 29  ions(colors,set)
1bb70 0a 23 20 20 20 20 20 24 74 20 74 61 67 20 63 6f  .#     $t tag co
1bb80 6e 66 20 72 65 64 20 2d 66 6f 72 65 67 72 6f 75  nf red -foregrou
1bb90 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f  nd $options(colo
1bba0 72 73 2c 63 6f 6d 6d 65 6e 74 73 29 0a 23 20 20  rs,comments).#  
1bbb0 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 63     $t tag conf c
1bbc0 79 61 6e 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20  yan -foreground 
1bbd0 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c  $options(colors,
1bbe0 76 61 72 6e 61 6d 65 73 29 0a 0a 20 20 20 20 66  varnames)..    f
1bbf0 6f 72 65 61 63 68 20 69 20 5b 6c 69 73 74 20 6d  oreach i [list m
1bc00 61 67 65 6e 74 61 20 62 6c 75 65 20 67 72 65 79  agenta blue grey
1bc10 20 67 72 65 65 6e 20 72 65 64 5d 20 7b 0a 09 24   green red] {..$
1bc20 74 20 74 61 67 20 72 65 6d 6f 76 65 20 24 69 20  t tag remove $i 
1bc30 24 6c 31 2e 30 20 22 24 6c 32 2e 30 20 6c 69 6e  $l1.0 "$l2.0 lin
1bc40 65 65 6e 64 22 0a 20 20 20 20 7d 0a 0a 20 20 20  eend".    }..   
1bc50 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24 6c 31   for { set i $l1
1bc60 20 7d 20 7b 20 24 69 20 3c 3d 20 24 6c 32 20 7d   } { $i <= $l2 }
1bc70 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 66   { incr i } {..f
1bc80 6f 72 65 61 63 68 20 22 74 61 67 20 6c 69 20 6c  oreach "tag li l
1bc90 65 22 20 5b 6c 72 61 6e 67 65 20 5b 6c 69 6e 64  e" [lrange [lind
1bca0 65 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64  ex $instrumented
1bcb0 66 69 6c 65 73 49 6e 66 6f 28 24 66 69 6c 65 29  filesInfo($file)
1bcc0 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20   \...           
1bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 65                [e
1bce0 78 70 72 20 24 69 2d 31 5d 5d 20 32 20 65 6e 64  xpr $i-1]] 2 end
1bcf0 5d 20 7b 0a 09 20 20 20 20 24 74 20 74 61 67 20  ] {..    $t tag 
1bd00 61 64 64 20 24 74 61 67 20 24 69 2e 24 6c 69 20  add $tag $i.$li 
1bd10 24 69 2e 24 6c 65 0a 09 7d 0a 20 20 20 20 7d 0a  $i.$le..}.    }.
1bd20 20 20 20 20 24 74 20 74 61 67 20 72 61 69 73 65      $t tag raise
1bd30 20 73 65 6c 0a 20 20 20 20 69 66 20 7b 20 24 77   sel.    if { $w
1bd40 68 61 74 20 65 71 20 22 74 65 78 74 22 20 7d 20  hat eq "text" } 
1bd50 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 20 2d 65  {..$text conf -e
1bd60 64 69 74 61 62 6c 65 20 24 65 64 0a 20 20 20 20  ditable $ed.    
1bd70 7d 20 65 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f  } else {..$text_
1bd80 73 65 63 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67  secondary config
1bd90 75 72 65 20 2d 73 74 61 74 65 20 64 69 73 61 62  ure -state disab
1bda0 6c 65 64 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  led.    }.}..pro
1bdb0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43  c RamDebugger::C
1bdc0 6f 6c 6f 72 69 7a 65 53 6c 6f 77 20 7b 20 74 78  olorizeSlow { tx
1bdd0 74 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  t } {.    variab
1bde0 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76  le options.    v
1bdf0 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20  ariable text.   
1be00 20 0a 20 20 20 20 73 65 74 20 65 64 20 5b 24 74   .    set ed [$t
1be10 78 74 20 63 67 65 74 20 2d 65 64 69 74 61 62 6c  xt cget -editabl
1be20 65 5d 0a 20 20 20 20 24 74 78 74 20 63 6f 6e 66  e].    $txt conf
1be30 20 2d 65 64 69 74 61 62 6c 65 20 31 0a 0a 20 20   -editable 1..  
1be40 20 20 69 66 20 7b 20 24 74 78 74 20 6e 65 20 24    if { $txt ne $
1be50 74 65 78 74 20 7d 20 7b 0a 09 24 74 78 74 20 63  text } {..$txt c
1be60 6f 6e 66 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20  onf -foreground 
1be70 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c  $options(colors,
1be80 66 6f 72 65 67 72 6f 75 6e 64 29 20 5c 0a 09 20  foreground) \.. 
1be90 20 20 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 24     -background $
1bea0 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 62  options(colors,b
1beb0 61 63 6b 67 72 6f 75 6e 64 29 0a 09 24 74 78 74  ackground)..$txt
1bec0 20 74 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74   tag conf magent
1bed0 61 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f  a -foreground $o
1bee0 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63 6f  ptions(colors,co
1bef0 6d 6d 61 6e 64 73 29 0a 09 24 74 78 74 20 74 61  mmands)..$txt ta
1bf00 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74 61 32 20  g conf magenta2 
1bf10 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74  -foreground $opt
1bf20 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 64 65 66 69  ions(colors,defi
1bf30 6e 65 73 29 0a 09 24 74 78 74 20 74 61 67 20 63  nes)..$txt tag c
1bf40 6f 6e 66 20 62 6c 75 65 20 2d 66 6f 72 65 67 72  onf blue -foregr
1bf50 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f  ound $options(co
1bf60 6c 6f 72 73 2c 70 72 6f 63 6e 61 6d 65 73 29 0a  lors,procnames).
1bf70 09 24 74 78 74 20 74 61 67 20 63 6f 6e 66 20 67  .$txt tag conf g
1bf80 72 65 79 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20  rey -foreground 
1bf90 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c  $options(colors,
1bfa0 71 75 6f 74 65 73 74 72 69 6e 67 73 29 0a 09 24  quotestrings)..$
1bfb0 74 78 74 20 74 61 67 20 63 6f 6e 66 20 67 72 65  txt tag conf gre
1bfc0 65 6e 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24  en -foreground $
1bfd0 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 73  options(colors,s
1bfe0 65 74 29 0a 09 24 74 78 74 20 74 61 67 20 63 6f  et)..$txt tag co
1bff0 6e 66 20 72 65 64 20 2d 66 6f 72 65 67 72 6f 75  nf red -foregrou
1c000 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f  nd $options(colo
1c010 72 73 2c 63 6f 6d 6d 65 6e 74 73 29 0a 09 24 74  rs,comments)..$t
1c020 78 74 20 74 61 67 20 63 6f 6e 66 20 63 79 61 6e  xt tag conf cyan
1c030 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70   -foreground $op
1c040 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 76 61 72  tions(colors,var
1c050 6e 61 6d 65 73 29 0a 20 20 20 20 7d 0a 20 20 20  names).    }.   
1c060 20 73 65 74 20 69 64 78 20 31 2e 30 0a 20 20 20   set idx 1.0.   
1c070 20 77 68 69 6c 65 20 31 20 7b 0a 09 73 65 74 20   while 1 {..set 
1c080 69 64 78 32 20 5b 24 74 78 74 20 73 65 61 72 63  idx2 [$txt searc
1c090 68 20 2d 63 6f 75 6e 74 20 52 61 6d 44 65 62 75  h -count RamDebu
1c0a0 67 67 65 72 3a 3a 63 6f 75 6e 74 20 2d 72 65 67  gger::count -reg
1c0b0 65 78 70 20 7b 70 72 6f 63 5c 73 2b 5c 53 2b 7d  exp {proc\s+\S+}
1c0c0 20 24 69 64 78 20 65 6e 64 5d 0a 09 69 66 20 7b   $idx end]..if {
1c0d0 20 24 69 64 78 32 20 3d 3d 20 22 22 20 7d 20 7b   $idx2 == "" } {
1c0e0 20 62 72 65 61 6b 20 7d 0a 09 24 74 78 74 20 74   break }..$txt t
1c0f0 61 67 20 61 64 64 20 6d 61 67 65 6e 74 61 20 24  ag add magenta $
1c100 69 64 78 32 20 24 69 64 78 32 2b 34 63 0a 09 24  idx2 $idx2+4c..$
1c110 74 78 74 20 74 61 67 20 61 64 64 20 62 6c 75 65  txt tag add blue
1c120 20 24 69 64 78 32 2b 35 63 20 24 69 64 78 32 2b   $idx2+5c $idx2+
1c130 24 7b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 63  ${RamDebugger::c
1c140 6f 75 6e 74 7d 63 0a 09 73 65 74 20 69 64 78 20  ount}c..set idx 
1c150 5b 24 74 78 74 20 69 6e 64 65 78 20 24 69 64 78  [$txt index $idx
1c160 32 2b 24 7b 52 61 6d 44 65 62 75 67 67 65 72 3a  2+${RamDebugger:
1c170 3a 63 6f 75 6e 74 7d 63 5d 0a 20 20 20 20 7d 0a  :count}c].    }.
1c180 0a 20 20 20 20 73 65 74 20 73 74 72 69 6e 67 20  .    set string 
1c190 7b 5b 5e 5c 5c 5d 5c 22 28 5b 5e 5c 22 5d 2b 5b  {[^\\]\"([^\"]+[
1c1a0 5e 5c 5c 5c 22 5d 29 3f 5c 22 7d 0a 20 20 20 20  ^\\\"])?\"}.    
1c1b0 73 65 74 20 6d 61 67 65 6e 74 61 73 20 7b 5c 6d  set magentas {\m
1c1c0 28 72 65 74 75 72 6e 7c 62 72 65 61 6b 7c 77 68  (return|break|wh
1c1d0 69 6c 65 7c 65 76 61 6c 7c 66 6f 72 65 61 63 68  ile|eval|foreach
1c1e0 7c 66 6f 72 7c 69 66 7c 65 6c 73 65 7c 65 6c 73  |for|if|else|els
1c1f0 65 69 66 7c 65 72 72 6f 72 7c 73 77 69 74 63 68  eif|error|switch
1c200 7c 64 65 66 61 75 6c 74 29 5c 4d 7d 0a 20 20 20  |default)\M}.   
1c210 20 73 65 74 20 67 72 65 65 6e 73 20 7b 5c 6d 28   set greens {\m(
1c220 76 61 72 69 61 62 6c 65 7c 73 65 74 29 5c 4d 7d  variable|set)\M}
1c230 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 65 6e 74  .    set comment
1c240 73 20 7b 5c 23 2e 2a 24 7d 0a 0a 20 20 20 20 73  s {\#.*$}..    s
1c250 65 74 20 69 64 78 20 31 2e 30 0a 20 20 20 20 77  et idx 1.0.    w
1c260 68 69 6c 65 20 31 20 7b 0a 09 73 65 74 20 69 64  hile 1 {..set id
1c270 78 32 20 5b 24 74 78 74 20 73 65 61 72 63 68 20  x2 [$txt search 
1c280 2d 63 6f 75 6e 74 20 52 61 6d 44 65 62 75 67 67  -count RamDebugg
1c290 65 72 3a 3a 63 6f 75 6e 74 20 2d 72 65 67 65 78  er::count -regex
1c2a0 70 20 5c 0a 09 09 20 20 20 20 20 20 24 73 74 72  p \...      $str
1c2b0 69 6e 67 7c 24 6d 61 67 65 6e 74 61 73 7c 24 67  ing|$magentas|$g
1c2c0 72 65 65 6e 73 7c 24 63 6f 6d 6d 65 6e 74 73 20  reens|$comments 
1c2d0 24 69 64 78 20 65 6e 64 5d 0a 09 69 66 20 7b 20  $idx end]..if { 
1c2e0 24 69 64 78 32 20 3d 3d 20 22 22 20 7d 20 7b 20  $idx2 == "" } { 
1c2f0 62 72 65 61 6b 20 7d 0a 09 66 6f 72 65 61 63 68  break }..foreach
1c300 20 22 72 65 78 20 74 61 67 20 69 63 72 22 20 5b   "rex tag icr" [
1c310 6c 69 73 74 20 24 73 74 72 69 6e 67 20 67 72 65  list $string gre
1c320 79 20 31 20 24 6d 61 67 65 6e 74 61 73 20 6d 61  y 1 $magentas ma
1c330 67 65 6e 74 61 20 30 20 24 67 72 65 65 6e 73 20  genta 0 $greens 
1c340 67 72 65 65 6e 20 30 20 5c 0a 09 09 20 20 20 20  green 0 \...    
1c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
1c360 63 6f 6d 6d 65 6e 74 73 20 72 65 64 20 30 5d 20  comments red 0] 
1c370 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 33 20  {..    set idx3 
1c380 5b 24 74 78 74 20 73 65 61 72 63 68 20 2d 72 65  [$txt search -re
1c390 67 65 78 70 20 24 72 65 78 20 24 69 64 78 32 20  gexp $rex $idx2 
1c3a0 24 69 64 78 32 2b 24 7b 52 61 6d 44 65 62 75 67  $idx2+${RamDebug
1c3b0 67 65 72 3a 3a 63 6f 75 6e 74 7d 63 5d 0a 09 20  ger::count}c].. 
1c3c0 20 20 20 69 66 20 7b 20 24 69 64 78 33 20 3d 3d     if { $idx3 ==
1c3d0 20 24 69 64 78 32 20 7d 20 7b 0a 09 09 24 74 78   $idx2 } {...$tx
1c3e0 74 20 74 61 67 20 61 64 64 20 24 74 61 67 20 24  t tag add $tag $
1c3f0 69 64 78 32 2b 24 7b 69 63 72 7d 63 20 24 69 64  idx2+${icr}c $id
1c400 78 32 2b 24 7b 52 61 6d 44 65 62 75 67 67 65 72  x2+${RamDebugger
1c410 3a 3a 63 6f 75 6e 74 7d 63 0a 09 09 62 72 65 61  ::count}c...brea
1c420 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74  k..    }..}..set
1c430 20 69 64 78 20 5b 24 74 78 74 20 69 6e 64 65 78   idx [$txt index
1c440 20 24 69 64 78 32 2b 24 7b 52 61 6d 44 65 62 75   $idx2+${RamDebu
1c450 67 67 65 72 3a 3a 63 6f 75 6e 74 7d 63 5d 0a 20  gger::count}c]. 
1c460 20 20 20 7d 0a 20 20 20 20 24 74 78 74 20 74 61     }.    $txt ta
1c470 67 20 72 61 69 73 65 20 73 65 6c 0a 20 20 20 20  g raise sel.    
1c480 24 74 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61  $txt conf -edita
1c490 62 6c 65 20 24 65 64 0a 7d 0a 0a 70 72 6f 63 20  ble $ed.}..proc 
1c4a0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 61 76  RamDebugger::Sav
1c4b0 65 46 69 6c 65 20 7b 20 61 72 67 73 20 7d 20 7b  eFile { args } {
1c4c0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
1c4d0 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  xt.    variable 
1c4e0 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69  options.    vari
1c4f0 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65  able currentfile
1c500 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
1c510 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e  rrentfile_endlin
1c520 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  e.    variable c
1c530 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69  urrentfileIsModi
1c540 66 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c  fied.    variabl
1c550 65 20 66 69 6c 65 73 6d 74 69 6d 65 0a 20 20 20  e filesmtime.   
1c560 20 76 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61   variable FileSa
1c570 76 65 48 61 6e 64 6c 65 72 73 0a 20 20 20 20 0a  veHandlers.    .
1c580 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c      set optional
1c590 20 7b 0a 09 7b 20 2d 66 6f 72 63 65 5f 62 72 6f   {..{ -force_bro
1c5a0 77 73 65 72 20 62 6f 6f 6c 65 61 6e 20 30 20 7d  wser boolean 0 }
1c5b0 0a 09 7b 20 2d 6f 6e 6c 79 5f 69 66 5f 6d 6f 64  ..{ -only_if_mod
1c5c0 69 66 69 65 64 20 62 6f 6f 6c 65 61 6e 20 30 20  ified boolean 0 
1c5d0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
1c5e0 63 6f 6d 70 75 6c 73 6f 72 79 20 22 77 68 61 74  compulsory "what
1c5f0 22 0a 20 20 20 20 70 61 72 73 65 5f 61 72 67 73  ".    parse_args
1c600 20 24 6f 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70   $optional $comp
1c610 75 6c 73 6f 72 79 20 24 61 72 67 73 0a 20 20 20  ulsory $args.   
1c620 20 0a 20 20 20 20 69 66 20 7b 20 24 6f 6e 6c 79   .    if { $only
1c630 5f 69 66 5f 6d 6f 64 69 66 69 65 64 20 26 26 20  _if_modified && 
1c640 21 24 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d  !$currentfileIsM
1c650 6f 64 69 66 69 65 64 20 7d 20 7b 0a 09 72 65 74  odified } {..ret
1c660 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  urn.    }.    if
1c670 20 7b 20 24 77 68 61 74 20 65 71 20 22 61 73 6b   { $what eq "ask
1c680 22 20 7d 20 7b 0a 09 69 66 20 7b 20 21 24 63 75  " } {..if { !$cu
1c690 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66  rrentfileIsModif
1c6a0 69 65 64 20 7d 20 7b 20 72 65 74 75 72 6e 20 30  ied } { return 0
1c6b0 20 7d 0a 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e   }...if { [strin
1c6c0 67 20 69 6e 64 65 78 20 24 63 75 72 72 65 6e 74  g index $current
1c6d0 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d  file 0] != "*" }
1c6e0 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 65 73 73   {..    set mess
1c6f0 61 67 65 20 5b 5f 20 22 44 6f 20 79 6f 75 20 77  age [_ "Do you w
1c700 61 6e 74 20 74 6f 20 73 61 76 65 20 66 69 6c 65  ant to save file
1c710 20 27 25 73 27 3f 22 20 24 63 75 72 72 65 6e 74   '%s'?" $current
1c720 66 69 6c 65 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a  file]..} else {.
1c730 09 20 20 20 20 73 65 74 20 6d 65 73 73 61 67 65  .    set message
1c740 20 5b 5f 20 22 44 6f 20 79 6f 75 20 77 61 6e 74   [_ "Do you want
1c750 20 74 6f 20 73 61 76 65 20 27 25 73 27 3f 22 20   to save '%s'?" 
1c760 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 7d  $currentfile]..}
1c770 0a 0a 09 73 65 74 20 72 65 74 20 5b 73 6e 69 74  ...set ret [snit
1c780 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d 64 65 66  _messageBox -def
1c790 61 75 6c 74 20 79 65 73 20 2d 69 63 6f 6e 20 71  ault yes -icon q
1c7a0 75 65 73 74 69 6f 6e 20 2d 6d 65 73 73 61 67 65  uestion -message
1c7b0 20 5c 0a 09 09 20 20 20 20 20 24 6d 65 73 73 61   \...     $messa
1c7c0 67 65 20 2d 70 61 72 65 6e 74 20 24 74 65 78 74  ge -parent $text
1c7d0 20 5c 0a 09 09 20 20 20 20 20 2d 74 69 74 6c 65   \...     -title
1c7e0 20 5b 5f 20 22 53 61 76 65 22 5d 20 2d 74 79 70   [_ "Save"] -typ
1c7f0 65 20 79 65 73 6e 6f 63 61 6e 63 65 6c 5d 0a 09  e yesnocancel]..
1c800 69 66 20 7b 20 24 72 65 74 20 65 71 20 22 63 61  if { $ret eq "ca
1c810 6e 63 65 6c 22 20 7d 20 7b 20 72 65 74 75 72 6e  ncel" } { return
1c820 20 2d 31 20 7d 0a 09 69 66 20 7b 20 24 72 65 74   -1 }..if { $ret
1c830 20 65 71 20 22 6e 6f 22 20 7d 20 7b 0a 09 20 20   eq "no" } {..  
1c840 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c    set currentfil
1c850 65 49 73 4d 6f 64 69 66 69 65 64 20 30 0a 09 20  eIsModified 0.. 
1c860 20 20 20 72 65 74 75 72 6e 20 30 0a 09 7d 0a 20     return 0..}. 
1c870 20 20 20 7d 0a 20 20 20 20 73 65 74 20 66 69 6c     }.    set fil
1c880 65 5f 68 61 73 5f 62 65 65 6e 5f 72 65 61 64 20  e_has_been_read 
1c890 31 0a 20 20 20 20 73 65 74 20 4e 65 65 64 73 52  1.    set NeedsR
1c8a0 65 69 6e 73 74 72 75 6d 65 6e 74 20 30 0a 20 20  einstrument 0.  
1c8b0 20 20 69 66 20 7b 20 24 77 68 61 74 20 6e 65 20    if { $what ne 
1c8c0 22 73 61 76 65 61 73 22 20 26 26 20 28 24 63 75  "saveas" && ($cu
1c8d0 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 2a 4d  rrentfile == "*M
1c8e0 61 63 72 6f 73 2a 22 20 7c 7c 20 5c 0a 09 09 20  acros*" || \... 
1c8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c900 20 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 46    [info exists F
1c910 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 73 28  ileSaveHandlers(
1c920 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 29 20  $currentfile)]) 
1c930 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 63  } {..set file $c
1c940 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 7d  urrentfile.    }
1c950 20 65 6c 73 65 69 66 20 7b 20 24 77 68 61 74 20   elseif { $what 
1c960 3d 3d 20 22 73 61 76 65 61 73 22 20 7c 7c 20 24  == "saveas" || $
1c970 63 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22  currentfile == "
1c980 2a 4e 65 77 20 66 69 6c 65 2a 22 20 7c 7c 20 24  *New file*" || $
1c990 63 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22  currentfile == "
1c9a0 22 20 7c 7c 20 5c 0a 09 09 20 20 20 5b 72 65 67  " || \...   [reg
1c9b0 65 78 70 20 7b 5e 5c 2a 2e 2a 5c 2a 24 7d 20 24  exp {^\*.*\*$} $
1c9c0 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 7d 20 7b  currentfile] } {
1c9d0 0a 09 69 66 20 7b 20 24 77 68 61 74 20 65 71 20  ..if { $what eq 
1c9e0 22 61 75 74 6f 5f 73 61 76 65 22 20 7d 20 7b 20  "auto_save" } { 
1c9f0 72 65 74 75 72 6e 20 7d 0a 09 73 65 74 20 4e 65  return }..set Ne
1ca00 65 64 73 52 65 69 6e 73 74 72 75 6d 65 6e 74 20  edsReinstrument 
1ca10 31 0a 09 73 65 74 20 77 20 5b 77 69 6e 66 6f 20  1..set w [winfo 
1ca20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a  toplevel $text].
1ca30 09 73 65 74 20 74 79 70 65 73 20 5b 47 69 76 65  .set types [Give
1ca40 46 69 6c 65 54 79 70 65 46 6f 72 46 69 6c 65 42  FileTypeForFileB
1ca50 72 6f 77 73 65 72 5d 0a 09 69 66 20 7b 20 21 5b  rowser]..if { ![
1ca60 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69  info exists opti
1ca70 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 5d  ons(defaultdir)]
1ca80 20 7d 20 7b 20 73 65 74 20 6f 70 74 69 6f 6e 73   } { set options
1ca90 28 64 65 66 61 75 6c 74 64 69 72 29 20 5b 70 77  (defaultdir) [pw
1caa0 64 5d 20 7d 0a 09 73 65 74 20 74 69 74 6c 65 20  d] }..set title 
1cab0 5b 5f 20 22 53 61 76 65 20 66 69 6c 65 22 5d 0a  [_ "Save file"].
1cac0 09 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 6f  .if { $options(o
1cad0 70 65 6e 66 69 6c 65 5f 62 72 6f 77 73 65 72 29  penfile_browser)
1cae0 20 7c 7c 20 24 66 6f 72 63 65 5f 62 72 6f 77 73   || $force_brows
1caf0 65 72 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  er } {..    set 
1cb00 66 69 6c 65 20 5b 74 6b 5f 67 65 74 53 61 76 65  file [tk_getSave
1cb10 46 69 6c 65 20 2d 66 69 6c 65 74 79 70 65 73 20  File -filetypes 
1cb20 24 74 79 70 65 73 20 2d 69 6e 69 74 69 61 6c 64  $types -initiald
1cb30 69 72 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61  ir $options(defa
1cb40 75 6c 74 64 69 72 29 20 2d 70 61 72 65 6e 74 20  ultdir) -parent 
1cb50 24 77 20 5c 0a 09 09 20 20 20 20 2d 74 69 74 6c  $w \...    -titl
1cb60 65 20 24 74 69 74 6c 65 5d 0a 09 7d 20 65 6c 73  e $title]..} els
1cb70 65 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6c  e {..    set fil
1cb80 65 20 5b 47 65 74 46 69 6c 65 20 73 61 76 65 20  e [GetFile save 
1cb90 24 74 79 70 65 73 20 24 74 69 74 6c 65 5d 0a 09  $types $title]..
1cba0 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d  }..if { $file ==
1cbb0 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d   "" } { return }
1cbc0 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 64 65  ..set options(de
1cbd0 66 61 75 6c 74 64 69 72 29 20 5b 66 69 6c 65 20  faultdir) [file 
1cbe0 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a 09  dirname $file]..
1cbf0 73 65 74 20 66 69 6c 65 5f 68 61 73 5f 62 65 65  set file_has_bee
1cc00 6e 5f 72 65 61 64 20 30 0a 20 20 20 20 7d 20 65  n_read 0.    } e
1cc10 6c 73 65 69 66 20 7b 20 24 63 75 72 72 65 6e 74  lseif { $current
1cc20 66 69 6c 65 20 3d 3d 20 22 2a 4d 61 63 72 6f 73  file == "*Macros
1cc30 2a 22 20 7c 7c 20 5b 69 6e 66 6f 20 65 78 69 73  *" || [info exis
1cc40 74 73 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c  ts FileSaveHandl
1cc50 65 72 73 28 24 63 75 72 72 65 6e 74 66 69 6c 65  ers($currentfile
1cc60 29 5d 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65  )] } {..set file
1cc70 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20   $currentfile.  
1cc80 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20    } else {..set 
1cc90 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c  file $currentfil
1cca0 65 0a 0a 09 69 66 20 7b 20 5b 66 69 6c 65 20 6d  e...if { [file m
1ccb0 74 69 6d 65 20 24 66 69 6c 65 5d 20 3e 20 24 66  time $file] > $f
1ccc0 69 6c 65 73 6d 74 69 6d 65 28 24 66 69 6c 65 29  ilesmtime($file)
1ccd0 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 72 65   } {..    set re
1cce0 74 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65  t [DialogWin::me
1ccf0 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 6c  ssageBox -defaul
1cd00 74 20 6f 6b 20 2d 69 63 6f 6e 20 71 75 65 73 74  t ok -icon quest
1cd10 69 6f 6e 20 2d 6d 65 73 73 61 67 65 20 5c 0a 09  ion -message \..
1cd20 09 20 20 20 20 20 20 20 20 20 5b 5f 20 22 46 69  .         [_ "Fi
1cd30 6c 65 20 27 25 73 27 20 68 61 73 20 62 65 65 6e  le '%s' has been
1cd40 20 6d 6f 64 69 66 69 65 64 20 6f 75 74 73 69 64   modified outsid
1cd50 65 20 52 61 6d 44 65 62 75 67 67 65 72 2e 20 4c  e RamDebugger. L
1cd60 6f 6f 73 65 20 65 78 74 65 72 6e 61 6c 20 63 68  oose external ch
1cd70 61 6e 67 65 73 3f 22 20 24 63 75 72 72 65 6e 74  anges?" $current
1cd80 66 69 6c 65 5d 5c 0a 09 09 20 20 20 20 20 20 20  file]\...       
1cd90 20 20 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20    -parent $text 
1cda0 2d 74 69 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69  -title [_ "Warni
1cdb0 6e 67 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e  ng"] -type okcan
1cdc0 63 65 6c 5d 0a 09 20 20 20 20 69 66 20 7b 20 24  cel]..    if { $
1cdd0 72 65 74 20 3d 3d 20 22 63 61 6e 63 65 6c 22 20  ret == "cancel" 
1cde0 7d 20 7b 20 72 65 74 75 72 6e 20 2d 31 20 7d 0a  } { return -1 }.
1cdf0 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 53 61 76  .}.    }.    Sav
1ce00 65 46 69 6c 65 46 20 2d 66 69 6c 65 5f 68 61 73  eFileF -file_has
1ce10 5f 62 65 65 6e 5f 72 65 61 64 20 24 66 69 6c 65  _been_read $file
1ce20 5f 68 61 73 5f 62 65 65 6e 5f 72 65 61 64 20 5c  _has_been_read \
1ce30 0a 09 2d 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20  ..-file_endline 
1ce40 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64  $currentfile_end
1ce50 6c 69 6e 65 20 24 66 69 6c 65 0a 0a 20 20 20 20  line $file..    
1ce60 69 66 20 7b 20 24 4e 65 65 64 73 52 65 69 6e 73  if { $NeedsReins
1ce70 74 72 75 6d 65 6e 74 20 7d 20 7b 20 72 6c 69 73  trument } { rlis
1ce80 74 20 2d 71 75 69 65 74 20 7d 0a 20 20 20 20 72  t -quiet }.    r
1ce90 65 74 75 72 6e 20 30 0a 7d 0a 0a 70 72 6f 63 20  eturn 0.}..proc 
1cea0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65  RamDebugger::Ope
1ceb0 6e 46 69 6c 65 20 7b 20 61 72 67 73 20 7d 20 7b  nFile { args } {
1cec0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70  .    variable op
1ced0 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62  tions.    variab
1cee0 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69  le text.    vari
1cef0 61 62 6c 65 20 74 65 78 74 5f 73 65 63 6f 6e 64  able text_second
1cf00 61 72 79 0a 20 20 0a 20 20 20 20 73 65 74 20 6f  ary.  .    set o
1cf10 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20 2d 66 6f  ptional {..{ -fo
1cf20 72 63 65 5f 62 72 6f 77 73 65 72 20 62 6f 6f 6c  rce_browser bool
1cf30 65 61 6e 20 30 20 7d 0a 20 20 20 20 7d 0a 20 20  ean 0 }.    }.  
1cf40 20 20 73 65 74 20 63 6f 6d 70 75 6c 73 6f 72 79    set compulsory
1cf50 20 22 22 0a 20 20 20 20 70 61 72 73 65 5f 61 72   "".    parse_ar
1cf60 67 73 20 24 6f 70 74 69 6f 6e 61 6c 20 24 63 6f  gs $optional $co
1cf70 6d 70 75 6c 73 6f 72 79 20 24 61 72 67 73 20 20  mpulsory $args  
1cf80 0a 0a 20 20 20 20 73 65 74 20 77 20 5b 77 69 6e  ..    set w [win
1cf90 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78  fo toplevel $tex
1cfa0 74 5d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69  t]..    if { ![i
1cfb0 6e 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 5f  nfo exists text_
1cfc0 73 65 63 6f 6e 64 61 72 79 5d 20 7c 7c 20 5b 66  secondary] || [f
1cfd0 6f 63 75 73 20 2d 6c 61 73 74 66 6f 72 20 24 74  ocus -lastfor $t
1cfe0 65 78 74 5d 20 6e 65 20 24 74 65 78 74 5f 73 65  ext] ne $text_se
1cff0 63 6f 6e 64 61 72 79 20 7d 20 7b 0a 09 69 66 20  condary } {..if 
1d000 7b 20 5b 53 61 76 65 46 69 6c 65 20 61 73 6b 5d  { [SaveFile ask]
1d010 20 3d 3d 20 2d 31 20 7d 20 7b 20 72 65 74 75 72   == -1 } { retur
1d020 6e 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  n }.    }..    s
1d030 65 74 20 74 79 70 65 73 20 5b 47 69 76 65 46 69  et types [GiveFi
1d040 6c 65 54 79 70 65 46 6f 72 46 69 6c 65 42 72 6f  leTypeForFileBro
1d050 77 73 65 72 5d 0a 0a 20 20 20 20 23 20 20 20 20  wser]..    #    
1d060 20 73 65 74 20 74 79 70 65 73 20 7b 0a 20 20 20   set types {.   
1d070 20 23 20 20 20 20 20 20 20 20 20 7b 7b 54 43 4c   #         {{TCL
1d080 20 53 63 72 69 70 74 73 7d 20 20 20 20 20 20 7b   Scripts}      {
1d090 2e 74 63 6c 7d 20 20 20 20 20 20 20 20 7d 0a 20  .tcl}        }. 
1d0a0 20 20 20 23 20 20 20 20 20 20 20 20 20 7b 7b 43     #         {{C
1d0b0 2c 43 2b 2b 20 66 69 6c 65 73 7d 20 20 20 20 20  ,C++ files}     
1d0c0 20 7b 2e 63 63 20 2e 63 20 2e 68 7d 20 20 20 7d   {.cc .c .h}   }
1d0d0 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 7b  .    #         {
1d0e0 7b 47 69 44 20 66 69 6c 65 73 7d 20 20 20 20 20  {GiD files}     
1d0f0 20 7b 2e 62 61 73 20 2e 70 72 62 20 2e 6d 61 74   {.bas .prb .mat
1d100 20 2e 63 6e 64 7d 20 20 20 7d 0a 20 20 20 20 23   .cnd}   }.    #
1d110 20 20 20 20 20 20 20 20 20 7b 7b 41 6c 6c 20 46           {{All F
1d120 69 6c 65 73 7d 20 20 20 20 20 20 20 20 2a 20 20  iles}        *  
1d130 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
1d140 20 23 20 20 20 20 20 7d 0a 20 20 20 20 73 65 74   #     }.    set
1d150 20 74 69 74 6c 65 20 5b 5f 20 22 4f 70 65 6e 20   title [_ "Open 
1d160 73 6f 75 72 63 65 20 66 69 6c 65 22 5d 0a 20 20  source file"].  
1d170 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78    if { ![info ex
1d180 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 64 65 66  ists options(def
1d190 61 75 6c 74 64 69 72 29 5d 20 7d 20 7b 20 73 65  aultdir)] } { se
1d1a0 74 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c  t options(defaul
1d1b0 74 64 69 72 29 20 5b 70 77 64 5d 20 7d 0a 20 20  tdir) [pwd] }.  
1d1c0 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28    if { $options(
1d1d0 6f 70 65 6e 66 69 6c 65 5f 62 72 6f 77 73 65 72  openfile_browser
1d1e0 29 20 7c 7c 20 24 66 6f 72 63 65 5f 62 72 6f 77  ) || $force_brow
1d1f0 73 65 72 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c  ser } {..set fil
1d200 65 20 5b 74 6b 5f 67 65 74 4f 70 65 6e 46 69 6c  e [tk_getOpenFil
1d210 65 20 2d 66 69 6c 65 74 79 70 65 73 20 24 74 79  e -filetypes $ty
1d220 70 65 73 20 2d 69 6e 69 74 69 61 6c 64 69 72 20  pes -initialdir 
1d230 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74  $options(default
1d240 64 69 72 29 20 2d 70 61 72 65 6e 74 20 24 77 20  dir) -parent $w 
1d250 5c 0a 09 09 2d 74 69 74 6c 65 20 24 74 69 74 6c  \...-title $titl
1d260 65 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  e].    } else {.
1d270 09 73 65 74 20 66 69 6c 65 20 5b 47 65 74 46 69  .set file [GetFi
1d280 6c 65 20 6f 70 65 6e 20 24 74 79 70 65 73 20 24  le open $types $
1d290 74 69 74 6c 65 5d 0a 20 20 20 20 7d 0a 0a 20 20  title].    }..  
1d2a0 20 20 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20    if { $file == 
1d2b0 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  "" } { return }.
1d2c0 20 20 20 20 4f 70 65 6e 46 69 6c 65 46 20 2d 66      OpenFileF -f
1d2d0 6f 72 63 65 20 2d 31 20 24 66 69 6c 65 0a 20 20  orce -1 $file.  
1d2e0 20 20 46 69 6c 6c 4c 69 73 74 42 6f 78 0a 7d 0a    FillListBox.}.
1d2f0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
1d300 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 7b 20 61  r::OpenFileF { a
1d310 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  rgs } {.    vari
1d320 61 62 6c 65 20 6d 61 72 6b 65 72 0a 20 20 20 20  able marker.    
1d330 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20  variable text.  
1d340 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f    variable text_
1d350 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61  secondary.    va
1d360 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20  riable files.   
1d370 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70   variable breakp
1d380 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62  oints.    variab
1d390 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20  le currentfile. 
1d3a0 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
1d3b0 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a  entfile_endline.
1d3c0 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72      variable cur
1d3d0 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69  rentfileIsModifi
1d3e0 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ed.    variable 
1d3f0 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a  WindowFilesList.
1d400 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e      variable Win
1d410 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65  dowFilesListLine
1d420 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62 6c  Nums.    variabl
1d430 65 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65  e FileSaveHandle
1d440 72 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  rs.    variable 
1d450 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69  options.    vari
1d460 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65  able currentfile
1d470 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 0a  _secondary.    .
1d480 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c      set optional
1d490 20 7b 0a 09 7b 20 2d 66 6f 72 63 65 20 62 6f 6f   {..{ -force boo
1d4a0 6c 65 61 6e 20 30 20 7d 0a 09 7b 20 2d 75 73 65  lean 0 }..{ -use
1d4b0 72 5f 6e 75 6d 5f 6c 69 6e 65 20 6c 69 6e 65 20  r_num_line line 
1d4c0 2d 31 20 7d 0a 09 7b 20 2d 6e 6f 5f 68 69 73 74  -1 }..{ -no_hist
1d4d0 6f 72 79 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a  ory boolean 0 }.
1d4e0 09 7b 20 2d 72 61 69 73 65 5f 65 72 72 6f 72 20  .{ -raise_error 
1d4f0 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a 20 20 20 20  boolean 0 }.    
1d500 7d 0a 20 20 20 20 73 65 74 20 63 6f 6d 70 75 6c  }.    set compul
1d510 73 6f 72 79 20 22 66 69 6c 65 22 0a 20 20 20 20  sory "file".    
1d520 70 61 72 73 65 5f 61 72 67 73 20 24 6f 70 74 69  parse_args $opti
1d530 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 6f 72 79  onal $compulsory
1d540 20 24 61 72 67 73 20 20 0a 20 20 20 20 0a 20 20   $args  .    .  
1d550 20 20 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20    if { $file == 
1d560 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  "" } { return }.
1d570 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b 66 69      set file [fi
1d580 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 24 66 69 6c  lenormalize $fil
1d590 65 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e  e]..    if { [in
1d5a0 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 5f 73  fo exists text_s
1d5b0 65 63 6f 6e 64 61 72 79 5d 20 26 26 20 5b 66 6f  econdary] && [fo
1d5c0 63 75 73 20 2d 6c 61 73 74 66 6f 72 20 24 74 65  cus -lastfor $te
1d5d0 78 74 5d 20 65 71 20 24 74 65 78 74 5f 73 65 63  xt] eq $text_sec
1d5e0 6f 6e 64 61 72 79 20 7d 20 7b 0a 09 72 65 74 75  ondary } {..retu
1d5f0 72 6e 20 5b 4f 70 65 6e 46 69 6c 65 53 65 63 6f  rn [OpenFileSeco
1d600 6e 64 61 72 79 20 2d 6e 6f 5f 68 69 73 74 6f 72  ndary -no_histor
1d610 79 20 24 6e 6f 5f 68 69 73 74 6f 72 79 20 24 66  y $no_history $f
1d620 69 6c 65 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ile].    }..    
1d630 69 66 20 7b 20 24 66 6f 72 63 65 20 3d 3d 20 2d  if { $force == -
1d640 31 20 7d 20 7b 0a 09 73 65 74 20 66 6f 72 63 65  1 } {..set force
1d650 20 30 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a   0.    } else {.
1d660 09 69 66 20 7b 20 5b 53 61 76 65 46 69 6c 65 20  .if { [SaveFile 
1d670 61 73 6b 5d 20 3d 3d 20 2d 31 20 7d 20 7b 20 72  ask] == -1 } { r
1d680 65 74 75 72 6e 20 7d 0a 20 20 20 20 7d 0a 0a 20  eturn }.    }.. 
1d690 20 20 20 57 61 69 74 53 74 61 74 65 20 31 0a 20     WaitState 1. 
1d6a0 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24 6f 70     .    if { $op
1d6b0 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 20  tions(filetype) 
1d6c0 6e 65 20 22 61 75 74 6f 22 20 26 26 20 24 6f 70  ne "auto" && $op
1d6d0 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 5f 6f  tions(filetype_o
1d6e0 6e 6c 79 5f 74 68 69 73 5f 66 69 6c 65 29 20 7d  nly_this_file) }
1d6f0 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28   {..set options(
1d700 66 69 6c 65 74 79 70 65 29 20 61 75 74 6f 0a 20  filetype) auto. 
1d710 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73     }.    if { [s
1d720 65 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  et pos [lsearch 
1d730 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69  -exact $WindowFi
1d740 6c 65 73 4c 69 73 74 20 24 63 75 72 72 65 6e 74  lesList $current
1d750 66 69 6c 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b  file]] != -1 } {
1d760 0a 09 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e  ..set line [scan
1d770 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e   [$text index in
1d780 73 65 72 74 5d 20 25 64 5d 0a 09 73 65 74 20 57  sert] %d]..set W
1d790 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69  indowFilesListLi
1d7a0 6e 65 4e 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65  neNums [lreplace
1d7b0 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
1d7c0 74 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24  tLineNums $pos $
1d7d0 70 6f 73 20 24 6c 69 6e 65 5d 0a 20 20 20 20 7d  pos $line].    }
1d7e0 0a 20 20 20 20 73 65 74 20 6c 69 6e 65 6e 75 6d  .    set linenum
1d7f0 20 31 0a 20 20 20 20 69 66 20 7b 20 5b 73 65 74   1.    if { [set
1d800 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65   pos [lsearch -e
1d810 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69 6c 65  xact $WindowFile
1d820 73 4c 69 73 74 20 24 66 69 6c 65 5d 5d 20 21 3d  sList $file]] !=
1d830 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 6c 69 6e   -1 } {..set lin
1d840 65 6e 75 6d 20 5b 6c 69 6e 64 65 78 20 24 57 69  enum [lindex $Wi
1d850 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e  ndowFilesListLin
1d860 65 4e 75 6d 73 20 24 70 6f 73 5d 0a 20 20 20 20  eNums $pos].    
1d870 7d 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65  }.    if { $file
1d880 20 3d 3d 20 24 63 75 72 72 65 6e 74 66 69 6c 65   == $currentfile
1d890 20 7d 20 7b 0a 09 73 65 74 20 69 64 78 20 5b 24   } {..set idx [$
1d8a0 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72  text index inser
1d8b0 74 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 20  t].    } else { 
1d8c0 73 65 74 20 69 64 78 20 24 6c 69 6e 65 6e 75 6d  set idx $linenum
1d8d0 2e 30 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24  .0 }..    if { $
1d8e0 75 73 65 72 5f 6e 75 6d 5f 6c 69 6e 65 20 21 3d  user_num_line !=
1d8f0 20 2d 31 20 7d 20 7b 20 73 65 74 20 69 64 78 20   -1 } { set idx 
1d900 24 75 73 65 72 5f 6e 75 6d 5f 6c 69 6e 65 2e 30  $user_num_line.0
1d910 20 7d 0a 0a 20 20 20 20 73 65 74 20 63 75 72 72   }..    set curr
1d920 65 6e 74 66 69 6c 65 5f 73 61 76 65 20 24 63 75  entfile_save $cu
1d930 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 73 65  rrentfile.    se
1d940 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e  t currentfile_en
1d950 64 6c 69 6e 65 5f 73 61 76 65 20 24 63 75 72 72  dline_save $curr
1d960 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a  entfile_endline.
1d970 20 20 20 20 69 66 20 7b 20 21 24 66 6f 72 63 65      if { !$force
1d980 20 7d 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 20 5b   } {..set comm [
1d990 6c 69 73 74 20 72 6c 69 73 74 20 2d 71 75 69 65  list rlist -quie
1d9a0 74 20 24 66 69 6c 65 20 7b 7d 5d 0a 20 20 20 20  t $file {}].    
1d9b0 7d 20 65 6c 73 65 69 66 20 7b 20 24 66 6f 72 63  } elseif { $forc
1d9c0 65 20 3d 3d 20 32 20 7d 20 7b 20 0a 09 73 65 74  e == 2 } { ..set
1d9d0 20 63 6f 6d 6d 20 5b 6c 69 73 74 20 72 6c 69 73   comm [list rlis
1d9e0 74 20 2d 71 75 69 65 74 20 2d 72 65 69 6e 73 74  t -quiet -reinst
1d9f0 72 75 6d 65 6e 74 20 24 66 69 6c 65 20 7b 7d 5d  rument $file {}]
1da00 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
1da10 65 74 20 63 6f 6d 6d 20 5b 6c 69 73 74 20 72 6c  et comm [list rl
1da20 69 73 74 20 2d 71 75 69 65 74 20 2d 66 6f 72 63  ist -quiet -forc
1da30 65 20 24 66 69 6c 65 20 7b 7d 5d 0a 20 20 20 20  e $file {}].    
1da40 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74  }..    if { [cat
1da50 63 68 20 24 63 6f 6d 6d 20 65 72 72 73 74 72 69  ch $comm errstri
1da60 6e 67 5d 20 7d 20 7b 0a 09 73 65 74 20 63 75 72  ng] } {..set cur
1da70 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e  rentfile $curren
1da80 74 66 69 6c 65 5f 73 61 76 65 0a 09 73 65 74 20  tfile_save..set 
1da90 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c  currentfile_endl
1daa0 69 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ine $currentfile
1dab0 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 09 57  _endline_save..W
1dac0 61 69 74 53 74 61 74 65 20 30 0a 09 0a 09 69 66  aitState 0....if
1dad0 20 7b 20 24 72 61 69 73 65 5f 65 72 72 6f 72 20   { $raise_error 
1dae0 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b  } {..    error [
1daf0 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 65  lindex [split $e
1db00 72 72 73 74 72 69 6e 67 20 5c 6e 5d 20 30 5d 0a  rrstring \n] 0].
1db10 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 57  .} else {..    W
1db20 61 72 6e 57 69 6e 20 5b 6c 69 6e 64 65 78 20 5b  arnWin [lindex [
1db30 73 70 6c 69 74 20 24 65 72 72 73 74 72 69 6e 67  split $errstring
1db40 20 5c 6e 5d 20 30 5d 0a 09 20 20 20 20 72 65 74   \n] 0]..    ret
1db50 75 72 6e 20 31 0a 09 7d 0a 20 20 20 20 7d 0a 0a  urn 1..}.    }..
1db60 20 20 20 20 24 6d 61 72 6b 65 72 20 64 65 6c 65      $marker dele
1db70 74 65 20 61 72 72 6f 77 0a 20 20 20 20 24 6d 61  te arrow.    $ma
1db80 72 6b 65 72 20 64 65 6c 65 74 65 20 62 72 65 61  rker delete brea
1db90 6b 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64 65  k.    $marker de
1dba0 6c 65 74 65 20 61 72 72 6f 77 62 72 65 61 6b 0a  lete arrowbreak.
1dbb0 20 20 20 20 73 65 74 20 65 64 20 5b 24 74 65 78      set ed [$tex
1dbc0 74 20 63 67 65 74 20 2d 65 64 69 74 61 62 6c 65  t cget -editable
1dbd0 5d 0a 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66  ].    $text conf
1dbe0 20 2d 65 64 69 74 61 62 6c 65 20 31 0a 20 20 20   -editable 1.   
1dbf0 20 24 74 65 78 74 20 63 6c 65 61 72 75 6e 64 6f   $text clearundo
1dc00 0a 20 20 20 20 73 65 74 20 74 65 78 74 4f 20 5b  .    set textO [
1dc10 24 74 65 78 74 20 6f 72 69 67 69 6e 61 6c 5d 0a  $text original].
1dc20 20 20 20 20 24 74 65 78 74 4f 20 64 65 6c 20 31      $textO del 1
1dc30 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 65 78 74  .0 end.    $text
1dc40 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 69 6e  O ins end [strin
1dc50 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 22  g map [list "\t"
1dc60 20 22 20 20 20 20 20 20 20 20 22 5d 20 24 66 69   "        "] $fi
1dc70 6c 65 73 28 24 66 69 6c 65 29 5d 0a 20 20 20 20  les($file)].    
1dc80 24 74 65 78 74 4f 20 74 61 67 20 61 64 64 20 6e  $textO tag add n
1dc90 6f 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a 20 20  ormal 1.0 end.  
1dca0 20 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64    $text conf -ed
1dcb0 69 74 61 62 6c 65 20 24 65 64 0a 0a 20 20 20 20  itable $ed..    
1dcc0 43 6f 6c 6f 72 69 7a 65 0a 0a 20 20 20 20 66 6f  Colorize..    fo
1dcd0 72 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f  reach i $breakpo
1dce0 69 6e 74 73 20 7b 0a 09 69 66 20 7b 20 21 5b 41  ints {..if { ![A
1dcf0 72 65 46 69 6c 65 73 45 71 75 61 6c 20 5b 6c 69  reFilesEqual [li
1dd00 6e 64 65 78 20 24 69 20 32 5d 20 20 24 66 69 6c  ndex $i 2]  $fil
1dd10 65 5d 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20  e] } { continue 
1dd20 7d 0a 09 73 65 74 20 6c 69 6e 65 20 5b 6c 69 6e  }..set line [lin
1dd30 64 65 78 20 24 69 20 33 5d 0a 09 55 70 64 61 74  dex $i 3]..Updat
1dd40 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24  eArrowAndBreak $
1dd50 6c 69 6e 65 20 31 20 22 22 0a 20 20 20 20 7d 0a  line 1 "".    }.
1dd60 20 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74 65      UpdateRemote
1dd70 42 72 65 61 6b 73 0a 0a 20 20 20 20 73 65 74 20  Breaks..    set 
1dd80 4e 75 6d 6c 69 6e 65 73 20 5b 73 63 61 6e 20 5b  Numlines [scan [
1dd90 24 74 65 78 74 20 69 6e 64 65 78 20 65 6e 64 5d  $text index end]
1dda0 20 25 64 5d 0a 0a 20 20 20 20 73 65 74 20 66 6f   %d]..    set fo
1ddb0 6e 74 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d  nt [$text cget -
1ddc0 66 6f 6e 74 5d 0a 20 20 20 20 24 6d 61 72 6b 65  font].    $marke
1ddd0 72 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 63 72  r configure -scr
1dde0 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c 69 73 74 20  ollregion [list 
1ddf0 30 20 30 20 5b 77 69 6e 66 6f 20 72 65 71 77 69  0 0 [winfo reqwi
1de00 64 74 68 20 24 6d 61 72 6b 65 72 5d 20 5c 0a 09  dth $marker] \..
1de10 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1de20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 20            [expr 
1de30 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66 6f 6e 74 20  $Numlines*[font 
1de40 6d 65 74 72 69 63 73 20 24 66 6f 6e 74 20 2d 6c  metrics $font -l
1de50 69 6e 65 73 70 61 63 65 5d 5d 5d 0a 0a 20 20 20  inespace]]]..   
1de60 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20   $text mark set 
1de70 69 6e 73 65 72 74 20 24 69 64 78 0a 20 20 20 20  insert $idx.    
1de80 24 74 65 78 74 20 73 65 65 20 24 69 64 78 0a 0a  $text see $idx..
1de90 20 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b 66      set_title [f
1dea0 69 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e  ile tail $curren
1deb0 74 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 63  tfile].    set c
1dec0 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69  urrentfileIsModi
1ded0 66 69 65 64 20 30 0a 0a 20 20 20 20 69 66 20 7b  fied 0..    if {
1dee0 20 21 24 6e 6f 5f 68 69 73 74 6f 72 79 20 7d 20   !$no_history } 
1def0 7b 0a 09 69 66 20 7b 20 5b 73 65 74 20 70 6f 73  {..if { [set pos
1df00 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74   [lsearch -exact
1df10 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
1df20 74 20 24 66 69 6c 65 5d 5d 20 21 3d 20 2d 31 20  t $file]] != -1 
1df30 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 57 69 6e  } {..    set Win
1df40 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 5b 6c 72  dowFilesList [lr
1df50 65 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 69  eplace $WindowFi
1df60 6c 65 73 4c 69 73 74 20 24 70 6f 73 20 24 70 6f  lesList $pos $po
1df70 73 5d 0a 09 20 20 20 20 73 65 74 20 57 69 6e 64  s]..    set Wind
1df80 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e  owFilesListLineN
1df90 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 57  ums [lreplace $W
1dfa0 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69  indowFilesListLi
1dfb0 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70 6f 73  neNums $pos $pos
1dfc0 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 73 74 72 69  ]..}..if { [stri
1dfd0 6e 67 20 69 6e 64 65 78 20 24 66 69 6c 65 20 30  ng index $file 0
1dfe0 5d 20 21 3d 20 22 2a 22 20 7c 7c 20 5b 69 6e 66  ] != "*" || [inf
1dff0 6f 20 65 78 69 73 74 73 20 46 69 6c 65 53 61 76  o exists FileSav
1e000 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29  eHandlers($file)
1e010 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65  ] } {..    lappe
1e020 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69  nd WindowFilesLi
1e030 73 74 20 24 66 69 6c 65 0a 09 20 20 20 20 6c 61  st $file..    la
1e040 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65  ppend WindowFile
1e050 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 24 6c  sListLineNums $l
1e060 69 6e 65 6e 75 6d 0a 09 7d 0a 20 20 20 20 7d 0a  inenum..}.    }.
1e070 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 20 2d      $text conf -
1e080 65 64 69 74 61 62 6c 65 20 31 0a 0a 20 20 20 20  editable 1..    
1e090 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64  if { [string ind
1e0a0 65 78 20 24 66 69 6c 65 20 30 5d 20 21 3d 20 22  ex $file 0] != "
1e0b0 2a 22 20 7d 20 7b 0a 09 69 66 20 7b 20 21 24 6e  *" } {..if { !$n
1e0c0 6f 5f 68 69 73 74 6f 72 79 20 7d 20 7b 0a 09 20  o_history } {.. 
1e0d0 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65     if { ![info e
1e0e0 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 52 65  xists options(Re
1e0f0 63 65 6e 74 46 69 6c 65 73 29 5d 20 7d 20 7b 0a  centFiles)] } {.
1e100 09 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 65  ..set options(Re
1e110 63 65 6e 74 46 69 6c 65 73 29 20 22 22 0a 09 20  centFiles) "".. 
1e120 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 69 70     }..    set ip
1e130 6f 73 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20  os [lsearchfile 
1e140 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46  $options(RecentF
1e150 69 6c 65 73 29 20 24 66 69 6c 65 5d 0a 09 20 20  iles) $file]..  
1e160 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20    if { $ipos != 
1e170 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 6f 70 74  -1 } {...set opt
1e180 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73  ions(RecentFiles
1e190 29 20 5b 6c 72 65 70 6c 61 63 65 20 24 6f 70 74  ) [lreplace $opt
1e1a0 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73  ions(RecentFiles
1e1b0 29 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09  ) $ipos $ipos]..
1e1c0 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 6f      }..    set o
1e1d0 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c  ptions(RecentFil
1e1e0 65 73 29 20 5b 6c 69 6e 73 65 72 74 20 24 6f 70  es) [linsert $op
1e1f0 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65  tions(RecentFile
1e200 73 29 20 30 20 24 66 69 6c 65 5d 0a 09 20 20 20  s) 0 $file]..   
1e210 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24   if { [llength $
1e220 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69  options(RecentFi
1e230 6c 65 73 29 5d 20 3e 20 31 30 20 7d 20 7b 0a 09  les)] > 10 } {..
1e240 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 65 63  .set options(Rec
1e250 65 6e 74 46 69 6c 65 73 29 20 5b 6c 72 65 70 6c  entFiles) [lrepl
1e260 61 63 65 20 24 6f 70 74 69 6f 6e 73 28 52 65 63  ace $options(Rec
1e270 65 6e 74 46 69 6c 65 73 29 20 31 30 20 65 6e 64  entFiles) 10 end
1e280 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74  ]..    }..}..set
1e290 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74   options(default
1e2a0 64 69 72 29 20 5b 66 69 6c 65 20 64 69 72 6e 61  dir) [file dirna
1e2b0 6d 65 20 24 66 69 6c 65 5d 0a 09 23 46 69 6c 6c  me $file]..#Fill
1e2c0 4c 69 73 74 42 6f 78 0a 20 20 20 20 7d 0a 20 20  ListBox.    }.  
1e2d0 20 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b    set filetype [
1e2e0 47 69 76 65 46 69 6c 65 54 79 70 65 20 24 66 69  GiveFileType $fi
1e2f0 6c 65 5d 0a 20 20 20 20 52 61 6d 44 65 62 75 67  le].    RamDebug
1e300 67 65 72 3a 3a 41 64 64 46 69 6c 65 54 79 70 65  ger::AddFileType
1e310 4d 65 6e 75 20 24 66 69 6c 65 74 79 70 65 0a 0a  Menu $filetype..
1e320 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65      if { [info e
1e330 78 69 73 74 73 20 63 75 72 72 65 6e 74 66 69 6c  xists currentfil
1e340 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d 20 7b  e_secondary] } {
1e350 0a 09 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66  ..if { $currentf
1e360 69 6c 65 20 65 71 20 24 63 75 72 72 65 6e 74 66  ile eq $currentf
1e370 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 20 7d 20  ile_secondary } 
1e380 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63 6f 6e  {..    $text con
1e390 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65 78 74  figure -synctext
1e3a0 77 69 64 67 65 74 20 24 74 65 78 74 5f 73 65 63  widget $text_sec
1e3b0 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73 65 20 7b  ondary..} else {
1e3c0 0a 09 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66  ..    $text conf
1e3d0 69 67 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77  igure -synctextw
1e3e0 69 64 67 65 74 20 22 22 0a 09 7d 0a 20 20 20 20  idget ""..}.    
1e3f0 7d 0a 20 20 20 20 4d 61 6e 61 67 65 50 6f 73 69  }.    ManagePosi
1e400 74 69 6f 6e 73 49 6d 61 67 65 73 0a 20 20 20 20  tionsImages.    
1e410 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 56 53  RamDebugger::CVS
1e420 3a 3a 69 6e 64 69 63 61 74 6f 72 5f 75 70 64 61  ::indicator_upda
1e430 74 65 0a 20 20 20 20 57 61 69 74 53 74 61 74 65  te.    WaitState
1e440 20 30 0a 20 20 20 20 69 66 20 7b 20 5b 66 6f 63   0.    if { [foc
1e450 75 73 20 2d 6c 61 73 74 66 6f 72 20 24 74 65 78  us -lastfor $tex
1e460 74 5d 20 65 71 20 24 74 65 78 74 20 7c 7c 20 5c  t] eq $text || \
1e470 0a 09 20 20 20 20 20 5b 66 6f 63 75 73 20 2d 6c  ..     [focus -l
1e480 61 73 74 66 6f 72 20 24 74 65 78 74 5d 20 65 71  astfor $text] eq
1e490 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
1e4a0 20 24 74 65 78 74 5d 20 7d 20 7b 0a 09 66 6f 63   $text] } {..foc
1e4b0 75 73 20 2d 66 6f 72 63 65 20 24 74 65 78 74 0a  us -force $text.
1e4c0 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e      }.    return
1e4d0 20 30 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   0.}..proc RamDe
1e4e0 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65  bugger::OpenFile
1e4f0 53 65 63 6f 6e 64 61 72 79 20 7b 20 61 72 67 73  Secondary { args
1e500 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
1e510 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61  e text.    varia
1e520 62 6c 65 20 74 65 78 74 5f 73 65 63 6f 6e 64 61  ble text_seconda
1e530 72 79 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ry.    variable 
1e540 66 69 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62  files.    variab
1e550 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20  le currentfile. 
1e560 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
1e570 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a  entfile_endline.
1e580 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72      variable cur
1e590 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61  rentfile_seconda
1e5a0 72 79 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ry.    variable 
1e5b0 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64  currentfileIsMod
1e5c0 69 66 69 65 64 0a 20 20 20 20 76 61 72 69 61 62  ified.    variab
1e5d0 6c 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69  le WindowFilesLi
1e5e0 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  st.    variable 
1e5f0 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c  WindowFilesListL
1e600 69 6e 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69  ineNums.    vari
1e610 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20  able options.   
1e620 20 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e   .    set option
1e630 61 6c 20 7b 0a 09 7b 20 2d 6e 6f 5f 68 69 73 74  al {..{ -no_hist
1e640 6f 72 79 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a  ory boolean 0 }.
1e650 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 6f      }.    set co
1e660 6d 70 75 6c 73 6f 72 79 20 22 66 69 6c 65 22 0a  mpulsory "file".
1e670 20 20 20 20 70 61 72 73 65 5f 61 72 67 73 20 24      parse_args $
1e680 6f 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c  optional $compul
1e690 73 6f 72 79 20 24 61 72 67 73 20 20 0a 0a 20 20  sory $args  ..  
1e6a0 20 20 57 61 69 74 53 74 61 74 65 20 31 0a 0a 20    WaitState 1.. 
1e6b0 20 20 20 73 65 74 20 6c 69 6e 65 6e 75 6d 20 31     set linenum 1
1e6c0 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20  .    if { $file 
1e6d0 65 71 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20  eq $currentfile 
1e6e0 7d 20 7b 0a 09 73 65 74 20 6c 69 6e 65 6e 75 6d  } {..set linenum
1e6f0 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e   [scan [$text in
1e700 64 65 78 20 69 6e 73 65 72 74 5d 20 25 64 5d 0a  dex insert] %d].
1e710 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b      } elseif { [
1e720 73 65 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68  set pos [lsearch
1e730 20 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46   -exact $WindowF
1e740 69 6c 65 73 4c 69 73 74 20 24 66 69 6c 65 5d 5d  ilesList $file]]
1e750 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20   != -1 } {..set 
1e760 6c 69 6e 65 6e 75 6d 20 5b 6c 69 6e 64 65 78 20  linenum [lindex 
1e770 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74  $WindowFilesList
1e780 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 5d 0a 20  LineNums $pos]. 
1e790 20 20 20 7d 0a 20 20 20 20 73 65 74 20 69 64 78     }.    set idx
1e7a0 20 24 6c 69 6e 65 6e 75 6d 2e 30 0a 0a 20 20 20   $linenum.0..   
1e7b0 20 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65   set currentfile
1e7c0 5f 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 69  _save $currentfi
1e7d0 6c 65 0a 20 20 20 20 73 65 74 20 63 75 72 72 65  le.    set curre
1e7e0 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73  ntfile_endline_s
1e7f0 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ave $currentfile
1e800 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20 73 65 74  _endline.    set
1e810 20 63 6f 6d 6d 20 5b 6c 69 73 74 20 72 6c 69 73   comm [list rlis
1e820 74 20 2d 71 75 69 65 74 20 24 66 69 6c 65 20 7b  t -quiet $file {
1e830 7d 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61  }]..    if { [ca
1e840 74 63 68 20 24 63 6f 6d 6d 20 65 72 72 73 74 72  tch $comm errstr
1e850 69 6e 67 5d 20 7d 20 7b 0a 09 73 65 74 20 63 75  ing] } {..set cu
1e860 72 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65  rrentfile $curre
1e870 6e 74 66 69 6c 65 5f 73 61 76 65 0a 09 73 65 74  ntfile_save..set
1e880 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64   currentfile_end
1e890 6c 69 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c  line $currentfil
1e8a0 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 09  e_endline_save..
1e8b0 57 61 69 74 53 74 61 74 65 20 30 0a 09 57 61 72  WaitState 0..War
1e8c0 6e 57 69 6e 20 5b 6c 69 6e 64 65 78 20 5b 73 70  nWin [lindex [sp
1e8d0 6c 69 74 20 24 65 72 72 73 74 72 69 6e 67 20 5c  lit $errstring \
1e8e0 6e 5d 20 30 5d 0a 09 72 65 74 75 72 6e 20 31 0a  n] 0]..return 1.
1e8f0 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 75      }.    set cu
1e900 72 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65  rrentfile $curre
1e910 6e 74 66 69 6c 65 5f 73 61 76 65 0a 20 20 20 20  ntfile_save.    
1e920 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  set currentfile_
1e930 65 6e 64 6c 69 6e 65 20 24 63 75 72 72 65 6e 74  endline $current
1e940 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76  file_endline_sav
1e950 65 0a 0a 20 20 20 20 24 74 65 78 74 5f 73 65 63  e..    $text_sec
1e960 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72 65  ondary configure
1e970 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20   -state normal. 
1e980 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61     $text_seconda
1e990 72 79 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  ry delete 1.0 en
1e9a0 64 0a 20 20 20 20 24 74 65 78 74 5f 73 65 63 6f  d.    $text_seco
1e9b0 6e 64 61 72 79 20 69 6e 73 20 65 6e 64 20 5b 73  ndary ins end [s
1e9c0 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20  tring map [list 
1e9d0 22 5c 74 22 20 22 20 20 20 20 20 20 20 20 22 5d  "\t" "        "]
1e9e0 20 24 66 69 6c 65 73 28 24 66 69 6c 65 29 5d 0a   $files($file)].
1e9f0 20 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64      $text_second
1ea00 61 72 79 20 74 61 67 20 61 64 64 20 6e 6f 72 6d  ary tag add norm
1ea10 61 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 24  al 1.0 end.    $
1ea20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 63  text_secondary c
1ea30 6f 6e 66 69 67 75 72 65 20 2d 73 74 61 74 65 20  onfigure -state 
1ea40 64 69 73 61 62 6c 65 64 0a 0a 20 20 20 20 73 65  disabled..    se
1ea50 74 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c  t options(defaul
1ea60 74 64 69 72 29 20 5b 66 69 6c 65 20 64 69 72 6e  tdir) [file dirn
1ea70 61 6d 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 73  ame $file].    s
1ea80 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73  et currentfile_s
1ea90 65 63 6f 6e 64 61 72 79 20 24 66 69 6c 65 0a 0a  econdary $file..
1eaa0 20 20 20 20 43 6f 6c 6f 72 69 7a 65 20 74 65 78      Colorize tex
1eab0 74 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20  t_secondary..   
1eac0 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79   $text_secondary
1ead0 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74   mark set insert
1eae0 20 24 69 64 78 0a 20 20 20 20 24 74 65 78 74 5f   $idx.    $text_
1eaf0 73 65 63 6f 6e 64 61 72 79 20 73 65 65 20 24 69  secondary see $i
1eb00 64 78 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b  dx.    .    if {
1eb10 20 21 24 6e 6f 5f 68 69 73 74 6f 72 79 20 7d 20   !$no_history } 
1eb20 7b 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68  {..if { [lsearch
1eb30 20 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46   -exact $WindowF
1eb40 69 6c 65 73 4c 69 73 74 20 24 66 69 6c 65 5d 20  ilesList $file] 
1eb50 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 6c  == -1 } {..    l
1eb60 61 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c  append WindowFil
1eb70 65 73 4c 69 73 74 20 24 66 69 6c 65 0a 09 20 20  esList $file..  
1eb80 20 20 6c 61 70 70 65 6e 64 20 57 69 6e 64 6f 77    lappend Window
1eb90 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d  FilesListLineNum
1eba0 73 20 24 6c 69 6e 65 6e 75 6d 0a 09 7d 0a 20 20  s $linenum..}.  
1ebb0 20 20 7d 0a 20 20 20 20 53 65 63 6f 6e 64 61 72    }.    Secondar
1ebc0 79 54 65 78 74 48 65 6c 70 20 73 68 6f 77 0a 0a  yTextHelp show..
1ebd0 20 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e      if { $curren
1ebe0 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65 6e  tfile eq $curren
1ebf0 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 20  tfile_secondary 
1ec00 7d 20 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 69  } {..$text confi
1ec10 67 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69  gure -synctextwi
1ec20 64 67 65 74 20 24 74 65 78 74 5f 73 65 63 6f 6e  dget $text_secon
1ec30 64 61 72 79 0a 20 20 20 20 7d 20 65 6c 73 65 20  dary.    } else 
1ec40 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 69 67 75  {..$text configu
1ec50 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69 64 67  re -synctextwidg
1ec60 65 74 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20  et "".    }.    
1ec70 57 61 69 74 53 74 61 74 65 20 30 0a 20 20 20 20  WaitState 0.    
1ec80 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 70 72 6f 63  return 0.}..proc
1ec90 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70   RamDebugger::Up
1eca0 64 61 74 65 48 61 6e 64 6c 65 72 46 6f 72 46 69  dateHandlerForFi
1ecb0 6c 65 53 61 76 65 20 7b 20 66 69 6c 65 20 68 61  leSave { file ha
1ecc0 6e 64 6c 65 72 20 7d 20 7b 0a 20 20 20 20 76 61  ndler } {.    va
1ecd0 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 48  riable FileSaveH
1ece0 61 6e 64 6c 65 72 73 0a 0a 20 20 20 20 69 66 20  andlers..    if 
1ecf0 7b 20 24 68 61 6e 64 6c 65 72 20 6e 65 20 22 22  { $handler ne ""
1ed00 20 7d 20 7b 0a 09 73 65 74 20 46 69 6c 65 53 61   } {..set FileSa
1ed10 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65  veHandlers($file
1ed20 29 20 24 68 61 6e 64 6c 65 72 0a 20 20 20 20 7d  ) $handler.    }
1ed30 20 65 6c 73 65 20 7b 0a 09 75 6e 73 65 74 20 2d   else {..unset -
1ed40 6e 6f 63 6f 6d 70 6c 61 69 6e 20 46 69 6c 65 53  nocomplain FileS
1ed50 61 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c  aveHandlers($fil
1ed60 65 29 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63  e).    }.}..proc
1ed70 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70   RamDebugger::Op
1ed80 65 6e 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65  enFileSaveHandle
1ed90 72 20 7b 20 66 69 6c 65 20 64 61 74 61 20 68 61  r { file data ha
1eda0 6e 64 6c 65 72 20 7d 20 7b 0a 20 20 20 20 76 61  ndler } {.    va
1edb0 72 69 61 62 6c 65 20 6d 61 72 6b 65 72 0a 20 20  riable marker.  
1edc0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
1edd0 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c      variable fil
1ede0 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  es.    variable 
1edf0 66 69 6c 65 73 5f 65 6e 64 6c 69 6e 65 0a 20 20  files_endline.  
1ee00 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b    variable break
1ee10 70 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61  points.    varia
1ee20 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a  ble currentfile.
1ee30 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72      variable cur
1ee40 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  rentfile_endline
1ee50 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
1ee60 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66  rrentfileIsModif
1ee70 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ied.    variable
1ee80 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74   WindowFilesList
1ee90 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69  .    variable Wi
1eea0 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e  ndowFilesListLin
1eeb0 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62  eNums.    variab
1eec0 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76  le options.    v
1eed0 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65  ariable FileSave
1eee0 48 61 6e 64 6c 65 72 73 0a 20 20 20 20 76 61 72  Handlers.    var
1eef0 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
1ef00 65 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20  e_secondary.    
1ef10 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65  variable text_se
1ef20 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20  condary..    if 
1ef30 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20  { [string index 
1ef40 24 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20  $file 0] != "*" 
1ef50 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 5b 5f 20  } {..WarnWin [_ 
1ef60 22 46 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20  "File name must 
1ef70 62 65 67 69 6e 20 77 69 74 68 3a 20 27 2a 27 22  begin with: '*'"
1ef80 5d 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20  ]..return 1.    
1ef90 7d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20  }.    .    if { 
1efa0 5b 53 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d  [SaveFile ask] =
1efb0 3d 20 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20  = -1 } { return 
1efc0 7d 0a 0a 20 20 20 20 57 61 69 74 53 74 61 74 65  }..    WaitState
1efd0 20 31 0a 0a 20 20 20 20 73 65 74 20 6c 69 6e 65   1..    set line
1efe0 6e 75 6d 20 31 0a 20 20 20 20 69 66 20 7b 20 24  num 1.    if { $
1eff0 66 69 6c 65 20 3d 3d 20 24 63 75 72 72 65 6e 74  file == $current
1f000 66 69 6c 65 20 7d 20 7b 0a 09 73 65 74 20 69 64  file } {..set id
1f010 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69  x [$text index i
1f020 6e 73 65 72 74 5d 0a 20 20 20 20 7d 20 65 6c 73  nsert].    } els
1f030 65 20 7b 20 73 65 74 20 69 64 78 20 24 6c 69 6e  e { set idx $lin
1f040 65 6e 75 6d 2e 30 20 7d 0a 0a 20 20 20 20 73 65  enum.0 }..    se
1f050 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61  t currentfile_sa
1f060 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a  ve $currentfile.
1f070 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66      set currentf
1f080 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65  ile_endline_save
1f090 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e   $currentfile_en
1f0a0 64 6c 69 6e 65 0a 20 20 20 20 73 65 74 20 66 69  dline.    set fi
1f0b0 6c 65 73 28 24 66 69 6c 65 29 20 24 64 61 74 61  les($file) $data
1f0c0 0a 20 20 20 20 73 65 74 20 66 69 6c 65 73 5f 65  .    set files_e
1f0d0 6e 64 6c 69 6e 65 28 24 66 69 6c 65 29 20 61 75  ndline($file) au
1f0e0 74 6f 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 20  to.    set comm 
1f0f0 5b 6c 69 73 74 20 72 6c 69 73 74 20 2d 71 75 69  [list rlist -qui
1f100 65 74 20 24 66 69 6c 65 20 7b 7d 5d 0a 0a 20 20  et $file {}]..  
1f110 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 24 63    if { [catch $c
1f120 6f 6d 6d 20 65 72 72 73 74 72 69 6e 67 5d 20 7d  omm errstring] }
1f130 20 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66   {..set currentf
1f140 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ile $currentfile
1f150 5f 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65  _save..set curre
1f160 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24  ntfile_endline $
1f170 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c  currentfile_endl
1f180 69 6e 65 5f 73 61 76 65 0a 09 75 6e 73 65 74 20  ine_save..unset 
1f190 66 69 6c 65 73 28 24 66 69 6c 65 29 0a 09 75 6e  files($file)..un
1f1a0 73 65 74 20 66 69 6c 65 73 5f 65 6e 64 6c 69 6e  set files_endlin
1f1b0 65 28 24 66 69 6c 65 29 0a 09 57 61 69 74 53 74  e($file)..WaitSt
1f1c0 61 74 65 20 30 0a 09 57 61 72 6e 57 69 6e 20 5b  ate 0..WarnWin [
1f1d0 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 65  lindex [split $e
1f1e0 72 72 73 74 72 69 6e 67 20 5c 6e 5d 20 30 5d 0a  rrstring \n] 0].
1f1f0 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a  .return 1.    }.
1f200 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64 65 6c  .    $marker del
1f210 65 74 65 20 61 72 72 6f 77 0a 20 20 20 20 24 6d  ete arrow.    $m
1f220 61 72 6b 65 72 20 64 65 6c 65 74 65 20 62 72 65  arker delete bre
1f230 61 6b 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64  ak.    $marker d
1f240 65 6c 65 74 65 20 61 72 72 6f 77 62 72 65 61 6b  elete arrowbreak
1f250 0a 20 20 20 20 73 65 74 20 65 64 20 5b 24 74 65  .    set ed [$te
1f260 78 74 20 63 67 65 74 20 2d 65 64 69 74 61 62 6c  xt cget -editabl
1f270 65 5d 0a 20 20 20 20 24 74 65 78 74 20 63 6f 6e  e].    $text con
1f280 66 20 2d 65 64 69 74 61 62 6c 65 20 31 0a 20 20  f -editable 1.  
1f290 20 20 24 74 65 78 74 20 63 6c 65 61 72 75 6e 64    $text clearund
1f2a0 6f 0a 20 20 20 20 73 65 74 20 74 65 78 74 4f 20  o.    set textO 
1f2b0 5b 24 74 65 78 74 20 6f 72 69 67 69 6e 61 6c 5d  [$text original]
1f2c0 0a 20 20 20 20 24 74 65 78 74 4f 20 64 65 6c 20  .    $textO del 
1f2d0 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 65 78  1.0 end.    $tex
1f2e0 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 69  tO ins end [stri
1f2f0 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74  ng map [list "\t
1f300 22 20 22 20 20 20 20 20 20 20 20 22 5d 20 24 66  " "        "] $f
1f310 69 6c 65 73 28 24 66 69 6c 65 29 5d 0a 20 20 20  iles($file)].   
1f320 20 24 74 65 78 74 4f 20 74 61 67 20 61 64 64 20   $textO tag add 
1f330 6e 6f 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a 20  normal 1.0 end. 
1f340 20 20 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65     $text conf -e
1f350 64 69 74 61 62 6c 65 20 24 65 64 0a 0a 20 20 20  ditable $ed..   
1f360 20 43 6f 6c 6f 72 69 7a 65 0a 0a 20 20 20 20 66   Colorize..    f
1f370 6f 72 65 61 63 68 20 69 20 24 62 72 65 61 6b 70  oreach i $breakp
1f380 6f 69 6e 74 73 20 7b 0a 09 69 66 20 7b 20 21 5b  oints {..if { ![
1f390 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 5b 6c  AreFilesEqual [l
1f3a0 69 6e 64 65 78 20 24 69 20 32 5d 20 20 24 66 69  index $i 2]  $fi
1f3b0 6c 65 5d 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65  le] } { continue
1f3c0 20 7d 0a 09 73 65 74 20 6c 69 6e 65 20 5b 6c 69   }..set line [li
1f3d0 6e 64 65 78 20 24 69 20 33 5d 0a 09 55 70 64 61  ndex $i 3]..Upda
1f3e0 74 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20  teArrowAndBreak 
1f3f0 24 6c 69 6e 65 20 31 20 22 22 0a 20 20 20 20 7d  $line 1 "".    }
1f400 0a 20 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74  .    UpdateRemot
1f410 65 42 72 65 61 6b 73 0a 0a 20 20 20 20 73 65 74  eBreaks..    set
1f420 20 4e 75 6d 6c 69 6e 65 73 20 5b 73 63 61 6e 20   Numlines [scan 
1f430 5b 24 74 65 78 74 20 69 6e 64 65 78 20 65 6e 64  [$text index end
1f440 5d 20 25 64 5d 0a 0a 20 20 20 20 73 65 74 20 66  ] %d]..    set f
1f450 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65 74 20  ont [$text cget 
1f460 2d 66 6f 6e 74 5d 0a 20 20 20 20 24 6d 61 72 6b  -font].    $mark
1f470 65 72 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 63  er configure -sc
1f480 72 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c 69 73 74  rollregion [list
1f490 20 30 20 30 20 5b 77 69 6e 66 6f 20 72 65 71 77   0 0 [winfo reqw
1f4a0 69 64 74 68 20 24 6d 61 72 6b 65 72 5d 20 5c 0a  idth $marker] \.
1f4b0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f4c0 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72             [expr
1f4d0 20 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66 6f 6e 74   $Numlines*[font
1f4e0 20 6d 65 74 72 69 63 73 20 24 66 6f 6e 74 20 2d   metrics $font -
1f4f0 6c 69 6e 65 73 70 61 63 65 5d 5d 5d 0a 0a 20 20  linespace]]]..  
1f500 20 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74    $text mark set
1f510 20 69 6e 73 65 72 74 20 24 69 64 78 0a 20 20 20   insert $idx.   
1f520 20 24 74 65 78 74 20 73 65 65 20 24 69 64 78 0a   $text see $idx.
1f530 0a 20 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b  .    set_title [
1f540 66 69 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65  file tail $curre
1f550 6e 74 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20  ntfile].    set 
1f560 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64  currentfileIsMod
1f570 69 66 69 65 64 20 30 0a 0a 20 20 20 20 69 66 20  ified 0..    if 
1f580 7b 20 5b 73 65 74 20 70 6f 73 20 5b 6c 73 65 61  { [set pos [lsea
1f590 72 63 68 20 2d 65 78 61 63 74 20 24 57 69 6e 64  rch -exact $Wind
1f5a0 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 69 6c  owFilesList $fil
1f5b0 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73  e]] != -1 } {..s
1f5c0 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69  et WindowFilesLi
1f5d0 73 74 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 69  st [lreplace $Wi
1f5e0 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 70  ndowFilesList $p
1f5f0 6f 73 20 24 70 6f 73 5d 0a 09 73 65 74 20 57 69  os $pos]..set Wi
1f600 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e  ndowFilesListLin
1f610 65 4e 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20  eNums [lreplace 
1f620 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74  $WindowFilesList
1f630 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70  LineNums $pos $p
1f640 6f 73 5d 0a 20 20 20 20 7d 0a 20 20 20 20 6c 61  os].    }.    la
1f650 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65  ppend WindowFile
1f660 73 4c 69 73 74 20 24 66 69 6c 65 0a 20 20 20 20  sList $file.    
1f670 6c 61 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69  lappend WindowFi
1f680 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20  lesListLineNums 
1f690 24 6c 69 6e 65 6e 75 6d 0a 0a 20 20 20 20 24 74  $linenum..    $t
1f6a0 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62  ext conf -editab
1f6b0 6c 65 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 24  le 1..    if { $
1f6c0 68 61 6e 64 6c 65 72 20 6e 65 20 22 22 20 7d 20  handler ne "" } 
1f6d0 7b 0a 09 73 65 74 20 46 69 6c 65 53 61 76 65 48  {..set FileSaveH
1f6e0 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 20 24  andlers($file) $
1f6f0 68 61 6e 64 6c 65 72 0a 20 20 20 20 7d 20 65 6c  handler.    } el
1f700 73 65 20 7b 0a 09 75 6e 73 65 74 20 2d 6e 6f 63  se {..unset -noc
1f710 6f 6d 70 6c 61 69 6e 20 46 69 6c 65 53 61 76 65  omplain FileSave
1f720 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 0a  Handlers($file).
1f730 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b      }.    if { [
1f740 69 6e 66 6f 20 65 78 69 73 74 73 20 63 75 72 72  info exists curr
1f750 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72  entfile_secondar
1f760 79 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 24 63 75  y] } {..if { $cu
1f770 72 72 65 6e 74 66 69 6c 65 20 65 71 20 24 63 75  rrentfile eq $cu
1f780 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64  rrentfile_second
1f790 61 72 79 20 7d 20 7b 0a 09 20 20 20 20 24 74 65  ary } {..    $te
1f7a0 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 79  xt configure -sy
1f7b0 6e 63 74 65 78 74 77 69 64 67 65 74 20 24 74 65  nctextwidget $te
1f7c0 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20  xt_secondary..} 
1f7d0 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 74 65 78  else {..    $tex
1f7e0 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e  t configure -syn
1f7f0 63 74 65 78 74 77 69 64 67 65 74 20 22 22 0a 09  ctextwidget ""..
1f800 7d 0a 20 20 20 20 7d 0a 20 20 20 20 4d 61 6e 61  }.    }.    Mana
1f810 67 65 50 6f 73 69 74 69 6f 6e 73 49 6d 61 67 65  gePositionsImage
1f820 73 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74  s..    set filet
1f830 79 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70  ype [GiveFileTyp
1f840 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a  e $currentfile].
1f850 20 20 20 20 41 64 64 46 69 6c 65 54 79 70 65 4d      AddFileTypeM
1f860 65 6e 75 20 24 66 69 6c 65 74 79 70 65 0a 0a 20  enu $filetype.. 
1f870 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a 20     WaitState 0. 
1f880 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 70     return 0.}..p
1f890 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
1f8a0 3a 52 65 69 6e 73 74 72 75 6d 65 6e 74 43 75 72  :ReinstrumentCur
1f8b0 72 65 6e 74 46 69 6c 65 20 7b 7d 20 7b 0a 20 20  rentFile {} {.  
1f8c0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
1f8d0 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72      variable cur
1f8e0 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72  rentfile.    var
1f8f0 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
1f900 65 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20  e_secondary..   
1f910 20 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20   set idx [$text 
1f920 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 0a 20 20  index insert].  
1f930 20 20 73 65 74 20 73 65 6c 20 5b 24 74 65 78 74    set sel [$text
1f940 20 74 61 67 20 6e 65 78 74 72 61 6e 67 65 20 73   tag nextrange s
1f950 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20  el 1.0 end].    
1f960 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b  set err [catch {
1f970 20 72 6c 69 73 74 20 2d 71 75 69 65 74 20 2d 72   rlist -quiet -r
1f980 65 69 6e 73 74 72 75 6d 65 6e 74 20 2d 72 65 74  einstrument -ret
1f990 75 72 6e 5f 65 72 72 6f 72 20 24 63 75 72 72 65  urn_error $curre
1f9a0 6e 74 66 69 6c 65 20 7d 20 65 72 72 73 74 72 69  ntfile } errstri
1f9b0 6e 67 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20  ng].    .    if 
1f9c0 7b 20 24 65 72 72 20 7d 20 7b 0a 09 69 66 20 7b  { $err } {..if {
1f9d0 20 5b 72 65 67 65 78 70 20 7b 6c 69 6e 65 3d 28   [regexp {line=(
1f9e0 5c 64 2b 29 5c 73 2b 70 6f 73 69 74 69 6f 6e 3d  \d+)\s+position=
1f9f0 28 5c 64 2b 29 7d 20 24 65 72 72 73 74 72 69 6e  (\d+)} $errstrin
1fa00 67 20 7b 7d 20 6c 69 6e 65 20 70 6f 73 5d 20 7d  g {} line pos] }
1fa10 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 20   {..    set idx 
1fa20 22 24 6c 69 6e 65 2e 5b 65 78 70 72 20 7b 24 70  "$line.[expr {$p
1fa30 6f 73 2d 31 7d 5d 22 0a 09 20 20 20 20 24 74 65  os-1}]"..    $te
1fa40 78 74 20 73 65 65 20 24 69 64 78 0a 09 7d 0a 09  xt see $idx..}..
1fa50 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69  WarnWin $errstri
1fa60 6e 67 20 20 20 0a 20 20 20 20 7d 0a 20 20 20 20  ng   .    }.    
1fa70 43 6f 6c 6f 72 69 7a 65 0a 20 20 20 20 24 74 65  Colorize.    $te
1fa80 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65  xt mark set inse
1fa90 72 74 20 24 69 64 78 0a 20 20 20 20 69 66 20 7b  rt $idx.    if {
1faa0 20 24 73 65 6c 20 6e 65 20 22 22 20 7d 20 7b 0a   $sel ne "" } {.
1fab0 09 65 76 61 6c 20 5b 6c 69 73 74 20 24 74 65 78  .eval [list $tex
1fac0 74 20 74 61 67 20 61 64 64 20 73 65 6c 5d 20 24  t tag add sel] $
1fad0 73 65 6c 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  sel.    }.    if
1fae0 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   { [info exists 
1faf0 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f  currentfile_seco
1fb00 6e 64 61 72 79 5d 20 26 26 20 24 63 75 72 72 65  ndary] && $curre
1fb10 6e 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65  ntfile eq $curre
1fb20 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79  ntfile_secondary
1fb30 20 7d 20 7b 0a 09 43 6f 6c 6f 72 69 7a 65 20 74   } {..Colorize t
1fb40 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20  ext_secondary.  
1fb50 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44    }.}..proc RamD
1fb60 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67 65 46  ebugger::ChangeF
1fb70 69 6c 65 54 79 70 65 20 7b 7d 20 7b 0a 20 20 20  ileType {} {.   
1fb80 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e   variable curren
1fb90 74 66 69 6c 65 0a 20 20 20 20 0a 20 20 20 20 73  tfile.    .    s
1fba0 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76  et filetype [Giv
1fbb0 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 65  eFileType $curre
1fbc0 6e 74 66 69 6c 65 5d 0a 20 20 20 20 41 64 64 46  ntfile].    AddF
1fbd0 69 6c 65 54 79 70 65 4d 65 6e 75 20 24 66 69 6c  ileTypeMenu $fil
1fbe0 65 74 79 70 65 0a 20 20 20 20 52 65 69 6e 73 74  etype.    Reinst
1fbf0 72 75 6d 65 6e 74 43 75 72 72 65 6e 74 46 69 6c  rumentCurrentFil
1fc00 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  e.}..proc RamDeb
1fc10 75 67 67 65 72 3a 3a 43 6c 6f 73 65 46 69 6c 65  ugger::CloseFile
1fc20 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62   {} {.    variab
1fc30 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20  le currentfile. 
1fc40 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64     variable Wind
1fc50 6f 77 46 69 6c 65 73 4c 69 73 74 0a 20 20 20 20  owFilesList.    
1fc60 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 46  variable WindowF
1fc70 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73  ilesListLineNums
1fc80 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70  .    variable op
1fc90 74 69 6f 6e 73 0a 0a 20 20 20 20 23 20 66 69 72  tions..    # fir
1fca0 73 74 2c 20 77 65 20 74 61 6b 65 20 69 74 20 6f  st, we take it o
1fcb0 75 74 20 74 6f 20 61 76 6f 69 64 20 72 65 6f 70  ut to avoid reop
1fcc0 65 6e 69 6e 67 20 69 74 0a 20 20 20 20 69 66 20  ening it.    if 
1fcd0 7b 20 5b 73 65 74 20 70 6f 73 20 5b 6c 73 65 61  { [set pos [lsea
1fce0 72 63 68 20 2d 65 78 61 63 74 20 24 57 69 6e 64  rch -exact $Wind
1fcf0 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 63 75 72  owFilesList $cur
1fd00 72 65 6e 74 66 69 6c 65 5d 5d 20 21 3d 20 2d 31  rentfile]] != -1
1fd10 20 7d 20 7b 0a 09 73 65 74 20 57 69 6e 64 6f 77   } {..set Window
1fd20 46 69 6c 65 73 4c 69 73 74 20 5b 6c 72 65 70 6c  FilesList [lrepl
1fd30 61 63 65 20 24 57 69 6e 64 6f 77 46 69 6c 65 73  ace $WindowFiles
1fd40 4c 69 73 74 20 24 70 6f 73 20 24 70 6f 73 5d 0a  List $pos $pos].
1fd50 09 73 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 73  .set WindowFiles
1fd60 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 5b 6c 72  ListLineNums [lr
1fd70 65 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 69  eplace $WindowFi
1fd80 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20  lesListLineNums 
1fd90 24 70 6f 73 20 24 70 6f 73 5d 0a 20 20 20 20 7d  $pos $pos].    }
1fda0 0a 0a 20 20 20 20 73 65 74 20 63 66 20 24 63 75  ..    set cf $cu
1fdb0 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 69  rrentfile..    i
1fdc0 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 57 69  f { [llength $Wi
1fdd0 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 5d 20 3e  ndowFilesList] >
1fde0 20 30 20 7d 20 7b 0a 09 4f 70 65 6e 46 69 6c 65   0 } {..OpenFile
1fdf0 46 20 5b 6c 69 6e 64 65 78 20 24 57 69 6e 64 6f  F [lindex $Windo
1fe00 77 46 69 6c 65 73 4c 69 73 74 20 30 5d 0a 20 20  wFilesList 0].  
1fe10 20 20 7d 20 65 6c 73 65 20 7b 20 4e 65 77 46 69    } else { NewFi
1fe20 6c 65 20 7d 0a 0a 20 20 20 20 23 20 73 65 63 6f  le }..    # seco
1fe30 6e 64 2c 20 77 65 20 74 61 6b 65 20 69 74 20 6f  nd, we take it o
1fe40 75 74 20 74 6f 20 6d 61 6b 65 20 69 74 20 64 69  ut to make it di
1fe50 73 73 61 70 65 61 72 20 66 6f 72 20 65 76 65 72  ssapear for ever
1fe60 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 0a 20   from the list. 
1fe70 20 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73     if { [set pos
1fe80 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74   [lsearch -exact
1fe90 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
1fea0 74 20 24 63 66 5d 5d 20 21 3d 20 2d 31 20 7d 20  t $cf]] != -1 } 
1feb0 7b 0a 09 73 65 74 20 57 69 6e 64 6f 77 46 69 6c  {..set WindowFil
1fec0 65 73 4c 69 73 74 20 5b 6c 72 65 70 6c 61 63 65  esList [lreplace
1fed0 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
1fee0 74 20 24 70 6f 73 20 24 70 6f 73 5d 0a 09 73 65  t $pos $pos]..se
1fef0 74 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73  t WindowFilesLis
1ff00 74 4c 69 6e 65 4e 75 6d 73 20 5b 6c 72 65 70 6c  tLineNums [lrepl
1ff10 61 63 65 20 24 57 69 6e 64 6f 77 46 69 6c 65 73  ace $WindowFiles
1ff20 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 24 70 6f  ListLineNums $po
1ff30 73 20 24 70 6f 73 5d 0a 20 20 20 20 7d 0a 20 20  s $pos].    }.  
1ff40 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20    if { [set pos 
1ff50 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20  [lsearch -exact 
1ff60 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46  $options(RecentF
1ff70 69 6c 65 73 29 20 24 63 66 5d 5d 20 21 3d 20 2d  iles) $cf]] != -
1ff80 31 20 7d 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f  1 } {..set optio
1ff90 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29 20  ns(RecentFiles) 
1ffa0 5b 6c 72 65 70 6c 61 63 65 20 24 6f 70 74 69 6f  [lreplace $optio
1ffb0 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29 20  ns(RecentFiles) 
1ffc0 24 70 6f 73 20 24 70 6f 73 5d 0a 20 20 20 20 7d  $pos $pos].    }
1ffd0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
1ffe0 67 67 65 72 3a 3a 4e 65 77 46 69 6c 65 20 7b 7d  gger::NewFile {}
1fff0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
20000 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61  marker.    varia
20010 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72  ble text.    var
20020 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20  iable files.    
20030 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d  variable instrum
20040 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20  entedfilesInfo. 
20050 20 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61     variable brea
20060 6b 70 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69  kpoints.    vari
20070 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65  able currentfile
20080 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75  .    variable cu
20090 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e  rrentfile_endlin
200a0 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  e.    variable c
200b0 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69  urrentfileIsModi
200c0 66 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c  fied.    variabl
200d0 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73  e WindowFilesLis
200e0 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57  t.    variable W
200f0 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69  indowFilesListLi
20100 6e 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61  neNums.    varia
20110 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f  ble currentfile_
20120 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61  secondary.    va
20130 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 63 6f  riable text_seco
20140 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 7b 20  ndary..    if { 
20150 5b 53 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d  [SaveFile ask] =
20160 3d 20 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20  = -1 } { return 
20170 7d 0a 0a 20 20 20 20 57 61 69 74 53 74 61 74 65  }..    WaitState
20180 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 5b 73 65   1..    if { [se
20190 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d  t pos [lsearch -
201a0 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69 6c  exact $WindowFil
201b0 65 73 4c 69 73 74 20 24 63 75 72 72 65 6e 74 66  esList $currentf
201c0 69 6c 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a  ile]] != -1 } {.
201d0 09 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20  .set line [scan 
201e0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73  [$text index ins
201f0 65 72 74 5d 20 25 64 5d 0a 09 73 65 74 20 57 69  ert] %d]..set Wi
20200 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e  ndowFilesListLin
20210 65 4e 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20  eNums [lreplace 
20220 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74  $WindowFilesList
20230 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70  LineNums $pos $p
20240 6f 73 20 24 6c 69 6e 65 5d 0a 20 20 20 20 7d 0a  os $line].    }.
20250 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74  .    set current
20260 66 69 6c 65 20 22 2a 4e 65 77 20 66 69 6c 65 2a  file "*New file*
20270 22 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e  ".    set curren
20280 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 61 75  tfile_endline au
20290 74 6f 0a 20 20 20 20 73 65 74 20 63 75 72 72 65  to.    set curre
202a0 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64  ntfileIsModified
202b0 20 30 0a 0a 20 20 20 20 24 6d 61 72 6b 65 72 20   0..    $marker 
202c0 64 65 6c 65 74 65 20 61 72 72 6f 77 0a 20 20 20  delete arrow.   
202d0 20 24 6d 61 72 6b 65 72 20 64 65 6c 65 74 65 20   $marker delete 
202e0 62 72 65 61 6b 0a 20 20 20 20 24 6d 61 72 6b 65  break.    $marke
202f0 72 20 64 65 6c 65 74 65 20 61 72 72 6f 77 62 72  r delete arrowbr
20300 65 61 6b 0a 20 20 20 20 73 65 74 20 65 64 20 5b  eak.    set ed [
20310 24 74 65 78 74 20 63 67 65 74 20 2d 65 64 69 74  $text cget -edit
20320 61 62 6c 65 5d 0a 20 20 20 20 24 74 65 78 74 20  able].    $text 
20330 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 31  conf -editable 1
20340 0a 20 20 20 20 24 74 65 78 74 20 63 6c 65 61 72  .    $text clear
20350 75 6e 64 6f 0a 20 20 20 20 73 65 74 20 74 65 78  undo.    set tex
20360 74 4f 20 5b 24 74 65 78 74 20 6f 72 69 67 69 6e  tO [$text origin
20370 61 6c 5d 0a 20 20 20 20 24 74 65 78 74 4f 20 64  al].    $textO d
20380 65 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 24  el 1.0 end.    $
20390 74 65 78 74 4f 20 74 61 67 20 61 64 64 20 6e 6f  textO tag add no
203a0 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20  rmal 1.0 end.   
203b0 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69   $text conf -edi
203c0 74 61 62 6c 65 20 24 65 64 0a 0a 20 20 20 20 46  table $ed..    F
203d0 69 6c 6c 4c 69 73 74 42 6f 78 0a 0a 20 20 20 20  illListBox..    
203e0 73 65 74 20 4e 75 6d 6c 69 6e 65 73 20 5b 73 63  set Numlines [sc
203f0 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20  an [$text index 
20400 65 6e 64 5d 20 25 64 5d 0a 20 20 20 20 73 65 74  end] %d].    set
20410 20 66 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65   font [$text cge
20420 74 20 2d 66 6f 6e 74 5d 0a 20 20 20 20 24 6d 61  t -font].    $ma
20430 72 6b 65 72 20 63 6f 6e 66 69 67 75 72 65 20 2d  rker configure -
20440 73 63 72 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c 69  scrollregion [li
20450 73 74 20 30 20 30 20 5b 77 69 6e 66 6f 20 72 65  st 0 0 [winfo re
20460 71 77 69 64 74 68 20 24 6d 61 72 6b 65 72 5d 20  qwidth $marker] 
20470 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
20480 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 65 78               [ex
20490 70 72 20 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66 6f  pr $Numlines*[fo
204a0 6e 74 20 6d 65 74 72 69 63 73 20 24 66 6f 6e 74  nt metrics $font
204b0 20 2d 6c 69 6e 65 73 70 61 63 65 5d 5d 5d 0a 20   -linespace]]]. 
204c0 20 20 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65     $text mark se
204d0 74 20 69 6e 73 65 72 74 20 31 2e 30 0a 20 20 20  t insert 1.0.   
204e0 20 24 74 65 78 74 20 73 65 65 20 31 2e 30 0a 20   $text see 1.0. 
204f0 20 20 20 73 65 74 20 69 6e 73 74 72 75 6d 65 6e     set instrumen
20500 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75  tedfilesInfo($cu
20510 72 72 65 6e 74 66 69 6c 65 29 20 22 22 0a 0a 20  rrentfile) "".. 
20520 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b 66 69     set_title [fi
20530 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74  le tail $current
20540 66 69 6c 65 5d 0a 0a 20 20 20 20 24 74 65 78 74  file]..    $text
20550 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20   conf -editable 
20560 31 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66  1..    if { [inf
20570 6f 20 65 78 69 73 74 73 20 63 75 72 72 65 6e 74  o exists current
20580 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20  file_secondary] 
20590 7d 20 7b 0a 09 69 66 20 7b 20 24 63 75 72 72 65  } {..if { $curre
205a0 6e 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65  ntfile eq $curre
205b0 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79  ntfile_secondary
205c0 20 7d 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20   } {..    $text 
205d0 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74  configure -synct
205e0 65 78 74 77 69 64 67 65 74 20 24 74 65 78 74 5f  extwidget $text_
205f0 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73  secondary..} els
20600 65 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63  e {..    $text c
20610 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65  onfigure -syncte
20620 78 74 77 69 64 67 65 74 20 22 22 0a 09 7d 0a 20  xtwidget ""..}. 
20630 20 20 20 7d 0a 20 20 20 20 4d 61 6e 61 67 65 50     }.    ManageP
20640 6f 73 69 74 69 6f 6e 73 49 6d 61 67 65 73 0a 20  ositionsImages. 
20650 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a 20     WaitState 0. 
20660 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 70     return 0.}..p
20670 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
20680 3a 5f 73 61 76 65 66 69 6c 65 5f 6f 6e 6c 79 20  :_savefile_only 
20690 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76  { args } {.    v
206a0 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65  ariable FileSave
206b0 48 61 6e 64 6c 65 72 73 0a 0a 20 20 20 20 73 65  Handlers..    se
206c0 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20  t optional {..{ 
206d0 2d 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f 72  -file_has_been_r
206e0 65 61 64 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a  ead boolean 0 }.
206f0 09 7b 20 2d 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  .{ -file_endline
20700 20 63 72 6c 66 7c 6c 66 7c 61 75 74 6f 20 61 75   crlf|lf|auto au
20710 74 6f 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65  to}.    }.    se
20720 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 66 69  t compulsory "fi
20730 6c 65 20 64 61 74 61 22 0a 20 20 20 20 70 61 72  le data".    par
20740 73 65 5f 61 72 67 73 20 24 6f 70 74 69 6f 6e 61  se_args $optiona
20750 6c 20 24 63 6f 6d 70 75 6c 73 6f 72 79 20 24 61  l $compulsory $a
20760 72 67 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 66  rgs..    if { $f
20770 69 6c 65 20 65 71 20 22 2a 4d 61 63 72 6f 73 2a  ile eq "*Macros*
20780 22 20 7d 20 7b 0a 09 53 61 76 65 4d 61 63 72 6f  " } {..SaveMacro
20790 73 44 6f 63 75 6d 65 6e 74 20 24 64 61 74 61 0a  sDocument $data.
207a0 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b      } elseif { [
207b0 69 6e 66 6f 20 65 78 69 73 74 73 20 46 69 6c 65  info exists File
207c0 53 61 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69  SaveHandlers($fi
207d0 6c 65 29 5d 20 7d 20 7b 0a 09 73 65 74 20 65 72  le)] } {..set er
207e0 72 20 5b 63 61 74 63 68 20 7b 65 76 61 6c 20 24  r [catch {eval $
207f0 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 73  FileSaveHandlers
20800 28 24 66 69 6c 65 29 20 5b 6c 69 73 74 20 24 66  ($file) [list $f
20810 69 6c 65 20 24 64 61 74 61 5d 7d 20 65 72 72 73  ile $data]} errs
20820 74 72 69 6e 67 5d 0a 09 69 66 20 7b 20 24 65 72  tring]..if { $er
20830 72 20 7d 20 7b 20 65 72 72 6f 72 20 5b 5f 20 22  r } { error [_ "
20840 45 72 72 6f 72 20 73 61 76 69 6e 67 20 66 69 6c  Error saving fil
20850 65 20 27 25 73 27 20 28 25 73 29 22 20 24 66 69  e '%s' (%s)" $fi
20860 6c 65 20 24 65 72 72 73 74 72 69 6e 67 5d 20 7d  le $errstring] }
20870 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
20880 65 74 20 70 65 72 6d 20 22 22 0a 09 69 66 20 7b  et perm ""..if {
20890 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66   [file exists $f
208a0 69 6c 65 5d 20 7d 20 7b 0a 09 20 20 20 20 69 66  ile] } {..    if
208b0 20 7b 20 24 66 69 6c 65 5f 68 61 73 5f 62 65 65   { $file_has_bee
208c0 6e 5f 72 65 61 64 20 7d 20 7b 0a 09 09 73 65 74  n_read } {...set
208d0 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 6f 70   err [catch { op
208e0 65 6e 20 24 66 69 6c 65 20 72 2b 20 7d 20 66 6f  en $file r+ } fo
208f0 75 74 5d 0a 09 09 69 66 20 7b 20 24 65 72 72 20  ut]...if { $err 
20900 7d 20 7b 20 65 72 72 6f 72 20 5b 5f 20 22 45 72  } { error [_ "Er
20910 72 6f 72 20 73 61 76 69 6e 67 20 66 69 6c 65 20  ror saving file 
20920 27 25 73 27 22 20 24 66 69 6c 65 5d 20 7d 0a 09  '%s'" $file] }..
20930 09 63 68 61 6e 20 74 72 75 6e 63 61 74 65 20 24  .chan truncate $
20940 66 6f 75 74 20 30 0a 09 20 20 20 20 7d 20 65 6c  fout 0..    } el
20950 73 65 20 7b 0a 09 09 69 66 20 7b 20 24 3a 3a 74  se {...if { $::t
20960 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
20970 66 6f 72 6d 29 20 65 71 20 22 75 6e 69 78 22 20  form) eq "unix" 
20980 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 70 65  } {...    set pe
20990 72 6d 20 5b 66 69 6c 65 20 61 74 74 72 69 62 75  rm [file attribu
209a0 74 65 73 20 24 66 69 6c 65 20 2d 70 65 72 6d 69  tes $file -permi
209b0 73 73 69 6f 6e 73 5d 0a 09 09 7d 0a 09 09 73 65  ssions]...}...se
209c0 74 20 69 63 20 30 0a 09 09 77 68 69 6c 65 20 7b  t ic 0...while {
209d0 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66   [file exists $f
209e0 69 6c 65 2e 7e 24 69 63 7e 5d 20 7d 20 7b 20 69  ile.~$ic~] } { i
209f0 6e 63 72 20 69 63 20 7d 20 20 20 20 20 0a 09 09  ncr ic }     ...
20a00 73 65 74 20 72 65 6e 66 69 6c 65 20 24 66 69 6c  set renfile $fil
20a10 65 2e 7e 24 69 63 7e 0a 09 09 73 65 74 20 65 72  e.~$ic~...set er
20a20 72 20 5b 63 61 74 63 68 20 7b 20 66 69 6c 65 20  r [catch { file 
20a30 72 65 6e 61 6d 65 20 2d 66 6f 72 63 65 20 24 66  rename -force $f
20a40 69 6c 65 20 24 72 65 6e 66 69 6c 65 20 7d 20 65  ile $renfile } e
20a50 72 72 73 74 72 69 6e 67 5d 0a 09 09 69 66 20 7b  rrstring]...if {
20a60 20 24 65 72 72 20 7d 20 7b 20 65 72 72 6f 72 20   $err } { error 
20a70 5b 5f 20 22 45 72 72 6f 72 20 73 61 76 69 6e 67  [_ "Error saving
20a80 20 66 69 6c 65 20 27 25 73 27 20 28 25 73 29 22   file '%s' (%s)"
20a90 20 24 66 69 6c 65 20 24 65 72 72 73 74 72 69 6e   $file $errstrin
20aa0 67 5d 20 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09  g] }..    }..}..
20ab0 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
20ac0 74 73 20 66 6f 75 74 5d 20 7d 20 7b 0a 09 20 20  ts fout] } {..  
20ad0 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68    set err [catch
20ae0 20 7b 20 6f 70 65 6e 20 24 66 69 6c 65 20 77 20   { open $file w 
20af0 7d 20 66 6f 75 74 5d 0a 09 20 20 20 20 69 66 20  } fout]..    if 
20b00 7b 20 24 65 72 72 20 7d 20 7b 20 65 72 72 6f 72  { $err } { error
20b10 20 5b 5f 20 22 45 72 72 6f 72 20 73 61 76 69 6e   [_ "Error savin
20b20 67 20 66 69 6c 65 20 27 25 73 27 22 20 24 66 69  g file '%s'" $fi
20b30 6c 65 5d 20 7d 0a 09 7d 0a 09 66 63 6f 6e 66 69  le] }..}..fconfi
20b40 67 75 72 65 20 24 66 6f 75 74 20 2d 74 72 61 6e  gure $fout -tran
20b50 73 6c 61 74 69 6f 6e 20 24 66 69 6c 65 5f 65 6e  slation $file_en
20b60 64 6c 69 6e 65 0a 0a 09 73 65 74 20 68 65 61 64  dline...set head
20b70 65 72 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65  er [string range
20b80 20 24 64 61 74 61 20 30 20 32 35 35 5d 0a 09 73   $data 0 255]..s
20b90 65 74 20 72 65 78 20 7b 2d 5c 2a 2d 2e 2a 63 6f  et rex {-\*-.*co
20ba0 64 69 6e 67 3a 5c 73 2a 75 74 66 2d 38 5c 73 2a  ding:\s*utf-8\s*
20bb0 3b 2e 2a 2d 5c 2a 2d 7c 65 6e 63 6f 64 69 6e 67  ;.*-\*-|encoding
20bc0 3d 5b 27 5c 22 5d 75 74 66 2d 38 5b 27 5c 22 5d  =['\"]utf-8['\"]
20bd0 7d 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20  }..if { [regexp 
20be0 2d 6e 6f 63 61 73 65 20 2d 6c 69 6e 65 20 2d 2d  -nocase -line --
20bf0 20 24 72 65 78 20 24 68 65 61 64 65 72 5d 20 7d   $rex $header] }
20c00 20 7b 0a 09 20 20 20 20 66 63 6f 6e 66 69 67 75   {..    fconfigu
20c10 72 65 20 24 66 6f 75 74 20 2d 65 6e 63 6f 64 69  re $fout -encodi
20c20 6e 67 20 75 74 66 2d 38 0a 09 7d 0a 09 70 75 74  ng utf-8..}..put
20c30 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f  s -nonewline $fo
20c40 75 74 20 24 64 61 74 61 0a 09 63 6c 6f 73 65 20  ut $data..close 
20c50 24 66 6f 75 74 0a 09 69 66 20 7b 20 24 70 65 72  $fout..if { $per
20c60 6d 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20 20 20  m ne "" } {..   
20c70 20 63 61 74 63 68 20 7b 20 66 69 6c 65 20 61 74   catch { file at
20c80 74 72 69 62 75 74 65 73 20 24 66 69 6c 65 20 2d  tributes $file -
20c90 70 65 72 6d 69 73 73 69 6f 6e 73 20 24 70 65 72  permissions $per
20ca0 6d 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e  m }..}..if { [in
20cb0 66 6f 20 65 78 69 73 74 73 20 72 65 6e 66 69 6c  fo exists renfil
20cc0 65 5d 20 7d 20 7b 0a 09 20 20 20 20 66 69 6c 65  e] } {..    file
20cd0 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 24   delete -force $
20ce0 72 65 6e 66 69 6c 65 0a 09 7d 0a 20 20 20 20 7d  renfile..}.    }
20cf0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
20d00 67 67 65 72 3a 3a 53 61 76 65 46 69 6c 65 46 20  gger::SaveFileF 
20d10 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76  { args } {.    v
20d20 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20  ariable text.   
20d30 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e   variable curren
20d40 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62  tfile.    variab
20d50 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65  le currentfile_e
20d60 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61  ndline.    varia
20d70 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 49  ble currentfileI
20d80 73 4d 6f 64 69 66 69 65 64 0a 20 20 20 20 76 61  sModified.    va
20d90 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20  riable files.   
20da0 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 5f   variable files_
20db0 65 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69  endline.    vari
20dc0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
20dd0 64 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69  dfilesP.    vari
20de0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
20df0 64 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69  dfilesR.    vari
20e00 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
20e10 64 66 69 6c 65 73 54 69 6d 65 0a 20 20 20 20 76  dfilesTime.    v
20e20 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65  ariable instrume
20e30 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 0a 20 20  ntedfilesSent.  
20e40 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73    variable files
20e50 6d 74 69 6d 65 0a 20 20 20 20 76 61 72 69 61 62  mtime.    variab
20e60 6c 65 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c  le FileSaveHandl
20e70 65 72 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ers.    variable
20e80 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74   WindowFilesList
20e90 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69  .    variable Wi
20ea0 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e  ndowFilesListLin
20eb0 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62  eNums.    variab
20ec0 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76  le options.    v
20ed0 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
20ee0 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20  ile_secondary.  
20ef0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f    variable text_
20f00 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 73  secondary..    s
20f10 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b  et optional {..{
20f20 20 2d 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f   -file_has_been_
20f30 72 65 61 64 20 62 6f 6f 6c 65 61 6e 20 30 20 7d  read boolean 0 }
20f40 0a 09 7b 20 2d 66 69 6c 65 5f 65 6e 64 6c 69 6e  ..{ -file_endlin
20f50 65 20 63 72 6c 66 7c 6c 66 7c 61 75 74 6f 20 61  e crlf|lf|auto a
20f60 75 74 6f 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73  uto}.    }.    s
20f70 65 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 66  et compulsory "f
20f80 69 6c 65 22 0a 20 20 20 20 70 61 72 73 65 5f 61  ile".    parse_a
20f90 72 67 73 20 24 6f 70 74 69 6f 6e 61 6c 20 24 63  rgs $optional $c
20fa0 6f 6d 70 75 6c 73 6f 72 79 20 24 61 72 67 73 0a  ompulsory $args.
20fb0 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 20 31  .    WaitState 1
20fc0 0a 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20  .    SetMessage 
20fd0 5b 5f 20 22 53 61 76 69 6e 67 20 66 69 6c 65 20  [_ "Saving file 
20fe0 27 25 73 27 22 20 24 66 69 6c 65 5d 2e 2e 2e 0a  '%s'" $file]....
20ff0 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74 79 70  .    set filetyp
21000 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65 20  e [GiveFileType 
21010 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20  $currentfile].  
21020 20 20 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74    .    if { $opt
21030 69 6f 6e 73 28 73 70 61 63 65 73 5f 74 6f 5f 74  ions(spaces_to_t
21040 61 62 73 29 20 7c 7c 20 24 66 69 6c 65 74 79 70  abs) || $filetyp
21050 65 20 65 71 20 22 4d 61 6b 65 66 69 6c 65 22 20  e eq "Makefile" 
21060 7d 20 7b 0a 09 73 65 74 20 6d 61 70 20 5b 6c 69  } {..set map [li
21070 73 74 20 22 5c 6e 5b 73 74 72 69 6e 67 20 72 65  st "\n[string re
21080 70 65 61 74 20 7b 20 7d 20 31 36 5d 22 20 22 5c  peat { } 16]" "\
21090 6e 5c 74 5c 74 22 20 22 5c 6e 5b 73 74 72 69 6e  n\t\t" "\n[strin
210a0 67 20 72 65 70 65 61 74 20 7b 20 7d 20 38 5d 22  g repeat { } 8]"
210b0 20 22 5c 6e 5c 74 22 5d 0a 20 20 20 20 7d 20 65   "\n\t"].    } e
210c0 6c 73 65 20 7b 0a 09 73 65 74 20 6d 61 70 20 22  lse {..set map "
210d0 22 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  ".    }.    set 
210e0 66 69 6c 65 73 28 24 66 69 6c 65 29 20 5b 73 74  files($file) [st
210f0 72 69 6e 67 20 6d 61 70 20 24 6d 61 70 20 5b 24  ring map $map [$
21100 74 65 78 74 20 67 65 74 20 31 2e 30 20 65 6e 64  text get 1.0 end
21110 2d 31 63 5d 5d 0a 20 20 20 20 73 65 74 20 66 69  -1c]].    set fi
21120 6c 65 73 5f 65 6e 64 6c 69 6e 65 28 24 66 69 6c  les_endline($fil
21130 65 29 20 24 66 69 6c 65 5f 65 6e 64 6c 69 6e 65  e) $file_endline
21140 0a 0a 20 20 20 20 73 65 74 20 65 72 72 20 5b 63  ..    set err [c
21150 61 74 63 68 20 7b 20 5f 73 61 76 65 66 69 6c 65  atch { _savefile
21160 5f 6f 6e 6c 79 20 2d 66 69 6c 65 5f 65 6e 64 6c  _only -file_endl
21170 69 6e 65 20 24 66 69 6c 65 5f 65 6e 64 6c 69 6e  ine $file_endlin
21180 65 20 5c 0a 09 09 2d 66 69 6c 65 5f 68 61 73 5f  e \...-file_has_
21190 62 65 65 6e 5f 72 65 61 64 20 24 66 69 6c 65 5f  been_read $file_
211a0 68 61 73 5f 62 65 65 6e 5f 72 65 61 64 20 5c 0a  has_been_read \.
211b0 09 09 24 66 69 6c 65 20 24 66 69 6c 65 73 28 24  ..$file $files($
211c0 66 69 6c 65 29 7d 20 65 72 72 73 74 72 69 6e 67  file)} errstring
211d0 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24 65 72 72  ]..    if { $err
211e0 20 7d 20 7b 0a 09 57 61 69 74 53 74 61 74 65 20   } {..WaitState 
211f0 30 0a 09 53 65 74 4d 65 73 73 61 67 65 20 22 22  0..SetMessage ""
21200 0a 09 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74  ..WarnWin $errst
21210 72 69 6e 67 20 24 74 65 78 74 0a 09 72 65 74 75  ring $text..retu
21220 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20  rn.    }..    # 
21230 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20 3d      if { $file =
21240 3d 20 22 2a 4d 61 63 72 6f 73 2a 22 20 7d 20 7b  = "*Macros*" } {
21250 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 53  .    #         S
21260 61 76 65 4d 61 63 72 6f 73 44 6f 63 75 6d 65 6e  aveMacrosDocumen
21270 74 20 24 66 69 6c 65 73 28 24 66 69 6c 65 29 0a  t $files($file).
21280 20 20 20 20 23 20 20 20 20 20 7d 20 65 6c 73 65      #     } else
21290 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
212a0 73 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65  s FileSaveHandle
212b0 72 73 28 24 66 69 6c 65 29 5d 20 7d 20 7b 0a 20  rs($file)] } {. 
212c0 20 20 20 23 20 20 20 20 20 20 20 20 20 73 65 74     #         set
212d0 20 65 72 72 20 5b 63 61 74 63 68 20 7b 65 76 61   err [catch {eva
212e0 6c 20 24 46 69 6c 65 53 61 76 65 48 61 6e 64 6c  l $FileSaveHandl
212f0 65 72 73 28 24 66 69 6c 65 29 20 5b 6c 69 73 74  ers($file) [list
21300 20 24 66 69 6c 65 20 24 66 69 6c 65 73 28 24 66   $file $files($f
21310 69 6c 65 29 5d 7d 20 65 72 72 73 74 72 69 6e 67  ile)]} errstring
21320 5d 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  ].    #         
21330 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 20 20  if { $err } {.  
21340 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
21350 57 61 69 74 53 74 61 74 65 20 30 0a 20 20 20 20  WaitState 0.    
21360 23 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65  #             Se
21370 74 4d 65 73 73 61 67 65 20 22 22 0a 20 20 20 20  tMessage "".    
21380 23 20 20 20 20 20 20 20 20 20 20 20 20 20 57 61  #             Wa
21390 72 6e 57 69 6e 20 22 45 72 72 6f 72 20 73 61 76  rnWin "Error sav
213a0 69 6e 67 20 66 69 6c 65 20 27 24 66 69 6c 65 27  ing file '$file'
213b0 20 28 24 65 72 72 73 74 72 69 6e 67 29 22 20 24   ($errstring)" $
213c0 74 65 78 74 0a 20 20 20 20 23 20 20 20 20 20 20  text.    #      
213d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20         return.  
213e0 20 20 23 20 20 20 20 20 20 20 20 20 7d 0a 20 20    #         }.  
213f0 20 20 23 20 20 20 20 20 7d 20 65 6c 73 65 20 7b    #     } else {
21400 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 73  .    #         s
21410 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20  et err [catch { 
21420 6f 70 65 6e 20 24 66 69 6c 65 20 77 20 7d 20 66  open $file w } f
21430 6f 75 74 5d 0a 20 20 20 20 23 20 20 20 20 20 20  out].    #      
21440 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b     if { $err } {
21450 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20  .    #          
21460 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a 20     WaitState 0. 
21470 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20     #            
21480 20 53 65 74 4d 65 73 73 61 67 65 20 22 22 0a 20   SetMessage "". 
21490 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20     #            
214a0 20 57 61 72 6e 57 69 6e 20 22 45 72 72 6f 72 20   WarnWin "Error 
214b0 73 61 76 69 6e 67 20 66 69 6c 65 20 27 24 66 69  saving file '$fi
214c0 6c 65 27 22 20 24 74 65 78 74 0a 20 20 20 20 23  le'" $text.    #
214d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
214e0 75 72 6e 0a 20 20 20 20 23 20 20 20 20 20 20 20  urn.    #       
214f0 20 20 7d 0a 20 20 20 20 23 20 20 20 20 20 20 20    }.    #       
21500 20 20 73 65 74 20 68 65 61 64 65 72 20 5b 73 74    set header [st
21510 72 69 6e 67 20 72 61 6e 67 65 20 24 66 69 6c 65  ring range $file
21520 73 28 24 66 69 6c 65 29 20 30 20 32 35 35 5d 0a  s($file) 0 255].
21530 20 20 20 20 23 20 20 20 20 20 20 20 20 20 69 66      #         if
21540 20 7b 20 5b 72 65 67 65 78 70 20 2d 2d 20 7b 2d   { [regexp -- {-
21550 5c 2a 2d 5c 73 2a 63 6f 64 69 6e 67 3a 5c 73 2a  \*-\s*coding:\s*
21560 75 74 66 2d 38 5c 73 2a 3b 5c 73 2a 2d 5c 2a 2d  utf-8\s*;\s*-\*-
21570 7d 20 24 68 65 61 64 65 72 5d 20 7d 20 7b 0a 20  } $header] } {. 
21580 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20     #            
21590 20 66 63 6f 6e 66 69 67 75 72 65 20 24 66 6f 75   fconfigure $fou
215a0 74 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d  t -encoding utf-
215b0 38 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  8.    #         
215c0 7d 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  }.    #         
215d0 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20  puts -nonewline 
215e0 24 66 6f 75 74 20 24 66 69 6c 65 73 28 24 66 69  $fout $files($fi
215f0 6c 65 29 0a 20 20 20 20 23 20 20 20 20 20 20 20  le).    #       
21600 20 20 63 6c 6f 73 65 20 24 66 6f 75 74 0a 20 20    close $fout.  
21610 20 20 23 20 20 20 20 20 7d 0a 20 20 20 20 0a 20    #     }.    . 
21620 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20 6e 65     if { $file ne
21630 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 7d 20   $currentfile } 
21640 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69  {..set currentfi
21650 6c 65 20 24 66 69 6c 65 0a 09 73 65 74 20 63 75  le $file..set cu
21660 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e  rrentfile_endlin
21670 65 20 24 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a  e $file_endline.
21680 09 73 65 74 20 63 68 61 6e 67 65 64 5f 6e 61 6d  .set changed_nam
21690 65 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  e 1.    } else {
216a0 0a 09 73 65 74 20 63 68 61 6e 67 65 64 5f 6e 61  ..set changed_na
216b0 6d 65 20 30 0a 20 20 20 20 7d 0a 0a 20 20 20 20  me 0.    }..    
216c0 63 61 74 63 68 20 7b 20 75 6e 73 65 74 20 69 6e  catch { unset in
216d0 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50  strumentedfilesP
216e0 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69  ($currentfile) i
216f0 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
21700 52 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20  R($currentfile) 
21710 7d 0a 20 20 20 20 63 61 74 63 68 20 7b 20 75 6e  }.    catch { un
21720 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  set instrumented
21730 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72 65  filesTime($curre
21740 6e 74 66 69 6c 65 29 20 7d 0a 20 20 20 20 63 61  ntfile) }.    ca
21750 74 63 68 20 7b 20 75 6e 73 65 74 20 69 6e 73 74  tch { unset inst
21760 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 6e  rumentedfilesSen
21770 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20  t($currentfile) 
21780 7d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 5f 74  }.    .    set_t
21790 69 74 6c 65 20 5b 66 69 6c 65 20 74 61 69 6c 20  itle [file tail 
217a0 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20  $currentfile].  
217b0 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c    set currentfil
217c0 65 49 73 4d 6f 64 69 66 69 65 64 20 30 0a 20 20  eIsModified 0.  
217d0 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69    if { [string i
217e0 6e 64 65 78 20 24 66 69 6c 65 20 30 5d 20 21 3d  ndex $file 0] !=
217f0 20 22 2a 22 20 7d 20 7b 0a 09 73 65 74 20 66 69   "*" } {..set fi
21800 6c 65 73 6d 74 69 6d 65 28 24 63 75 72 72 65 6e  lesmtime($curren
21810 74 66 69 6c 65 29 20 5b 66 69 6c 65 20 6d 74 69  tfile) [file mti
21820 6d 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 7d 0a  me $file].    }.
21830 20 20 20 20 73 65 74 20 6c 69 6e 65 6e 75 6d 20      set linenum 
21840 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64  [scan [$text ind
21850 65 78 20 69 6e 73 65 72 74 5d 20 25 64 5d 0a 20  ex insert] %d]. 
21860 20 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73     if { [set pos
21870 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74   [lsearch -exact
21880 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
21890 74 20 24 66 69 6c 65 5d 5d 20 21 3d 20 2d 31 20  t $file]] != -1 
218a0 7d 20 7b 0a 09 73 65 74 20 57 69 6e 64 6f 77 46  } {..set WindowF
218b0 69 6c 65 73 4c 69 73 74 20 5b 6c 72 65 70 6c 61  ilesList [lrepla
218c0 63 65 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c  ce $WindowFilesL
218d0 69 73 74 20 24 70 6f 73 20 24 70 6f 73 5d 0a 09  ist $pos $pos]..
218e0 73 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c  set WindowFilesL
218f0 69 73 74 4c 69 6e 65 4e 75 6d 73 20 5b 6c 72 65  istLineNums [lre
21900 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 69 6c  place $WindowFil
21910 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 24  esListLineNums $
21920 70 6f 73 20 24 70 6f 73 5d 0a 20 20 20 20 7d 0a  pos $pos].    }.
21930 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67      if { [string
21940 20 69 6e 64 65 78 20 24 66 69 6c 65 20 30 5d 20   index $file 0] 
21950 21 3d 20 22 2a 22 20 7c 7c 20 5b 69 6e 66 6f 20  != "*" || [info 
21960 65 78 69 73 74 73 20 46 69 6c 65 53 61 76 65 48  exists FileSaveH
21970 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 5d 20  andlers($file)] 
21980 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 57 69 6e  } {..lappend Win
21990 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 69  dowFilesList $fi
219a0 6c 65 0a 09 6c 61 70 70 65 6e 64 20 57 69 6e 64  le..lappend Wind
219b0 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e  owFilesListLineN
219c0 75 6d 73 20 24 6c 69 6e 65 6e 75 6d 0a 20 20 20  ums $linenum.   
219d0 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72   }.    if { [str
219e0 69 6e 67 20 69 6e 64 65 78 20 24 66 69 6c 65 20  ing index $file 
219f0 30 5d 20 21 3d 20 22 2a 22 20 7d 20 7b 0a 09 69  0] != "*" } {..i
21a00 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74  f { ![info exist
21a10 73 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74  s options(Recent
21a20 46 69 6c 65 73 29 5d 20 7d 20 7b 0a 09 20 20 20  Files)] } {..   
21a30 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 65 63   set options(Rec
21a40 65 6e 74 46 69 6c 65 73 29 20 22 22 0a 09 7d 0a  entFiles) ""..}.
21a50 09 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72  .set ipos [lsear
21a60 63 68 66 69 6c 65 20 24 6f 70 74 69 6f 6e 73 28  chfile $options(
21a70 52 65 63 65 6e 74 46 69 6c 65 73 29 20 24 66 69  RecentFiles) $fi
21a80 6c 65 5d 0a 09 69 66 20 7b 20 24 69 70 6f 73 20  le]..if { $ipos 
21a90 21 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 73  != -1 } {..    s
21aa0 65 74 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e  et options(Recen
21ab0 74 46 69 6c 65 73 29 20 5b 6c 72 65 70 6c 61 63  tFiles) [lreplac
21ac0 65 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e  e $options(Recen
21ad0 74 46 69 6c 65 73 29 20 24 69 70 6f 73 20 24 69  tFiles) $ipos $i
21ae0 70 6f 73 5d 0a 09 7d 0a 09 73 65 74 20 6f 70 74  pos]..}..set opt
21af0 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73  ions(RecentFiles
21b00 29 20 5b 6c 69 6e 73 65 72 74 20 24 6f 70 74 69  ) [linsert $opti
21b10 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29  ons(RecentFiles)
21b20 20 30 20 24 66 69 6c 65 5d 0a 09 69 66 20 7b 20   0 $file]..if { 
21b30 5b 6c 6c 65 6e 67 74 68 20 24 6f 70 74 69 6f 6e  [llength $option
21b40 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29 5d 20  s(RecentFiles)] 
21b50 3e 20 31 30 20 7d 20 7b 0a 09 20 20 20 20 73 65  > 10 } {..    se
21b60 74 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74  t options(Recent
21b70 46 69 6c 65 73 29 20 5b 6c 72 65 70 6c 61 63 65  Files) [lreplace
21b80 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74   $options(Recent
21b90 46 69 6c 65 73 29 20 31 30 20 65 6e 64 5d 0a 09  Files) 10 end]..
21ba0 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 64  }..set options(d
21bb0 65 66 61 75 6c 74 64 69 72 29 20 5b 66 69 6c 65  efaultdir) [file
21bc0 20 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a   dirname $file].
21bd0 09 23 46 69 6c 6c 4c 69 73 74 42 6f 78 0a 20 20  .#FillListBox.  
21be0 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 63 68    }.    if { $ch
21bf0 61 6e 67 65 64 5f 6e 61 6d 65 20 7d 20 7b 0a 09  anged_name } {..
21c00 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69  set filetype [Gi
21c10 76 65 46 69 6c 65 54 79 70 65 20 24 66 69 6c 65  veFileType $file
21c20 5d 0a 09 41 64 64 46 69 6c 65 54 79 70 65 4d 65  ]..AddFileTypeMe
21c30 6e 75 20 24 66 69 6c 65 74 79 70 65 0a 20 20 20  nu $filetype.   
21c40 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66   }.    if { [inf
21c50 6f 20 65 78 69 73 74 73 20 63 75 72 72 65 6e 74  o exists current
21c60 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20  file_secondary] 
21c70 7d 20 7b 0a 09 69 66 20 7b 20 24 63 75 72 72 65  } {..if { $curre
21c80 6e 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65  ntfile eq $curre
21c90 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79  ntfile_secondary
21ca0 20 7d 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20   } {..    $text 
21cb0 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74  configure -synct
21cc0 65 78 74 77 69 64 67 65 74 20 24 74 65 78 74 5f  extwidget $text_
21cd0 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73  secondary..} els
21ce0 65 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63  e {..    $text c
21cf0 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65  onfigure -syncte
21d00 78 74 77 69 64 67 65 74 20 22 22 0a 09 7d 0a 20  xtwidget ""..}. 
21d10 20 20 20 7d 0a 20 20 20 20 4d 61 6e 61 67 65 50     }.    ManageP
21d20 6f 73 69 74 69 6f 6e 73 49 6d 61 67 65 73 0a 20  ositionsImages. 
21d30 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a     RamDebugger::
21d40 43 56 53 3a 3a 69 6e 64 69 63 61 74 6f 72 5f 75  CVS::indicator_u
21d50 70 64 61 74 65 0a 20 20 20 20 57 61 69 74 53 74  pdate.    WaitSt
21d60 61 74 65 20 30 0a 20 20 20 20 53 65 74 4d 65 73  ate 0.    SetMes
21d70 73 61 67 65 20 5b 5f 20 22 53 61 76 65 64 20 66  sage [_ "Saved f
21d80 69 6c 65 20 27 25 73 27 22 20 24 66 69 6c 65 5d  ile '%s'" $file]
21d90 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
21da0 67 67 65 72 3a 3a 56 69 65 77 49 6e 73 74 72 75  gger::ViewInstru
21db0 6d 65 6e 74 65 64 46 69 6c 65 20 7b 20 77 68 61  mentedFile { wha
21dc0 74 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  t } {.    variab
21dd0 6c 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76 61  le marker.    va
21de0 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20  riable text.    
21df0 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74  variable current
21e00 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c  file.    variabl
21e10 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e  e currentfile_en
21e20 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62  dline.    variab
21e30 6c 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69  le WindowFilesLi
21e40 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  st.    variable 
21e50 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c  WindowFilesListL
21e60 69 6e 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69  ineNums.    vari
21e70 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
21e80 64 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69  dfilesP.    vari
21e90 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
21ea0 64 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69  dfilesR.    vari
21eb0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
21ec0 64 66 69 6c 65 73 49 6e 66 6f 0a 20 20 20 20 76  dfilesInfo.    v
21ed0 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65  ariable instrume
21ee0 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 0a 20 20  ntedfilesTime.  
21ef0 20 20 76 61 72 69 61 62 6c 65 20 67 64 62 6c 6f    variable gdblo
21f00 67 0a 0a 20 20 20 20 69 66 20 7b 20 5b 53 61 76  g..    if { [Sav
21f10 65 46 69 6c 65 20 61 73 6b 5d 20 3d 3d 20 2d 31  eFile ask] == -1
21f20 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20   } { return }.. 
21f30 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74     if { $current
21f40 66 69 6c 65 20 3d 3d 20 22 22 20 26 26 20 24 77  file == "" && $w
21f50 68 61 74 20 21 3d 20 22 67 64 62 22 20 7d 20 7b  hat != "gdb" } {
21f60 0a 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68  ..WarnWin [_ "Th
21f70 65 72 65 20 69 73 20 6e 6f 20 66 69 6c 65 20 74  ere is no file t
21f80 6f 20 73 65 65 20 69 74 73 20 69 6e 73 74 72 75  o see its instru
21f90 6d 65 6e 74 65 64 20 66 69 6c 65 22 5d 0a 09 72  mented file"]..r
21fa0 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20  eturn.    }.    
21fb0 69 66 20 7b 20 24 77 68 61 74 20 3d 3d 20 22 69  if { $what == "i
21fc0 6e 73 74 72 75 6d 65 6e 74 65 64 50 22 20 7d 20  nstrumentedP" } 
21fd0 7b 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65  {..if { ![info e
21fe0 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74  xists instrument
21ff0 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e  edfilesP($curren
22000 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 20  tfile)] } {..   
22010 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 65   WarnWin [_ "The
22020 72 65 20 69 73 20 6e 6f 20 69 6e 73 74 72 75 6d  re is no instrum
22030 65 6e 74 65 64 20 66 69 6c 65 20 50 20 66 6f 72  ented file P for
22040 20 66 69 6c 65 20 27 25 73 27 22 20 24 63 75 72   file '%s'" $cur
22050 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 72  rentfile]..    r
22060 65 74 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 20 65  eturn..}.    } e
22070 6c 73 65 69 66 20 7b 20 24 77 68 61 74 20 3d 3d  lseif { $what ==
22080 20 22 69 6e 73 74 72 75 6d 65 6e 74 65 64 52 22   "instrumentedR"
22090 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 69 6e 66   } {..if { ![inf
220a0 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d  o exists instrum
220b0 65 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72  entedfilesR($cur
220c0 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09  rentfile)] } {..
220d0 20 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22      WarnWin [_ "
220e0 54 68 65 72 65 20 69 73 20 6e 6f 20 69 6e 73 74  There is no inst
220f0 72 75 6d 65 6e 74 65 64 20 66 69 6c 65 20 52 20  rumented file R 
22100 66 6f 72 20 66 69 6c 65 20 27 25 73 27 22 20 24  for file '%s'" $
22110 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20  currentfile]..  
22120 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 20 20    return..}.    
22130 7d 20 65 6c 73 65 69 66 20 7b 20 24 77 68 61 74  } elseif { $what
22140 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 69   == "gdb" } {..i
22150 66 20 7b 20 24 67 64 62 6c 6f 67 20 3d 3d 20 22  f { $gdblog == "
22160 22 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e 57  " } {..    WarnW
22170 69 6e 20 5b 5f 20 22 54 68 65 72 65 20 69 73 20  in [_ "There is 
22180 6e 6f 20 47 44 42 20 6c 6f 67 20 66 69 6c 65 2e  no GDB log file.
22190 20 55 73 65 20 46 69 6c 65 73 2d 3e 44 65 62 75   Use Files->Debu
221a0 67 20 6f 6e 2d 3e 44 65 62 75 67 20 63 2b 2b 20  g on->Debug c++ 
221b0 74 6f 20 6f 62 74 61 69 6e 20 69 74 22 5d 0a 09  to obtain it"]..
221c0 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20      return..}.  
221d0 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 77 68    } elseif { $wh
221e0 61 74 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b  at == "time" } {
221f0 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78  ..if { ![info ex
22200 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65  ists instrumente
22210 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72  dfilesTime($curr
22220 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20  entfile)] } {.. 
22230 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54     WarnWin [_ "T
22240 68 65 72 65 20 69 73 20 6e 6f 20 69 6e 73 74 72  here is no instr
22250 75 6d 65 6e 74 65 64 20 66 69 6c 65 20 74 69 6d  umented file tim
22260 65 20 66 6f 72 20 66 69 6c 65 20 27 25 73 27 22  e for file '%s'"
22270 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09   $currentfile]..
22280 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20      return..}.  
22290 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b    } else {..if {
222a0 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69   ![info exists i
222b0 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73  nstrumentedfiles
222c0 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c  Info($currentfil
222d0 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 57 61 72  e)] } {..    War
222e0 6e 57 69 6e 20 5b 5f 20 22 54 68 65 72 65 20 69  nWin [_ "There i
222f0 73 20 6e 6f 20 69 6e 73 74 72 75 6d 65 6e 74 65  s no instrumente
22300 64 20 69 6e 66 6f 20 66 69 6c 65 20 66 6f 72 20  d info file for 
22310 66 69 6c 65 20 27 25 73 27 22 20 24 63 75 72 72  file '%s'" $curr
22320 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 72 65  entfile]..    re
22330 74 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 0a 20 20  turn..}.    }.  
22340 20 20 57 61 69 74 53 74 61 74 65 20 31 0a 0a 20    WaitState 1.. 
22350 20 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73     if { [set pos
22360 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74   [lsearch -exact
22370 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
22380 74 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d  t $currentfile]]
22390 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20   != -1 } {..set 
223a0 6c 69 6e 65 20 5b 73 63 61 6e 20 5b 24 74 65 78  line [scan [$tex
223b0 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 20  t index insert] 
223c0 25 64 5d 0a 09 73 65 74 20 57 69 6e 64 6f 77 46  %d]..set WindowF
223d0 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73  ilesListLineNums
223e0 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 6e 64   [lreplace $Wind
223f0 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e  owFilesListLineN
22400 75 6d 73 20 24 70 6f 73 20 24 70 6f 73 20 24 6c  ums $pos $pos $l
22410 69 6e 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73  ine].    }.    s
22420 65 74 20 65 64 20 5b 24 74 65 78 74 20 63 67 65  et ed [$text cge
22430 74 20 2d 65 64 69 74 61 62 6c 65 5d 0a 20 20 20  t -editable].   
22440 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69   $text conf -edi
22450 74 61 62 6c 65 20 31 0a 20 20 20 20 24 74 65 78  table 1.    $tex
22460 74 20 63 6c 65 61 72 75 6e 64 6f 0a 20 20 20 20  t clearundo.    
22470 73 65 74 20 74 65 78 74 4f 20 5b 24 74 65 78 74  set textO [$text
22480 20 6f 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20 24   original].    $
22490 74 65 78 74 4f 20 64 65 6c 20 31 2e 30 20 65 6e  textO del 1.0 en
224a0 64 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 74  d.    if { $what
224b0 20 3d 3d 20 22 69 6e 73 74 72 75 6d 65 6e 74 65   == "instrumente
224c0 64 50 22 20 7d 20 7b 0a 09 73 65 74 5f 74 69 74  dP" } {..set_tit
224d0 6c 65 20 22 5b 66 69 6c 65 20 74 61 69 6c 20 24  le "[file tail $
224e0 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 69 6e 73  currentfile] ins
224f0 74 72 75 6d 65 6e 74 65 64 20 50 22 0a 09 24 74  trumented P"..$t
22500 65 78 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74  extO ins end [st
22510 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22  ring map [list "
22520 5c 74 22 20 22 20 20 20 20 20 20 20 20 22 5d 20  \t" "        "] 
22530 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c  $instrumentedfil
22540 65 73 50 28 24 63 75 72 72 65 6e 74 66 69 6c 65  esP($currentfile
22550 29 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20  )].    } elseif 
22560 7b 20 24 77 68 61 74 20 3d 3d 20 22 69 6e 73 74  { $what == "inst
22570 72 75 6d 65 6e 74 65 64 52 22 20 7d 20 7b 0a 09  rumentedR" } {..
22580 73 65 74 5f 74 69 74 6c 65 20 22 5b 66 69 6c 65  set_title "[file
22590 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74 66 69   tail $currentfi
225a0 6c 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  le] instrumented
225b0 20 52 22 0a 09 24 74 65 78 74 4f 20 69 6e 73 20   R"..$textO ins 
225c0 65 6e 64 20 5b 73 74 72 69 6e 67 20 6d 61 70 20  end [string map 
225d0 5b 6c 69 73 74 20 22 5c 74 22 20 22 20 20 20 20  [list "\t" "    
225e0 20 20 20 20 22 5d 20 24 69 6e 73 74 72 75 6d 65      "] $instrume
225f0 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72  ntedfilesR($curr
22600 65 6e 74 66 69 6c 65 29 5d 0a 20 20 20 20 7d 20  entfile)].    } 
22610 65 6c 73 65 69 66 20 7b 20 24 77 68 61 74 20 3d  elseif { $what =
22620 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 73 65 74  = "gdb" } {..set
22630 5f 74 69 74 6c 65 20 22 47 44 42 20 6c 6f 67 20  _title "GDB log 
22640 69 6e 66 6f 22 0a 09 24 74 65 78 74 4f 20 69 6e  info"..$textO in
22650 73 20 65 6e 64 20 24 67 64 62 6c 6f 67 0a 20 20  s end $gdblog.  
22660 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 77 68    } elseif { $wh
22670 61 74 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b  at == "time" } {
22680 0a 09 73 65 74 5f 74 69 74 6c 65 20 22 5b 66 69  ..set_title "[fi
22690 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74  le tail $current
226a0 66 69 6c 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74  file] instrument
226b0 65 64 20 74 69 6d 65 22 0a 09 24 74 65 78 74 4f  ed time"..$textO
226c0 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 69 6e 67   ins end [string
226d0 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 22 20   map [list "\t" 
226e0 22 20 20 20 20 20 20 20 20 22 5d 20 24 69 6e 73  "        "] $ins
226f0 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69  trumentedfilesTi
22700 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29  me($currentfile)
22710 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ].    } else {..
22720 73 65 74 5f 74 69 74 6c 65 20 22 5b 66 69 6c 65  set_title "[file
22730 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74 66 69   tail $currentfi
22740 6c 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  le] instrumented
22750 20 69 6e 66 6f 22 0a 09 66 6f 72 65 61 63 68 20   info"..foreach 
22760 69 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66  i $instrumentedf
22770 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e  ilesInfo($curren
22780 74 66 69 6c 65 29 20 7b 0a 09 20 20 20 20 24 74  tfile) {..    $t
22790 65 78 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74  extO ins end [st
227a0 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22  ring map [list "
227b0 5c 74 22 20 22 20 20 20 20 20 20 20 20 22 5d 20  \t" "        "] 
227c0 24 69 5c 6e 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20  $i\n]..}.    }. 
227d0 20 20 20 24 74 65 78 74 4f 20 74 61 67 20 61 64     $textO tag ad
227e0 64 20 6e 6f 72 6d 61 6c 20 31 2e 30 20 65 6e 64  d normal 1.0 end
227f0 0a 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 20  .    $text conf 
22800 2d 65 64 69 74 61 62 6c 65 20 24 65 64 0a 20 20  -editable $ed.  
22810 20 20 43 6f 6c 6f 72 69 7a 65 53 6c 6f 77 20 24    ColorizeSlow $
22820 74 65 78 74 0a 20 20 20 20 57 61 69 74 53 74 61  text.    WaitSta
22830 74 65 20 30 0a 0a 20 20 20 20 24 6d 61 72 6b 65  te 0..    $marke
22840 72 20 64 65 6c 65 74 65 20 61 72 72 6f 77 0a 20  r delete arrow. 
22850 20 20 20 24 6d 61 72 6b 65 72 20 64 65 6c 65 74     $marker delet
22860 65 20 62 72 65 61 6b 0a 20 20 20 20 24 6d 61 72  e break.    $mar
22870 6b 65 72 20 64 65 6c 65 74 65 20 61 72 72 6f 77  ker delete arrow
22880 62 72 65 61 6b 0a 0a 20 20 20 20 24 74 65 78 74  break..    $text
22890 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20   conf -editable 
228a0 30 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e  0.    set curren
228b0 74 66 69 6c 65 20 22 22 0a 20 20 20 20 73 65 74  tfile "".    set
228c0 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64   currentfile_end
228d0 6c 69 6e 65 20 61 75 74 6f 0a 7d 0a 0a 70 72 6f  line auto.}..pro
228e0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56  c RamDebugger::V
228f0 69 65 77 48 65 6c 70 46 69 6c 65 20 7b 20 7b 20  iewHelpFile { { 
22900 66 69 6c 65 20 22 22 20 7d 20 7d 20 7b 0a 20 20  file "" } } {.  
22910 20 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69    variable topdi
22920 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 41  r.    variable A
22930 70 70 44 61 74 61 44 69 72 0a 20 20 20 20 0a 23  ppDataDir.    .#
22940 20 20 20 20 20 69 66 20 7b 20 5b 20 74 6b 20 77       if { [ tk w
22950 69 6e 64 6f 77 69 6e 67 73 79 73 74 65 6d 5d 20  indowingsystem] 
22960 65 71 20 22 61 71 75 61 22 20 7d 20 7b 0a 23 20  eq "aqua" } {.# 
22970 20 20 20 20 20 20 20 20 74 6b 5f 6d 65 73 73 61          tk_messa
22980 67 65 42 6f 78 20 2d 6d 65 73 73 61 67 65 20 5b  geBox -message [
22990 5f 20 22 4e 6f 72 6d 61 6c 20 68 65 6c 70 20 69  _ "Normal help i
229a0 73 20 6e 6f 74 20 61 63 74 69 76 65 20 6f 6e 20  s not active on 
229b0 4d 61 63 4f 53 58 2e 20 59 6f 75 27 6c 6c 20 62  MacOSX. You'll b
229c0 65 20 72 65 64 69 72 65 63 74 65 64 20 74 6f 20  e redirected to 
229d0 61 20 77 65 62 20 62 72 6f 77 73 65 72 22 5d 0a  a web browser"].
229e0 23 20 20 20 20 20 20 20 20 20 65 78 65 63 20 6f  #         exec o
229f0 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  pen [file join $
22a00 74 6f 70 64 69 72 20 68 65 6c 70 20 30 31 52 61  topdir help 01Ra
22a10 6d 44 65 62 75 67 67 65 72 20 52 61 6d 44 65 62  mDebugger RamDeb
22a20 75 67 67 65 72 5f 74 6f 63 2e 68 74 6d 6c 5d 20  ugger_toc.html] 
22a30 26 0a 23 20 20 20 20 20 20 20 20 20 72 65 74 75  &.#         retu
22a40 72 6e 0a 23 20 20 20 20 20 7d 0a 20 20 20 20 70  rn.#     }.    p
22a50 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 68  ackage require h
22a60 65 6c 70 76 69 65 77 65 72 0a 0a 20 20 20 20 48  elpviewer..    H
22a70 65 6c 70 56 69 65 77 65 72 3a 3a 45 6e 74 65 72  elpViewer::Enter
22a80 44 69 72 46 6f 72 49 6e 64 65 78 20 24 41 70 70  DirForIndex $App
22a90 44 61 74 61 44 69 72 0a 0a 20 20 20 20 69 66 20  DataDir..    if 
22aa0 7b 20 24 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20  { $file == "" } 
22ab0 7b 0a 09 73 65 74 20 77 20 5b 48 65 6c 70 56 69  {..set w [HelpVi
22ac0 65 77 65 72 3a 3a 48 65 6c 70 57 69 6e 64 6f 77  ewer::HelpWindow
22ad0 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70   [file join $top
22ae0 64 69 72 20 68 65 6c 70 5d 5d 0a 20 20 20 20 7d  dir help]].    }
22af0 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 77 20 5b   else {..set w [
22b00 48 65 6c 70 56 69 65 77 65 72 3a 3a 48 65 6c 70  HelpViewer::Help
22b10 57 69 6e 64 6f 77 20 5b 66 69 6c 65 20 6a 6f 69  Window [file joi
22b20 6e 20 24 74 6f 70 64 69 72 20 68 65 6c 70 20 24  n $topdir help $
22b30 66 69 6c 65 5d 5d 0a 20 20 20 20 7d 0a 20 20 20  file]].    }.   
22b40 20 72 65 74 75 72 6e 20 24 77 0a 7d 0a 0a 0a 70   return $w.}...p
22b50 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
22b60 3a 56 69 65 77 48 65 6c 70 46 6f 72 57 6f 72 64  :ViewHelpForWord
22b70 20 7b 20 7b 20 77 6f 72 64 20 22 22 20 7d 20 7d   { { word "" } }
22b80 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
22b90 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c  text.    variabl
22ba0 65 20 41 70 70 44 61 74 61 44 69 72 0a 0a 20 20  e AppDataDir..  
22bb0 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72    package requir
22bc0 65 20 68 65 6c 70 76 69 65 77 65 72 0a 0a 20 20  e helpviewer..  
22bd0 20 20 48 65 6c 70 56 69 65 77 65 72 3a 3a 45 6e    HelpViewer::En
22be0 74 65 72 44 69 72 46 6f 72 49 6e 64 65 78 20 24  terDirForIndex $
22bf0 41 70 70 44 61 74 61 44 69 72 0a 0a 20 20 20 20  AppDataDir..    
22c00 73 65 74 20 77 20 5b 56 69 65 77 48 65 6c 70 46  set w [ViewHelpF
22c10 69 6c 65 5d 0a 0a 20 20 20 20 73 65 74 20 72 61  ile]..    set ra
22c20 6e 67 65 20 5b 24 74 65 78 74 20 74 61 67 20 72  nge [$text tag r
22c30 61 6e 67 65 73 20 73 65 6c 5d 0a 20 20 20 20 69  anges sel].    i
22c40 66 20 7b 20 24 77 6f 72 64 20 21 3d 20 22 22 20  f { $word != "" 
22c50 7d 20 7b 0a 09 23 20 6e 6f 74 68 69 6e 67 0a 20  } {..# nothing. 
22c60 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 72     } elseif { $r
22c70 61 6e 67 65 20 21 3d 20 22 22 20 7d 20 7b 0a 09  ange != "" } {..
22c80 73 65 74 20 77 6f 72 64 20 5b 65 76 61 6c 20 24  set word [eval $
22c90 74 65 78 74 20 67 65 74 20 24 72 61 6e 67 65 5d  text get $range]
22ca0 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
22cb0 65 74 20 77 6f 72 64 20 22 22 0a 09 73 65 74 20  et word ""..set 
22cc0 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78  idx [$text index
22cd0 20 69 6e 73 65 72 74 5d 0a 09 69 66 20 7b 20 5b   insert]..if { [
22ce0 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20 24 69  $text compare $i
22cf0 64 78 20 3e 20 31 2e 30 5d 20 7d 20 7b 0a 09 20  dx > 1.0] } {.. 
22d00 20 20 20 73 65 74 20 69 64 78 30 20 5b 24 74 65     set idx0 [$te
22d10 78 74 20 69 6e 64 65 78 20 24 69 64 78 2d 31 63  xt index $idx-1c
22d20 5d 0a 09 20 20 20 20 77 68 69 6c 65 20 7b 20 5b  ]..    while { [
22d30 73 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63 68  string is wordch
22d40 61 72 20 5b 24 74 65 78 74 20 67 65 74 20 24 69  ar [$text get $i
22d50 64 78 30 5d 5d 20 7d 20 7b 0a 09 09 73 65 74 20  dx0]] } {...set 
22d60 77 6f 72 64 20 5b 24 74 65 78 74 20 67 65 74 20  word [$text get 
22d70 24 69 64 78 30 5d 24 77 6f 72 64 0a 09 09 69 66  $idx0]$word...if
22d80 20 7b 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72   { [$text compar
22d90 65 20 24 69 64 78 30 20 3c 3d 20 31 2e 30 5d 20  e $idx0 <= 1.0] 
22da0 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 09 73 65  } { break }...se
22db0 74 20 69 64 78 30 20 5b 24 74 65 78 74 20 69 6e  t idx0 [$text in
22dc0 64 65 78 20 24 69 64 78 30 2d 31 63 5d 0a 09 20  dex $idx0-1c].. 
22dd0 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 69 64 78     }..}..set idx
22de0 31 20 24 69 64 78 0a 09 77 68 69 6c 65 20 7b 20  1 $idx..while { 
22df0 5b 73 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63  [string is wordc
22e00 68 61 72 20 5b 24 74 65 78 74 20 67 65 74 20 24  har [$text get $
22e10 69 64 78 31 5d 5d 20 7d 20 7b 0a 09 20 20 20 20  idx1]] } {..    
22e20 61 70 70 65 6e 64 20 77 6f 72 64 20 5b 24 74 65  append word [$te
22e30 78 74 20 67 65 74 20 24 69 64 78 31 5d 0a 09 20  xt get $idx1].. 
22e40 20 20 20 69 66 20 7b 20 5b 24 74 65 78 74 20 63     if { [$text c
22e50 6f 6d 70 61 72 65 20 24 69 64 78 31 20 3e 3d 20  ompare $idx1 >= 
22e60 65 6e 64 2d 31 63 5d 20 7d 20 7b 20 62 72 65 61  end-1c] } { brea
22e70 6b 20 7d 0a 09 20 20 20 20 73 65 74 20 69 64 78  k }..    set idx
22e80 31 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 24  1 [$text index $
22e90 69 64 78 31 2b 31 63 5d 0a 09 7d 0a 09 69 66 20  idx1+1c]..}..if 
22ea0 7b 20 24 77 6f 72 64 20 3d 3d 20 22 22 20 7d 20  { $word == "" } 
22eb0 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 7d  { return }.    }
22ec0 0a 20 20 20 20 48 65 6c 70 56 69 65 77 65 72 3a  .    HelpViewer:
22ed0 3a 48 65 6c 70 53 65 61 72 63 68 57 6f 72 64 20  :HelpSearchWord 
22ee0 24 77 6f 72 64 0a 7d 0a 0a 70 72 6f 63 20 52 61  $word.}..proc Ra
22ef0 6d 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61  mDebugger::Actua
22f00 6c 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61  lizeActiveProgra
22f10 6d 73 49 66 56 6f 69 64 20 7b 20 6d 65 6e 75 20  msIfVoid { menu 
22f20 7d 20 7b 0a 0a 20 20 20 20 69 66 20 7b 20 5b 24  } {..    if { [$
22f30 6d 65 6e 75 20 69 6e 64 65 78 20 65 6e 64 5d 20  menu index end] 
22f40 65 71 20 22 6e 6f 6e 65 22 20 7d 20 7b 0a 09 41  eq "none" } {..A
22f50 63 74 75 61 6c 69 7a 65 41 63 74 69 76 65 50 72  ctualizeActivePr
22f60 6f 67 72 61 6d 73 20 24 6d 65 6e 75 0a 20 20 20  ograms $menu.   
22f70 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
22f80 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c 69 7a  bugger::Actualiz
22f90 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 20  eActivePrograms 
22fa0 7b 20 6d 65 6e 75 20 7b 20 66 6f 72 63 65 20 30  { menu { force 0
22fb0 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61   } } {.    varia
22fc0 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72  ble text.    var
22fd0 69 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a  iable mainframe.
22fe0 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d      variable rem
22ff0 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 76 61  oteserver.    va
23000 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72  riable remoteser
23010 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 69  verType.    vari
23020 61 62 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 0a 20  able usecommR.. 
23030 20 20 20 23 20 74 68 65 20 63 6f 72 72 65 63 74     # the correct
23040 20 74 68 69 6e 67 20 77 6f 75 6c 64 20 62 65 20   thing would be 
23050 74 6f 20 63 68 65 63 6b 20 72 65 6d 6f 74 65 73  to check remotes
23060 65 72 76 65 72 54 79 70 65 20 62 75 74 20 69 74  erverType but it
23070 20 69 73 20 6e 6f 74 0a 20 20 20 20 23 20 73 65   is not.    # se
23080 74 20 61 74 20 70 72 6f 67 72 61 6d 20 73 74 61  t at program sta
23090 72 74 20 75 70 0a 20 20 20 20 69 66 20 7b 20 5b  rt up.    if { [
230a0 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6d 61  info commands ma
230b0 73 74 65 72 5d 20 21 3d 20 22 22 20 7d 20 7b 0a  ster] != "" } {.
230c0 09 24 6d 65 6e 75 20 64 65 6c 20 30 20 65 6e 64  .$menu del 0 end
230d0 0a 23 20 20 20 20 20 20 20 20 20 24 6d 65 6e 75  .#         $menu
230e0 20 61 64 64 20 72 61 64 69 6f 20 2d 6c 61 62 65   add radio -labe
230f0 6c 20 5b 5f 20 22 4e 6f 20 61 75 74 6f 73 65 6e  l [_ "No autosen
23100 64 22 5d 20 2d 76 61 72 69 61 62 6c 65 20 52 61  d"] -variable Ra
23110 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 6d 6f 74  mDebugger::remot
23120 65 73 65 72 76 65 72 20 2d 76 61 6c 75 65 20 6d  eserver -value m
23130 61 73 74 65 72 0a 23 20 20 20 20 20 20 20 20 20  aster.#         
23140 24 6d 65 6e 75 20 61 64 64 20 72 61 64 69 6f 20  $menu add radio 
23150 2d 6c 61 62 65 6c 20 5b 5f 20 22 53 65 6e 64 20  -label [_ "Send 
23160 70 72 6f 63 73 22 5d 20 2d 76 61 72 69 61 62 6c  procs"] -variabl
23170 65 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72  e RamDebugger::r
23180 65 6d 6f 74 65 73 65 72 76 65 72 20 2d 76 61 6c  emoteserver -val
23190 75 65 20 22 6d 61 73 74 65 72 20 70 72 6f 63 22  ue "master proc"
231a0 0a 23 20 20 20 20 20 20 20 20 20 24 6d 65 6e 75  .#         $menu
231b0 20 61 64 64 20 72 61 64 69 6f 20 2d 6c 61 62 65   add radio -labe
231c0 6c 20 5b 5f 20 22 53 65 6e 64 20 61 6c 6c 22 5d  l [_ "Send all"]
231d0 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65   -variable RamDe
231e0 62 75 67 67 65 72 3a 3a 72 65 6d 6f 74 65 73 65  bugger::remotese
231f0 72 76 65 72 20 2d 76 61 6c 75 65 20 22 6d 61 73  rver -value "mas
23200 74 65 72 20 61 6c 6c 22 0a 0a 09 24 6d 65 6e 75  ter all"...$menu
23210 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61   add command -la
23220 62 65 6c 20 5b 5f 20 22 53 74 61 72 74 20 64 65  bel [_ "Start de
23230 62 75 67 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b  bug"] -command [
23240 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
23250 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 63  ::ContNextGUI rc
23260 6f 6e 74 5d 20 5c 0a 09 20 20 20 20 2d 61 63 63  ont] \..    -acc
23270 20 22 46 35 22 0a 09 24 6d 65 6e 75 20 61 64 64   "F5"..$menu add
23280 20 73 65 70 61 72 61 74 6f 72 0a 09 24 6d 65 6e   separator..$men
23290 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
232a0 61 62 65 6c 20 5b 5f 20 22 44 69 73 63 6f 6e 6e  abel [_ "Disconn
232b0 65 63 74 2f 53 74 6f 70 22 5d 20 2d 63 6f 6d 6d  ect/Stop"] -comm
232c0 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a  and RamDebugger:
232d0 3a 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70 20  :DisconnectStop 
232e0 2d 61 63 63 20 22 53 68 69 66 74 2b 46 35 22 0a  -acc "Shift+F5".
232f0 0a 09 44 79 6e 61 6d 69 63 48 65 6c 70 3a 3a 72  ..DynamicHelp::r
23300 65 67 69 73 74 65 72 20 24 6d 65 6e 75 20 6d 65  egister $menu me
23310 6e 75 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  nu RamDebugger::
23320 73 74 61 74 75 73 0a 09 44 79 6e 61 6d 69 63 48  status..DynamicH
23330 65 6c 70 3a 3a 72 65 67 69 73 74 65 72 20 24 6d  elp::register $m
23340 65 6e 75 20 6d 65 6e 75 65 6e 74 72 79 20 30 20  enu menuentry 0 
23350 5b 5f 20 22 4f 6e 6c 79 20 69 6e 73 74 72 75 6d  [_ "Only instrum
23360 65 6e 74 20 73 6f 75 72 63 65 64 20 66 69 6c 65  ent sourced file
23370 73 22 5d 0a 09 44 79 6e 61 6d 69 63 48 65 6c 70  s"]..DynamicHelp
23380 3a 3a 72 65 67 69 73 74 65 72 20 24 6d 65 6e 75  ::register $menu
23390 20 6d 65 6e 75 65 6e 74 72 79 20 31 20 5b 5f 20   menuentry 1 [_ 
233a0 22 49 6e 73 74 72 75 6d 65 6e 74 20 61 6c 6c 20  "Instrument all 
233b0 70 72 6f 63 73 20 69 6e 20 61 63 74 69 76 65 20  procs in active 
233c0 66 69 6c 65 73 22 5d 0a 09 44 79 6e 61 6d 69 63  files"]..Dynamic
233d0 48 65 6c 70 3a 3a 72 65 67 69 73 74 65 72 20 24  Help::register $
233e0 6d 65 6e 75 20 6d 65 6e 75 65 6e 74 72 79 20 32  menu menuentry 2
233f0 20 5b 5f 20 22 49 6e 73 74 72 75 6d 65 6e 74 2f   [_ "Instrument/
23400 65 78 65 63 75 74 65 20 61 6c 6c 20 61 63 74 69  execute all acti
23410 76 65 20 66 69 6c 65 73 22 5d 0a 09 72 65 74 75  ve files"]..retu
23420 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 57 61  rn.    }..    Wa
23430 69 74 53 74 61 74 65 20 31 0a 20 20 20 20 53 65  itState 1.    Se
23440 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 53 65 61  tMessage [_ "Sea
23450 72 63 68 69 6e 67 20 66 6f 72 20 61 63 74 69 76  rching for activ
23460 65 20 70 72 6f 67 72 61 6d 73 22 5d 2e 2e 2e 0a  e programs"]....
23470 0a 20 20 20 20 69 66 20 7b 20 24 66 6f 72 63 65  .    if { $force
23480 20 3d 3d 20 32 20 7d 20 7b 0a 09 73 65 74 20 73   == 2 } {..set s
23490 65 72 76 69 63 65 73 20 5b 72 64 65 62 75 67 20  ervices [rdebug 
234a0 2d 66 6f 72 63 65 75 70 64 61 74 65 32 20 2d 61  -forceupdate2 -a
234b0 63 74 69 76 65 73 5d 0a 20 20 20 20 7d 20 65 6c  ctives].    } el
234c0 73 65 69 66 20 7b 20 24 66 6f 72 63 65 20 7d 20  seif { $force } 
234d0 7b 0a 09 73 65 74 20 73 65 72 76 69 63 65 73 20  {..set services 
234e0 5b 72 64 65 62 75 67 20 2d 66 6f 72 63 65 75 70  [rdebug -forceup
234f0 64 61 74 65 20 2d 61 63 74 69 76 65 73 5d 0a 20  date -actives]. 
23500 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74     } else {..set
23510 20 73 65 72 76 69 63 65 73 20 5b 72 64 65 62 75   services [rdebu
23520 67 20 2d 61 63 74 69 76 65 73 5d 0a 20 20 20 20  g -actives].    
23530 7d 0a 0a 20 20 20 20 24 6d 65 6e 75 20 64 65 6c  }..    $menu del
23540 20 30 20 65 6e 64 0a 0a 20 20 20 20 73 65 74 20   0 end..    set 
23550 66 6f 6e 74 62 6f 6c 64 20 5b 66 6f 6e 74 20 61  fontbold [font a
23560 63 74 75 61 6c 20 5b 24 6d 65 6e 75 20 63 67 65  ctual [$menu cge
23570 74 20 2d 66 6f 6e 74 5d 5d 0a 20 20 20 20 73 65  t -font]].    se
23580 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
23590 24 66 6f 6e 74 62 6f 6c 64 20 2d 77 65 69 67 68  $fontbold -weigh
235a0 74 5d 0a 20 20 20 20 69 6e 63 72 20 69 70 6f 73  t].    incr ipos
235b0 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 62 6f 6c  .    set fontbol
235c0 64 20 5b 6c 72 65 70 6c 61 63 65 20 24 66 6f 6e  d [lreplace $fon
235d0 74 62 6f 6c 64 20 24 69 70 6f 73 20 24 69 70 6f  tbold $ipos $ipo
235e0 73 20 62 6f 6c 64 5d 0a 0a 20 20 20 20 24 6d 65  s bold]..    $me
235f0 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d  nu add command -
23600 6c 61 62 65 6c 20 5b 5f 20 22 52 65 6d 6f 74 65  label [_ "Remote
23610 20 54 43 4c 20 64 65 62 75 67 67 69 6e 67 22 5d   TCL debugging"]
23620 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64   -font $fontbold
23630 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64   -state disabled
23640 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20   \..-background 
23650 67 72 65 79 38 35 0a 0a 20 20 20 20 69 66 20 7b  grey85..    if {
23660 20 5b 6c 6c 65 6e 67 74 68 20 24 73 65 72 76 69   [llength $servi
23670 63 65 73 5d 20 3d 3d 20 30 20 7d 20 7b 0a 09 24  ces] == 0 } {..$
23680 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
23690 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 54 68 65 72   -label [_ "Ther
236a0 65 20 61 72 65 20 6e 6f 20 61 63 74 69 76 65 20  e are no active 
236b0 70 72 6f 67 72 61 6d 73 22 5d 20 2d 73 74 61 74  programs"] -stat
236c0 65 20 64 69 73 61 62 6c 65 64 0a 09 69 66 20 7b  e disabled..if {
236d0 20 24 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09   $usecommR } {..
236e0 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f      $menu add co
236f0 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20  mmand -label [_ 
23700 22 55 73 65 20 27 52 65 6d 6f 74 65 20 54 43 4c  "Use 'Remote TCL
23710 20 75 70 64 61 74 65 27 20 74 6f 20 61 63 74 75   update' to actu
23720 61 6c 69 7a 65 22 5d 20 2d 73 74 61 74 65 20 64  alize"] -state d
23730 69 73 61 62 6c 65 64 0a 09 7d 0a 20 20 20 20 7d  isabled..}.    }
23740 20 65 6c 73 65 20 7b 0a 09 66 6f 72 65 61 63 68   else {..foreach
23750 20 69 20 24 73 65 72 76 69 63 65 73 20 7b 0a 09   i $services {..
23760 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65      if { $remote
23770 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 72  serverType == "r
23780 65 6d 6f 74 65 22 20 26 26 20 24 69 20 3d 3d 20  emote" && $i == 
23790 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 7d 20  $remoteserver } 
237a0 7b 0a 09 09 24 6d 65 6e 75 20 61 64 64 20 63 68  {...$menu add ch
237b0 65 63 6b 20 2d 6c 61 62 65 6c 20 24 69 20 2d 63  eck -label $i -c
237c0 6f 6d 6d 61 6e 64 20 5c 0a 09 09 20 20 20 20 22  ommand \...    "
237d0 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
237e0 72 3a 3a 72 64 65 62 75 67 20 24 69 5d 0a 09 09  r::rdebug $i]...
237f0 20 20 20 20 5b 6e 61 6d 65 73 70 61 63 65 20 63      [namespace c
23800 6f 64 65 20 5b 6c 69 73 74 20 41 63 74 75 61 6c  ode [list Actual
23810 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d  izeActiveProgram
23820 73 20 24 6d 65 6e 75 5d 5d 22 20 5c 0a 09 09 20  s $menu]]" \... 
23830 20 20 20 2d 76 61 72 69 61 62 6c 65 20 3a 3a 63     -variable ::c
23840 68 65 63 6b 65 64 20 0a 09 09 73 65 74 20 3a 3a  hecked ...set ::
23850 63 68 65 63 6b 65 64 20 31 0a 09 20 20 20 20 7d  checked 1..    }
23860 20 65 6c 73 65 20 7b 0a 09 09 24 6d 65 6e 75 20   else {...$menu 
23870 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62  add command -lab
23880 65 6c 20 24 69 20 2d 63 6f 6d 6d 61 6e 64 20 5c  el $i -command \
23890 0a 09 09 20 20 20 20 22 5b 6c 69 73 74 20 52 61  ...    "[list Ra
238a0 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 75  mDebugger::rdebu
238b0 67 20 24 69 5d 0a 09 09 20 20 20 20 5b 6e 61 6d  g $i]...    [nam
238c0 65 73 70 61 63 65 20 63 6f 64 65 20 5b 6c 69 73  espace code [lis
238d0 74 20 41 63 74 75 61 6c 69 7a 65 41 63 74 69 76  t ActualizeActiv
238e0 65 50 72 6f 67 72 61 6d 73 20 24 6d 65 6e 75 5d  ePrograms $menu]
238f0 5d 22 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20  ]"..    }..}.   
23900 20 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64   }.    $menu add
23910 20 73 65 70 61 72 61 74 6f 72 0a 0a 20 20 20 20   separator..    
23920 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e  $menu add comman
23930 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 52 65 6d  d -label [_ "Rem
23940 6f 74 65 20 54 43 4c 20 75 70 64 61 74 65 22 5d  ote TCL update"]
23950 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64   -font $fontbold
23960 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64   -state disabled
23970 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20   \..-background 
23980 67 72 65 79 38 35 0a 20 20 20 20 69 66 20 7b 20  grey85.    if { 
23990 24 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09 24  $usecommR } {..$
239a0 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
239b0 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 55 70 64 61   -label [_ "Upda
239c0 74 65 20 72 65 6d 6f 74 65 73 22 5d 20 2d 63 6f  te remotes"] -co
239d0 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 20 22 52 61  mmand \..    "Ra
239e0 6d 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61  mDebugger::Actua
239f0 6c 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61  lizeActiveProgra
23a00 6d 73 20 24 6d 65 6e 75 20 31 22 0a 20 20 20 20  ms $menu 1".    
23a10 7d 20 65 6c 73 65 20 7b 0a 09 24 6d 65 6e 75 20  } else {..$menu 
23a20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62  add command -lab
23a30 65 6c 20 5b 5f 20 22 55 73 65 20 63 6f 6d 6d 52  el [_ "Use commR
23a40 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20  "] -command \.. 
23a50 20 20 20 22 5b 6c 69 73 74 20 73 65 74 20 52 61     "[list set Ra
23a60 6d 44 65 62 75 67 67 65 72 3a 3a 75 73 65 63 6f  mDebugger::useco
23a70 6d 6d 52 20 31 5d 3b 20 5b 6c 69 73 74 20 52 61  mmR 1]; [list Ra
23a80 6d 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61  mDebugger::Actua
23a90 6c 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61  lizeActiveProgra
23aa0 6d 73 20 24 6d 65 6e 75 20 31 5d 22 0a 20 20 20  ms $menu 1]".   
23ab0 20 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64   }.    $menu add
23ac0 20 73 65 70 61 72 61 74 6f 72 0a 0a 20 20 20 20   separator..    
23ad0 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e  $menu add comman
23ae0 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 4c 6f 63  d -label [_ "Loc
23af0 61 6c 20 54 43 4c 20 64 65 62 75 67 67 69 6e 67  al TCL debugging
23b00 22 5d 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f  "] -font $fontbo
23b10 6c 64 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c  ld -state disabl
23b20 65 64 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e  ed \..-backgroun
23b30 64 20 67 72 65 79 38 35 0a 20 20 20 20 69 66 20  d grey85.    if 
23b40 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54  { $remoteserverT
23b50 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d  ype == "local" }
23b60 20 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 68   {..$menu add ch
23b70 65 63 6b 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43  eck -label [_ "C
23b80 75 72 72 65 6e 74 20 66 69 6c 65 22 5d 20 2d 63  urrent file"] -c
23b90 6f 6d 6d 61 6e 64 20 7b 0a 09 20 20 20 20 52 61  ommand {..    Ra
23ba0 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 75  mDebugger::rdebu
23bb0 67 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 0a 09  g -currentfile..
23bc0 7d 20 2d 76 61 72 69 61 62 6c 65 20 3a 3a 63 68  } -variable ::ch
23bd0 65 63 6b 65 64 20 0a 09 73 65 74 20 3a 3a 63 68  ecked ..set ::ch
23be0 65 63 6b 65 64 20 31 0a 20 20 20 20 7d 20 65 6c  ecked 1.    } el
23bf0 73 65 20 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20  se {..$menu add 
23c00 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b  command -label [
23c10 5f 20 22 43 75 72 72 65 6e 74 20 66 69 6c 65 22  _ "Current file"
23c20 5d 20 2d 63 6f 6d 6d 61 6e 64 20 7b 0a 09 20 20  ] -command {..  
23c30 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72    RamDebugger::r
23c40 64 65 62 75 67 20 2d 63 75 72 72 65 6e 74 66 69  debug -currentfi
23c50 6c 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20  le..}.    }.    
23c60 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e  $menu add comman
23c70 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 75 72  d -label [_ "Cur
23c80 72 65 6e 74 20 66 69 6c 65 20 61 72 67 75 6d 65  rent file argume
23c90 6e 74 73 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 7b  nts"] -command {
23ca0 0a 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44  ..RamDebugger::D
23cb0 65 62 75 67 43 75 72 72 65 6e 74 46 69 6c 65 41  ebugCurrentFileA
23cc0 72 67 73 57 69 6e 64 6f 77 0a 20 20 20 20 7d 0a  rgsWindow.    }.
23cd0 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 65      $menu add se
23ce0 70 61 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 6e  parator.    $men
23cf0 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
23d00 61 62 65 6c 20 5b 5f 20 22 4c 6f 63 61 6c 20 63  abel [_ "Local c
23d10 2f 63 2b 2b 20 64 65 62 75 67 67 69 6e 67 22 5d  /c++ debugging"]
23d20 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64   -font $fontbold
23d30 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64   -state disabled
23d40 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20   \..-background 
23d50 67 72 65 79 38 35 0a 20 20 20 20 69 66 20 7b 20  grey85.    if { 
23d60 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70  $remoteserverTyp
23d70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09  e == "gdb" } {..
23d80 24 6d 65 6e 75 20 61 64 64 20 63 68 65 63 6b 20  $menu add check 
23d90 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75 67  -label [_ "Debug
23da0 20 63 2b 2b 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20   c++"] -command 
23db0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 65  "RamDebugger::De
23dc0 62 75 67 43 70 6c 75 73 50 6c 75 73 57 69 6e 64  bugCplusPlusWind
23dd0 6f 77 22 20 5c 0a 09 20 20 20 20 2d 76 61 72 69  ow" \..    -vari
23de0 61 62 6c 65 20 3a 3a 63 68 65 63 6b 65 64 20 0a  able ::checked .
23df0 09 73 65 74 20 3a 3a 63 68 65 63 6b 65 64 20 31  .set ::checked 1
23e00 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24  .    } else {..$
23e10 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
23e20 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75   -label [_ "Debu
23e30 67 20 63 2b 2b 22 5d 20 2d 63 6f 6d 6d 61 6e 64  g c++"] -command
23e40 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44   "RamDebugger::D
23e50 65 62 75 67 43 70 6c 75 73 50 6c 75 73 57 69 6e  ebugCplusPlusWin
23e60 64 6f 77 22 0a 20 20 20 20 7d 0a 20 20 20 20 24  dow".    }.    $
23e70 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
23e80 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75   -label [_ "Debu
23e90 67 20 63 2b 2b 20 28 6e 6f 20 61 73 6b 29 22 5d  g c++ (no ask)"]
23ea0 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65   -command "RamDe
23eb0 62 75 67 67 65 72 3a 3a 44 65 62 75 67 43 70 6c  bugger::DebugCpl
23ec0 75 73 50 6c 75 73 57 69 6e 64 6f 77 20 31 22 0a  usPlusWindow 1".
23ed0 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f      $menu add co
23ee0 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20  mmand -label [_ 
23ef0 22 44 65 62 75 67 20 63 2b 2b 20 61 74 74 61 63  "Debug c++ attac
23f00 68 20 70 72 6f 63 65 73 73 22 5d 20 2d 63 6f 6d  h process"] -com
23f10 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65  mand "RamDebugge
23f20 72 3a 3a 44 65 62 75 67 43 70 6c 75 73 50 6c 75  r::DebugCplusPlu
23f30 73 57 69 6e 64 6f 77 41 74 74 61 63 68 22 0a 20  sWindowAttach". 
23f40 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 65 70     $menu add sep
23f50 61 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 6e 75  arator.    $menu
23f60 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61   add command -la
23f70 62 65 6c 20 5b 5f 20 22 44 69 73 63 6f 6e 6e 65  bel [_ "Disconne
23f80 63 74 2f 53 74 6f 70 22 5d 20 2d 63 6f 6d 6d 61  ct/Stop"] -comma
23f90 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  nd RamDebugger::
23fa0 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70 20 2d  DisconnectStop -
23fb0 61 63 63 20 22 53 68 69 66 74 2b 46 35 22 0a 0a  acc "Shift+F5"..
23fc0 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65      if { $remote
23fd0 73 65 72 76 65 72 20 3d 3d 20 22 22 20 7d 20 7b  server == "" } {
23fe0 0a 09 24 6d 65 6e 75 20 65 6e 74 72 79 63 6f 6e  ..$menu entrycon
23ff0 66 69 67 75 72 65 20 65 6e 64 20 2d 73 74 61 74  figure end -stat
24000 65 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 7d  e disabled.    }
24010 0a 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20  .    SetMessage 
24020 22 22 0a 20 20 20 20 57 61 69 74 53 74 61 74 65  "".    WaitState
24030 20 30 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   0.}..proc RamDe
24040 62 75 67 67 65 72 3a 3a 44 69 73 63 6f 6e 6e 65  bugger::Disconne
24050 63 74 53 74 6f 70 20 7b 20 61 72 67 73 20 7d 20  ctStop { args } 
24060 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d  {.    variable m
24070 61 69 6e 66 72 61 6d 65 0a 20 20 20 20 0a 20 20  ainframe.    .  
24080 20 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b    set optional {
24090 0a 09 7b 20 2d 66 6f 72 63 65 20 22 22 20 30 20  ..{ -force "" 0 
240a0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
240b0 63 6f 6d 70 75 6c 73 6f 72 79 20 22 22 0a 20 20  compulsory "".  
240c0 20 20 70 61 72 73 65 5f 61 72 67 73 20 24 6f 70    parse_args $op
240d0 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 6f  tional $compulso
240e0 72 79 20 24 61 72 67 73 0a 0a 20 20 20 20 69 66  ry $args..    if
240f0 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74 20   { [catch [list 
24100 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 65  RamDebugger::rde
24110 62 75 67 20 2d 64 69 73 63 6f 6e 6e 65 63 74 5d  bug -disconnect]
24120 20 65 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a   errstring] } {.
24130 09 69 66 20 7b 20 24 66 6f 72 63 65 20 7d 20 7b  .if { $force } {
24140 20 72 65 74 75 72 6e 20 7d 0a 09 73 65 74 20 77   return }..set w
24150 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
24160 20 24 6d 61 69 6e 66 72 61 6d 65 5d 0a 09 73 65   $mainframe]..se
24170 74 20 6d 65 6e 75 31 20 24 77 2e 61 63 74 75 61  t menu1 $w.actua
24180 6c 69 7a 65 70 72 6f 67 72 61 6d 73 6d 65 6e 75  lizeprogramsmenu
24190 0a 09 74 6b 5f 70 6f 70 75 70 20 24 6d 65 6e 75  ..tk_popup $menu
241a0 31 20 5b 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72  1 [winfo pointer
241b0 78 20 2e 5d 20 5b 77 69 6e 66 6f 20 70 6f 69 6e  x .] [winfo poin
241c0 74 65 72 79 20 2e 5d 0a 09 23 57 61 72 6e 57 69  tery .]..#WarnWi
241d0 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 20 20 20  n $errstring.   
241e0 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
241f0 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76  bugger::GotoPrev
24200 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73  iousNextInWinLis
24210 74 20 7b 20 77 68 61 74 20 7d 20 7b 0a 20 20 20  t { what } {.   
24220 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77   variable Window
24230 46 69 6c 65 73 4c 69 73 74 0a 20 20 20 20 76 61  FilesList.    va
24240 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 46 69 6c  riable WindowFil
24250 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 0a 20  esListLineNums. 
24260 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
24270 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
24280 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20  xt_secondary.   
24290 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e   variable curren
242a0 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62  tfile.    variab
242b0 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73  le currentfile_s
242c0 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 69 66  econdary..    if
242d0 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 57 69 6e   { [llength $Win
242e0 64 6f 77 46 69 6c 65 73 4c 69 73 74 5d 20 3c 20  dowFilesList] < 
242f0 31 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a  1 } { return }..
24300 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65      if { [info e
24310 78 69 73 74 73 20 74 65 78 74 5f 73 65 63 6f 6e  xists text_secon
24320 64 61 72 79 5d 20 26 26 20 5b 66 6f 63 75 73 20  dary] && [focus 
24330 2d 6c 61 73 74 66 6f 72 20 24 74 65 78 74 5d 20  -lastfor $text] 
24340 65 71 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61  eq $text_seconda
24350 72 79 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65  ry } {..set file
24360 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65   $currentfile_se
24370 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65 6c  condary.    } el
24380 73 65 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24  se {..set file $
24390 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20  currentfile.    
243a0 7d 0a 20 20 20 20 73 65 74 20 70 6f 73 20 5b 6c  }.    set pos [l
243b0 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 57  search -exact $W
243c0 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24  indowFilesList $
243d0 66 69 6c 65 5d 0a 20 20 20 20 69 66 20 7b 20 5b  file].    if { [
243e0 6c 6c 65 6e 67 74 68 20 24 57 69 6e 64 6f 77 46  llength $WindowF
243f0 69 6c 65 73 4c 69 73 74 5d 20 3d 3d 20 31 20 26  ilesList] == 1 &
24400 26 20 24 70 6f 73 20 3d 3d 20 30 20 7d 20 7b 20  & $pos == 0 } { 
24410 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 77  return }..    sw
24420 69 74 63 68 20 24 77 68 61 74 20 70 72 65 76 20  itch $what prev 
24430 7b 20 69 6e 63 72 20 70 6f 73 20 2d 31 20 7d 20  { incr pos -1 } 
24440 6e 65 78 74 20 7b 20 69 6e 63 72 20 70 6f 73 20  next { incr pos 
24450 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 70 6f 73  }..    if { $pos
24460 20 3c 20 30 20 7d 20 7b 20 73 65 74 20 70 6f 73   < 0 } { set pos
24470 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68   [expr {[llength
24480 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
24490 74 5d 2d 31 7d 5d 20 7d 0a 20 20 20 20 69 66 20  t]-1}] }.    if 
244a0 7b 20 24 70 6f 73 20 3e 3d 20 5b 6c 6c 65 6e 67  { $pos >= [lleng
244b0 74 68 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c  th $WindowFilesL
244c0 69 73 74 5d 20 7d 20 7b 20 73 65 74 20 70 6f 73  ist] } { set pos
244d0 20 30 20 7d 0a 20 20 20 20 4f 70 65 6e 46 69 6c   0 }.    OpenFil
244e0 65 46 20 2d 6e 6f 5f 68 69 73 74 6f 72 79 20 31  eF -no_history 1
244f0 20 5b 6c 69 6e 64 65 78 20 24 57 69 6e 64 6f 77   [lindex $Window
24500 46 69 6c 65 73 4c 69 73 74 20 24 70 6f 73 5d 0a  FilesList $pos].
24510 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
24520 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46  ger::ChooseViewF
24530 69 6c 65 20 7b 20 77 68 61 74 20 61 72 67 73 20  ile { what args 
24540 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
24550 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74   WindowFilesList
24560 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
24570 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  xt.    variable 
24580 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20  text_secondary. 
24590 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
245a0 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69  entfile.    vari
245b0 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65  able currentfile
245c0 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76  _secondary.    v
245d0 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a  ariable options.
245e0 20 20 20 20 76 61 72 69 61 62 6c 65 20 43 68 6f      variable Cho
245f0 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 79 70  oseViewFile_keyp
24600 72 65 73 73 0a 20 20 20 20 76 61 72 69 61 62 6c  ress.    variabl
24610 65 20 6f 6c 64 47 72 61 62 0a 20 20 20 20 76 61  e oldGrab.    va
24620 72 69 61 62 6c 65 20 67 72 61 62 53 74 61 74 75  riable grabStatu
24630 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f  s.    variable o
24640 6c 64 46 6f 63 75 73 0a 0a 20 20 20 20 69 66 20  ldFocus..    if 
24650 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  { [info exists t
24660 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d 20 26  ext_secondary] &
24670 26 20 5b 66 6f 63 75 73 20 2d 6c 61 73 74 66 6f  & [focus -lastfo
24680 72 20 24 74 65 78 74 5d 20 65 71 20 5c 0a 09 20  r $text] eq \.. 
24690 20 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64      $text_second
246a0 61 72 79 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c  ary } {..set fil
246b0 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73  e $currentfile_s
246c0 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65  econdary.    } e
246d0 6c 73 65 20 7b 0a 09 73 65 74 20 66 69 6c 65 20  lse {..set file 
246e0 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20  $currentfile.   
246f0 20 7d 0a 20 20 20 20 73 65 74 20 77 20 24 74 65   }.    set w $te
24700 78 74 0a 0a 20 20 20 20 69 66 20 7b 20 5b 77 69  xt..    if { [wi
24710 6e 66 6f 20 65 78 69 73 74 73 20 24 77 2e 5f 63  nfo exists $w._c
24720 68 6f 6f 73 65 76 66 5d 20 7d 20 7b 0a 09 63 75  hoosevf] } {..cu
24730 3a 3a 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f  ::set_window_geo
24740 6d 65 74 72 79 20 24 77 2e 5f 63 68 6f 6f 73 65  metry $w._choose
24750 76 66 20 5b 77 6d 20 67 65 6f 6d 65 74 72 79 20  vf [wm geometry 
24760 24 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 0a 20 20  $w._choosevf].  
24770 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 65 6e 74    }..    set ent
24780 72 79 6c 65 6e 20 31 36 0a 20 20 20 20 73 65 74  rylen 16.    set
24790 20 6e 75 6d 63 6f 6c 73 20 36 0a 20 20 20 20 73   numcols 6.    s
247a0 65 74 20 61 66 74 65 72 5f 74 69 6d 65 20 35 30  et after_time 50
247b0 0a 0a 20 20 20 20 73 77 69 74 63 68 20 24 77 68  ..    switch $wh
247c0 61 74 20 7b 0a 09 73 74 61 72 74 20 2d 20 73 74  at {..start - st
247d0 61 72 74 72 65 63 65 6e 74 20 2d 20 73 74 61 72  artrecent - star
247e0 74 63 75 72 72 64 69 72 20 7b 0a 09 20 20 20 20  tcurrdir {..    
247f0 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
24800 74 73 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e  ts options(Recen
24810 74 46 69 6c 65 73 29 5d 20 7d 20 7b 20 73 65 74  tFiles)] } { set
24820 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46   options(RecentF
24830 69 6c 65 73 29 20 22 22 20 7d 0a 09 20 20 20 20  iles) "" }..    
24840 69 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 73  if { $what eq "s
24850 74 61 72 74 22 20 26 26 20 5b 6c 6c 65 6e 67 74  tart" && [llengt
24860 68 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69  h $WindowFilesLi
24870 73 74 5d 20 3c 20 32 20 7d 20 7b 0a 09 09 73 65  st] < 2 } {...se
24880 74 20 77 68 61 74 20 73 74 61 72 74 72 65 63 65  t what startrece
24890 6e 74 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69  nt..    }..    i
248a0 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 73 74  f { $what eq "st
248b0 61 72 74 72 65 63 65 6e 74 22 20 26 26 20 21 5b  artrecent" && ![
248c0 6c 6c 65 6e 67 74 68 20 6f 70 74 69 6f 6e 73 28  llength options(
248d0 52 65 63 65 6e 74 46 69 6c 65 73 29 5d 20 7d 20  RecentFiles)] } 
248e0 7b 0a 09 09 73 65 74 20 77 68 61 74 20 73 74 61  {...set what sta
248f0 72 74 63 75 72 72 64 69 72 0a 09 20 20 20 20 7d  rtcurrdir..    }
24900 0a 09 20 20 20 20 69 66 20 7b 20 24 77 68 61 74  ..    if { $what
24910 20 65 71 20 22 73 74 61 72 74 63 75 72 72 64 69   eq "startcurrdi
24920 72 22 20 7d 20 7b 0a 09 09 73 65 74 20 70 61 74  r" } {...set pat
24930 74 65 72 6e 73 20 22 22 0a 09 09 66 6f 72 65 61  terns ""...forea
24940 63 68 20 65 78 74 20 24 6f 70 74 69 6f 6e 73 28  ch ext $options(
24950 65 78 74 65 6e 73 69 6f 6e 73 2c 54 43 4c 29 20  extensions,TCL) 
24960 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 24 65 78  {...    if { $ex
24970 74 20 6e 65 20 22 2a 22 20 7d 20 7b 20 6c 61 70  t ne "*" } { lap
24980 70 65 6e 64 20 70 61 74 74 65 72 6e 73 20 2a 5b  pend patterns *[
24990 73 74 72 69 6e 67 20 74 72 69 6d 20 24 65 78 74  string trim $ext
249a0 20 2a 5d 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20   *] }...}...set 
249b0 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  dir [file dirnam
249c0 65 20 24 66 69 6c 65 5d 0a 09 09 69 66 20 7b 20  e $file]...if { 
249d0 24 64 69 72 20 6e 65 20 22 2e 22 20 7d 20 7b 0a  $dir ne "." } {.
249e0 09 09 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b  ..    set list [
249f0 65 76 61 6c 20 5b 6c 69 73 74 20 67 6c 6f 62 20  eval [list glob 
24a00 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72  -nocomplain -dir
24a10 20 24 64 69 72 5d 20 24 70 61 74 74 65 72 6e 73   $dir] $patterns
24a20 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 20 73 65 74  ]...} else { set
24a30 20 6c 69 73 74 20 22 22 20 7d 0a 09 09 69 66 20   list "" }...if 
24a40 7b 20 24 6c 69 73 74 20 65 71 20 22 22 20 7d 20  { $list eq "" } 
24a50 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c  {...    if { [ll
24a60 65 6e 67 74 68 20 24 57 69 6e 64 6f 77 46 69 6c  ength $WindowFil
24a70 65 73 4c 69 73 74 5d 20 3e 3d 20 32 20 7c 7c 20  esList] >= 2 || 
24a80 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
24a90 20 21 5b 6c 6c 65 6e 67 74 68 20 6f 70 74 69 6f   ![llength optio
24aa0 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29 5d  ns(RecentFiles)]
24ab0 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73   } {...        s
24ac0 65 74 20 77 68 61 74 20 73 74 61 72 74 0a 09 09  et what start...
24ad0 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74      } else { set
24ae0 20 77 68 61 74 20 73 74 61 72 74 72 65 63 65 6e   what startrecen
24af0 74 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09  t }...}..    }..
24b00 20 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74      switch $what
24b10 20 7b 0a 09 09 73 74 61 72 74 20 7b 0a 09 09 20   {...start {... 
24b20 20 20 20 73 65 74 20 6c 69 73 74 20 22 22 0a 09     set list ""..
24b30 09 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69  .    for { set i
24b40 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68   [expr {[llength
24b50 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73   $WindowFilesLis
24b60 74 5d 2d 31 7d 5d 20 7d 20 7b 20 24 69 20 3e 3d  t]-1}] } { $i >=
24b70 20 30 20 7d 20 7b 20 69 6e 63 72 20 69 20 2d 31   0 } { incr i -1
24b80 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 6c   } {...        l
24b90 61 70 70 65 6e 64 20 6c 69 73 74 20 5b 6c 69 6e  append list [lin
24ba0 64 65 78 20 24 57 69 6e 64 6f 77 46 69 6c 65 73  dex $WindowFiles
24bb0 4c 69 73 74 20 24 69 5d 0a 09 09 20 20 20 20 7d  List $i]...    }
24bc0 0a 09 09 7d 0a 09 09 73 74 61 72 74 72 65 63 65  ...}...startrece
24bd0 6e 74 20 7b 0a 09 09 20 20 20 20 73 65 74 20 6c  nt {...    set l
24be0 69 73 74 20 24 6f 70 74 69 6f 6e 73 28 52 65 63  ist $options(Rec
24bf0 65 6e 74 46 69 6c 65 73 29 0a 09 09 7d 0a 09 09  entFiles)...}...
24c00 73 74 61 72 74 63 75 72 72 64 69 72 20 7b 0a 09  startcurrdir {..
24c10 09 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 6c  .    set list [l
24c20 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61 72 79  sort -dictionary
24c30 20 24 6c 69 73 74 5d 0a 09 09 20 20 20 20 23 20   $list]...    # 
24c40 61 6c 72 65 61 64 79 20 61 73 73 69 67 6e 65 64  already assigned
24c50 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20  ...}..    }..   
24c60 20 73 65 74 20 6c 69 73 74 20 5b 6c 72 61 6e 67   set list [lrang
24c70 65 20 24 6c 69 73 74 20 30 20 33 39 5d 0a 09 20  e $list 0 39].. 
24c80 20 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 65     set ipos [lse
24c90 61 72 63 68 20 2d 65 78 61 63 74 20 24 6c 69 73  arch -exact $lis
24ca0 74 20 24 66 69 6c 65 5d 0a 09 20 20 20 20 69 66  t $file]..    if
24cb0 20 7b 20 24 69 70 6f 73 20 3d 3d 20 2d 31 20 7d   { $ipos == -1 }
24cc0 20 7b 0a 09 09 73 65 74 20 6c 69 73 74 20 5b 6c   {...set list [l
24cd0 69 6e 73 65 72 74 20 24 6c 69 73 74 20 30 20 24  insert $list 0 $
24ce0 66 69 6c 65 5d 0a 09 20 20 20 20 7d 20 65 6c 73  file]..    } els
24cf0 65 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20 30  eif { $ipos != 0
24d00 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 77 68 61   } {...if { $wha
24d10 74 20 65 71 20 22 73 74 61 72 74 63 75 72 72 64  t eq "startcurrd
24d20 69 72 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65  ir" } {...    se
24d30 74 20 6c 69 73 74 20 5b 6c 72 65 70 6c 61 63 65  t list [lreplace
24d40 20 24 6c 69 73 74 20 24 69 70 6f 73 20 24 69 70   $list $ipos $ip
24d50 6f 73 5d 0a 09 09 20 20 20 20 73 65 74 20 6c 69  os]...    set li
24d60 73 74 20 5b 6c 69 6e 73 65 72 74 20 24 6c 69 73  st [linsert $lis
24d70 74 20 30 20 24 66 69 6c 65 5d 0a 09 09 7d 20 65  t 0 $file]...} e
24d80 6c 73 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20  lse {...    set 
24d90 74 6d 70 6c 69 73 74 20 24 6c 69 73 74 0a 09 09  tmplist $list...
24da0 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 6c 72      set list [lr
24db0 61 6e 67 65 20 24 74 6d 70 6c 69 73 74 20 24 69  ange $tmplist $i
24dc0 70 6f 73 20 65 6e 64 5d 0a 09 09 20 20 20 20 65  pos end]...    e
24dd0 76 61 6c 20 6c 61 70 70 65 6e 64 20 6c 69 73 74  val lappend list
24de0 20 5b 6c 72 61 6e 67 65 20 24 74 6d 70 6c 69 73   [lrange $tmplis
24df0 74 20 30 20 5b 65 78 70 72 20 7b 24 69 70 6f 73  t 0 [expr {$ipos
24e00 2d 31 7d 5d 5d 0a 09 09 7d 0a 09 20 20 20 20 7d  -1}]]...}..    }
24e10 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 74 20  ..    ..    set 
24e20 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b  ChooseViewFile_k
24e30 65 79 70 72 65 73 73 20 22 22 0a 09 20 20 20 20  eypress ""..    
24e40 6c 61 70 70 65 6e 64 20 43 68 6f 6f 73 65 56 69  lappend ChooseVi
24e50 65 77 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20  ewFile_keypress 
24e60 5b 6c 69 73 74 20 73 74 61 72 74 20 6e 65 77 5d  [list start new]
24e70 0a 09 20 20 20 20 61 66 74 65 72 20 24 61 66 74  ..    after $aft
24e80 65 72 5f 74 69 6d 65 20 5b 6c 69 73 74 20 52 61  er_time [list Ra
24e90 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73  mDebugger::Choos
24ea0 65 56 69 65 77 46 69 6c 65 20 6b 65 79 70 72 65  eViewFile keypre
24eb0 73 73 5f 65 6e 64 20 73 74 61 72 74 5d 0a 0a 09  ss_end start]...
24ec0 20 20 20 20 64 65 73 74 72 6f 79 20 24 77 2e 5f      destroy $w._
24ed0 63 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 74 6f  choosevf..    to
24ee0 70 6c 65 76 65 6c 20 24 77 2e 5f 63 68 6f 6f 73  plevel $w._choos
24ef0 65 76 66 20 2d 72 65 6c 69 65 66 20 72 61 69 73  evf -relief rais
24f00 65 64 20 2d 62 64 20 32 0a 09 20 20 20 20 77 6d  ed -bd 2..    wm
24f10 20 77 69 74 68 64 72 61 77 20 24 77 2e 5f 63 68   withdraw $w._ch
24f20 6f 6f 73 65 76 66 0a 09 20 20 20 20 77 6d 20 6f  oosevf..    wm o
24f30 76 65 72 72 69 64 65 72 65 64 69 72 65 63 74 20  verrideredirect 
24f40 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 31 0a 0a  $w._choosevf 1..
24f50 09 20 20 20 20 6c 61 62 65 6c 20 24 77 2e 5f 63  .    label $w._c
24f60 68 6f 6f 73 65 76 66 2e 6c 64 20 2d 62 64 20 32  hoosevf.ld -bd 2
24f70 20 2d 72 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20   -relief sunken 
24f80 2d 61 6e 63 68 6f 72 20 6e 65 20 5c 0a 09 09 2d  -anchor ne \...-
24f90 6a 75 73 74 69 66 79 20 72 69 67 68 74 20 2d 77  justify right -w
24fa0 69 64 74 68 20 32 30 0a 09 20 20 20 20 66 6f 72  idth 20..    for
24fb0 65 61 63 68 20 22 72 6f 77 20 63 6f 6c 22 20 5b  each "row col" [
24fc0 6c 69 73 74 20 30 20 30 5d 20 62 72 65 61 6b 0a  list 0 0] break.
24fd0 09 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69  .    for { set i
24fe0 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65   0 } { $i < [lle
24ff0 6e 67 74 68 20 24 6c 69 73 74 5d 20 7d 20 7b 20  ngth $list] } { 
25000 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 69 66 20  incr i } {...if 
25010 7b 20 24 69 20 3e 20 30 20 26 26 20 24 69 25 24  { $i > 0 && $i%$
25020 6e 75 6d 63 6f 6c 73 20 3d 3d 20 30 20 7d 20 7b  numcols == 0 } {
25030 0a 09 09 20 20 20 20 69 6e 63 72 20 72 6f 77 0a  ...    incr row.
25040 09 09 20 20 20 20 73 65 74 20 63 6f 6c 20 30 0a  ..    set col 0.
25050 09 09 7d 0a 09 09 65 6e 74 72 79 20 24 77 2e 5f  ..}...entry $w._
25060 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20 2d 77 69  choosevf.l$i -wi
25070 64 74 68 20 24 65 6e 74 72 79 6c 65 6e 20 2d 62  dth $entrylen -b
25080 64 20 30 20 2d 68 69 67 68 6c 69 67 68 74 74 68  d 0 -highlightth
25090 69 63 6b 6e 65 73 73 20 32 20 5c 0a 09 09 20 20  ickness 2 \...  
250a0 20 20 2d 68 69 67 68 6c 69 67 68 74 63 6f 6c 6f    -highlightcolo
250b0 72 20 23 62 35 62 36 62 64 20 2d 68 69 67 68 6c  r #b5b6bd -highl
250c0 69 67 68 74 62 61 63 6b 67 72 6f 75 6e 64 20 5b  ightbackground [
250d0 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 63 67 65  $w._choosevf cge
250e0 74 20 2d 62 67 5d 20 5c 0a 09 09 20 20 20 20 2d  t -bg] \...    -
250f0 6a 75 73 74 69 66 79 20 63 65 6e 74 65 72 20 2d  justify center -
25100 63 75 72 73 6f 72 20 22 22 20 5c 0a 09 09 20 20  cursor "" \...  
25110 20 20 2d 64 69 73 61 62 6c 65 64 62 61 63 6b 67    -disabledbackg
25120 72 6f 75 6e 64 20 5b 24 77 2e 5f 63 68 6f 6f 73  round [$w._choos
25130 65 76 66 2e 6c 64 20 63 67 65 74 20 2d 62 61 63  evf.ld cget -bac
25140 6b 67 72 6f 75 6e 64 5d 20 5c 0a 09 09 20 20 20  kground] \...   
25150 20 2d 64 69 73 61 62 6c 65 64 66 6f 72 65 67 72   -disabledforegr
25160 6f 75 6e 64 20 5b 24 77 2e 5f 63 68 6f 6f 73 65  ound [$w._choose
25170 76 66 2e 6c 64 20 63 67 65 74 20 2d 66 6f 72 65  vf.ld cget -fore
25180 67 72 6f 75 6e 64 5d 0a 0a 09 09 73 65 74 20 70  ground]....set p
25190 61 74 68 20 5b 6c 69 6e 64 65 78 20 24 6c 69 73  ath [lindex $lis
251a0 74 20 24 69 5d 0a 09 09 73 65 74 20 74 78 74 20  t $i]...set txt 
251b0 5b 66 69 6c 65 20 74 61 69 6c 20 24 70 61 74 68  [file tail $path
251c0 5d 0a 09 09 69 66 20 7b 20 5b 73 74 72 69 6e 67  ]...if { [string
251d0 20 6c 65 6e 67 74 68 20 24 74 78 74 5d 20 3e 20   length $txt] > 
251e0 24 65 6e 74 72 79 6c 65 6e 20 7d 20 7b 0a 09 09  $entrylen } {...
251f0 20 20 20 20 73 65 74 20 74 78 74 20 22 5b 73 74      set txt "[st
25200 72 69 6e 67 20 72 61 6e 67 65 20 24 74 78 74 20  ring range $txt 
25210 30 20 5b 65 78 70 72 20 7b 24 65 6e 74 72 79 6c  0 [expr {$entryl
25220 65 6e 2d 34 7d 5d 5d 2e 2e 2e 22 0a 09 09 7d 0a  en-4}]]..."...}.
25230 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c  ..$w._choosevf.l
25240 24 69 20 69 6e 73 65 72 74 20 65 6e 64 20 24 74  $i insert end $t
25250 78 74 0a 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76  xt...$w._choosev
25260 66 2e 6c 24 69 20 78 76 69 65 77 20 65 6e 64 0a  f.l$i xview end.
25270 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c  ..$w._choosevf.l
25280 24 69 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 74  $i configure -st
25290 61 74 65 20 64 69 73 61 62 6c 65 64 0a 09 09 67  ate disabled...g
252a0 72 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66  rid $w._choosevf
252b0 2e 6c 24 69 20 2d 72 6f 77 20 24 72 6f 77 20 2d  .l$i -row $row -
252c0 63 6f 6c 75 6d 6e 20 24 63 6f 6c 20 2d 73 74 69  column $col -sti
252d0 63 6b 79 20 6e 77 0a 09 09 62 69 6e 64 20 24 77  cky nw...bind $w
252e0 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20 3c  ._choosevf.l$i <
252f0 54 61 62 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44  Tab> "[list RamD
25300 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56  ebugger::ChooseV
25310 69 65 77 46 69 6c 65 20 6e 65 78 74 20 24 69 5d  iewFile next $i]
25320 20 3b 20 62 72 65 61 6b 22 0a 09 09 62 69 6e 64   ; break"...bind
25330 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24   $w._choosevf.l$
25340 69 20 3c 53 68 69 66 74 2d 54 61 62 3e 20 22 5b  i <Shift-Tab> "[
25350 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
25360 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65  ::ChooseViewFile
25370 20 70 72 65 76 20 24 69 5d 20 3b 20 62 72 65 61   prev $i] ; brea
25380 6b 22 0a 09 09 62 69 6e 64 20 24 77 2e 5f 63 68  k"...bind $w._ch
25390 6f 6f 73 65 76 66 2e 6c 24 69 20 3c 52 69 67 68  oosevf.l$i <Righ
253a0 74 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62  t> "[list RamDeb
253b0 75 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65  ugger::ChooseVie
253c0 77 46 69 6c 65 20 6e 65 78 74 20 24 69 5d 20 3b  wFile next $i] ;
253d0 20 62 72 65 61 6b 22 0a 09 09 62 69 6e 64 20 24   break"...bind $
253e0 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20  w._choosevf.l$i 
253f0 3c 4c 65 66 74 3e 20 22 5b 6c 69 73 74 20 52 61  <Left> "[list Ra
25400 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73  mDebugger::Choos
25410 65 56 69 65 77 46 69 6c 65 20 70 72 65 76 20 24  eViewFile prev $
25420 69 5d 20 3b 20 62 72 65 61 6b 22 0a 09 09 62 69  i] ; break"...bi
25430 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e  nd $w._choosevf.
25440 6c 24 69 20 3c 55 70 3e 20 22 5b 6c 69 73 74 20  l$i <Up> "[list 
25450 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f  RamDebugger::Cho
25460 6f 73 65 56 69 65 77 46 69 6c 65 20 75 70 20 24  oseViewFile up $
25470 72 6f 77 20 24 63 6f 6c 5d 20 3b 20 62 72 65 61  row $col] ; brea
25480 6b 22 0a 09 09 62 69 6e 64 20 24 77 2e 5f 63 68  k"...bind $w._ch
25490 6f 6f 73 65 76 66 2e 6c 24 69 20 3c 44 6f 77 6e  oosevf.l$i <Down
254a0 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62 75  > "[list RamDebu
254b0 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77  gger::ChooseView
254c0 46 69 6c 65 20 64 6f 77 6e 20 24 72 6f 77 20 24  File down $row $
254d0 63 6f 6c 5d 20 3b 20 62 72 65 61 6b 22 0a 09 09  col] ; break"...
254e0 62 69 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76  bind $w._choosev
254f0 66 2e 6c 24 69 20 3c 46 6f 63 75 73 49 6e 3e 20  f.l$i <FocusIn> 
25500 5b 6c 69 73 74 20 24 77 2e 5f 63 68 6f 6f 73 65  [list $w._choose
25510 76 66 2e 6c 64 20 63 6f 6e 66 69 67 75 72 65 20  vf.ld configure 
25520 2d 74 65 78 74 20 24 70 61 74 68 5d 0a 09 09 62  -text $path]...b
25530 69 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66  ind $w._choosevf
25540 2e 6c 24 69 20 3c 31 3e 20 22 5b 6c 69 73 74 20  .l$i <1> "[list 
25550 66 6f 63 75 73 20 24 77 2e 5f 63 68 6f 6f 73 65  focus $w._choose
25560 76 66 2e 6c 24 69 5d 20 3b 0a 09 09 20 20 20 20  vf.l$i] ;...    
25570 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
25580 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c  r::ChooseViewFil
25590 65 20 6b 65 79 70 72 65 73 73 20 62 75 74 74 6f  e keypress butto
255a0 6e 31 20 24 6c 69 73 74 5d 20 3b 0a 09 09 20 20  n1 $list] ;...  
255b0 20 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67    [list RamDebug
255c0 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46  ger::ChooseViewF
255d0 69 6c 65 20 6b 65 79 72 65 6c 65 61 73 65 20 62  ile keyrelease b
255e0 75 74 74 6f 6e 31 20 24 6c 69 73 74 5d 20 3b 20  utton1 $list] ; 
255f0 62 72 65 61 6b 22 0a 09 09 69 6e 63 72 20 63 6f  break"...incr co
25600 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 67 72  l..    }..    gr
25610 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e  id $w._choosevf.
25620 6c 64 20 2d 72 6f 77 20 5b 69 6e 63 72 20 72 6f  ld -row [incr ro
25630 77 5d 20 2d 63 6f 6c 75 6d 6e 20 30 20 2d 63 6f  w] -column 0 -co
25640 6c 75 6d 6e 73 70 61 6e 20 24 6e 75 6d 63 6f 6c  lumnspan $numcol
25650 73 20 2d 73 74 69 63 6b 79 20 65 77 20 5c 0a 09  s -sticky ew \..
25660 09 2d 70 61 64 78 20 35 20 2d 70 61 64 79 20 35  .-padx 5 -pady 5
25670 0a 09 20 20 20 20 73 65 74 20 66 6f 6e 74 73 69  ..    set fontsi
25680 7a 65 20 5b 65 78 70 72 20 7b 5b 66 6f 6e 74 20  ze [expr {[font 
25690 61 63 74 75 61 6c 20 5b 24 77 2e 5f 63 68 6f 6f  actual [$w._choo
256a0 73 65 76 66 2e 6c 64 20 63 67 65 74 20 2d 66 6f  sevf.ld cget -fo
256b0 6e 74 5d 20 2d 73 69 7a 65 5d 20 5c 0a 09 09 20  nt] -size] \... 
256c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256d0 20 20 20 2d 32 7d 5d 0a 09 20 20 20 20 6c 61 62     -2}]..    lab
256e0 65 6c 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e  el $w._choosevf.
256f0 6e 6f 74 65 20 2d 74 65 78 74 20 22 50 72 65 73  note -text "Pres
25700 73 20 3c 53 70 61 63 65 3e 20 74 6f 20 63 68 61  s <Space> to cha
25710 6e 67 65 20 66 69 6c 65 20 6c 69 73 74 22 20 5c  nge file list" \
25720 0a 09 09 2d 66 6f 6e 74 20 22 2d 73 69 7a 65 20  ...-font "-size 
25730 24 66 6f 6e 74 73 69 7a 65 22 0a 09 20 20 20 20  $fontsize"..    
25740 67 72 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76  grid $w._choosev
25750 66 2e 6e 6f 74 65 20 2d 72 6f 77 20 5b 69 6e 63  f.note -row [inc
25760 72 20 72 6f 77 5d 20 2d 63 6f 6c 75 6d 6e 20 30  r row] -column 0
25770 20 2d 63 6f 6c 75 6d 6e 73 70 61 6e 20 24 6e 75   -columnspan $nu
25780 6d 63 6f 6c 73 20 2d 73 74 69 63 6b 79 20 65 77  mcols -sticky ew
25790 0a 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c 65  ...    if { [lle
257a0 6e 67 74 68 20 24 6c 69 73 74 5d 20 3c 20 24 6e  ngth $list] < $n
257b0 75 6d 63 6f 6c 73 20 7d 20 7b 20 73 65 74 20 6e  umcols } { set n
257c0 75 6d 63 6f 6c 73 20 5b 6c 6c 65 6e 67 74 68 20  umcols [llength 
257d0 24 6c 69 73 74 5d 20 7d 0a 0a 09 20 20 20 20 67  $list] }...    g
257e0 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67  rid columnconfig
257f0 75 72 65 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66  ure $w._choosevf
25800 20 5b 65 78 70 72 20 7b 24 6e 75 6d 63 6f 6c 73   [expr {$numcols
25810 2d 31 7d 5d 20 2d 77 65 69 67 68 74 20 31 0a 0a  -1}] -weight 1..
25820 09 20 20 20 20 75 70 64 61 74 65 20 69 64 6c 65  .    update idle
25830 74 61 73 6b 73 0a 09 20 20 20 20 73 65 74 20 74  tasks..    set t
25840 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
25850 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 24   [winfo parent $
25860 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 5d 0a 09 20  w._choosevf]].. 
25870 20 20 20 73 65 74 20 78 20 5b 65 78 70 72 20 7b     set x [expr {
25880 69 6e 74 28 5b 77 69 6e 66 6f 20 78 20 24 74 5d  int([winfo x $t]
25890 2b 2e 35 2a 5b 77 69 6e 66 6f 20 77 69 64 74 68  +.5*[winfo width
258a0 20 24 74 5d 2d 2e 35 2a 5b 77 69 6e 66 6f 20 72   $t]-.5*[winfo r
258b0 65 71 77 69 64 74 68 20 24 77 2e 5f 63 68 6f 6f  eqwidth $w._choo
258c0 73 65 76 66 5d 29 7d 5d 0a 09 20 20 20 20 73 65  sevf])}]..    se
258d0 74 20 79 20 5b 65 78 70 72 20 7b 69 6e 74 28 5b  t y [expr {int([
258e0 77 69 6e 66 6f 20 79 20 24 74 5d 2b 2e 35 2a 5b  winfo y $t]+.5*[
258f0 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 74 5d  winfo height $t]
25900 2d 2e 35 2a 5b 77 69 6e 66 6f 20 72 65 71 68 65  -.5*[winfo reqhe
25910 69 67 68 74 20 24 77 2e 5f 63 68 6f 6f 73 65 76  ight $w._choosev
25920 66 5d 29 7d 5d 0a 0a 09 20 20 20 20 69 66 20 7b  f])}]...    if {
25930 20 24 78 2b 5b 77 69 6e 66 6f 20 72 65 71 77 69   $x+[winfo reqwi
25940 64 74 68 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66  dth $w._choosevf
25950 5d 20 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65  ] > [winfo scree
25960 6e 77 69 64 74 68 20 24 77 5d 20 7d 20 7b 0a 09  nwidth $w] } {..
25970 09 73 65 74 20 78 20 5b 65 78 70 72 20 7b 5b 77  .set x [expr {[w
25980 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 64 74 68  info screenwidth
25990 20 24 77 5d 2d 5b 77 69 6e 66 6f 20 72 65 71 77   $w]-[winfo reqw
259a0 69 64 74 68 20 24 77 2e 5f 63 68 6f 6f 73 65 76  idth $w._choosev
259b0 66 5d 7d 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20  f]}]..    }..   
259c0 20 69 66 20 7b 20 24 79 2b 5b 77 69 6e 66 6f 20   if { $y+[winfo 
259d0 72 65 71 68 65 69 67 68 74 20 24 77 2e 5f 63 68  reqheight $w._ch
259e0 6f 6f 73 65 76 66 5d 20 3e 20 5b 77 69 6e 66 6f  oosevf] > [winfo
259f0 20 73 63 72 65 65 6e 68 65 69 67 68 74 20 24 77   screenheight $w
25a00 5d 20 7d 20 7b 0a 09 09 73 65 74 20 79 20 5b 65  ] } {...set y [e
25a10 78 70 72 20 7b 5b 77 69 6e 66 6f 20 73 63 72 65  xpr {[winfo scre
25a20 65 6e 68 65 69 67 68 74 20 24 77 5d 2d 5b 77 69  enheight $w]-[wi
25a30 6e 66 6f 20 72 65 71 68 65 69 67 68 74 20 24 77  nfo reqheight $w
25a40 2e 5f 63 68 6f 6f 73 65 76 66 5d 7d 5d 0a 09 20  ._choosevf]}].. 
25a50 20 20 20 7d 0a 09 20 20 20 20 77 6d 20 67 65 6f     }..    wm geo
25a60 6d 65 74 72 79 20 24 77 2e 5f 63 68 6f 6f 73 65  metry $w._choose
25a70 76 66 20 2b 24 78 2b 24 79 0a 09 20 20 20 20 77  vf +$x+$y..    w
25a80 6d 20 64 65 69 63 6f 6e 69 66 79 20 24 77 2e 5f  m deiconify $w._
25a90 63 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 0a 09  choosevf..    ..
25aa0 20 20 20 20 62 69 6e 64 20 24 77 2e 5f 63 68 6f      bind $w._cho
25ab0 6f 73 65 76 66 20 3c 4b 65 79 52 65 6c 65 61 73  osevf <KeyReleas
25ac0 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75  e> [list RamDebu
25ad0 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77  gger::ChooseView
25ae0 46 69 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20  File \...       
25af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b00 20 20 20 20 20 20 20 20 20 6b 65 79 72 65 6c 65           keyrele
25b10 61 73 65 20 25 4b 20 24 6c 69 73 74 5d 0a 09 20  ase %K $list].. 
25b20 20 20 20 62 69 6e 64 20 24 77 2e 5f 63 68 6f 6f     bind $w._choo
25b30 73 65 76 66 20 3c 4b 65 79 50 72 65 73 73 3e 20  sevf <KeyPress> 
25b40 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
25b50 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c  r::ChooseViewFil
25b60 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20  e \...          
25b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b80 20 20 20 20 6b 65 79 70 72 65 73 73 20 25 4b 20      keypress %K 
25b90 24 77 68 61 74 5d 0a 09 20 20 20 20 66 6f 72 65  $what]..    fore
25ba0 61 63 68 20 69 20 5b 6c 69 73 74 20 24 77 2e 5f  ach i [list $w._
25bb0 63 68 6f 6f 73 65 76 66 2e 6e 6f 74 65 20 24 77  choosevf.note $w
25bc0 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 64 5d 20 7b  ._choosevf.ld] {
25bd0 0a 09 09 62 69 6e 64 20 24 69 20 3c 31 3e 20 5b  ...bind $i <1> [
25be0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
25bf0 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65  ::ChooseViewFile
25c00 20 5c 0a 09 09 20 20 20 20 20 20 20 20 6e 65 78   \...        nex
25c10 74 74 61 62 20 24 77 68 61 74 5d 0a 09 20 20 20  ttab $what]..   
25c20 20 7d 0a 09 20 20 20 20 62 69 6e 64 20 24 77 2e   }..    bind $w.
25c30 5f 63 68 6f 6f 73 65 76 66 20 3c 31 3e 20 5b 6c  _choosevf <1> [l
25c40 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
25c50 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20  :ChooseViewFile 
25c60 63 68 65 63 6b 5f 6f 75 74 73 69 64 65 20 25 78  check_outside %x
25c70 20 25 79 5d 0a 09 20 20 20 20 0a 09 20 20 20 20   %y]..    ..    
25c80 72 61 69 73 65 20 24 77 2e 5f 63 68 6f 6f 73 65  raise $w._choose
25c90 76 66 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65  vf..    ..    se
25ca0 74 20 6f 6c 64 47 72 61 62 20 5b 67 72 61 62 20  t oldGrab [grab 
25cb0 63 75 72 72 65 6e 74 20 24 77 5d 0a 09 20 20 20  current $w]..   
25cc0 20 69 66 20 7b 20 24 6f 6c 64 47 72 61 62 20 6e   if { $oldGrab n
25cd0 65 20 22 22 20 26 26 20 5b 77 69 6e 66 6f 20 65  e "" && [winfo e
25ce0 78 69 73 74 73 20 24 6f 6c 64 47 72 61 62 5d 20  xists $oldGrab] 
25cf0 7d 20 7b 0a 09 09 73 65 74 20 67 72 61 62 53 74  } {...set grabSt
25d00 61 74 75 73 20 5b 67 72 61 62 20 73 74 61 74 75  atus [grab statu
25d10 73 20 24 6f 6c 64 47 72 61 62 5d 0a 09 09 67 72  s $oldGrab]...gr
25d20 61 62 20 72 65 6c 65 61 73 65 20 24 6f 6c 64 47  ab release $oldG
25d30 72 61 62 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  rab..    }..    
25d40 73 65 74 20 6f 6c 64 46 6f 63 75 73 20 5b 66 6f  set oldFocus [fo
25d50 63 75 73 5d 0a 0a 09 20 20 20 20 67 72 61 62 20  cus]...    grab 
25d60 24 77 2e 5f 63 68 6f 6f 73 65 76 66 0a 09 20 20  $w._choosevf..  
25d70 20 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20    if { [llength 
25d80 24 6c 69 73 74 5d 20 3e 20 31 20 7d 20 7b 0a 09  $list] > 1 } {..
25d90 09 61 66 74 65 72 20 69 64 6c 65 20 5b 6c 69 73  .after idle [lis
25da0 74 20 63 61 74 63 68 20 5b 6c 69 73 74 20 66 6f  t catch [list fo
25db0 63 75 73 20 2d 66 6f 72 63 65 20 24 77 2e 5f 63  cus -force $w._c
25dc0 68 6f 6f 73 65 76 66 2e 6c 31 5d 5d 0a 09 20 20  hoosevf.l1]]..  
25dd0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 61 66 74    } else {...aft
25de0 65 72 20 69 64 6c 65 20 5b 6c 69 73 74 20 63 61  er idle [list ca
25df0 74 63 68 20 5b 6c 69 73 74 20 66 6f 63 75 73 20  tch [list focus 
25e00 2d 66 6f 72 63 65 20 24 77 2e 5f 63 68 6f 6f 73  -force $w._choos
25e10 65 76 66 2e 6c 30 5d 5d 0a 09 20 20 20 20 7d 0a  evf.l0]]..    }.
25e20 09 7d 0a 09 64 65 73 74 72 6f 79 20 7b 0a 09 20  .}..destroy {.. 
25e30 20 20 20 64 65 73 74 72 6f 79 20 24 77 2e 5f 63     destroy $w._c
25e40 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 0a 09 20  hoosevf..    .. 
25e50 20 20 20 69 66 20 7b 20 24 6f 6c 64 47 72 61 62     if { $oldGrab
25e60 20 6e 65 20 22 22 20 7d 20 20 7b 0a 09 09 69 66   ne "" }  {...if
25e70 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   { [info exists 
25e80 67 72 61 62 53 74 61 74 75 73 5d 20 26 26 20 24  grabStatus] && $
25e90 67 72 61 62 53 74 61 74 75 73 20 6e 65 20 22 67  grabStatus ne "g
25ea0 6c 6f 62 61 6c 22 20 7d 20 7b 0a 09 09 20 20 20  lobal" } {...   
25eb0 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69   if { [winfo exi
25ec0 73 74 73 20 24 6f 6c 64 47 72 61 62 5d 20 26 26  sts $oldGrab] &&
25ed0 20 5b 77 69 6e 66 6f 20 69 73 6d 61 70 70 65 64   [winfo ismapped
25ee0 20 24 6f 6c 64 47 72 61 62 5d 20 7d 20 7b 0a 09   $oldGrab] } {..
25ef0 09 20 20 20 20 20 20 20 20 67 72 61 62 20 24 6f  .        grab $o
25f00 6c 64 47 72 61 62 0a 09 09 20 20 20 20 7d 0a 09  ldGrab...    }..
25f10 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20  .} else {...    
25f20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73  if { [winfo exis
25f30 74 73 20 24 6f 6c 64 47 72 61 62 5d 20 26 26 20  ts $oldGrab] && 
25f40 5b 77 69 6e 66 6f 20 69 73 6d 61 70 70 65 64 20  [winfo ismapped 
25f50 24 6f 6c 64 47 72 61 62 5d 20 7d 20 7b 0a 09 09  $oldGrab] } {...
25f60 20 20 20 20 20 20 20 20 67 72 61 62 20 2d 67 6c          grab -gl
25f70 6f 62 61 6c 20 24 6f 6c 64 47 72 61 62 0a 09 09  obal $oldGrab...
25f80 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d      }...}..    }
25f90 0a 09 20 20 20 20 69 66 20 7b 20 5b 77 69 6e 66  ..    if { [winf
25fa0 6f 20 65 78 69 73 74 73 20 24 6f 6c 64 46 6f 63  o exists $oldFoc
25fb0 75 73 5d 20 26 26 20 5b 77 69 6e 66 6f 20 69 73  us] && [winfo is
25fc0 6d 61 70 70 65 64 20 24 6f 6c 64 46 6f 63 75 73  mapped $oldFocus
25fd0 5d 20 20 7d 20 7b 0a 09 09 66 6f 63 75 73 20 2d  ]  } {...focus -
25fe0 66 6f 72 63 65 20 24 6f 6c 64 46 6f 63 75 73 0a  force $oldFocus.
25ff0 09 20 20 20 20 7d 0a 09 7d 0a 09 6b 65 79 72 65  .    }..}..keyre
26000 6c 65 61 73 65 20 7b 0a 09 20 20 20 20 6c 61 73  lease {..    las
26010 73 69 67 6e 20 24 61 72 67 73 20 4b 20 6c 69 73  sign $args K lis
26020 74 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 74  t..    ..    set
26030 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d   ipos [lsearch -
26040 65 78 61 63 74 20 24 43 68 6f 6f 73 65 56 69 65  exact $ChooseVie
26050 77 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b  wFile_keypress [
26060 6c 69 73 74 20 24 4b 20 6e 65 77 5d 5d 0a 09 20  list $K new]].. 
26070 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 3d 3d     if { $ipos ==
26080 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 69 70   -1 } {...set ip
26090 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61  os [lsearch -exa
260a0 63 74 20 24 43 68 6f 6f 73 65 56 69 65 77 46 69  ct $ChooseViewFi
260b0 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b 6c 69 73  le_keypress [lis
260c0 74 20 24 4b 20 6f 6c 64 5d 5d 0a 09 20 20 20 20  t $K old]]..    
260d0 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 6f  }..    if { $ipo
260e0 73 20 3d 3d 20 2d 31 20 7d 20 7b 20 73 65 74 20  s == -1 } { set 
260f0 69 70 6f 73 20 30 20 7d 0a 09 20 20 20 20 0a 09  ipos 0 }..    ..
26100 20 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 78      if { ![regex
26110 70 20 7b 28 3f 69 29 5e 28 63 6f 6e 74 72 6f 6c  p {(?i)^(control
26120 29 7d 20 24 4b 5d 20 7d 20 7b 0a 09 09 73 65 74  )} $K] } {...set
26130 20 69 73 66 61 73 74 20 30 0a 09 20 20 20 20 7d   isfast 0..    }
26140 20 65 6c 73 65 69 66 20 7b 20 5b 6c 69 6e 64 65   elseif { [linde
26150 78 20 24 43 68 6f 6f 73 65 56 69 65 77 46 69 6c  x $ChooseViewFil
26160 65 5f 6b 65 79 70 72 65 73 73 20 24 69 70 6f 73  e_keypress $ipos
26170 20 31 5d 20 65 71 20 22 6e 65 77 22 20 7d 20 7b   1] eq "new" } {
26180 0a 09 09 73 65 74 20 69 73 66 61 73 74 20 31 0a  ...set isfast 1.
26190 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
261a0 73 65 74 20 69 73 66 61 73 74 20 30 0a 09 20 20  set isfast 0..  
261b0 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 21 24    }..    if { !$
261c0 69 73 66 61 73 74 20 26 26 20 5b 72 65 67 65 78  isfast && [regex
261d0 70 20 7b 28 3f 69 29 5e 28 63 6f 6e 74 72 6f 6c  p {(?i)^(control
261e0 7c 72 65 74 75 72 6e 7c 62 75 74 74 6f 6e 31 29  |return|button1)
261f0 7d 20 24 4b 5d 20 7d 20 7b 0a 09 09 72 65 67 65  } $K] } {...rege
26200 78 70 20 7b 5b 30 2d 39 5d 2b 24 7d 20 5b 66 6f  xp {[0-9]+$} [fo
26210 63 75 73 5d 20 70 6f 73 0a 09 09 73 65 74 20 43  cus] pos...set C
26220 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65  hooseViewFile_ke
26230 79 70 72 65 73 73 20 22 22 0a 09 09 43 68 6f 6f  ypress ""...Choo
26240 73 65 56 69 65 77 46 69 6c 65 20 64 65 73 74 72  seViewFile destr
26250 6f 79 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65  oy...if { [linde
26260 78 20 24 6c 69 73 74 20 24 70 6f 73 5d 20 6e 65  x $list $pos] ne
26270 20 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 20   $file } {...   
26280 20 75 70 64 61 74 65 20 3b 23 20 74 6f 20 6c 65   update ;# to le
26290 74 20 66 6f 63 75 73 20 63 68 61 6e 67 65 0a 09  t focus change..
262a0 09 20 20 20 20 4f 70 65 6e 46 69 6c 65 46 20 5b  .    OpenFileF [
262b0 6c 69 6e 64 65 78 20 24 6c 69 73 74 20 24 70 6f  lindex $list $po
262c0 73 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 6c  s]...}..    } el
262d0 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b  seif { [regexp {
262e0 28 3f 69 29 5e 65 73 63 61 70 65 7d 20 24 4b 5d  (?i)^escape} $K]
262f0 20 7d 20 7b 0a 09 09 73 65 74 20 43 68 6f 6f 73   } {...set Choos
26300 65 56 69 65 77 46 69 6c 65 5f 6b 65 79 70 72 65  eViewFile_keypre
26310 73 73 20 22 22 0a 09 09 43 68 6f 6f 73 65 56 69  ss ""...ChooseVi
26320 65 77 46 69 6c 65 20 64 65 73 74 72 6f 79 0a 09  ewFile destroy..
26330 20 20 20 20 7d 0a 09 7d 0a 09 6b 65 79 70 72 65      }..}..keypre
26340 73 73 20 7b 0a 09 20 20 20 20 6c 61 73 73 69 67  ss {..    lassig
26350 6e 20 24 61 72 67 73 20 4b 20 77 68 61 74 5f 69  n $args K what_i
26360 6e 0a 09 20 20 20 20 0a 09 20 20 20 20 61 66 74  n..    ..    aft
26370 65 72 20 24 61 66 74 65 72 5f 74 69 6d 65 20 5b  er $after_time [
26380 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
26390 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65  ::ChooseViewFile
263a0 20 6b 65 79 70 72 65 73 73 5f 65 6e 64 20 24 4b   keypress_end $K
263b0 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 43  ]..    lappend C
263c0 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65  hooseViewFile_ke
263d0 79 70 72 65 73 73 20 5b 6c 69 73 74 20 24 4b 20  ypress [list $K 
263e0 6e 65 77 5d 0a 09 20 20 20 20 0a 09 20 20 20 20  new]..    ..    
263f0 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 28 3f  if { [regexp {(?
26400 69 29 5e 73 70 61 63 65 7d 20 24 4b 5d 20 7d 20  i)^space} $K] } 
26410 7b 0a 09 09 73 77 69 74 63 68 20 24 77 68 61 74  {...switch $what
26420 5f 69 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 72  _in {...    star
26430 74 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65  t {...        se
26440 74 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74  t whatnext start
26450 72 65 63 65 6e 74 0a 09 09 20 20 20 20 7d 0a 09  recent...    }..
26460 09 20 20 20 20 73 74 61 72 74 72 65 63 65 6e 74  .    startrecent
26470 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74   {...        set
26480 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 63   whatnext startc
26490 75 72 72 64 69 72 0a 09 09 20 20 20 20 7d 0a 09  urrdir...    }..
264a0 09 20 20 20 20 73 74 61 72 74 63 75 72 72 64 69  .    startcurrdi
264b0 72 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65  r {...        se
264c0 74 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74  t whatnext start
264d0 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 43  ...    }...}...C
264e0 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 24 77  hooseViewFile $w
264f0 68 61 74 6e 65 78 74 0a 09 20 20 20 20 7d 0a 09  hatnext..    }..
26500 7d 0a 09 6b 65 79 70 72 65 73 73 5f 65 6e 64 20  }..keypress_end 
26510 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 24  {..    lassign $
26520 61 72 67 73 20 4b 0a 09 20 20 20 20 73 65 74 20  args K..    set 
26530 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65  ipos [lsearch -e
26540 78 61 63 74 20 24 43 68 6f 6f 73 65 56 69 65 77  xact $ChooseView
26550 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b 6c  File_keypress [l
26560 69 73 74 20 24 4b 20 6e 65 77 5d 5d 0a 09 20 20  ist $K new]]..  
26570 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20    if { $ipos != 
26580 2d 31 20 7d 20 7b 0a 09 09 6c 73 65 74 20 43 68  -1 } {...lset Ch
26590 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 79  ooseViewFile_key
265a0 70 72 65 73 73 20 24 69 70 6f 73 20 31 20 6f 6c  press $ipos 1 ol
265b0 64 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 63 68 65  d..    }..}..che
265c0 63 6b 5f 6f 75 74 73 69 64 65 20 7b 0a 09 20 20  ck_outside {..  
265d0 20 20 6c 61 73 73 69 67 6e 20 5b 6c 72 61 6e 67    lassign [lrang
265e0 65 20 24 61 72 67 73 20 30 20 31 5d 20 78 20 79  e $args 0 1] x y
265f0 0a 09 20 20 20 20 69 66 20 7b 20 24 78 20 3c 20  ..    if { $x < 
26600 30 20 7c 7c 20 24 79 20 3c 20 30 20 7c 7c 20 24  0 || $y < 0 || $
26610 78 20 3e 20 5b 77 69 6e 66 6f 20 77 69 64 74 68  x > [winfo width
26620 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 20 7c   $w._choosevf] |
26630 7c 20 24 79 20 3e 20 5b 77 69 6e 66 6f 20 68 65  | $y > [winfo he
26640 69 67 68 74 20 24 77 2e 5f 63 68 6f 6f 73 65 76  ight $w._choosev
26650 66 5d 20 7d 20 7b 0a 09 09 43 68 6f 6f 73 65 56  f] } {...ChooseV
26660 69 65 77 46 69 6c 65 20 64 65 73 74 72 6f 79 0a  iewFile destroy.
26670 09 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 62  ..return -code b
26680 72 65 61 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 09  reak..    }..}..
26690 6e 65 78 74 74 61 62 20 7b 0a 09 20 20 20 20 66  nexttab {..    f
266a0 6f 72 65 61 63 68 20 22 77 68 61 74 5f 69 6e 22  oreach "what_in"
266b0 20 24 61 72 67 73 20 62 72 65 61 6b 0a 09 20 20   $args break..  
266c0 20 20 73 77 69 74 63 68 20 24 77 68 61 74 5f 69    switch $what_i
266d0 6e 20 7b 0a 09 09 73 74 61 72 74 20 7b 0a 09 09  n {...start {...
266e0 20 20 20 20 73 65 74 20 77 68 61 74 6e 65 78 74      set whatnext
266f0 20 73 74 61 72 74 72 65 63 65 6e 74 0a 09 09 7d   startrecent...}
26700 0a 09 09 73 74 61 72 74 72 65 63 65 6e 74 20 7b  ...startrecent {
26710 0a 09 09 20 20 20 20 73 65 74 20 77 68 61 74 6e  ...    set whatn
26720 65 78 74 20 73 74 61 72 74 63 75 72 72 64 69 72  ext startcurrdir
26730 0a 09 09 7d 0a 09 09 73 74 61 72 74 63 75 72 72  ...}...startcurr
26740 64 69 72 20 7b 0a 09 09 20 20 20 20 73 65 74 20  dir {...    set 
26750 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 0a 09  whatnext start..
26760 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 43  .}..    }..    C
26770 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 24 77  hooseViewFile $w
26780 68 61 74 6e 65 78 74 0a 09 7d 0a 09 6e 65 78 74  hatnext..}..next
26790 20 7b 0a 09 20 20 20 20 73 65 74 20 69 20 5b 6c   {..    set i [l
267a0 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d 0a 09  index $args 0]..
267b0 20 20 20 20 69 6e 63 72 20 69 0a 09 20 20 20 20      incr i..    
267c0 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73  if { [winfo exis
267d0 74 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e  ts $w._choosevf.
267e0 6c 24 69 5d 20 7d 20 7b 0a 09 09 66 6f 63 75 73  l$i] } {...focus
267f0 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24   $w._choosevf.l$
26800 69 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  i..    } else {.
26810 09 09 66 6f 63 75 73 20 24 77 2e 5f 63 68 6f 6f  ..focus $w._choo
26820 73 65 76 66 2e 6c 30 0a 09 20 20 20 20 7d 0a 09  sevf.l0..    }..
26830 7d 0a 09 70 72 65 76 20 7b 0a 09 20 20 20 20 73  }..prev {..    s
26840 65 74 20 69 20 5b 6c 69 6e 64 65 78 20 24 61 72  et i [lindex $ar
26850 67 73 20 30 5d 0a 09 20 20 20 20 69 6e 63 72 20  gs 0]..    incr 
26860 69 20 2d 31 0a 09 20 20 20 20 69 66 20 7b 20 24  i -1..    if { $
26870 69 20 3e 3d 20 30 20 7d 20 7b 0a 09 09 66 6f 63  i >= 0 } {...foc
26880 75 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e  us $w._choosevf.
26890 6c 24 69 0a 09 20 20 20 20 7d 20 65 6c 73 65 20  l$i..    } else 
268a0 7b 0a 09 09 77 68 69 6c 65 20 31 20 7b 0a 09 09  {...while 1 {...
268b0 20 20 20 20 69 6e 63 72 20 69 0a 09 09 20 20 20      incr i...   
268c0 20 69 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 78   if { ![winfo ex
268d0 69 73 74 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76  ists $w._choosev
268e0 66 2e 6c 24 69 5d 20 7d 20 7b 20 62 72 65 61 6b  f.l$i] } { break
268f0 20 7d 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69 20   }...}...incr i 
26900 2d 31 0a 09 09 66 6f 63 75 73 20 24 77 2e 5f 63  -1...focus $w._c
26910 68 6f 6f 73 65 76 66 2e 6c 24 69 0a 09 20 20 20  hoosevf.l$i..   
26920 20 7d 0a 09 7d 0a 09 75 70 20 7b 0a 09 20 20 20   }..}..up {..   
26930 20 66 6f 72 65 61 63 68 20 22 72 6f 77 20 63 6f   foreach "row co
26940 6c 22 20 24 61 72 67 73 20 62 72 65 61 6b 0a 09  l" $args break..
26950 20 20 20 20 69 6e 63 72 20 72 6f 77 20 2d 31 0a      incr row -1.
26960 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 6d 61  .    foreach "ma
26970 78 63 6f 6c 20 6d 61 78 72 6f 77 22 20 5b 67 72  xcol maxrow" [gr
26980 69 64 20 73 69 7a 65 20 24 77 2e 5f 63 68 6f 6f  id size $w._choo
26990 73 65 76 66 5d 20 62 72 65 61 6b 0a 09 20 20 20  sevf] break..   
269a0 20 69 66 20 7b 20 24 72 6f 77 20 3c 20 30 20 7d   if { $row < 0 }
269b0 20 7b 20 73 65 74 20 72 6f 77 20 5b 65 78 70 72   { set row [expr
269c0 20 7b 24 6d 61 78 72 6f 77 2d 33 7d 5d 20 7d 0a   {$maxrow-3}] }.
269d0 09 20 20 20 20 66 6f 63 75 73 20 5b 67 72 69 64  .    focus [grid
269e0 20 73 6c 61 76 65 73 20 24 77 2e 5f 63 68 6f 6f   slaves $w._choo
269f0 73 65 76 66 20 2d 72 6f 77 20 24 72 6f 77 20 2d  sevf -row $row -
26a00 63 6f 6c 20 24 63 6f 6c 5d 0a 09 7d 0a 09 64 6f  col $col]..}..do
26a10 77 6e 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63  wn {..    foreac
26a20 68 20 22 72 6f 77 20 63 6f 6c 22 20 24 61 72 67  h "row col" $arg
26a30 73 20 62 72 65 61 6b 0a 09 20 20 20 20 69 6e 63  s break..    inc
26a40 72 20 72 6f 77 20 31 0a 09 20 20 20 20 66 6f 72  r row 1..    for
26a50 65 61 63 68 20 22 6d 61 78 63 6f 6c 20 6d 61 78  each "maxcol max
26a60 72 6f 77 22 20 5b 67 72 69 64 20 73 69 7a 65 20  row" [grid size 
26a70 24 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 20 62 72  $w._choosevf] br
26a80 65 61 6b 0a 09 20 20 20 20 69 66 20 7b 20 5b 67  eak..    if { [g
26a90 72 69 64 20 73 6c 61 76 65 73 20 24 77 2e 5f 63  rid slaves $w._c
26aa0 68 6f 6f 73 65 76 66 20 2d 72 6f 77 20 24 72 6f  hoosevf -row $ro
26ab0 77 20 2d 63 6f 6c 20 24 63 6f 6c 5d 20 65 71 20  w -col $col] eq 
26ac0 22 22 20 7c 7c 20 5c 0a 09 09 20 20 20 20 20 5b  "" || \...     [
26ad0 67 72 69 64 20 73 6c 61 76 65 73 20 24 77 2e 5f  grid slaves $w._
26ae0 63 68 6f 6f 73 65 76 66 20 2d 72 6f 77 20 24 72  choosevf -row $r
26af0 6f 77 20 2d 63 6f 6c 20 24 63 6f 6c 5d 20 65 71  ow -col $col] eq
26b00 20 22 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c   "$w._choosevf.l
26b10 64 22 20 7d 20 7b 0a 09 09 73 65 74 20 72 6f 77  d" } {...set row
26b20 20 30 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66   0..    }..    f
26b30 6f 63 75 73 20 5b 67 72 69 64 20 73 6c 61 76 65  ocus [grid slave
26b40 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 2d  s $w._choosevf -
26b50 72 6f 77 20 24 72 6f 77 20 2d 63 6f 6c 20 24 63  row $row -col $c
26b60 6f 6c 5d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a  ol]..}.    }.}..
26b70 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
26b80 72 3a 3a 41 63 74 75 61 6c 69 7a 65 56 69 65 77  r::ActualizeView
26b90 4d 65 6e 75 20 7b 20 6d 65 6e 75 20 7d 20 7b 0a  Menu { menu } {.
26ba0 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e      variable Win
26bb0 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a 20 20 20  dowFilesList.   
26bc0 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77   variable Window
26bd0 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d  FilesListLineNum
26be0 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  s.    variable t
26bf0 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ext.    variable
26c00 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20   currentfile..  
26c10 20 20 69 66 20 7b 20 5b 24 6d 65 6e 75 20 69 6e    if { [$menu in
26c20 64 65 78 20 65 6e 64 5d 20 3e 20 31 30 20 7d 20  dex end] > 10 } 
26c30 7b 0a 09 24 6d 65 6e 75 20 64 65 6c 20 31 31 20  {..$menu del 11 
26c40 65 6e 64 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24  end.    }..    $
26c50 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
26c60 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 50 72 65 76   -label [_ "Prev
26c70 69 6f 75 73 22 5d 20 2d 61 63 63 20 22 24 3a 3a  ious"] -acc "$::
26c80 61 6c 74 5f 74 78 74 2d 4c 65 66 74 22 20 2d 63  alt_txt-Left" -c
26c90 6f 6d 6d 61 6e 64 20 5c 0a 09 22 52 61 6d 44 65  ommand \.."RamDe
26ca0 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76  bugger::GotoPrev
26cb0 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73  iousNextInWinLis
26cc0 74 20 70 72 65 76 22 0a 20 20 20 20 24 6d 65 6e  t prev".    $men
26cd0 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
26ce0 61 62 65 6c 20 5b 5f 20 22 4e 65 78 74 22 5d 20  abel [_ "Next"] 
26cf0 2d 61 63 63 20 22 24 3a 3a 61 6c 74 5f 74 78 74  -acc "$::alt_txt
26d00 2d 52 69 67 68 74 22 20 2d 63 6f 6d 6d 61 6e 64  -Right" -command
26d10 20 5c 0a 09 22 52 61 6d 44 65 62 75 67 67 65 72   \.."RamDebugger
26d20 3a 3a 47 6f 74 6f 50 72 65 76 69 6f 75 73 4e 65  ::GotoPreviousNe
26d30 78 74 49 6e 57 69 6e 4c 69 73 74 20 6e 65 78 74  xtInWinList next
26d40 22 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20  ".    $menu add 
26d50 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b  command -label [
26d60 5f 20 22 53 65 6c 65 63 74 22 5d 2e 2e 2e 20 2d  _ "Select"]... -
26d70 61 63 63 20 22 43 74 72 6c 2d 54 61 62 22 20 2d  acc "Ctrl-Tab" -
26d80 63 6f 6d 6d 61 6e 64 20 5c 0a 09 5b 6c 69 73 74  command \..[list
26d90 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68   RamDebugger::Ch
26da0 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 73 74 61  ooseViewFile sta
26db0 72 74 5d 20 2d 75 6e 64 65 72 6c 69 6e 65 20 31  rt] -underline 1
26dc0 0a 0a 20 20 20 20 73 65 74 20 6e 65 65 64 73 73  ..    set needss
26dd0 65 70 20 31 0a 20 20 20 20 66 6f 72 65 61 63 68  ep 1.    foreach
26de0 20 69 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c   i $WindowFilesL
26df0 69 73 74 20 7b 0a 09 69 66 20 7b 20 24 6e 65 65  ist {..if { $nee
26e00 64 73 73 65 70 20 7d 20 7b 0a 09 20 20 20 20 24  dssep } {..    $
26e10 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72 61 74  menu add separat
26e20 6f 72 0a 09 20 20 20 20 73 65 74 20 6e 65 65 64  or..    set need
26e30 73 73 65 70 20 30 0a 09 7d 0a 09 73 65 74 20 6c  ssep 0..}..set l
26e40 61 62 65 6c 20 24 69 0a 09 69 66 20 7b 20 5b 73  abel $i..if { [s
26e50 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6c 61  tring length $la
26e60 62 65 6c 5d 20 3e 20 34 35 20 7d 20 7b 20 73 65  bel] > 45 } { se
26e70 74 20 6c 61 62 65 6c 20 2e 2e 2e 5b 73 74 72 69  t label ...[stri
26e80 6e 67 20 72 61 6e 67 65 20 24 6c 61 62 65 6c 20  ng range $label 
26e90 65 6e 64 2d 34 32 20 65 6e 64 5d 20 7d 0a 09 0a  end-42 end] }...
26ea0 09 69 66 20 7b 20 24 69 20 65 71 20 24 63 75 72  .if { $i eq $cur
26eb0 72 65 6e 74 66 69 6c 65 20 7d 20 7b 0a 09 20 20  rentfile } {..  
26ec0 20 20 24 6d 65 6e 75 20 61 64 64 20 63 68 65 63    $menu add chec
26ed0 6b 62 75 74 74 6f 6e 20 2d 6c 61 62 65 6c 20 24  kbutton -label $
26ee0 6c 61 62 65 6c 20 2d 76 61 72 69 61 62 6c 65 20  label -variable 
26ef0 3a 3a 70 70 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a  ::pp -command \.
26f00 09 09 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  ..[list RamDebug
26f10 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 24  ger::OpenFileF $
26f20 69 5d 0a 09 20 20 20 20 73 65 74 20 3a 3a 70 70  i]..    set ::pp
26f30 20 31 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20   1..} else {..  
26f40 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d    $menu add comm
26f50 61 6e 64 20 2d 6c 61 62 65 6c 20 24 6c 61 62 65  and -label $labe
26f60 6c 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74  l -command [list
26f70 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70   RamDebugger::Op
26f80 65 6e 46 69 6c 65 46 20 24 69 5d 0a 09 7d 0a 20  enFileF $i]..}. 
26f90 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
26fa0 44 65 62 75 67 67 65 72 3a 3a 41 64 64 52 65 63  Debugger::AddRec
26fb0 65 6e 74 66 69 6c 65 73 54 6f 4d 65 6e 75 20 7b  entfilesToMenu {
26fc0 20 6d 65 6e 75 20 7d 20 7b 0a 20 20 20 20 76 61   menu } {.    va
26fd0 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a  riable options..
26fe0 20 20 20 20 24 6d 65 6e 75 20 64 65 6c 20 30 20      $menu del 0 
26ff0 65 6e 64 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b  end..    if { ![
27000 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69  info exists opti
27010 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 29  ons(RecentFiles)
27020 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a  ] } { return }..
27030 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 6f      foreach i $o
27040 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c  ptions(RecentFil
27050 65 73 29 20 7b 0a 09 73 65 74 20 6c 61 62 65 6c  es) {..set label
27060 20 24 69 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e   $i..if { [strin
27070 67 20 6c 65 6e 67 74 68 20 24 6c 61 62 65 6c 5d  g length $label]
27080 20 3e 20 34 35 20 7d 20 7b 0a 09 20 20 20 20 73   > 45 } {..    s
27090 65 74 20 6c 61 62 65 6c 20 2e 2e 2e 5b 73 74 72  et label ...[str
270a0 69 6e 67 20 72 61 6e 67 65 20 24 6c 61 62 65 6c  ing range $label
270b0 20 65 6e 64 2d 34 32 20 65 6e 64 5d 0a 09 7d 0a   end-42 end]..}.
270c0 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61  .$menu add comma
270d0 6e 64 20 2d 6c 61 62 65 6c 20 24 6c 61 62 65 6c  nd -label $label
270e0 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20   -command \..   
270f0 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67   "[list RamDebug
27100 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 24  ger::OpenFileF $
27110 69 5d 20 3b 20 52 61 6d 44 65 62 75 67 67 65 72  i] ; RamDebugger
27120 3a 3a 46 69 6c 6c 4c 69 73 74 42 6f 78 22 0a 20  ::FillListBox". 
27130 20 20 20 7d 0a 7d 0a 0a 0a 70 72 6f 63 20 52 61     }.}...proc Ra
27140 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 74 47 55  mDebugger::SetGU
27150 49 42 72 65 61 6b 70 6f 69 6e 74 20 7b 7d 20 7b  IBreakpoint {} {
27160 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 6d  .    variable im
27170 61 67 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c  ages.    variabl
27180 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72  e marker.    var
27190 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76  iable text.    v
271a0 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65  ariable remotese
271b0 72 76 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c  rver.    variabl
271c0 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a 20  e currentfile.. 
271d0 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74     if { $current
271e0 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  file == "" } {..
271f0 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 69 73  WarnWin [_ "This
27200 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 61   file does not a
27210 64 6d 69 74 20 62 72 65 61 6b 70 6f 69 6e 74 73  dmit breakpoints
27220 22 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  "]..return.    }
27230 0a 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 74  .    set idx [$t
27240 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74  ext index insert
27250 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24 69 64 78  ]..    if { $idx
27260 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 57 61 72 6e   == "" } {..Warn
27270 57 69 6e 20 5b 5f 20 22 42 65 66 6f 72 65 20 73  Win [_ "Before s
27280 65 74 74 69 6e 67 20 62 72 65 61 6b 70 6f 69 6e  etting breakpoin
27290 74 2c 20 73 65 6c 65 63 74 20 73 6f 6d 65 74 68  t, select someth
272a0 69 6e 67 20 6f 72 20 70 69 63 6b 20 69 6e 20 74  ing or pick in t
272b0 68 65 20 74 65 78 74 22 5d 0a 09 72 65 74 75 72  he text"]..retur
272c0 6e 0a 20 20 20 20 7d 0a 20 20 20 20 57 61 69 74  n.    }.    Wait
272d0 53 74 61 74 65 20 31 0a 20 20 20 20 24 74 65 78  State 1.    $tex
272e0 74 20 73 65 65 20 24 69 64 78 0a 20 20 20 20 73  t see $idx.    s
272f0 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 24 69  et line [scan $i
27300 64 78 20 22 25 64 22 5d 0a 0a 20 20 20 20 69 66  dx "%d"]..    if
27310 20 7b 20 5b 72 69 6e 66 6f 20 24 6c 69 6e 65 5d   { [rinfo $line]
27320 20 21 3d 20 22 22 20 7d 20 7b 0a 09 73 65 74 20   != "" } {..set 
27330 68 61 73 62 72 65 61 6b 20 31 0a 20 20 20 20 7d  hasbreak 1.    }
27340 20 65 6c 73 65 20 7b 20 73 65 74 20 68 61 73 62   else { set hasb
27350 72 65 61 6b 20 30 20 7d 0a 0a 20 20 20 20 69 66  reak 0 }..    if
27360 20 7b 20 24 68 61 73 62 72 65 61 6b 20 7d 20 7b   { $hasbreak } {
27370 0a 09 73 65 74 20 68 61 73 62 72 65 61 6b 20 30  ..set hasbreak 0
27380 0a 09 66 6f 72 65 61 63 68 20 6e 75 6d 20 5b 72  ..foreach num [r
27390 69 6e 66 6f 20 24 6c 69 6e 65 5d 20 7b 0a 09 20  info $line] {.. 
273a0 20 20 20 72 64 65 6c 20 24 6e 75 6d 0a 09 7d 0a     rdel $num..}.
273b0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65      } else {..se
273c0 74 20 68 61 73 62 72 65 61 6b 20 31 0a 09 69 66  t hasbreak 1..if
273d0 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74 20   { [catch [list 
273e0 72 62 72 65 61 6b 20 24 6c 69 6e 65 5d 20 65 72  rbreak $line] er
273f0 72 6f 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09  rorstring] } {..
27400 20 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a      WaitState 0.
27410 09 20 20 20 20 57 61 72 6e 57 69 6e 20 24 65 72  .    WarnWin $er
27420 72 6f 72 73 74 72 69 6e 67 0a 09 20 20 20 20 72  rorstring..    r
27430 65 74 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 0a 20  eturn..}.    }. 
27440 20 20 20 55 70 64 61 74 65 41 72 72 6f 77 41 6e     UpdateArrowAn
27450 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 24 68 61  dBreak $line $ha
27460 73 62 72 65 61 6b 20 22 22 0a 20 20 20 20 57 61  sbreak "".    Wa
27470 69 74 53 74 61 74 65 20 30 0a 7d 0a 0a 70 72 6f  itState 0.}..pro
27480 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55  c RamDebugger::U
27490 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42 72 65  pdateArrowAndBre
274a0 61 6b 20 7b 20 6c 69 6e 65 20 68 61 73 62 72 65  ak { line hasbre
274b0 61 6b 20 68 61 73 61 72 72 6f 77 20 7b 20 66 6f  ak hasarrow { fo
274c0 72 63 65 72 61 69 73 65 20 31 20 7d 20 7d 20 7b  rceraise 1 } } {
274d0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61  .    variable ma
274e0 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c  rker.    variabl
274f0 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61  e text.    varia
27500 62 6c 65 20 74 65 78 74 53 54 0a 20 20 20 20 76  ble textST.    v
27510 61 72 69 61 62 6c 65 20 69 6d 61 67 65 73 0a 20  ariable images. 
27520 20 20 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e     variable IsIn
27530 53 74 6f 70 0a 0a 20 20 20 20 73 65 74 20 68 61  Stop..    set ha
27540 64 61 72 72 6f 77 20 30 0a 20 20 20 20 66 6f 72  darrow 0.    for
27550 65 61 63 68 20 69 20 5b 24 6d 61 72 6b 65 72 20  each i [$marker 
27560 67 65 74 74 61 67 73 20 6c 24 6c 69 6e 65 5d 20  gettags l$line] 
27570 7b 0a 09 73 77 69 74 63 68 20 24 69 20 7b 0a 09  {..switch $i {..
27580 20 20 20 20 61 72 72 6f 77 62 72 65 61 6b 20 7b      arrowbreak {
27590 0a 09 09 69 66 20 7b 20 24 68 61 73 62 72 65 61  ...if { $hasbrea
275a0 6b 20 3d 3d 20 22 22 20 7d 20 7b 20 73 65 74 20  k == "" } { set 
275b0 68 61 73 62 72 65 61 6b 20 31 20 7d 0a 09 09 69  hasbreak 1 }...i
275c0 66 20 7b 20 24 68 61 73 61 72 72 6f 77 20 3d 3d  f { $hasarrow ==
275d0 20 22 22 20 7d 20 7b 20 73 65 74 20 68 61 73 61   "" } { set hasa
275e0 72 72 6f 77 20 31 20 7d 0a 09 09 73 65 74 20 68  rrow 1 }...set h
275f0 61 64 61 72 72 6f 77 20 31 0a 09 20 20 20 20 7d  adarrow 1..    }
27600 0a 09 20 20 20 20 61 72 72 6f 77 20 7b 0a 09 09  ..    arrow {...
27610 69 66 20 7b 20 24 68 61 73 61 72 72 6f 77 20 3d  if { $hasarrow =
27620 3d 20 22 22 20 7d 20 7b 20 73 65 74 20 68 61 73  = "" } { set has
27630 61 72 72 6f 77 20 31 20 7d 0a 09 09 73 65 74 20  arrow 1 }...set 
27640 68 61 64 61 72 72 6f 77 20 31 0a 09 20 20 20 20  hadarrow 1..    
27650 7d 0a 09 20 20 20 20 62 72 65 61 6b 20 7b 0a 09  }..    break {..
27660 09 69 66 20 7b 20 24 68 61 73 62 72 65 61 6b 20  .if { $hasbreak 
27670 3d 3d 20 22 22 20 7d 20 7b 20 73 65 74 20 68 61  == "" } { set ha
27680 73 62 72 65 61 6b 20 31 20 7d 0a 09 20 20 20 20  sbreak 1 }..    
27690 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69  }..}.    }.    i
276a0 66 20 7b 20 24 68 61 73 62 72 65 61 6b 20 3d 3d  f { $hasbreak ==
276b0 20 22 22 20 7d 20 7b 20 73 65 74 20 68 61 73 62   "" } { set hasb
276c0 72 65 61 6b 20 30 20 7d 0a 20 20 20 20 69 66 20  reak 0 }.    if 
276d0 7b 20 24 68 61 73 61 72 72 6f 77 20 3d 3d 20 22  { $hasarrow == "
276e0 22 20 7d 20 7b 20 73 65 74 20 68 61 73 61 72 72  " } { set hasarr
276f0 6f 77 20 30 20 7d 0a 0a 20 20 20 20 24 6d 61 72  ow 0 }..    $mar
27700 6b 65 72 20 64 65 6c 65 74 65 20 22 6c 24 6c 69  ker delete "l$li
27710 6e 65 26 26 28 61 72 72 6f 77 62 72 65 61 6b 7c  ne&&(arrowbreak|
27720 7c 61 72 72 6f 77 7c 7c 62 72 65 61 6b 29 22 0a  |arrow||break)".
27730 0a 20 20 20 20 69 66 20 7b 20 21 24 68 61 73 61  .    if { !$hasa
27740 72 72 6f 77 20 7d 20 7b 20 73 65 74 20 49 73 49  rrow } { set IsI
27750 6e 53 74 6f 70 20 30 20 7d 20 65 6c 73 65 20 7b  nStop 0 } else {
27760 20 73 65 74 20 49 73 49 6e 53 74 6f 70 20 31 20   set IsInStop 1 
27770 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 68 61  }..    if { !$ha
27780 73 62 72 65 61 6b 20 26 26 20 21 24 68 61 73 61  sbreak && !$hasa
27790 72 72 6f 77 20 7d 20 7b 0a 09 24 74 65 78 74 53  rrow } {..$textS
277a0 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f  T conf -state no
277b0 72 6d 61 6c 0a 09 24 74 65 78 74 53 54 20 64 65  rmal..$textST de
277c0 6c 20 31 2e 30 20 65 6e 64 0a 09 24 74 65 78 74  l 1.0 end..$text
277d0 53 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64  ST conf -state d
277e0 69 73 61 62 6c 65 64 0a 09 72 65 74 75 72 6e 0a  isabled..return.
277f0 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 66      }..    set f
27800 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65 74 20  ont [$text cget 
27810 2d 66 6f 6e 74 5d 0a 20 20 20 20 73 65 74 20 79  -font].    set y
27820 70 6f 73 20 5b 65 78 70 72 20 28 24 6c 69 6e 65  pos [expr ($line
27830 2d 31 29 2a 5b 66 6f 6e 74 20 6d 65 74 72 69 63  -1)*[font metric
27840 73 20 24 66 6f 6e 74 20 2d 6c 69 6e 65 73 70 61  s $font -linespa
27850 63 65 5d 2b 5b 66 6f 6e 74 20 6d 65 74 72 69 63  ce]+[font metric
27860 73 20 24 66 6f 6e 74 20 2d 61 73 63 65 6e 74 5d  s $font -ascent]
27870 2b 5c 0a 09 09 20 20 5b 24 74 65 78 74 20 63 67  +\...  [$text cg
27880 65 74 20 2d 70 61 64 79 5d 2b 32 5d 0a 20 20 20  et -pady]+2].   
27890 20 69 66 20 7b 20 24 68 61 73 61 72 72 6f 77 20   if { $hasarrow 
278a0 26 26 20 24 68 61 73 62 72 65 61 6b 20 7d 20 7b  && $hasbreak } {
278b0 0a 09 73 65 74 20 65 6e 64 69 73 20 31 0a 09 66  ..set endis 1..f
278c0 6f 72 65 61 63 68 20 22 2d 20 65 6e 64 69 73 20  oreach "- endis 
278d0 2d 20 2d 20 2d 22 20 5b 6c 69 6e 64 65 78 20 5b  - - -" [lindex [
278e0 72 69 6e 66 6f 20 2d 66 75 6c 6c 20 24 6c 69 6e  rinfo -full $lin
278f0 65 5d 20 30 5d 20 62 72 65 61 6b 0a 09 69 66 20  e] 0] break..if 
27900 7b 20 24 65 6e 64 69 73 20 7d 20 7b 0a 09 20 20  { $endis } {..  
27910 20 20 24 6d 61 72 6b 65 72 20 63 72 65 61 74 65    $marker create
27920 20 69 6d 61 67 65 20 30 20 24 79 70 6f 73 20 2d   image 0 $ypos -
27930 61 6e 63 68 6f 72 20 73 77 20 2d 69 6d 61 67 65  anchor sw -image
27940 20 24 69 6d 61 67 65 73 28 61 72 72 6f 77 62 72   $images(arrowbr
27950 65 61 6b 29 20 2d 74 61 67 73 20 22 61 72 72 6f  eak) -tags "arro
27960 77 62 72 65 61 6b 20 6c 24 6c 69 6e 65 22 0a 09  wbreak l$line"..
27970 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 6d  } else {..    $m
27980 61 72 6b 65 72 20 63 72 65 61 74 65 20 69 6d 61  arker create ima
27990 67 65 20 30 20 24 79 70 6f 73 20 2d 61 6e 63 68  ge 0 $ypos -anch
279a0 6f 72 20 73 77 20 2d 69 6d 61 67 65 20 24 69 6d  or sw -image $im
279b0 61 67 65 73 28 61 72 72 6f 77 64 62 72 65 61 6b  ages(arrowdbreak
279c0 29 20 2d 74 61 67 73 20 22 61 72 72 6f 77 62 72  ) -tags "arrowbr
279d0 65 61 6b 20 6c 24 6c 69 6e 65 22 0a 09 7d 0a 20  eak l$line"..}. 
279e0 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 68     } elseif { $h
279f0 61 73 61 72 72 6f 77 20 7d 20 7b 0a 09 24 6d 61  asarrow } {..$ma
27a00 72 6b 65 72 20 63 72 65 61 74 65 20 69 6d 61 67  rker create imag
27a10 65 20 30 20 24 79 70 6f 73 20 2d 61 6e 63 68 6f  e 0 $ypos -ancho
27a20 72 20 73 77 20 2d 69 6d 61 67 65 20 24 69 6d 61  r sw -image $ima
27a30 67 65 73 28 61 72 72 6f 77 29 20 2d 74 61 67 73  ges(arrow) -tags
27a40 20 22 61 72 72 6f 77 20 6c 24 6c 69 6e 65 22 0a   "arrow l$line".
27a50 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24      } elseif { $
27a60 68 61 73 62 72 65 61 6b 20 7d 20 7b 0a 09 73 65  hasbreak } {..se
27a70 74 20 65 6e 64 69 73 20 31 0a 09 66 6f 72 65 61  t endis 1..forea
27a80 63 68 20 22 2d 20 65 6e 64 69 73 20 2d 20 2d 20  ch "- endis - - 
27a90 2d 22 20 5b 6c 69 6e 64 65 78 20 5b 72 69 6e 66  -" [lindex [rinf
27aa0 6f 20 2d 66 75 6c 6c 20 24 6c 69 6e 65 5d 20 30  o -full $line] 0
27ab0 5d 20 62 72 65 61 6b 0a 09 69 66 20 7b 20 24 65  ] break..if { $e
27ac0 6e 64 69 73 20 7d 20 7b 0a 09 20 20 20 20 24 6d  ndis } {..    $m
27ad0 61 72 6b 65 72 20 63 72 65 61 74 65 20 69 6d 61  arker create ima
27ae0 67 65 20 30 20 24 79 70 6f 73 20 2d 61 6e 63 68  ge 0 $ypos -anch
27af0 6f 72 20 73 77 20 2d 69 6d 61 67 65 20 24 69 6d  or sw -image $im
27b00 61 67 65 73 28 62 72 65 61 6b 29 20 2d 74 61 67  ages(break) -tag
27b10 73 20 22 62 72 65 61 6b 20 6c 24 6c 69 6e 65 22  s "break l$line"
27b20 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
27b30 24 6d 61 72 6b 65 72 20 63 72 65 61 74 65 20 69  $marker create i
27b40 6d 61 67 65 20 30 20 24 79 70 6f 73 20 2d 61 6e  mage 0 $ypos -an
27b50 63 68 6f 72 20 73 77 20 2d 69 6d 61 67 65 20 24  chor sw -image $
27b60 69 6d 61 67 65 73 28 64 62 72 65 61 6b 29 20 2d  images(dbreak) -
27b70 74 61 67 73 20 22 62 72 65 61 6b 20 6c 24 6c 69  tags "break l$li
27b80 6e 65 22 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20  ne"..}.    }..  
27b90 20 20 69 66 20 7b 20 24 66 6f 72 63 65 72 61 69    if { $forcerai
27ba0 73 65 20 26 26 20 24 68 61 73 61 72 72 6f 77 20  se && $hasarrow 
27bb0 7d 20 7b 0a 09 69 66 20 7b 20 24 3a 3a 74 63 6c  } {..if { $::tcl
27bc0 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f  _platform(platfo
27bd0 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22  rm) == "windows"
27be0 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 64 6f   } {..    set do
27bf0 69 74 20 31 0a 09 7d 20 65 6c 73 65 69 66 20 7b  it 1..} elseif {
27c00 20 5b 66 6f 63 75 73 5d 20 21 3d 20 24 74 65 78   [focus] != $tex
27c10 74 20 7d 20 7b 0a 09 20 20 20 20 23 20 74 68 65  t } {..    # the
27c20 20 68 6f 72 72 69 62 6c 65 20 62 75 67 20 69 6e   horrible bug in
27c30 20 4c 69 6e 75 78 20 77 69 74 68 20 74 68 65 20   Linux with the 
27c40 72 61 69 73 65 20 63 6f 6d 6d 61 6e 64 0a 09 20  raise command.. 
27c50 20 20 20 73 65 74 20 64 6f 69 74 20 31 0a 09 7d     set doit 1..}
27c60 20 65 6c 73 65 20 7b 20 73 65 74 20 64 6f 69 74   else { set doit
27c70 20 30 20 7d 0a 09 69 66 20 7b 20 24 64 6f 69 74   0 }..if { $doit
27c80 20 7d 20 7b 0a 09 20 20 20 20 61 66 74 65 72 20   } {..    after 
27c90 31 30 30 20 22 72 61 69 73 65 20 5b 77 69 6e 66  100 "raise [winf
27ca0 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74  o toplevel $text
27cb0 5d 20 3b 20 66 6f 63 75 73 20 2d 66 6f 72 63 65  ] ; focus -force
27cc0 20 24 74 65 78 74 22 0a 09 7d 0a 20 20 20 20 7d   $text"..}.    }
27cd0 0a 20 20 20 20 69 66 20 7b 20 21 24 68 61 64 61  .    if { !$hada
27ce0 72 72 6f 77 20 26 26 20 24 68 61 73 61 72 72 6f  rrow && $hasarro
27cf0 77 20 7d 20 7b 0a 09 24 74 65 78 74 20 73 65 65  w } {..$text see
27d00 20 24 6c 69 6e 65 2e 30 0a 09 24 74 65 78 74 20   $line.0..$text 
27d10 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20  mark set insert 
27d20 24 6c 69 6e 65 2e 30 0a 20 20 20 20 7d 0a 20 20  $line.0.    }.  
27d30 20 20 4d 6f 76 65 43 61 6e 76 61 73 20 24 74 65    MoveCanvas $te
27d40 78 74 20 24 6d 61 72 6b 65 72 0a 0a 20 20 20 20  xt $marker..    
27d50 69 66 20 7b 20 24 49 73 49 6e 53 74 6f 70 20 7d  if { $IsInStop }
27d60 20 7b 0a 09 61 66 74 65 72 20 31 30 30 20 52 61   {..after 100 Ra
27d70 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b  mDebugger::Check
27d80 45 76 61 6c 45 6e 74 72 69 65 73 20 64 6f 0a 09  EvalEntries do..
27d90 61 66 74 65 72 20 32 30 30 20 52 61 6d 44 65 62  after 200 RamDeb
27da0 75 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c  ugger::CheckEval
27db0 45 6e 74 72 69 65 73 4c 20 64 6f 0a 09 61 66 74  EntriesL do..aft
27dc0 65 72 20 33 30 30 20 52 61 6d 44 65 62 75 67 67  er 300 RamDebugg
27dd0 65 72 3a 3a 49 6e 76 6f 6b 65 41 6c 6c 44 69 73  er::InvokeAllDis
27de0 70 6c 61 79 56 61 72 57 69 6e 64 6f 77 73 0a 09  playVarWindows..
27df0 72 73 74 61 63 6b 20 2d 68 61 6e 64 6c 65 72 20  rstack -handler 
27e00 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64  RamDebugger::Upd
27e10 61 74 65 47 55 49 53 74 61 63 6b 0a 20 20 20 20  ateGUIStack.    
27e20 7d 20 65 6c 73 65 20 7b 0a 09 24 74 65 78 74 53  } else {..$textS
27e30 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f  T conf -state no
27e40 72 6d 61 6c 0a 09 24 74 65 78 74 53 54 20 64 65  rmal..$textST de
27e50 6c 20 31 2e 30 20 65 6e 64 0a 09 24 74 65 78 74  l 1.0 end..$text
27e60 53 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64  ST conf -state d
27e70 69 73 61 62 6c 65 64 0a 20 20 20 20 7d 0a 0a 7d  isabled.    }..}
27e80 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67  ..proc RamDebugg
27e90 65 72 3a 3a 55 70 64 61 74 65 47 55 49 53 74 61  er::UpdateGUISta
27ea0 63 6b 20 7b 20 72 65 73 20 7d 20 7b 0a 20 20 20  ck { res } {.   
27eb0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 53 54   variable textST
27ec0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70  .    variable op
27ed0 74 69 6f 6e 73 0a 0a 20 20 20 20 24 74 65 78 74  tions..    $text
27ee0 53 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e  ST conf -state n
27ef0 6f 72 6d 61 6c 0a 20 20 20 20 24 74 65 78 74 53  ormal.    $textS
27f00 54 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72  T mark set inser
27f10 74 20 31 2e 30 0a 20 20 20 20 69 66 20 7b 20 5b  t 1.0.    if { [
27f20 6c 69 6e 64 65 78 20 24 72 65 73 20 30 5d 20 3d  lindex $res 0] =
27f30 3d 20 30 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68  = 0 } {..foreach
27f40 20 6c 69 6e 65 20 5b 6c 72 61 6e 67 65 20 5b 73   line [lrange [s
27f50 70 6c 69 74 20 5b 6c 69 6e 64 65 78 20 24 72 65  plit [lindex $re
27f60 73 20 31 5d 20 5c 6e 5d 20 31 20 65 6e 64 5d 20  s 1] \n] 1 end] 
27f70 7b 0a 09 20 20 20 20 24 74 65 78 74 53 54 20 69  {..    $textST i
27f80 6e 73 20 69 6e 73 65 72 74 20 24 6c 69 6e 65 5c  ns insert $line\
27f90 6e 0a 09 7d 20 0a 20 20 20 20 7d 0a 20 20 20 20  n..} .    }.    
27fa0 24 74 65 78 74 53 54 20 64 65 6c 20 69 6e 73 65  $textST del inse
27fb0 72 74 20 65 6e 64 0a 20 20 20 20 24 74 65 78 74  rt end.    $text
27fc0 53 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64  ST conf -state d
27fd0 69 73 61 62 6c 65 64 0a 0a 20 20 20 20 69 66 20  isabled..    if 
27fe0 7b 20 24 6f 70 74 69 6f 6e 73 28 61 75 74 6f 5f  { $options(auto_
27ff0 72 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 61 63  raise_stack_trac
28000 65 29 20 7d 20 7b 0a 09 54 65 78 74 53 74 61 63  e) } {..TextStac
28010 6b 54 72 61 63 65 52 61 69 73 65 0a 20 20 20 20  kTraceRaise.    
28020 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  }.}..proc RamDeb
28030 75 67 67 65 72 3a 3a 54 61 6b 65 41 72 72 6f 77  ugger::TakeArrow
28040 4f 75 74 46 72 6f 6d 54 65 78 74 20 7b 7d 20 7b  OutFromText {} {
28050 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
28060 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  xt.    variable 
28070 6d 61 72 6b 65 72 0a 0a 20 20 20 20 69 66 20 7b  marker..    if {
28080 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   ![info exists t
28090 65 78 74 5d 20 7c 7c 20 21 5b 77 69 6e 66 6f 20  ext] || ![winfo 
280a0 65 78 69 73 74 73 20 24 74 65 78 74 5d 20 7d 20  exists $text] } 
280b0 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20  { return }..    
280c0 66 6f 72 65 61 63 68 20 6a 20 5b 63 6f 6e 63 61  foreach j [conca
280d0 74 20 5b 24 6d 61 72 6b 65 72 20 67 65 74 74 61  t [$marker getta
280e0 67 73 20 61 72 72 6f 77 5d 20 5b 24 6d 61 72 6b  gs arrow] [$mark
280f0 65 72 20 67 65 74 74 61 67 73 20 61 72 72 6f 77  er gettags arrow
28100 62 72 65 61 6b 5d 5d 20 7b 0a 09 69 66 20 7b 20  break]] {..if { 
28110 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 6c 2a  [string match l*
28120 20 24 6a 5d 20 7d 20 7b 0a 09 20 20 20 20 72 65   $j] } {..    re
28130 67 65 78 70 20 7b 6c 28 5b 30 2d 39 5d 2b 29 7d  gexp {l([0-9]+)}
28140 20 24 6a 20 7b 7d 20 61 72 72 6f 77 6c 69 6e 65   $j {} arrowline
28150 0a 09 20 20 20 20 55 70 64 61 74 65 41 72 72 6f  ..    UpdateArro
28160 77 41 6e 64 42 72 65 61 6b 20 24 61 72 72 6f 77  wAndBreak $arrow
28170 6c 69 6e 65 20 22 22 20 30 0a 09 7d 0a 20 20 20  line "" 0..}.   
28180 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65   }.}..proc RamDe
28190 62 75 67 67 65 72 3a 3a 4d 61 6e 61 67 65 50 6f  bugger::ManagePo
281a0 73 69 74 69 6f 6e 73 49 6d 61 67 65 73 20 7b 7d  sitionsImages {}
281b0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
281c0 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c  text.    variabl
281d0 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72  e marker.    var
281e0 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20  iable options.  
281f0 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65    variable curre
28200 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61  ntfile.    varia
28210 62 6c 65 20 69 6d 61 67 65 73 0a 0a 20 20 20 20  ble images..    
28220 24 6d 61 72 6b 65 72 20 64 65 6c 65 74 65 20 62  $marker delete b
28230 6f 6f 6b 6d 61 72 6b 0a 20 20 20 20 73 65 74 20  ookmark.    set 
28240 66 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65 74  font [$text cget
28250 20 2d 66 6f 6e 74 5d 0a 20 20 20 20 66 6f 72 65   -font].    fore
28260 61 63 68 20 69 20 24 6f 70 74 69 6f 6e 73 28 73  ach i $options(s
28270 61 76 65 64 5f 70 6f 73 69 74 69 6f 6e 73 5f 73  aved_positions_s
28280 74 61 63 6b 29 20 7b 0a 09 66 6f 72 65 61 63 68  tack) {..foreach
28290 20 22 66 69 6c 65 20 6c 69 6e 65 20 2d 22 20 24   "file line -" $
282a0 69 20 62 72 65 61 6b 0a 09 69 66 20 7b 20 24 66  i break..if { $f
282b0 69 6c 65 20 65 71 20 24 63 75 72 72 65 6e 74 66  ile eq $currentf
282c0 69 6c 65 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  ile } {..    set
282d0 20 79 70 6f 73 20 5b 65 78 70 72 20 28 24 6c 69   ypos [expr ($li
282e0 6e 65 2d 31 29 2a 5b 66 6f 6e 74 20 6d 65 74 72  ne-1)*[font metr
282f0 69 63 73 20 24 66 6f 6e 74 20 2d 6c 69 6e 65 73  ics $font -lines
28300 70 61 63 65 5d 2b 5c 0a 09 09 20 20 20 20 20 20  pace]+\...      
28310 20 20 20 20 5b 66 6f 6e 74 20 6d 65 74 72 69 63      [font metric
28320 73 20 24 66 6f 6e 74 20 2d 61 73 63 65 6e 74 5d  s $font -ascent]
28330 2b 5b 24 74 65 78 74 20 63 67 65 74 20 2d 70 61  +[$text cget -pa
28340 64 79 5d 2b 32 5d 0a 09 20 20 20 20 73 65 74 20  dy]+2]..    set 
28350 69 64 20 5b 24 6d 61 72 6b 65 72 20 63 72 65 61  id [$marker crea
28360 74 65 20 69 6d 61 67 65 20 30 20 24 79 70 6f 73  te image 0 $ypos
28370 20 2d 61 6e 63 68 6f 72 20 73 77 20 2d 69 6d 61   -anchor sw -ima
28380 67 65 20 24 69 6d 61 67 65 73 28 62 6f 6f 6b 6d  ge $images(bookm
28390 61 72 6b 29 20 5c 0a 09 09 20 20 20 20 20 20 20  ark) \...       
283a0 20 2d 74 61 67 73 20 22 62 6f 6f 6b 6d 61 72 6b   -tags "bookmark
283b0 20 6c 24 6c 69 6e 65 22 5d 0a 09 20 20 20 20 24   l$line"]..    $
283c0 6d 61 72 6b 65 72 20 6c 6f 77 65 72 20 24 69 64  marker lower $id
283d0 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 4d 6f  ..}.    }.    Mo
283e0 76 65 43 61 6e 76 61 73 20 24 74 65 78 74 20 24  veCanvas $text $
283f0 6d 61 72 6b 65 72 0a 7d 0a 0a 70 72 6f 63 20 52  marker.}..proc R
28400 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 74 6f 70  amDebugger::Stop
28410 41 74 47 55 49 20 7b 20 66 69 6c 65 20 6c 69 6e  AtGUI { file lin
28420 65 20 7b 20 63 6f 6e 64 69 6e 66 6f 20 22 22 20  e { condinfo "" 
28430 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  } } {.    variab
28440 6c 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76 61  le marker.    va
28450 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69  riable currentfi
28460 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  le.    variable 
28470 74 65 78 74 0a 0a 20 20 20 20 73 65 74 20 66 6f  text..    set fo
28480 72 63 65 72 61 69 73 65 20 31 0a 20 20 20 20 69  rceraise 1.    i
28490 66 20 7b 20 24 6c 69 6e 65 20 3d 3d 20 2d 31 20  f { $line == -1 
284a0 7d 20 7b 0a 09 23 20 63 61 6c 6c 65 64 20 66 72  } {..# called fr
284b0 6f 6d 20 62 67 65 72 72 6f 72 0a 09 76 61 72 69  om bgerror..vari
284c0 61 62 6c 65 20 66 69 6c 65 73 6c 69 73 74 0a 09  able fileslist..
284d0 0a 09 73 65 74 20 66 69 6c 65 6e 75 6d 20 22 22  ..set filenum ""
284e0 0a 09 66 6f 72 65 61 63 68 20 7b 66 69 6c 65 6e  ..foreach {filen
284f0 75 6d 20 6c 69 6e 65 7d 20 5b 45 76 61 6c 52 65  um line} [EvalRe
28500 6d 6f 74 65 41 6e 64 52 65 74 75 72 6e 20 3a 3a  moteAndReturn ::
28510 52 44 43 3a 3a 47 65 74 4c 61 73 74 56 69 73 69  RDC::GetLastVisi
28520 74 65 64 5d 20 62 72 65 61 6b 3b 0a 09 69 66 20  ted] break;..if 
28530 7b 20 24 66 69 6c 65 6e 75 6d 20 65 71 20 22 22  { $filenum eq ""
28540 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 73   } { return }..s
28550 65 74 20 66 69 6c 65 20 5b 6c 69 6e 64 65 78 20  et file [lindex 
28560 24 66 69 6c 65 73 6c 69 73 74 20 24 66 69 6c 65  $fileslist $file
28570 6e 75 6d 5d 0a 09 73 65 74 20 66 6f 72 63 65 72  num]..set forcer
28580 61 69 73 65 20 30 0a 20 20 20 20 7d 0a 20 20 20  aise 0.    }.   
28590 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69   if { ![info exi
285a0 73 74 73 20 74 65 78 74 5d 20 7c 7c 20 21 5b 77  sts text] || ![w
285b0 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65 78  info exists $tex
285c0 74 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  t] } { return }.
285d0 0a 20 20 20 20 66 6f 72 65 61 63 68 20 6a 20 5b  .    foreach j [
285e0 63 6f 6e 63 61 74 20 5b 24 6d 61 72 6b 65 72 20  concat [$marker 
285f0 67 65 74 74 61 67 73 20 61 72 72 6f 77 5d 20 5b  gettags arrow] [
28600 24 6d 61 72 6b 65 72 20 67 65 74 74 61 67 73 20  $marker gettags 
28610 61 72 72 6f 77 62 72 65 61 6b 5d 5d 20 7b 0a 09  arrowbreak]] {..
28620 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74  if { [string mat
28630 63 68 20 6c 2a 20 24 6a 5d 20 7d 20 7b 0a 09 20  ch l* $j] } {.. 
28640 20 20 20 72 65 67 65 78 70 20 7b 6c 28 5b 30 2d     regexp {l([0-
28650 39 5d 2b 29 7d 20 24 6a 20 7b 7d 20 61 72 72 6f  9]+)} $j {} arro
28660 77 6c 69 6e 65 0a 09 20 20 20 20 55 70 64 61 74  wline..    Updat
28670 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24  eArrowAndBreak $
28680 61 72 72 6f 77 6c 69 6e 65 20 22 22 20 30 20 24  arrowline "" 0 $
28690 66 6f 72 63 65 72 61 69 73 65 0a 09 7d 0a 20 20  forceraise..}.  
286a0 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 66 69    }.    if { $fi
286b0 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 24 74  le == "" } {..$t
286c0 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62  ext conf -editab
286d0 6c 65 20 31 0a 09 72 65 74 75 72 6e 0a 20 20 20  le 1..return.   
286e0 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 41   }..    if { ![A
286f0 72 65 46 69 6c 65 73 45 71 75 61 6c 20 24 66 69  reFilesEqual $fi
28700 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d  le $currentfile]
28710 20 7d 20 7b 0a 09 4f 70 65 6e 46 69 6c 65 46 20   } {..OpenFileF 
28720 24 66 69 6c 65 20 0a 20 20 20 20 7d 0a 20 20 20  $file .    }.   
28730 20 55 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42   UpdateArrowAndB
28740 72 65 61 6b 20 24 6c 69 6e 65 20 22 22 20 31 20  reak $line "" 1 
28750 24 66 6f 72 63 65 72 61 69 73 65 0a 0a 20 20 20  $forceraise..   
28760 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65   RamDebugger::Se
28770 74 4d 65 73 73 61 67 65 20 22 22 20 3b 23 20 74  tMessage "" ;# t
28780 6f 20 74 61 6b 65 20 6f 75 74 20 6f 6c 64 20 53  o take out old S
28790 65 74 4d 65 73 73 61 67 65 46 6c 61 73 68 0a 20  etMessageFlash. 
287a0 20 20 20 69 66 20 7b 20 24 63 6f 6e 64 69 6e 66     if { $condinf
287b0 6f 20 21 3d 20 22 22 20 7d 20 7b 0a 09 52 61 6d  o != "" } {..Ram
287c0 44 65 62 75 67 67 65 72 3a 3a 53 65 74 4d 65 73  Debugger::SetMes
287d0 73 61 67 65 46 6c 61 73 68 20 5b 5f 20 22 43 6f  sageFlash [_ "Co
287e0 6e 64 69 74 69 6f 6e 61 6c 20 62 72 65 61 6b 70  nditional breakp
287f0 6f 69 6e 74 20 72 65 73 75 6c 74 3a 20 25 73 22  oint result: %s"
28800 20 24 63 6f 6e 64 69 6e 66 6f 5d 0a 09 23 57 61   $condinfo]..#Wa
28810 72 6e 57 69 6e 20 22 43 6f 6e 64 69 74 69 6f 6e  rnWin "Condition
28820 61 6c 20 62 72 65 61 6b 70 6f 69 6e 74 20 72 65  al breakpoint re
28830 73 75 6c 74 3a 20 24 63 6f 6e 64 69 6e 66 6f 22  sult: $condinfo"
28840 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
28850 20 24 74 65 78 74 5d 0a 20 20 20 20 7d 0a 7d 0a   $text].    }.}.
28860 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
28870 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 7b  r::ContNextGUI {
28880 20 77 68 61 74 20 7d 20 7b 0a 20 20 20 20 76 61   what } {.    va
28890 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20  riable text.    
288a0 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73  variable remotes
288b0 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 61 62  erver.    variab
288c0 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54  le remoteserverT
288d0 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ype.    variable
288e0 20 49 73 49 6e 53 74 6f 70 0a 20 20 20 20 76 61   IsInStop.    va
288f0 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69  riable currentfi
28900 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  le.    variable 
28910 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 23 20 62  options..    # b
28920 65 66 6f 72 65 2c 20 74 68 65 72 65 20 77 61 73  efore, there was
28930 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   the additional 
28940 63 6f 6e 64 3a 20 7c 7c 20 28 24 72 65 6d 6f 74  cond: || ($remot
28950 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22  eserverType == "
28960 6c 6f 63 61 6c 22 20 26 26 20 21 24 49 73 49 6e  local" && !$IsIn
28970 53 74 6f 70 29 20 7c 7c 20 5c 0a 09 23 20 28 24  Stop) || \..# ($
28980 72 65 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d 20  remoteserver == 
28990 22 6d 61 73 74 65 72 20 61 6c 6c 22 20 26 26 20  "master all" && 
289a0 21 24 49 73 49 6e 53 74 6f 70 29 20 0a 0a 0a 20  !$IsInStop) ... 
289b0 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73     if { $remotes
289c0 65 72 76 65 72 54 79 70 65 20 6e 65 20 22 22 20  erverType ne "" 
289d0 26 26 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64  && [info command
289e0 73 20 6d 61 73 74 65 72 5d 20 6e 65 20 22 22 20  s master] ne "" 
289f0 7d 20 7b 0a 09 73 65 74 20 63 6d 64 20 5b 6d 61  } {..set cmd [ma
28a00 73 74 65 72 20 65 76 61 6c 20 69 6e 66 6f 20 63  ster eval info c
28a10 6f 6d 6d 61 6e 64 20 3a 3a 52 44 43 3a 3a 46 5d  ommand ::RDC::F]
28a20 0a 09 69 66 20 7b 20 24 63 6d 64 20 65 71 20 22  ..if { $cmd eq "
28a30 22 20 7d 20 7b 0a 09 20 20 20 20 44 69 73 63 6f  " } {..    Disco
28a40 6e 6e 65 63 74 53 74 6f 70 0a 09 7d 0a 20 20 20  nnectStop..}.   
28a50 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 72 65 6d   }.    if { $rem
28a60 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d  oteserverType ==
28a70 20 22 22 20 26 26 20 5b 69 6e 66 6f 20 63 6f 6d   "" && [info com
28a80 6d 61 6e 64 73 20 6d 61 73 74 65 72 5d 20 21 3d  mands master] !=
28a90 20 22 22 20 7d 20 7b 0a 09 72 64 65 62 75 67 20   "" } {..rdebug 
28aa0 2d 6d 61 73 74 65 72 0a 20 20 20 20 7d 0a 0a 20  -master.    }.. 
28ab0 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73     if { $remotes
28ac0 65 72 76 65 72 20 3d 3d 20 22 22 20 7d 20 7b 0a  erver == "" } {.
28ad0 09 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69  .if { $currentfi
28ae0 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20  le == "" } {..  
28af0 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 43 61    WarnWin [_ "Ca
28b00 6e 6e 6f 74 20 73 74 61 72 74 20 64 65 62 75 67  nnot start debug
28b10 67 69 6e 67 2e 20 54 68 65 72 65 20 69 73 20 6e  ging. There is n
28b20 6f 20 63 75 72 72 65 6e 74 66 69 6c 65 22 5d 20  o currentfile"] 
28b30 24 74 65 78 74 0a 09 20 20 20 20 72 65 74 75 72  $text..    retur
28b40 6e 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 74 79  n..}..set filety
28b50 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65  pe [GiveFileType
28b60 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09   $currentfile]..
28b70 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 65  if { $filetype e
28b80 71 20 22 43 2f 43 2b 2b 22 20 7d 20 7b 0a 09 20  q "C/C++" } {.. 
28b90 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73     if { $options
28ba0 28 43 6f 6e 66 69 72 6d 53 74 61 72 74 44 65 62  (ConfirmStartDeb
28bb0 75 67 67 69 6e 67 29 20 26 26 20 24 72 65 6d 6f  ugging) && $remo
28bc0 74 65 73 65 72 76 65 72 20 21 3d 20 22 22 20 7d  teserver != "" }
28bd0 20 7b 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69   {...set ret [Di
28be0 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65  alogWin::message
28bf0 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 79 65 73  Box -default yes
28c00 20 2d 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20   -icon question 
28c10 2d 6d 65 73 73 61 67 65 20 5c 0a 09 09 20 20 20  -message \...   
28c20 20 20 20 20 20 20 20 20 20 20 5b 5f 20 22 44 6f            [_ "Do
28c30 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 73 74 61   you want to sta
28c40 72 74 20 74 6f 20 64 65 62 75 67 20 63 2b 2b 20  rt to debug c++ 
28c50 70 72 6f 67 72 61 6d 3f 22 5d 20 2d 70 61 72 65  program?"] -pare
28c60 6e 74 20 24 74 65 78 74 20 5c 0a 09 09 20 20 20  nt $text \...   
28c70 20 20 20 20 20 20 20 20 20 20 2d 74 69 74 6c 65            -title
28c80 20 5b 5f 20 22 73 74 61 72 74 20 64 65 62 75 67   [_ "start debug
28c90 67 69 6e 67 22 5d 20 2d 74 79 70 65 20 79 65 73  ging"] -type yes
28ca0 6e 6f 63 61 6e 63 65 6c 5d 0a 09 20 20 20 20 7d  nocancel]..    }
28cb0 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65   else {...set re
28cc0 74 20 79 65 73 0a 09 20 20 20 20 7d 0a 09 20 20  t yes..    }..  
28cd0 20 20 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 22    if { $ret == "
28ce0 63 61 6e 63 65 6c 22 20 7d 20 7b 20 72 65 74 75  cancel" } { retu
28cf0 72 6e 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24  rn }..    if { $
28d00 72 65 74 20 3d 3d 20 22 79 65 73 22 20 7d 20 7b  ret == "yes" } {
28d10 0a 09 09 44 65 62 75 67 43 70 6c 75 73 50 6c 75  ...DebugCplusPlu
28d20 73 57 69 6e 64 6f 77 20 31 0a 09 09 72 65 74 75  sWindow 1...retu
28d30 72 6e 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c 73  rn..    }..} els
28d40 65 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 6f  e {..    if { $o
28d50 70 74 69 6f 6e 73 28 43 6f 6e 66 69 72 6d 53 74  ptions(ConfirmSt
28d60 61 72 74 44 65 62 75 67 67 69 6e 67 29 20 26 26  artDebugging) &&
28d70 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 21   $remoteserver !
28d80 3d 20 22 22 20 7d 20 7b 0a 09 09 69 66 20 7b 20  = "" } {...if { 
28d90 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70  $remoteserverTyp
28da0 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7c 7c 20  e == "local" || 
28db0 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70  $remoteserverTyp
28dc0 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20  e == "" } {...  
28dd0 20 20 73 65 74 20 74 74 20 5b 5f 20 22 44 6f 20    set tt [_ "Do 
28de0 79 6f 75 20 77 61 6e 74 20 74 6f 20 73 74 61 72  you want to star
28df0 74 20 74 6f 20 64 65 62 75 67 20 6c 6f 63 61 6c  t to debug local
28e00 6c 79 20 27 25 73 27 3f 22 20 24 63 75 72 72 65  ly '%s'?" $curre
28e10 6e 74 66 69 6c 65 5d 0a 09 09 7d 20 65 6c 73 65  ntfile]...} else
28e20 20 7b 0a 09 09 20 20 20 20 73 65 74 20 74 74 20   {...    set tt 
28e30 5b 5f 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 20  [_ "Do you want 
28e40 74 6f 20 65 78 65 63 75 74 65 20 66 69 6c 65 20  to execute file 
28e50 27 25 73 27 3f 22 20 24 63 75 72 72 65 6e 74 66  '%s'?" $currentf
28e60 69 6c 65 5d 0a 09 09 7d 0a 09 09 73 65 74 20 72  ile]...}...set r
28e70 65 74 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d  et [DialogWin::m
28e80 65 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75  essageBox -defau
28e90 6c 74 20 79 65 73 20 2d 69 63 6f 6e 20 71 75 65  lt yes -icon que
28ea0 73 74 69 6f 6e 20 2d 6d 65 73 73 61 67 65 20 5c  stion -message \
28eb0 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28ec0 24 74 74 20 2d 70 61 72 65 6e 74 20 24 74 65 78  $tt -parent $tex
28ed0 74 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20  t \...          
28ee0 20 20 20 2d 74 69 74 6c 65 20 5b 5f 20 22 73 74     -title [_ "st
28ef0 61 72 74 20 64 65 62 75 67 67 69 6e 67 22 5d 20  art debugging"] 
28f00 2d 74 79 70 65 20 79 65 73 6e 6f 63 61 6e 63 65  -type yesnocance
28f10 6c 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b  l]..    } else {
28f20 20 73 65 74 20 72 65 74 20 79 65 73 20 7d 0a 09   set ret yes }..
28f30 20 20 20 20 69 66 20 7b 20 24 72 65 74 20 3d 3d      if { $ret ==
28f40 20 22 63 61 6e 63 65 6c 22 20 7d 20 7b 20 72 65   "cancel" } { re
28f50 74 75 72 6e 20 7d 0a 09 20 20 20 20 69 66 20 7b  turn }..    if {
28f60 20 24 72 65 74 20 3d 3d 20 22 79 65 73 22 20 7d   $ret == "yes" }
28f70 20 7b 0a 09 09 69 66 20 7b 20 24 72 65 6d 6f 74   {...if { $remot
28f80 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22  eserverType == "
28f90 6c 6f 63 61 6c 22 20 7c 7c 20 24 72 65 6d 6f 74  local" || $remot
28fa0 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22  eserverType == "
28fb0 22 20 7d 20 7b 0a 09 09 20 20 20 20 72 64 65 62  " } {...    rdeb
28fc0 75 67 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 0a  ug -currentfile.
28fd0 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20  ..} else {...   
28fe0 20 72 6c 69 73 74 20 2d 72 65 73 65 6e 64 20 2d   rlist -resend -
28ff0 71 75 69 65 74 0a 09 09 7d 0a 09 09 72 65 74 75  quiet...}...retu
29000 72 6e 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66  rn..    }..}..if
29010 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72   { $remoteserver
29020 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72   == "" } { retur
29030 6e 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66  n }.    } elseif
29040 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72   { $remoteserver
29050 20 3d 3d 20 22 6d 61 73 74 65 72 20 61 6c 6c 22   == "master all"
29060 20 26 26 20 21 24 49 73 49 6e 53 74 6f 70 20 7d   && !$IsInStop }
29070 20 7b 0a 09 72 6c 69 73 74 20 2d 72 65 73 65 6e   {..rlist -resen
29080 64 20 2d 71 75 69 65 74 0a 20 20 20 20 7d 0a 0a  d -quiet.    }..
29090 20 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74      switch $what
290a0 20 7b 0a 09 72 63 6f 6e 74 20 7b 20 72 63 6f 6e   {..rcont { rcon
290b0 74 20 7d 0a 09 72 6e 65 78 74 20 7b 20 72 6e 65  t }..rnext { rne
290c0 78 74 20 7d 0a 09 72 6e 65 78 74 66 75 6c 6c 20  xt }..rnextfull 
290d0 7b 20 72 6e 65 78 74 20 2d 66 75 6c 6c 20 7d 0a  { rnext -full }.
290e0 09 72 6e 65 78 74 72 65 74 75 72 6e 20 7b 20 72  .rnextreturn { r
290f0 6e 65 78 74 20 2d 72 65 74 75 72 6e 20 7d 0a 09  next -return }..
29100 72 73 74 65 70 20 7b 20 72 73 74 65 70 20 7d 0a  rstep { rstep }.
29110 09 72 63 6f 6e 74 74 6f 20 7b 0a 09 20 20 20 20  .rcontto {..    
29120 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 69  set idx [$text i
29130 6e 64 65 78 20 69 6e 73 65 72 74 5d 20 0a 09 20  ndex insert] .. 
29140 20 20 20 0a 09 20 20 20 20 69 66 20 7b 20 24 69     ..    if { $i
29150 64 78 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 57  dx == "" } {...W
29160 61 72 6e 57 69 6e 20 5b 5f 20 22 42 65 66 6f 72  arnWin [_ "Befor
29170 65 20 75 73 69 6e 67 20 27 43 6f 6e 74 69 6e 75  e using 'Continu
29180 65 20 74 6f 27 2c 20 70 69 63 6b 20 69 6e 20 74  e to', pick in t
29190 68 65 20 74 65 78 74 22 5d 0a 09 09 72 65 74 75  he text"]...retu
291a0 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 24  rn..    }..    $
291b0 74 65 78 74 20 73 65 65 20 24 69 64 78 0a 09 20  text see $idx.. 
291c0 20 20 20 73 65 74 20 6c 69 6e 65 20 5b 73 63 61     set line [sca
291d0 6e 20 24 69 64 78 20 22 25 64 22 5d 0a 09 20 20  n $idx "%d"]..  
291e0 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 5b 6c    if { [catch [l
291f0 69 73 74 20 72 63 6f 6e 74 20 24 6c 69 6e 65 5d  ist rcont $line]
29200 20 65 72 72 6f 72 73 74 72 69 6e 67 5d 20 7d 20   errorstring] } 
29210 7b 0a 09 09 57 61 72 6e 57 69 6e 20 24 65 72 72  {...WarnWin $err
29220 6f 72 73 74 72 69 6e 67 0a 09 20 20 20 20 7d 0a  orstring..    }.
29230 09 7d 0a 09 72 63 6f 6e 74 6f 75 74 6c 6f 6f 70  .}..rcontoutloop
29240 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 20   {..    set idx 
29250 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73  [$text index ins
29260 65 72 74 5d 20 0a 09 20 20 20 20 0a 09 20 20 20  ert] ..    ..   
29270 20 69 66 20 7b 20 24 69 64 78 20 3d 3d 20 22 22   if { $idx == ""
29280 20 7d 20 7b 0a 09 09 57 61 72 6e 57 69 6e 20 5b   } {...WarnWin [
29290 5f 20 22 42 65 66 6f 72 65 20 75 73 69 6e 67 20  _ "Before using 
292a0 27 43 6f 6e 74 69 6e 75 65 20 6f 75 74 20 6c 6f  'Continue out lo
292b0 6f 70 27 2c 20 70 69 63 6b 20 69 6e 20 74 68 65  op', pick in the
292c0 20 74 65 78 74 22 5d 0a 09 09 72 65 74 75 72 6e   text"]...return
292d0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74  ..    }..    set
292e0 20 69 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20   i [$text index 
292f0 22 69 6e 73 65 72 74 20 6c 69 6e 65 73 74 61 72  "insert linestar
29300 74 22 5d 0a 09 20 20 20 20 73 65 74 20 62 72 61  t"]..    set bra
29310 63 65 73 5f 63 6f 75 6e 74 20 30 0a 09 20 20 20  ces_count 0..   
29320 20 73 65 74 20 66 6f 75 6e 64 20 30 0a 09 20 20   set found 0..  
29330 20 20 77 68 69 6c 65 20 7b 20 5b 24 74 65 78 74    while { [$text
29340 20 63 6f 6d 70 61 72 65 20 24 69 20 3c 20 65 6e   compare $i < en
29350 64 5d 20 7d 20 7b 0a 09 09 73 65 74 20 69 20 5b  d] } {...set i [
29360 24 74 65 78 74 20 73 65 61 72 63 68 20 2d 72 65  $text search -re
29370 67 65 78 70 20 7b 5b 7b 7d 5d 7d 20 24 69 5d 0a  gexp {[{}]} $i].
29380 09 09 69 66 20 7b 20 24 69 20 65 71 20 22 22 20  ..if { $i eq "" 
29390 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 09 69 66  } { break }...if
293a0 20 7b 20 5b 24 74 65 78 74 20 67 65 74 20 24 69   { [$text get $i
293b0 5d 20 65 71 20 22 5c 7b 22 20 7d 20 7b 0a 09 09  ] eq "\{" } {...
293c0 20 20 20 20 69 6e 63 72 20 62 72 61 63 65 73 5f      incr braces_
293d0 63 6f 75 6e 74 0a 09 09 7d 20 65 6c 73 65 69 66  count...} elseif
293e0 20 7b 20 5b 24 74 65 78 74 20 67 65 74 20 24 69   { [$text get $i
293f0 5d 20 65 71 20 22 5c 7d 22 20 7d 20 7b 0a 09 09  ] eq "\}" } {...
29400 20 20 20 20 69 6e 63 72 20 62 72 61 63 65 73 5f      incr braces_
29410 63 6f 75 6e 74 20 2d 31 0a 09 09 20 20 20 20 69  count -1...    i
29420 66 20 7b 20 24 62 72 61 63 65 73 5f 63 6f 75 6e  f { $braces_coun
29430 74 20 3c 20 30 20 7d 20 7b 0a 09 09 20 20 20 20  t < 0 } {...    
29440 20 20 20 20 73 65 74 20 69 64 78 20 5b 65 78 70      set idx [exp
29450 72 20 7b 24 69 2b 31 7d 5d 0a 09 09 20 20 20 20  r {$i+1}]...    
29460 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a      set found 1.
29470 09 09 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a  ..        break.
29480 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65  ..    }...}...se
29490 74 20 69 20 5b 24 74 65 78 74 20 69 6e 64 65 78  t i [$text index
294a0 20 22 24 69 2b 31 63 22 5d 0a 09 20 20 20 20 7d   "$i+1c"]..    }
294b0 0a 09 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75  ..    if { !$fou
294c0 6e 64 20 7d 20 7b 20 62 65 6c 6c 20 3b 20 72 65  nd } { bell ; re
294d0 74 75 72 6e 20 7d 0a 09 20 20 20 20 73 65 74 20  turn }..    set 
294e0 66 6f 75 6e 64 20 30 0a 09 20 20 20 20 73 65 74  found 0..    set
294f0 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65   idx [$text inde
29500 78 20 22 24 69 64 78 20 6c 69 6e 65 73 74 61 72  x "$idx linestar
29510 74 22 5d 0a 09 20 20 20 20 77 68 69 6c 65 20 7b  t"]..    while {
29520 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20   [$text compare 
29530 24 69 64 78 20 3c 20 65 6e 64 5d 20 7d 20 7b 0a  $idx < end] } {.
29540 09 09 69 66 20 7b 20 5b 24 74 65 78 74 20 73 65  ..if { [$text se
29550 61 72 63 68 20 2d 72 65 67 65 78 70 20 7b 28 5e  arch -regexp {(^
29560 5c 73 2a 24 7c 5e 5c 73 2a 23 29 7d 20 24 69 64  \s*$|^\s*#)} $id
29570 78 20 5c 0a 09 09 20 20 20 20 22 24 69 64 78 20  x \...    "$idx 
29580 6c 69 6e 65 65 6e 64 22 5d 20 65 71 20 22 22 20  lineend"] eq "" 
29590 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 66 6f  } {...    set fo
295a0 75 6e 64 20 31 0a 09 09 20 20 20 20 62 72 65 61  und 1...    brea
295b0 6b 0a 09 09 7d 0a 09 09 73 65 74 20 69 64 78 20  k...}...set idx 
295c0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 24 69  [$text index "$i
295d0 64 78 20 2b 20 31 6c 22 5d 0a 09 20 20 20 20 7d  dx + 1l"]..    }
295e0 0a 09 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75  ..    if { !$fou
295f0 6e 64 20 7d 20 7b 20 62 65 6c 6c 20 3b 20 72 65  nd } { bell ; re
29600 74 75 72 6e 20 7d 0a 09 20 20 20 20 24 74 65 78  turn }..    $tex
29610 74 20 73 65 65 20 24 69 64 78 0a 09 20 20 20 20  t see $idx..    
29620 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 24  set line [scan $
29630 69 64 78 20 22 25 64 22 5d 0a 09 20 20 20 20 69  idx "%d"]..    i
29640 66 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74  f { [catch [list
29650 20 72 63 6f 6e 74 20 24 6c 69 6e 65 5d 20 65 72   rcont $line] er
29660 72 6f 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09  rorstring] } {..
29670 09 57 61 72 6e 57 69 6e 20 24 65 72 72 6f 72 73  .WarnWin $errors
29680 74 72 69 6e 67 0a 09 20 20 20 20 7d 0a 09 7d 0a  tring..    }..}.
29690 09 72 62 72 65 61 6b 20 7b 20 72 62 72 65 61 6b  .rbreak { rbreak
296a0 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63   }.    }.}..proc
296b0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65   RamDebugger::Te
296c0 78 74 4d 6f 74 69 6f 6e 20 7b 20 58 20 59 20 78  xtMotion { X Y x
296d0 20 79 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61   y } {.    varia
296e0 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72  ble text.    var
296f0 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
29700 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 49  e.    variable I
29710 73 49 6e 53 74 6f 70 0a 20 20 20 20 76 61 72 69  sInStop.    vari
29720 61 62 6c 65 20 54 65 78 74 4d 6f 74 69 6f 6e 41  able TextMotionA
29730 66 74 65 72 49 64 0a 0a 20 20 20 20 52 61 6d 44  fterId..    RamD
29740 65 62 75 67 67 65 72 3a 3a 43 56 53 3a 3a 53 65  ebugger::CVS::Se
29750 74 55 73 65 72 41 63 74 69 76 69 74 79 0a 0a 20  tUserActivity.. 
29760 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63     set err [catc
29770 68 20 7b 20 6c 69 6e 64 65 78 20 5b 61 66 74 65  h { lindex [afte
29780 72 20 69 6e 66 6f 20 24 54 65 78 74 4d 6f 74 69  r info $TextMoti
29790 6f 6e 41 66 74 65 72 49 64 5d 20 30 20 7d 20 63  onAfterId] 0 } c
297a0 6d 64 5d 0a 20 20 20 20 69 66 20 7b 20 21 24 65  md].    if { !$e
297b0 72 72 20 26 26 20 24 63 6d 64 20 6e 65 20 22 22  rr && $cmd ne ""
297c0 20 7d 20 20 7b 0a 09 6c 61 73 73 69 67 6e 20 24   }  {..lassign $
297d0 63 6d 64 20 2d 20 78 5f 6f 6c 64 20 79 5f 6f 6c  cmd - x_old y_ol
297e0 64 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63  d..set err [catc
297f0 68 20 7b 20 65 78 70 72 20 7b 20 61 62 73 28 24  h { expr { abs($
29800 58 2d 24 78 5f 6f 6c 64 29 20 3c 3d 20 33 20 26  X-$x_old) <= 3 &
29810 26 20 61 62 73 28 24 59 2d 24 79 5f 6f 6c 64 29  & abs($Y-$y_old)
29820 20 3c 3d 20 33 20 7d 20 7d 20 72 65 74 5d 0a 09   <= 3 } } ret]..
29830 69 66 20 7b 20 24 65 72 72 20 7c 7c 20 24 72 65  if { $err || $re
29840 74 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20  t } { return }. 
29850 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 54     }.    if { $T
29860 65 78 74 4d 6f 74 69 6f 6e 41 66 74 65 72 49 64  extMotionAfterId
29870 20 6e 65 20 22 22 20 7d 20 7b 0a 09 61 66 74 65   ne "" } {..afte
29880 72 20 63 61 6e 63 65 6c 20 24 54 65 78 74 4d 6f  r cancel $TextMo
29890 74 69 6f 6e 41 66 74 65 72 49 64 0a 09 73 65 74  tionAfterId..set
298a0 20 54 65 78 74 4d 6f 74 69 6f 6e 41 66 74 65 72   TextMotionAfter
298b0 49 64 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20  Id "".    }.    
298c0 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73  if { [winfo exis
298d0 74 73 20 24 74 65 78 74 2e 68 65 6c 70 5d 20 7d  ts $text.help] }
298e0 20 7b 0a 09 64 65 73 74 72 6f 79 20 24 74 65 78   {..destroy $tex
298f0 74 2e 68 65 6c 70 0a 20 20 20 20 7d 0a 20 20 20  t.help.    }.   
29900 20 69 66 20 7b 20 24 58 20 3d 3d 20 2d 31 20 7c   if { $X == -1 |
29910 7c 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 3d  | $currentfile =
29920 3d 20 22 22 20 7c 7c 20 21 24 49 73 49 6e 53 74  = "" || !$IsInSt
29930 6f 70 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  op } { return }.
29940 0a 20 20 20 20 73 65 74 20 54 65 78 74 4d 6f 74  .    set TextMot
29950 69 6f 6e 41 66 74 65 72 49 64 20 5b 61 66 74 65  ionAfterId [afte
29960 72 20 35 30 30 20 52 61 6d 44 65 62 75 67 67 65  r 500 RamDebugge
29970 72 3a 3a 44 69 73 70 6c 61 79 56 61 72 20 24 58  r::DisplayVar $X
29980 20 24 59 20 24 78 20 24 79 5d 0a 0a 7d 0a 0a 70   $Y $x $y]..}..p
29990 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
299a0 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65  :CheckEvalEntrie
299b0 73 20 7b 20 77 68 61 74 20 7b 20 6e 61 6d 65 20  s { what { name 
299c0 22 22 20 7d 20 7b 20 72 65 73 20 22 22 20 7d 20  "" } { res "" } 
299d0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
299e0 20 45 76 61 6c 45 6e 74 72 69 65 73 0a 20 20 20   EvalEntries.   
299f0 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74   variable IsInSt
29a00 6f 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  op.    variable 
29a10 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20  remoteserver.   
29a20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65   variable remote
29a30 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 76  serverType.    v
29a40 61 72 69 61 62 6c 65 20 67 64 62 6c 6f 67 0a 20  ariable gdblog. 
29a50 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69     variable opti
29a60 6f 6e 73 0a 0a 20 20 20 20 69 66 20 7b 20 21 24  ons..    if { !$
29a70 49 73 49 6e 53 74 6f 70 20 7d 20 7b 20 72 65 74  IsInStop } { ret
29a80 75 72 6e 20 7d 0a 20 20 20 20 69 66 20 7b 20 24  urn }.    if { $
29a90 6e 61 6d 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  name == "" } {..
29aa0 69 66 20 7b 20 24 77 68 61 74 20 3d 3d 20 22 64  if { $what == "d
29ab0 6f 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  o" } {..    set 
29ac0 76 61 72 73 20 22 22 0a 09 20 20 20 20 73 65 74  vars ""..    set
29ad0 20 69 20 30 0a 09 20 20 20 20 77 68 69 6c 65 20   i 0..    while 
29ae0 31 20 7b 0a 09 09 69 66 20 7b 20 21 5b 69 6e 66  1 {...if { ![inf
29af0 6f 20 65 78 69 73 74 73 20 45 76 61 6c 45 6e 74  o exists EvalEnt
29b00 72 69 65 73 28 24 69 2c 6c 65 66 74 29 5d 20 7d  ries($i,left)] }
29b10 20 7b 20 62 72 65 61 6b 20 7d 0a 09 09 69 66 20   { break }...if 
29b20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  { [string trim $
29b30 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c  EvalEntries($i,l
29b40 65 66 74 29 5d 20 21 3d 20 22 22 20 7d 20 7b 0a  eft)] != "" } {.
29b50 09 09 20 20 20 20 6c 61 70 70 65 6e 64 20 76 61  ..    lappend va
29b60 72 73 20 24 45 76 61 6c 45 6e 74 72 69 65 73 28  rs $EvalEntries(
29b70 24 69 2c 6c 65 66 74 29 0a 09 09 7d 0a 09 09 69  $i,left)...}...i
29b80 6e 63 72 20 69 0a 09 20 20 20 20 7d 0a 09 20 20  ncr i..    }..  
29b90 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65    if { $remotese
29ba0 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62  rverType == "gdb
29bb0 22 20 7d 20 7b 0a 09 09 77 68 69 6c 65 20 7b 20  " } {...while { 
29bc0 5b 6c 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73  [lindex $remotes
29bd0 65 72 76 65 72 20 32 5d 20 21 3d 20 22 22 20 7d  erver 2] != "" }
29be0 20 7b 0a 09 09 20 20 20 20 76 77 61 69 74 20 52   {...    vwait R
29bf0 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 6d 6f  amDebugger::remo
29c00 74 65 73 65 72 76 65 72 0a 09 09 7d 0a 09 09 73  teserver...}...s
29c10 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20  et remoteserver 
29c20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74  [lreplace $remot
29c30 65 73 65 72 76 65 72 20 32 20 32 20 6d 75 6c 74  eserver 2 2 mult
29c40 69 70 6c 65 70 72 69 6e 74 5d 0a 09 09 73 65 74  ipleprint]...set
29c50 20 63 6f 6d 6d 61 6e 64 20 22 22 0a 09 09 66 6f   command ""...fo
29c60 72 65 61 63 68 20 69 20 24 76 61 72 73 20 7b 0a  reach i $vars {.
29c70 09 09 20 20 20 20 61 70 70 65 6e 64 20 63 6f 6d  ..    append com
29c80 6d 61 6e 64 20 22 70 72 69 6e 74 20 24 69 5c 6e  mand "print $i\n
29c90 22 0a 09 09 7d 0a 09 09 61 70 70 65 6e 64 20 63  "...}...append c
29ca0 6f 6d 6d 61 6e 64 20 22 70 72 69 6e 74 66 20 5c  ommand "printf \
29cb0 22 46 49 4e 49 53 48 45 44 20 4d 55 4c 54 49 50  "FINISHED MULTIP
29cc0 4c 45 50 52 49 4e 54 5c 5c 6e 5c 22 22 0a 09 09  LEPRINT\\n\""...
29cd0 45 76 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d 6d  EvalRemote $comm
29ce0 61 6e 64 0a 09 09 72 65 74 75 72 6e 0a 09 20 20  and...return..  
29cf0 20 20 7d 0a 09 20 20 20 20 73 65 74 20 63 6f 6d    }..    set com
29d00 6d 20 7b 0a 09 09 73 65 74 20 3a 3a 52 44 43 3a  m {...set ::RDC:
29d10 3a 72 65 74 76 61 6c 20 22 22 0a 09 09 66 6f 72  :retval ""...for
29d20 65 61 63 68 20 3a 3a 52 44 43 3a 3a 69 20 5b 6c  each ::RDC::i [l
29d30 69 73 74 20 56 41 52 53 5d 20 7b 0a 09 09 20 20  ist VARS] {...  
29d40 20 20 69 66 20 7b 20 5b 61 72 72 61 79 20 65 78    if { [array ex
29d50 69 73 74 73 20 24 3a 3a 52 44 43 3a 3a 69 5d 20  ists $::RDC::i] 
29d60 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 6c 61  } {...        la
29d70 70 70 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74  ppend ::RDC::ret
29d80 76 61 6c 20 61 72 72 61 79 20 5b 61 72 72 61 79  val array [array
29d90 20 67 65 74 20 24 3a 3a 52 44 43 3a 3a 69 5d 0a   get $::RDC::i].
29da0 09 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  ..    } elseif {
29db0 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 24 3a   [info exists $:
29dc0 3a 52 44 43 3a 3a 69 5d 20 7d 20 7b 0a 09 09 20  :RDC::i] } {... 
29dd0 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 3a         lappend :
29de0 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 76 61 72  :RDC::retval var
29df0 69 61 62 6c 65 20 5b 73 65 74 20 24 3a 3a 52 44  iable [set $::RD
29e00 43 3a 3a 69 5d 0a 09 09 20 20 20 20 7d 20 65 6c  C::i]...    } el
29e10 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73  se {...        s
29e20 65 74 20 3a 3a 52 44 43 3a 3a 65 72 72 6f 72 49  et ::RDC::errorI
29e30 6e 66 6f 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f  nfo $::errorInfo
29e40 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 3a  ...        set :
29e50 3a 52 44 43 3a 3a 65 72 72 20 5b 63 61 74 63 68  :RDC::err [catch
29e60 20 7b 65 78 70 72 20 5b 73 65 74 20 3a 3a 52 44   {expr [set ::RD
29e70 43 3a 3a 69 5d 7d 20 3a 3a 52 44 43 3a 3a 76 61  C::i]} ::RDC::va
29e80 6c 5d 0a 09 09 20 20 20 20 20 20 20 20 69 66 20  l]...        if 
29e90 7b 20 21 24 3a 3a 52 44 43 3a 3a 65 72 72 20 7d  { !$::RDC::err }
29ea0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20   {...           
29eb0 20 6c 61 70 70 65 6e 64 20 3a 3a 52 44 43 3a 3a   lappend ::RDC::
29ec0 72 65 74 76 61 6c 20 65 78 70 72 20 24 3a 3a 52  retval expr $::R
29ed0 44 43 3a 3a 76 61 6c 0a 09 09 20 20 20 20 20 20  DC::val...      
29ee0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20    } else {...   
29ef0 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64           lappend
29f00 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 65   ::RDC::retval e
29f10 72 72 6f 72 20 5b 5f 20 22 76 61 72 69 61 62 6c  rror [_ "variabl
29f20 65 20 6f 72 20 65 78 70 72 20 25 73 20 64 6f 65  e or expr %s doe
29f30 73 20 6e 6f 74 20 65 78 69 73 74 22 20 24 3a 3a  s not exist" $::
29f40 52 44 43 3a 3a 69 5d 0a 09 09 20 20 20 20 20 20  RDC::i]...      
29f50 20 20 20 20 20 20 73 65 74 20 3a 3a 65 72 72 6f        set ::erro
29f60 72 49 6e 66 6f 20 24 3a 3a 52 44 43 3a 3a 65 72  rInfo $::RDC::er
29f70 72 6f 72 49 6e 66 6f 0a 09 09 20 20 20 20 20 20  rorInfo...      
29f80 20 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a    }...    }...}.
29f90 09 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74  ..set ::RDC::ret
29fa0 76 61 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  val..    }..    
29fb0 73 65 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67  set comm [string
29fc0 20 6d 61 70 20 5b 6c 69 73 74 20 56 41 52 53 20   map [list VARS 
29fd0 24 76 61 72 73 5d 20 24 63 6f 6d 6d 5d 0a 09 20  $vars] $comm].. 
29fe0 20 20 20 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65     reval -handle
29ff0 72 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  r [list RamDebug
2a000 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e  ger::CheckEvalEn
2a010 74 72 69 65 73 20 72 65 73 20 24 6e 61 6d 65 5d  tries res $name]
2a020 20 24 63 6f 6d 6d 0a 09 7d 20 65 6c 73 65 20 7b   $comm..} else {
2a030 0a 09 20 20 20 20 73 65 74 20 69 20 30 0a 09 20  ..    set i 0.. 
2a040 20 20 20 66 6f 72 65 61 63 68 20 22 74 79 70 65     foreach "type
2a050 20 76 61 6c 22 20 5b 6c 69 6e 64 65 78 20 24 72   val" [lindex $r
2a060 65 73 20 31 5d 20 7b 0a 09 09 69 66 20 7b 20 5b  es 1] {...if { [
2a070 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 76  string length $v
2a080 61 6c 5d 20 3e 20 31 30 30 20 7d 20 7b 0a 09 09  al] > 100 } {...
2a090 20 20 20 20 73 65 74 20 76 61 6c 20 5b 73 74 72      set val [str
2a0a0 69 6e 67 20 72 61 6e 67 65 20 24 76 61 6c 20 30  ing range $val 0
2a0b0 20 39 36 5d 2e 2e 2e 0a 09 09 7d 0a 09 09 77 68   96]......}...wh
2a0c0 69 6c 65 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73  ile { [info exis
2a0d0 74 73 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24  ts EvalEntries($
2a0e0 69 2c 6c 65 66 74 29 5d 20 26 26 20 5c 0a 09 09  i,left)] && \...
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 74 72              [str
2a100 69 6e 67 20 74 72 69 6d 20 24 45 76 61 6c 45 6e  ing trim $EvalEn
2a110 74 72 69 65 73 28 24 69 2c 6c 65 66 74 29 5d 20  tries($i,left)] 
2a120 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20  == "" } {...    
2a130 69 6e 63 72 20 69 0a 09 09 7d 0a 09 09 73 65 74  incr i...}...set
2a140 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76   RamDebugger::Ev
2a150 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67  alEntries($i,rig
2a160 68 74 29 20 24 76 61 6c 0a 09 09 69 66 20 7b 20  ht) $val...if { 
2a170 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 52 61  ![info exists Ra
2a180 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45  mDebugger::EvalE
2a190 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65  ntries($i,righte
2a1a0 6e 74 72 79 29 5d 20 7d 20 7b 20 62 72 65 61 6b  ntry)] } { break
2a1b0 20 7d 0a 09 09 69 66 20 7b 20 24 74 79 70 65 20   }...if { $type 
2a1c0 3d 3d 20 22 65 72 72 6f 72 22 20 7d 20 7b 0a 09  == "error" } {..
2a1d0 09 20 20 20 20 24 52 61 6d 44 65 62 75 67 67 65  .    $RamDebugge
2a1e0 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24  r::EvalEntries($
2a1f0 69 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63 6f  i,rightentry) co
2a200 6e 66 20 2d 66 67 20 72 65 64 0a 09 09 7d 20 65  nf -fg red...} e
2a210 6c 73 65 20 7b 0a 09 09 20 20 20 20 24 52 61 6d  lse {...    $Ram
2a220 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e  Debugger::EvalEn
2a230 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e  tries($i,righten
2a240 74 72 79 29 20 63 6f 6e 66 20 2d 66 67 20 62 6c  try) conf -fg bl
2a250 61 63 6b 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69  ack...}...incr i
2a260 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d  ..    }..}.    }
2a270 20 65 6c 73 65 69 66 20 7b 20 5b 73 74 72 69 6e   elseif { [strin
2a280 67 20 6d 61 74 63 68 20 2a 6c 65 66 74 20 24 6e  g match *left $n
2a290 61 6d 65 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 24  ame] } {..if { $
2a2a0 77 68 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b  what == "do" } {
2a2b0 0a 09 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30  ..    regexp {[0
2a2c0 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20  -9]+} $name i.. 
2a2d0 20 20 20 73 65 74 20 76 61 72 20 24 45 76 61 6c     set var $Eval
2a2e0 45 6e 74 72 69 65 73 28 24 6e 61 6d 65 29 0a 09  Entries($name)..
2a2f0 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67      if { [string
2a300 20 74 72 69 6d 20 24 76 61 72 5d 20 3d 3d 20 22   trim $var] == "
2a310 22 20 7d 20 7b 0a 09 09 24 52 61 6d 44 65 62 75  " } {...$RamDebu
2a320 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65  gger::EvalEntrie
2a330 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72 79 29  s($i,rightentry)
2a340 20 63 6f 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a   conf -fg black.
2a350 09 09 73 65 74 20 52 61 6d 44 65 62 75 67 67 65  ..set RamDebugge
2a360 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24  r::EvalEntries($
2a370 69 2c 72 69 67 68 74 29 20 22 22 0a 09 09 72 65  i,right) ""...re
2a380 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20  turn..    }..   
2a390 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72   if { $remoteser
2a3a0 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22  verType == "gdb"
2a3b0 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74   } {...set remot
2a3c0 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63  eserver [lreplac
2a3d0 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20  e $remoteserver 
2a3e0 32 20 32 20 5b 6c 69 73 74 20 67 65 74 64 61 74  2 2 [list getdat
2a3f0 61 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20  a \...          
2a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a420 20 20 20 20 20 20 20 20 22 52 61 6d 44 65 62 75          "RamDebu
2a430 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45  gger::CheckEvalE
2a440 6e 74 72 69 65 73 20 72 65 73 20 24 6e 61 6d 65  ntries res $name
2a450 22 5d 5d 0a 09 09 73 65 74 20 63 6f 6d 6d 20 22  "]]...set comm "
2a460 6f 75 74 70 75 74 20 24 76 61 72 5c 6e 22 0a 09  output $var\n"..
2a470 09 61 70 70 65 6e 64 20 63 6f 6d 6d 20 22 70 72  .append comm "pr
2a480 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 45 44 20  intf \"FINISHED 
2a490 47 45 54 44 41 54 41 5c 5c 6e 5c 22 22 0a 09 09  GETDATA\\n\""...
2a4a0 45 76 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d 6d  EvalRemote $comm
2a4b0 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d  ...return..    }
2a4c0 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b  ..    set comm {
2a4d0 0a 09 09 69 66 20 7b 20 5b 61 72 72 61 79 20 65  ...if { [array e
2a4e0 78 69 73 74 73 20 7b 56 41 52 7d 5d 20 7d 20 7b  xists {VAR}] } {
2a4f0 0a 09 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43  ...    set ::RDC
2a500 3a 3a 72 65 74 76 61 6c 20 5b 6c 69 73 74 20 61  ::retval [list a
2a510 72 72 61 79 20 5b 61 72 72 61 79 20 67 65 74 20  rray [array get 
2a520 7b 56 41 52 7d 5d 5d 0a 09 09 7d 20 65 6c 73 65  {VAR}]]...} else
2a530 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
2a540 73 20 7b 56 41 52 7d 5d 20 7d 20 7b 0a 09 09 20  s {VAR}] } {... 
2a550 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65     set ::RDC::re
2a560 74 76 61 6c 20 5b 6c 69 73 74 20 76 61 72 69 61  tval [list varia
2a570 62 6c 65 20 5b 73 65 74 20 7b 56 41 52 7d 5d 5d  ble [set {VAR}]]
2a580 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20  ...} else {...  
2a590 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 65 72 72    set ::RDC::err
2a5a0 6f 72 49 6e 66 6f 20 24 3a 3a 65 72 72 6f 72 49  orInfo $::errorI
2a5b0 6e 66 6f 0a 09 09 20 20 20 20 73 65 74 20 3a 3a  nfo...    set ::
2a5c0 52 44 43 3a 3a 65 72 72 20 5b 63 61 74 63 68 20  RDC::err [catch 
2a5d0 7b 65 78 70 72 20 7b 56 41 52 7d 7d 20 3a 3a 52  {expr {VAR}} ::R
2a5e0 44 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 69  DC::val]...    i
2a5f0 66 20 7b 20 21 24 3a 3a 52 44 43 3a 3a 65 72 72  f { !$::RDC::err
2a600 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73   } {...        s
2a610 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c  et ::RDC::retval
2a620 20 5b 6c 69 73 74 20 65 78 70 72 20 24 3a 3a 52   [list expr $::R
2a630 44 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 7d  DC::val]...    }
2a640 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20   else {...      
2a650 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74    set ::RDC::ret
2a660 76 61 6c 20 5b 6c 69 73 74 20 65 72 72 6f 72 20  val [list error 
2a670 7b 76 61 72 69 61 62 6c 65 20 6f 72 20 65 78 70  {variable or exp
2a680 72 20 27 56 41 52 27 20 64 6f 65 73 20 6e 6f 74  r 'VAR' does not
2a690 20 65 78 69 73 74 7d 5d 0a 09 09 20 20 20 20 20   exist}]...     
2a6a0 20 20 20 73 65 74 20 3a 3a 65 72 72 6f 72 49 6e     set ::errorIn
2a6b0 66 6f 20 24 3a 3a 52 44 43 3a 3a 65 72 72 6f 72  fo $::RDC::error
2a6c0 49 6e 66 6f 0a 09 09 20 20 20 20 7d 0a 09 09 7d  Info...    }...}
2a6d0 0a 09 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65  ...set ::RDC::re
2a6e0 74 76 61 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20  tval..    }..   
2a6f0 20 73 65 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e   set comm [strin
2a700 67 20 6d 61 70 20 5b 6c 69 73 74 20 56 41 52 20  g map [list VAR 
2a710 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 76 61  [string trim $va
2a720 72 5d 5d 20 24 63 6f 6d 6d 5d 0a 09 20 20 20 20  r]] $comm]..    
2a730 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65 72 20 5b  reval -handler [
2a740 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
2a750 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 69  ::CheckEvalEntri
2a760 65 73 20 72 65 73 20 24 6e 61 6d 65 5d 20 24 63  es res $name] $c
2a770 6f 6d 6d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20  omm..} else {.. 
2a780 20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39 5d     regexp {[0-9]
2a790 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20 20  +} $name i..    
2a7a0 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76  if { $remoteserv
2a7b0 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20  erType == "gdb" 
2a7c0 7d 20 7b 0a 09 09 73 65 74 20 72 65 73 20 5b 6c  } {...set res [l
2a7d0 69 73 74 20 30 20 5b 6c 69 73 74 20 76 61 72 69  ist 0 [list vari
2a7e0 61 62 6c 65 20 24 72 65 73 5d 5d 0a 09 20 20 20  able $res]]..   
2a7f0 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20   }..    foreach 
2a800 22 74 79 70 65 20 76 61 6c 22 20 5b 6c 69 6e 64  "type val" [lind
2a810 65 78 20 24 72 65 73 20 31 5d 20 62 72 65 61 6b  ex $res 1] break
2a820 0a 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69  ..    if { [stri
2a830 6e 67 20 6c 65 6e 67 74 68 20 24 76 61 6c 5d 20  ng length $val] 
2a840 3e 20 31 30 30 20 7d 20 7b 0a 09 09 73 65 74 20  > 100 } {...set 
2a850 76 61 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  val [string rang
2a860 65 20 24 76 61 6c 20 30 20 39 36 5d 2e 2e 2e 0a  e $val 0 96]....
2a870 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20  .    }..    set 
2a880 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61  RamDebugger::Eva
2a890 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68  lEntries($i,righ
2a8a0 74 29 20 24 76 61 6c 0a 09 20 20 20 20 69 66 20  t) $val..    if 
2a8b0 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
2a8c0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61  RamDebugger::Eva
2a8d0 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68  lEntries($i,righ
2a8e0 74 65 6e 74 72 79 29 5d 20 7d 20 7b 20 62 72 65  tentry)] } { bre
2a8f0 61 6b 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24  ak }..    if { $
2a900 74 79 70 65 20 3d 3d 20 22 65 72 72 6f 72 22 20  type == "error" 
2a910 7d 20 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67  } {...$RamDebugg
2a920 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28  er::EvalEntries(
2a930 24 69 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63  $i,rightentry) c
2a940 6f 6e 66 20 2d 66 67 20 72 65 64 0a 09 20 20 20  onf -fg red..   
2a950 20 7d 20 65 6c 73 65 20 7b 0a 09 09 24 52 61 6d   } else {...$Ram
2a960 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e  Debugger::EvalEn
2a970 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e  tries($i,righten
2a980 74 72 79 29 20 63 6f 6e 66 20 2d 66 67 20 62 6c  try) conf -fg bl
2a990 61 63 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20  ack..    }..}.  
2a9a0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b    } else {..if {
2a9b0 20 24 77 68 61 74 20 3d 3d 20 22 64 6f 22 20 7d   $what == "do" }
2a9c0 20 7b 0a 09 20 20 20 20 72 65 67 65 78 70 20 7b   {..    regexp {
2a9d0 5b 30 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a  [0-9]+} $name i.
2a9e0 09 20 20 20 20 73 65 74 20 76 61 72 20 5b 73 74  .    set var [st
2a9f0 72 69 6e 67 20 74 72 69 6d 20 24 45 76 61 6c 45  ring trim $EvalE
2aa00 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 74 29 5d  ntries($i,left)]
2aa10 0a 09 20 20 20 20 69 66 20 7b 20 24 76 61 72 20  ..    if { $var 
2aa20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e  == "" } { return
2aa30 20 7d 0a 09 20 20 20 20 73 65 74 20 76 61 6c 75   }..    set valu
2aa40 65 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  e [string trim $
2aa50 45 76 61 6c 45 6e 74 72 69 65 73 28 24 6e 61 6d  EvalEntries($nam
2aa60 65 29 5d 0a 0a 09 20 20 20 20 69 66 20 7b 20 24  e)]...    if { $
2aa70 6f 70 74 69 6f 6e 73 28 43 6f 6e 66 69 72 6d 4d  options(ConfirmM
2aa80 6f 64 69 66 79 56 61 72 69 61 62 6c 65 29 20 7d  odifyVariable) }
2aa90 20 7b 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69   {...set ret [Di
2aaa0 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65  alogWin::message
2aab0 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f 6b 20  Box -default ok 
2aac0 2d 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d  -icon question -
2aad0 6d 65 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20  message \...    
2aae0 20 20 20 20 20 20 20 20 20 5b 5f 20 22 41 72 65           [_ "Are
2aaf0 20 79 6f 75 20 73 75 72 65 20 74 6f 20 63 68 61   you sure to cha
2ab00 6e 67 65 20 76 61 72 69 61 62 6c 65 20 27 25 73  nge variable '%s
2ab10 27 20 74 6f 20 76 61 6c 75 65 20 27 25 73 27 3f  ' to value '%s'?
2ab20 22 20 24 76 61 72 20 24 76 61 6c 75 65 5d 20 5c  " $var $value] \
2ab30 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ab40 2d 74 69 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69  -title [_ "Warni
2ab50 6e 67 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e  ng"] -type okcan
2ab60 63 65 6c 5d 0a 09 09 69 66 20 7b 20 24 72 65 74  cel]...if { $ret
2ab70 20 3d 3d 20 22 63 61 6e 63 65 6c 22 20 7d 20 7b   == "cancel" } {
2ab80 20 72 65 74 75 72 6e 20 7d 0a 09 20 20 20 20 7d   return }..    }
2ab90 0a 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 6d  ...    if { $rem
2aba0 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d  oteserverType ==
2abb0 20 22 67 64 62 22 20 7d 20 7b 0a 09 09 73 65 74   "gdb" } {...set
2abc0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c   remoteserver [l
2abd0 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73  replace $remotes
2abe0 65 72 76 65 72 20 32 20 32 20 73 65 74 76 61 72  erver 2 2 setvar
2abf0 69 61 62 6c 65 5d 0a 09 09 45 76 61 6c 52 65 6d  iable]...EvalRem
2ac00 6f 74 65 20 22 73 65 74 20 76 61 72 69 61 62 6c  ote "set variabl
2ac10 65 20 24 76 61 72 3d 24 76 61 6c 75 65 22 0a 09  e $var=$value"..
2ac20 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09  .return..    }..
2ac30 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 5b 6c 69      set comm [li
2ac40 73 74 20 73 65 74 20 24 76 61 72 20 24 76 61 6c  st set $var $val
2ac50 75 65 5d 0a 09 20 20 20 20 72 65 76 61 6c 20 2d  ue]..    reval -
2ac60 68 61 6e 64 6c 65 72 20 5b 6c 69 73 74 20 52 61  handler [list Ra
2ac70 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b  mDebugger::Check
2ac80 45 76 61 6c 45 6e 74 72 69 65 73 20 72 65 73 20  EvalEntries res 
2ac90 24 6e 61 6d 65 5d 20 24 63 6f 6d 6d 0a 09 7d 20  $name] $comm..} 
2aca0 65 6c 73 65 20 7b 0a 09 20 20 20 20 72 65 67 65  else {..    rege
2acb0 78 70 20 7b 5b 30 2d 39 5d 2b 7d 20 24 6e 61 6d  xp {[0-9]+} $nam
2acc0 65 20 69 0a 09 20 20 20 20 73 65 74 20 52 61 6d  e i..    set Ram
2acd0 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e  Debugger::EvalEn
2ace0 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 29 20  tries($i,right) 
2acf0 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 31 5d 0a  [lindex $res 1].
2ad00 09 20 20 20 20 73 77 69 74 63 68 20 5b 6c 69 6e  .    switch [lin
2ad10 64 65 78 20 24 72 65 73 20 30 5d 20 7b 0a 09 09  dex $res 0] {...
2ad20 30 20 7b 20 24 52 61 6d 44 65 62 75 67 67 65 72  0 { $RamDebugger
2ad30 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  ::EvalEntries($i
2ad40 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e  ,rightentry) con
2ad50 66 20 2d 66 67 20 62 6c 61 63 6b 20 7d 0a 09 09  f -fg black }...
2ad60 31 20 7b 20 24 52 61 6d 44 65 62 75 67 67 65 72  1 { $RamDebugger
2ad70 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  ::EvalEntries($i
2ad80 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e  ,rightentry) con
2ad90 66 20 2d 66 67 20 72 65 64 20 7d 0a 09 20 20 20  f -fg red }..   
2ada0 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70   }..}.    }.}..p
2adb0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
2adc0 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65  :CheckEvalEntrie
2add0 73 4c 20 7b 20 77 68 61 74 20 7b 20 6e 61 6d 65  sL { what { name
2ade0 20 22 22 20 7d 20 7b 20 72 65 73 20 22 22 20 7d   "" } { res "" }
2adf0 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
2ae00 65 20 45 76 61 6c 45 6e 74 72 69 65 73 0a 20 20  e EvalEntries.  
2ae10 20 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53    variable IsInS
2ae20 74 6f 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65  top.    variable
2ae30 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20   remoteserver.  
2ae40 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74    variable remot
2ae50 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20  eserverType.    
2ae60 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73  variable options
2ae70 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 6f 70 74  ..    if { !$opt
2ae80 69 6f 6e 73 28 56 69 65 77 4c 6f 63 61 6c 56 61  ions(ViewLocalVa
2ae90 72 69 61 62 6c 65 73 29 20 7d 20 7b 0a 09 73 65  riables) } {..se
2aea0 74 20 69 20 30 0a 09 77 68 69 6c 65 20 31 20 7b  t i 0..while 1 {
2aeb0 0a 09 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66  ..    if { ![inf
2aec0 6f 20 65 78 69 73 74 73 20 45 76 61 6c 45 6e 74  o exists EvalEnt
2aed0 72 69 65 73 28 24 69 2c 6c 65 66 74 4c 29 5d 20  ries($i,leftL)] 
2aee0 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 20 20 20  } { break }..   
2aef0 20 73 65 74 20 45 76 61 6c 45 6e 74 72 69 65 73   set EvalEntries
2af00 28 24 69 2c 6c 65 66 74 4c 29 20 22 22 0a 09 20  ($i,leftL) "".. 
2af10 20 20 20 73 65 74 20 45 76 61 6c 45 6e 74 72 69     set EvalEntri
2af20 65 73 28 24 69 2c 72 69 67 68 74 4c 29 20 22 22  es($i,rightL) ""
2af30 0a 09 20 20 20 20 69 6e 63 72 20 69 0a 09 7d 0a  ..    incr i..}.
2af40 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20  .return.    }.. 
2af50 20 20 20 69 66 20 7b 20 21 24 49 73 49 6e 53 74     if { !$IsInSt
2af60 6f 70 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  op } { return }.
2af70 0a 20 20 20 20 69 66 20 7b 20 24 6e 61 6d 65 20  .    if { $name 
2af80 3d 3d 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20  == "" } {..if { 
2af90 24 77 68 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20  $what == "do" } 
2afa0 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 6d  {..    if { $rem
2afb0 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d  oteserverType ==
2afc0 20 22 67 64 62 22 20 7d 20 7b 0a 09 09 77 68 69   "gdb" } {...whi
2afd0 6c 65 20 7b 20 5b 6c 69 6e 64 65 78 20 24 72 65  le { [lindex $re
2afe0 6d 6f 74 65 73 65 72 76 65 72 20 32 5d 20 21 3d  moteserver 2] !=
2aff0 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 76 77   "" } {...    vw
2b000 61 69 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ait RamDebugger:
2b010 3a 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 09 09  :remoteserver...
2b020 7d 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65  }...set remotese
2b030 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24  rver [lreplace $
2b040 72 65 6d 6f 74 65 73 65 72 76 65 72 20 32 20 32  remoteserver 2 2
2b050 20 69 6e 66 6f 6c 6f 63 61 6c 73 5d 0a 09 09 45   infolocals]...E
2b060 76 61 6c 52 65 6d 6f 74 65 20 22 69 6e 66 6f 20  valRemote "info 
2b070 6c 6f 63 61 6c 73 5c 6e 70 72 69 6e 74 66 20 5c  locals\nprintf \
2b080 22 5c 5c 6e 46 49 4e 49 53 48 45 44 20 49 4e 46  "\\nFINISHED INF
2b090 4f 20 4c 4f 43 41 4c 53 5c 5c 6e 5c 22 22 0a 09  O LOCALS\\n\""..
2b0a0 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09  .return..    }..
2b0b0 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b 0a 09      set comm {..
2b0c0 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76  .set ::RDC::retv
2b0d0 61 6c 20 22 22 0a 09 09 66 6f 72 65 61 63 68 20  al ""...foreach 
2b0e0 3a 3a 52 44 43 3a 3a 69 20 5b 69 6e 66 6f 20 6c  ::RDC::i [info l
2b0f0 6f 63 61 6c 73 5d 20 7b 0a 09 09 20 20 20 20 69  ocals] {...    i
2b100 66 20 7b 20 5b 61 72 72 61 79 20 65 78 69 73 74  f { [array exist
2b110 73 20 24 3a 3a 52 44 43 3a 3a 69 5d 20 7d 20 7b  s $::RDC::i] } {
2b120 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 3a  ...        set :
2b130 3a 52 44 43 3a 3a 76 61 6c 20 5b 61 72 72 61 79  :RDC::val [array
2b140 20 67 65 74 20 24 3a 3a 52 44 43 3a 3a 69 5d 0a   get $::RDC::i].
2b150 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b  ..        if { [
2b160 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a  string length $:
2b170 3a 52 44 43 3a 3a 76 61 6c 5d 20 3e 20 31 30 30  :RDC::val] > 100
2b180 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20   } {...         
2b190 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 76 61     set ::RDC::va
2b1a0 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  l [string range 
2b1b0 24 3a 3a 52 44 43 3a 3a 76 61 6c 20 30 20 39 36  $::RDC::val 0 96
2b1c0 5d 2e 2e 2e 0a 09 09 20 20 20 20 20 20 20 20 7d  ]......        }
2b1d0 0a 09 09 20 20 20 20 20 20 20 20 6c 61 70 70 65  ...        lappe
2b1e0 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c  nd ::RDC::retval
2b1f0 20 24 3a 3a 52 44 43 3a 3a 69 20 61 72 72 61 79   $::RDC::i array
2b200 20 24 3a 3a 52 44 43 3a 3a 76 61 6c 0a 09 09 20   $::RDC::val... 
2b210 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 69     } elseif { [i
2b220 6e 66 6f 20 65 78 69 73 74 73 20 24 3a 3a 52 44  nfo exists $::RD
2b230 43 3a 3a 69 5d 20 7d 20 7b 0a 09 09 20 20 20 20  C::i] } {...    
2b240 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 76      set ::RDC::v
2b250 61 6c 20 5b 73 65 74 20 24 3a 3a 52 44 43 3a 3a  al [set $::RDC::
2b260 69 5d 0a 09 09 20 20 20 20 20 20 20 20 69 66 20  i]...        if 
2b270 7b 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  { [string length
2b280 20 24 3a 3a 52 44 43 3a 3a 76 61 6c 5d 20 3e 20   $::RDC::val] > 
2b290 31 30 30 20 7d 20 7b 0a 09 09 20 20 20 20 20 20  100 } {...      
2b2a0 20 20 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a        set ::RDC:
2b2b0 3a 76 61 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e  :val [string ran
2b2c0 67 65 20 24 3a 3a 52 44 43 3a 3a 76 61 6c 20 30  ge $::RDC::val 0
2b2d0 20 39 36 5d 2e 2e 2e 0a 09 09 20 20 20 20 20 20   96]......      
2b2e0 20 20 7d 0a 09 09 20 20 20 20 20 20 20 20 6c 61    }...        la
2b2f0 70 70 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74  ppend ::RDC::ret
2b300 76 61 6c 20 24 3a 3a 52 44 43 3a 3a 69 20 76 61  val $::RDC::i va
2b310 72 69 61 62 6c 65 20 24 3a 3a 52 44 43 3a 3a 76  riable $::RDC::v
2b320 61 6c 0a 09 09 20 20 20 20 7d 20 65 6c 73 65 20  al...    } else 
2b330 7b 0a 09 09 20 20 20 20 20 20 20 20 6c 61 70 70  {...        lapp
2b340 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61  end ::RDC::retva
2b350 6c 20 24 3a 3a 52 44 43 3a 3a 69 20 65 72 72 6f  l $::RDC::i erro
2b360 72 20 5b 5f 20 22 45 72 72 6f 72 22 5d 0a 09 09  r [_ "Error"]...
2b370 20 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20      }...}...set 
2b380 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 0a 09 20  ::RDC::retval.. 
2b390 20 20 20 7d 0a 09 20 20 20 20 72 65 76 61 6c 20     }..    reval 
2b3a0 2d 68 61 6e 64 6c 65 72 20 5b 6c 69 73 74 20 52  -handler [list R
2b3b0 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63  amDebugger::Chec
2b3c0 6b 45 76 61 6c 45 6e 74 72 69 65 73 4c 20 72 65  kEvalEntriesL re
2b3d0 73 20 24 6e 61 6d 65 5d 20 24 63 6f 6d 6d 0a 09  s $name] $comm..
2b3e0 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65  } else {..    se
2b3f0 74 20 69 20 30 0a 09 20 20 20 20 66 6f 72 65 61  t i 0..    forea
2b400 63 68 20 22 6e 61 6d 65 20 74 79 70 65 20 76 61  ch "name type va
2b410 6c 22 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 20  l" [lindex $res 
2b420 31 5d 20 7b 0a 09 09 69 66 20 7b 20 24 74 79 70  1] {...if { $typ
2b430 65 20 3d 3d 20 22 45 72 72 6f 72 22 20 7d 20 7b  e == "Error" } {
2b440 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 69 66   continue }...if
2b450 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73   { ![info exists
2b460 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c   EvalEntries($i,
2b470 6c 65 66 74 4c 29 5d 20 7d 20 7b 0a 09 09 20 20  leftL)] } {...  
2b480 20 20 73 65 74 20 70 61 6e 65 31 20 5b 77 69 6e    set pane1 [win
2b490 66 6f 20 70 61 72 65 6e 74 20 24 45 76 61 6c 45  fo parent $EvalE
2b4a0 6e 74 72 69 65 73 28 30 2c 6c 65 66 74 65 6e 74  ntries(0,leftent
2b4b0 72 79 4c 29 5d 0a 09 09 20 20 20 20 73 65 74 20  ryL)]...    set 
2b4c0 70 61 6e 65 32 20 5b 77 69 6e 66 6f 20 70 61 72  pane2 [winfo par
2b4d0 65 6e 74 20 24 45 76 61 6c 45 6e 74 72 69 65 73  ent $EvalEntries
2b4e0 28 30 2c 72 69 67 68 74 65 6e 74 72 79 4c 29 5d  (0,rightentryL)]
2b4f0 0a 09 09 20 20 20 20 43 72 65 61 74 65 50 61 6e  ...    CreatePan
2b500 65 64 45 6e 74 72 69 65 73 20 5b 65 78 70 72 20  edEntries [expr 
2b510 24 69 2b 31 5d 20 24 70 61 6e 65 31 20 24 70 61  $i+1] $pane1 $pa
2b520 6e 65 32 20 4c 0a 09 09 7d 0a 09 09 73 65 74 20  ne2 L...}...set 
2b530 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c  EvalEntries($i,l
2b540 65 66 74 4c 29 20 24 6e 61 6d 65 0a 09 09 73 65  eftL) $name...se
2b550 74 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  t EvalEntries($i
2b560 2c 72 69 67 68 74 4c 29 20 24 76 61 6c 0a 09 09  ,rightL) $val...
2b570 69 6e 63 72 20 69 0a 09 20 20 20 20 7d 0a 09 20  incr i..    }.. 
2b580 20 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 09 69     while 1 {...i
2b590 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74  f { ![info exist
2b5a0 73 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  s EvalEntries($i
2b5b0 2c 6c 65 66 74 4c 29 5d 20 7d 20 7b 20 62 72 65  ,leftL)] } { bre
2b5c0 61 6b 20 7d 0a 09 09 73 65 74 20 45 76 61 6c 45  ak }...set EvalE
2b5d0 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 74 4c 29  ntries($i,leftL)
2b5e0 20 22 22 0a 09 09 73 65 74 20 45 76 61 6c 45 6e   ""...set EvalEn
2b5f0 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 4c 29  tries($i,rightL)
2b600 20 22 22 0a 09 09 69 6e 63 72 20 69 0a 09 20 20   ""...incr i..  
2b610 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73    }..}.    } els
2b620 65 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61  eif { [string ma
2b630 74 63 68 20 2a 6c 65 66 74 4c 20 24 6e 61 6d 65  tch *leftL $name
2b640 5d 20 7d 20 7b 0a 0a 09 69 66 20 7b 20 24 77 68  ] } {...if { $wh
2b650 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a 09  at == "do" } {..
2b660 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39      regexp {[0-9
2b670 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20  ]+} $name i..   
2b680 20 73 65 74 20 76 61 72 20 24 45 76 61 6c 45 6e   set var $EvalEn
2b690 74 72 69 65 73 28 24 6e 61 6d 65 29 0a 09 20 20  tries($name)..  
2b6a0 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74    if { [string t
2b6b0 72 69 6d 20 24 76 61 72 5d 20 3d 3d 20 22 22 20  rim $var] == "" 
2b6c0 7d 20 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67  } {...$RamDebugg
2b6d0 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28  er::EvalEntries(
2b6e0 24 69 2c 72 69 67 68 74 65 6e 74 72 79 4c 29 20  $i,rightentryL) 
2b6f0 63 6f 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a 09  conf -fg black..
2b700 09 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 72  .set RamDebugger
2b710 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  ::EvalEntries($i
2b720 2c 72 69 67 68 74 4c 29 20 22 22 0a 09 09 72 65  ,rightL) ""...re
2b730 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20  turn..    }..   
2b740 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72   if { $remoteser
2b750 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22  verType == "gdb"
2b760 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74   } {...set remot
2b770 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63  eserver [lreplac
2b780 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20  e $remoteserver 
2b790 32 20 32 20 5b 6c 69 73 74 20 67 65 74 64 61 74  2 2 [list getdat
2b7a0 61 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20  a \...          
2b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7d0 20 20 20 20 20 20 20 20 22 52 61 6d 44 65 62 75          "RamDebu
2b7e0 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45  gger::CheckEvalE
2b7f0 6e 74 72 69 65 73 4c 20 72 65 73 20 24 6e 61 6d  ntriesL res $nam
2b800 65 22 5d 5d 0a 09 09 73 65 74 20 63 6f 6d 6d 20  e"]]...set comm 
2b810 22 6f 75 74 70 75 74 20 24 76 61 72 5c 6e 22 0a  "output $var\n".
2b820 09 09 61 70 70 65 6e 64 20 63 6f 6d 6d 20 22 70  ..append comm "p
2b830 72 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 45 44  rintf \"FINISHED
2b840 20 47 45 54 44 41 54 41 5c 5c 6e 5c 22 22 0a 09   GETDATA\\n\""..
2b850 09 45 76 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d  .EvalRemote $com
2b860 6d 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20  m...return..    
2b870 7d 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20  }..    set comm 
2b880 7b 0a 09 09 69 66 20 7b 20 5b 61 72 72 61 79 20  {...if { [array 
2b890 65 78 69 73 74 73 20 7b 56 41 52 7d 5d 20 7d 20  exists {VAR}] } 
2b8a0 7b 0a 09 09 20 20 20 20 73 65 74 20 3a 3a 52 44  {...    set ::RD
2b8b0 43 3a 3a 72 65 74 76 61 6c 20 5b 6c 69 73 74 20  C::retval [list 
2b8c0 61 72 72 61 79 20 5b 61 72 72 61 79 20 67 65 74  array [array get
2b8d0 20 7b 56 41 52 7d 5d 5d 0a 09 09 7d 20 65 6c 73   {VAR}]]...} els
2b8e0 65 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73  eif { [info exis
2b8f0 74 73 20 7b 56 41 52 7d 5d 20 7d 20 7b 0a 09 09  ts {VAR}] } {...
2b900 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72      set ::RDC::r
2b910 65 74 76 61 6c 20 5b 6c 69 73 74 20 76 61 72 69  etval [list vari
2b920 61 62 6c 65 20 5b 73 65 74 20 7b 56 41 52 7d 5d  able [set {VAR}]
2b930 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20  ]...} else {... 
2b940 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 65 72     set ::RDC::er
2b950 72 6f 72 49 6e 66 6f 20 24 3a 3a 65 72 72 6f 72  rorInfo $::error
2b960 49 6e 66 6f 0a 09 09 20 20 20 20 73 65 74 20 3a  Info...    set :
2b970 3a 52 44 43 3a 3a 65 72 72 20 5b 63 61 74 63 68  :RDC::err [catch
2b980 20 7b 65 78 70 72 20 7b 56 41 52 7d 7d 20 3a 3a   {expr {VAR}} ::
2b990 52 44 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20  RDC::val]...    
2b9a0 69 66 20 7b 20 21 24 3a 3a 52 44 43 3a 3a 65 72  if { !$::RDC::er
2b9b0 72 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20  r } {...        
2b9c0 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61  set ::RDC::retva
2b9d0 6c 20 5b 6c 69 73 74 20 65 78 70 72 20 24 3a 3a  l [list expr $::
2b9e0 52 44 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20  RDC::val]...    
2b9f0 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20  } else {...     
2ba00 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65     set ::RDC::re
2ba10 74 76 61 6c 20 5b 6c 69 73 74 20 65 72 72 6f 72  tval [list error
2ba20 20 5b 5f 20 22 76 61 72 69 61 62 6c 65 20 6f 72   [_ "variable or
2ba30 20 65 78 70 72 20 27 56 41 52 27 20 64 6f 65 73   expr 'VAR' does
2ba40 20 6e 6f 74 20 65 78 69 73 74 22 5d 5d 0a 09 09   not exist"]]...
2ba50 20 20 20 20 20 20 20 20 73 65 74 20 3a 3a 65 72          set ::er
2ba60 72 6f 72 49 6e 66 6f 20 24 3a 3a 52 44 43 3a 3a  rorInfo $::RDC::
2ba70 65 72 72 6f 72 49 6e 66 6f 0a 09 09 20 20 20 20  errorInfo...    
2ba80 7d 0a 09 09 7d 0a 09 09 73 65 74 20 3a 3a 52 44  }...}...set ::RD
2ba90 43 3a 3a 72 65 74 76 61 6c 0a 09 20 20 20 20 7d  C::retval..    }
2baa0 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 5b  ..    set comm [
2bab0 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74  string map [list
2bac0 20 56 41 52 20 5b 73 74 72 69 6e 67 20 74 72 69   VAR [string tri
2bad0 6d 20 24 76 61 72 5d 5d 20 24 63 6f 6d 6d 5d 0a  m $var]] $comm].
2bae0 09 20 20 20 20 72 65 76 61 6c 20 2d 68 61 6e 64  .    reval -hand
2baf0 6c 65 72 20 5b 6c 69 73 74 20 52 61 6d 44 65 62  ler [list RamDeb
2bb00 75 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c  ugger::CheckEval
2bb10 45 6e 74 72 69 65 73 4c 20 72 65 73 20 24 6e 61  EntriesL res $na
2bb20 6d 65 5d 20 24 63 6f 6d 6d 0a 09 7d 20 65 6c 73  me] $comm..} els
2bb30 65 20 7b 0a 09 20 20 20 20 72 65 67 65 78 70 20  e {..    regexp 
2bb40 7b 5b 30 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69  {[0-9]+} $name i
2bb50 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f  ..    if { $remo
2bb60 74 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20  teserverType == 
2bb70 22 67 64 62 22 20 7d 20 7b 0a 09 09 73 65 74 20  "gdb" } {...set 
2bb80 72 65 73 20 5b 6c 69 73 74 20 30 20 5b 6c 69 73  res [list 0 [lis
2bb90 74 20 76 61 72 69 61 62 6c 65 20 24 72 65 73 5d  t variable $res]
2bba0 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66 6f  ]..    }..    fo
2bbb0 72 65 61 63 68 20 22 74 79 70 65 20 76 61 6c 22  reach "type val"
2bbc0 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 31 5d   [lindex $res 1]
2bbd0 20 62 72 65 61 6b 0a 09 20 20 20 20 69 66 20 7b   break..    if {
2bbe0 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
2bbf0 24 76 61 6c 5d 20 3e 20 31 30 30 20 7d 20 7b 0a  $val] > 100 } {.
2bc00 09 09 73 65 74 20 76 61 6c 20 5b 73 74 72 69 6e  ..set val [strin
2bc10 67 20 72 61 6e 67 65 20 24 76 61 6c 20 30 20 39  g range $val 0 9
2bc20 36 5d 2e 2e 2e 0a 09 20 20 20 20 7d 0a 09 20 20  6].....    }..  
2bc30 20 20 73 65 74 20 52 61 6d 44 65 62 75 67 67 65    set RamDebugge
2bc40 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24  r::EvalEntries($
2bc50 69 2c 72 69 67 68 74 4c 29 20 24 76 61 6c 0a 09  i,rightL) $val..
2bc60 20 20 20 20 69 66 20 7b 20 24 74 79 70 65 20 3d      if { $type =
2bc70 3d 20 22 45 72 72 6f 72 22 20 7d 20 7b 0a 09 09  = "Error" } {...
2bc80 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76  $RamDebugger::Ev
2bc90 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67  alEntries($i,rig
2bca0 68 74 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20 2d  htentryL) conf -
2bcb0 66 67 20 72 65 64 0a 09 20 20 20 20 7d 20 65 6c  fg red..    } el
2bcc0 73 65 20 7b 0a 09 09 24 52 61 6d 44 65 62 75 67  se {...$RamDebug
2bcd0 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73  ger::EvalEntries
2bce0 28 24 69 2c 72 69 67 68 74 65 6e 74 72 79 4c 29  ($i,rightentryL)
2bcf0 20 63 6f 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a   conf -fg black.
2bd00 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20  .    }..}.    } 
2bd10 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20 24 77 68  else {..if { $wh
2bd20 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a 09  at == "do" } {..
2bd30 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39      regexp {[0-9
2bd40 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20  ]+} $name i..   
2bd50 20 73 65 74 20 76 61 72 20 5b 73 74 72 69 6e 67   set var [string
2bd60 20 74 72 69 6d 20 24 45 76 61 6c 45 6e 74 72 69   trim $EvalEntri
2bd70 65 73 28 24 69 2c 6c 65 66 74 4c 29 5d 0a 09 20  es($i,leftL)].. 
2bd80 20 20 20 69 66 20 7b 20 24 76 61 72 20 3d 3d 20     if { $var == 
2bd90 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  "" } { return }.
2bda0 09 20 20 20 20 73 65 74 20 76 61 6c 75 65 20 5b  .    set value [
2bdb0 73 74 72 69 6e 67 20 74 72 69 6d 20 24 45 76 61  string trim $Eva
2bdc0 6c 45 6e 74 72 69 65 73 28 24 6e 61 6d 65 29 5d  lEntries($name)]
2bdd0 0a 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74  ...    if { $opt
2bde0 69 6f 6e 73 28 43 6f 6e 66 69 72 6d 4d 6f 64 69  ions(ConfirmModi
2bdf0 66 79 56 61 72 69 61 62 6c 65 29 20 7d 20 7b 0a  fyVariable) } {.
2be00 09 09 23 20 69 74 73 20 6e 65 63 65 73 73 61 72  ..# its necessar
2be10 79 20 74 6f 20 74 61 6b 65 20 6f 75 74 20 74 68  y to take out th
2be20 65 20 66 6f 63 75 73 20 6f 75 74 20 62 69 6e 64  e focus out bind
2be30 69 6e 67 20 74 6f 20 61 76 6f 69 64 20 69 6e 74  ing to avoid int
2be40 65 72 61 63 74 69 6f 6e 0a 09 09 23 20 77 69 74  eraction...# wit
2be50 68 20 74 68 69 73 20 66 75 6e 63 0a 09 09 73 65  h this func...se
2be60 74 20 63 6f 6d 6d 20 5b 62 69 6e 64 20 24 52 61  t comm [bind $Ra
2be70 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45  mDebugger::EvalE
2be80 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65  ntries($i,righte
2be90 6e 74 72 79 4c 29 20 3c 46 6f 63 75 73 4f 75 74  ntryL) <FocusOut
2bea0 3e 5d 0a 09 09 62 69 6e 64 20 24 52 61 6d 44 65  >]...bind $RamDe
2beb0 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72  bugger::EvalEntr
2bec0 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72  ies($i,rightentr
2bed0 79 4c 29 20 3c 46 6f 63 75 73 4f 75 74 3e 20 22  yL) <FocusOut> "
2bee0 22 0a 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69  "....set ret [Di
2bef0 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65  alogWin::message
2bf00 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f 6b 20  Box -default ok 
2bf10 2d 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d  -icon question -
2bf20 6d 65 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20  message \...    
2bf30 20 20 20 20 20 20 20 20 20 5b 5f 20 22 41 72 65           [_ "Are
2bf40 20 79 6f 75 20 73 75 72 65 20 74 6f 20 63 68 61   you sure to cha
2bf50 6e 67 65 20 76 61 72 69 61 62 6c 65 20 27 25 73  nge variable '%s
2bf60 27 20 74 6f 20 76 61 6c 75 65 20 27 25 73 27 3f  ' to value '%s'?
2bf70 22 20 24 76 61 72 20 24 76 61 6c 75 65 5d 20 5c  " $var $value] \
2bf80 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf90 2d 74 69 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69  -title [_ "Warni
2bfa0 6e 67 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e  ng"] -type okcan
2bfb0 63 65 6c 5d 0a 0a 09 09 62 69 6e 64 20 24 52 61  cel]....bind $Ra
2bfc0 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45  mDebugger::EvalE
2bfd0 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65  ntries($i,righte
2bfe0 6e 74 72 79 4c 29 20 3c 46 6f 63 75 73 4f 75 74  ntryL) <FocusOut
2bff0 3e 20 24 63 6f 6d 6d 0a 0a 09 09 69 66 20 7b 20  > $comm....if { 
2c000 24 72 65 74 20 3d 3d 20 22 63 61 6e 63 65 6c 22  $ret == "cancel"
2c010 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 20   } { return }.. 
2c020 20 20 20 7d 0a 09 20 20 20 20 0a 09 20 20 20 20     }..    ..    
2c030 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76  if { $remoteserv
2c040 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20  erType == "gdb" 
2c050 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65  } {...set remote
2c060 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65  server [lreplace
2c070 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 32   $remoteserver 2
2c080 20 32 20 73 65 74 76 61 72 69 61 62 6c 65 5d 0a   2 setvariable].
2c090 09 09 45 76 61 6c 52 65 6d 6f 74 65 20 22 73 65  ..EvalRemote "se
2c0a0 74 20 76 61 72 69 61 62 6c 65 20 24 76 61 72 3d  t variable $var=
2c0b0 24 76 61 6c 75 65 22 0a 09 09 72 65 74 75 72 6e  $value"...return
2c0c0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74  ..    }..    set
2c0d0 20 63 6f 6d 6d 20 5b 6c 69 73 74 20 73 65 74 20   comm [list set 
2c0e0 24 76 61 72 20 24 76 61 6c 75 65 5d 0a 09 20 20  $var $value]..  
2c0f0 20 20 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65 72    reval -handler
2c100 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
2c110 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74  er::CheckEvalEnt
2c120 72 69 65 73 4c 20 72 65 73 20 24 6e 61 6d 65 5d  riesL res $name]
2c130 20 24 63 6f 6d 6d 0a 0a 09 7d 20 65 6c 73 65 20   $comm...} else 
2c140 7b 0a 09 20 20 20 20 72 65 67 65 78 70 20 7b 5b  {..    regexp {[
2c150 30 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09  0-9]+} $name i..
2c160 20 20 20 20 73 65 74 20 52 61 6d 44 65 62 75 67      set RamDebug
2c170 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73  ger::EvalEntries
2c180 28 24 69 2c 72 69 67 68 74 52 29 20 5b 6c 69 6e  ($i,rightR) [lin
2c190 64 65 78 20 24 72 65 73 20 31 5d 0a 09 20 20 20  dex $res 1]..   
2c1a0 20 73 77 69 74 63 68 20 5b 6c 69 6e 64 65 78 20   switch [lindex 
2c1b0 24 72 65 73 20 30 5d 20 7b 0a 09 09 30 20 7b 20  $res 0] {...0 { 
2c1c0 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76  $RamDebugger::Ev
2c1d0 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67  alEntries($i,rig
2c1e0 68 74 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20 2d  htentryL) conf -
2c1f0 66 67 20 62 6c 61 63 6b 20 7d 0a 09 09 31 20 7b  fg black }...1 {
2c200 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45   $RamDebugger::E
2c210 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69  valEntries($i,ri
2c220 67 68 74 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20  ghtentryL) conf 
2c230 2d 66 67 20 72 65 64 20 7d 0a 09 20 20 20 20 7d  -fg red }..    }
2c240 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  ..}.    }.}..pro
2c250 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 57  c RamDebugger::W
2c260 61 69 74 53 74 61 74 65 20 7b 20 77 68 61 74 20  aitState { what 
2c270 7b 20 77 20 2e 20 7d 20 7d 20 7b 0a 20 20 20 20  { w . } } {.    
2c280 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20  variable text.  
2c290 20 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62    variable listb
2c2a0 6f 78 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ox.    variable 
2c2b0 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 75  WaitState_savecu
2c2c0 72 73 6f 72 73 0a 0a 20 20 20 20 69 66 20 7b 20  rsors..    if { 
2c2d0 24 77 68 61 74 20 3d 3d 20 31 20 7d 20 7b 0a 09  $what == 1 } {..
2c2e0 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
2c2f0 73 20 57 61 69 74 53 74 61 74 65 5f 73 61 76 65  s WaitState_save
2c300 63 75 72 73 6f 72 73 5d 20 7d 20 7b 20 72 65 74  cursors] } { ret
2c310 75 72 6e 20 7d 0a 09 73 65 74 20 57 61 69 74 53  urn }..set WaitS
2c320 74 61 74 65 5f 73 61 76 65 63 75 72 73 6f 72 73  tate_savecursors
2c330 20 22 22 0a 09 6c 61 70 70 65 6e 64 20 57 61 69   ""..lappend Wai
2c340 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 73 6f  tState_savecurso
2c350 72 73 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d  rs [$text cget -
2c360 63 75 72 73 6f 72 5d 0a 09 24 74 65 78 74 20 63  cursor]..$text c
2c370 6f 6e 66 69 67 75 72 65 20 2d 63 75 72 73 6f 72  onfigure -cursor
2c380 20 77 61 74 63 68 0a 09 69 66 20 7b 20 5b 77 69   watch..if { [wi
2c390 6e 66 6f 20 65 78 69 73 74 73 20 24 6c 69 73 74  nfo exists $list
2c3a0 62 6f 78 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 61  box] } {..    la
2c3b0 70 70 65 6e 64 20 57 61 69 74 53 74 61 74 65 5f  ppend WaitState_
2c3c0 73 61 76 65 63 75 72 73 6f 72 73 20 5b 24 6c 69  savecursors [$li
2c3d0 73 74 62 6f 78 20 63 67 65 74 20 2d 63 75 72 73  stbox cget -curs
2c3e0 6f 72 5d 20 20 20 20 0a 09 20 20 20 20 24 6c 69  or]    ..    $li
2c3f0 73 74 62 6f 78 20 63 6f 6e 66 69 67 75 72 65 20  stbox configure 
2c400 2d 63 75 72 73 6f 72 20 77 61 74 63 68 0a 09 7d  -cursor watch..}
2c410 0a 09 6c 61 70 70 65 6e 64 20 57 61 69 74 53 74  ..lappend WaitSt
2c420 61 74 65 5f 73 61 76 65 63 75 72 73 6f 72 73 20  ate_savecursors 
2c430 5b 24 77 20 63 67 65 74 20 2d 63 75 72 73 6f 72  [$w cget -cursor
2c440 5d 20 20 0a 09 24 77 20 63 6f 6e 66 69 67 75 72  ]  ..$w configur
2c450 65 20 2d 63 75 72 73 6f 72 20 77 61 74 63 68 0a  e -cursor watch.
2c460 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20 74 6f 70  .if { [winfo top
2c470 6c 65 76 65 6c 20 24 77 5d 20 21 3d 20 24 77 20  level $w] != $w 
2c480 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64  } {..    lappend
2c490 20 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63   WaitState_savec
2c4a0 75 72 73 6f 72 73 20 5b 5b 77 69 6e 66 6f 20 74  ursors [[winfo t
2c4b0 6f 70 6c 65 76 65 6c 20 24 77 5d 20 63 67 65 74  oplevel $w] cget
2c4c0 20 2d 63 75 72 73 6f 72 5d 20 20 0a 09 20 20 20   -cursor]  ..   
2c4d0 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c   [winfo toplevel
2c4e0 20 24 77 5d 20 63 6f 6e 66 69 67 75 72 65 20 2d   $w] configure -
2c4f0 63 75 72 73 6f 72 20 77 61 74 63 68 0a 09 7d 0a  cursor watch..}.
2c500 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66      } else {..if
2c510 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73   { ![info exists
2c520 20 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63   WaitState_savec
2c530 75 72 73 6f 72 73 5d 20 7d 20 7b 20 72 65 74 75  ursors] } { retu
2c540 72 6e 20 7d 0a 09 73 65 74 20 69 64 78 20 2d 31  rn }..set idx -1
2c550 0a 09 24 74 65 78 74 20 63 6f 6e 66 69 67 75 72  ..$text configur
2c560 65 20 2d 63 75 72 73 6f 72 20 5b 6c 69 6e 64 65  e -cursor [linde
2c570 78 20 24 57 61 69 74 53 74 61 74 65 5f 73 61 76  x $WaitState_sav
2c580 65 63 75 72 73 6f 72 73 20 5b 69 6e 63 72 20 69  ecursors [incr i
2c590 64 78 5d 5d 0a 09 69 66 20 7b 20 5b 77 69 6e 66  dx]]..if { [winf
2c5a0 6f 20 65 78 69 73 74 73 20 24 6c 69 73 74 62 6f  o exists $listbo
2c5b0 78 5d 20 7d 20 7b 0a 09 20 20 20 20 24 6c 69 73  x] } {..    $lis
2c5c0 74 62 6f 78 20 63 6f 6e 66 69 67 75 72 65 20 2d  tbox configure -
2c5d0 63 75 72 73 6f 72 20 5b 6c 69 6e 64 65 78 20 24  cursor [lindex $
2c5e0 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 75  WaitState_savecu
2c5f0 72 73 6f 72 73 20 5b 69 6e 63 72 20 69 64 78 5d  rsors [incr idx]
2c600 5d 0a 09 7d 0a 09 24 77 20 63 6f 6e 66 69 67 75  ]..}..$w configu
2c610 72 65 20 2d 63 75 72 73 6f 72 20 5b 6c 69 6e 64  re -cursor [lind
2c620 65 78 20 24 57 61 69 74 53 74 61 74 65 5f 73 61  ex $WaitState_sa
2c630 76 65 63 75 72 73 6f 72 73 20 5b 69 6e 63 72 20  vecursors [incr 
2c640 69 64 78 5d 5d 0a 09 69 66 20 7b 20 5b 77 69 6e  idx]]..if { [win
2c650 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 77 5d 20  fo toplevel $w] 
2c660 21 3d 20 24 77 20 7d 20 7b 0a 09 20 20 20 20 5b  != $w } {..    [
2c670 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24  winfo toplevel $
2c680 77 5d 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 75  w] configure -cu
2c690 72 73 6f 72 20 5b 6c 69 6e 64 65 78 20 24 57 61  rsor [lindex $Wa
2c6a0 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 73  itState_savecurs
2c6b0 6f 72 73 20 5b 69 6e 63 72 20 69 64 78 5d 5d 0a  ors [incr idx]].
2c6c0 09 7d 0a 09 75 6e 73 65 74 20 57 61 69 74 53 74  .}..unset WaitSt
2c6d0 61 74 65 5f 73 61 76 65 63 75 72 73 6f 72 73 0a  ate_savecursors.
2c6e0 20 20 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65      }.    update
2c6f0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
2c700 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 43 6c 65  gger::TextOutCle
2c710 61 72 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69  ar {} {.    vari
2c720 61 62 6c 65 20 74 65 78 74 4f 55 54 0a 0a 20 20  able textOUT..  
2c730 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78    if { ![info ex
2c740 69 73 74 73 20 74 65 78 74 4f 55 54 5d 20 7c 7c  ists textOUT] ||
2c750 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20   ![winfo exists 
2c760 24 74 65 78 74 4f 55 54 5d 20 7d 20 7b 20 72 65  $textOUT] } { re
2c770 74 75 72 6e 20 7d 0a 0a 20 20 20 20 24 74 65 78  turn }..    $tex
2c780 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74 65  tOUT conf -state
2c790 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 24 74 65 78   normal.    $tex
2c7a0 74 4f 55 54 20 64 65 6c 20 31 2e 30 20 65 6e 64  tOUT del 1.0 end
2c7b0 0a 20 20 20 20 24 74 65 78 74 4f 55 54 20 63 6f  .    $textOUT co
2c7c0 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c  nf -state disabl
2c7d0 65 64 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65  ed.}..proc RamDe
2c7e0 62 75 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 49  bugger::TextOutI
2c7f0 6e 73 65 72 74 20 7b 20 64 61 74 61 20 7d 20 7b  nsert { data } {
2c800 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
2c810 78 74 4f 55 54 0a 0a 20 20 20 20 69 66 20 7b 20  xtOUT..    if { 
2c820 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  ![info exists te
2c830 78 74 4f 55 54 5d 20 7c 7c 20 21 5b 77 69 6e 66  xtOUT] || ![winf
2c840 6f 20 65 78 69 73 74 73 20 24 74 65 78 74 4f 55  o exists $textOU
2c850 54 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a  T] } { return }.
2c860 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 2d 20  .    foreach "- 
2c870 79 65 6e 64 22 20 5b 24 74 65 78 74 4f 55 54 20  yend" [$textOUT 
2c880 79 76 69 65 77 5d 20 62 72 65 61 6b 0a 20 20 20  yview] break.   
2c890 20 24 74 65 78 74 4f 55 54 20 63 6f 6e 66 20 2d   $textOUT conf -
2c8a0 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20  state normal.   
2c8b0 20 66 6f 72 65 61 63 68 20 69 20 5b 3a 3a 74 65   foreach i [::te
2c8c0 78 74 75 74 69 6c 3a 3a 73 70 6c 69 74 78 20 20  xtutil::splitx  
2c8d0 24 64 61 74 61 20 7b 28 5c 6e 29 28 3f 21 24 29  $data {(\n)(?!$)
2c8e0 7d 5d 20 7b 0a 09 54 65 78 74 49 6e 73 65 72 74  }] {..TextInsert
2c8f0 41 6e 64 57 72 61 70 20 24 74 65 78 74 4f 55 54  AndWrap $textOUT
2c900 20 22 24 69 22 20 32 30 30 0a 09 69 66 20 7b 20   "$i" 200..if { 
2c910 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 74  [info commands t
2c920 6b 63 6f 6e 5f 70 75 74 73 5d 20 21 3d 20 22 22  kcon_puts] != ""
2c930 20 7d 20 7b 20 63 61 74 63 68 20 7b 20 74 6b 63   } { catch { tkc
2c940 6f 6e 5f 70 75 74 73 20 22 24 69 22 20 7d 20 7d  on_puts "$i" } }
2c950 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24 74 65 78  .    }..    $tex
2c960 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74 65  tOUT conf -state
2c970 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 69 66   disabled.    if
2c980 20 7b 20 24 79 65 6e 64 20 3d 3d 20 31 20 7d 20   { $yend == 1 } 
2c990 7b 20 24 74 65 78 74 4f 55 54 20 79 76 69 65 77  { $textOUT yview
2c9a0 20 6d 6f 76 65 74 6f 20 31 20 7d 0a 7d 0a 0a 70   moveto 1 }.}..p
2c9b0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
2c9c0 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65  :TextOutInsertRe
2c9d0 64 20 7b 20 64 61 74 61 20 7d 20 7b 0a 20 20 20  d { data } {.   
2c9e0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 4f 55   variable textOU
2c9f0 54 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e  T..    if { ![in
2ca00 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 4f 55  fo exists textOU
2ca10 54 5d 20 7c 7c 20 21 5b 77 69 6e 66 6f 20 65 78  T] || ![winfo ex
2ca20 69 73 74 73 20 24 74 65 78 74 4f 55 54 5d 20 7d  ists $textOUT] }
2ca30 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20   { return }..   
2ca40 20 66 6f 72 65 61 63 68 20 22 2d 20 79 65 6e 64   foreach "- yend
2ca50 22 20 5b 24 74 65 78 74 4f 55 54 20 79 76 69 65  " [$textOUT yvie
2ca60 77 5d 20 62 72 65 61 6b 0a 20 20 20 20 24 74 65  w] break.    $te
2ca70 78 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74  xtOUT conf -stat
2ca80 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 66 6f 72  e normal.    for
2ca90 65 61 63 68 20 69 20 5b 3a 3a 74 65 78 74 75 74  each i [::textut
2caa0 69 6c 3a 3a 73 70 6c 69 74 78 20 20 24 64 61 74  il::splitx  $dat
2cab0 61 20 7b 28 5c 6e 29 28 3f 21 24 29 7d 5d 20 7b  a {(\n)(?!$)}] {
2cac0 0a 09 54 65 78 74 49 6e 73 65 72 74 41 6e 64 57  ..TextInsertAndW
2cad0 72 61 70 20 24 74 65 78 74 4f 55 54 20 22 24 69  rap $textOUT "$i
2cae0 22 20 32 30 30 20 72 65 64 0a 09 69 66 20 7b 20  " 200 red..if { 
2caf0 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 74  [info commands t
2cb00 6b 63 6f 6e 5f 70 75 74 73 5d 20 21 3d 20 22 22  kcon_puts] != ""
2cb10 20 7d 20 7b 20 63 61 74 63 68 20 7b 20 74 6b 63   } { catch { tkc
2cb20 6f 6e 5f 70 75 74 73 20 73 74 64 65 72 72 20 22  on_puts stderr "
2cb30 24 69 22 20 7d 20 7d 0a 20 20 20 20 7d 0a 20 20  $i" } }.    }.  
2cb40 20 20 24 74 65 78 74 4f 55 54 20 74 61 67 20 63    $textOUT tag c
2cb50 6f 6e 66 69 67 75 72 65 20 72 65 64 20 2d 66 6f  onfigure red -fo
2cb60 72 65 67 72 6f 75 6e 64 20 72 65 64 0a 20 20 20  reground red.   
2cb70 20 24 74 65 78 74 4f 55 54 20 63 6f 6e 66 20 2d   $textOUT conf -
2cb80 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 0a 20  state disabled. 
2cb90 20 20 20 69 66 20 7b 20 24 79 65 6e 64 20 3d 3d     if { $yend ==
2cba0 20 31 20 7d 20 7b 20 24 74 65 78 74 4f 55 54 20   1 } { $textOUT 
2cbb0 79 76 69 65 77 20 6d 6f 76 65 74 6f 20 31 20 7d  yview moveto 1 }
2cbc0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
2cbd0 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 49 6e 73  gger::TextOutIns
2cbe0 65 72 74 42 6c 75 65 20 7b 20 64 61 74 61 20 7d  ertBlue { data }
2cbf0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
2cc00 74 65 78 74 4f 55 54 0a 0a 20 20 20 20 69 66 20  textOUT..    if 
2cc10 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
2cc20 74 65 78 74 4f 55 54 5d 20 7c 7c 20 21 5b 77 69  textOUT] || ![wi
2cc30 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65 78 74  nfo exists $text
2cc40 4f 55 54 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20  OUT] } { return 
2cc50 7d 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22  }..    foreach "
2cc60 2d 20 79 65 6e 64 22 20 5b 24 74 65 78 74 4f 55  - yend" [$textOU
2cc70 54 20 79 76 69 65 77 5d 20 62 72 65 61 6b 0a 20  T yview] break. 
2cc80 20 20 20 24 74 65 78 74 4f 55 54 20 63 6f 6e 66     $textOUT conf
2cc90 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20   -state normal. 
2cca0 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 3a 3a     foreach i [::
2ccb0 74 65 78 74 75 74 69 6c 3a 3a 73 70 6c 69 74 78  textutil::splitx
2ccc0 20 20 24 64 61 74 61 20 7b 28 5c 6e 29 28 3f 21    $data {(\n)(?!
2ccd0 24 29 7d 5d 20 7b 0a 09 54 65 78 74 49 6e 73 65  $)}] {..TextInse
2cce0 72 74 41 6e 64 57 72 61 70 20 24 74 65 78 74 4f  rtAndWrap $textO
2ccf0 55 54 20 22 24 69 22 20 32 30 30 20 62 6c 75 65  UT "$i" 200 blue
2cd00 0a 20 20 20 20 7d 0a 20 20 20 20 24 74 65 78 74  .    }.    $text
2cd10 4f 55 54 20 74 61 67 20 63 6f 6e 66 69 67 75 72  OUT tag configur
2cd20 65 20 62 6c 75 65 20 2d 66 6f 72 65 67 72 6f 75  e blue -foregrou
2cd30 6e 64 20 62 6c 75 65 0a 20 20 20 20 24 74 65 78  nd blue.    $tex
2cd40 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74 65  tOUT conf -state
2cd50 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 69 66   disabled.    if
2cd60 20 7b 20 24 79 65 6e 64 20 3d 3d 20 31 20 7d 20   { $yend == 1 } 
2cd70 7b 20 24 74 65 78 74 4f 55 54 20 79 76 69 65 77  { $textOUT yview
2cd80 20 6d 6f 76 65 74 6f 20 31 20 7d 0a 7d 0a 0a 70   moveto 1 }.}..p
2cd90 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
2cda0 3a 54 65 78 74 43 6f 6d 70 47 65 74 20 7b 7d 20  :TextCompGet {} 
2cdb0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  {.    variable t
2cdc0 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 69 66 20  extCOMP..    if 
2cdd0 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
2cde0 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20 21 5b 77  textCOMP] || ![w
2cdf0 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65 78  info exists $tex
2ce00 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65 74 75 72  tCOMP] } { retur
2ce10 6e 20 22 22 20 7d 0a 20 20 20 20 72 65 74 75 72  n "" }.    retur
2ce20 6e 20 5b 24 74 65 78 74 43 4f 4d 50 20 67 65 74  n [$textCOMP get
2ce30 20 31 2e 30 20 65 6e 64 2d 31 63 5d 0a 7d 0a 0a   1.0 end-1c].}..
2ce40 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72  proc RamDebugger
2ce50 3a 3a 54 65 78 74 43 6f 6d 70 43 6c 65 61 72 20  ::TextCompClear 
2ce60 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c  {} {.    variabl
2ce70 65 20 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20  e textCOMP..    
2ce80 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73  if { ![info exis
2ce90 74 73 20 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20  ts textCOMP] || 
2cea0 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24  ![winfo exists $
2ceb0 74 65 78 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65  textCOMP] } { re
2cec0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 24 74 65 78  turn }..    $tex
2ced0 74 43 4f 4d 50 20 63 6f 6e 66 20 2d 73 74 61 74  tCOMP conf -stat
2cee0 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 24 74 65  e normal.    $te
2cef0 78 74 43 4f 4d 50 20 64 65 6c 20 31 2e 30 20 65  xtCOMP del 1.0 e
2cf00 6e 64 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  nd.    $textCOMP
2cf10 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73   conf -state dis
2cf20 61 62 6c 65 64 0a 7d 0a 0a 70 72 6f 63 20 52 61  abled.}..proc Ra
2cf30 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 49  mDebugger::TextI
2cf40 6e 73 65 72 74 41 6e 64 57 72 61 70 20 7b 20 74  nsertAndWrap { t
2cf50 65 78 74 20 64 61 74 61 20 7b 20 6d 61 78 6c 65  ext data { maxle
2cf60 6e 20 38 30 20 7d 20 7b 20 74 61 67 20 22 22 20  n 80 } { tag "" 
2cf70 7d 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 74  } } {..    set t
2cf80 6f 6c 65 72 61 6e 63 65 20 32 30 0a 20 20 20 20  olerance 20.    
2cf90 69 66 20 7b 20 24 6d 61 78 6c 65 6e 20 3c 20 33  if { $maxlen < 3
2cfa0 30 20 7d 20 7b 20 73 65 74 20 74 6f 6c 65 72 61  0 } { set tolera
2cfb0 6e 63 65 20 35 20 7d 0a 20 20 20 20 77 68 69 6c  nce 5 }.    whil
2cfc0 65 20 31 20 7b 0a 09 66 6f 72 65 61 63 68 20 22  e 1 {..foreach "
2cfd0 6c 69 6e 65 20 70 6f 73 22 20 5b 73 63 61 6e 20  line pos" [scan 
2cfe0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 65 6e 64  [$text index end
2cff0 5d 20 22 25 64 2e 25 64 22 5d 20 62 72 65 61 6b  ] "%d.%d"] break
2d000 0a 09 69 66 20 7b 20 24 70 6f 73 2b 5b 73 74 72  ..if { $pos+[str
2d010 69 6e 67 20 6c 65 6e 67 74 68 20 24 64 61 74 61  ing length $data
2d020 5d 20 3c 3d 20 24 6d 61 78 6c 65 6e 20 7d 20 7b  ] <= $maxlen } {
2d030 0a 09 20 20 20 20 69 66 20 7b 20 24 74 61 67 20  ..    if { $tag 
2d040 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 24 74 65 78  == "" } {...$tex
2d050 74 20 69 6e 73 65 72 74 20 65 6e 64 20 24 64 61  t insert end $da
2d060 74 61 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b  ta..    } else {
2d070 0a 09 09 24 74 65 78 74 20 69 6e 73 65 72 74 20  ...$text insert 
2d080 65 6e 64 20 24 64 61 74 61 20 24 74 61 67 0a 09  end $data $tag..
2d090 20 20 20 20 7d 0a 09 20 20 20 20 62 72 65 61 6b      }..    break
2d0a0 0a 09 7d 0a 09 73 65 74 20 66 6f 75 6e 64 20 30  ..}..set found 0
2d0b0 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 5b 65  ..for { set i [e
2d0c0 78 70 72 20 24 6d 61 78 6c 65 6e 2d 24 70 6f 73  xpr $maxlen-$pos
2d0d0 5d 20 7d 20 7b 20 24 69 20 3e 3d 20 24 6d 61 78  ] } { $i >= $max
2d0e0 6c 65 6e 2d 24 70 6f 73 2d 24 74 6f 6c 65 72 61  len-$pos-$tolera
2d0f0 6e 63 65 20 7d 20 7b 20 69 6e 63 72 20 69 20 2d  nce } { incr i -
2d100 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20  1 } {..    if { 
2d110 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 64  [string index $d
2d120 61 74 61 20 24 69 5d 20 3d 3d 20 22 20 22 20 7d  ata $i] == " " }
2d130 20 7b 0a 09 09 73 65 74 20 66 6f 75 6e 64 20 31   {...set found 1
2d140 0a 09 09 62 72 65 61 6b 0a 09 20 20 20 20 7d 0a  ...break..    }.
2d150 09 7d 0a 09 69 66 20 7b 20 24 66 6f 75 6e 64 20  .}..if { $found 
2d160 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 74  } {..    if { $t
2d170 61 67 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 24  ag == "" } {...$
2d180 74 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20  text insert end 
2d190 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24  "[string range $
2d1a0 64 61 74 61 20 30 20 24 69 5d 5c 6e 20 20 22 0a  data 0 $i]\n  ".
2d1b0 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
2d1c0 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64  $text insert end
2d1d0 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20   "[string range 
2d1e0 24 64 61 74 61 20 30 20 24 69 5d 5c 6e 20 20 22  $data 0 $i]\n  "
2d1f0 20 24 74 61 67 20 20 20 20 20 20 20 20 20 0a 09   $tag         ..
2d200 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 64      }..    set d
2d210 61 74 61 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  ata [string rang
2d220 65 20 24 64 61 74 61 20 5b 65 78 70 72 20 24 69  e $data [expr $i
2d230 2b 31 5d 20 65 6e 64 5d 0a 09 7d 20 65 6c 73 65  +1] end]..} else
2d240 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 74 61   {..    if { $ta
2d250 67 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 24 74  g == "" } {...$t
2d260 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  ext insert end "
2d270 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 64  [string range $d
2d280 61 74 61 20 30 20 5b 65 78 70 72 20 24 6d 61 78  ata 0 [expr $max
2d290 6c 65 6e 2d 24 70 6f 73 5d 5d 5c 6e 20 20 22 0a  len-$pos]]\n  ".
2d2a0 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
2d2b0 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64  $text insert end
2d2c0 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20   "[string range 
2d2d0 24 64 61 74 61 20 30 20 5b 65 78 70 72 20 24 6d  $data 0 [expr $m
2d2e0 61 78 6c 65 6e 2d 24 70 6f 73 5d 5d 5c 6e 20 20  axlen-$pos]]\n  
2d2f0 22 20 24 74 61 67 0a 09 20 20 20 20 7d 0a 09 20  " $tag..    }.. 
2d300 20 20 20 73 65 74 20 64 61 74 61 20 5b 73 74 72     set data [str
2d310 69 6e 67 20 72 61 6e 67 65 20 24 64 61 74 61 20  ing range $data 
2d320 5b 65 78 70 72 20 24 6d 61 78 6c 65 6e 2d 24 70  [expr $maxlen-$p
2d330 6f 73 2b 31 5d 20 65 6e 64 5d 0a 09 7d 0a 20 20  os+1] end]..}.  
2d340 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44    }.}..proc RamD
2d350 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d  ebugger::TextCom
2d360 70 49 6e 73 65 72 74 20 7b 20 64 61 74 61 20 7d  pInsert { data }
2d370 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
2d380 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 69 66  textCOMP..    if
2d390 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73   { ![info exists
2d3a0 20 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20 21 5b   textCOMP] || ![
2d3b0 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65  winfo exists $te
2d3c0 78 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65 74 75  xtCOMP] } { retu
2d3d0 72 6e 20 7d 0a 0a 20 20 20 20 66 6f 72 65 61 63  rn }..    foreac
2d3e0 68 20 22 2d 20 79 65 6e 64 22 20 5b 24 74 65 78  h "- yend" [$tex
2d3f0 74 43 4f 4d 50 20 79 76 69 65 77 5d 20 62 72 65  tCOMP yview] bre
2d400 61 6b 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  ak.    $textCOMP
2d410 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72   conf -state nor
2d420 6d 61 6c 0a 20 20 20 20 54 65 78 74 49 6e 73 65  mal.    TextInse
2d430 72 74 41 6e 64 57 72 61 70 20 24 74 65 78 74 43  rtAndWrap $textC
2d440 4f 4d 50 20 24 64 61 74 61 0a 20 20 20 20 24 74  OMP $data.    $t
2d450 65 78 74 43 4f 4d 50 20 63 6f 6e 66 20 2d 73 74  extCOMP conf -st
2d460 61 74 65 20 64 69 73 61 62 6c 65 64 0a 20 20 20  ate disabled.   
2d470 20 69 66 20 7b 20 24 79 65 6e 64 20 3d 3d 20 31   if { $yend == 1
2d480 20 7d 20 7b 20 24 74 65 78 74 43 4f 4d 50 20 79   } { $textCOMP y
2d490 76 69 65 77 20 6d 6f 76 65 74 6f 20 31 20 7d 0a  view moveto 1 }.
2d4a0 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
2d4b0 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73  ger::TextCompIns
2d4c0 65 72 74 52 65 64 20 7b 20 64 61 74 61 20 7d 20  ertRed { data } 
2d4d0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  {.    variable t
2d4e0 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 69 66 20  extCOMP..    if 
2d4f0 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
2d500 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20 21 5b 77  textCOMP] || ![w
2d510 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65 78  info exists $tex
2d520 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65 74 75 72  tCOMP] } { retur
2d530 6e 20 7d 0a 0a 20 20 20 20 66 6f 72 65 61 63 68  n }..    foreach
2d540 20 22 2d 20 79 65 6e 64 22 20 5b 24 74 65 78 74   "- yend" [$text
2d550 43 4f 4d 50 20 79 76 69 65 77 5d 20 62 72 65 61  COMP yview] brea
2d560 6b 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50 20  k.    $textCOMP 
2d570 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72 6d  conf -state norm
2d580 61 6c 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  al.    $textCOMP
2d590 20 69 6e 73 20 65 6e 64 20 24 64 61 74 61 20 72   ins end $data r
2d5a0 65 64 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  ed.    $textCOMP
2d5b0 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 72   tag configure r
2d5c0 65 64 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 72  ed -foreground r
2d5d0 65 64 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  ed.    $textCOMP
2d5e0 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73   conf -state dis
2d5f0 61 62 6c 65 64 0a 20 20 20 20 69 66 20 7b 20 24  abled.    if { $
2d600 79 65 6e 64 20 3d 3d 20 31 20 7d 20 7b 20 24 74  yend == 1 } { $t
2d610 65 78 74 43 4f 4d 50 20 79 76 69 65 77 20 6d 6f  extCOMP yview mo
2d620 76 65 74 6f 20 31 20 7d 0a 7d 0a 0a 0a 70 72 6f  veto 1 }.}...pro
2d630 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 50  c RamDebugger::P
2d640 72 6f 67 72 65 73 73 56 61 72 20 7b 20 76 61 6c  rogressVar { val
2d650 75 65 20 7b 20 63 61 6e 73 74 6f 70 20 30 20 7d  ue { canstop 0 }
2d660 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
2d670 65 20 70 72 6f 67 72 65 73 73 76 61 72 0a 20 20  e progressvar.  
2d680 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
2d690 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 69      variable mai
2d6a0 6e 66 72 61 6d 65 0a 20 20 20 20 76 61 72 69 61  nframe.    varia
2d6b0 62 6c 65 20 6c 61 62 65 6c 5f 66 6f 72 5f 50 72  ble label_for_Pr
2d6c0 6f 67 72 65 73 73 56 61 72 0a 0a 20 20 20 20 69  ogressVar..    i
2d6d0 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74  f { ![info exist
2d6e0 73 20 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67  s label_for_Prog
2d6f0 72 65 73 73 56 61 72 5d 20 7d 20 7b 20 73 65 74  ressVar] } { set
2d700 20 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 72   label_for_Progr
2d710 65 73 73 56 61 72 20 22 22 20 7d 0a 0a 20 20 20  essVar "" }..   
2d720 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73   if { [info exis
2d730 74 73 20 70 72 6f 67 72 65 73 73 76 61 72 5d 20  ts progressvar] 
2d740 26 26 20 24 70 72 6f 67 72 65 73 73 76 61 72 20  && $progressvar 
2d750 3d 3d 20 2d 32 20 7d 20 7b 0a 09 73 65 74 20 52  == -2 } {..set R
2d760 61 6d 44 65 62 75 67 67 65 72 3a 3a 70 72 6f 67  amDebugger::prog
2d770 72 65 73 73 76 61 72 20 2d 31 0a 09 69 66 20 7b  ressvar -1..if {
2d780 20 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24   [winfo exists $
2d790 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 72 65  label_for_Progre
2d7a0 73 73 56 61 72 5d 20 7d 20 7b 20 64 65 73 74 72  ssVar] } { destr
2d7b0 6f 79 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72  oy $label_for_Pr
2d7c0 6f 67 72 65 73 73 56 61 72 20 7d 0a 09 65 72 72  ogressVar }..err
2d7d0 6f 72 20 5b 5f 20 22 53 74 6f 70 20 61 74 20 75  or [_ "Stop at u
2d7e0 73 65 72 20 64 65 6d 61 6e 64 22 5d 0a 20 20 20  ser demand"].   
2d7f0 20 7d 0a 0a 20 20 20 20 73 65 74 20 70 72 6f 67   }..    set prog
2d800 72 65 73 73 76 61 72 20 24 76 61 6c 75 65 0a 0a  ressvar $value..
2d810 20 20 20 20 69 66 20 7b 20 24 63 61 6e 73 74 6f      if { $cansto
2d820 70 20 3d 3d 20 31 20 26 26 20 24 76 61 6c 75 65  p == 1 && $value
2d830 20 3d 3d 20 30 20 7d 20 7b 0a 09 69 66 20 7b 20   == 0 } {..if { 
2d840 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 6c  [winfo exists $l
2d850 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 72 65 73  abel_for_Progres
2d860 73 56 61 72 5d 20 7d 20 7b 20 64 65 73 74 72 6f  sVar] } { destro
2d870 79 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f  y $label_for_Pro
2d880 67 72 65 73 73 56 61 72 20 7d 0a 0a 09 73 65 74  gressVar }...set
2d890 20 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 72   label_for_Progr
2d8a0 65 73 73 56 61 72 20 5b 24 6d 61 69 6e 66 72 61  essVar [$mainfra
2d8b0 6d 65 20 61 64 64 69 6e 64 69 63 61 74 6f 72 20  me addindicator 
2d8c0 2d 74 65 78 74 20 5b 5f 20 22 57 61 69 74 20 70  -text [_ "Wait p
2d8d0 6c 65 61 73 65 22 5d 2e 2e 2e 5d 0a 09 62 69 6e  lease"]...]..bin
2d8e0 64 74 61 67 73 20 24 6c 61 62 65 6c 5f 66 6f 72  dtags $label_for
2d8f0 5f 50 72 6f 67 72 65 73 73 56 61 72 20 5b 6c 69  _ProgressVar [li
2d900 73 74 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72  st $label_for_Pr
2d910 6f 67 72 65 73 73 56 61 72 5d 0a 09 66 6f 63 75  ogressVar]..focu
2d920 73 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f  s $label_for_Pro
2d930 67 72 65 73 73 56 61 72 0a 09 23 20 63 61 74 63  gressVar..# catc
2d940 68 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 62  h is necessary b
2d950 65 63 61 75 73 65 20 69 74 20 66 61 69 6c 73 20  ecause it fails 
2d960 69 6e 20 4c 69 6e 75 78 20 28 69 74 20 73 61 79  in Linux (it say
2d970 73 20 77 69 6e 64 6f 77 20 6e 65 65 64 73 20 74  s window needs t
2d980 6f 20 62 65 20 76 69 65 77 61 62 6c 65 29 0a 09  o be viewable)..
2d990 63 61 74 63 68 20 7b 67 72 61 62 20 2d 67 6c 6f  catch {grab -glo
2d9a0 62 61 6c 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50  bal $label_for_P
2d9b0 72 6f 67 72 65 73 73 56 61 72 7d 0a 0a 09 62 69  rogressVar}...bi
2d9c0 6e 64 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72  nd $label_for_Pr
2d9d0 6f 67 72 65 73 73 56 61 72 20 3c 45 73 63 61 70  ogressVar <Escap
2d9e0 65 3e 20 22 73 65 74 20 52 61 6d 44 65 62 75 67  e> "set RamDebug
2d9f0 67 65 72 3a 3a 70 72 6f 67 72 65 73 73 76 61 72  ger::progressvar
2da00 20 2d 32 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20   -2".    }..    
2da10 69 66 20 7b 20 24 76 61 6c 75 65 20 3d 3d 20 31  if { $value == 1
2da20 30 30 20 7d 20 7b 0a 09 61 66 74 65 72 20 31 30  00 } {..after 10
2da30 30 30 20 73 65 74 20 52 61 6d 44 65 62 75 67 67  00 set RamDebugg
2da40 65 72 3a 3a 70 72 6f 67 72 65 73 73 76 61 72 20  er::progressvar 
2da50 2d 31 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20  -1..if { [winfo 
2da60 65 78 69 73 74 73 20 24 6c 61 62 65 6c 5f 66 6f  exists $label_fo
2da70 72 5f 50 72 6f 67 72 65 73 73 56 61 72 5d 20 7d  r_ProgressVar] }
2da80 20 7b 20 64 65 73 74 72 6f 79 20 24 6c 61 62 65   { destroy $labe
2da90 6c 5f 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61  l_for_ProgressVa
2daa0 72 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 75 70  r }.    }.    up
2dab0 64 61 74 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d  date.}..proc Ram
2dac0 44 65 62 75 67 67 65 72 3a 3a 53 65 74 4d 65 73  Debugger::SetMes
2dad0 73 61 67 65 20 7b 20 6d 65 73 73 20 7d 20 7b 0a  sage { mess } {.
2dae0 20 20 20 20 76 61 72 69 61 62 6c 65 20 73 74 61      variable sta
2daf0 74 75 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65  tus.    variable
2db00 20 61 66 74 65 72 69 64 5f 66 6f 72 6d 65 73 73   afterid_formess
2db10 61 67 65 0a 0a 20 20 20 20 61 66 74 65 72 20 63  age..    after c
2db20 61 6e 63 65 6c 20 24 61 66 74 65 72 69 64 5f 66  ancel $afterid_f
2db30 6f 72 6d 65 73 73 61 67 65 0a 20 20 20 20 73 65  ormessage.    se
2db40 74 20 73 74 61 74 75 73 20 24 6d 65 73 73 0a 20  t status $mess. 
2db50 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
2db60 74 20 61 66 74 65 72 69 64 5f 66 6f 72 6d 65 73  t afterid_formes
2db70 73 61 67 65 20 5b 61 66 74 65 72 20 35 30 30 30  sage [after 5000
2db80 20 7b 20 73 65 74 20 52 61 6d 44 65 62 75 67 67   { set RamDebugg
2db90 65 72 3a 3a 73 74 61 74 75 73 20 22 22 20 7d 5d  er::status "" }]
2dba0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
2dbb0 67 67 65 72 3a 3a 53 65 74 4d 65 73 73 61 67 65  gger::SetMessage
2dbc0 46 6c 61 73 68 20 7b 20 6d 65 73 73 20 7b 20 74  Flash { mess { t
2dbd0 69 6d 65 20 37 30 30 30 20 7d 20 7d 20 7b 0a 20  ime 7000 } } {. 
2dbe0 20 20 20 76 61 72 69 61 62 6c 65 20 73 74 61 74     variable stat
2dbf0 75 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  us.    variable 
2dc00 61 66 74 65 72 69 64 5f 66 6f 72 6d 65 73 73 61  afterid_formessa
2dc10 67 65 0a 0a 20 20 20 20 61 66 74 65 72 20 63 61  ge..    after ca
2dc20 6e 63 65 6c 20 24 61 66 74 65 72 69 64 5f 66 6f  ncel $afterid_fo
2dc30 72 6d 65 73 73 61 67 65 0a 0a 20 20 20 20 69 66  rmessage..    if
2dc40 20 7b 20 24 73 74 61 74 75 73 20 3d 3d 20 22 22   { $status == ""
2dc50 20 7d 20 7b 0a 09 73 65 74 20 73 74 61 74 75 73   } {..set status
2dc60 20 24 6d 65 73 73 0a 20 20 20 20 7d 20 65 6c 73   $mess.    } els
2dc70 65 20 7b 20 73 65 74 20 73 74 61 74 75 73 20 22  e { set status "
2dc80 22 20 7d 0a 0a 20 20 20 20 69 6e 63 72 20 74 69  " }..    incr ti
2dc90 6d 65 20 2d 33 30 30 0a 20 20 20 20 69 66 20 7b  me -300.    if {
2dca0 20 24 74 69 6d 65 20 3c 3d 20 30 20 7d 20 7b 0a   $time <= 0 } {.
2dcb0 09 73 65 74 20 73 74 61 74 75 73 20 22 22 0a 20  .set status "". 
2dcc0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74     } else {..set
2dcd0 20 61 66 74 65 72 69 64 5f 66 6f 72 6d 65 73 73   afterid_formess
2dce0 61 67 65 20 5b 61 66 74 65 72 20 33 30 30 20 5b  age [after 300 [
2dcf0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
2dd00 3a 3a 53 65 74 4d 65 73 73 61 67 65 46 6c 61 73  ::SetMessageFlas
2dd10 68 20 24 6d 65 73 73 20 24 74 69 6d 65 5d 5d 0a  h $mess $time]].
2dd20 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61      }.}..proc Ra
2dd30 6d 44 65 62 75 67 67 65 72 3a 3a 47 69 76 65 4c  mDebugger::GiveL
2dd40 69 73 74 42 6f 78 49 74 65 6d 4e 61 6d 65 20 7b  istBoxItemName {
2dd50 20 6c 69 73 74 62 6f 78 20 73 74 72 69 6e 67 20   listbox string 
2dd60 7d 20 7b 0a 0a 20 20 20 20 72 65 67 73 75 62 20  } {..    regsub 
2dd70 2d 61 6c 6c 20 7b 5c 57 7d 20 24 73 74 72 69 6e  -all {\W} $strin
2dd80 67 20 5f 20 69 74 65 6d 0a 0a 20 20 20 20 77 68  g _ item..    wh
2dd90 69 6c 65 20 7b 20 5b 24 6c 69 73 74 62 6f 78 20  ile { [$listbox 
2dda0 65 78 69 73 74 73 20 24 69 74 65 6d 5d 20 7d 20  exists $item] } 
2ddb0 7b 0a 09 61 70 70 65 6e 64 20 69 74 65 6d 20 5f  {..append item _
2ddc0 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
2ddd0 6e 20 24 69 74 65 6d 0a 7d 0a 0a 70 72 6f 63 20  n $item.}..proc 
2dde0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e  RamDebugger::Con
2ddf0 66 69 67 75 72 65 4c 61 62 65 6c 20 7b 20 6c 61  figureLabel { la
2de00 62 65 6c 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74  bel } {..    set
2de10 20 74 74 20 5b 24 6c 61 62 65 6c 20 63 67 65 74   tt [$label cget
2de20 20 2d 74 65 78 74 5d 0a 20 20 20 20 69 66 20 7b   -text].    if {
2de30 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22   [string match "
2de40 2e 2e 2e 2a 22 20 24 74 74 5d 20 7d 20 7b 0a 09  ...*" $tt] } {..
2de50 73 65 74 20 74 74 20 5b 24 6c 61 62 65 6c 20 63  set tt [$label c
2de60 67 65 74 20 2d 68 65 6c 70 74 65 78 74 5d 0a 20  get -helptext]. 
2de70 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 6c 77     }..    set lw
2de80 69 64 74 68 20 5b 65 78 70 72 20 5b 77 69 6e 66  idth [expr [winf
2de90 6f 20 77 69 64 74 68 20 24 6c 61 62 65 6c 5d 2d  o width $label]-
2dea0 35 5d 0a 20 20 20 20 69 66 20 7b 20 5b 66 6f 6e  5].    if { [fon
2deb0 74 20 6d 65 61 73 75 72 65 20 5b 24 6c 61 62 65  t measure [$labe
2dec0 6c 20 63 67 65 74 20 2d 66 6f 6e 74 5d 20 24 74  l cget -font] $t
2ded0 74 5d 20 3c 3d 20 24 6c 77 69 64 74 68 20 7d 20  t] <= $lwidth } 
2dee0 7b 0a 09 24 6c 61 62 65 6c 20 63 6f 6e 66 69 67  {..$label config
2def0 75 72 65 20 2d 74 65 78 74 20 24 74 74 20 2d 68  ure -text $tt -h
2df00 65 6c 70 74 65 78 74 20 22 22 0a 20 20 20 20 7d  elptext "".    }
2df10 20 65 6c 73 65 20 7b 0a 09 24 6c 61 62 65 6c 20   else {..$label 
2df20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 6c 70 74  configure -helpt
2df30 65 78 74 20 24 74 74 0a 09 77 68 69 6c 65 20 7b  ext $tt..while {
2df40 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
2df50 24 74 74 5d 20 3e 20 33 20 7d 20 7b 0a 09 20 20  $tt] > 3 } {..  
2df60 20 20 73 65 74 20 74 74 20 5b 73 74 72 69 6e 67    set tt [string
2df70 20 72 61 6e 67 65 20 24 74 74 20 31 20 65 6e 64   range $tt 1 end
2df80 5d 0a 09 20 20 20 20 69 66 20 7b 20 5b 66 6f 6e  ]..    if { [fon
2df90 74 20 6d 65 61 73 75 72 65 20 5b 24 6c 61 62 65  t measure [$labe
2dfa0 6c 20 63 67 65 74 20 2d 66 6f 6e 74 5d 20 2e 2e  l cget -font] ..
2dfb0 2e 24 74 74 5d 20 3c 3d 20 24 6c 77 69 64 74 68  .$tt] <= $lwidth
2dfc0 20 7d 20 7b 0a 09 09 62 72 65 61 6b 0a 09 20 20   } {...break..  
2dfd0 20 20 7d 0a 09 7d 0a 09 24 6c 61 62 65 6c 20 63    }..}..$label c
2dfe0 6f 6e 66 69 67 75 72 65 20 2d 74 65 78 74 20 2e  onfigure -text .
2dff0 2e 2e 24 74 74 0a 20 20 20 20 7d 0a 7d 0a 0a 70  ..$tt.    }.}..p
2e000 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
2e010 3a 4c 69 73 74 42 6f 78 4c 61 62 65 6c 4d 65 6e  :ListBoxLabelMen
2e020 75 20 7b 20 77 20 78 20 79 20 7d 20 7b 0a 20 20  u { w x y } {.  
2e030 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65    variable curre
2e040 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61  ntfile.    varia
2e050 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20  ble options.    
2e060 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 46  variable WindowF
2e070 69 6c 65 73 4c 69 73 74 0a 20 20 20 20 76 61 72  ilesList.    var
2e080 69 61 62 6c 65 20 74 6f 70 64 69 72 0a 0a 20 20  iable topdir..  
2e090 20 20 73 65 74 20 64 69 72 73 20 5b 6c 69 73 74    set dirs [list
2e0a0 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c   $options(defaul
2e0b0 74 64 69 72 29 5d 0a 20 20 20 20 73 65 74 20 73  tdir)].    set s
2e0c0 65 70 20 30 0a 20 20 20 20 69 66 20 7b 20 24 63  ep 0.    if { $c
2e0d0 75 72 72 65 6e 74 66 69 6c 65 20 21 3d 20 22 22  urrentfile != ""
2e0e0 20 26 26 20 5b 73 74 72 69 6e 67 20 69 6e 64 65   && [string inde
2e0f0 78 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 30  x $currentfile 0
2e100 5d 20 21 3d 20 22 2a 22 20 26 26 20 5c 0a 09 20  ] != "*" && \.. 
2e110 20 20 20 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d      [file dirnam
2e120 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 20  e $currentfile] 
2e130 21 3d 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61  != $options(defa
2e140 75 6c 74 64 69 72 29 20 7d 20 7b 0a 09 69 66 20  ultdir) } {..if 
2e150 7b 20 21 24 73 65 70 20 7d 20 7b 0a 09 20 20 20  { !$sep } {..   
2e160 20 6c 61 70 70 65 6e 64 20 64 69 72 73 20 2d 2d   lappend dirs --
2e170 2d 0a 09 20 20 20 20 73 65 74 20 73 65 70 20 31  -..    set sep 1
2e180 0a 09 7d 0a 09 6c 61 70 70 65 6e 64 20 64 69 72  ..}..lappend dir
2e190 73 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  s [file dirname 
2e1a0 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20  $currentfile].  
2e1b0 20 20 7d 0a 20 20 20 20 73 65 74 20 73 65 70 20    }.    set sep 
2e1c0 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  0.    foreach i 
2e1d0 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74  $WindowFilesList
2e1e0 20 7b 0a 09 73 65 74 20 64 69 72 20 5b 66 69 6c   {..set dir [fil
2e1f0 65 20 64 69 72 6e 61 6d 65 20 24 69 5d 0a 09 69  e dirname $i]..i
2e200 66 20 7b 20 24 64 69 72 20 21 3d 20 24 6f 70 74  f { $dir != $opt
2e210 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29  ions(defaultdir)
2e220 20 26 26 20 5b 6c 73 65 61 72 63 68 66 69 6c 65   && [lsearchfile
2e230 20 24 64 69 72 73 20 24 64 69 72 5d 20 3d 3d 20   $dirs $dir] == 
2e240 2d 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b  -1 } {..    if {
2e250 20 21 24 73 65 70 20 7d 20 7b 0a 09 09 6c 61 70   !$sep } {...lap
2e260 70 65 6e 64 20 64 69 72 73 20 2d 2d 2d 0a 09 09  pend dirs ---...
2e270 73 65 74 20 73 65 70 20 31 0a 09 20 20 20 20 7d  set sep 1..    }
2e280 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 69  ..    lappend di
2e290 72 73 20 24 64 69 72 0a 09 7d 0a 20 20 20 20 7d  rs $dir..}.    }
2e2a0 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66  ..    if { ![inf
2e2b0 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73  o exists options
2e2c0 28 52 65 63 65 6e 74 46 69 6c 65 73 29 5d 20 7d  (RecentFiles)] }
2e2d0 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28   {..set options(
2e2e0 52 65 63 65 6e 74 46 69 6c 65 73 29 20 22 22 0a  RecentFiles) "".
2e2f0 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 73 65      }.    set se
2e300 70 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20  p 0.    foreach 
2e310 69 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e  i $options(Recen
2e320 74 46 69 6c 65 73 29 20 7b 0a 09 73 65 74 20 64  tFiles) {..set d
2e330 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  ir [file dirname
2e340 20 24 69 5d 0a 09 69 66 20 7b 20 24 64 69 72 20   $i]..if { $dir 
2e350 21 3d 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61  != $options(defa
2e360 75 6c 74 64 69 72 29 20 26 26 20 5b 6c 73 65 61  ultdir) && [lsea
2e370 72 63 68 66 69 6c 65 20 24 64 69 72 73 20 24 64  rchfile $dirs $d
2e380 69 72 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20  ir] == -1 } {.. 
2e390 20 20 20 69 66 20 7b 20 21 24 73 65 70 20 7d 20     if { !$sep } 
2e3a0 7b 0a 09 09 6c 61 70 70 65 6e 64 20 64 69 72 73  {...lappend dirs
2e3b0 20 2d 2d 2d 0a 09 09 73 65 74 20 73 65 70 20 31   ---...set sep 1
2e3c0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 6c 61 70  ..    }..    lap
2e3d0 70 65 6e 64 20 64 69 72 73 20 24 64 69 72 0a 09  pend dirs $dir..
2e3e0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
2e3f0 73 65 70 20 30 0a 20 20 20 20 69 66 20 7b 20 24  sep 0.    if { $
2e400 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 20  topdir_external 
2e410 6e 65 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61  ne $options(defa
2e420 75 6c 74 64 69 72 29 20 26 26 20 5b 6c 73 65 61  ultdir) && [lsea
2e430 72 63 68 66 69 6c 65 20 24 64 69 72 73 20 24 74  rchfile $dirs $t
2e440 6f 70 64 69 72 5d 20 3d 3d 20 2d 31 20 7d 20 7b  opdir] == -1 } {
2e450 0a 09 69 66 20 7b 20 21 24 73 65 70 20 7d 20 7b  ..if { !$sep } {
2e460 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 69  ..    lappend di
2e470 72 73 20 2d 2d 2d 0a 09 20 20 20 20 73 65 74 20  rs ---..    set 
2e480 73 65 70 20 31 0a 09 7d 0a 09 6c 61 70 70 65 6e  sep 1..}..lappen
2e490 64 20 64 69 72 73 20 24 74 6f 70 64 69 72 5f 65  d dirs $topdir_e
2e4a0 78 74 65 72 6e 61 6c 0a 20 20 20 20 7d 0a 0a 20  xternal.    }.. 
2e4b0 20 20 20 73 65 74 20 6d 65 6e 75 20 24 77 2e 6d     set menu $w.m
2e4c0 65 6e 75 0a 20 20 20 20 63 61 74 63 68 20 7b 20  enu.    catch { 
2e4d0 64 65 73 74 72 6f 79 20 24 6d 65 6e 75 20 7d 0a  destroy $menu }.
2e4e0 20 20 20 20 0a 20 20 20 20 6d 65 6e 75 20 24 6d      .    menu $m
2e4f0 65 6e 75 0a 20 20 20 20 66 6f 72 65 61 63 68 20  enu.    foreach 
2e500 64 69 72 20 24 64 69 72 73 20 7b 0a 09 69 66 20  dir $dirs {..if 
2e510 7b 20 24 64 69 72 20 3d 3d 20 22 2d 2d 2d 22 20  { $dir == "---" 
2e520 7d 20 7b 0a 09 20 20 20 20 24 6d 65 6e 75 20 61  } {..    $menu a
2e530 64 64 20 73 65 70 61 72 61 74 6f 72 0a 09 7d 20  dd separator..} 
2e540 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20  else {..    set 
2e550 6c 61 62 65 6c 20 24 64 69 72 0a 09 20 20 20 20  label $dir..    
2e560 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6c 65 6e  if { [string len
2e570 67 74 68 20 24 6c 61 62 65 6c 5d 20 3e 20 35 30  gth $label] > 50
2e580 20 7d 20 7b 20 73 65 74 20 6c 61 62 65 6c 20 2e   } { set label .
2e590 2e 2e 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  ..[string range 
2e5a0 24 6c 61 62 65 6c 20 65 6e 64 2d 34 37 20 65 6e  $label end-47 en
2e5b0 64 5d 20 7d 0a 09 20 20 20 20 24 6d 65 6e 75 20  d] }..    $menu 
2e5c0 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62  add command -lab
2e5d0 65 6c 20 24 6c 61 62 65 6c 20 2d 63 6f 6d 6d 61  el $label -comma
2e5e0 6e 64 20 5c 0a 09 09 22 5b 6c 69 73 74 20 73 65  nd \..."[list se
2e5f0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f  t RamDebugger::o
2e600 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69  ptions(defaultdi
2e610 72 29 20 24 64 69 72 5d 20 3b 5c 0a 09 09 20 20  r) $dir] ;\...  
2e620 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 46    RamDebugger::F
2e630 69 6c 6c 4c 69 73 74 42 6f 78 22 0a 09 7d 0a 20  illListBox"..}. 
2e640 20 20 20 7d 0a 20 20 20 20 74 6b 5f 70 6f 70 75     }.    tk_popu
2e650 70 20 24 6d 65 6e 75 20 24 78 20 24 79 0a 7d 0a  p $menu $x $y.}.
2e660 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
2e670 72 3a 3a 46 69 6c 6c 4c 69 73 74 42 6f 78 20 7b  r::FillListBox {
2e680 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
2e690 20 6c 69 73 74 62 6f 78 0a 20 20 20 20 76 61 72   listbox.    var
2e6a0 69 61 62 6c 65 20 6c 69 73 74 62 6f 78 6c 61 62  iable listboxlab
2e6b0 65 6c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  el.    variable 
2e6c0 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69  options.    vari
2e6d0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
2e6e0 64 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69  dfilesP.    vari
2e6f0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
2e700 64 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69  dfilesR.    vari
2e710 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65  able instrumente
2e720 64 66 69 6c 65 73 53 65 6e 74 0a 20 20 20 20 76  dfilesSent.    v
2e730 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65  ariable remotese
2e740 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72  rverType.    var
2e750 69 61 62 6c 65 20 69 6d 61 67 65 73 0a 0a 20 20  iable images..  
2e760 20 20 69 66 20 7b 20 24 6c 69 73 74 62 6f 78 20    if { $listbox 
2e770 3d 3d 20 22 22 20 7c 7c 20 21 5b 77 69 6e 66 6f  == "" || ![winfo
2e780 20 65 78 69 73 74 73 20 24 6c 69 73 74 62 6f 78   exists $listbox
2e790 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a  ] } { return }..
2e7a0 20 20 20 20 24 6c 69 73 74 62 6f 78 6c 61 62 65      $listboxlabe
2e7b0 6c 20 63 6f 6e 66 69 67 75 72 65 20 2d 74 65 78  l configure -tex
2e7c0 74 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75  t $options(defau
2e7d0 6c 74 64 69 72 29 0a 20 20 20 20 43 6f 6e 66 69  ltdir).    Confi
2e7e0 67 75 72 65 4c 61 62 65 6c 20 24 6c 69 73 74 62  gureLabel $listb
2e7f0 6f 78 6c 61 62 65 6c 0a 0a 20 20 20 20 24 6c 69  oxlabel..    $li
2e800 73 74 62 6f 78 20 64 65 6c 65 74 65 20 5b 24 6c  stbox delete [$l
2e810 69 73 74 62 6f 78 20 69 74 65 6d 73 5d 0a 0a 20  istbox items].. 
2e820 20 20 20 73 65 74 20 70 61 72 65 6e 74 20 5b 66     set parent [f
2e830 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 6f 70 74  ile dirname $opt
2e840 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29  ions(defaultdir)
2e850 5d 0a 20 20 20 20 24 6c 69 73 74 62 6f 78 20 69  ].    $listbox i
2e860 6e 73 65 72 74 20 65 6e 64 20 2e 2e 20 2d 69 6d  nsert end .. -im
2e870 61 67 65 20 5b 42 69 74 6d 61 70 3a 3a 67 65 74  age [Bitmap::get
2e880 20 66 6f 6c 64 65 72 5d 20 2d 74 65 78 74 20 22   folder] -text "
2e890 2e 2e 22 20 2d 64 61 74 61 20 5b 6c 69 73 74 20  .." -data [list 
2e8a0 66 6f 6c 64 65 72 20 24 70 61 72 65 6e 74 5d 0a  folder $parent].
2e8b0 20 20 20 20 73 65 74 20 69 64 78 66 6f 6c 64 65      set idxfolde
2e8c0 72 20 31 0a 20 20 20 20 73 65 74 20 66 69 6c 65  r 1.    set file
2e8d0 73 20 22 22 0a 20 20 20 20 66 6f 72 65 61 63 68  s "".    foreach
2e8e0 20 69 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70   i [glob -nocomp
2e8f0 6c 61 69 6e 20 2d 64 69 72 20 24 6f 70 74 69 6f  lain -dir $optio
2e900 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 2a  ns(defaultdir) *
2e910 5d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 66 69 6c  ] {..lappend fil
2e920 65 73 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 69  es [file tail $i
2e930 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20  ].    }..    if 
2e940 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54  { $remoteserverT
2e950 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d  ype == "local" }
2e960 20 7b 0a 09 73 65 74 20 49 73 4c 6f 63 61 6c 20   {..set IsLocal 
2e970 31 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73  1.    } else { s
2e980 65 74 20 49 73 4c 6f 63 61 6c 20 30 20 7d 0a 0a  et IsLocal 0 }..
2e990 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 6c      foreach i [l
2e9a0 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61 72 79  sort -dictionary
2e9b0 20 24 66 69 6c 65 73 5d 20 7b 0a 09 73 65 74 20   $files] {..set 
2e9c0 69 74 65 6d 20 5b 47 69 76 65 4c 69 73 74 42 6f  item [GiveListBo
2e9d0 78 49 74 65 6d 4e 61 6d 65 20 24 6c 69 73 74 62  xItemName $listb
2e9e0 6f 78 20 24 69 5d 0a 09 73 65 74 20 66 75 6c 6c  ox $i]..set full
2e9f0 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  path [file join 
2ea00 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74  $options(default
2ea10 64 69 72 29 20 24 69 5d 0a 09 73 65 74 20 66 69  dir) $i]..set fi
2ea20 6c 65 74 79 70 65 20 5b 47 69 76 65 46 69 6c 65  letype [GiveFile
2ea30 54 79 70 65 20 24 69 5d 0a 09 69 66 20 7b 20 5b  Type $i]..if { [
2ea40 66 69 6c 65 20 69 73 64 69 72 20 24 66 75 6c 6c  file isdir $full
2ea50 70 61 74 68 5d 20 7d 20 7b 0a 09 20 20 20 20 69  path] } {..    i
2ea60 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f  f { [string tolo
2ea70 77 65 72 20 24 69 5d 20 3d 3d 20 22 63 76 73 22  wer $i] == "cvs"
2ea80 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a   } { continue }.
2ea90 09 20 20 20 20 24 6c 69 73 74 62 6f 78 20 69 6e  .    $listbox in
2eaa0 73 65 72 74 20 24 69 64 78 66 6f 6c 64 65 72 20  sert $idxfolder 
2eab0 24 69 74 65 6d 20 2d 69 6d 61 67 65 20 5b 42 69  $item -image [Bi
2eac0 74 6d 61 70 3a 3a 67 65 74 20 66 6f 6c 64 65 72  tmap::get folder
2ead0 5d 20 2d 74 65 78 74 20 24 69 20 5c 0a 09 09 2d  ] -text $i \...-
2eae0 64 61 74 61 20 5b 6c 69 73 74 20 66 6f 6c 64 65  data [list folde
2eaf0 72 20 24 66 75 6c 6c 70 61 74 68 5d 0a 09 20 20  r $fullpath]..  
2eb00 20 20 69 6e 63 72 20 69 64 78 66 6f 6c 64 65 72    incr idxfolder
2eb10 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 66 69  ..} elseif { $fi
2eb20 6c 65 74 79 70 65 20 21 3d 20 22 22 20 26 26 20  letype != "" && 
2eb30 5b 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20  [file extension 
2eb40 24 69 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20  $i] != "" } {.. 
2eb50 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78     if { [info ex
2eb60 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65  ists instrumente
2eb70 64 66 69 6c 65 73 53 65 6e 74 28 24 66 75 6c 6c  dfilesSent($full
2eb80 70 61 74 68 29 5d 20 7d 20 7b 0a 09 09 73 77 69  path)] } {...swi
2eb90 74 63 68 20 24 69 6e 73 74 72 75 6d 65 6e 74 65  tch $instrumente
2eba0 64 66 69 6c 65 73 53 65 6e 74 28 24 66 75 6c 6c  dfilesSent($full
2ebb0 70 61 74 68 29 20 7b 0a 09 09 20 20 20 20 64 65  path) {...    de
2ebc0 62 75 67 20 7b 20 73 65 74 20 69 6d 67 20 24 69  bug { set img $i
2ebd0 6d 61 67 65 73 28 66 69 6c 65 5f 62 6c 75 65 29  mages(file_blue)
2ebe0 20 7d 0a 09 09 20 20 20 20 74 69 6d 65 20 7b 20   }...    time { 
2ebf0 73 65 74 20 69 6d 67 20 24 69 6d 61 67 65 73 28  set img $images(
2ec00 66 69 6c 65 5f 6d 61 67 65 6e 74 61 29 20 7d 0a  file_magenta) }.
2ec10 09 09 20 20 20 20 64 65 66 61 75 6c 74 20 7b 20  ..    default { 
2ec20 73 65 74 20 69 6d 67 20 24 69 6d 61 67 65 73 28  set img $images(
2ec30 66 69 6c 65 5f 62 6c 75 65 29 20 7d 0a 09 09 7d  file_blue) }...}
2ec40 0a 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  ..    } elseif {
2ec50 20 5b 47 69 76 65 49 6e 73 74 46 69 6c 65 20 24   [GiveInstFile $
2ec60 66 75 6c 6c 70 61 74 68 20 31 20 50 5d 20 21 3d  fullpath 1 P] !=
2ec70 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 69 6d   "" } {...set im
2ec80 67 20 24 69 6d 61 67 65 73 28 66 69 6c 65 5f 79  g $images(file_y
2ec90 65 6c 6c 6f 77 29 0a 09 20 20 20 20 7d 20 65 6c  ellow)..    } el
2eca0 73 65 20 7b 20 73 65 74 20 69 6d 67 20 5b 42 69  se { set img [Bi
2ecb0 74 6d 61 70 3a 3a 67 65 74 20 66 69 6c 65 5d 20  tmap::get file] 
2ecc0 7d 0a 0a 09 20 20 20 20 24 6c 69 73 74 62 6f 78  }...    $listbox
2ecd0 20 69 6e 73 65 72 74 20 65 6e 64 20 24 69 74 65   insert end $ite
2ece0 6d 20 2d 69 6d 61 67 65 20 24 69 6d 67 20 2d 74  m -image $img -t
2ecf0 65 78 74 20 24 69 20 2d 64 61 74 61 20 5c 0a 09  ext $i -data \..
2ed00 09 5b 6c 69 73 74 20 66 69 6c 65 20 5b 66 69 6c  .[list file [fil
2ed10 65 20 6a 6f 69 6e 20 24 6f 70 74 69 6f 6e 73 28  e join $options(
2ed20 64 65 66 61 75 6c 74 64 69 72 29 20 24 69 5d 5d  defaultdir) $i]]
2ed30 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  ..}.    }.}..pro
2ed40 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 50  c RamDebugger::P
2ed50 72 65 76 4e 65 78 74 43 6f 6d 70 69 6c 65 45 72  revNextCompileEr
2ed60 72 6f 72 20 7b 20 77 68 61 74 20 7d 20 7b 0a 20  ror { what } {. 
2ed70 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
2ed80 43 4f 4d 50 0a 0a 20 20 20 20 24 74 65 78 74 43  COMP..    $textC
2ed90 4f 4d 50 20 74 61 67 20 63 6f 6e 66 20 73 65 6c  OMP tag conf sel
2eda0 32 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 5b 24  2 -background [$
2edb0 74 65 78 74 43 4f 4d 50 20 74 61 67 20 63 67 65  textCOMP tag cge
2edc0 74 20 73 65 6c 20 2d 62 61 63 6b 67 72 6f 75 6e  t sel -backgroun
2edd0 64 5d 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50  d].    $textCOMP
2ede0 20 74 61 67 20 63 6f 6e 66 20 73 65 6c 32 20 2d   tag conf sel2 -
2edf0 66 6f 72 65 67 72 6f 75 6e 64 20 5b 24 74 65 78  foreground [$tex
2ee00 74 43 4f 4d 50 20 74 61 67 20 63 67 65 74 20 73  tCOMP tag cget s
2ee10 65 6c 20 2d 66 6f 72 65 67 72 6f 75 6e 64 5d 0a  el -foreground].
2ee20 0a 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61  .    set err [ca
2ee30 74 63 68 20 7b 20 24 74 65 78 74 43 4f 4d 50 20  tch { $textCOMP 
2ee40 69 6e 64 65 78 20 73 65 6c 32 2e 66 69 72 73 74  index sel2.first
2ee50 7d 20 69 64 78 5d 0a 20 20 20 20 69 66 20 7b 20  } idx].    if { 
2ee60 24 65 72 72 20 7d 20 7b 0a 09 73 77 69 74 63 68  $err } {..switch
2ee70 20 24 77 68 61 74 20 7b 0a 09 20 20 20 20 6e 65   $what {..    ne
2ee80 78 74 20 7b 20 73 65 74 20 69 64 78 20 31 2e 30  xt { set idx 1.0
2ee90 20 7d 0a 09 20 20 20 20 70 72 65 76 20 7b 20 73   }..    prev { s
2eea0 65 74 20 69 64 78 20 65 6e 64 2d 31 63 20 7d 0a  et idx end-1c }.
2eeb0 09 7d 0a 09 24 74 65 78 74 43 4f 4d 50 20 74 61  .}..$textCOMP ta
2eec0 67 20 61 64 64 20 73 65 6c 32 20 22 24 69 64 78  g add sel2 "$idx
2eed0 20 6c 69 6e 65 73 74 61 72 74 22 20 22 24 69 64   linestart" "$id
2eee0 78 20 6c 69 6e 65 65 6e 64 22 0a 09 73 65 74 20  x lineend"..set 
2eef0 65 72 72 20 5b 63 61 74 63 68 20 7b 20 24 74 65  err [catch { $te
2ef00 78 74 43 4f 4d 50 20 69 6e 64 65 78 20 73 65 6c  xtCOMP index sel
2ef10 32 2e 66 69 72 73 74 7d 20 69 64 78 5d 0a 09 69  2.first} idx]..i
2ef20 66 20 7b 20 24 65 72 72 20 7d 20 7b 20 72 65 74  f { $err } { ret
2ef30 75 72 6e 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20  urn }.    }.    
2ef40 24 74 65 78 74 43 4f 4d 50 20 74 61 67 20 72 65  $textCOMP tag re
2ef50 6d 6f 76 65 20 73 65 6c 32 20 31 2e 30 20 65 6e  move sel2 1.0 en
2ef60 64 0a 20 20 20 20 73 65 74 20 69 64 78 69 6e 69  d.    set idxini
2ef70 20 24 69 64 78 0a 20 20 20 20 77 68 69 6c 65 20   $idx.    while 
2ef80 7b 20 5b 24 74 65 78 74 43 4f 4d 50 20 74 61 67  { [$textCOMP tag
2ef90 20 72 61 6e 67 65 20 73 65 6c 32 5d 20 3d 3d 20   range sel2] == 
2efa0 22 22 20 7d 20 7b 0a 09 73 77 69 74 63 68 20 24  "" } {..switch $
2efb0 77 68 61 74 20 7b 0a 09 20 20 20 20 6e 65 78 74  what {..    next
2efc0 20 7b 0a 09 09 73 65 74 20 69 64 78 20 5b 24 74   {...set idx [$t
2efd0 65 78 74 43 4f 4d 50 20 69 6e 64 65 78 20 24 69  extCOMP index $i
2efe0 64 78 2b 31 6c 5d 0a 09 09 69 66 20 7b 20 5b 24  dx+1l]...if { [$
2eff0 74 65 78 74 43 4f 4d 50 20 63 6f 6d 70 61 72 65  textCOMP compare
2f000 20 24 69 64 78 20 3e 20 65 6e 64 2d 31 63 5d 20   $idx > end-1c] 
2f010 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 69 64  } {...    set id
2f020 78 20 31 2e 30 0a 09 09 7d 0a 09 20 20 20 20 7d  x 1.0...}..    }
2f030 0a 09 20 20 20 20 70 72 65 76 20 7b 0a 09 09 73  ..    prev {...s
2f040 65 74 20 69 64 78 20 5b 24 74 65 78 74 43 4f 4d  et idx [$textCOM
2f050 50 20 69 6e 64 65 78 20 24 69 64 78 2d 31 6c 5d  P index $idx-1l]
2f060 0a 09 09 69 66 20 7b 20 5b 24 74 65 78 74 43 4f  ...if { [$textCO
2f070 4d 50 20 63 6f 6d 70 61 72 65 20 24 69 64 78 20  MP compare $idx 
2f080 3c 20 31 2e 30 5d 20 7d 20 7b 0a 09 09 20 20 20  < 1.0] } {...   
2f090 20 73 65 74 20 69 64 78 20 65 6e 64 2d 31 63 0a   set idx end-1c.
2f0a0 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73  ..}..    }..}..s
2f0b0 65 74 20 72 65 78 20 7b 28 28 28 3f 3a 5b 61 2d  et rex {(((?:[a-
2f0c0 7a 41 2d 5a 5d 3a 2f 29 3f 5b 2d 2f 5c 77 2e 5d  zA-Z]:/)?[-/\w.]
2f0d0 2b 29 3a 28 5b 30 2d 39 5d 2b 29 29 7c 28 28 28  +):([0-9]+))|(((
2f0e0 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a 2f 29 3f 5b 2d  ?:[a-zA-Z]:/)?[-
2f0f0 2f 5c 77 2e 20 5d 2b 29 3a 28 5b 30 2d 39 5d 2b  /\w. ]+):([0-9]+
2f100 29 29 7d 0a 09 69 66 20 7b 20 5b 72 65 67 65 78  ))}..if { [regex
2f110 70 20 24 72 65 78 20 5b 24 74 65 78 74 43 4f 4d  p $rex [$textCOM
2f120 50 20 67 65 74 20 22 24 69 64 78 20 6c 69 6e 65  P get "$idx line
2f130 73 74 61 72 74 22 20 22 24 69 64 78 20 6c 69 6e  start" "$idx lin
2f140 65 65 6e 64 22 5d 5d 20 7d 20 7b 0a 09 20 20 20  eend"]] } {..   
2f150 20 24 74 65 78 74 43 4f 4d 50 20 74 61 67 20 61   $textCOMP tag a
2f160 64 64 20 73 65 6c 32 20 22 24 69 64 78 20 6c 69  dd sel2 "$idx li
2f170 6e 65 73 74 61 72 74 22 20 22 24 69 64 78 20 6c  nestart" "$idx l
2f180 69 6e 65 65 6e 64 22 0a 09 7d 0a 09 69 66 20 7b  ineend"..}..if {
2f190 20 24 69 64 78 20 3d 3d 20 24 69 64 78 69 6e 69   $idx == $idxini
2f1a0 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 20   } { break }.   
2f1b0 20 7d 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50   }.    $textCOMP
2f1c0 20 73 65 65 20 24 69 64 78 0a 20 20 20 20 53 74   see $idx.    St
2f1d0 61 63 6b 44 6f 75 62 6c 65 31 20 24 74 65 78 74  ackDouble1 $text
2f1e0 43 4f 4d 50 20 24 69 64 78 0a 7d 0a 0a 0a 70 72  COMP $idx.}...pr
2f1f0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
2f200 53 74 61 63 6b 44 6f 75 62 6c 65 31 20 7b 20 74  StackDouble1 { t
2f210 65 78 74 73 74 61 63 6b 20 69 64 78 20 7d 20 7b  extstack idx } {
2f220 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
2f230 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  xt.    variable 
2f240 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20  currentfile.    
2f250 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73  variable options
2f260 0a 0a 20 20 20 20 73 65 74 20 69 64 78 20 5b 24  ..    set idx [$
2f270 74 65 78 74 73 74 61 63 6b 20 69 6e 64 65 78 20  textstack index 
2f280 24 69 64 78 5d 0a 20 20 20 20 73 65 74 20 64 61  $idx].    set da
2f290 74 61 20 5b 24 74 65 78 74 73 74 61 63 6b 20 67  ta [$textstack g
2f2a0 65 74 20 22 24 69 64 78 20 6c 69 6e 65 73 74 61  et "$idx linesta
2f2b0 72 74 22 20 22 24 69 64 78 20 6c 69 6e 65 65 6e  rt" "$idx lineen
2f2c0 64 22 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74  d"].    .    set
2f2d0 20 70 61 74 74 65 72 6e 4c 69 73 74 20 5b 6c 69   patternList [li
2f2e0 73 74 20 7b 28 28 3f 3a 5b 61 2d 7a 41 2d 5a 5d  st {((?:[a-zA-Z]
2f2f0 3a 2f 29 3f 5b 2d 2f 5c 77 2e 5d 2b 29 3a 28 5b  :/)?[-/\w.]+):([
2f300 30 2d 39 5d 2b 29 7d 20 5c 0a 09 20 20 20 20 7b  0-9]+)} \..    {
2f310 28 28 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a 2f 29 3f  ((?:[a-zA-Z]:/)?
2f320 5b 2d 2f 5c 77 2e 20 5d 2b 29 3a 28 5b 30 2d 39  [-/\w. ]+):([0-9
2f330 5d 2b 29 7d 5d 0a 20 20 20 20 23 73 65 74 20 72  ]+)}].    #set r
2f340 65 78 20 7b 5e 5c 23 28 5b 30 2d 39 5d 2b 29 7d  ex {^\#([0-9]+)}
2f350 0a 20 20 20 20 73 65 74 20 72 65 78 20 5b 6a 6f  .    set rex [jo
2f360 69 6e 20 24 70 61 74 74 65 72 6e 4c 69 73 74 20  in $patternList 
2f370 22 7c 22 5d 0a 20 20 20 20 77 68 69 6c 65 20 7b  "|"].    while {
2f380 20 21 5b 72 65 67 65 78 70 20 24 72 65 78 20 24   ![regexp $rex $
2f390 64 61 74 61 5d 20 26 26 20 5b 24 74 65 78 74 73  data] && [$texts
2f3a0 74 61 63 6b 20 63 6f 6d 70 61 72 65 20 22 24 69  tack compare "$i
2f3b0 64 78 20 6c 69 6e 65 73 74 61 72 74 22 20 3e 20  dx linestart" > 
2f3c0 31 2e 30 5d 20 7d 20 7b 0a 09 73 65 74 20 70 72  1.0] } {..set pr
2f3d0 65 76 6c 69 6e 65 20 5b 24 74 65 78 74 73 74 61  evline [$textsta
2f3e0 63 6b 20 67 65 74 20 22 24 69 64 78 20 2d 31 20  ck get "$idx -1 
2f3f0 6c 69 6e 65 20 6c 69 6e 65 73 74 61 72 74 22 20  line linestart" 
2f400 22 24 69 64 78 20 2d 31 20 6c 69 6e 65 20 6c 69  "$idx -1 line li
2f410 6e 65 65 6e 64 22 5d 0a 09 73 65 74 20 64 61 74  neend"]..set dat
2f420 61 20 22 24 70 72 65 76 6c 69 6e 65 20 24 64 61  a "$prevline $da
2f430 74 61 22 0a 09 73 65 74 20 69 64 78 20 5b 24 74  ta"..set idx [$t
2f440 65 78 74 73 74 61 63 6b 20 69 6e 64 65 78 20 22  extstack index "
2f450 24 69 64 78 20 2d 31 20 6c 69 6e 65 20 6c 69 6e  $idx -1 line lin
2f460 65 73 74 61 72 74 22 5d 0a 20 20 20 20 7d 0a 20  estart"].    }. 
2f470 20 20 20 77 68 69 6c 65 20 7b 20 5b 72 65 67 65     while { [rege
2f480 78 70 20 24 72 65 78 20 24 64 61 74 61 5d 20 26  xp $rex $data] &
2f490 26 20 5b 24 74 65 78 74 73 74 61 63 6b 20 63 6f  & [$textstack co
2f4a0 6d 70 61 72 65 20 22 24 69 64 78 20 6c 69 6e 65  mpare "$idx line
2f4b0 65 6e 64 22 20 3c 20 22 65 6e 64 2d 31 6c 22 5d  end" < "end-1l"]
2f4c0 20 7d 20 7b 0a 09 73 65 74 20 6e 65 78 74 6c 69   } {..set nextli
2f4d0 6e 65 20 5b 24 74 65 78 74 73 74 61 63 6b 20 67  ne [$textstack g
2f4e0 65 74 20 22 24 69 64 78 20 2b 31 20 6c 69 6e 65  et "$idx +1 line
2f4f0 20 6c 69 6e 65 73 74 61 72 74 22 20 22 24 69 64   linestart" "$id
2f500 78 20 2b 31 20 6c 69 6e 65 20 6c 69 6e 65 65 6e  x +1 line lineen
2f510 64 22 5d 0a 09 69 66 20 7b 20 21 5b 72 65 67 65  d"]..if { ![rege
2f520 78 70 20 24 72 65 78 20 24 6e 65 78 74 6c 69 6e  xp $rex $nextlin
2f530 65 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  e] } {..    set 
2f540 64 61 74 61 20 22 24 64 61 74 61 20 24 6e 65 78  data "$data $nex
2f550 74 6c 69 6e 65 22 0a 09 20 20 20 20 73 65 74 20  tline"..    set 
2f560 69 64 78 20 5b 24 74 65 78 74 73 74 61 63 6b 20  idx [$textstack 
2f570 69 6e 64 65 78 20 22 24 69 64 78 20 2b 31 20 6c  index "$idx +1 l
2f580 69 6e 65 20 6c 69 6e 65 73 74 61 72 74 22 5d 0a  ine linestart"].
2f590 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 62  .} else {..    b
2f5a0 72 65 61 6b 0a 09 7d 0a 20 20 20 20 7d 0a 20 20  reak..}.    }.  
2f5b0 20 20 66 6f 72 65 61 63 68 20 70 61 74 74 65 72    foreach patter
2f5c0 6e 20 24 70 61 74 74 65 72 6e 4c 69 73 74 20 7b  n $patternList {
2f5d0 0a 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20  ...if { [regexp 
2f5e0 24 70 61 74 74 65 72 6e 20 24 64 61 74 61 20 7b  $pattern $data {
2f5f0 7d 20 66 69 6c 65 20 6c 69 6e 65 5d 20 7d 20 7b  } file line] } {
2f600 0a 0a 09 20 20 20 20 23 20 73 74 72 61 6e 67 65  ...    # strange
2f610 20 63 61 73 65 20 69 6e 20 57 69 6e 64 6f 77 73   case in Windows
2f620 20 6d 69 6e 67 77 0a 09 20 20 20 20 69 66 20 7b   mingw..    if {
2f630 20 5b 72 65 67 65 78 70 20 7b 5e 2f 2f 28 5b 61   [regexp {^//([a
2f640 2d 7a 41 2d 5a 5d 29 28 2f 2e 2a 29 7d 20 24 66  -zA-Z])(/.*)} $f
2f650 69 6c 65 20 7b 7d 20 6c 65 74 74 65 72 20 73 66  ile {} letter sf
2f660 69 6c 65 5d 20 26 26 20 5c 0a 09 09 20 20 20 20  ile] && \...    
2f670 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 6c   [file exists $l
2f680 65 74 74 65 72 3a 24 73 66 69 6c 65 5d 20 7d 20  etter:$sfile] } 
2f690 7b 0a 09 09 73 65 74 20 66 69 6c 65 20 24 6c 65  {...set file $le
2f6a0 74 74 65 72 3a 24 73 66 69 6c 65 0a 09 20 20 20  tter:$sfile..   
2f6b0 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 21 5b 66   }..    if { ![f
2f6c0 69 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c 65  ile exists $file
2f6d0 5d 20 7d 20 7b 0a 09 09 73 65 74 20 66 75 6c 6c  ] } {...set full
2f6e0 66 69 6c 65 20 5b 63 70 72 6f 6a 65 63 74 3a 3a  file [cproject::
2f6f0 54 72 79 54 6f 46 69 6e 64 50 61 74 68 20 24 66  TryToFindPath $f
2f700 69 6c 65 5d 0a 09 09 69 66 20 7b 20 24 66 75 6c  ile]...if { $ful
2f710 6c 66 69 6c 65 20 21 3d 20 22 22 20 7d 20 7b 0a  lfile != "" } {.
2f720 09 09 20 20 20 20 73 65 74 20 66 69 6c 65 20 24  ..    set file $
2f730 66 75 6c 6c 66 69 6c 65 0a 09 09 7d 0a 09 20 20  fullfile...}..  
2f740 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 21 5b    }..    if { ![
2f750 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c  file exists $fil
2f760 65 5d 20 26 26 20 5b 66 69 6c 65 20 65 78 69 73  e] && [file exis
2f770 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f  ts [file join $o
2f780 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69  ptions(defaultdi
2f790 72 29 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  r) \...         
2f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7c0 20 20 24 66 69 6c 65 5d 5d 20 7d 20 7b 0a 09 09    $file]] } {...
2f7d0 73 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a  set file [file j
2f7e0 6f 69 6e 20 24 6f 70 74 69 6f 6e 73 28 64 65 66  oin $options(def
2f7f0 61 75 6c 74 64 69 72 29 20 24 66 69 6c 65 5d 0a  aultdir) $file].
2f800 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 69 66 20  .    }...    if 
2f810 7b 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24  { [file exists $
2f820 66 69 6c 65 5d 20 7d 20 7b 0a 09 09 73 65 74 20  file] } {...set 
2f830 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c  file [filenormal
2f840 69 7a 65 20 24 66 69 6c 65 5d 0a 09 09 69 66 20  ize $file]...if 
2f850 7b 20 24 66 69 6c 65 20 21 3d 20 24 63 75 72 72  { $file != $curr
2f860 65 6e 74 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20  entfile } {...  
2f870 20 20 4f 70 65 6e 46 69 6c 65 46 20 24 66 69 6c    OpenFileF $fil
2f880 65 0a 09 09 7d 0a 09 09 24 74 65 78 74 20 73 65  e...}...$text se
2f890 65 20 24 6c 69 6e 65 2e 30 0a 09 09 24 74 65 78  e $line.0...$tex
2f8a0 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72  t mark set inser
2f8b0 74 20 24 6c 69 6e 65 2e 30 0a 09 09 66 6f 63 75  t $line.0...focu
2f8c0 73 20 24 74 65 78 74 0a 0a 09 09 69 66 20 7b 20  s $text....if { 
2f8d0 5b 72 65 67 65 78 70 20 7b 5e 5c 23 28 5b 30 2d  [regexp {^\#([0-
2f8e0 39 5d 2b 29 7d 20 24 64 61 74 61 20 7b 7d 20 73  9]+)} $data {} s
2f8f0 74 61 63 6b 74 72 61 63 65 5d 20 7d 20 7b 0a 09  tacktrace] } {..
2f900 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20  .    EvalRemote 
2f910 22 66 72 61 6d 65 20 24 73 74 61 63 6b 74 72 61  "frame $stacktra
2f920 63 65 22 0a 09 09 7d 0a 09 09 72 65 74 75 72 6e  ce"...}...return
2f930 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d  ..    }..}.    }
2f940 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
2f950 67 67 65 72 3a 3a 44 65 6c 65 74 65 50 72 65 76  gger::DeletePrev
2f960 69 6f 75 73 57 6f 72 64 20 7b 7d 20 7b 0a 20 20  iousWord {} {.  
2f970 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
2f980 20 20 20 20 0a 20 20 20 20 69 66 20 7b 5b 24 74      .    if {[$t
2f990 65 78 74 20 74 61 67 20 6e 65 78 74 72 61 6e 67  ext tag nextrang
2f9a0 65 20 73 65 6c 20 31 2e 30 20 65 6e 64 5d 20 6e  e sel 1.0 end] n
2f9b0 65 20 22 22 7d 20 7b 0a 09 24 74 65 78 74 20 64  e ""} {..$text d
2f9c0 65 6c 65 74 65 20 73 65 6c 2e 66 69 72 73 74 20  elete sel.first 
2f9d0 73 65 6c 2e 6c 61 73 74 0a 20 20 20 20 7d 20 65  sel.last.    } e
2f9e0 6c 73 65 69 66 20 7b 5b 24 74 65 78 74 20 63 6f  lseif {[$text co
2f9f0 6d 70 61 72 65 20 69 6e 73 65 72 74 20 21 3d 20  mpare insert != 
2fa00 31 2e 30 5d 7d 20 7b 0a 09 73 65 74 20 69 70 6f  1.0]} {..set ipo
2fa10 73 20 5b 74 6b 3a 3a 54 65 78 74 50 72 65 76 50  s [tk::TextPrevP
2fa20 6f 73 20 24 74 65 78 74 20 69 6e 73 65 72 74 20  os $text insert 
2fa30 74 63 6c 5f 73 74 61 72 74 4f 66 50 72 65 76 69  tcl_startOfPrevi
2fa40 6f 75 73 57 6f 72 64 5d 0a 09 24 74 65 78 74 20  ousWord]..$text 
2fa50 64 65 6c 65 74 65 20 24 69 70 6f 73 20 69 6e 73  delete $ipos ins
2fa60 65 72 74 2d 31 63 0a 09 24 74 65 78 74 20 73 65  ert-1c..$text se
2fa70 65 20 69 6e 73 65 72 74 0a 20 20 20 20 7d 0a 7d  e insert.    }.}
2fa80 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  ...proc RamDebug
2fa90 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 74  ger::CutCopyPast
2faa0 65 54 65 78 74 20 7b 20 77 68 61 74 20 61 72 67  eText { what arg
2fab0 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  s } {.    variab
2fac0 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69  le text.    vari
2fad0 61 62 6c 65 20 6f 6c 64 50 61 73 74 65 53 74 61  able oldPasteSta
2fae0 63 6b 0a 0a 20 20 20 20 73 77 69 74 63 68 20 24  ck..    switch $
2faf0 77 68 61 74 20 7b 0a 09 75 6e 64 6f 20 7b 0a 09  what {..undo {..
2fb00 20 20 20 20 24 74 65 78 74 20 75 6e 64 6f 0a 09      $text undo..
2fb10 7d 0a 09 63 75 74 20 7b 0a 09 20 20 20 20 74 6b  }..cut {..    tk
2fb20 5f 74 65 78 74 43 75 74 20 24 74 65 78 74 0a 09  _textCut $text..
2fb30 20 20 20 20 69 66 20 7b 21 5b 63 61 74 63 68 20      if {![catch 
2fb40 7b 3a 3a 74 6b 3a 3a 47 65 74 53 65 6c 65 63 74  {::tk::GetSelect
2fb50 69 6f 6e 20 24 74 65 78 74 20 43 4c 49 50 42 4f  ion $text CLIPBO
2fb60 41 52 44 7d 20 73 65 6c 5d 7d 20 7b 0a 09 09 73  ARD} sel]} {...s
2fb70 65 74 20 73 65 6c 20 5b 73 74 72 69 6e 67 20 6d  et sel [string m
2fb80 61 70 20 5b 6c 69 73 74 20 22 5c 74 22 20 22 20  ap [list "\t" " 
2fb90 20 20 20 20 20 20 20 22 5d 20 24 73 65 6c 5d 0a         "] $sel].
2fba0 09 09 69 66 20 7b 20 5b 73 65 74 20 69 70 6f 73  ..if { [set ipos
2fbb0 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74   [lsearch -exact
2fbc0 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20   $oldPasteStack 
2fbd0 24 73 65 6c 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b  $sel]] != -1 } {
2fbe0 0a 09 09 20 20 20 20 73 65 74 20 6f 6c 64 50 61  ...    set oldPa
2fbf0 73 74 65 53 74 61 63 6b 20 5b 6c 72 65 70 6c 61  steStack [lrepla
2fc00 63 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63  ce $oldPasteStac
2fc10 6b 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09  k $ipos $ipos]..
2fc20 09 7d 0a 09 09 73 65 74 20 6f 6c 64 50 61 73 74  .}...set oldPast
2fc30 65 53 74 61 63 6b 20 5b 6c 69 6e 73 65 72 74 20  eStack [linsert 
2fc40 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20 30  $oldPasteStack 0
2fc50 20 24 73 65 6c 5d 0a 09 09 73 65 74 20 6f 6c 64   $sel]...set old
2fc60 50 61 73 74 65 53 74 61 63 6b 20 5b 6c 72 61 6e  PasteStack [lran
2fc70 67 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63  ge $oldPasteStac
2fc80 6b 20 30 20 31 32 5d 0a 09 20 20 20 20 7d 0a 09  k 0 12]..    }..
2fc90 7d 0a 09 63 6f 70 79 20 7b 0a 09 20 20 20 20 74  }..copy {..    t
2fca0 6b 5f 74 65 78 74 43 6f 70 79 20 24 74 65 78 74  k_textCopy $text
2fcb0 0a 09 20 20 20 20 69 66 20 7b 21 5b 63 61 74 63  ..    if {![catc
2fcc0 68 20 7b 3a 3a 74 6b 3a 3a 47 65 74 53 65 6c 65  h {::tk::GetSele
2fcd0 63 74 69 6f 6e 20 24 74 65 78 74 20 43 4c 49 50  ction $text CLIP
2fce0 42 4f 41 52 44 7d 20 73 65 6c 5d 7d 20 7b 0a 09  BOARD} sel]} {..
2fcf0 09 73 65 74 20 73 65 6c 20 5b 73 74 72 69 6e 67  .set sel [string
2fd00 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 22 20   map [list "\t" 
2fd10 22 20 20 20 20 20 20 20 20 22 5d 20 24 73 65 6c  "        "] $sel
2fd20 5d 0a 09 09 69 66 20 7b 20 5b 73 65 74 20 69 70  ]...if { [set ip
2fd30 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61  os [lsearch -exa
2fd40 63 74 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63  ct $oldPasteStac
2fd50 6b 20 24 73 65 6c 5d 5d 20 21 3d 20 2d 31 20 7d  k $sel]] != -1 }
2fd60 20 7b 0a 09 09 20 20 20 20 73 65 74 20 6f 6c 64   {...    set old
2fd70 50 61 73 74 65 53 74 61 63 6b 20 5b 6c 72 65 70  PasteStack [lrep
2fd80 6c 61 63 65 20 24 6f 6c 64 50 61 73 74 65 53 74  lace $oldPasteSt
2fd90 61 63 6b 20 24 69 70 6f 73 20 24 69 70 6f 73 5d  ack $ipos $ipos]
2fda0 0a 09 09 7d 0a 09 09 73 65 74 20 6f 6c 64 50 61  ...}...set oldPa
2fdb0 73 74 65 53 74 61 63 6b 20 5b 6c 69 6e 73 65 72  steStack [linser
2fdc0 74 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b  t $oldPasteStack
2fdd0 20 30 20 24 73 65 6c 5d 0a 09 09 73 65 74 20 6f   0 $sel]...set o
2fde0 6c 64 50 61 73 74 65 53 74 61 63 6b 20 5b 6c 72  ldPasteStack [lr
2fdf0 61 6e 67 65 20 24 6f 6c 64 50 61 73 74 65 53 74  ange $oldPasteSt
2fe00 61 63 6b 20 30 20 31 32 5d 0a 09 20 20 20 20 7d  ack 0 12]..    }
2fe10 0a 09 7d 0a 09 70 61 73 74 65 20 7b 0a 09 20 20  ..}..paste {..  
2fe20 20 20 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e    scan [$text in
2fe30 64 65 78 20 69 6e 73 65 72 74 5d 20 22 25 64 2e  dex insert] "%d.
2fe40 25 64 22 20 6c 69 6e 65 20 2d 0a 09 20 20 20 20  %d" line -..    
2fe50 69 66 20 7b 20 5b 70 61 63 6b 61 67 65 20 76 63  if { [package vc
2fe60 6f 6d 70 61 72 65 20 24 3a 3a 74 63 6c 5f 76 65  ompare $::tcl_ve
2fe70 72 73 69 6f 6e 20 38 2e 34 5d 20 3e 3d 20 30 20  rsion 8.4] >= 0 
2fe80 7d 20 7b 0a 09 09 23 20 70 61 73 74 65 20 69 73  } {...# paste is
2fe90 20 6d 61 64 65 20 68 65 72 65 20 69 6e 20 6f 72   made here in or
2fea0 64 65 72 20 74 6f 20 73 75 62 73 74 69 74 75 74  der to substitut
2feb0 65 20 74 61 62 73 20 62 79 20 73 70 61 63 65 73  e tabs by spaces
2fec0 0a 09 09 67 6c 6f 62 61 6c 20 74 63 6c 5f 70 6c  ...global tcl_pl
2fed0 61 74 66 6f 72 6d 0a 09 09 69 66 20 7b 21 5b 63  atform...if {![c
2fee0 61 74 63 68 20 7b 3a 3a 74 6b 3a 3a 47 65 74 53  atch {::tk::GetS
2fef0 65 6c 65 63 74 69 6f 6e 20 24 74 65 78 74 20 43  election $text C
2ff00 4c 49 50 42 4f 41 52 44 7d 20 73 65 6c 5d 7d 20  LIPBOARD} sel]} 
2ff10 7b 0a 09 09 20 20 20 20 73 65 74 20 73 65 6c 20  {...    set sel 
2ff20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73  [string map [lis
2ff30 74 20 22 5c 74 22 20 22 20 20 20 20 20 20 20 20  t "\t" "        
2ff40 22 5d 20 24 73 65 6c 5d 0a 09 09 20 20 20 20 73  "] $sel]...    s
2ff50 65 74 20 6f 6c 64 53 65 70 61 72 61 74 6f 72 20  et oldSeparator 
2ff60 5b 24 74 65 78 74 20 63 67 65 74 20 2d 61 75 74  [$text cget -aut
2ff70 6f 73 65 70 61 72 61 74 6f 72 73 5d 0a 09 09 20  oseparators]... 
2ff80 20 20 20 69 66 20 7b 20 24 6f 6c 64 53 65 70 61     if { $oldSepa
2ff90 72 61 74 6f 72 20 7d 20 7b 0a 09 09 20 20 20 20  rator } {...    
2ffa0 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 69 67      $text config
2ffb0 75 72 65 20 2d 61 75 74 6f 73 65 70 61 72 61 74  ure -autoseparat
2ffc0 6f 72 73 20 30 0a 09 09 20 20 20 20 20 20 20 20  ors 0...        
2ffd0 24 74 65 78 74 20 65 64 69 74 20 73 65 70 61 72  $text edit separ
2ffe0 61 74 6f 72 0a 09 09 20 20 20 20 7d 0a 09 09 20  ator...    }... 
2fff0 20 20 20 23 20 6f 6e 6c 79 20 64 65 6c 65 74 65     # only delete
30000 20 73 65 6c 65 63 74 69 6f 6e 20 69 66 20 69 74   selection if it
30010 20 69 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20   is in the same 
30020 6c 69 6e 65 20 74 68 61 6e 20 69 6e 73 65 72 74  line than insert
30030 69 6f 6e 0a 09 09 20 20 20 20 63 61 74 63 68 20  ion...    catch 
30040 7b 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b  {...        if {
30050 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20   [$text compare 
30060 22 69 6e 73 65 72 74 20 6c 69 6e 65 73 74 61 72  "insert linestar
30070 74 22 20 3d 3d 20 22 73 65 6c 2e 66 69 72 73 74  t" == "sel.first
30080 20 6c 69 6e 65 73 74 61 72 74 22 5d 20 7d 20 7b   linestart"] } {
30090 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 24  ...            $
300a0 74 65 78 74 20 64 65 6c 65 74 65 20 73 65 6c 2e  text delete sel.
300b0 66 69 72 73 74 20 73 65 6c 2e 6c 61 73 74 0a 09  first sel.last..
300c0 09 20 20 20 20 20 20 20 20 7d 0a 09 09 20 20 20  .        }...   
300d0 20 7d 0a 09 09 20 20 20 20 24 74 65 78 74 20 69   }...    $text i
300e0 6e 73 65 72 74 20 69 6e 73 65 72 74 20 24 73 65  nsert insert $se
300f0 6c 0a 09 09 20 20 20 20 69 66 20 7b 20 24 6f 6c  l...    if { $ol
30100 64 53 65 70 61 72 61 74 6f 72 20 7d 20 7b 0a 09  dSeparator } {..
30110 09 20 20 20 20 20 20 20 20 24 74 65 78 74 20 65  .        $text e
30120 64 69 74 20 73 65 70 61 72 61 74 6f 72 0a 09 09  dit separator...
30130 20 20 20 20 20 20 20 20 24 74 65 78 74 20 63 6f          $text co
30140 6e 66 69 67 75 72 65 20 2d 61 75 74 6f 73 65 70  nfigure -autosep
30150 61 72 61 74 6f 72 73 20 31 0a 09 09 20 20 20 20  arators 1...    
30160 7d 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 73 65  }...    if { [se
30170 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
30180 2d 65 78 61 63 74 20 24 6f 6c 64 50 61 73 74 65  -exact $oldPaste
30190 53 74 61 63 6b 20 24 73 65 6c 5d 5d 20 21 3d 20  Stack $sel]] != 
301a0 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20  -1 } {...       
301b0 20 73 65 74 20 6f 6c 64 50 61 73 74 65 53 74 61   set oldPasteSta
301c0 63 6b 20 5b 6c 72 65 70 6c 61 63 65 20 24 6f 6c  ck [lreplace $ol
301d0 64 50 61 73 74 65 53 74 61 63 6b 20 24 69 70 6f  dPasteStack $ipo
301e0 73 20 24 69 70 6f 73 5d 0a 09 09 20 20 20 20 7d  s $ipos]...    }
301f0 0a 09 09 20 20 20 20 73 65 74 20 6f 6c 64 50 61  ...    set oldPa
30200 73 74 65 53 74 61 63 6b 20 5b 6c 69 6e 73 65 72  steStack [linser
30210 74 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b  t $oldPasteStack
30220 20 30 20 24 73 65 6c 5d 0a 09 09 20 20 20 20 73   0 $sel]...    s
30230 65 74 20 6f 6c 64 50 61 73 74 65 53 74 61 63 6b  et oldPasteStack
30240 20 5b 6c 72 61 6e 67 65 20 24 6f 6c 64 50 61 73   [lrange $oldPas
30250 74 65 53 74 61 63 6b 20 30 20 31 32 5d 0a 09 09  teStack 0 12]...
30260 7d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  }..    } else {.
30270 09 09 74 6b 5f 74 65 78 74 50 61 73 74 65 20 24  ..tk_textPaste $
30280 74 65 78 74 0a 09 20 20 20 20 7d 0a 09 20 20 20  text..    }..   
30290 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e   RamDebugger::In
302a0 64 65 6e 74 4c 69 6e 65 20 24 6c 69 6e 65 0a 09  dentLine $line..
302b0 7d 0a 09 70 61 73 74 65 5f 73 74 61 63 6b 20 7b  }..paste_stack {
302c0 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64  ..    if { [lind
302d0 65 78 20 24 61 72 67 73 20 30 5d 20 6e 65 20 22  ex $args 0] ne "
302e0 22 20 7d 20 7b 0a 09 09 73 65 74 20 6d 65 6e 75  " } {...set menu
302f0 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30   [lindex $args 0
30300 5d 0a 09 09 24 6d 65 6e 75 20 64 65 6c 65 74 65  ]...$menu delete
30310 20 30 20 65 6e 64 0a 09 20 20 20 20 7d 20 65 6c   0 end..    } el
30320 73 65 20 7b 0a 09 09 69 66 20 7b 20 21 5b 6c 6c  se {...if { ![ll
30330 65 6e 67 74 68 20 24 6f 6c 64 50 61 73 74 65 53  ength $oldPasteS
30340 74 61 63 6b 5d 20 7d 20 7b 0a 09 09 20 20 20 20  tack] } {...    
30350 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 65 72  WarnWin [_ "Ther
30360 65 20 69 73 20 6e 6f 20 6f 6c 64 20 70 61 73 74  e is no old past
30370 65 20 73 74 61 63 6b 2e 20 49 74 20 63 61 6e 20  e stack. It can 
30380 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 63  be filled with c
30390 6f 70 79 20 61 6e 64 20 70 61 73 74 65 22 5d 0a  opy and paste"].
303a0 09 09 20 20 20 20 72 65 74 75 72 6e 0a 09 09 7d  ..    return...}
303b0 0a 09 09 73 65 74 20 6d 65 6e 75 20 24 74 65 78  ...set menu $tex
303c0 74 2e 6d 65 6e 75 0a 09 09 63 61 74 63 68 20 7b  t.menu...catch {
303d0 20 64 65 73 74 72 6f 79 20 24 6d 65 6e 75 20 7d   destroy $menu }
303e0 0a 09 09 0a 09 09 6d 65 6e 75 20 24 6d 65 6e 75  ......menu $menu
303f0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20  ..    }..    if 
30400 7b 20 21 5b 6c 6c 65 6e 67 74 68 20 24 6f 6c 64  { ![llength $old
30410 50 61 73 74 65 53 74 61 63 6b 5d 20 7d 20 7b 0a  PasteStack] } {.
30420 09 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d  ..$menu add comm
30430 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 54  and -label [_ "T
30440 68 65 72 65 20 69 73 20 6e 6f 20 6f 6c 64 20 70  here is no old p
30450 61 73 74 65 20 73 74 61 63 6b 22 5d 20 2d 73 74  aste stack"] -st
30460 61 74 65 20 64 69 73 61 62 6c 65 64 0a 09 20 20  ate disabled..  
30470 20 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 68    }..    foreach
30480 20 73 65 6c 20 24 6f 6c 64 50 61 73 74 65 53 74   sel $oldPasteSt
30490 61 63 6b 20 7b 0a 09 09 73 65 74 20 6c 61 62 65  ack {...set labe
304a0 6c 20 24 73 65 6c 0a 09 09 69 66 20 7b 20 5b 73  l $sel...if { [s
304b0 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6c 61  tring length $la
304c0 62 65 6c 5d 20 3e 20 35 30 20 7d 20 7b 0a 09 09  bel] > 50 } {...
304d0 20 20 20 20 73 65 74 20 6c 61 62 65 6c 20 5b 73      set label [s
304e0 74 72 69 6e 67 20 72 61 6e 67 65 20 24 6c 61 62  tring range $lab
304f0 65 6c 20 30 20 34 37 5d 2e 2e 2e 0a 09 09 7d 0a  el 0 47]......}.
30500 09 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d  ..$menu add comm
30510 61 6e 64 20 2d 6c 61 62 65 6c 20 24 6c 61 62 65  and -label $labe
30520 6c 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 20  l -command \... 
30530 20 20 20 22 5b 6c 69 73 74 20 63 6c 69 70 62 6f     "[list clipbo
30540 61 72 64 20 63 6c 65 61 72 5d 20 3b 20 5b 6c 69  ard clear] ; [li
30550 73 74 20 63 6c 69 70 62 6f 61 72 64 20 61 70 70  st clipboard app
30560 65 6e 64 20 24 73 65 6c 5d 20 3b 20 52 61 6d 44  end $sel] ; RamD
30570 65 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79  ebugger::CutCopy
30580 50 61 73 74 65 54 65 78 74 20 70 61 73 74 65 22  PasteText paste"
30590 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20  ..    }..    if 
305a0 7b 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  { [lindex $args 
305b0 30 5d 20 65 71 20 22 22 20 7d 20 7b 0a 09 09 73  0] eq "" } {...s
305c0 65 74 20 62 62 6f 78 20 5b 24 74 65 78 74 20 62  et bbox [$text b
305d0 62 6f 78 20 69 6e 73 65 72 74 5d 0a 09 09 69 66  box insert]...if
305e0 20 7b 20 24 62 62 6f 78 20 65 71 20 22 22 20 7d   { $bbox eq "" }
305f0 20 7b 0a 09 09 20 20 20 20 73 65 74 20 78 20 5b   {...    set x [
30600 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72 78 20 24  winfo pointerx $
30610 74 65 78 74 5d 0a 09 09 20 20 20 20 73 65 74 20  text]...    set 
30620 79 20 5b 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72  y [winfo pointer
30630 79 20 24 74 65 78 74 5d 0a 09 09 7d 20 65 6c 73  y $text]...} els
30640 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 78 20  e {...    set x 
30650 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 72 6f  [expr {[winfo ro
30660 6f 74 78 20 24 74 65 78 74 5d 2b 5b 6c 69 6e 64  otx $text]+[lind
30670 65 78 20 24 62 62 6f 78 20 30 5d 7d 5d 0a 09 09  ex $bbox 0]}]...
30680 20 20 20 20 73 65 74 20 79 20 5b 65 78 70 72 20      set y [expr 
30690 7b 5b 77 69 6e 66 6f 20 72 6f 6f 74 79 20 24 74  {[winfo rooty $t
306a0 65 78 74 5d 2b 5b 6c 69 6e 64 65 78 20 24 62 62  ext]+[lindex $bb
306b0 6f 78 20 31 5d 7d 5d 0a 09 09 7d 0a 09 09 74 6b  ox 1]}]...}...tk
306c0 5f 70 6f 70 75 70 20 24 6d 65 6e 75 20 24 78 20  _popup $menu $x 
306d0 24 79 20 30 0a 09 20 20 20 20 7d 20 65 6c 73 65  $y 0..    } else
306e0 20 7b 0a 09 09 24 6d 65 6e 75 20 61 64 64 20 73   {...$menu add s
306f0 65 70 61 72 61 74 6f 72 0a 09 09 24 6d 65 6e 75  eparator...$menu
30700 20 61 64 64 20 63 68 65 63 6b 62 75 74 74 6f 6e   add checkbutton
30710 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 4f 6e 6c 79   -label [_ "Only
30720 20 6d 65 6e 75 22 5d 20 2d 76 61 72 69 61 62 6c   menu"] -variabl
30730 65 20 5c 0a 09 09 20 20 20 20 5b 5b 77 69 6e 66  e \...    [[winf
30740 6f 20 70 61 72 65 6e 74 20 24 6d 65 6e 75 5d 20  o parent $menu] 
30750 67 69 76 65 5f 69 73 5f 62 75 74 74 6f 6e 5f 61  give_is_button_a
30760 63 74 69 76 65 5f 76 61 72 5d 20 5c 0a 09 09 20  ctive_var] \... 
30770 20 20 20 2d 6f 6e 76 61 6c 75 65 20 30 20 2d 6f     -onvalue 0 -o
30780 66 66 76 61 6c 75 65 20 31 0a 09 20 20 20 20 7d  ffvalue 1..    }
30790 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  ..}.    }.}..pro
307a0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4c  c RamDebugger::L
307b0 69 73 74 42 6f 78 44 6f 75 62 6c 65 31 20 7b 20  istBoxDouble1 { 
307c0 6c 69 73 74 62 20 69 74 65 6d 20 7d 20 7b 0a 20  listb item } {. 
307d0 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69     variable opti
307e0 6f 6e 73 0a 0a 20 20 20 20 73 65 74 20 64 61 74  ons..    set dat
307f0 61 20 5b 24 6c 69 73 74 62 20 69 74 65 6d 63 67  a [$listb itemcg
30800 65 74 20 24 69 74 65 6d 20 2d 64 61 74 61 5d 0a  et $item -data].
30810 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78      if { [lindex
30820 20 24 64 61 74 61 20 30 5d 20 3d 3d 20 22 66 6f   $data 0] == "fo
30830 6c 64 65 72 22 20 7d 20 7b 0a 09 73 65 74 20 6f  lder" } {..set o
30840 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69  ptions(defaultdi
30850 72 29 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61  r) [lindex $data
30860 20 31 5d 0a 09 46 69 6c 6c 4c 69 73 74 42 6f 78   1]..FillListBox
30870 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 4f  .    } else {..O
30880 70 65 6e 46 69 6c 65 46 20 5b 6c 69 6e 64 65 78  penFileF [lindex
30890 20 24 64 61 74 61 20 31 5d 0a 20 20 20 20 7d 0a   $data 1].    }.
308a0 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
308b0 67 65 72 3a 3a 4c 69 73 74 62 6f 78 4d 65 6e 75  ger::ListboxMenu
308c0 20 7b 20 6c 69 73 74 62 20 78 20 79 20 69 74 65   { listb x y ite
308d0 6d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62  m } {.    variab
308e0 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a  le currentfile..
308f0 20 20 20 20 73 65 74 20 64 61 74 61 20 5b 24 6c      set data [$l
30900 69 73 74 62 20 69 74 65 6d 63 67 65 74 20 24 69  istb itemcget $i
30910 74 65 6d 20 2d 64 61 74 61 5d 0a 0a 20 20 20 20  tem -data]..    
30920 63 61 74 63 68 20 7b 20 64 65 73 74 72 6f 79 20  catch { destroy 
30930 24 6c 69 73 74 62 2e 6d 65 6e 75 20 7d 0a 20 20  $listb.menu }.  
30940 20 20 73 65 74 20 6d 65 6e 75 20 5b 6d 65 6e 75    set menu [menu
30950 20 24 6c 69 73 74 62 2e 6d 65 6e 75 5d 0a 0a 20   $listb.menu].. 
30960 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20     if { [lindex 
30970 24 64 61 74 61 20 30 5d 20 3d 3d 20 22 66 6f 6c  $data 0] == "fol
30980 64 65 72 22 20 7d 20 7b 0a 09 24 6d 65 6e 75 20  der" } {..$menu 
30990 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62  add command -lab
309a0 65 6c 20 5b 5f 20 22 45 78 70 6c 6f 72 65 22 5d  el [_ "Explore"]
309b0 20 2d 63 6f 6d 6d 61 6e 64 20 5b 63 6f 6e 63 61   -command [conca
309c0 74 20 5b 6c 69 73 74 20 73 65 74 20 5c 0a 09 09  t [list set \...
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
30a00 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69  amDebugger::opti
30a10 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 20  ons(defaultdir) 
30a20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
30a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a50 20 20 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61     [lindex $data
30a60 20 31 5d 5d 20 5c 3b 20 52 61 6d 44 65 62 75 67   1]] \; RamDebug
30a70 67 65 72 3a 3a 46 69 6c 6c 4c 69 73 74 42 6f 78  ger::FillListBox
30a80 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ].    } else {..
30a90 73 65 74 20 6e 61 6d 65 20 5b 6c 69 6e 64 65 78  set name [lindex
30aa0 20 24 64 61 74 61 20 31 5d 0a 09 24 6d 65 6e 75   $data 1]..$menu
30ab0 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61   add command -la
30ac0 62 65 6c 20 5b 5f 20 22 4f 70 65 6e 22 5d 20 2d  bel [_ "Open"] -
30ad0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61  command [list Ra
30ae0 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46  mDebugger::OpenF
30af0 69 6c 65 46 20 24 6e 61 6d 65 5d 0a 09 24 6d 65  ileF $name]..$me
30b00 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d  nu add command -
30b10 6c 61 62 65 6c 20 5b 5f 20 22 4f 70 65 6e 20 26  label [_ "Open &
30b20 20 44 65 62 75 67 22 5d 20 2d 63 6f 6d 6d 61 6e   Debug"] -comman
30b30 64 20 5c 0a 09 20 20 20 20 22 5b 6c 69 73 74 20  d \..    "[list 
30b40 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65  RamDebugger::Ope
30b50 6e 46 69 6c 65 46 20 24 6e 61 6d 65 5d 20 3b 20  nFileF $name] ; 
30b60 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e  RamDebugger::Con
30b70 74 4e 65 78 74 47 55 49 20 72 63 6f 6e 74 22 0a  tNextGUI rcont".
30b80 09 24 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72  .$menu add separ
30b90 61 74 6f 72 0a 09 24 6d 65 6e 75 20 61 64 64 20  ator..$menu add 
30ba0 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b  command -label [
30bb0 5f 20 22 52 65 69 6e 73 74 72 75 6d 65 6e 74 22  _ "Reinstrument"
30bc0 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74  ] -command [list
30bd0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70   RamDebugger::Op
30be0 65 6e 46 69 6c 65 46 20 5c 0a 09 09 20 20 20 20  enFileF \...    
30bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c10 20 20 20 20 20 20 20 20 2d 66 6f 72 63 65 20 32          -force 2
30c20 20 24 6e 61 6d 65 5d 0a 0a 09 73 65 74 20 66 69   $name]...set fi
30c30 6c 65 74 79 70 65 20 5b 47 69 76 65 46 69 6c 65  letype [GiveFile
30c40 54 79 70 65 20 24 6e 61 6d 65 5d 0a 09 69 66 20  Type $name]..if 
30c50 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22  { $filetype == "
30c60 43 2f 43 2b 2b 22 20 7d 20 7b 0a 09 20 20 20 20  C/C++" } {..    
30c70 24 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72 61  $menu add separa
30c80 74 6f 72 0a 09 20 20 20 20 73 65 74 20 77 20 5b  tor..    set w [
30c90 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24  winfo toplevel $
30ca0 6c 69 73 74 62 5d 0a 09 20 20 20 20 24 6d 65 6e  listb]..    $men
30cb0 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
30cc0 61 62 65 6c 20 5b 5f 20 22 43 6f 6d 70 69 6c 65  abel [_ "Compile
30cd0 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73  "] -command [lis
30ce0 74 20 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70  t cproject::Comp
30cf0 69 6c 65 20 24 77 20 24 6e 61 6d 65 5d 0a 09 7d  ile $w $name]..}
30d00 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b  ..if { [regexp {
30d10 4d 61 6b 65 66 69 6c 2e 2a 5b 5e 7e 5d 24 7d 20  Makefil.*[^~]$} 
30d20 24 6e 61 6d 65 5d 20 7d 20 7b 0a 09 20 20 20 20  $name] } {..    
30d30 24 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72 61  $menu add separa
30d40 74 6f 72 0a 09 20 20 20 20 24 6d 65 6e 75 20 61  tor..    $menu a
30d50 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65  dd command -labe
30d60 6c 20 5b 5f 20 22 43 6f 6d 70 69 6c 65 22 5d 20  l [_ "Compile"] 
30d70 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52  -command [list R
30d80 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6d 70  amDebugger::Comp
30d90 69 6c 65 20 24 6e 61 6d 65 5d 0a 09 7d 0a 20 20  ile $name]..}.  
30da0 20 20 7d 0a 20 20 20 20 74 6b 5f 70 6f 70 75 70    }.    tk_popup
30db0 20 24 6d 65 6e 75 20 24 78 20 24 79 0a 7d 0a 0a   $menu $x $y.}..
30dc0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
30dd0 72 3a 3a 53 65 61 72 63 68 49 6e 4c 69 73 74 62  r::SearchInListb
30de0 6f 78 20 7b 20 6c 69 73 74 62 20 65 76 20 63 68  ox { listb ev ch
30df0 61 72 20 65 78 65 63 5f 63 61 6c 6c 62 61 63 6b  ar exec_callback
30e00 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
30e10 65 20 53 65 61 72 63 68 4c 69 73 74 62 6f 78 53  e SearchListboxS
30e20 74 72 69 6e 67 0a 0a 20 20 20 20 69 66 20 7b 20  tring..    if { 
30e30 24 65 76 20 3d 3d 20 22 55 70 22 20 7c 7c 20 24  $ev == "Up" || $
30e40 65 76 20 3d 3d 20 22 44 6f 77 6e 22 20 7d 20 7b  ev == "Down" } {
30e50 0a 09 73 65 74 20 73 65 6c 20 5b 24 6c 69 73 74  ..set sel [$list
30e60 62 20 73 65 6c 65 63 74 69 6f 6e 20 67 65 74 5d  b selection get]
30e70 0a 09 69 66 20 7b 20 24 73 65 6c 20 21 3d 20 22  ..if { $sel != "
30e80 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69  " } {..    set i
30e90 64 78 20 5b 24 6c 69 73 74 62 20 69 6e 64 65 78  dx [$listb index
30ea0 20 24 73 65 6c 5d 0a 09 7d 20 65 6c 73 65 20 7b   $sel]..} else {
30eb0 20 73 65 74 20 69 64 78 20 30 20 7d 0a 09 24 6c   set idx 0 }..$l
30ec0 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 63  istb selection c
30ed0 6c 65 61 72 0a 09 73 65 74 20 69 64 78 65 6e 64  lear..set idxend
30ee0 20 5b 24 6c 69 73 74 62 20 69 6e 64 65 78 20 5b   [$listb index [
30ef0 24 6c 69 73 74 62 20 69 74 65 6d 73 20 65 6e 64  $listb items end
30f00 5d 5d 0a 09 69 66 20 7b 20 24 65 76 20 3d 3d 20  ]]..if { $ev == 
30f10 22 55 70 22 20 7d 20 7b 0a 09 20 20 20 20 69 6e  "Up" } {..    in
30f20 63 72 20 69 64 78 20 2d 31 0a 09 20 20 20 20 69  cr idx -1..    i
30f30 66 20 7b 20 24 69 64 78 20 3c 20 30 20 7d 20 7b  f { $idx < 0 } {
30f40 20 73 65 74 20 69 64 78 20 24 69 64 78 65 6e 64   set idx $idxend
30f50 20 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20   }..} else {..  
30f60 20 20 69 6e 63 72 20 69 64 78 20 0a 09 20 20 20    incr idx ..   
30f70 20 69 66 20 7b 20 24 69 64 78 20 3e 20 24 69 64   if { $idx > $id
30f80 78 65 6e 64 20 7d 20 7b 20 73 65 74 20 69 64 78  xend } { set idx
30f90 20 30 20 7d 0a 09 7d 0a 09 24 6c 69 73 74 62 20   0 }..}..$listb 
30fa0 73 65 6c 65 63 74 69 6f 6e 20 73 65 74 20 5b 24  selection set [$
30fb0 6c 69 73 74 62 20 69 74 65 6d 73 20 24 69 64 78  listb items $idx
30fc0 5d 0a 09 24 6c 69 73 74 62 20 73 65 65 20 5b 24  ]..$listb see [$
30fd0 6c 69 73 74 62 20 69 74 65 6d 73 20 24 69 64 78  listb items $idx
30fe0 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 20  ]..return.    } 
30ff0 65 6c 73 65 69 66 20 7b 20 24 65 76 20 3d 3d 20  elseif { $ev == 
31000 22 48 6f 6d 65 22 20 7d 20 7b 0a 09 24 6c 69 73  "Home" } {..$lis
31010 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 63 6c 65  tb selection cle
31020 61 72 0a 09 24 6c 69 73 74 62 20 73 65 6c 65 63  ar..$listb selec
31030 74 69 6f 6e 20 73 65 74 20 5b 24 6c 69 73 74 62  tion set [$listb
31040 20 69 74 65 6d 73 20 30 5d 0a 09 24 6c 69 73 74   items 0]..$list
31050 62 20 73 65 65 20 5b 24 6c 69 73 74 62 20 69 74  b see [$listb it
31060 65 6d 73 20 30 5d 0a 20 20 20 20 7d 20 65 6c 73  ems 0].    } els
31070 65 69 66 20 7b 20 24 65 76 20 3d 3d 20 22 45 6e  eif { $ev == "En
31080 64 22 20 7d 20 7b 0a 09 24 6c 69 73 74 62 20 73  d" } {..$listb s
31090 65 6c 65 63 74 69 6f 6e 20 63 6c 65 61 72 0a 09  election clear..
310a0 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e  $listb selection
310b0 20 73 65 74 20 5b 24 6c 69 73 74 62 20 69 74 65   set [$listb ite
310c0 6d 73 20 65 6e 64 5d 0a 09 24 6c 69 73 74 62 20  ms end]..$listb 
310d0 73 65 65 20 5b 24 6c 69 73 74 62 20 69 74 65 6d  see [$listb item
310e0 73 20 65 6e 64 5d 0a 09 72 65 74 75 72 6e 0a 20  s end]..return. 
310f0 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 65     } elseif { $e
31100 76 20 3d 3d 20 22 52 65 74 75 72 6e 22 20 7d 20  v == "Return" } 
31110 7b 0a 09 75 70 6c 65 76 65 6c 20 5c 23 30 20 5b  {..uplevel \#0 [
31120 6c 69 73 74 20 24 65 78 65 63 5f 63 61 6c 6c 62  list $exec_callb
31130 61 63 6b 20 24 6c 69 73 74 62 20 5b 24 6c 69 73  ack $listb [$lis
31140 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 67 65 74  tb selection get
31150 5d 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  ]]..return.    }
31160 20 65 6c 73 65 69 66 20 7b 20 24 65 76 20 3d 3d   elseif { $ev ==
31170 20 22 42 61 63 6b 53 70 61 63 65 22 20 7d 20 7b   "BackSpace" } {
31180 0a 09 75 70 6c 65 76 65 6c 20 5c 23 30 20 5b 6c  ..uplevel \#0 [l
31190 69 73 74 20 24 65 78 65 63 5f 63 61 6c 6c 62 61  ist $exec_callba
311a0 63 6b 20 24 6c 69 73 74 62 20 5b 24 6c 69 73 74  ck $listb [$list
311b0 62 20 69 74 65 6d 73 20 30 5d 5d 0a 20 20 20 20  b items 0]].    
311c0 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69  }.    if { [stri
311d0 6e 67 20 69 73 20 77 6f 72 64 63 68 61 72 20 2d  ng is wordchar -
311e0 73 74 72 69 63 74 20 24 63 68 61 72 5d 20 7c 7c  strict $char] ||
311f0 20 5b 73 74 72 69 6e 67 20 69 73 20 70 75 6e 63   [string is punc
31200 74 20 2d 73 74 72 69 63 74 20 24 63 68 61 72 5d  t -strict $char]
31210 20 5c 0a 09 20 20 20 20 20 7c 7c 20 5b 73 74 72   \..     || [str
31220 69 6e 67 20 69 73 20 73 70 61 63 65 20 2d 73 74  ing is space -st
31230 72 69 63 74 20 24 63 68 61 72 5d 20 7d 20 7b 0a  rict $char] } {.
31240 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69  .if { ![info exi
31250 73 74 73 20 53 65 61 72 63 68 4c 69 73 74 62 6f  sts SearchListbo
31260 78 53 74 72 69 6e 67 5d 20 7c 7c 20 5b 73 74 72  xString] || [str
31270 69 6e 67 20 69 6e 64 65 78 20 24 53 65 61 72 63  ing index $Searc
31280 68 4c 69 73 74 62 6f 78 53 74 72 69 6e 67 20 65  hListboxString e
31290 6e 64 5d 20 21 3d 20 24 63 68 61 72 20 7d 20 7b  nd] != $char } {
312a0 0a 09 20 20 20 20 61 70 70 65 6e 64 20 53 65 61  ..    append Sea
312b0 72 63 68 4c 69 73 74 62 6f 78 53 74 72 69 6e 67  rchListboxString
312c0 20 24 63 68 61 72 0a 09 7d 0a 09 73 65 74 20 69   $char..}..set i
312d0 64 78 20 5b 24 6c 69 73 74 62 20 73 65 6c 65 63  dx [$listb selec
312e0 74 69 6f 6e 20 67 65 74 5d 0a 09 69 66 20 7b 20  tion get]..if { 
312f0 5b 6c 6c 65 6e 67 74 68 20 24 69 64 78 5d 20 21  [llength $idx] !
31300 3d 20 31 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  = 1 } {..    set
31310 20 69 64 78 20 30 0a 09 7d 20 65 6c 73 65 20 7b   idx 0..} else {
31320 0a 09 20 20 20 20 73 65 74 20 69 64 78 20 5b 24  ..    set idx [$
31330 6c 69 73 74 62 20 69 6e 64 65 78 20 24 69 64 78  listb index $idx
31340 5d 0a 09 20 20 20 20 69 6e 63 72 20 69 64 78 0a  ]..    incr idx.
31350 09 7d 0a 09 73 65 74 20 66 6f 75 6e 64 20 30 0a  .}..set found 0.
31360 09 66 6f 72 65 61 63 68 20 69 20 5b 24 6c 69 73  .foreach i [$lis
31370 74 62 20 69 74 65 6d 73 20 24 69 64 78 20 65 6e  tb items $idx en
31380 64 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b  d] {..    if { [
31390 73 74 72 69 6e 67 20 6d 61 74 63 68 20 2d 6e 6f  string match -no
313a0 63 61 73 65 20 24 53 65 61 72 63 68 4c 69 73 74  case $SearchList
313b0 62 6f 78 53 74 72 69 6e 67 2a 20 5b 24 6c 69 73  boxString* [$lis
313c0 74 62 20 69 74 65 6d 63 67 65 74 20 24 69 20 2d  tb itemcget $i -
313d0 74 65 78 74 5d 5d 20 7d 20 7b 0a 09 09 24 6c 69  text]] } {...$li
313e0 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 73 65  stb selection se
313f0 74 20 24 69 0a 09 09 24 6c 69 73 74 62 20 73 65  t $i...$listb se
31400 65 20 24 69 0a 09 09 73 65 74 20 66 6f 75 6e 64  e $i...set found
31410 20 31 0a 09 09 62 72 65 61 6b 0a 09 20 20 20 20   1...break..    
31420 7d 0a 09 7d 0a 09 69 66 20 7b 20 21 24 66 6f 75  }..}..if { !$fou
31430 6e 64 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65  nd } {..    fore
31440 61 63 68 20 69 20 5b 24 6c 69 73 74 62 20 69 74  ach i [$listb it
31450 65 6d 73 20 30 20 5b 65 78 70 72 20 24 69 64 78  ems 0 [expr $idx
31460 2d 31 5d 5d 20 7b 0a 09 09 69 66 20 7b 20 5b 73  -1]] {...if { [s
31470 74 72 69 6e 67 20 6d 61 74 63 68 20 2d 6e 6f 63  tring match -noc
31480 61 73 65 20 24 53 65 61 72 63 68 4c 69 73 74 62  ase $SearchListb
31490 6f 78 53 74 72 69 6e 67 2a 20 5b 24 6c 69 73 74  oxString* [$list
314a0 62 20 69 74 65 6d 63 67 65 74 20 24 69 20 2d 74  b itemcget $i -t
314b0 65 78 74 5d 5d 20 7d 20 7b 0a 09 09 20 20 20 20  ext]] } {...    
314c0 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e  $listb selection
314d0 20 73 65 74 20 24 69 0a 09 09 20 20 20 20 24 6c   set $i...    $l
314e0 69 73 74 62 20 73 65 65 20 24 69 0a 09 09 20 20  istb see $i...  
314f0 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a 09 09    set found 1...
31500 20 20 20 20 62 72 65 61 6b 0a 09 09 7d 0a 09 20      break...}.. 
31510 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 21 24     }..}..if { !$
31520 66 6f 75 6e 64 20 7d 20 7b 0a 09 20 20 20 20 62  found } {..    b
31530 65 6c 6c 0a 09 20 20 20 20 73 65 74 20 52 61 6d  ell..    set Ram
31540 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68  Debugger::Search
31550 4c 69 73 74 62 6f 78 53 74 72 69 6e 67 20 22 22  ListboxString ""
31560 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20  ..} else {..    
31570 61 66 74 65 72 20 33 30 30 20 5b 6c 69 73 74 20  after 300 [list 
31580 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  set RamDebugger:
31590 3a 53 65 61 72 63 68 4c 69 73 74 62 6f 78 53 74  :SearchListboxSt
315a0 72 69 6e 67 20 22 22 5d 0a 09 7d 0a 20 20 20 20  ring ""]..}.    
315b0 7d 0a 20 20 20 20 24 6c 69 73 74 62 20 78 76 69  }.    $listb xvi
315c0 65 77 20 6d 6f 76 65 74 6f 20 30 0a 7d 0a 0a 70  ew moveto 0.}..p
315d0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
315e0 3a 4c 69 73 74 42 6f 78 45 76 65 6e 74 73 20 7b  :ListBoxEvents {
315f0 20 6c 69 73 74 62 20 65 78 65 63 5f 63 61 6c 6c   listb exec_call
31600 62 61 63 6b 20 6d 65 6e 75 5f 63 61 6c 6c 62 61  back menu_callba
31610 63 6b 20 7d 20 7b 0a 0a 20 20 20 20 24 6c 69 73  ck } {..    $lis
31620 74 62 20 62 69 6e 64 49 6d 61 67 65 20 3c 31 3e  tb bindImage <1>
31630 20 22 66 6f 63 75 73 20 24 6c 69 73 74 62 20 3b   "focus $listb ;
31640 20 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f   $listb selectio
31650 6e 20 73 65 74 22 0a 20 20 20 20 24 6c 69 73 74  n set".    $list
31660 62 20 62 69 6e 64 54 65 78 74 20 3c 31 3e 20 22  b bindText <1> "
31670 66 6f 63 75 73 20 24 6c 69 73 74 62 20 3b 20 24  focus $listb ; $
31680 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20  listb selection 
31690 73 65 74 22 0a 20 20 20 20 24 6c 69 73 74 62 20  set".    $listb 
316a0 62 69 6e 64 49 6d 61 67 65 20 3c 3c 43 6f 6e 74  bindImage <<Cont
316b0 65 78 74 75 61 6c 50 72 65 73 73 3e 3e 20 22 66  extualPress>> "f
316c0 6f 63 75 73 20 24 6c 69 73 74 62 20 3b 20 24 6c  ocus $listb ; $l
316d0 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 73  istb selection s
316e0 65 74 22 0a 20 20 20 20 24 6c 69 73 74 62 20 62  et".    $listb b
316f0 69 6e 64 54 65 78 74 20 3c 3c 43 6f 6e 74 65 78  indText <<Contex
31700 74 75 61 6c 50 72 65 73 73 3e 3e 20 22 66 6f 63  tualPress>> "foc
31710 75 73 20 24 6c 69 73 74 62 20 3b 20 24 6c 69 73  us $listb ; $lis
31720 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 73 65 74  tb selection set
31730 22 0a 20 20 20 20 24 6c 69 73 74 62 20 62 69 6e  ".    $listb bin
31740 64 49 6d 61 67 65 20 3c 3c 43 6f 6e 74 65 78 74  dImage <<Context
31750 75 61 6c 3e 3e 20 22 24 6d 65 6e 75 5f 63 61 6c  ual>> "$menu_cal
31760 6c 62 61 63 6b 20 24 6c 69 73 74 62 20 25 58 20  lback $listb %X 
31770 25 59 22 0a 20 20 20 20 24 6c 69 73 74 62 20 62  %Y".    $listb b
31780 69 6e 64 54 65 78 74 20 3c 3c 43 6f 6e 74 65 78  indText <<Contex
31790 74 75 61 6c 3e 3e 20 22 24 6d 65 6e 75 5f 63 61  tual>> "$menu_ca
317a0 6c 6c 62 61 63 6b 20 24 6c 69 73 74 62 20 25 58  llback $listb %X
317b0 20 25 59 22 0a 20 20 20 20 24 6c 69 73 74 62 20   %Y".    $listb 
317c0 62 69 6e 64 49 6d 61 67 65 20 3c 44 6f 75 62 6c  bindImage <Doubl
317d0 65 2d 31 3e 20 22 24 65 78 65 63 5f 63 61 6c 6c  e-1> "$exec_call
317e0 62 61 63 6b 20 24 6c 69 73 74 62 22 0a 20 20 20  back $listb".   
317f0 20 24 6c 69 73 74 62 20 62 69 6e 64 54 65 78 74   $listb bindText
31800 20 3c 44 6f 75 62 6c 65 2d 31 3e 20 22 24 65 78   <Double-1> "$ex
31810 65 63 5f 63 61 6c 6c 62 61 63 6b 20 24 6c 69 73  ec_callback $lis
31820 74 62 22 0a 20 20 20 20 62 69 6e 64 20 24 6c 69  tb".    bind $li
31830 73 74 62 20 3c 4b 65 79 50 72 65 73 73 3e 20 5b  stb <KeyPress> [
31840 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
31850 3a 3a 53 65 61 72 63 68 49 6e 4c 69 73 74 62 6f  ::SearchInListbo
31860 78 20 24 6c 69 73 74 62 20 25 4b 20 25 41 20 5c  x $listb %K %A \
31870 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
31880 20 20 20 24 65 78 65 63 5f 63 61 6c 6c 62 61 63     $exec_callbac
31890 6b 5d 0a 0a 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d  k]...}..proc Ram
318a0 44 65 62 75 67 67 65 72 3a 3a 55 6e 64 6f 43 61  Debugger::UndoCa
318b0 6c 6c 62 61 63 6b 20 7b 7d 20 7b 0a 20 20 20 20  llback {} {.    
318c0 4d 61 72 6b 41 73 4e 6f 74 4d 6f 64 69 66 69 65  MarkAsNotModifie
318d0 64 0a 20 20 20 20 62 65 6c 6c 0a 7d 0a 0a 70 72  d.    bell.}..pr
318e0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
318f0 4d 61 72 6b 41 73 4e 6f 74 4d 6f 64 69 66 69 65  MarkAsNotModifie
31900 64 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  d {} {.    varia
31910 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72  ble text.    var
31920 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
31930 65 49 73 4d 6f 64 69 66 69 65 64 0a 0a 20 20 20  eIsModified..   
31940 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69   if { $currentfi
31950 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 7d 20 7b  leIsModified } {
31960 0a 09 23 20 74 61 6b 65 20 6f 75 74 20 74 68 65  ..# take out the
31970 20 6d 6f 64 69 66 69 65 64 20 2a 0a 09 73 65 74   modified *..set
31980 20 74 69 74 6c 65 20 5b 73 74 72 69 6e 67 20 72   title [string r
31990 61 6e 67 65 20 5b 77 6d 20 74 69 74 6c 65 20 5b  ange [wm title [
319a0 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24  winfo toplevel $
319b0 74 65 78 74 5d 5d 20 30 20 65 6e 64 2d 31 5d 0a  text]] 0 end-1].
319c0 09 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f  .wm title [winfo
319d0 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d   toplevel $text]
319e0 20 24 74 69 74 6c 65 0a 09 73 65 74 20 63 75 72   $title..set cur
319f0 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69  rentfileIsModifi
31a00 65 64 20 30 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 70  ed 0.    }.}...p
31a10 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
31a20 3a 43 68 65 63 6b 54 65 78 74 42 65 66 6f 72 65  :CheckTextBefore
31a30 20 7b 20 63 6f 6d 6d 61 6e 64 20 61 72 67 73 20   { command args 
31a40 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
31a50 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62   text.    variab
31a60 6c 65 20 43 68 65 63 6b 54 65 78 74 53 61 76 65  le CheckTextSave
31a70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 43 68  .    variable Ch
31a80 65 63 6b 54 65 78 74 49 6e 61 63 74 69 76 65 0a  eckTextInactive.
31a90 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b 69      .    if { [i
31aa0 6e 66 6f 20 65 78 69 73 74 73 20 43 68 65 63 6b  nfo exists Check
31ab0 54 65 78 74 49 6e 61 63 74 69 76 65 5d 20 26 26  TextInactive] &&
31ac0 20 24 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74   $CheckTextInact
31ad0 69 76 65 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d  ive } { return }
31ae0 0a 0a 20 20 20 20 69 66 20 7b 20 24 63 6f 6d 6d  ..    if { $comm
31af0 61 6e 64 20 65 71 20 22 74 61 67 22 20 26 26 20  and eq "tag" && 
31b00 5b 72 65 67 65 78 70 20 7b 5e 28 61 64 64 7c 64  [regexp {^(add|d
31b10 65 6c 65 74 65 7c 72 65 6d 6f 76 65 29 24 7d 20  elete|remove)$} 
31b20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d  [lindex $args 0]
31b30 5d 20 26 26 20 5c 0a 09 20 20 20 20 20 5b 6c 69  ] && \..     [li
31b40 6e 64 65 78 20 24 61 72 67 73 20 31 5d 20 65 71  ndex $args 1] eq
31b50 20 22 73 65 6c 22 20 7d 20 7b 0a 09 24 74 65 78   "sel" } {..$tex
31b60 74 20 74 61 67 20 72 65 6d 6f 76 65 20 73 65 61  t tag remove sea
31b70 72 63 68 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  rch 1.0 end.    
31b80 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 72 65  }..    if { ![re
31b90 67 65 78 70 20 7b 5e 28 69 6e 73 7c 64 65 6c 29  gexp {^(ins|del)
31ba0 7d 20 24 63 6f 6d 6d 61 6e 64 5d 20 7d 20 7b 20  } $command] } { 
31bb0 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 23 20  return }..    # 
31bc0 66 6f 72 20 74 68 65 20 73 65 61 72 63 68 20 62  for the search b
31bd0 72 61 63 65 73 20 73 74 75 66 66 0a 20 20 20 20  races stuff.    
31be0 24 74 65 78 74 20 74 61 67 20 72 65 6d 6f 76 65  $text tag remove
31bf0 20 74 65 6d 70 6d 61 72 6b 65 72 20 31 2e 30 20   tempmarker 1.0 
31c00 65 6e 64 0a 0a 20 20 20 20 73 77 69 74 63 68 20  end..    switch 
31c10 2d 67 6c 6f 62 20 2d 2d 20 24 63 6f 6d 6d 61 6e  -glob -- $comman
31c20 64 20 7b 0a 09 69 6e 73 2a 20 7b 0a 09 20 20 20  d {..ins* {..   
31c30 20 73 65 74 20 69 64 78 31 20 5b 24 74 65 78 74   set idx1 [$text
31c40 20 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24   index [lindex $
31c50 61 72 67 73 20 30 5d 5d 0a 09 20 20 20 20 73 65  args 0]]..    se
31c60 74 20 74 78 74 20 5b 6c 69 6e 64 65 78 20 24 61  t txt [lindex $a
31c70 72 67 73 20 31 5d 0a 09 20 20 20 20 73 65 74 20  rgs 1]..    set 
31c80 6c 31 20 5b 73 63 61 6e 20 24 69 64 78 31 20 25  l1 [scan $idx1 %
31c90 64 5d 0a 09 20 20 20 20 73 65 74 20 6c 32 20 5b  d]..    set l2 [
31ca0 65 78 70 72 20 24 6c 31 2b 5b 72 65 67 65 78 70  expr $l1+[regexp
31cb0 20 2d 61 6c 6c 20 7b 5c 6e 7d 20 24 74 78 74 5d   -all {\n} $txt]
31cc0 5d 0a 09 7d 0a 09 64 65 6c 2a 20 7b 0a 09 20 20  ]..}..del* {..  
31cd0 20 20 73 65 74 20 69 64 78 31 20 5b 24 74 65 78    set idx1 [$tex
31ce0 74 20 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20  t index [lindex 
31cf0 24 61 72 67 73 20 30 5d 5d 0a 09 20 20 20 20 73  $args 0]]..    s
31d00 65 74 20 69 64 78 32 20 5b 6c 69 6e 64 65 78 20  et idx2 [lindex 
31d10 24 61 72 67 73 20 31 5d 0a 09 20 20 20 20 69 66  $args 1]..    if
31d20 20 7b 20 24 69 64 78 32 20 3d 3d 20 22 22 20 7d   { $idx2 == "" }
31d30 20 7b 0a 09 09 73 65 74 20 69 64 78 32 20 5b 24   {...set idx2 [$
31d40 74 65 78 74 20 69 6e 64 65 78 20 22 24 69 64 78  text index "$idx
31d50 31 2b 31 63 22 5d 0a 09 20 20 20 20 7d 20 65 6c  1+1c"]..    } el
31d60 73 65 20 7b 0a 09 09 73 65 74 20 69 64 78 32 20  se {...set idx2 
31d70 5b 24 74 65 78 74 20 69 6e 64 65 78 20 24 69 64  [$text index $id
31d80 78 32 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  x2]..    }..    
31d90 73 65 74 20 74 78 74 20 5b 24 74 65 78 74 20 67  set txt [$text g
31da0 65 74 20 24 69 64 78 31 20 24 69 64 78 32 5d 0a  et $idx1 $idx2].
31db0 09 20 20 20 20 73 65 74 20 6c 31 20 5b 73 63 61  .    set l1 [sca
31dc0 6e 20 24 69 64 78 31 20 25 64 5d 0a 09 20 20 20  n $idx1 %d]..   
31dd0 20 73 65 74 20 6c 32 20 5b 73 63 61 6e 20 24 69   set l2 [scan $i
31de0 64 78 32 20 25 64 5d 0a 09 7d 0a 20 20 20 20 7d  dx2 %d]..}.    }
31df0 0a 20 20 20 20 73 65 74 20 4e 75 6d 6c 69 6e 65  .    set Numline
31e00 73 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69  s [scan [$text i
31e10 6e 64 65 78 20 65 6e 64 2d 31 63 5d 20 25 64 5d  ndex end-1c] %d]
31e20 0a 20 20 20 20 73 65 74 20 43 68 65 63 6b 54 65  .    set CheckTe
31e30 78 74 53 61 76 65 20 5b 6c 69 73 74 20 24 6c 31  xtSave [list $l1
31e40 20 24 6c 32 20 24 74 78 74 20 24 4e 75 6d 6c 69   $l2 $txt $Numli
31e50 6e 65 73 5d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d  nes].}..proc Ram
31e60 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b 54  Debugger::CheckT
31e70 65 78 74 20 7b 20 63 6f 6d 6d 61 6e 64 20 61 72  ext { command ar
31e80 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  gs } {.    varia
31e90 62 6c 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76  ble marker.    v
31ea0 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20  ariable text.   
31eb0 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75   variable instru
31ec0 6d 65 6e 74 65 64 66 69 6c 65 73 50 0a 20 20 20  mentedfilesP.   
31ed0 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75   variable instru
31ee0 6d 65 6e 74 65 64 66 69 6c 65 73 52 0a 20 20 20  mentedfilesR.   
31ef0 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75   variable instru
31f00 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a  mentedfilesInfo.
31f10 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72      variable cur
31f20 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72  rentfile.    var
31f30 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c  iable currentfil
31f40 65 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20  e_secondary.    
31f50 76 61 72 69 61 62 6c 65 20 43 68 65 63 6b 54 65  variable CheckTe
31f60 78 74 53 61 76 65 0a 20 20 20 20 76 61 72 69 61  xtSave.    varia
31f70 62 6c 65 20 43 68 65 63 6b 54 65 78 74 49 6e 61  ble CheckTextIna
31f80 63 74 69 76 65 0a 20 20 20 20 76 61 72 69 61 62  ctive.    variab
31f90 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 0a  le breakpoints..
31fa0 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65      if { [info e
31fb0 78 69 73 74 73 20 43 68 65 63 6b 54 65 78 74 49  xists CheckTextI
31fc0 6e 61 63 74 69 76 65 5d 20 26 26 20 24 43 68 65  nactive] && $Che
31fd0 63 6b 54 65 78 74 49 6e 61 63 74 69 76 65 20 7d  ckTextInactive }
31fe0 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20   { return }..   
31ff0 20 66 6f 72 65 61 63 68 20 22 6c 31 20 6c 32 20   foreach "l1 l2 
32000 74 78 74 20 4e 75 6d 6c 69 6e 65 73 4f 6c 64 22  txt NumlinesOld"
32010 20 24 43 68 65 63 6b 54 65 78 74 53 61 76 65 20   $CheckTextSave 
32020 62 72 65 61 6b 0a 20 20 20 20 69 66 20 7b 20 24  break.    if { $
32030 74 78 74 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65  txt == "" } { re
32040 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 65 74 20  turn }..    set 
32050 66 69 6c 65 74 79 70 65 20 5b 47 69 76 65 46 69  filetype [GiveFi
32060 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e 74 66  leType $currentf
32070 69 6c 65 5d 0a 0a 20 20 20 20 73 77 69 74 63 68  ile]..    switch
32080 20 2d 67 6c 6f 62 20 2d 2d 20 24 63 6f 6d 6d 61   -glob -- $comma
32090 6e 64 20 7b 0a 09 69 6e 73 2a 20 7b 0a 09 20 20  nd {..ins* {..  
320a0 20 20 73 65 74 20 6c 31 5f 6f 6c 64 20 24 6c 31    set l1_old $l1
320b0 0a 09 20 20 20 20 73 65 74 20 6c 32 5f 6f 6c 64  ..    set l2_old
320c0 20 24 6c 31 0a 09 20 20 20 20 73 65 74 20 6c 31   $l1..    set l1
320d0 5f 6e 65 77 20 24 6c 31 0a 09 20 20 20 20 73 65  _new $l1..    se
320e0 74 20 6c 32 5f 6e 65 77 20 24 6c 32 0a 09 7d 0a  t l2_new $l2..}.
320f0 09 64 65 6c 2a 20 7b 0a 09 20 20 20 20 73 65 74  .del* {..    set
32100 20 6c 31 5f 6f 6c 64 20 24 6c 31 0a 09 20 20 20   l1_old $l1..   
32110 20 73 65 74 20 6c 32 5f 6f 6c 64 20 24 6c 32 0a   set l2_old $l2.
32120 09 20 20 20 20 73 65 74 20 6c 31 5f 6e 65 77 20  .    set l1_new 
32130 24 6c 31 0a 09 20 20 20 20 73 65 74 20 6c 32 5f  $l1..    set l2_
32140 6e 65 77 20 24 6c 31 0a 09 7d 0a 20 20 20 20 7d  new $l1..}.    }
32150 0a 0a 20 20 20 20 73 65 74 20 64 65 6c 74 61 20  ..    set delta 
32160 5b 65 78 70 72 20 7b 24 6c 32 5f 6e 65 77 2d 24  [expr {$l2_new-$
32170 6c 32 5f 6f 6c 64 7d 5d 0a 20 20 20 20 69 66 20  l2_old}].    if 
32180 7b 20 24 64 65 6c 74 61 20 21 3d 20 30 20 7d 20  { $delta != 0 } 
32190 7b 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 30  {..for { set i 0
321a0 20 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e 67   } { $i < [lleng
321b0 74 68 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 5d  th $breakpoints]
321c0 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a   } { incr i } {.
321d0 09 20 20 20 20 73 65 74 20 62 72 20 5b 6c 69 6e  .    set br [lin
321e0 64 65 78 20 24 62 72 65 61 6b 70 6f 69 6e 74 73  dex $breakpoints
321f0 20 24 69 5d 0a 09 20 20 20 20 69 66 20 7b 20 5b   $i]..    if { [
32200 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 5b 6c  AreFilesEqual [l
32210 69 6e 64 65 78 20 24 62 72 20 32 5d 20 24 63 75  index $br 2] $cu
32220 72 72 65 6e 74 66 69 6c 65 5d 20 7d 20 7b 0a 09  rrentfile] } {..
32230 09 73 65 74 20 6c 69 6e 65 20 5b 6c 69 6e 64 65  .set line [linde
32240 78 20 24 62 72 20 33 5d 0a 09 09 69 66 20 7b 20  x $br 3]...if { 
32250 24 64 65 6c 74 61 20 3c 20 30 20 26 26 20 24 6c  $delta < 0 && $l
32260 69 6e 65 20 3e 3d 20 24 6c 32 5f 6e 65 77 20 26  ine >= $l2_new &
32270 26 20 24 6c 69 6e 65 20 3c 20 24 6c 32 5f 6f 6c  & $line < $l2_ol
32280 64 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20  d } {...    set 
32290 62 72 65 61 6b 70 6f 69 6e 74 73 20 5b 6c 72 65  breakpoints [lre
322a0 70 6c 61 63 65 20 24 62 72 65 61 6b 70 6f 69 6e  place $breakpoin
322b0 74 73 20 24 69 20 24 69 5d 0a 09 09 20 20 20 20  ts $i $i]...    
322c0 55 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42 72  UpdateArrowAndBr
322d0 65 61 6b 20 24 6c 69 6e 65 20 30 20 22 22 0a 09  eak $line 0 ""..
322e0 09 20 20 20 20 69 6e 63 72 20 69 20 2d 31 20 3b  .    incr i -1 ;
322f0 23 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 68 61  # breakpoints ha
32300 73 20 6e 6f 77 20 6f 6e 65 20 65 6c 65 6d 65 6e  s now one elemen
32310 74 20 6c 65 73 73 0a 09 09 7d 0a 09 09 69 66 20  t less...}...if 
32320 7b 20 24 6c 69 6e 65 20 3e 3d 20 24 6c 32 5f 6f  { $line >= $l2_o
32330 6c 64 20 7d 20 7b 0a 09 09 20 20 20 20 55 70 64  ld } {...    Upd
32340 61 74 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b  ateArrowAndBreak
32350 20 24 6c 69 6e 65 20 30 20 22 22 0a 09 09 20 20   $line 0 ""...  
32360 20 20 73 65 74 20 6c 69 6e 65 20 5b 65 78 70 72    set line [expr
32370 20 7b 24 6c 69 6e 65 2b 24 64 65 6c 74 61 7d 5d   {$line+$delta}]
32380 0a 09 09 20 20 20 20 73 65 74 20 62 72 20 5b 6c  ...    set br [l
32390 72 65 70 6c 61 63 65 20 24 62 72 20 33 20 33 20  replace $br 3 3 
323a0 24 6c 69 6e 65 5d 0a 09 09 20 20 20 20 73 65 74  $line]...    set
323b0 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 5b 6c 72   breakpoints [lr
323c0 65 70 6c 61 63 65 20 24 62 72 65 61 6b 70 6f 69  eplace $breakpoi
323d0 6e 74 73 20 24 69 20 24 69 20 24 62 72 5d 0a 09  nts $i $i $br]..
323e0 09 20 20 20 20 55 70 64 61 74 65 41 72 72 6f 77  .    UpdateArrow
323f0 41 6e 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 31  AndBreak $line 1
32400 20 22 22 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09   ""...}..    }..
32410 7d 0a 09 55 70 64 61 74 65 52 65 6d 6f 74 65 42  }..UpdateRemoteB
32420 72 65 61 6b 73 0a 20 20 20 20 7d 0a 0a 20 20 20  reaks.    }..   
32430 20 73 65 74 20 4e 75 6d 6c 69 6e 65 73 20 5b 73   set Numlines [s
32440 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78  can [$text index
32450 20 65 6e 64 5d 20 25 64 5d 0a 20 20 20 20 73 65   end] %d].    se
32460 74 20 66 6f 6e 74 20 5b 24 74 65 78 74 20 63 67  t font [$text cg
32470 65 74 20 2d 66 6f 6e 74 5d 0a 20 20 20 20 24 6d  et -font].    $m
32480 61 72 6b 65 72 20 63 6f 6e 66 69 67 75 72 65 20  arker configure 
32490 2d 73 63 72 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c  -scrollregion [l
324a0 69 73 74 20 30 20 30 20 5b 77 69 6e 66 6f 20 72  ist 0 0 [winfo r
324b0 65 71 77 69 64 74 68 20 24 6d 61 72 6b 65 72 5d  eqwidth $marker]
324c0 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20   \...           
324d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 65                [e
324e0 78 70 72 20 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66  xpr $Numlines*[f
324f0 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 6f 6e  ont metrics $fon
32500 74 20 2d 6c 69 6e 65 73 70 61 63 65 5d 5d 5d 0a  t -linespace]]].
32510 0a 20 20 20 20 73 65 74 20 64 69 66 66 20 5b 65  .    set diff [e
32520 78 70 72 20 24 6c 32 2d 24 6c 31 5d 0a 0a 20 20  xpr $l2-$l1]..  
32530 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78    if { ![info ex
32540 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65  ists instrumente
32550 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72  dfilesInfo($curr
32560 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 20 72 65  entfile)] } { re
32570 74 75 72 6e 20 7d 0a 0a 20 20 20 20 77 68 69 6c  turn }..    whil
32580 65 20 7b 20 24 6c 31 5f 6f 6c 64 20 3e 20 31 20  e { $l1_old > 1 
32590 7d 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65  } {..if { [linde
325a0 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66  x $instrumentedf
325b0 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e  ilesInfo($curren
325c0 74 66 69 6c 65 29 20 24 6c 31 5f 6f 6c 64 2d 31  tfile) $l1_old-1
325d0 20 31 5d 20 65 71 20 22 6e 22 20 7d 20 7b 0a 09   1] eq "n" } {..
325e0 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a      set found 1.
325f0 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73  .} else {..    s
32600 65 74 20 66 6f 75 6e 64 20 30 0a 09 7d 0a 09 69  et found 0..}..i
32610 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 65 71  f { $filetype eq
32620 20 22 43 2f 43 2b 2b 22 20 26 26 20 5b 72 65 67   "C/C++" && [reg
32630 65 78 70 20 7b 5e 5c 73 2a 28 23 7c 2f 2f 7c 2f  exp {^\s*(#|//|/
32640 5c 2a 29 7d 20 5b 24 74 65 78 74 20 67 65 74 20  \*)} [$text get 
32650 24 6c 31 5f 6f 6c 64 2e 30 20 22 24 6c 31 5f 6f  $l1_old.0 "$l1_o
32660 6c 64 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 5d 20  ld.0 lineend"]] 
32670 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 6f 75  } {..    set fou
32680 6e 64 20 30 0a 09 7d 0a 09 69 66 20 7b 20 24 66  nd 0..}..if { $f
32690 6f 75 6e 64 20 7d 20 7b 20 62 72 65 61 6b 20 7d  ound } { break }
326a0 0a 09 69 6e 63 72 20 6c 31 5f 6e 65 77 20 2d 31  ..incr l1_new -1
326b0 0a 09 69 6e 63 72 20 6c 31 5f 6f 6c 64 20 2d 31  ..incr l1_old -1
326c0 0a 20 20 20 20 7d 0a 0a 23 20 20 20 20 20 73 65  .    }..#     se
326d0 74 20 6c 65 76 65 6c 30 20 5b 6c 69 6e 64 65 78  t level0 [lindex
326e0 20 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74 72 75   [lindex $instru
326f0 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28  mentedfilesInfo(
32700 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5c 0a  $currentfile) \.
32710 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
32720 20 20 5b 65 78 70 72 20 24 6c 31 5f 6f 6c 64 2d    [expr $l1_old-
32730 31 5d 5d 20 30 5d 0a 23 20 20 20 20 20 73 65 74  1]] 0].#     set
32740 20 6c 65 76 65 6c 20 24 6c 65 76 65 6c 30 0a 23   level $level0.#
32750 20 20 20 20 20 77 68 69 6c 65 20 7b 20 24 6c 65       while { $le
32760 76 65 6c 30 20 3e 20 30 20 26 26 20 24 6c 65 76  vel0 > 0 && $lev
32770 65 6c 20 3d 3d 20 24 6c 65 76 65 6c 30 20 7d 20  el == $level0 } 
32780 7b 0a 23 20 20 20 20 20 20 20 20 20 69 6e 63 72  {.#         incr
32790 20 6c 31 5f 6e 65 77 20 2d 31 0a 23 20 20 20 20   l1_new -1.#    
327a0 20 20 20 20 20 69 6e 63 72 20 6c 31 5f 6f 6c 64       incr l1_old
327b0 20 2d 31 0a 23 20 20 20 20 20 20 20 20 20 73 65   -1.#         se
327c0 74 20 6c 65 76 65 6c 20 5b 6c 69 6e 64 65 78 20  t level [lindex 
327d0 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74 72 75 6d  [lindex $instrum
327e0 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24  entedfilesInfo($
327f0 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5c 0a 23  currentfile) \.#
32800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32810 20 20 20 20 20 5b 65 78 70 72 20 24 6c 31 5f 6f       [expr $l1_o
32820 6c 64 2d 31 5d 5d 20 30 5d 0a 23 20 20 20 20 20  ld-1]] 0].#     
32830 7d 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65  }.    if { [rege
32840 78 70 20 7b 28 3f 6e 29 5e 5b 5e 5c 5b 5d 2a 5c  xp {(?n)^[^\[]*\
32850 5d 5c 73 2a 24 7d 20 5b 24 74 65 78 74 20 67 65  ]\s*$} [$text ge
32860 74 20 24 6c 31 5f 6e 65 77 2e 30 20 22 24 6c 32  t $l1_new.0 "$l2
32870 5f 6e 65 77 2e 30 20 6c 69 6e 65 65 6e 64 22 5d  _new.0 lineend"]
32880 5d 20 26 26 20 24 6c 31 5f 6f 6c 64 20 3e 20 31  ] && $l1_old > 1
32890 20 26 26 0a 09 20 5b 6c 69 6e 64 65 78 20 5b 6c   &&.. [lindex [l
328a0 69 6e 64 65 78 20 24 69 6e 73 74 72 75 6d 65 6e  index $instrumen
328b0 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75  tedfilesInfo($cu
328c0 72 72 65 6e 74 66 69 6c 65 29 20 5b 65 78 70 72  rrentfile) [expr
328d0 20 24 6c 31 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 20   $l1_old-1]] 0] 
328e0 3e 20 30 20 7d 20 7b 0a 09 73 65 74 20 6e 65 77  > 0 } {..set new
328f0 6c 65 76 65 6c 20 5b 65 78 70 72 20 7b 5b 6c 69  level [expr {[li
32900 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24 69 6e  ndex [lindex $in
32910 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49  strumentedfilesI
32920 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65  nfo($currentfile
32930 29 20 5b 65 78 70 72 20 24 6c 31 5f 6f 6c 64 2d  ) [expr $l1_old-
32940 31 5d 5d 20 30 5d 2d 31 7d 5d 0a 09 77 68 69 6c  1]] 0]-1}]..whil
32950 65 20 7b 20 24 6c 31 5f 6f 6c 64 20 3e 20 31 20  e { $l1_old > 1 
32960 26 26 20 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64  && [lindex [lind
32970 65 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64  ex $instrumented
32980 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65  filesInfo($curre
32990 6e 74 66 69 6c 65 29 20 5b 65 78 70 72 20 24 6c  ntfile) [expr $l
329a0 31 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 20 3e 20 24  1_old-1]] 0] > $
329b0 6e 65 77 6c 65 76 65 6c 20 7d 20 7b 0a 09 20 20  newlevel } {..  
329c0 20 20 69 6e 63 72 20 6c 31 5f 6e 65 77 20 2d 31    incr l1_new -1
329d0 0a 09 20 20 20 20 69 6e 63 72 20 6c 31 5f 6f 6c  ..    incr l1_ol
329e0 64 20 2d 31 0a 09 7d 0a 20 20 20 20 7d 0a 20 20  d -1..}.    }.  
329f0 20 20 77 68 69 6c 65 20 7b 20 24 6c 32 5f 6f 6c    while { $l2_ol
32a00 64 20 3c 20 24 4e 75 6d 6c 69 6e 65 73 4f 6c 64  d < $NumlinesOld
32a10 20 7d 20 7b 0a 09 69 6e 63 72 20 6c 32 5f 6e 65   } {..incr l2_ne
32a20 77 0a 09 69 6e 63 72 20 6c 32 5f 6f 6c 64 0a 09  w..incr l2_old..
32a30 73 65 74 20 73 74 61 74 65 5f 63 75 72 72 20 5b  set state_curr [
32a40 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24  lindex [lindex $
32a50 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65  instrumentedfile
32a60 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69  sInfo($currentfi
32a70 6c 65 29 20 5b 65 78 70 72 20 24 6c 32 5f 6f 6c  le) [expr $l2_ol
32a80 64 2d 31 5d 5d 20 31 5d 0a 09 69 66 20 7b 20 24  d-1]] 1]..if { $
32a90 6c 32 5f 6f 6c 64 20 3c 3d 20 24 4e 75 6d 6c 69  l2_old <= $Numli
32aa0 6e 65 73 4f 6c 64 20 7d 20 7b 0a 09 20 20 20 20  nesOld } {..    
32ab0 73 65 74 20 73 74 61 74 65 5f 6e 65 78 74 20 5b  set state_next [
32ac0 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24  lindex [lindex $
32ad0 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65  instrumentedfile
32ae0 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69  sInfo($currentfi
32af0 6c 65 29 20 24 6c 32 5f 6f 6c 64 5d 20 31 5d 0a  le) $l2_old] 1].
32b00 09 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 73 74  .} else { set st
32b10 61 74 65 5f 6e 65 78 74 20 22 22 20 7d 0a 09 69  ate_next "" }..i
32b20 66 20 7b 20 24 73 74 61 74 65 5f 63 75 72 72 20  f { $state_curr 
32b30 3d 3d 20 22 6e 22 20 26 26 20 24 73 74 61 74 65  == "n" && $state
32b40 5f 6e 65 78 74 20 21 3d 20 22 63 22 20 7d 20 7b  _next != "c" } {
32b50 20 62 72 65 61 6b 20 7d 0a 20 20 20 20 7d 0a 0a   break }.    }..
32b60 20 20 20 20 73 65 74 20 6f 6c 64 6c 65 76 65 6c      set oldlevel
32b70 20 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78   [lindex [lindex
32b80 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69   $instrumentedfi
32b90 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74  lesInfo($current
32ba0 66 69 6c 65 29 20 5b 65 78 70 72 20 24 6c 31 5f  file) [expr $l1_
32bb0 6f 6c 64 2d 31 5d 5d 20 30 5d 0a 20 20 20 20 0a  old-1]] 0].    .
32bc0 20 20 20 20 73 65 74 20 62 6c 6f 63 6b 20 5b 24      set block [$
32bd0 74 65 78 74 20 67 65 74 20 24 6c 31 5f 6e 65 77  text get $l1_new
32be0 2e 30 20 22 24 6c 32 5f 6e 65 77 2e 30 20 6c 69  .0 "$l2_new.0 li
32bf0 6e 65 65 6e 64 22 5d 5c 6e 0a 20 20 20 20 73 65  neend"]\n.    se
32c00 74 20 62 6c 6f 63 6b 69 6e 66 6f 20 22 22 0a 20  t blockinfo "". 
32c10 20 20 20 73 77 69 74 63 68 20 24 66 69 6c 65 74     switch $filet
32c20 79 70 65 20 7b 0a 09 54 43 4c 20 7b 0a 09 20 20  ype {..TCL {..  
32c30 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68    set err [catch
32c40 20 7b 20 49 6e 73 74 72 75 6d 65 6e 74 65 72 3a   { Instrumenter:
32c50 3a 44 6f 57 6f 72 6b 46 6f 72 54 63 6c 20 24 62  :DoWorkForTcl $b
32c60 6c 6f 63 6b 20 30 20 6e 65 77 62 6c 6f 63 6b 50  lock 0 newblockP
32c70 20 6e 65 77 62 6c 6f 63 6b 52 20 62 6c 6f 63 6b   newblockR block
32c80 69 6e 66 6f 20 30 20 7d 20 65 72 72 73 74 72 69  info 0 } errstri
32c90 6e 67 5d 0a 09 7d 0a 09 43 2f 43 2b 2b 20 7b 0a  ng]..}..C/C++ {.
32ca0 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61  .    set err [ca
32cb0 74 63 68 20 7b 20 49 6e 73 74 72 75 6d 65 6e 74  tch { Instrument
32cc0 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 43 2b 2b  er::DoWorkForC++
32cd0 20 24 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66   $block blockinf
32ce0 6f 20 30 20 24 6f 6c 64 6c 65 76 65 6c 20 7d 20  o 0 $oldlevel } 
32cf0 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20  errstring]..    
32d00 73 65 74 20 6f 6c 64 6c 65 76 65 6c 20 30 0a 09  set oldlevel 0..
32d10 7d 0a 09 58 4d 4c 20 7b 0a 09 20 20 20 20 73 65  }..XML {..    se
32d20 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 49  t err [catch { I
32d30 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57  nstrumenter::DoW
32d40 6f 72 6b 46 6f 72 58 4d 4c 20 24 62 6c 6f 63 6b  orkForXML $block
32d50 20 62 6c 6f 63 6b 69 6e 66 6f 20 30 20 24 6f 6c   blockinfo 0 $ol
32d60 64 6c 65 76 65 6c 20 30 20 7d 20 65 72 72 73 74  dlevel 0 } errst
32d70 72 69 6e 67 5d 0a 09 20 20 20 20 73 65 74 20 6f  ring]..    set o
32d80 6c 64 6c 65 76 65 6c 20 30 0a 09 7d 0a 09 22 47  ldlevel 0..}.."G
32d90 69 44 20 42 41 53 20 66 69 6c 65 22 20 7b 0a 09  iD BAS file" {..
32da0 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74      set err [cat
32db0 63 68 20 7b 20 49 6e 73 74 72 75 6d 65 6e 74 65  ch { Instrumente
32dc0 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 42 61 73 20  r::DoWorkForBas 
32dd0 24 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 6f  $block blockinfo
32de0 20 30 20 24 6f 6c 64 6c 65 76 65 6c 20 7d 20 65   0 $oldlevel } e
32df0 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 73  rrstring]..    s
32e00 65 74 20 6f 6c 64 6c 65 76 65 6c 20 30 0a 09 7d  et oldlevel 0..}
32e10 0a 09 22 47 69 44 20 64 61 74 61 20 66 69 6c 65  .."GiD data file
32e20 73 22 20 7b 0a 09 20 20 20 20 73 65 74 20 65 72  s" {..    set er
32e30 72 20 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 72  r [catch { Instr
32e40 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46  umenter::DoWorkF
32e50 6f 72 47 69 44 44 61 74 61 20 24 62 6c 6f 63 6b  orGiDData $block
32e60 20 62 6c 6f 63 6b 69 6e 66 6f 20 30 20 24 6f 6c   blockinfo 0 $ol
32e70 64 6c 65 76 65 6c 20 7d 20 65 72 72 73 74 72 69  dlevel } errstri
32e80 6e 67 5d 0a 09 20 20 20 20 73 65 74 20 6f 6c 64  ng]..    set old
32e90 6c 65 76 65 6c 20 30 0a 09 7d 0a 09 22 4d 61 6b  level 0..}.."Mak
32ea0 65 66 69 6c 65 22 20 7b 0a 09 20 20 20 20 73 65  efile" {..    se
32eb0 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 49  t err [catch { I
32ec0 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57  nstrumenter::DoW
32ed0 6f 72 6b 46 6f 72 4d 61 6b 65 66 69 6c 65 20 24  orkForMakefile $
32ee0 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 6f 20  block blockinfo 
32ef0 30 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09  0 } errstring]..
32f00 20 20 20 20 73 65 74 20 6f 6c 64 6c 65 76 65 6c      set oldlevel
32f10 20 30 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20   0..}.    }..   
32f20 20 73 65 74 20 62 6c 6f 63 6b 69 6e 66 6f 32 20   set blockinfo2 
32f30 22 22 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 74  "".    for { set
32f40 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b 65   i 0 } { $i < [e
32f50 78 70 72 20 7b 24 6c 32 5f 6e 65 77 2d 24 6c 31  xpr {$l2_new-$l1
32f60 5f 6e 65 77 2b 31 7d 5d 20 7d 20 7b 20 69 6e 63  _new+1}] } { inc
32f70 72 20 69 20 7d 20 7b 0a 09 73 65 74 20 62 69 20  r i } {..set bi 
32f80 5b 6c 69 6e 64 65 78 20 24 62 6c 6f 63 6b 69 6e  [lindex $blockin
32f90 66 6f 20 24 69 5d 0a 09 69 66 20 7b 20 24 62 69  fo $i]..if { $bi
32fa0 20 65 71 20 22 22 20 7d 20 7b 20 73 65 74 20 62   eq "" } { set b
32fb0 69 20 5b 6c 69 73 74 20 30 20 6e 5d 20 7d 0a 09  i [list 0 n] }..
32fc0 6c 61 70 70 65 6e 64 20 62 6c 6f 63 6b 69 6e 66  lappend blockinf
32fd0 6f 32 20 5b 63 6f 6e 63 61 74 20 5b 65 78 70 72  o2 [concat [expr
32fe0 20 24 6f 6c 64 6c 65 76 65 6c 2b 5b 6c 69 6e 64   $oldlevel+[lind
32ff0 65 78 20 24 62 69 20 30 5d 5d 20 5b 6c 72 61 6e  ex $bi 0]] [lran
33000 67 65 20 24 62 69 20 31 20 65 6e 64 5d 5d 0a 20  ge $bi 1 end]]. 
33010 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 69 6e     }..    set in
33020 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49  strumentedfilesI
33030 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65  nfo($currentfile
33040 29 20 5b 65 76 61 6c 20 6c 72 65 70 6c 61 63 65  ) [eval lreplace
33050 20 5b 6c 69 73 74 20 24 69 6e 73 74 72 75 6d 65   [list $instrume
33060 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63  ntedfilesInfo($c
33070 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 5c 0a 09  urrentfile)] \..
33080 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330a0 20 20 5b 65 78 70 72 20 24 6c 31 5f 6f 6c 64 2d    [expr $l1_old-
330b0 31 5d 20 5b 65 78 70 72 20 24 6c 32 5f 6f 6c 64  1] [expr $l2_old
330c0 2d 31 5d 20 24 62 6c 6f 63 6b 69 6e 66 6f 32 5d  -1] $blockinfo2]
330d0 0a 0a 20 20 20 20 43 6f 6c 6f 72 69 7a 65 4c 69  ..    ColorizeLi
330e0 6e 65 73 20 24 6c 31 5f 6e 65 77 20 24 6c 32 5f  nes $l1_new $l2_
330f0 6e 65 77 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e  new.    if { [in
33100 66 6f 20 65 78 69 73 74 73 20 63 75 72 72 65 6e  fo exists curren
33110 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d  tfile_secondary]
33120 20 26 26 20 24 63 75 72 72 65 6e 74 66 69 6c 65   && $currentfile
33130 20 65 71 20 24 63 75 72 72 65 6e 74 66 69 6c 65   eq $currentfile
33140 5f 73 65 63 6f 6e 64 61 72 79 20 7d 20 7b 0a 09  _secondary } {..
33150 43 6f 6c 6f 72 69 7a 65 4c 69 6e 65 73 20 24 6c  ColorizeLines $l
33160 31 5f 6e 65 77 20 24 6c 32 5f 6e 65 77 20 74 65  1_new $l2_new te
33170 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20  xt_secondary.   
33180 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e   }..    if { [in
33190 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75  fo exists instru
331a0 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75  mentedfilesP($cu
331b0 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a  rrentfile)] } {.
331c0 09 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e  .unset instrumen
331d0 74 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65  tedfilesP($curre
331e0 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 75 6d 65  ntfile) instrume
331f0 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72  ntedfilesR($curr
33200 65 6e 74 66 69 6c 65 29 0a 20 20 20 20 7d 0a 20  entfile).    }. 
33210 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78     if { [info ex
33220 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65  ists instrumente
33230 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72  dfilesTime($curr
33240 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 75  entfile)] } {..u
33250 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65  nset instrumente
33260 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72  dfilesTime($curr
33270 65 6e 74 66 69 6c 65 29 0a 20 20 20 20 7d 0a 20  entfile).    }. 
33280 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20     if { [string 
33290 6d 61 74 63 68 20 69 6e 73 2a 20 24 63 6f 6d 6d  match ins* $comm
332a0 61 6e 64 5d 20 26 26 20 5b 24 74 65 78 74 20 67  and] && [$text g
332b0 65 74 20 22 69 6e 73 65 72 74 2d 31 63 22 5d 20  et "insert-1c"] 
332c0 3d 3d 20 22 5c 7d 22 20 7c 7c 20 5c 0a 09 20 20  == "\}" || \..  
332d0 20 20 20 5b 24 74 65 78 74 20 67 65 74 20 22 69     [$text get "i
332e0 6e 73 65 72 74 2d 31 63 22 5d 20 3d 3d 20 22 5c  nsert-1c"] == "\
332f0 5d 22 20 7d 20 7b 0a 09 53 65 61 72 63 68 42 72  ]" } {..SearchBr
33300 61 63 65 73 20 2d 31 20 2d 31 0a 20 20 20 20 7d  aces -1 -1.    }
33310 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
33320 67 67 65 72 3a 3a 53 65 61 72 63 68 42 72 61 63  gger::SearchBrac
33330 65 73 5f 78 6d 6c 20 7b 20 78 20 79 20 7d 20 7b  es_xml { x y } {
33340 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
33350 78 74 0a 0a 20 20 20 20 73 65 74 20 72 65 78 20  xt..    set rex 
33360 7b 3c 5c 73 2a 3f 28 2f 3f 29 5c 73 2a 3f 28 5b  {<\s*?(/?)\s*?([
33370 5e 3e 2f 5c 73 5d 2b 3f 29 28 3f 3a 5c 73 5b 5e  ^>/\s]+?)(?:\s[^
33380 3e 5d 2a 3f 5b 5e 3e 2f 5d 29 3f 28 2f 3f 29 5c  >]*?[^>/])?(/?)\
33390 73 2a 3f 3e 7d 0a 20 20 20 20 73 65 74 20 73 65  s*?>}.    set se
333a0 6c 20 5b 24 74 65 78 74 20 67 65 74 20 69 6e 73  l [$text get ins
333b0 65 72 74 2d 31 63 5d 0a 20 20 20 20 73 65 74 20  ert-1c].    set 
333c0 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20  state normal.   
333d0 20 77 68 69 6c 65 20 7b 20 24 73 74 61 74 65 20   while { $state 
333e0 65 71 20 22 6e 6f 72 6d 61 6c 22 20 26 26 20 24  eq "normal" && $
333f0 73 65 6c 20 65 71 20 22 3e 22 20 7d 20 7b 0a 09  sel eq ">" } {..
33400 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 73  set idx [$text s
33410 65 61 72 63 68 20 2d 62 61 63 6b 77 61 72 64 73  earch -backwards
33420 20 2d 72 65 67 65 78 70 20 2d 6e 6f 6c 69 6e 65   -regexp -noline
33430 73 74 6f 70 20 2d 63 6f 75 6e 74 20 3a 3a 63 6f  stop -count ::co
33440 75 6e 74 30 20 24 72 65 78 20 69 6e 73 65 72 74  unt0 $rex insert
33450 20 31 2e 30 5d 0a 09 69 66 20 7b 20 24 69 64 78   1.0]..if { $idx
33460 20 65 71 20 22 22 20 7d 20 7b 20 62 72 65 61 6b   eq "" } { break
33470 20 7d 0a 09 72 65 67 65 78 70 20 24 72 65 78 20   }..regexp $rex 
33480 5b 24 74 65 78 74 20 67 65 74 20 24 69 64 78 20  [$text get $idx 
33490 22 24 69 64 78 2b 24 3a 3a 63 6f 75 6e 74 30 20  "$idx+$::count0 
334a0 63 68 61 72 73 22 5d 20 7b 7d 20 69 73 5f 65 6e  chars"] {} is_en
334b0 64 20 74 61 67 20 69 73 5f 73 74 61 72 74 5f 65  d tag is_start_e
334c0 6e 64 0a 09 73 65 74 20 69 64 78 5f 69 6e 69 20  nd..set idx_ini 
334d0 24 69 64 78 0a 09 73 65 74 20 69 64 78 5f 65 6e  $idx..set idx_en
334e0 64 20 69 6e 73 65 72 74 0a 09 73 65 74 20 73 74  d insert..set st
334f0 61 74 65 20 66 6f 75 6e 64 0a 20 20 20 20 7d 0a  ate found.    }.
33500 20 20 20 20 73 65 74 20 73 65 6c 20 5b 24 74 65      set sel [$te
33510 78 74 20 67 65 74 20 69 6e 73 65 72 74 5d 0a 20  xt get insert]. 
33520 20 20 20 77 68 69 6c 65 20 7b 20 24 73 74 61 74     while { $stat
33530 65 20 65 71 20 22 6e 6f 72 6d 61 6c 22 20 26 26  e eq "normal" &&
33540 20 24 73 65 6c 20 65 71 20 22 3c 22 20 7d 20 7b   $sel eq "<" } {
33550 0a 09 73 65 74 20 69 64 78 20 5b 24 74 65 78 74  ..set idx [$text
33560 20 73 65 61 72 63 68 20 2d 72 65 67 65 78 70 20   search -regexp 
33570 2d 6e 6f 6c 69 6e 65 73 74 6f 70 20 2d 63 6f 75  -nolinestop -cou
33580 6e 74 20 3a 3a 63 6f 75 6e 74 30 20 24 72 65 78  nt ::count0 $rex
33590 20 69 6e 73 65 72 74 20 65 6e 64 5d 0a 09 69 66   insert end]..if
335a0 20 7b 20 24 69 64 78 20 65 71 20 22 22 20 7d 20   { $idx eq "" } 
335b0 7b 20 62 72 65 61 6b 20 7d 0a 09 72 65 67 65 78  { break }..regex
335c0 70 20 24 72 65 78 20 5b 24 74 65 78 74 20 67 65  p $rex [$text ge
335d0 74 20 24 69 64 78 20 22 24 69 64 78 2b 24 3a 3a  t $idx "$idx+$::
335e0 63 6f 75 6e 74 30 20 63 68 61 72 73 22 5d 20 7b  count0 chars"] {
335f0 7d 20 69 73 5f 65 6e 64 20 74 61 67 20 69 73 5f  } is_end tag is_
33600 73 74 61 72 74 5f 65 6e 64 0a 09 73 65 74 20 69  start_end..set i
33610 64 78 5f 69 6e 69 20 69 6e 73 65 72 74 0a 09 73  dx_ini insert..s
33620 65 74 20 69 64 78 5f 65 6e 64 20 22 24 69 64 78  et idx_end "$idx
33630 2b 24 3a 3a 63 6f 75 6e 74 30 20 63 68 61 72 73  +$::count0 chars
33640 22 0a 09 73 65 74 20 73 74 61 74 65 20 66 6f 75  "..set state fou
33650 6e 64 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  nd.    }.    if 
33660 7b 20 24 73 74 61 74 65 20 6e 65 20 22 66 6f 75  { $state ne "fou
33670 6e 64 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 78  nd" } {..if { $x
33680 20 3e 3d 20 30 20 7d 20 7b 0a 09 20 20 20 20 73   >= 0 } {..    s
33690 65 74 20 3a 3a 74 6b 50 72 69 76 28 73 65 6c 65  et ::tkPriv(sele
336a0 63 74 4d 6f 64 65 29 20 77 6f 72 64 20 3b 23 20  ctMode) word ;# 
336b0 74 63 6c 38 2e 33 0a 09 20 20 20 20 63 61 74 63  tcl8.3..    catc
336c0 68 20 7b 20 73 65 74 20 3a 3a 74 6b 3a 3a 50 72  h { set ::tk::Pr
336d0 69 76 28 73 65 6c 65 63 74 4d 6f 64 65 29 20 77  iv(selectMode) w
336e0 6f 72 64 20 7d 20 3b 23 20 74 63 6c 38 2e 34 0a  ord } ;# tcl8.4.
336f0 09 20 20 20 20 74 6b 54 65 78 74 53 65 6c 65 63  .    tkTextSelec
33700 74 54 6f 20 24 74 65 78 74 20 24 78 20 24 79 0a  tTo $text $x $y.
33710 09 20 20 20 20 63 61 74 63 68 20 7b 20 24 74 65  .    catch { $te
33720 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65  xt mark set inse
33730 72 74 20 73 65 6c 2e 6c 61 73 74 7d 0a 09 20 20  rt sel.last}..  
33740 20 20 63 61 74 63 68 20 7b 20 24 74 65 78 74 20    catch { $text 
33750 6d 61 72 6b 20 73 65 74 20 61 6e 63 68 6f 72 20  mark set anchor 
33760 73 65 6c 2e 66 69 72 73 74 7d 0a 09 7d 0a 09 72  sel.first}..}..r
33770 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20  eturn.    }.    
33780 69 66 20 7b 20 24 69 73 5f 73 74 61 72 74 5f 65  if { $is_start_e
33790 6e 64 20 6e 65 20 22 22 20 7d 20 7b 0a 09 24 74  nd ne "" } {..$t
337a0 65 78 74 20 74 61 67 20 72 65 6d 6f 76 65 20 73  ext tag remove s
337b0 65 6c 20 30 2e 30 20 65 6e 64 0a 09 24 74 65 78  el 0.0 end..$tex
337c0 74 20 74 61 67 20 61 64 64 20 73 65 6c 20 24 69  t tag add sel $i
337d0 64 78 20 22 24 69 64 78 2b 24 3a 3a 63 6f 75 6e  dx "$idx+$::coun
337e0 74 30 20 63 68 61 72 73 22 0a 09 24 74 65 78 74  t0 chars"..$text
337f0 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74   mark set insert
33800 20 24 69 64 78 0a 09 72 65 74 75 72 6e 0a 20 20   $idx..return.  
33810 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 63 6f 75    }..    set cou
33820 6e 74 65 72 20 30 0a 20 20 20 20 73 65 74 20 73  nter 0.    set s
33830 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20  tate normal.    
33840 77 68 69 6c 65 20 7b 20 24 73 74 61 74 65 20 65  while { $state e
33850 71 20 22 6e 6f 72 6d 61 6c 22 20 26 26 20 24 69  q "normal" && $i
33860 73 5f 65 6e 64 20 6e 65 20 22 22 20 7d 20 7b 0a  s_end ne "" } {.
33870 09 73 65 74 20 69 64 78 5f 6e 65 77 20 5b 24 74  .set idx_new [$t
33880 65 78 74 20 73 65 61 72 63 68 20 2d 62 61 63 6b  ext search -back
33890 77 61 72 64 73 20 2d 72 65 67 65 78 70 20 2d 6e  wards -regexp -n
338a0 6f 6c 69 6e 65 73 74 6f 70 20 2d 63 6f 75 6e 74  olinestop -count
338b0 20 3a 3a 63 6f 75 6e 74 20 24 72 65 78 20 24 69   ::count $rex $i
338c0 64 78 20 31 2e 30 5d 0a 09 69 66 20 7b 20 24 69  dx 1.0]..if { $i
338d0 64 78 5f 6e 65 77 20 65 71 20 22 22 20 7d 20 7b  dx_new eq "" } {
338e0 20 62 72 65 61 6b 20 7d 0a 09 72 65 67 65 78 70   break }..regexp
338f0 20 24 72 65 78 20 5b 24 74 65 78 74 20 67 65 74   $rex [$text get
33900 20 24 69 64 78 5f 6e 65 77 20 22 24 69 64 78 5f   $idx_new "$idx_
33910 6e 65 77 2b 24 3a 3a 63 6f 75 6e 74 20 63 68 61  new+$::count cha
33920 72 73 22 5d 20 5c 0a 09 20 20 20 20 7b 7d 20 69  rs"] \..    {} i
33930 73 5f 65 6e 64 5f 6e 65 77 20 74 61 67 5f 6e 65  s_end_new tag_ne
33940 77 20 69 73 5f 73 74 61 72 74 5f 65 6e 64 5f 6e  w is_start_end_n
33950 65 77 0a 09 69 66 20 7b 20 24 69 73 5f 73 74 61  ew..if { $is_sta
33960 72 74 5f 65 6e 64 5f 6e 65 77 20 6e 65 20 22 22  rt_end_new ne ""
33970 20 7d 20 7b 0a 09 20 20 20 20 23 20 6e 6f 74 68   } {..    # noth
33980 69 6e 67 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20  ing..} elseif { 
33990 24 69 73 5f 65 6e 64 5f 6e 65 77 20 6e 65 20 22  $is_end_new ne "
339a0 22 20 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 20  " } {..    incr 
339b0 63 6f 75 6e 74 65 72 0a 09 7d 20 65 6c 73 65 69  counter..} elsei
339c0 66 20 7b 20 24 63 6f 75 6e 74 65 72 20 3d 3d 20  f { $counter == 
339d0 30 20 26 26 20 24 74 61 67 5f 6e 65 77 20 65 71  0 && $tag_new eq
339e0 20 24 74 61 67 20 7d 20 7b 0a 09 20 20 20 20 73   $tag } {..    s
339f0 65 74 20 73 74 61 74 65 20 66 6f 75 6e 64 0a 09  et state found..
33a00 20 20 20 20 73 65 74 20 69 64 78 5f 69 6e 69 20      set idx_ini 
33a10 24 69 64 78 5f 6e 65 77 0a 09 20 20 20 20 73 65  $idx_new..    se
33a20 74 20 69 64 78 5f 73 65 65 20 24 69 64 78 5f 6e  t idx_see $idx_n
33a30 65 77 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20  ew..} else {..  
33a40 20 20 69 6e 63 72 20 63 6f 75 6e 74 65 72 20 2d    incr counter -
33a50 31 0a 09 7d 0a 09 73 65 74 20 69 64 78 20 24 69  1..}..set idx $i
33a60 64 78 5f 6e 65 77 0a 20 20 20 20 7d 0a 20 20 20  dx_new.    }.   
33a70 20 73 65 74 20 69 64 78 20 22 24 69 64 78 2b 24   set idx "$idx+$
33a80 3a 3a 63 6f 75 6e 74 30 20 63 68 61 72 73 22 0a  ::count0 chars".
33a90 20 20 20 20 77 68 69 6c 65 20 7b 20 24 73 74 61      while { $sta
33aa0 74 65 20 65 71 20 22 6e 6f 72 6d 61 6c 22 20 26  te eq "normal" &
33ab0 26 20 24 69 73 5f 65 6e 64 20 65 71 20 22 22 20  & $is_end eq "" 
33ac0 7d 20 7b 0a 09 73 65 74 20 69 64 78 5f 6e 65 77  } {..set idx_new
33ad0 20 5b 24 74 65 78 74 20 73 65 61 72 63 68 20 2d   [$text search -
33ae0 72 65 67 65 78 70 20 2d 6e 6f 6c 69 6e 65 73 74  regexp -nolinest
33af0 6f 70 20 2d 63 6f 75 6e 74 20 3a 3a 63 6f 75 6e  op -count ::coun
33b00 74 20 24 72 65 78 20 24 69 64 78 20 65 6e 64 5d  t $rex $idx end]
33b10 0a 09 69 66 20 7b 20 24 69 64 78 5f 6e 65 77 20  ..if { $idx_new 
33b20 65 71 20 22 22 20 7d 20 7b 20 62 72 65 61 6b 20  eq "" } { break 
33b30 7d 0a 09 72 65 67 65 78 70 20 24 72 65 78 20 5b  }..regexp $rex [
33b40 24 74 65 78 74 20 67 65 74 20 24 69 64 78 5f 6e  $text get $idx_n
33b50 65 77 20 22 24 69 64 78 5f 6e 65 77 2b 24 3a 3a  ew "$idx_new+$::
33b60 63 6f 75 6e 74 20 63 68 61 72 73 22 5d 20 5c 0a  count chars"] \.
33b70 09 20 20 20 20 7b 7d 20 69 73 5f 65 6e 64 5f 6e  .    {} is_end_n
33b80 65 77 20 74 61 67 5f 6e 65 77 20 69 73 5f 73 74  ew tag_new is_st
33b90 61 72 74 5f 65 6e 64 5f 6e 65 77 0a 09 69 66 20  art_end_new..if 
33ba0 7b 20 24 69 73 5f 73 74 61 72 74 5f 65 6e 64 5f  { $is_start_end_
33bb0 6e 65 77 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20  new ne "" } {.. 
33bc0 20 20 20 23 20 6e 6f 74 68 69 6e 67 0a 09 7d 20     # nothing..} 
33bd0 65 6c 73 65 69 66 20 7b 20 24 69 73 5f 65 6e 64  elseif { $is_end
33be0 5f 6e 65 77 20 65 71 20 22 22 20 7d 20 7b 0a 09  _new eq "" } {..
33bf0 20 20 20 20 69 6e 63 72 20 63 6f 75 6e 74 65 72      incr counter
33c00 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 63 6f  ..} elseif { $co
33c10 75 6e 74 65 72 20 3d 3d 20 30 20 26 26 20 24 74  unter == 0 && $t
33c20 61 67 5f 6e 65 77 20 65 71 20 24 74 61 67 20 7d  ag_new eq $tag }
33c30 20 7b 0a 09 20 20 20 20 73 65 74 20 73 74 61 74   {..    set stat
33c40 65 20 66 6f 75 6e 64 0a 09 20 20 20 20 73 65 74  e found..    set
33c50 20 69 64 78 5f 65 6e 64 20 22 24 69 64 78 5f 6e   idx_end "$idx_n
33c60 65 77 2b 24 3a 3a 63 6f 75 6e 74 20 63 68 61 72  ew+$::count char
33c70 73 22 0a 09 20 20 20 20 73 65 74 20 69 64 78 5f  s"..    set idx_
33c80 73 65 65 20 22 24 69 64 78 5f 6e 65 77 2b 24 3a  see "$idx_new+$:
33c90 3a 63 6f 75 6e 74 20 63 68 61 72 73 22 0a 09 7d  :count chars"..}
33ca0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 69 6e 63   else {..    inc
33cb0 72 20 63 6f 75 6e 74 65 72 20 2d 31 0a 09 7d 0a  r counter -1..}.
33cc0 09 73 65 74 20 69 64 78 20 22 24 69 64 78 5f 6e  .set idx "$idx_n
33cd0 65 77 2b 24 3a 3a 63 6f 75 6e 74 20 63 68 61 72  ew+$::count char
33ce0 73 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  s".    }.    if 
33cf0 7b 20 24 73 74 61 74 65 20 65 71 20 22 6e 6f 72  { $state eq "nor
33d00 6d 61 6c 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24  mal" } {..if { $
33d10 78 20 3e 3d 20 30 20 7d 20 7b 0a 09 20 20 20 20  x >= 0 } {..    
33d20 73 65 74 20 3a 3a 74 6b 50 72 69 76 28 73 65 6c  set ::tkPriv(sel
33d30 65 63 74 4d 6f 64 65 29 20 77 6f 72 64 20 3b 23  ectMode) word ;#
33d40 20 74 63 6c 38 2e 33 0a 09 20 20 20 20 63 61 74   tcl8.3..    cat
33d50 63 68 20 7b 20 73 65 74 20 3a 3a 74 6b 3a 3a 50  ch { set ::tk::P
33d60 72 69 76 28 73 65 6c 65 63 74 4d 6f 64 65 29 20  riv(selectMode) 
33d70 77 6f 72 64 20 7d 20 3b 23 20 74 63 6c 38 2e 34  word } ;# tcl8.4
33d80 0a 09 20 20 20 20 74 6b 54 65 78 74 53 65 6c 65  ..    tkTextSele
33d90 63 74 54 6f 20 24 74 65 78 74 20 24 78 20 24 79  ctTo $text $x $y
33da0 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 24 74  ..    catch { $t
33db0 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73  ext mark set ins
33dc0 65 72 74 20 73 65 6c 2e 6c 61 73 74 7d 0a 09 20  ert sel.last}.. 
33dd0 20 20 20 63 61 74 63 68 20 7b 20 24 74 65 78 74     catch { $text
33de0 20 6d 61 72 6b 20 73 65 74 20 61 6e 63 68 6f 72   mark set anchor
33df0 20 73 65 6c 2e 66 69 72 73 74 7d 0a 09 7d 0a 09   sel.first}..}..
33e00 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20  return.    }.   
33e10 20 24 74 65 78 74 20 74 61 67 20 72 65 6d 6f 76   $text tag remov
33e20 65 20 73 65 6c 20 30 2e 30 20 65 6e 64 0a 20 20  e sel 0.0 end.  
33e30 20 20 24 74 65 78 74 20 74 61 67 20 61 64 64 20    $text tag add 
33e40 73 65 6c 20 24 69 64 78 5f 69 6e 69 20 24 69 64  sel $idx_ini $id
33e50 78 5f 65 6e 64 0a 20 20 20 20 24 74 65 78 74 20  x_end.    $text 
33e60 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20  mark set insert 
33e70 24 69 64 78 5f 73 65 65 0a 20 20 20 20 24 74 65  $idx_see.    $te
33e80 78 74 20 73 65 65 20 24 69 64 78 5f 73 65 65 0a  xt see $idx_see.
33e90 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
33ea0 67 65 72 3a 3a 53 65 61 72 63 68 42 72 61 63 65  ger::SearchBrace
33eb0 73 5f 63 70 70 5f 64 65 66 69 6e 65 73 20 7b 20  s_cpp_defines { 
33ec0 78 20 79 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  x y } {.    vari
33ed0 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 0a 20  able text.    . 
33ee0 20 20 20 73 65 74 20 6c 20 5b 24 74 65 78 74 20     set l [$text 
33ef0 67 65 74 20 22 69 6e 73 65 72 74 20 6c 69 6e 65  get "insert line
33f00 73 74 61 72 74 22 20 22 69 6e 73 65 72 74 20 6c  start" "insert l
33f10 69 6e 65 65 6e 64 22 5d 0a 20 20 20 20 69 66 20  ineend"].    if 
33f20 7b 20 21 5b 72 65 67 65 78 70 20 7b 5e 23 28 69  { ![regexp {^#(i
33f30 66 7c 65 6c 73 65 7c 65 6e 64 69 66 29 7d 20 24  f|else|endif)} $
33f40 6c 20 7b 7d 20 77 68 61 74 5d 20 7d 20 7b 0a 09  l {} what] } {..
33f50 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d 0a 20  return 0.    }. 
33f60 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74 20     switch $what 
33f70 7b 0a 09 69 66 20 2d 20 65 6c 73 65 20 7b 0a 09  {..if - else {..
33f80 20 20 20 20 73 65 74 20 6c 69 6e 69 20 5b 73 63      set lini [sc
33f90 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20  an [$text index 
33fa0 22 69 6e 73 65 72 74 2b 31 6c 22 5d 20 25 64 5d  "insert+1l"] %d]
33fb0 0a 09 20 20 20 20 73 65 74 20 6c 65 6e 64 20 5b  ..    set lend [
33fc0 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65  scan [$text inde
33fd0 78 20 22 65 6e 64 2d 31 63 22 5d 20 25 64 5d 0a  x "end-1c"] %d].
33fe0 09 20 20 20 20 73 65 74 20 64 65 6c 74 61 20 31  .    set delta 1
33ff0 0a 09 20 20 20 20 73 65 74 20 63 6d 70 20 7b 24  ..    set cmp {$
34000 69 6c 69 6e 65 20 3c 3d 20 24 6c 65 6e 64 7d 0a  iline <= $lend}.
34010 09 7d 0a 09 65 6e 64 69 66 20 7b 0a 09 20 20 20  .}..endif {..   
34020 20 73 65 74 20 6c 69 6e 69 20 5b 73 63 61 6e 20   set lini [scan 
34030 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 69 6e  [$text index "in
34040 73 65 72 74 2d 31 6c 22 5d 20 25 64 5d 0a 09 20  sert-1l"] %d].. 
34050 20 20 20 73 65 74 20 6c 65 6e 64 20 31 0a 09 20     set lend 1.. 
34060 20 20 20 73 65 74 20 64 65 6c 74 61 20 2d 31 0a     set delta -1.
34070 09 20 20 20 20 73 65 74 20 63 6d 70 20 7b 24 69  .    set cmp {$i
34080 6c 69 6e 65 20 3e 3d 20 24 6c 65 6e 64 7d 0a 09  line >= $lend}..
34090 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
340a0 6c 65 76 65 6c 20 31 0a 20 20 20 20 66 6f 72 20  level 1.    for 
340b0 7b 20 73 65 74 20 69 6c 69 6e 65 20 24 6c 69 6e  { set iline $lin
340c0 69 20 7d 20 24 63 6d 70 20 7b 20 69 6e 63 72 20  i } $cmp { incr 
340d0 69 6c 69 6e 65 20 24 64 65 6c 74 61 20 7d 20 7b  iline $delta } {
340e0 0a 09 73 65 74 20 6c 20 5b 24 74 65 78 74 20 67  ..set l [$text g
340f0 65 74 20 22 24 69 6c 69 6e 65 2e 30 20 6c 69 6e  et "$iline.0 lin
34100 65 73 74 61 72 74 22 20 22 24 69 6c 69 6e 65 2e  estart" "$iline.
34110 30 20 6c 69 6e 65 65 6e 64 22 5d 0a 09 69 66 20  0 lineend"]..if 
34120 7b 20 5b 72 65 67 65 78 70 20 7b 5e 23 28 69 66  { [regexp {^#(if
34130 7c 65 6c 73 65 7c 65 6e 64 69 66 29 7d 20 24 6c  |else|endif)} $l
34140 20 7b 7d 20 77 68 61 74 5f 69 6e 5d 20 7d 20 7b   {} what_in] } {
34150 0a 09 20 20 20 20 73 77 69 74 63 68 20 24 77 68  ..    switch $wh
34160 61 74 5f 69 6e 20 7b 0a 09 09 69 66 20 7b 0a 09  at_in {...if {..
34170 09 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20  .    if { $what 
34180 69 6e 20 22 69 66 20 65 6c 73 65 22 20 7d 20 7b  in "if else" } {
34190 0a 09 09 20 20 20 20 20 20 20 20 69 6e 63 72 20  ...        incr 
341a0 6c 65 76 65 6c 0a 09 09 20 20 20 20 7d 20 65 6c  level...    } el
341b0 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 20 69  se {...        i
341c0 6e 63 72 20 6c 65 76 65 6c 20 2d 31 0a 09 09 20  ncr level -1... 
341d0 20 20 20 20 20 20 20 69 66 20 7b 20 24 6c 65 76         if { $lev
341e0 65 6c 20 3d 3d 20 30 20 7d 20 7b 20 62 72 65 61  el == 0 } { brea
341f0 6b 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a  k }...    }...}.
34200 09 09 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 69  ..else {...    i
34210 66 20 7b 20 24 77 68 61 74 20 69 6e 20 22 69 66  f { $what in "if
34220 20 65 6c 73 65 22 20 26 26 20 24 6c 65 76 65 6c   else" && $level
34230 20 3d 3d 20 31 20 7d 20 7b 0a 09 09 20 20 20 20   == 1 } {...    
34240 20 20 20 20 69 6e 63 72 20 6c 65 76 65 6c 20 2d      incr level -
34250 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 61  1...        brea
34260 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09  k...    }...}...
34270 65 6e 64 69 66 20 7b 0a 09 09 20 20 20 20 69 66  endif {...    if
34280 20 7b 20 24 77 68 61 74 20 69 6e 20 22 69 66 20   { $what in "if 
34290 65 6c 73 65 22 20 7d 20 7b 0a 09 09 20 20 20 20  else" } {...    
342a0 20 20 20 20 69 6e 63 72 20 6c 65 76 65 6c 20 2d      incr level -
342b0 31 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b  1...        if {
342c0 20 24 6c 65 76 65 6c 20 3d 3d 20 30 20 7d 20 7b   $level == 0 } {
342d0 20 62 72 65 61 6b 20 7d 0a 09 09 20 20 20 20 7d   break }...    }
342e0 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20   else {...      
342f0 20 20 69 6e 63 72 20 6c 65 76 65 6c 0a 09 09 20    incr level... 
34300 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a     }...}..    }.
34310 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 77 69  .}.    }.    swi
34320 74 63 68 20 24 77 68 61 74 20 7b 0a 09 69 66 20  tch $what {..if 
34330 2d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65  - else {..    se
34340 74 20 69 64 78 41 20 22 69 6e 73 65 72 74 20 6c  t idxA "insert l
34350 69 6e 65 73 74 61 72 74 22 0a 09 20 20 20 20 73  inestart"..    s
34360 65 74 20 69 64 78 42 20 22 24 69 6c 69 6e 65 2e  et idxB "$iline.
34370 30 20 6c 69 6e 65 65 6e 64 22 0a 09 20 20 20 20  0 lineend"..    
34380 73 65 74 20 69 64 78 31 20 24 69 64 78 41 0a 09  set idx1 $idxA..
34390 20 20 20 20 73 65 74 20 69 64 78 32 20 24 69 64      set idx2 $id
343a0 78 42 0a 09 7d 0a 09 65 6e 64 69 66 20 7b 0a 09  xB..}..endif {..
343b0 20 20 20 20 73 65 74 20 69 64 78 41 20 22 24 69      set idxA "$i
343c0 6c 69 6e 65 2e 30 22 0a 09 20 20 20 20 73 65 74  line.0"..    set
343d0 20 69 64 78 42 20 22 69 6e 73 65 72 74 20 6c 69   idxB "insert li
343e0 6e 65 65 6e 64 22 0a 09 20 20 20 20 73 65 74 20  neend"..    set 
343f0 69 64 78 31 20 24 69 64 78 42 0a 09 20 20 20 20  idx1 $idxB..    
34400 73 65 74 20 69 64 78 32 20 24 69 64 78 41 0a 09  set idx2 $idxA..
34410 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20  }.    }.    set 
34420 65 72 72 6f 72 20 30 0a 20 20 20 20 69 66 20 7b  error 0.    if {
34430 20 24 6c 65 76 65 6c 20 21 3d 20 30 20 7d 20 7b   $level != 0 } {
34440 20 73 65 74 20 65 72 72 6f 72 20 31 20 7d 0a 20   set error 1 }. 
34450 20 20 20 0a 20 20 20 20 23 20 77 68 65 6e 20 6e     .    # when n
34460 6f 74 20 64 6f 69 6e 67 20 69 74 20 62 79 20 6d  ot doing it by m
34470 6f 75 73 65 2c 20 75 73 65 20 78 3d 2d 31 0a 20  ouse, use x=-1. 
34480 20 20 20 69 66 20 7b 20 24 78 20 3e 3d 20 30 20     if { $x >= 0 
34490 7d 20 7b 0a 09 24 74 65 78 74 20 74 61 67 20 61  } {..$text tag a
344a0 64 64 20 73 65 6c 20 24 69 64 78 41 20 24 69 64  dd sel $idxA $id
344b0 78 42 0a 09 63 61 74 63 68 20 7b 20 24 74 65 78  xB..catch { $tex
344c0 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72  t mark set inser
344d0 74 20 24 69 64 78 32 20 7d 0a 09 63 61 74 63 68  t $idx2 }..catch
344e0 20 7b 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65   { $text mark se
344f0 74 20 61 6e 63 68 6f 72 20 24 69 64 78 31 20 7d  t anchor $idx1 }
34500 0a 09 24 74 65 78 74 20 73 65 65 20 24 69 64 78  ..$text see $idx
34510 32 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  2.    } else {..
34520 24 74 65 78 74 20 74 61 67 20 61 64 64 20 74 65  $text tag add te
34530 6d 70 6d 61 72 6b 65 72 20 24 69 64 78 41 20 24  mpmarker $idxA $
34540 69 64 78 42 0a 09 24 74 65 78 74 20 74 61 67 20  idxB..$text tag 
34550 63 6f 6e 66 69 67 75 72 65 20 74 65 6d 70 6d 61  configure tempma
34560 72 6b 65 72 20 2d 62 61 63 6b 67 72 6f 75 6e 64  rker -background
34570 20 5b 24 74 65 78 74 20 74 61 67 20 63 67 65 74   [$text tag cget
34580 20 73 65 6c 20 2d 62 61 63 6b 67 72 6f 75 6e 64   sel -background
34590 5d 20 5c 0a 09 20 20 20 20 2d 66 6f 72 65 67 72  ] \..    -foregr
345a0 6f 75 6e 64 20 5b 24 74 65 78 74 20 74 61 67 20  ound [$text tag 
345b0 63 67 65 74 20 73 65 6c 20 2d 66 6f 72 65 67 72  cget sel -foregr
345c0 6f 75 6e 64 5d 0a 09 69 66 20 7b 20 24 65 72 72  ound]..if { $err
345d0 6f 72 20 7d 20 7b 20 24 74 65 78 74 20 74 61 67  or } { $text tag
345e0 20 63 6f 6e 66 20 74 65 6d 70 6d 61 72 6b 65 72   conf tempmarker
345f0 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72 65 64   -background red
34600 20 7d 0a 09 61 66 74 65 72 20 31 30 30 30 20 24   }..after 1000 $
34610 74 65 78 74 20 74 61 67 20 72 65 6d 6f 76 65 20  text tag remove 
34620 74 65 6d 70 6d 61 72 6b 65 72 20 31 2e 30 20 65  tempmarker 1.0 e
34630 6e 64 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  nd.    }.    if 
34640 7b 20 24 65 72 72 6f 72 20 7d 20 7b 0a 09 62 65  { $error } {..be
34650 6c 6c 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74  ll.    }.    ret
34660 75 72 6e 20 31 0a 7d 0a 0a 70 72 6f 63 20 52 61  urn 1.}..proc Ra
34670 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63  mDebugger::Searc
34680 68 42 72 61 63 65 73 20 7b 20 78 20 79 20 7d 20  hBraces { x y } 
34690 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  {.    variable t
346a0 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ext.    variable
346b0 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20   currentfile..  
346c0 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b    if { [regexp {
346d0 5e 5c 2a 28 6c 6f 6f 70 7c 69 66 7c 66 6f 72 7c  ^\*(loop|if|for|
346e0 65 6e 64 7c 65 6e 64 6c 6f 6f 70 7c 65 6e 64 69  end|endloop|endi
346f0 66 7c 65 6e 64 66 6f 72 29 5c 4d 7d 20 5c 0a 09  f|endfor)\M} \..
34700 20 20 20 20 20 20 5b 24 74 65 78 74 20 67 65 74        [$text get
34710 20 22 69 6e 73 65 72 74 20 6c 69 6e 65 73 74 61   "insert linesta
34720 72 74 22 20 22 69 6e 73 65 72 74 20 6c 69 6e 65  rt" "insert line
34730 65 6e 64 22 5d 5d 20 26 26 20 5c 0a 09 20 20 20  end"]] && \..   
34740 20 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65    [$text compare
34750 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e   [$text index in
34760 73 65 72 74 5d 20 3c 3d 20 5b 24 74 65 78 74 20  sert] <= [$text 
34770 69 6e 64 65 78 20 22 69 6e 73 65 72 74 20 6c 69  index "insert li
34780 6e 65 73 74 61 72 74 20 2b 31 63 22 5d 5d 20 26  nestart +1c"]] &
34790 26 20 5c 0a 09 20 20 20 20 20 5b 47 69 76 65 46  & \..     [GiveF
347a0 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e 74  ileType $current
347b0 66 69 6c 65 5d 20 3d 3d 20 22 47 69 44 20 42 41  file] == "GiD BA
347c0 53 20 66 69 6c 65 22 20 7d 20 7b 0a 09 53 65 6c  S file" } {..Sel
347d0 65 63 74 42 61 73 4c 6f 6f 70 0a 09 72 65 74 75  ectBasLoop..retu
347e0 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  rn.    }.    if 
347f0 7b 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65 20  { [GiveFileType 
34800 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 65 71  $currentfile] eq
34810 20 22 58 4d 4c 22 20 7d 20 7b 0a 09 53 65 61 72   "XML" } {..Sear
34820 63 68 42 72 61 63 65 73 5f 78 6d 6c 20 24 78 20  chBraces_xml $x 
34830 24 79 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  $y..return.    }
34840 0a 20 20 20 20 69 66 20 7b 20 5b 47 69 76 65 46  .    if { [GiveF
34850 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e 74  ileType $current
34860 66 69 6c 65 5d 20 65 71 20 22 43 2f 43 2b 2b 22  file] eq "C/C++"
34870 20 7d 20 7b 0a 09 73 65 74 20 66 6f 75 6e 64 20   } {..set found 
34880 5b 53 65 61 72 63 68 42 72 61 63 65 73 5f 63 70  [SearchBraces_cp
34890 70 5f 64 65 66 69 6e 65 73 20 24 78 20 24 79 5d  p_defines $x $y]
348a0 0a 09 69 66 20 7b 20 24 66 6f 75 6e 64 20 7d 20  ..if { $found } 
348b0 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 7d  { return }.    }
348c0 0a 0a 20 20 20 20 73 65 74 20 73 65 6c 20 5b 24  ..    set sel [$
348d0 74 65 78 74 20 67 65 74 20 69 6e 73 65 72 74 2d  text get insert-
348e0 31 63 5d 0a 20 20 20 20 73 65 74 20 73 65 6c 6d  1c].    set selm
348f0 31 20 5b 24 74 65 78 74 20 67 65 74 20 69 6e 73  1 [$text get ins
34900 65 72 74 2d 32 63 5d 0a 20 20 20 20 24 74 65 78  ert-2c].    $tex
34910 74 20 74 61 67 20 72 65 6d 6f 76 65 20 73 65 6c  t tag remove sel
34920 20 30 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 65   0.0 end.    $te
34930 78 74 20 74 61 67 20 61 64 64 20 73 65 6c 20 69  xt tag add sel i
34940 6e 73 65 72 74 2d 31 63 20 69 6e 73 65 72 74 0a  nsert-1c insert.
34950 20 20 20 20 69 66 20 7b 20 5b 6c 73 65 61 72 63      if { [lsearc
34960 68 20 2d 65 78 61 63 74 20 5b 6c 69 73 74 20 5c  h -exact [list \
34970 5b 20 5c 5d 20 5c 7b 20 5c 7d 5d 20 24 73 65 6c  [ \] \{ \}] $sel
34980 5d 20 3d 3d 20 2d 31 20 7c 7c 20 24 73 65 6c 6d  ] == -1 || $selm
34990 31 20 3d 3d 20 22 5c 5c 22 20 7d 20 7b 0a 09 73  1 == "\\" } {..s
349a0 65 74 20 73 65 6c 20 5b 24 74 65 78 74 20 67 65  et sel [$text ge
349b0 74 20 69 6e 73 65 72 74 5d 0a 09 73 65 74 20 73  t insert]..set s
349c0 65 6c 6d 31 20 5b 24 74 65 78 74 20 67 65 74 20  elm1 [$text get 
349d0 69 6e 73 65 72 74 2d 31 63 5d 0a 09 24 74 65 78  insert-1c]..$tex
349e0 74 20 74 61 67 20 72 65 6d 6f 76 65 20 73 65 6c  t tag remove sel
349f0 20 30 2e 30 20 65 6e 64 0a 09 24 74 65 78 74 20   0.0 end..$text 
34a00 74 61 67 20 61 64 64 20 73 65 6c 20 69 6e 73 65  tag add sel inse
34a10 72 74 20 69 6e 73 65 72 74 2b 31 63 0a 09 24 74  rt insert+1c..$t
34a20 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73  ext mark set ins
34a30 65 72 74 20 69 6e 73 65 72 74 2b 31 63 0a 20 20  ert insert+1c.  
34a40 20 20 7d 0a 20 20 20 20 69 66 20 7b 5b 6c 73 65    }.    if {[lse
34a50 61 72 63 68 20 2d 65 78 61 63 74 20 5b 6c 69 73  arch -exact [lis
34a60 74 20 5c 5b 20 5c 5d 20 5c 7b 20 5c 7d 5d 20 24  t \[ \] \{ \}] $
34a70 73 65 6c 5d 20 3d 3d 20 2d 31 20 20 7c 7c 20 24  sel] == -1  || $
34a80 73 65 6c 6d 31 20 3d 3d 20 22 5c 5c 22 20 7d 20  selm1 == "\\" } 
34a90 7b 0a 09 23 20 77 68 65 6e 20 6e 6f 74 20 64 6f  {..# when not do
34aa0 69 6e 67 20 69 74 20 62 79 20 6d 6f 75 73 65 2c  ing it by mouse,
34ab0 20 75 73 65 20 78 3d 2d 31 0a 09 69 66 20 7b 20   use x=-1..if { 
34ac0 24 78 20 3e 3d 20 30 20 7d 20 7b 0a 09 20 20 20  $x >= 0 } {..   
34ad0 20 73 65 74 20 3a 3a 74 6b 50 72 69 76 28 73 65   set ::tkPriv(se
34ae0 6c 65 63 74 4d 6f 64 65 29 20 77 6f 72 64 20 3b  lectMode) word ;
34af0 23 20 74 63 6c 38 2e 33 0a 09 20 20 20 20 63 61  # tcl8.3..    ca
34b00 74 63 68 20 7b 20 73 65 74 20 3a 3a 74 6b 3a 3a  tch { set ::tk::
34b10 50 72 69 76 28 73 65 6c 65 63 74 4d 6f 64 65 29  Priv(selectMode)
34b20 20 77 6f 72 64 20 7d 20 3b 23 20 74 63 6c 38 2e   word } ;# tcl8.
34b30 34 0a 09 20 20 20 20 74 6b 54 65 78 74 53 65 6c  4..    tkTextSel
34b40 65 63 74 54 6f 20 24 74 65 78 74 20 24 78 20 24  ectTo $text $x $
34b50 79 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 24  y..    catch { $
34b60 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e  text mark set in
34b70 73 65 72 74 20 73 65 6c 2e 6c 61 73 74 7d 0a 09  sert sel.last}..
34b80 20 20 20 20 63 61 74 63 68 20 7b 20 24 74 65 78      catch { $tex
34b90 74 20 6d 61 72 6b 20 73 65 74 20 61 6e 63 68 6f  t mark set ancho
34ba0 72 20 73 65 6c 2e 66 69 72 73 74 7d 0a 09 7d 0a  r sel.first}..}.
34bb0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66      } else {..if
34bc0 20 7b 20 24 73 65 6c 20 3d 3d 20 22 5c 5b 22 20   { $sel == "\[" 
34bd0 7c 7c 20 24 73 65 6c 20 3d 3d 20 22 5c 7b 22 20  || $sel == "\{" 
34be0 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 64 69 72  } {..    set dir
34bf0 20 2d 66 6f 72 77 61 72 64 73 0a 09 20 20 20 20   -forwards..    
34c00 73 65 74 20 73 74 6f 70 69 6e 64 65 78 20 5b 24  set stopindex [$
34c10 74 65 78 74 20 69 6e 64 65 78 20 65 6e 64 5d 0a  text index end].
34c20 09 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 74  .    set idx [$t
34c30 65 78 74 20 69 6e 64 65 78 20 73 65 6c 2e 6c 61  ext index sel.la
34c40 73 74 5d 0a 09 20 20 20 20 73 65 74 20 69 6e 63  st]..    set inc
34c50 72 20 2b 31 0a 09 20 20 20 20 24 74 65 78 74 20  r +1..    $text 
34c60 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20  mark set insert 
34c70 69 6e 73 65 72 74 2d 31 63 0a 09 7d 20 65 6c 73  insert-1c..} els
34c80 65 20 7b 0a 09 20 20 20 20 73 65 74 20 64 69 72  e {..    set dir
34c90 20 2d 62 61 63 6b 77 61 72 64 73 0a 09 20 20 20   -backwards..   
34ca0 20 73 65 74 20 73 74 6f 70 69 6e 64 65 78 20 31   set stopindex 1
34cb0 2e 30 0a 09 20 20 20 20 73 65 74 20 69 64 78 20  .0..    set idx 
34cc0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 65 6c  [$text index sel
34cd0 2e 66 69 72 73 74 5d 0a 09 20 20 20 20 73 65 74  .first]..    set
34ce0 20 69 6e 63 72 20 2d 31 0a 09 20 20 20 20 23 24   incr -1..    #$
34cf0 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e  text mark set in
34d00 73 65 72 74 20 69 6e 73 65 72 74 2b 31 63 0a 09  sert insert+1c..
34d10 7d 0a 09 73 77 69 74 63 68 20 24 73 65 6c 20 7b  }..switch $sel {
34d20 0a 09 20 20 20 20 22 5c 7b 22 20 7b 20 73 65 74  ..    "\{" { set
34d30 20 6f 70 65 6e 20 22 5c 7b 22 20 3b 20 73 65 74   open "\{" ; set
34d40 20 63 6c 6f 73 65 20 22 5c 7d 22 20 3b 20 73 65   close "\}" ; se
34d50 74 20 6f 70 65 6e 61 6c 74 20 22 5c 5b 22 20 3b  t openalt "\[" ;
34d60 20 73 65 74 20 63 6c 6f 73 65 61 6c 74 20 22 5c   set closealt "\
34d70 5d 22 20 7d 0a 09 20 20 20 20 22 5c 5b 22 20 7b  ]" }..    "\[" {
34d80 20 73 65 74 20 6f 70 65 6e 20 22 5c 5b 22 20 3b   set open "\[" ;
34d90 20 73 65 74 20 63 6c 6f 73 65 20 22 5c 5d 22 20   set close "\]" 
34da0 3b 20 73 65 74 20 6f 70 65 6e 61 6c 74 20 22 5c  ; set openalt "\
34db0 7b 22 20 3b 20 73 65 74 20 63 6c 6f 73 65 61 6c  {" ; set closeal
34dc0 74 20 22 5c 7d 22 20 7d 0a 09 20 20 20 20 22 5c  t "\}" }..    "\
34dd0 7d 22 20 7b 20 73 65 74 20 6f 70 65 6e 20 22 5c  }" { set open "\
34de0 7d 22 20 3b 20 73 65 74 20 63 6c 6f 73 65 20 22  }" ; set close "
34df0 5c 7b 22 20 3b 20 73 65 74 20 6f 70 65 6e 61 6c  \{" ; set openal
34e00 74 20 22 5c 5d 22 20 3b 20 73 65 74 20 63 6c 6f  t "\]" ; set clo
34e10 73 65 61 6c 74 20 22 5c 5b 22 20 7d 0a 09 20 20  sealt "\[" }..  
34e20 20 20 22 5c 5d 22 20 7b 20 73 65 74 20 6f 70 65    "\]" { set ope
34e30 6e 20 22 5c 5d 22 20 3b 20 73 65 74 20 63 6c 6f  n "\]" ; set clo
34e40 73 65 20 22 5c 5b 22 20 3b 20 73 65 74 20 6f 70  se "\[" ; set op
34e50 65 6e 61 6c 74 20 22 5c 7d 22 20 3b 20 73 65 74  enalt "\}" ; set
34e60 20 63 6c 6f 73 65 61 6c 74 20 22 5c 7b 22 20 7d   closealt "\{" }
34e70 0a 09 7d 0a 09 73 65 74 20 65 72 72 6f 72 20 30  ..}..set error 0
34e80 0a 09 73 65 74 20 66 6f 75 6e 64 20 30 0a 09 73  ..set found 0..s
34e90 65 74 20 6c 65 76 65 6c 20 30 0a 09 73 65 74 20  et level 0..set 
34ea0 6c 65 76 65 6c 5f 61 6c 74 20 30 0a 09 73 65 74  level_alt 0..set
34eb0 20 69 64 78 5f 61 6c 74 20 22 22 0a 09 77 68 69   idx_alt ""..whi
34ec0 6c 65 20 7b 20 5b 73 65 74 20 69 64 78 32 20 5b  le { [set idx2 [
34ed0 24 74 65 78 74 20 73 65 61 72 63 68 20 24 64 69  $text search $di
34ee0 72 20 2d 72 65 67 65 78 70 20 2d 2d 20 7b 5c 7b  r -regexp -- {\{
34ef0 7c 5c 7d 7c 5c 5b 7c 5c 5d 7d 20 24 69 64 78 20  |\}|\[|\]} $idx 
34f00 24 73 74 6f 70 69 6e 64 65 78 5d 5d 20 21 3d 20  $stopindex]] != 
34f10 22 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  "" } {..    set 
34f20 72 65 74 20 5b 24 74 65 78 74 20 73 65 61 72 63  ret [$text searc
34f30 68 20 2d 62 61 63 6b 77 61 72 64 73 20 2d 72 65  h -backwards -re
34f40 67 65 78 70 20 2d 63 6f 75 6e 74 20 3a 3a 6e 70  gexp -count ::np
34f50 70 61 72 20 7b 5c 5c 2b 7d 20 24 69 64 78 32 20  par {\\+} $idx2 
34f60 22 24 69 64 78 32 20 6c 69 6e 65 73 74 61 72 74  "$idx2 linestart
34f70 22 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65  "]..    if { $re
34f80 74 20 65 71 20 22 22 20 7c 7c 20 5b 24 74 65 78  t eq "" || [$tex
34f90 74 20 63 6f 6d 70 61 72 65 20 22 24 72 65 74 2b  t compare "$ret+
34fa0 24 7b 3a 3a 6e 70 70 61 72 7d 63 22 20 21 3d 20  ${::nppar}c" != 
34fb0 24 69 64 78 32 5d 20 7d 20 7b 0a 09 09 73 65 74  $idx2] } {...set
34fc0 20 3a 3a 6e 70 70 61 72 20 30 0a 09 20 20 20 20   ::nppar 0..    
34fd0 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 3a 3a 6e  }..    if { $::n
34fe0 70 70 61 72 25 32 20 3d 3d 20 31 20 7d 20 7b 0a  ppar%2 == 1 } {.
34ff0 09 09 69 66 20 7b 20 24 64 69 72 20 3d 3d 20 22  ..if { $dir == "
35000 2d 66 6f 72 77 61 72 64 73 22 20 7d 20 7b 0a 09  -forwards" } {..
35010 09 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 74  .    set idx [$t
35020 65 78 74 20 69 6e 64 65 78 20 24 69 64 78 32 2b  ext index $idx2+
35030 31 63 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 20 73  1c]...} else { s
35040 65 74 20 69 64 78 20 24 69 64 78 32 20 7d 0a 09  et idx $idx2 }..
35050 09 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 7d  .continue..    }
35060 0a 09 20 20 20 20 73 65 74 20 6e 65 77 73 65 6c  ..    set newsel
35070 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 64 78   [$text get $idx
35080 32 5d 0a 09 20 20 20 20 73 77 69 74 63 68 20 24  2]..    switch $
35090 6e 65 77 73 65 6c 20 5c 0a 09 09 24 6f 70 65 6e  newsel \...$open
350a0 20 7b 20 69 6e 63 72 20 6c 65 76 65 6c 20 7d 20   { incr level } 
350b0 5c 0a 09 09 24 6f 70 65 6e 61 6c 74 20 7b 0a 09  \...$openalt {..
350c0 09 20 20 20 20 69 6e 63 72 20 6c 65 76 65 6c 5f  .    incr level_
350d0 61 6c 74 0a 09 09 20 20 20 20 73 65 74 20 69 64  alt...    set id
350e0 78 5f 61 6c 74 20 24 69 64 78 32 0a 09 09 7d 20  x_alt $idx2...} 
350f0 5c 0a 09 09 24 63 6c 6f 73 65 20 7b 0a 09 09 20  \...$close {... 
35100 20 20 20 69 6e 63 72 20 6c 65 76 65 6c 20 2d 31     incr level -1
35110 0a 09 09 20 20 20 20 69 66 20 7b 20 24 6c 65 76  ...    if { $lev
35120 65 6c 20 3c 20 30 20 7d 20 7b 0a 09 09 20 20 20  el < 0 } {...   
35130 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20       #          
35140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
35150 66 20 7b 20 24 6c 65 76 65 6c 5f 61 6c 74 20 3e  f { $level_alt >
35160 20 30 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20   0 } {...       
35170 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20   #              
35180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
35190 65 74 20 65 72 72 6f 72 20 31 0a 09 09 20 20 20  et error 1...   
351a0 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20       #          
351b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351c0 20 20 20 73 65 74 20 69 64 78 32 20 24 69 64 78     set idx2 $idx
351d0 5f 61 6c 74 0a 09 09 20 20 20 20 20 20 20 20 23  _alt...        #
351e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351f0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
35200 61 6b 0a 09 09 20 20 20 20 20 20 20 20 23 20 20  ak...        #  
35210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35220 20 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20 20         }...     
35230 20 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a 09     set found 1..
35240 09 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 09  .        break..
35250 09 20 20 20 20 7d 0a 09 09 7d 20 5c 0a 09 09 24  .    }...} \...$
35260 63 6c 6f 73 65 61 6c 74 20 7b 0a 09 09 20 20 20  closealt {...   
35270 20 69 6e 63 72 20 6c 65 76 65 6c 5f 61 6c 74 20   incr level_alt 
35280 2d 31 0a 09 09 20 20 20 20 69 66 20 7b 20 24 6c  -1...    if { $l
35290 65 76 65 6c 5f 61 6c 74 20 3c 20 30 20 7d 20 7b  evel_alt < 0 } {
352a0 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 6c  ...        set l
352b0 65 76 65 6c 5f 61 6c 74 20 30 0a 09 09 20 20 20  evel_alt 0...   
352c0 20 20 20 20 20 73 65 74 20 65 72 72 6f 72 20 31       set error 1
352d0 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 61 6b  ...        break
352e0 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20  ...    }...}..  
352f0 20 20 69 66 20 7b 20 24 64 69 72 20 3d 3d 20 22    if { $dir == "
35300 2d 66 6f 72 77 61 72 64 73 22 20 7d 20 7b 0a 09  -forwards" } {..
35310 09 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20  .set idx [$text 
35320 69 6e 64 65 78 20 24 69 64 78 32 2b 31 63 5d 0a  index $idx2+1c].
35330 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 65  .    } else { se
35340 74 20 69 64 78 20 24 69 64 78 32 20 7d 0a 09 7d  t idx $idx2 }..}
35350 0a 09 69 66 20 7b 20 24 6c 65 76 65 6c 5f 61 6c  ..if { $level_al
35360 74 20 21 3d 20 30 20 7d 20 7b 0a 09 20 20 20 20  t != 0 } {..    
35370 73 65 74 20 65 72 72 6f 72 20 31 0a 09 7d 0a 09  set error 1..}..
35380 69 66 20 7b 20 24 69 64 78 32 20 3d 3d 20 22 22  if { $idx2 == ""
35390 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 72   } {..    set er
353a0 72 6f 72 20 31 0a 09 20 20 20 20 73 65 74 20 69  ror 1..    set i
353b0 64 78 32 20 24 73 74 6f 70 69 6e 64 65 78 0a 09  dx2 $stopindex..
353c0 7d 0a 09 69 66 20 7b 20 24 65 72 72 6f 72 20 7d  }..if { $error }
353d0 20 7b 20 62 65 6c 6c 20 7d 0a 09 24 74 65 78 74   { bell }..$text
353e0 20 74 61 67 20 72 65 6d 6f 76 65 20 73 65 6c 20   tag remove sel 
353f0 31 2e 30 20 65 6e 64 0a 09 0a 09 69 66 20 7b 20  1.0 end....if { 
35400 24 64 69 72 20 3d 3d 20 22 2d 66 6f 72 77 61 72  $dir == "-forwar
35410 64 73 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74  ds" } {..    set
35420 20 69 64 78 41 20 69 6e 73 65 72 74 0a 09 20 20   idxA insert..  
35430 20 20 73 65 74 20 69 64 78 42 20 24 69 64 78 32    set idxB $idx2
35440 2b 31 63 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20  +1c..} else {.. 
35450 20 20 20 73 65 74 20 69 64 78 41 20 24 69 64 78     set idxA $idx
35460 32 0a 09 20 20 20 20 73 65 74 20 69 64 78 42 20  2..    set idxB 
35470 69 6e 73 65 72 74 0a 09 7d 0a 09 0a 09 69 66 20  insert..}....if 
35480 7b 20 24 65 72 72 6f 72 20 7d 20 7b 20 53 65 74  { $error } { Set
35490 4d 65 73 73 61 67 65 20 5b 5f 20 22 45 72 72 6f  Message [_ "Erro
354a0 72 3a 20 62 72 61 63 65 73 20 6e 6f 74 20 4f 4b  r: braces not OK
354b0 22 5d 20 7d 0a 09 0a 09 20 20 23 20 77 68 65 6e  "] }....  # when
354c0 20 6e 6f 74 20 64 6f 69 6e 67 20 69 74 20 62 79   not doing it by
354d0 20 6d 6f 75 73 65 2c 20 75 73 65 20 78 3d 2d 31   mouse, use x=-1
354e0 0a 09 69 66 20 7b 20 24 78 20 3e 3d 20 30 20 7d  ..if { $x >= 0 }
354f0 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 74 61   {..    $text ta
35500 67 20 61 64 64 20 73 65 6c 20 24 69 64 78 41 20  g add sel $idxA 
35510 24 69 64 78 42 0a 09 20 20 20 20 63 61 74 63 68  $idxB..    catch
35520 20 7b 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65   { $text mark se
35530 74 20 69 6e 73 65 72 74 20 24 69 64 78 32 20 7d  t insert $idx2 }
35540 0a 09 20 20 20 20 24 74 65 78 74 20 73 65 65 20  ..    $text see 
35550 24 69 64 78 32 0a 09 7d 20 65 6c 73 65 20 7b 0a  $idx2..} else {.
35560 09 20 20 20 20 24 74 65 78 74 20 74 61 67 20 61  .    $text tag a
35570 64 64 20 74 65 6d 70 6d 61 72 6b 65 72 20 24 69  dd tempmarker $i
35580 64 78 41 20 24 69 64 78 42 0a 09 20 20 20 20 24  dxA $idxB..    $
35590 74 65 78 74 20 74 61 67 20 63 6f 6e 66 20 74 65  text tag conf te
355a0 6d 70 6d 61 72 6b 65 72 20 2d 62 61 63 6b 67 72  mpmarker -backgr
355b0 6f 75 6e 64 20 5b 24 74 65 78 74 20 74 61 67 20  ound [$text tag 
355c0 63 67 65 74 20 73 65 6c 20 2d 62 61 63 6b 67 72  cget sel -backgr
355d0 6f 75 6e 64 5d 20 5c 0a 09 09 2d 66 6f 72 65 67  ound] \...-foreg
355e0 72 6f 75 6e 64 20 5b 24 74 65 78 74 20 74 61 67  round [$text tag
355f0 20 63 67 65 74 20 73 65 6c 20 2d 66 6f 72 65 67   cget sel -foreg
35600 72 6f 75 6e 64 5d 0a 09 20 20 20 20 69 66 20 7b  round]..    if {
35610 20 24 65 72 72 6f 72 20 7d 20 7b 20 24 74 65 78   $error } { $tex
35620 74 20 74 61 67 20 63 6f 6e 66 20 74 65 6d 70 6d  t tag conf tempm
35630 61 72 6b 65 72 20 2d 62 61 63 6b 67 72 6f 75 6e  arker -backgroun
35640 64 20 72 65 64 20 7d 0a 09 20 20 20 20 61 66 74  d red }..    aft
35650 65 72 20 31 30 30 30 20 24 74 65 78 74 20 74 61  er 1000 $text ta
35660 67 20 72 65 6d 6f 76 65 20 74 65 6d 70 6d 61 72  g remove tempmar
35670 6b 65 72 20 31 2e 30 20 65 6e 64 0a 09 7d 0a 20  ker 1.0 end..}. 
35680 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
35690 44 65 62 75 67 67 65 72 3a 3a 43 65 6e 74 65 72  Debugger::Center
356a0 44 69 73 70 6c 61 79 20 7b 7d 20 7b 0a 20 20 20  Display {} {.   
356b0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20   variable text. 
356c0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
356d0 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20  _secondary..    
356e0 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74  if { [info exist
356f0 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79  s text_secondary
35700 5d 20 26 26 20 5b 66 6f 63 75 73 20 2d 6c 61 73  ] && [focus -las
35710 74 66 6f 72 20 24 74 65 78 74 5d 20 65 71 20 24  tfor $text] eq $
35720 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 7d  text_secondary }
35730 20 7b 0a 09 73 65 74 20 6d 79 74 65 78 74 20 24   {..set mytext $
35740 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20  text_secondary. 
35750 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20     } else { set 
35760 6d 79 74 65 78 74 20 24 74 65 78 74 20 7d 0a 0a  mytext $text }..
35770 20 20 20 20 73 63 61 6e 20 5b 24 6d 79 74 65 78      scan [$mytex
35780 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 20  t index insert] 
35790 22 25 64 22 20 6c 69 6e 65 0a 20 20 20 20 73 65  "%d" line.    se
357a0 74 20 4e 75 6d 4c 69 6e 65 73 20 5b 73 63 61 6e  t NumLines [scan
357b0 20 5b 24 6d 79 74 65 78 74 20 69 6e 64 65 78 20   [$mytext index 
357c0 65 6e 64 2d 31 63 5d 20 25 64 5d 0a 0a 20 20 20  end-1c] %d]..   
357d0 20 66 6f 72 65 61 63 68 20 22 66 31 20 66 32 22   foreach "f1 f2"
357e0 20 5b 24 6d 79 74 65 78 74 20 79 76 69 65 77 5d   [$mytext yview]
357f0 20 62 72 65 61 6b 0a 20 20 20 20 73 65 74 20 79   break.    set y
35800 73 20 5b 65 78 70 72 20 24 6c 69 6e 65 2f 64 6f  s [expr $line/do
35810 75 62 6c 65 28 24 4e 75 6d 4c 69 6e 65 73 29 2d  uble($NumLines)-
35820 28 24 66 32 2d 24 66 31 29 2f 32 2e 30 5d 0a 20  ($f2-$f1)/2.0]. 
35830 20 20 20 69 66 20 7b 20 24 79 73 20 3c 20 30 20     if { $ys < 0 
35840 7d 20 7b 20 73 65 74 20 79 73 20 30 20 7d 0a 20  } { set ys 0 }. 
35850 20 20 20 24 6d 79 74 65 78 74 20 79 76 69 65 77     $mytext yview
35860 20 6d 6f 76 65 74 6f 20 24 79 73 0a 7d 0a 0a 70   moveto $ys.}..p
35870 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
35880 3a 43 6f 6d 6d 65 6e 74 53 65 6c 65 63 74 69 6f  :CommentSelectio
35890 6e 20 7b 20 77 68 61 74 20 7d 20 7b 0a 20 20 20  n { what } {.   
358a0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20   variable text. 
358b0 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72     variable curr
358c0 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 73 65 74  entfile..    set
358d0 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 65 46   filetype [GiveF
358e0 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e 74  ileType $current
358f0 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 65 6e  file].    set en
35900 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72 20 22 22  d_commentchar ""
35910 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74  .    if { $filet
35920 79 70 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 7d  ype == "C/C++" }
35930 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 6e 74 63   {..set commentc
35940 68 61 72 20 22 2f 2f 22 0a 20 20 20 20 7d 20 65  har "//".    } e
35950 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70  lseif { $filetyp
35960 65 20 3d 3d 20 22 47 69 44 20 42 41 53 20 66 69  e == "GiD BAS fi
35970 6c 65 22 20 7d 20 7b 0a 09 73 65 74 20 63 6f 6d  le" } {..set com
35980 6d 65 6e 74 63 68 61 72 20 22 2a 23 22 0a 20 20  mentchar "*#".  
35990 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 66 69    } elseif { $fi
359a0 6c 65 74 79 70 65 20 3d 3d 20 22 58 4d 4c 22 20  letype == "XML" 
359b0 7d 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 6e 74  } {..set comment
359c0 63 68 61 72 20 22 3c 21 2d 2d 22 0a 09 73 65 74  char "<!--"..set
359d0 20 65 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72   end_commentchar
359e0 20 22 2d 2d 3e 22 0a 20 20 20 20 7d 20 65 6c 73   "-->".    } els
359f0 65 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 6e 74  e {..set comment
35a00 63 68 61 72 20 22 23 22 0a 20 20 20 20 7d 0a 20  char "#".    }. 
35a10 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 7b     if { [catch {
35a20 0a 09 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e  ..scan [$text in
35a30 64 65 78 20 73 65 6c 2e 66 69 72 73 74 5d 20 22  dex sel.first] "
35a40 25 64 22 20 6c 69 6e 65 31 0a 09 73 63 61 6e 20  %d" line1..scan 
35a50 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 65 6c  [$text index sel
35a60 2e 6c 61 73 74 5d 20 22 25 64 2e 25 64 22 20 6c  .last] "%d.%d" l
35a70 69 6e 65 32 20 70 6f 73 32 0a 09 69 66 20 7b 20  ine2 pos2..if { 
35a80 24 70 6f 73 32 20 3d 3d 20 30 20 7d 20 7b 20 69  $pos2 == 0 } { i
35a90 6e 63 72 20 6c 69 6e 65 32 20 2d 31 20 7d 0a 20  ncr line2 -1 }. 
35aa0 20 20 20 7d 5d 20 7d 20 7b 0a 09 73 63 61 6e 20     }] } {..scan 
35ab0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73  [$text index ins
35ac0 65 72 74 5d 20 22 25 64 22 20 6c 69 6e 65 31 0a  ert] "%d" line1.
35ad0 09 73 65 74 20 6c 69 6e 65 32 20 24 6c 69 6e 65  .set line2 $line
35ae0 31 0a 09 23 57 61 72 6e 57 69 6e 20 22 53 65 6c  1..#WarnWin "Sel
35af0 65 63 74 20 73 6f 6d 65 74 68 69 6e 67 20 66 69  ect something fi
35b00 72 73 74 22 20 24 74 65 78 74 0a 09 23 72 65 74  rst" $text..#ret
35b10 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 73 77  urn.    }.    sw
35b20 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 6f 6e  itch $what {..on
35b30 20 7b 0a 09 20 20 20 20 66 6f 72 20 7b 20 73 65   {..    for { se
35b40 74 20 69 20 24 6c 69 6e 65 31 20 7d 20 7b 20 24  t i $line1 } { $
35b50 69 20 3c 3d 20 24 6c 69 6e 65 32 20 7d 20 7b 20  i <= $line2 } { 
35b60 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 24 74 65  incr i } {...$te
35b70 78 74 20 69 6e 73 65 72 74 20 24 69 2e 30 20 22  xt insert $i.0 "
35b80 24 63 6f 6d 6d 65 6e 74 63 68 61 72 20 22 0a 09  $commentchar "..
35b90 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20      }..    if { 
35ba0 24 65 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72  $end_commentchar
35bb0 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 66 6f 72   ne "" } {...for
35bc0 20 7b 20 73 65 74 20 69 20 24 6c 69 6e 65 31 20   { set i $line1 
35bd0 7d 20 7b 20 24 69 20 3c 3d 20 24 6c 69 6e 65 32  } { $i <= $line2
35be0 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a   } { incr i } {.
35bf0 09 09 20 20 20 20 24 74 65 78 74 20 69 6e 73 65  ..    $text inse
35c00 72 74 20 22 24 69 2e 30 20 6c 69 6e 65 65 6e 64  rt "$i.0 lineend
35c10 22 20 22 20 24 65 6e 64 5f 63 6f 6d 6d 65 6e 74  " " $end_comment
35c20 63 68 61 72 22 0a 09 09 7d 0a 09 20 20 20 20 7d  char"...}..    }
35c30 0a 09 7d 0a 09 6f 66 66 20 7b 0a 09 20 20 20 20  ..}..off {..    
35c40 66 6f 72 20 7b 20 73 65 74 20 69 20 24 6c 69 6e  for { set i $lin
35c50 65 31 20 7d 20 7b 20 24 69 20 3c 3d 20 24 6c 69  e1 } { $i <= $li
35c60 6e 65 32 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d  ne2 } { incr i }
35c70 20 7b 0a 09 09 73 65 74 20 6c 69 6e 65 20 5b 24   {...set line [$
35c80 74 65 78 74 20 67 65 74 20 24 69 2e 30 20 22 24  text get $i.0 "$
35c90 69 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 0a 09 09  i.0 lineend"]...
35ca0 72 65 67 73 75 62 20 22 5e 5c 5c 73 2a 24 63 6f  regsub "^\\s*$co
35cb0 6d 6d 65 6e 74 63 68 61 72 5c 5c 73 3f 22 20 24  mmentchar\\s?" $
35cc0 6c 69 6e 65 20 7b 7d 20 6c 69 6e 65 0a 09 09 24  line {} line...$
35cd0 74 65 78 74 20 64 65 6c 65 74 65 20 24 69 2e 30  text delete $i.0
35ce0 20 22 24 69 2e 30 20 6c 69 6e 65 65 6e 64 22 0a   "$i.0 lineend".
35cf0 09 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 24  ..$text insert $
35d00 69 2e 30 20 24 6c 69 6e 65 0a 09 20 20 20 20 7d  i.0 $line..    }
35d10 0a 09 20 20 20 20 69 66 20 7b 20 24 65 6e 64 5f  ..    if { $end_
35d20 63 6f 6d 6d 65 6e 74 63 68 61 72 20 6e 65 20 22  commentchar ne "
35d30 22 20 7d 20 7b 0a 09 09 66 6f 72 20 7b 20 73 65  " } {...for { se
35d40 74 20 69 20 24 6c 69 6e 65 31 20 7d 20 7b 20 24  t i $line1 } { $
35d50 69 20 3c 3d 20 24 6c 69 6e 65 32 20 7d 20 7b 20  i <= $line2 } { 
35d60 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 20 20 20  incr i } {...   
35d70 20 73 65 74 20 6c 69 6e 65 20 5b 24 74 65 78 74   set line [$text
35d80 20 67 65 74 20 24 69 2e 30 20 22 24 69 2e 30 20   get $i.0 "$i.0 
35d90 6c 69 6e 65 65 6e 64 22 5d 0a 09 09 20 20 20 20  lineend"]...    
35da0 72 65 67 73 75 62 20 22 5c 5c 73 2a 24 65 6e 64  regsub "\\s*$end
35db0 5f 63 6f 6d 6d 65 6e 74 63 68 61 72 5c 5c 73 2a  _commentchar\\s*
35dc0 24 22 20 24 6c 69 6e 65 20 7b 7d 20 6c 69 6e 65  $" $line {} line
35dd0 0a 09 09 20 20 20 20 24 74 65 78 74 20 64 65 6c  ...    $text del
35de0 65 74 65 20 24 69 2e 30 20 22 24 69 2e 30 20 6c  ete $i.0 "$i.0 l
35df0 69 6e 65 65 6e 64 22 0a 09 09 20 20 20 20 24 74  ineend"...    $t
35e00 65 78 74 20 69 6e 73 65 72 74 20 24 69 2e 30 20  ext insert $i.0 
35e10 24 6c 69 6e 65 0a 09 09 7d 0a 09 20 20 20 20 7d  $line...}..    }
35e20 0a 09 7d 0a 09 74 6f 67 67 6c 65 20 7b 0a 09 20  ..}..toggle {.. 
35e30 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24     for { set i $
35e40 6c 69 6e 65 31 20 7d 20 7b 20 24 69 20 3c 3d 20  line1 } { $i <= 
35e50 24 6c 69 6e 65 32 20 7d 20 7b 20 69 6e 63 72 20  $line2 } { incr 
35e60 69 20 7d 20 7b 0a 09 09 73 65 74 20 6c 20 5b 73  i } {...set l [s
35e70 74 72 69 6e 67 20 74 72 69 6d 20 5b 24 74 65 78  tring trim [$tex
35e80 74 20 67 65 74 20 24 69 2e 30 20 22 24 69 2e 30  t get $i.0 "$i.0
35e90 20 6c 69 6e 65 65 6e 64 22 5d 5d 0a 09 09 69 66   lineend"]]...if
35ea0 20 7b 20 24 6c 20 65 71 20 22 22 20 7d 20 7b 20   { $l eq "" } { 
35eb0 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 69 66 20  continue }...if 
35ec0 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68  { ![string match
35ed0 20 22 24 63 6f 6d 6d 65 6e 74 63 68 61 72 2a 22   "$commentchar*"
35ee0 20 24 6c 5d 20 7d 20 7b 0a 09 09 20 20 20 20 72   $l] } {...    r
35ef0 65 74 75 72 6e 20 5b 43 6f 6d 6d 65 6e 74 53 65  eturn [CommentSe
35f00 6c 65 63 74 69 6f 6e 20 6f 6e 5d 0a 09 09 7d 0a  lection on]...}.
35f10 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65 74 75  .    }..    retu
35f20 72 6e 20 5b 43 6f 6d 6d 65 6e 74 53 65 6c 65 63  rn [CommentSelec
35f30 74 69 6f 6e 20 6f 66 66 5d 0a 09 7d 0a 20 20 20  tion off]..}.   
35f40 20 7d 0a 7d 0a 0a 23 20 70 72 6f 63 20 52 61 6d   }.}..# proc Ram
35f50 44 65 62 75 67 67 65 72 3a 3a 49 6e 64 65 6e 74  Debugger::Indent
35f60 43 75 72 72 65 6e 74 20 7b 7d 20 7b 0a 23 20 20  Current {} {.#  
35f70 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
35f80 0a 0a 23 20 20 20 20 20 73 63 61 6e 20 5b 24 74  ..#     scan [$t
35f90 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74  ext index insert
35fa0 5d 20 22 25 64 2e 25 64 22 20 6c 69 6e 65 20 70  ] "%d.%d" line p
35fb0 6f 73 0a 23 20 20 20 20 20 49 6e 64 65 6e 74 4c  os.#     IndentL
35fc0 69 6e 65 20 24 6c 69 6e 65 20 24 70 6f 73 0a 23  ine $line $pos.#
35fd0 20 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75   }..proc RamDebu
35fe0 67 67 65 72 3a 3a 49 6e 64 65 6e 74 20 7b 7d 20  gger::Indent {} 
35ff0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  {.    variable t
36000 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ext.    variable
36010 20 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74 69   CheckTextInacti
36020 76 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ve.    variable 
36030 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20  currentfile.    
36040 0a 20 20 20 20 73 65 74 20 70 6f 73 20 2d 31 0a  .    set pos -1.
36050 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20      if { [catch 
36060 7b 0a 09 73 63 61 6e 20 5b 24 74 65 78 74 20 69  {..scan [$text i
36070 6e 64 65 78 20 73 65 6c 2e 66 69 72 73 74 5d 20  ndex sel.first] 
36080 22 25 64 22 20 6c 69 6e 65 31 0a 09 73 63 61 6e  "%d" line1..scan
36090 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 65   [$text index se
360a0 6c 2e 6c 61 73 74 5d 20 22 25 64 22 20 6c 69 6e  l.last] "%d" lin
360b0 65 32 0a 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 73  e2.    }] } {..s
360c0 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78  can [$text index
360d0 20 69 6e 73 65 72 74 5d 20 22 25 64 2e 25 64 22   insert] "%d.%d"
360e0 20 6c 69 6e 65 31 20 70 6f 73 0a 09 73 65 74 20   line1 pos..set 
360f0 6c 69 6e 65 32 20 24 6c 69 6e 65 31 0a 20 20 20  line2 $line1.   
36100 20 7d 0a 20 20 20 20 0a 20 20 20 20 73 77 69 74   }.    .    swit
36110 63 68 20 2d 2d 20 5b 47 69 76 65 46 69 6c 65 54  ch -- [GiveFileT
36120 79 70 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ype $currentfile
36130 5d 20 7b 0a 09 22 54 43 4c 22 20 2d 20 22 43 2f  ] {.."TCL" - "C/
36140 43 2b 2b 22 20 7b 20 23 20 6e 6f 74 68 69 6e 67  C++" { # nothing
36150 20 7d 0a 09 64 65 66 61 75 6c 74 20 7b 20 73 65   }..default { se
36160 74 20 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74  t CheckTextInact
36170 69 76 65 20 31 20 7d 20 0a 20 20 20 20 7d 0a 20  ive 1 } .    }. 
36180 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24     for { set i $
36190 6c 69 6e 65 31 20 7d 20 7b 20 24 69 20 3c 3d 20  line1 } { $i <= 
361a0 24 6c 69 6e 65 32 20 7d 20 7b 20 69 6e 63 72 20  $line2 } { incr 
361b0 69 20 7d 20 7b 0a 09 49 6e 64 65 6e 74 4c 69 6e  i } {..IndentLin
361c0 65 20 24 69 20 24 70 6f 73 0a 20 20 20 20 7d 0a  e $i $pos.    }.
361d0 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d      unset -nocom
361e0 70 6c 61 69 6e 20 43 68 65 63 6b 54 65 78 74 49  plain CheckTextI
361f0 6e 61 63 74 69 76 65 0a 7d 0a 0a 70 72 6f 63 20  nactive.}..proc 
36200 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 64  RamDebugger::Ind
36210 65 6e 74 4c 69 6e 65 20 7b 20 6c 69 6e 65 20 7b  entLine { line {
36220 20 70 6f 73 20 2d 31 20 7d 20 7d 20 7b 0a 20 20   pos -1 } } {.  
36230 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
36240 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 6e 73      variable ins
36250 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e  trumentedfilesIn
36260 66 6f 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  fo.    variable 
36270 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20  currentfile.    
36280 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73  variable options
36290 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74 79  ..    set filety
362a0 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65  pe [GiveFileType
362b0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20   $currentfile]. 
362c0 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70     if { $filetyp
362d0 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 7d 20 7b  e == "C/C++" } {
362e0 0a 09 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c  ..set indent_val
362f0 20 24 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74   $options(indent
36300 73 69 7a 65 43 2b 2b 29 0a 20 20 20 20 7d 20 65  sizeC++).    } e
36310 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70  lseif { $filetyp
36320 65 20 3d 3d 20 22 58 4d 4c 22 20 7d 20 7b 0a 09  e == "XML" } {..
36330 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20 24  set indent_val $
36340 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73 69  options(indentsi
36350 7a 65 43 2b 2b 29 0a 20 20 20 20 7d 20 65 6c 73  zeC++).    } els
36360 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20  eif { $filetype 
36370 3d 3d 20 22 54 43 4c 22 20 7d 20 7b 0a 09 73 65  == "TCL" } {..se
36380 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20 24 6f 70  t indent_val $op
36390 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73 69 7a 65  tions(indentsize
363a0 54 43 4c 29 0a 20 20 20 20 7d 20 65 6c 73 65 69  TCL).    } elsei
363b0 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d  f { $filetype ==
363c0 20 22 4d 61 6b 65 66 69 6c 65 22 20 7d 20 7b 0a   "Makefile" } {.
363d0 09 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20  .set indent_val 
363e0 24 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73  $options(indents
363f0 69 7a 65 54 43 4c 29 0a 20 20 20 20 7d 20 65 6c  izeTCL).    } el
36400 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65  seif { $filetype
36410 20 3d 3d 20 22 47 69 44 20 42 41 53 20 66 69 6c   == "GiD BAS fil
36420 65 22 20 7d 20 7b 0a 09 73 65 74 20 69 6e 64 65  e" } {..set inde
36430 6e 74 5f 76 61 6c 20 30 0a 20 20 20 20 7d 20 65  nt_val 0.    } e
36440 6c 73 65 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a  lse { return }..
36450 20 20 20 20 69 66 20 7b 20 24 6c 69 6e 65 20 65      if { $line e
36460 71 20 22 22 20 7d 20 7b 0a 09 20 73 63 61 6e 20  q "" } {.. scan 
36470 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73  [$text index ins
36480 65 72 74 5d 20 22 25 64 2e 25 64 22 20 6c 69 6e  ert] "%d.%d" lin
36490 65 20 2d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65  e -.    }.    se
364a0 74 20 6c 65 76 65 6c 20 30 0a 20 20 20 20 73 65  t level 0.    se
364b0 74 20 74 79 70 65 20 22 22 0a 20 20 20 20 66 6f  t type "".    fo
364c0 72 65 61 63 68 20 22 6c 65 76 65 6c 20 74 79 70  reach "level typ
364d0 65 22 20 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74  e" [lindex $inst
364e0 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66  rumentedfilesInf
364f0 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20  o($currentfile) 
36500 5b 65 78 70 72 20 24 6c 69 6e 65 2d 31 5d 5d 20  [expr $line-1]] 
36510 62 72 65 61 6b 0a 0a 20 20 20 20 73 77 69 74 63  break..    switc
36520 68 20 24 74 79 70 65 20 7b 0a 09 6e 20 7b 20 73  h $type {..n { s
36530 65 74 20 69 6e 64 65 6e 74 20 5b 65 78 70 72 20  et indent [expr 
36540 24 6c 65 76 65 6c 2a 24 69 6e 64 65 6e 74 5f 76  $level*$indent_v
36550 61 6c 5d 20 7d 0a 09 63 20 7b 20 73 65 74 20 69  al] }..c { set i
36560 6e 64 65 6e 74 20 5b 65 78 70 72 20 24 6c 65 76  ndent [expr $lev
36570 65 6c 2a 24 69 6e 64 65 6e 74 5f 76 61 6c 2b 24  el*$indent_val+$
36580 69 6e 64 65 6e 74 5f 76 61 6c 5d 20 7d 0a 09 22  indent_val] }.."
36590 22 20 7b 20 73 65 74 20 69 6e 64 65 6e 74 20 30  " { set indent 0
365a0 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 6f 72   }.    }.    for
365b0 65 61 63 68 20 22 2d 20 63 6f 6c 22 20 5b 73 63  each "- col" [sc
365c0 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20  an [$text index 
365d0 22 24 6c 69 6e 65 2e 30 20 6c 69 6e 65 65 6e 64  "$line.0 lineend
365e0 22 5d 20 25 64 2e 25 64 5d 20 62 72 65 61 6b 0a  "] %d.%d] break.
365f0 20 20 20 20 73 65 74 20 46 69 72 73 74 50 6f 73      set FirstPos
36600 20 2d 31 0a 20 20 20 20 73 65 74 20 46 69 72 73   -1.    set Firs
36610 74 43 68 61 72 20 22 22 0a 20 20 20 20 66 6f 72  tChar "".    for
36620 20 7b 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24   { set i 0 } { $
36630 69 20 3c 20 24 63 6f 6c 20 7d 20 7b 20 69 6e 63  i < $col } { inc
36640 72 20 69 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 24  r i } {..if { [$
36650 74 65 78 74 20 67 65 74 20 24 6c 69 6e 65 2e 24  text get $line.$
36660 69 5d 20 21 3d 20 22 20 22 20 7d 20 7b 0a 09 20  i] != " " } {.. 
36670 20 20 20 73 65 74 20 46 69 72 73 74 50 6f 73 20     set FirstPos 
36680 24 69 0a 09 20 20 20 20 73 65 74 20 46 69 72 73  $i..    set Firs
36690 74 43 68 61 72 20 5b 24 74 65 78 74 20 67 65 74  tChar [$text get
366a0 20 24 6c 69 6e 65 2e 24 69 5d 0a 09 20 20 20 20   $line.$i]..    
366b0 62 72 65 61 6b 0a 09 7d 0a 20 20 20 20 7d 0a 20  break..}.    }. 
366c0 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70     if { $filetyp
366d0 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 26 26 20  e == "C/C++" && 
366e0 24 46 69 72 73 74 43 68 61 72 20 3d 3d 20 22 5c  $FirstChar == "\
366f0 7b 22 20 26 26 20 24 74 79 70 65 20 3d 3d 20 22  {" && $type == "
36700 63 22 20 7d 20 7b 0a 09 73 65 74 20 69 6e 64 65  c" } {..set inde
36710 6e 74 20 5b 65 78 70 72 20 24 69 6e 64 65 6e 74  nt [expr $indent
36720 2d 24 69 6e 64 65 6e 74 5f 76 61 6c 5d 0a 20 20  -$indent_val].  
36730 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65    } elseif { [re
36740 67 65 78 70 20 7b 54 43 4c 7c 43 2f 43 5c 2b 5c  gexp {TCL|C/C\+\
36750 2b 7d 20 24 66 69 6c 65 74 79 70 65 5d 20 26 26  +} $filetype] &&
36760 20 24 46 69 72 73 74 43 68 61 72 20 3d 3d 20 22   $FirstChar == "
36770 5c 7d 22 20 26 26 20 24 69 6e 64 65 6e 74 20 3e  \}" && $indent >
36780 3d 20 24 69 6e 64 65 6e 74 5f 76 61 6c 20 7d 20  = $indent_val } 
36790 7b 0a 09 73 65 74 20 69 6e 64 65 6e 74 20 5b 65  {..set indent [e
367a0 78 70 72 20 24 69 6e 64 65 6e 74 2d 24 69 6e 64  xpr $indent-$ind
367b0 65 6e 74 5f 76 61 6c 5d 0a 20 20 20 20 7d 20 65  ent_val].    } e
367c0 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70  lseif { $filetyp
367d0 65 20 65 71 20 22 4d 61 6b 65 66 69 6c 65 22 20  e eq "Makefile" 
367e0 26 26 20 24 6c 69 6e 65 20 3e 20 31 7d 20 7b 0a  && $line > 1} {.
367f0 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e  .if { [regexp {^
36800 28 5b 5e 3a 5c 73 5d 2b 5c 73 2a 3a 7c 5c 73 7b  ([^:\s]+\s*:|\s{
36810 38 7d 5c 77 29 7d 20 5b 24 74 65 78 74 20 67 65  8}\w)} [$text ge
36820 74 20 22 24 6c 69 6e 65 2e 30 2d 31 6c 20 6c 69  t "$line.0-1l li
36830 6e 65 73 74 61 72 74 22 20 22 24 6c 69 6e 65 2e  nestart" "$line.
36840 30 2d 31 6c 20 6c 69 6e 65 65 6e 64 22 20 5d 5d  0-1l lineend" ]]
36850 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 6e   } {..    set in
36860 64 65 6e 74 20 38 0a 09 7d 0a 20 20 20 20 7d 0a  dent 8..}.    }.
36870 20 20 20 20 69 66 20 7b 20 24 46 69 72 73 74 50      if { $FirstP
36880 6f 73 20 3d 3d 20 2d 31 20 7d 20 7b 20 73 65 74  os == -1 } { set
36890 20 46 69 72 73 74 50 6f 73 20 24 63 6f 6c 20 7d   FirstPos $col }
368a0 0a 20 20 20 20 69 66 20 7b 20 24 46 69 72 73 74  .    if { $First
368b0 50 6f 73 20 3c 20 24 69 6e 64 65 6e 74 20 7d 20  Pos < $indent } 
368c0 7b 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20  {..$text insert 
368d0 24 6c 69 6e 65 2e 30 20 5b 73 74 72 69 6e 67 20  $line.0 [string 
368e0 72 65 70 65 61 74 20 22 20 22 20 5b 65 78 70 72  repeat " " [expr
368f0 20 24 69 6e 64 65 6e 74 2d 24 46 69 72 73 74 50   $indent-$FirstP
36900 6f 73 5d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69  os]].    } elsei
36910 66 20 7b 20 24 46 69 72 73 74 50 6f 73 20 3e 20  f { $FirstPos > 
36920 24 69 6e 64 65 6e 74 20 7d 20 7b 0a 09 24 74 65  $indent } {..$te
36930 78 74 20 64 65 6c 65 74 65 20 24 6c 69 6e 65 2e  xt delete $line.
36940 30 20 24 6c 69 6e 65 2e 5b 65 78 70 72 20 24 46  0 $line.[expr $F
36950 69 72 73 74 50 6f 73 2d 24 69 6e 64 65 6e 74 5d  irstPos-$indent]
36960 20 20 20 20 20 20 20 20 0a 20 20 20 20 7d 0a 20          .    }. 
36970 20 20 20 69 66 20 7b 20 24 70 6f 73 20 3e 3d 20     if { $pos >= 
36980 30 20 26 26 20 24 70 6f 73 20 3c 20 24 69 6e 64  0 && $pos < $ind
36990 65 6e 74 20 26 26 20 5b 73 74 72 69 6e 67 20 74  ent && [string t
369a0 72 69 6d 20 5b 24 74 65 78 74 20 67 65 74 20 24  rim [$text get $
369b0 6c 69 6e 65 2e 30 20 69 6e 73 65 72 74 5d 5d 20  line.0 insert]] 
369c0 3d 3d 20 22 22 20 7d 20 7b 0a 09 24 74 65 78 74  == "" } {..$text
369d0 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74   mark set insert
369e0 20 24 6c 69 6e 65 2e 24 69 6e 64 65 6e 74 0a 20   $line.$indent. 
369f0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
36a00 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74 65  Debugger::Update
36a10 4c 69 6e 65 4e 75 6d 20 7b 20 63 6f 6d 6d 61 6e  LineNum { comman
36a20 64 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76  d args } {.    v
36a30 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20  ariable text.   
36a40 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e   variable curren
36a50 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a  tfileIsModified.
36a60 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72  .    RamDebugger
36a70 3a 3a 43 56 53 3a 3a 53 65 74 55 73 65 72 41 63  ::CVS::SetUserAc
36a80 74 69 76 69 74 79 0a 0a 20 20 20 20 69 66 20 7b  tivity..    if {
36a90 20 5b 72 65 67 65 78 70 20 7b 69 6e 64 65 78 7c   [regexp {index|
36aa0 62 62 6f 78 7c 67 65 74 7d 20 24 63 6f 6d 6d 61  bbox|get} $comma
36ab0 6e 64 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d  nd] } { return }
36ac0 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78  .    if { [regex
36ad0 70 20 7b 5e 28 69 6e 73 7c 64 65 6c 29 7d 20 24  p {^(ins|del)} $
36ae0 63 6f 6d 6d 61 6e 64 5d 20 7d 20 7b 20 43 68 65  command] } { Che
36af0 63 6b 54 65 78 74 20 24 63 6f 6d 6d 61 6e 64 20  ckText $command 
36b00 24 61 72 67 73 20 7d 0a 0a 20 20 20 20 69 66 20  $args }..    if 
36b10 7b 20 5b 72 65 67 65 78 70 20 7b 5e 28 69 6e 73  { [regexp {^(ins
36b20 7c 64 65 6c 29 7d 20 24 63 6f 6d 6d 61 6e 64 5d  |del)} $command]
36b30 20 26 26 20 21 24 63 75 72 72 65 6e 74 66 69 6c   && !$currentfil
36b40 65 49 73 4d 6f 64 69 66 69 65 64 20 7d 20 7b 0a  eIsModified } {.
36b50 09 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f  .wm title [winfo
36b60 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d   toplevel $text]
36b70 20 5b 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66   [wm title [winf
36b80 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74  o toplevel $text
36b90 5d 5d 2a 0a 09 73 65 74 20 63 75 72 72 65 6e 74  ]]*..set current
36ba0 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 31  fileIsModified 1
36bb0 0a 20 20 20 20 7d 0a 20 20 20 20 55 70 64 61 74  .    }.    Updat
36bc0 65 4c 69 6e 65 4e 75 6d 44 6f 0a 7d 0a 0a 70 72  eLineNumDo.}..pr
36bd0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
36be0 53 65 74 49 73 4d 6f 64 69 66 69 65 64 20 7b 7d  SetIsModified {}
36bf0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
36c00 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c  text.    variabl
36c10 65 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d  e currentfileIsM
36c20 6f 64 69 66 69 65 64 0a 0a 20 20 20 20 69 66 20  odified..    if 
36c30 7b 20 21 24 63 75 72 72 65 6e 74 66 69 6c 65 49  { !$currentfileI
36c40 73 4d 6f 64 69 66 69 65 64 20 7d 20 7b 0a 09 77  sModified } {..w
36c50 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f 20 74  m title [winfo t
36c60 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 20 5b  oplevel $text] [
36c70 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f 20  wm title [winfo 
36c80 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 5d  toplevel $text]]
36c90 2a 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69  *..set currentfi
36ca0 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 31 0a 20  leIsModified 1. 
36cb0 20 20 20 7d 0a 20 20 20 20 55 70 64 61 74 65 4c     }.    UpdateL
36cc0 69 6e 65 4e 75 6d 44 6f 0a 7d 0a 0a 70 72 6f 63  ineNumDo.}..proc
36cd0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70   RamDebugger::Up
36ce0 64 61 74 65 4c 69 6e 65 4e 75 6d 44 6f 20 7b 7d  dateLineNumDo {}
36cf0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
36d00 4c 69 6e 65 4e 75 6d 0a 20 20 20 20 76 61 72 69  LineNum.    vari
36d10 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61  able text.    va
36d20 72 69 61 62 6c 65 20 66 69 6c 65 73 6d 74 69 6d  riable filesmtim
36d30 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63  e.    variable c
36d40 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76  urrentfile.    v
36d50 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66  ariable currentf
36d60 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a 20 20  ileIsModified.  
36d70 20 20 76 61 72 69 61 62 6c 65 20 43 68 65 63 6b    variable Check
36d80 45 78 74 65 72 6e 61 6c 46 69 6c 65 4d 6f 64 69  ExternalFileModi
36d90 66 69 63 61 74 69 6f 6e 0a 0a 20 20 20 20 73 65  fication..    se
36da0 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64  t idx [$text ind
36db0 65 78 20 69 6e 73 65 72 74 5d 0a 20 20 20 20 73  ex insert].    s
36dc0 65 74 20 6c 69 6e 65 20 22 22 0a 20 20 20 20 66  et line "".    f
36dd0 6f 72 65 61 63 68 20 22 6c 69 6e 65 20 63 6f 6c  oreach "line col
36de0 22 20 5b 73 63 61 6e 20 24 69 64 78 20 22 25 64  " [scan $idx "%d
36df0 2c 25 64 22 5d 20 62 72 65 61 6b 0a 20 20 20 20  ,%d"] break.    
36e00 69 66 20 7b 20 24 6c 69 6e 65 20 3d 3d 20 22 22  if { $line == ""
36e10 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20   } { return }.  
36e20 20 20 73 65 74 20 4c 69 6e 65 4e 75 6d 20 22 4c    set LineNum "L
36e30 3a 20 24 6c 69 6e 65 22 0a 0a 20 20 20 20 69 66  : $line"..    if
36e40 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20   { $currentfile 
36e50 6e 65 20 22 22 20 26 26 20 5b 73 74 72 69 6e 67  ne "" && [string
36e60 20 69 6e 64 65 78 20 24 63 75 72 72 65 6e 74 66   index $currentf
36e70 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d 20  ile 0] != "*" } 
36e80 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20  {..if { [lindex 
36e90 5b 66 69 6c 65 20 73 79 73 74 65 6d 20 24 63 75  [file system $cu
36ea0 72 72 65 6e 74 66 69 6c 65 5d 20 30 5d 20 65 71  rrentfile] 0] eq
36eb0 20 22 6e 61 74 69 76 65 22 20 7d 20 7b 0a 09 20   "native" } {.. 
36ec0 20 20 20 73 65 74 20 65 78 69 73 74 73 20 5b 66     set exists [f
36ed0 69 6c 65 20 65 78 69 73 74 73 20 24 63 75 72 72  ile exists $curr
36ee0 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 73 65  entfile]..    se
36ef0 74 20 6d 74 69 6d 65 20 5b 66 69 6c 65 20 6d 74  t mtime [file mt
36f00 69 6d 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ime $currentfile
36f10 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20  ]..} else {..   
36f20 20 73 65 74 20 65 78 69 73 74 73 20 31 0a 09 20   set exists 1.. 
36f30 20 20 20 73 65 74 20 6d 74 69 6d 65 20 24 66 69     set mtime $fi
36f40 6c 65 73 6d 74 69 6d 65 28 24 63 75 72 72 65 6e  lesmtime($curren
36f50 74 66 69 6c 65 29 0a 09 7d 0a 09 69 66 20 7b 20  tfile)..}..if { 
36f60 24 43 68 65 63 6b 45 78 74 65 72 6e 61 6c 46 69  $CheckExternalFi
36f70 6c 65 4d 6f 64 69 66 69 63 61 74 69 6f 6e 20 26  leModification &
36f80 26 20 24 65 78 69 73 74 73 20 26 26 20 24 6d 74  & $exists && $mt
36f90 69 6d 65 20 3e 20 24 66 69 6c 65 73 6d 74 69 6d  ime > $filesmtim
36fa0 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20  e($currentfile) 
36fb0 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6c  } {..    set fil
36fc0 65 73 6d 74 69 6d 65 28 24 63 75 72 72 65 6e 74  esmtime($current
36fd0 66 69 6c 65 29 20 24 6d 74 69 6d 65 0a 0a 09 20  file) $mtime... 
36fe0 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74     if { $current
36ff0 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 7d  fileIsModified }
37000 20 7b 0a 09 09 73 65 74 20 71 75 65 73 74 20 5b   {...set quest [
37010 5f 20 22 46 69 6c 65 20 27 25 73 27 20 68 61 73  _ "File '%s' has
37020 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 6f   been modified o
37030 75 74 73 69 64 65 20 52 61 6d 44 65 62 75 67 67  utside RamDebugg
37040 65 72 2e 20 52 65 6c 6f 61 64 20 69 74 20 22 20  er. Reload it " 
37050 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 09  $currentfile]...
37060 61 70 70 65 6e 64 20 71 75 65 73 74 20 5b 5f 20  append quest [_ 
37070 22 61 6e 64 20 6c 6f 6f 73 65 20 74 68 65 20 63  "and loose the c
37080 68 61 6e 67 65 73 20 6d 61 64 65 20 69 6e 73 69  hanges made insi
37090 64 65 20 52 61 6d 44 65 62 75 67 67 65 72 3f 22  de RamDebugger?"
370a0 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ]..    } else {.
370b0 09 09 73 65 74 20 71 75 65 73 74 20 5b 5f 20 22  ..set quest [_ "
370c0 46 69 6c 65 20 27 25 73 27 20 68 61 73 20 62 65  File '%s' has be
370d0 65 6e 20 6d 6f 64 69 66 69 65 64 20 6f 75 74 73  en modified outs
370e0 69 64 65 20 52 61 6d 44 65 62 75 67 67 65 72 2e  ide RamDebugger.
370f0 20 52 65 6c 6f 61 64 20 69 74 3f 22 20 24 63 75   Reload it?" $cu
37100 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20  rrentfile]..    
37110 7d 0a 09 20 20 20 20 73 65 74 20 72 65 74 20 5b  }..    set ret [
37120 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61  DialogWin::messa
37130 67 65 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f  geBox -default o
37140 6b 20 2d 69 63 6f 6e 20 77 61 72 6e 69 6e 67 20  k -icon warning 
37150 2d 6d 65 73 73 61 67 65 20 24 71 75 65 73 74 20  -message $quest 
37160 5c 0a 09 09 20 20 20 20 20 20 20 20 20 2d 70 61  \...         -pa
37170 72 65 6e 74 20 24 74 65 78 74 20 2d 74 69 74 6c  rent $text -titl
37180 65 20 5b 5f 20 22 52 65 6c 6f 61 64 20 66 69 6c  e [_ "Reload fil
37190 65 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63  e"] -type okcanc
371a0 65 6c 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 72  el]..    if { $r
371b0 65 74 20 3d 3d 20 22 6f 6b 22 20 7d 20 7b 0a 09  et == "ok" } {..
371c0 09 4f 70 65 6e 46 69 6c 65 46 20 2d 66 6f 72 63  .OpenFileF -forc
371d0 65 20 31 20 24 63 75 72 72 65 6e 74 66 69 6c 65  e 1 $currentfile
371e0 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ..    } else {..
371f0 09 73 65 74 20 71 75 65 73 74 20 5b 5f 20 22 44  .set quest [_ "D
37200 69 73 61 62 6c 65 20 74 68 69 73 20 77 61 72 6e  isable this warn
37210 69 6e 67 20 66 6f 72 20 74 68 69 73 20 73 65 73  ing for this ses
37220 73 69 6f 6e 3f 22 5d 0a 09 09 73 65 74 20 72 65  sion?"]...set re
37230 74 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65  t [DialogWin::me
37240 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 6c  ssageBox -defaul
37250 74 20 6f 6b 20 2d 69 63 6f 6e 20 77 61 72 6e 69  t ok -icon warni
37260 6e 67 20 2d 6d 65 73 73 61 67 65 20 24 71 75 65  ng -message $que
37270 73 74 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d  st \...        -
37280 70 61 72 65 6e 74 20 24 74 65 78 74 20 2d 74 69  parent $text -ti
37290 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69 6e 67 20  tle [_ "Warning 
372a0 72 65 6c 6f 61 64 20 66 69 6c 65 22 5d 20 2d 74  reload file"] -t
372b0 79 70 65 20 6f 6b 63 61 6e 63 65 6c 5d 0a 09 09  ype okcancel]...
372c0 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 22 6f 6b  if { $ret == "ok
372d0 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20  " } {...    set 
372e0 43 68 65 63 6b 45 78 74 65 72 6e 61 6c 46 69 6c  CheckExternalFil
372f0 65 4d 6f 64 69 66 69 63 61 74 69 6f 6e 20 30 0a  eModification 0.
37300 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20  ..}..    }..}.  
37310 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44    }.}..proc RamD
37320 65 62 75 67 67 65 72 3a 3a 5f 44 79 6e 61 6d 69  ebugger::_Dynami
37330 63 48 65 6c 70 49 6e 45 6e 74 72 79 57 69 74 68  cHelpInEntryWith
37340 56 61 72 20 7b 20 65 6e 74 72 79 20 7d 20 7b 0a  Var { entry } {.
37350 20 20 20 20 73 65 74 20 76 61 72 20 5b 24 65 6e      set var [$en
37360 74 72 79 20 63 67 65 74 20 2d 74 65 78 74 76 61  try cget -textva
37370 72 69 61 62 6c 65 5d 0a 20 20 20 20 44 79 6e 61  riable].    Dyna
37380 6d 69 63 48 65 6c 70 3a 3a 72 65 67 69 73 74 65  micHelp::registe
37390 72 20 24 65 6e 74 72 79 20 62 61 6c 6c 6f 6f 6e  r $entry balloon
373a0 20 5b 73 65 74 20 24 76 61 72 5d 0a 7d 0a 0a 70   [set $var].}..p
373b0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
373c0 3a 44 79 6e 61 6d 69 63 48 65 6c 70 49 6e 45 6e  :DynamicHelpInEn
373d0 74 72 79 57 69 74 68 56 61 72 20 7b 20 65 6e 74  tryWithVar { ent
373e0 72 79 20 7d 20 7b 0a 20 20 20 20 73 65 74 20 76  ry } {.    set v
373f0 61 72 20 5b 24 65 6e 74 72 79 20 63 67 65 74 20  ar [$entry cget 
37400 2d 74 65 78 74 76 61 72 69 61 62 6c 65 5d 0a 20  -textvariable]. 
37410 20 20 20 74 72 61 63 65 20 76 61 72 20 24 76 61     trace var $va
37420 72 20 77 20 22 5f 44 79 6e 61 6d 69 63 48 65 6c  r w "_DynamicHel
37430 70 49 6e 45 6e 74 72 79 57 69 74 68 56 61 72 20  pInEntryWithVar 
37440 24 65 6e 74 72 79 20 3b 23 22 0a 7d 0a 0a 70 72  $entry ;#".}..pr
37450 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
37460 46 69 6e 64 50 61 6e 65 64 57 69 6e 64 6f 77 46  FindPanedWindowF
37470 72 6f 6d 50 61 6e 65 20 7b 20 70 61 6e 65 20 7d  romPane { pane }
37480 20 7b 0a 0a 20 20 20 20 77 68 69 6c 65 20 31 20   {..    while 1 
37490 7b 0a 09 73 65 74 20 70 61 6e 65 20 5b 77 69 6e  {..set pane [win
374a0 66 6f 20 70 61 72 65 6e 74 20 24 70 61 6e 65 5d  fo parent $pane]
374b0 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74  ..if { [string t
374c0 6f 6c 6f 77 65 72 20 5b 77 69 6e 66 6f 20 63 6c  olower [winfo cl
374d0 61 73 73 20 24 70 61 6e 65 5d 5d 20 65 71 20 22  ass $pane]] eq "
374e0 70 61 6e 65 64 77 69 6e 64 6f 77 22 20 7d 20 7b  panedwindow" } {
374f0 20 62 72 65 61 6b 20 7d 0a 20 20 20 20 7d 0a 20   break }.    }. 
37500 20 20 20 72 65 74 75 72 6e 20 24 70 61 6e 65 0a     return $pane.
37510 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
37520 67 65 72 3a 3a 43 72 65 61 74 65 50 61 6e 65 64  ger::CreatePaned
37530 45 6e 74 72 69 65 73 20 7b 20 6e 75 6d 20 70 61  Entries { num pa
37540 6e 65 31 20 70 61 6e 65 32 20 73 75 66 66 69 78  ne1 pane2 suffix
37550 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
37560 65 20 45 76 61 6c 45 6e 74 72 69 65 73 0a 0a 20  e EvalEntries.. 
37570 20 20 20 73 65 74 20 70 61 6e 65 77 20 5b 46 69     set panew [Fi
37580 6e 64 50 61 6e 65 64 57 69 6e 64 6f 77 46 72 6f  ndPanedWindowFro
37590 6d 50 61 6e 65 20 24 70 61 6e 65 31 5d 0a 0a 20  mPane $pane1].. 
375a0 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 30     for { set i 0
375b0 20 7d 20 7b 20 24 69 20 3c 20 24 6e 75 6d 20 7d   } { $i < $num }
375c0 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 69   { incr i } {..i
375d0 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74  f { [winfo exist
375e0 73 20 24 70 61 6e 65 31 2e 65 24 69 5d 20 7d 20  s $pane1.e$i] } 
375f0 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 0a 09 73  { continue }...s
37600 65 74 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24  et EvalEntries($
37610 69 2c 6c 65 66 74 65 6e 74 72 79 24 73 75 66 66  i,leftentry$suff
37620 69 78 29 20 5b 65 6e 74 72 79 20 24 70 61 6e 65  ix) [entry $pane
37630 31 2e 65 24 69 20 2d 74 65 78 74 76 61 72 69 61  1.e$i -textvaria
37640 62 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20  ble \...        
37650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37660 20 20 20 20 20 20 20 20 20 20 52 61 6d 44 65 62            RamDeb
37670 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69  ugger::EvalEntri
37680 65 73 28 24 69 2c 6c 65 66 74 24 73 75 66 66 69  es($i,left$suffi
37690 78 29 20 2d 62 64 20 30 20 5c 0a 09 09 20 20 20  x) -bd 0 \...   
376a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
376b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d                 -
376c0 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65  highlightthickne
376d0 73 73 20 31 20 2d 68 69 67 68 6c 69 67 68 74 62  ss 1 -highlightb
376e0 61 63 6b 67 72 6f 75 6e 64 20 67 72 65 79 39 30  ackground grey90
376f0 20 2d 62 67 20 77 68 69 74 65 5d 0a 09 73 65 74   -bg white]..set
37700 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c   EvalEntries($i,
37710 72 69 67 68 74 65 6e 74 72 79 24 73 75 66 66 69  rightentry$suffi
37720 78 29 20 5b 65 6e 74 72 79 20 24 70 61 6e 65 32  x) [entry $pane2
37730 2e 65 24 69 20 2d 74 65 78 74 76 61 72 69 61 62  .e$i -textvariab
37740 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  le \...         
37750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37760 20 20 20 20 20 20 20 20 20 20 52 61 6d 44 65 62            RamDeb
37770 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69  ugger::EvalEntri
37780 65 73 28 24 69 2c 72 69 67 68 74 24 73 75 66 66  es($i,right$suff
37790 69 78 29 20 2d 62 64 20 30 20 5c 0a 09 09 20 20  ix) -bd 0 \...  
377a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
377b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
377c0 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b   -highlightthick
377d0 6e 65 73 73 20 31 20 2d 68 69 67 68 6c 69 67 68  ness 1 -highligh
377e0 74 62 61 63 6b 67 72 6f 75 6e 64 20 67 72 65 79  tbackground grey
377f0 39 30 20 2d 62 67 20 77 68 69 74 65 5d 0a 0a 09  90 -bg white]...
37800 63 61 74 63 68 20 7b 0a 09 20 20 20 20 24 70 61  catch {..    $pa
37810 6e 65 31 2e 65 24 69 20 63 6f 6e 66 20 2d 64 69  ne1.e$i conf -di
37820 73 61 62 6c 65 64 62 61 63 6b 67 72 6f 75 6e 64  sabledbackground
37830 20 77 68 69 74 65 0a 09 20 20 20 20 24 70 61 6e   white..    $pan
37840 65 32 2e 65 24 69 20 63 6f 6e 66 20 2d 64 69 73  e2.e$i conf -dis
37850 61 62 6c 65 64 62 61 63 6b 67 72 6f 75 6e 64 20  abledbackground 
37860 77 68 69 74 65 0a 09 7d 0a 09 67 72 69 64 20 24  white..}..grid $
37870 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c  EvalEntries($i,l
37880 65 66 74 65 6e 74 72 79 24 73 75 66 66 69 78 29  eftentry$suffix)
37890 20 2d 73 74 69 63 6b 79 20 65 77 0a 09 67 72 69   -sticky ew..gri
378a0 64 20 24 45 76 61 6c 45 6e 74 72 69 65 73 28 24  d $EvalEntries($
378b0 69 2c 72 69 67 68 74 65 6e 74 72 79 24 73 75 66  i,rightentry$suf
378c0 66 69 78 29 20 2d 73 74 69 63 6b 79 20 65 77 0a  fix) -sticky ew.
378d0 0a 09 69 66 20 7b 20 24 73 75 66 66 69 78 20 3d  ..if { $suffix =
378e0 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 73 65  = "" } {..    se
378f0 74 20 63 6f 6d 6d 20 7b 0a 09 09 73 65 74 20 77  t comm {...set w
37900 20 24 70 61 6e 65 31 2e 65 5b 65 78 70 72 20 24   $pane1.e[expr $
37910 69 2b 31 5d 0a 09 09 69 66 20 7b 20 21 5b 77 69  i+1]...if { ![wi
37920 6e 66 6f 20 65 78 69 73 74 73 20 24 77 5d 20 7d  nfo exists $w] }
37930 20 7b 0a 09 09 20 20 20 20 52 61 6d 44 65 62 75   {...    RamDebu
37940 67 67 65 72 3a 3a 43 72 65 61 74 65 50 61 6e 65  gger::CreatePane
37950 64 45 6e 74 72 69 65 73 20 5b 65 78 70 72 20 24  dEntries [expr $
37960 69 2b 32 5d 20 24 70 61 6e 65 31 20 24 70 61 6e  i+2] $pane1 $pan
37970 65 32 20 7b 24 73 75 66 66 69 78 7d 0a 09 09 7d  e2 {$suffix}...}
37980 0a 09 09 74 6b 54 61 62 54 6f 57 69 6e 64 6f 77  ...tkTabToWindow
37990 20 24 77 0a 09 20 20 20 20 7d 0a 09 20 20 20 20   $w..    }..    
379a0 73 65 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67  set comm [string
379b0 20 6d 61 70 20 5b 6c 69 73 74 20 5c 24 69 20 24   map [list \$i $
379c0 69 20 5c 24 70 61 6e 65 31 20 24 70 61 6e 65 31  i \$pane1 $pane1
379d0 20 5c 24 70 61 6e 65 32 20 24 70 61 6e 65 32 20   \$pane2 $pane2 
379e0 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
379f0 20 20 20 20 20 20 20 20 20 20 5c 24 73 75 66 66            \$suff
37a00 69 78 20 24 73 75 66 66 69 78 5d 20 24 63 6f 6d  ix $suffix] $com
37a10 6d 5d 0a 0a 09 20 20 20 20 62 69 6e 64 20 24 70  m]...    bind $p
37a20 61 6e 65 31 2e 65 24 69 20 3c 52 65 74 75 72 6e  ane1.e$i <Return
37a30 3e 20 24 63 6f 6d 6d 0a 09 20 20 20 20 62 69 6e  > $comm..    bin
37a40 64 20 24 70 61 6e 65 31 2e 65 24 69 20 3c 46 6f  d $pane1.e$i <Fo
37a50 63 75 73 4f 75 74 3e 20 22 52 61 6d 44 65 62 75  cusOut> "RamDebu
37a60 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45  gger::CheckEvalE
37a70 6e 74 72 69 65 73 24 73 75 66 66 69 78 20 64 6f  ntries$suffix do
37a80 20 24 69 2c 6c 65 66 74 24 73 75 66 66 69 78 22   $i,left$suffix"
37a90 0a 09 20 20 20 20 62 69 6e 64 20 24 70 61 6e 65  ..    bind $pane
37aa0 31 2e 65 24 69 20 3c 42 75 74 74 6f 6e 52 65 6c  1.e$i <ButtonRel
37ab0 65 61 73 65 2d 31 3e 20 7b 0a 09 09 25 57 20 73  ease-1> {...%W s
37ac0 65 6c 65 63 74 69 6f 6e 20 72 61 6e 67 65 20 30  election range 0
37ad0 20 65 6e 64 0a 09 09 25 57 20 69 63 75 72 73 6f   end...%W icurso
37ae0 72 20 65 6e 64 0a 09 20 20 20 20 7d 0a 09 20 20  r end..    }..  
37af0 20 20 62 69 6e 64 20 24 70 61 6e 65 31 2e 65 24    bind $pane1.e$
37b00 69 20 3c 44 6f 77 6e 3e 20 7b 74 6b 54 61 62 54  i <Down> {tkTabT
37b10 6f 57 69 6e 64 6f 77 20 5b 74 6b 5f 66 6f 63 75  oWindow [tk_focu
37b20 73 4e 65 78 74 20 25 57 5d 7d 0a 09 20 20 20 20  sNext %W]}..    
37b30 62 69 6e 64 20 24 70 61 6e 65 31 2e 65 24 69 20  bind $pane1.e$i 
37b40 3c 55 70 3e 20 7b 74 6b 54 61 62 54 6f 57 69 6e  <Up> {tkTabToWin
37b50 64 6f 77 20 5b 74 6b 5f 66 6f 63 75 73 50 72 65  dow [tk_focusPre
37b60 76 20 25 57 5d 7d 0a 0a 09 7d 20 65 6c 73 65 20  v %W]}...} else 
37b70 7b 20 24 45 76 61 6c 45 6e 74 72 69 65 73 28 24  { $EvalEntries($
37b80 69 2c 6c 65 66 74 65 6e 74 72 79 24 73 75 66 66  i,leftentry$suff
37b90 69 78 29 20 63 6f 6e 66 69 67 75 72 65 20 2d 73  ix) configure -s
37ba0 74 61 74 65 20 64 69 73 61 62 6c 65 64 20 7d 0a  tate disabled }.
37bb0 0a 09 62 69 6e 64 20 24 70 61 6e 65 31 2e 65 24  ..bind $pane1.e$
37bc0 69 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 3e 3e  i <<Contextual>>
37bd0 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 65 6e 75   {..    set menu
37be0 20 25 57 2e 6d 65 6e 75 0a 09 20 20 20 20 64 65   %W.menu..    de
37bf0 73 74 72 6f 79 20 24 6d 65 6e 75 0a 09 20 20 20  stroy $menu..   
37c00 20 6d 65 6e 75 20 24 6d 65 6e 75 20 2d 74 65 61   menu $menu -tea
37c10 72 6f 66 66 20 30 0a 09 20 20 20 20 24 6d 65 6e  roff 0..    $men
37c20 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
37c30 61 62 65 6c 20 5b 5f 20 22 45 78 70 72 65 73 73  abel [_ "Express
37c40 69 6f 6e 73 22 5d 2e 2e 2e 20 2d 63 6f 6d 6d 61  ions"]... -comma
37c50 6e 64 20 5c 0a 09 09 5b 6c 69 73 74 20 52 61 6d  nd \...[list Ram
37c60 44 65 62 75 67 67 65 72 3a 3a 44 69 73 70 6c 61  Debugger::Displa
37c70 79 56 61 72 57 69 6e 64 6f 77 20 5b 77 69 6e 66  yVarWindow [winf
37c80 6f 20 74 6f 70 6c 65 76 65 6c 20 25 57 5d 20 5c  o toplevel %W] \
37c90 0a 09 09 20 20 20 20 20 5b 25 57 20 67 65 74 5d  ...     [%W get]
37ca0 5d 0a 09 20 20 20 20 66 6f 63 75 73 20 25 57 0a  ]..    focus %W.
37cb0 09 20 20 20 20 25 57 20 73 65 6c 65 63 74 69 6f  .    %W selectio
37cc0 6e 20 72 61 6e 67 65 20 30 20 65 6e 64 0a 09 20  n range 0 end.. 
37cd0 20 20 20 74 6b 5f 70 6f 70 75 70 20 24 6d 65 6e     tk_popup $men
37ce0 75 20 25 58 20 25 59 0a 09 7d 0a 0a 09 62 69 6e  u %X %Y..}...bin
37cf0 64 20 24 70 61 6e 65 32 2e 65 24 69 20 3c 52 65  d $pane2.e$i <Re
37d00 74 75 72 6e 3e 20 22 52 61 6d 44 65 62 75 67 67  turn> "RamDebugg
37d10 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74  er::CheckEvalEnt
37d20 72 69 65 73 24 73 75 66 66 69 78 20 64 6f 20 24  ries$suffix do $
37d30 69 2c 72 69 67 68 74 24 73 75 66 66 69 78 22 0a  i,right$suffix".
37d40 0a 09 62 69 6e 64 20 24 70 61 6e 65 32 2e 65 24  ..bind $pane2.e$
37d50 69 20 3c 46 6f 63 75 73 4f 75 74 3e 20 22 52 61  i <FocusOut> "Ra
37d60 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b  mDebugger::Check
37d70 45 76 61 6c 45 6e 74 72 69 65 73 24 73 75 66 66  EvalEntries$suff
37d80 69 78 20 64 6f 20 24 69 2c 6c 65 66 74 24 73 75  ix do $i,left$su
37d90 66 66 69 78 22 0a 09 62 69 6e 64 20 24 70 61 6e  ffix"..bind $pan
37da0 65 32 2e 65 24 69 20 3c 42 75 74 74 6f 6e 52 65  e2.e$i <ButtonRe
37db0 6c 65 61 73 65 2d 31 3e 20 7b 0a 09 20 20 20 20  lease-1> {..    
37dc0 25 57 20 73 65 6c 65 63 74 69 6f 6e 20 72 61 6e  %W selection ran
37dd0 67 65 20 30 20 65 6e 64 0a 09 20 20 20 20 25 57  ge 0 end..    %W
37de0 20 69 63 75 72 73 6f 72 20 65 6e 64 0a 09 7d 0a   icursor end..}.
37df0 09 62 69 6e 64 20 24 70 61 6e 65 32 2e 65 24 69  .bind $pane2.e$i
37e00 20 3c 44 6f 77 6e 3e 20 7b 74 6b 54 61 62 54 6f   <Down> {tkTabTo
37e10 57 69 6e 64 6f 77 20 5b 74 6b 5f 66 6f 63 75 73  Window [tk_focus
37e20 4e 65 78 74 20 25 57 5d 7d 0a 09 62 69 6e 64 20  Next %W]}..bind 
37e30 24 70 61 6e 65 32 2e 65 24 69 20 3c 55 70 3e 20  $pane2.e$i <Up> 
37e40 7b 74 6b 54 61 62 54 6f 57 69 6e 64 6f 77 20 5b  {tkTabToWindow [
37e50 74 6b 5f 66 6f 63 75 73 50 72 65 76 20 25 57 5d  tk_focusPrev %W]
37e60 7d 0a 09 0a 09 44 79 6e 61 6d 69 63 48 65 6c 70  }....DynamicHelp
37e70 49 6e 45 6e 74 72 79 57 69 74 68 56 61 72 20 24  InEntryWithVar $
37e80 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72  EvalEntries($i,r
37e90 69 67 68 74 65 6e 74 72 79 24 73 75 66 66 69 78  ightentry$suffix
37ea0 29 0a 20 20 20 20 7d 0a 20 20 20 20 77 68 69 6c  ).    }.    whil
37eb0 65 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74  e { [winfo exist
37ec0 73 20 24 70 61 6e 65 31 2e 65 24 69 5d 20 7d 20  s $pane1.e$i] } 
37ed0 7b 0a 09 64 65 73 74 72 6f 79 20 24 70 61 6e 65  {..destroy $pane
37ee0 31 2e 65 24 69 20 24 70 61 6e 65 32 2e 65 24 69  1.e$i $pane2.e$i
37ef0 0a 09 75 6e 73 65 74 20 45 76 61 6c 45 6e 74 72  ..unset EvalEntr
37f00 69 65 73 28 24 69 2c 6c 65 66 74 65 6e 74 72 79  ies($i,leftentry
37f10 24 73 75 66 66 69 78 29 20 45 76 61 6c 45 6e 74  $suffix) EvalEnt
37f20 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74  ries($i,rightent
37f30 72 79 24 73 75 66 66 69 78 29 0a 09 75 6e 73 65  ry$suffix)..unse
37f40 74 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69  t EvalEntries($i
37f50 2c 6c 65 66 74 24 73 75 66 66 69 78 29 20 45 76  ,left$suffix) Ev
37f60 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67  alEntries($i,rig
37f70 68 74 24 73 75 66 66 69 78 29 0a 09 69 6e 63 72  ht$suffix)..incr
37f80 20 69 0a 20 20 20 20 7d 0a 0a 20 20 20 20 67 72   i.    }..    gr
37f90 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 20 24 70  id columnconf $p
37fa0 61 6e 65 31 20 30 20 2d 77 65 69 67 68 74 20 31  ane1 0 -weight 1
37fb0 0a 20 20 20 20 67 72 69 64 20 63 6f 6c 75 6d 6e  .    grid column
37fc0 63 6f 6e 66 20 24 70 61 6e 65 32 20 30 20 2d 77  conf $pane2 0 -w
37fd0 65 69 67 68 74 20 31 0a 0a 20 20 20 20 23 20 64  eight 1..    # d
37fe0 69 72 74 79 20 74 72 69 63 6b 20 74 6f 20 6d 61  irty trick to ma
37ff0 6b 65 20 74 68 65 20 70 61 6e 65 64 20 77 69 6e  ke the paned win
38000 64 6f 77 20 61 63 74 75 61 6c 69 7a 65 20 73 69  dow actualize si
38010 7a 65 73 0a 20 20 20 20 61 66 74 65 72 20 69 64  zes.    after id
38020 6c 65 20 65 76 65 6e 74 20 67 65 6e 65 72 61 74  le event generat
38030 65 20 24 70 61 6e 65 77 20 3c 43 6f 6e 66 69 67  e $panew <Config
38040 75 72 65 3e 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d  ure>.}..proc Ram
38050 44 65 62 75 67 67 65 72 3a 3a 54 6b 42 61 63 6b  Debugger::TkBack
38060 43 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 7b 7d  Compatibility {}
38070 20 7b 0a 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d   {..    set comm
38080 73 20 5b 6c 69 73 74 20 74 6b 42 75 74 74 6f 6e  s [list tkButton
38090 49 6e 76 6f 6b 65 20 74 6b 54 65 78 74 53 65 6c  Invoke tkTextSel
380a0 65 63 74 54 6f 20 74 6b 45 6e 74 72 79 49 6e 73  ectTo tkEntryIns
380b0 65 72 74 20 74 6b 45 6e 74 72 79 42 61 63 6b 73  ert tkEntryBacks
380c0 70 61 63 65 20 5c 0a 09 09 20 20 20 74 6b 5f 74  pace \...   tk_t
380d0 65 78 74 43 75 74 20 74 6b 5f 74 65 78 74 43 6f  extCut tk_textCo
380e0 70 79 20 74 6b 5f 74 65 78 74 50 61 73 74 65 20  py tk_textPaste 
380f0 74 6b 5f 66 6f 63 75 73 4e 65 78 74 20 74 6b 5f  tk_focusNext tk_
38100 66 6f 63 75 73 50 72 65 76 20 74 6b 54 65 78 74  focusPrev tkText
38110 43 6c 6f 73 65 73 74 47 61 70 20 5c 0a 09 09 20  ClosestGap \... 
38120 20 20 74 6b 54 65 78 74 41 75 74 6f 53 63 61 6e    tkTextAutoScan
38130 20 74 6b 43 61 6e 63 65 6c 52 65 70 65 61 74 5d   tkCancelRepeat]
38140 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20  ..    foreach i 
38150 24 63 6f 6d 6d 73 20 7b 0a 09 61 75 74 6f 5f 6c  $comms {..auto_l
38160 6f 61 64 20 24 69 0a 09 69 66 20 7b 21 5b 6c 6c  oad $i..if {![ll
38170 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d  ength [info comm
38180 61 6e 64 73 20 24 69 5d 5d 7d 20 7b 0a 09 20 20  ands $i]]} {..  
38190 20 20 74 6b 3a 3a 75 6e 73 75 70 70 6f 72 74 65    tk::unsupporte
381a0 64 3a 3a 45 78 70 6f 73 65 50 72 69 76 61 74 65  d::ExposePrivate
381b0 43 6f 6d 6d 61 6e 64 20 24 69 0a 09 20 20 20 20  Command $i..    
381c0 23 72 65 67 73 75 62 20 7b 5e 74 6b 7d 20 24 69  #regsub {^tk} $i
381d0 20 7b 3a 3a 74 6b 3a 3a 7d 20 6e 65 77 0a 09 20   {::tk::} new.. 
381e0 20 20 20 23 69 6e 74 65 72 70 20 61 6c 69 61 73     #interp alias
381f0 20 22 22 20 24 69 20 22 22 20 24 6e 65 77 0a 09   "" $i "" $new..
38200 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20  }.    }.}..proc 
38210 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4d 6f 76  RamDebugger::Mov
38220 65 43 61 6e 76 61 73 20 7b 20 74 65 78 74 20 63  eCanvas { text c
38230 61 6e 76 61 73 20 7d 20 7b 0a 0a 20 20 20 20 24  anvas } {..    $
38240 63 61 6e 76 61 73 20 79 76 69 65 77 20 6d 6f 76  canvas yview mov
38250 65 74 6f 20 5b 6c 69 6e 64 65 78 20 5b 24 74 65  eto [lindex [$te
38260 78 74 20 79 76 69 65 77 5d 20 30 5d 0a 0a 20 20  xt yview] 0]..  
38270 20 20 23 20 66 69 6e 65 20 61 64 6a 75 73 74 6d    # fine adjustm
38280 65 6e 74 0a 20 20 20 20 23 20 61 73 20 74 68 65  ent.    # as the
38290 20 74 65 78 74 20 77 69 64 67 65 74 20 61 64 64   text widget add
382a0 73 20 61 72 62 69 74 72 61 72 69 6c 79 20 6d 6f  s arbitrarily mo
382b0 72 65 20 73 70 61 63 65 20 61 74 20 74 68 65 20  re space at the 
382c0 65 6e 64 20 6f 66 20 74 68 65 20 74 65 78 74 2c  end of the text,
382d0 0a 20 20 20 20 23 20 69 74 20 69 73 20 6e 65 63  .    # it is nec
382e0 65 73 73 61 72 79 20 74 6f 20 66 69 6e 65 20 74  essary to fine t
382f0 75 6e 65 20 62 79 20 68 61 6e 64 0a 0a 20 20 20  une by hand..   
38300 20 73 65 74 20 79 62 31 20 5b 24 63 61 6e 76 61   set yb1 [$canva
38310 73 20 63 61 6e 76 61 73 79 20 30 5d 0a 20 20 20  s canvasy 0].   
38320 20 73 65 74 20 79 62 32 20 5b 24 63 61 6e 76 61   set yb2 [$canva
38330 73 20 63 61 6e 76 61 73 79 20 5b 77 69 6e 66 6f  s canvasy [winfo
38340 20 68 65 69 67 68 74 20 24 74 65 78 74 5d 5d 0a   height $text]].
38350 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 24      foreach i [$
38360 63 61 6e 76 61 73 20 66 69 6e 64 20 6f 76 65 72  canvas find over
38370 6c 61 70 70 69 6e 67 20 30 20 24 79 62 31 20 32  lapping 0 $yb1 2
38380 30 20 24 79 62 32 5d 20 7b 0a 09 72 65 67 65 78  0 $yb2] {..regex
38390 70 20 7b 6c 28 5b 30 2d 39 5d 2b 29 7d 20 5b 24  p {l([0-9]+)} [$
383a0 63 61 6e 76 61 73 20 67 65 74 74 61 67 73 20 24  canvas gettags $
383b0 69 5d 20 7b 7d 20 6c 69 6e 65 0a 09 73 65 74 20  i] {} line..set 
383c0 79 6c 69 6e 65 20 22 22 0a 09 66 6f 72 65 61 63  yline ""..foreac
383d0 68 20 22 2d 20 79 6c 69 6e 65 20 2d 20 2d 22 20  h "- yline - -" 
383e0 5b 24 74 65 78 74 20 62 62 6f 78 20 24 6c 69 6e  [$text bbox $lin
383f0 65 2e 30 5d 20 62 72 65 61 6b 0a 09 69 66 20 7b  e.0] break..if {
38400 20 24 79 6c 69 6e 65 20 3d 3d 20 22 22 20 7d 20   $yline == "" } 
38410 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 73 65  { continue }..se
38420 74 20 79 6c 69 6e 65 20 5b 24 63 61 6e 76 61 73  t yline [$canvas
38430 20 63 61 6e 76 61 73 79 20 24 79 6c 69 6e 65 5d   canvasy $yline]
38440 0a 09 73 65 74 20 69 64 20 5b 6c 69 6e 64 65 78  ..set id [lindex
38450 20 5b 24 63 61 6e 76 61 73 20 66 69 6e 64 20 77   [$canvas find w
38460 69 74 68 74 61 67 20 6c 24 6c 69 6e 65 5d 20 30  ithtag l$line] 0
38470 5d 0a 09 66 6f 72 65 61 63 68 20 22 2d 20 79 63  ]..foreach "- yc
38480 61 6e 76 61 73 20 2d 20 2d 22 20 5b 24 63 61 6e  anvas - -" [$can
38490 76 61 73 20 62 62 6f 78 20 24 69 64 5d 20 62 72  vas bbox $id] br
384a0 65 61 6b 0a 09 69 6e 63 72 20 79 63 61 6e 76 61  eak..incr ycanva
384b0 73 20 2d 33 0a 09 66 6f 72 65 61 63 68 20 22 63  s -3..foreach "c
384c0 79 31 20 63 79 32 22 20 5b 24 63 61 6e 76 61 73  y1 cy2" [$canvas
384d0 20 79 76 69 65 77 5d 20 62 72 65 61 6b 0a 09 73   yview] break..s
384e0 65 74 20 31 70 20 5b 65 78 70 72 20 28 24 63 79  et 1p [expr ($cy
384f0 32 2d 24 63 79 31 29 2f 64 6f 75 62 6c 65 28 5b  2-$cy1)/double([
38500 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 74 65  winfo height $te
38510 78 74 5d 29 5d 0a 09 24 63 61 6e 76 61 73 20 79  xt])]..$canvas y
38520 76 69 65 77 20 6d 6f 76 65 74 6f 20 5b 65 78 70  view moveto [exp
38530 72 20 24 63 79 31 2b 28 24 79 63 61 6e 76 61 73  r $cy1+($ycanvas
38540 2d 24 79 6c 69 6e 65 29 2a 24 31 70 5d 0a 09 72  -$yline)*$1p]..r
38550 65 74 75 72 6e 0a 20 20 20 20 7d 0a 7d 0a 0a 70  eturn.    }.}..p
38560 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
38570 3a 53 63 72 6f 6c 6c 54 65 78 74 41 6e 64 43 61  :ScrollTextAndCa
38580 6e 76 61 73 20 7b 20 74 65 78 74 20 63 61 6e 76  nvas { text canv
38590 61 73 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20  as args } {.    
385a0 65 76 61 6c 20 24 74 65 78 74 20 79 76 69 65 77  eval $text yview
385b0 20 24 61 72 67 73 0a 20 20 20 20 4d 6f 76 65 43   $args.    MoveC
385c0 61 6e 76 61 73 20 24 74 65 78 74 20 24 63 61 6e  anvas $text $can
385d0 76 61 73 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44  vas.}..proc RamD
385e0 65 62 75 67 67 65 72 3a 3a 53 63 72 6f 6c 6c 53  ebugger::ScrollS
385f0 63 72 6f 6c 6c 41 6e 64 43 61 6e 76 61 73 20 7b  crollAndCanvas {
38600 20 74 65 78 74 20 79 73 63 72 6f 6c 6c 20 63 61   text yscroll ca
38610 6e 76 61 73 20 61 72 67 73 20 7d 20 7b 0a 20 20  nvas args } {.  
38620 20 20 65 76 61 6c 20 24 79 73 63 72 6f 6c 6c 20    eval $yscroll 
38630 73 65 74 20 24 61 72 67 73 0a 20 20 20 20 24 63  set $args.    $c
38640 61 6e 76 61 73 20 79 76 69 65 77 20 6d 6f 76 65  anvas yview move
38650 74 6f 20 5b 6c 69 6e 64 65 78 20 5b 24 74 65 78  to [lindex [$tex
38660 74 20 79 76 69 65 77 5d 20 30 5d 0a 20 20 20 20  t yview] 0].    
38670 4d 6f 76 65 43 61 6e 76 61 73 20 24 74 65 78 74  MoveCanvas $text
38680 20 24 63 61 6e 76 61 73 0a 7d 0a 0a 70 72 6f 63   $canvas.}..proc
38690 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e   RamDebugger::In
386a0 69 74 4f 70 74 69 6f 6e 73 20 7b 7d 20 7b 0a 0a  itOptions {} {..
386b0 20 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f      #      optio
386c0 6e 20 61 64 64 20 2a 62 61 63 6b 67 72 6f 75 6e  n add *backgroun
386d0 64 20 41 6e 74 69 71 75 65 57 68 69 74 65 33 0a  d AntiqueWhite3.
386e0 20 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f      #      optio
386f0 6e 20 61 64 64 20 2a 42 75 74 74 6f 6e 2a 62 61  n add *Button*ba
38700 63 6b 67 72 6f 75 6e 64 20 62 69 73 71 75 65 33  ckground bisque3
38710 0a 20 20 20 20 23 20 20 20 20 20 20 6f 70 74 69  .    #      opti
38720 6f 6e 20 61 64 64 20 2a 4d 65 6e 75 2a 62 61 63  on add *Menu*bac
38730 6b 67 72 6f 75 6e 64 20 62 69 73 71 75 65 33 0a  kground bisque3.
38740 20 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f      #      optio
38750 6e 20 61 64 64 20 2a 42 75 74 74 6f 6e 2a 66 6f  n add *Button*fo
38760 72 65 67 72 6f 75 6e 64 20 62 6c 61 63 6b 0a 20  reground black. 
38770 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f 6e     #      option
38780 20 61 64 64 20 2a 45 6e 74 72 79 2a 62 61 63 6b   add *Entry*back
38790 67 72 6f 75 6e 64 20 74 68 69 73 74 6c 65 0a 20  ground thistle. 
387a0 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f 6e     #      option
387b0 20 61 64 64 20 2a 44 69 73 61 62 6c 65 64 46 6f   add *DisabledFo
387c0 72 65 67 72 6f 75 6e 64 20 67 72 65 79 36 30 0a  reground grey60.
387d0 20 20 20 20 23 20 20 20 20 20 20 6f 70 74 69 6f      #      optio
387e0 6e 20 61 64 64 20 2a 48 69 67 68 6c 69 67 68 74  n add *Highlight
387f0 42 61 63 6b 67 72 6f 75 6e 64 20 41 6e 74 69 71  Background Antiq
38800 75 65 57 68 69 74 65 33 0a 20 20 20 20 0a 0a 20  ueWhite3.    .. 
38810 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70     if { $::tcl_p
38820 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d  latform(platform
38830 29 20 21 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d  ) != "windows" }
38840 20 7b 0a 09 6f 70 74 69 6f 6e 20 61 64 64 20 2a   {..option add *
38850 73 65 6c 65 63 74 42 61 63 6b 67 72 6f 75 6e 64  selectBackground
38860 20 5c 23 34 38 63 39 36 66 0a 09 6f 70 74 69 6f   \#48c96f..optio
38870 6e 20 61 64 64 20 2a 73 65 6c 65 63 74 46 6f 72  n add *selectFor
38880 65 67 72 6f 75 6e 64 20 77 68 69 74 65 0a 20 20  eground white.  
38890 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6f 70 74 69    } else {..opti
388a0 6f 6e 20 61 64 64 20 2a 73 65 6c 65 63 74 42 61  on add *selectBa
388b0 63 6b 67 72 6f 75 6e 64 20 5c 23 34 38 63 39 36  ckground \#48c96
388c0 66 0a 09 6f 70 74 69 6f 6e 20 61 64 64 20 2a 73  f..option add *s
388d0 65 6c 65 63 74 46 6f 72 65 67 72 6f 75 6e 64 20  electForeground 
388e0 77 68 69 74 65 0a 20 20 20 20 7d 0a 20 20 20 20  white.    }.    
388f0 6f 70 74 69 6f 6e 20 61 64 64 20 2a 4d 65 6e 75  option add *Menu
38900 2a 54 65 61 72 4f 66 66 20 30 0a 0a 7d 0a 0a 70  *TearOff 0..}..p
38910 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a  roc RamDebugger:
38920 3a 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 69 6e  :ApplyDropBindin
38930 67 20 7b 20 77 20 63 6f 6d 6d 61 6e 64 20 7d 20  g { w command } 
38940 7b 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f  {.    if { [info
38950 20 63 6f 6d 6d 61 6e 64 73 20 64 6e 64 5d 20 65   commands dnd] e
38960 71 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20  q "" } { return 
38970 7d 0a 20 20 20 20 64 6e 64 20 62 69 6e 64 74 61  }.    dnd bindta
38980 72 67 65 74 20 24 77 20 74 65 78 74 2f 75 72 69  rget $w text/uri
38990 2d 6c 69 73 74 20 3c 44 72 6f 70 3e 20 24 63 6f  -list <Drop> $co
389a0 6d 6d 61 6e 64 0a 20 20 20 20 66 6f 72 65 61 63  mmand.    foreac
389b0 68 20 69 20 5b 77 69 6e 66 6f 20 63 68 69 6c 64  h i [winfo child
389c0 72 65 6e 20 24 77 5d 20 7b 0a 09 41 70 70 6c 79  ren $w] {..Apply
389d0 44 72 6f 70 42 69 6e 64 69 6e 67 20 24 69 20 24  DropBinding $i $
389e0 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 7d 0a 0a 0a  command.    }...
389f0 20 20 20 20 23 20 20 20 20 20 69 66 20 7b 20 24      #     if { $
38a00 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70  ::tcl_platform(p
38a10 6c 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e  latform) == "win
38a20 64 6f 77 73 22 7d 20 7b 0a 20 20 20 20 23 20 20  dows"} {.    #  
38a30 20 20 20 20 20 20 20 64 6e 64 20 62 69 6e 64 74         dnd bindt
38a40 61 72 67 65 74 20 24 77 20 46 69 6c 65 73 20 3c  arget $w Files <
38a50 44 72 6f 70 3e 20 24 63 6f 6d 6d 61 6e 64 0a 20  Drop> $command. 
38a60 20 20 20 23 20 20 20 20 20 7d 20 65 6c 73 65 20     #     } else 
38a70 7b 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  {.    #         
38a80 64 6e 64 20 62 69 6e 64 74 61 72 67 65 74 20 24  dnd bindtarget $
38a90 77 20 74 65 78 74 2f 75 72 69 2d 6c 69 73 74 20  w text/uri-list 
38aa0 3c 44 72 6f 70 3e 20 24 63 6f 6d 6d 61 6e 64 0a  <Drop> $command.
38ab0 20 20 20 20 23 20 20 20 20 20 20 20 20 20 66 6f      #         fo
38ac0 72 65 61 63 68 20 69 20 5b 77 69 6e 66 6f 20 63  reach i [winfo c
38ad0 68 69 6c 64 72 65 6e 20 24 77 5d 20 7b 0a 20 20  hildren $w] {.  
38ae0 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
38af0 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 69 6e 67  ApplyDropBinding
38b00 20 24 69 20 24 63 6f 6d 6d 61 6e 64 0a 20 20 20   $i $command.   
38b10 20 23 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20   #         }.   
38b20 20 23 20 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63   #     }.}..proc
38b30 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 72   RamDebugger::Dr
38b40 6f 70 42 69 6e 64 69 6e 67 44 6f 6e 65 20 7b 20  opBindingDone { 
38b50 66 69 6c 65 73 20 7d 20 7b 0a 0a 20 20 20 20 66  files } {..    f
38b60 6f 72 65 61 63 68 20 66 69 6c 65 20 24 66 69 6c  oreach file $fil
38b70 65 73 20 7b 0a 09 69 66 20 7b 20 5b 72 65 67 73  es {..if { [regs
38b80 75 62 20 7b 5e 66 69 6c 65 3a 2f 2f 7d 20 24 66  ub {^file://} $f
38b90 69 6c 65 20 7b 7d 20 66 69 6c 65 5d 20 7d 20 7b  ile {} file] } {
38ba0 0a 09 20 20 20 20 70 61 63 6b 61 67 65 20 72 65  ..    package re
38bb0 71 75 69 72 65 20 6e 63 67 69 0a 09 20 20 20 20  quire ncgi..    
38bc0 73 65 74 20 66 69 6c 65 20 5b 65 6e 63 6f 64 69  set file [encodi
38bd0 6e 67 20 63 6f 6e 76 65 72 74 66 72 6f 6d 20 75  ng convertfrom u
38be0 74 66 2d 38 20 5b 6e 63 67 69 3a 3a 64 65 63 6f  tf-8 [ncgi::deco
38bf0 64 65 20 24 66 69 6c 65 5d 5d 0a 09 7d 0a 09 4f  de $file]]..}..O
38c00 70 65 6e 46 69 6c 65 46 20 24 66 69 6c 65 0a 20  penFileF $file. 
38c10 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
38c20 44 65 62 75 67 67 65 72 3a 3a 41 64 64 43 75 73  Debugger::AddCus
38c30 74 6f 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 20  tomFileTypeMenu 
38c40 7b 20 6e 61 6d 65 20 6d 65 6e 75 20 7d 20 7b 0a  { name menu } {.
38c50 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 73      variable des
38c60 63 6d 65 6e 75 0a 20 20 20 20 76 61 72 69 61 62  cmenu.    variab
38c70 6c 65 20 43 75 73 74 6f 6d 46 69 6c 65 54 79 70  le CustomFileTyp
38c80 65 4d 65 6e 75 53 74 61 63 6b 0a 0a 20 20 20 20  eMenuStack..    
38c90 6c 61 70 70 65 6e 64 20 43 75 73 74 6f 6d 46 69  lappend CustomFi
38ca0 6c 65 54 79 70 65 4d 65 6e 75 53 74 61 63 6b 20  leTypeMenuStack 
38cb0 5b 6c 69 73 74 20 24 6e 61 6d 65 20 24 6d 65 6e  [list $name $men
38cc0 75 5d 0a 20 20 20 20 73 65 74 20 64 65 73 63 6d  u].    set descm
38cd0 65 6e 75 5f 6e 65 77 20 5b 6c 69 6e 73 65 72 74  enu_new [linsert
38ce0 20 24 64 65 73 63 6d 65 6e 75 20 33 30 20 24 6e   $descmenu 30 $n
38cf0 61 6d 65 20 61 6c 6c 20 66 69 6c 65 74 79 70 65  ame all filetype
38d00 6d 65 6e 75 20 30 20 24 6d 65 6e 75 5d 0a 20 20  menu 0 $menu].  
38d10 20 20 41 64 64 46 69 6c 65 54 79 70 65 4d 65 6e    AddFileTypeMen
38d20 75 5f 64 6f 20 24 64 65 73 63 6d 65 6e 75 5f 6e  u_do $descmenu_n
38d30 65 77 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65  ew.}..proc RamDe
38d40 62 75 67 67 65 72 3a 3a 52 65 6d 6f 76 65 43 75  bugger::RemoveCu
38d50 73 74 6f 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75  stomFileTypeMenu
38d60 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62   {} {.    variab
38d70 6c 65 20 64 65 73 63 6d 65 6e 75 0a 20 20 20 20  le descmenu.    
38d80 76 61 72 69 61 62 6c 65 20 43 75 73 74 6f 6d 46  variable CustomF
38d90 69 6c 65 54 79 70 65 4d 65 6e 75 53 74 61 63 6b  ileTypeMenuStack
38da0 0a 0a 20 20 20 20 73 65 74 20 43 75 73 74 6f 6d  ..    set Custom
38db0 46 69 6c 65 54 79 70 65 4d 65 6e 75 53 74 61 63  FileTypeMenuStac
38dc0 6b 20 5b 6c 72 61 6e 67 65 20 24 43 75 73 74 6f  k [lrange $Custo
38dd0 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 53 74 61  mFileTypeMenuSta
38de0 63 6b 20 30 20 65 6e 64 2d 31 5d 0a 20 20 20 20  ck 0 end-1].    
38df0 0a 20 20 20 20 73 65 74 20 6e 61 6d 65 20 22 22  .    set name ""
38e00 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 6e 61  .    foreach "na
38e10 6d 65 20 6d 65 6e 75 22 20 5b 6c 69 6e 64 65 78  me menu" [lindex
38e20 20 24 43 75 73 74 6f 6d 46 69 6c 65 54 79 70 65   $CustomFileType
38e30 4d 65 6e 75 53 74 61 63 6b 20 65 6e 64 5d 20 62  MenuStack end] b
38e40 72 65 61 6b 0a 20 20 20 20 69 66 20 7b 20 24 6e  reak.    if { $n
38e50 61 6d 65 20 6e 65 20 22 22 20 7d 20 7b 0a 09 73  ame ne "" } {..s
38e60 65 74 20 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20  et descmenu_new 
38e70 5b 6c 69 6e 73 65 72 74 20 24 64 65 73 63 6d 65  [linsert $descme
38e80 6e 75 20 33 30 20 24 6e 61 6d 65 20 61 6c 6c 20  nu 30 $name all 
38e90 66 69 6c 65 74 79 70 65 6d 65 6e 75 20 30 20 24  filetypemenu 0 $
38ea0 6d 65 6e 75 5d 0a 20 20 20 20 7d 20 65 6c 73 65  menu].    } else
38eb0 20 7b 0a 09 73 65 74 20 64 65 73 63 6d 65 6e 75   {..set descmenu
38ec0 5f 6e 65 77 20 24 64 65 73 63 6d 65 6e 75 0a 20  _new $descmenu. 
38ed0 20 20 20 7d 0a 20 20 20 20 41 64 64 46 69 6c 65     }.    AddFile
38ee0 54 79 70 65 4d 65 6e 75 5f 64 6f 20 24 64 65 73  TypeMenu_do $des
38ef0 63 6d 65 6e 75 5f 6e 65 77 20 0a 7d 0a 0a 70 72  cmenu_new .}..pr
38f00 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
38f10 41 64 64 46 69 6c 65 54 79 70 65 4d 65 6e 75 20  AddFileTypeMenu 
38f20 7b 20 66 69 6c 65 74 79 70 65 20 7d 20 7b 0a 20  { filetype } {. 
38f30 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 69 6e     variable main
38f40 66 72 61 6d 65 0a 20 20 20 20 76 61 72 69 61 62  frame.    variab
38f50 6c 65 20 64 65 73 63 6d 65 6e 75 0a 20 20 20 20  le descmenu.    
38f60 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20  variable text.  
38f70 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65    variable curre
38f80 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61  ntfile.    varia
38f90 62 6c 65 20 43 75 73 74 6f 6d 46 69 6c 65 54 79  ble CustomFileTy
38fa0 70 65 4d 65 6e 75 53 74 61 63 6b 0a 20 20 20 20  peMenuStack.    
38fb0 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b 24  .    set menu [$
38fc0 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e  mainframe getmen
38fd0 75 20 66 69 6c 65 74 79 70 65 6d 65 6e 75 5d 0a  u filetypemenu].
38fe0 20 20 20 20 0a 20 20 20 20 73 65 74 20 63 68 61      .    set cha
38ff0 6e 67 65 73 20 30 0a 20 20 20 20 73 77 69 74 63  nges 0.    switc
39000 68 20 24 66 69 6c 65 74 79 70 65 20 7b 0a 09 22  h $filetype {.."
39010 47 69 44 20 42 41 53 20 66 69 6c 65 22 20 2d 20  GiD BAS file" - 
39020 22 47 69 44 20 64 61 74 61 20 66 69 6c 65 73 22  "GiD data files"
39030 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 65 6e 75   {..    set menu
39040 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 20   [list \...     
39050 20 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61       [list comma
39060 6e 64 20 26 5b 5f 20 22 53 65 6c 65 63 74 20 6c  nd &[_ "Select l
39070 6f 6f 70 22 5d 20 7b 7d 20 5b 5f 20 22 53 65 61  oop"] {} [_ "Sea
39080 72 63 68 20 61 6e 64 20 73 65 6c 65 63 74 20 74  rch and select t
39090 68 65 20 6c 6f 6f 70 20 74 68 61 74 20 62 65 67  he loop that beg
390a0 69 6e 73 20 6f 72 20 65 6e 64 73 20 68 65 72 65  ins or ends here
390b0 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20  "] \...         
390c0 20 20 20 20 20 20 22 43 74 72 6c 20 53 70 61 63        "Ctrl Spac
390d0 65 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d  e" -command "Ram
390e0 44 65 62 75 67 67 65 72 3a 3a 53 65 6c 65 63 74  Debugger::Select
390f0 42 61 73 4c 6f 6f 70 22 5d 20 5c 0a 09 09 20 20  BasLoop"] \...  
39100 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 73 65          [list se
39110 70 61 72 61 74 6f 72 5d 20 5c 0a 09 09 20 20 20  parator] \...   
39120 20 20 20 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d         [list com
39130 6d 61 6e 64 20 26 5b 5f 20 22 55 70 64 61 74 65  mand &[_ "Update
39140 20 6e 75 6d 62 65 72 73 22 5d 20 7b 7d 20 5c 0a   numbers"] {} \.
39150 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
39160 20 5b 5f 20 22 43 68 61 6e 67 65 20 43 6f 6e 64   [_ "Change Cond
39170 69 74 69 6f 6e 73 20 6f 72 20 4d 61 74 65 72 69  itions or Materi
39180 61 6c 73 20 6e 75 6d 62 65 72 73 20 61 6e 64 20  als numbers and 
39190 6f 72 64 65 72 73 20 74 68 65 6d 22 5d 20 5c 0a  orders them"] \.
391a0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
391b0 20 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61   "" -command "Ra
391c0 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74  mDebugger::Updat
391d0 65 4e 75 6d 62 65 72 73 49 6e 47 69 44 46 69 6c  eNumbersInGiDFil
391e0 65 73 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20  es"] \...       
391f0 20 20 20 5b 6c 69 73 74 20 73 65 70 61 72 61 74     [list separat
39200 6f 72 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20  or] \...        
39210 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20    [list command 
39220 26 5b 5f 20 22 43 6f 6e 64 69 74 69 6f 6e 73 2f  &[_ "Conditions/
39230 4d 61 74 65 72 69 61 6c 73 20 77 69 7a 61 72 64  Materials wizard
39240 22 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 20  "] {} \...      
39250 20 20 20 20 20 20 20 20 20 5b 5f 20 22 4d 61 6b           [_ "Mak
39260 65 73 20 69 74 20 65 61 73 79 20 74 6f 20 63 72  es it easy to cr
39270 65 61 74 65 20 6f 6e 65 20 6e 65 77 20 63 6f 6e  eate one new con
39280 64 69 74 69 6f 6e 22 5d 20 5c 0a 09 09 20 20 20  dition"] \...   
39290 20 20 20 20 20 20 20 20 20 20 20 20 22 22 20 2d              "" -
392a0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61  command [list Ra
392b0 6d 44 65 62 75 67 67 65 72 3a 3a 57 69 7a 61 72  mDebugger::Wizar
392c0 64 3a 3a 43 6f 6e 64 4d 61 74 57 69 7a 61 72 64  d::CondMatWizard
392d0 20 24 74 65 78 74 20 24 63 75 72 72 65 6e 74 66   $text $currentf
392e0 69 6c 65 5d 5d 5d 0a 09 20 20 20 20 73 65 74 20  ile]]]..    set 
392f0 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20 5b 6c 69  descmenu_new [li
39300 6e 73 65 72 74 20 24 64 65 73 63 6d 65 6e 75 20  nsert $descmenu 
39310 33 30 20 22 26 47 69 44 22 20 61 6c 6c 20 66 69  30 "&GiD" all fi
39320 6c 65 74 79 70 65 6d 65 6e 75 20 30 20 24 6d 65  letypemenu 0 $me
39330 6e 75 5d 0a 09 20 20 20 20 73 65 74 20 63 68 61  nu]..    set cha
39340 6e 67 65 73 20 31 0a 09 7d 0a 09 58 4d 4c 20 7b  nges 1..}..XML {
39350 0a 09 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b  ..    set menu [
39360 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 5b 6c 69  list \...    [li
39370 73 74 20 63 6f 6d 6d 61 6e 64 20 22 26 49 6e 64  st command "&Ind
39380 65 6e 74 22 20 7b 7d 20 22 49 6e 64 65 6e 74 20  ent" {} "Indent 
39390 61 6c 6c 20 74 68 65 20 66 69 6c 65 22 20 5c 0a  all the file" \.
393a0 09 09 20 20 20 20 20 20 20 20 22 22 20 2d 63 6f  ..        "" -co
393b0 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67  mmand "RamDebugg
393c0 65 72 3a 3a 58 4d 4c 49 6e 64 65 6e 74 22 5d 20  er::XMLIndent"] 
393d0 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f  \...    [list co
393e0 6d 6d 61 6e 64 20 22 49 6e 64 65 6e 74 20 32 22  mmand "Indent 2"
393f0 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 20 20 20   {} \...        
39400 22 49 6e 64 65 6e 74 20 61 6c 6c 20 74 68 65 20  "Indent all the 
39410 66 69 6c 65 20 32 20 73 70 61 63 65 73 22 20 5c  file 2 spaces" \
39420 0a 09 09 20 20 20 20 20 20 20 20 22 46 38 22 20  ...        "F8" 
39430 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62  -command "RamDeb
39440 75 67 67 65 72 3a 3a 58 4d 4c 49 6e 64 65 6e 74  ugger::XMLIndent
39450 20 32 22 5d 20 5c 0a 09 09 20 20 20 20 5b 6c 69   2"] \...    [li
39460 73 74 20 63 6f 6d 6d 61 6e 64 20 22 49 6e 64 65  st command "Inde
39470 6e 74 20 26 6e 6f 6e 65 22 20 7b 7d 20 5c 0a 09  nt &none" {} \..
39480 09 20 20 20 20 20 20 20 20 22 54 61 6b 65 20 61  .        "Take a
39490 6c 6c 20 74 68 65 20 69 6e 64 65 6e 74 61 74 69  ll the indentati
394a0 6f 6e 20 6f 75 74 20 6f 66 20 74 68 65 20 66 69  on out of the fi
394b0 6c 65 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20  le" \...        
394c0 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d  "" -command "Ram
394d0 44 65 62 75 67 67 65 72 3a 3a 58 4d 4c 49 6e 64  Debugger::XMLInd
394e0 65 6e 74 20 6e 6f 6e 65 22 5d 20 5c 0a 09 09 20  ent none"] \... 
394f0 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64     [list command
39500 20 22 49 6e 64 65 6e 74 20 68 74 6d 6c 22 20 7b   "Indent html" {
39510 7d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 22 49  } \...        "I
39520 6e 64 65 6e 74 20 74 68 65 20 66 69 6c 65 20 61  ndent the file a
39530 73 20 48 54 4d 4c 22 20 5c 0a 09 09 20 20 20 20  s HTML" \...    
39540 20 20 20 20 20 22 22 20 2d 63 6f 6d 6d 61 6e 64       "" -command
39550 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 58   "RamDebugger::X
39560 4d 4c 49 6e 64 65 6e 74 20 7b 7d 20 31 22 5d 5d  MLIndent {} 1"]]
39570 0a 09 20 20 20 20 73 65 74 20 64 65 73 63 6d 65  ..    set descme
39580 6e 75 5f 6e 65 77 20 5b 6c 69 6e 73 65 72 74 20  nu_new [linsert 
39590 24 64 65 73 63 6d 65 6e 75 20 33 30 20 22 26 58  $descmenu 30 "&X
395a0 4d 4c 22 20 61 6c 6c 20 66 69 6c 65 74 79 70 65  ML" all filetype
395b0 6d 65 6e 75 20 30 20 24 6d 65 6e 75 5d 0a 09 20  menu 0 $menu].. 
395c0 20 20 20 73 65 74 20 63 68 61 6e 67 65 73 20 31     set changes 1
395d0 0a 09 7d 0a 09 64 65 66 61 75 6c 74 20 7b 20 73  ..}..default { s
395e0 65 74 20 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20  et descmenu_new 
395f0 24 64 65 73 63 6d 65 6e 75 20 7d 0a 20 20 20 20  $descmenu }.    
39600 7d 0a 20 20 20 20 69 66 20 7b 20 5b 24 6d 61 69  }.    if { [$mai
39610 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 66  nframe getmenu f
39620 69 6c 65 74 79 70 65 6d 65 6e 75 5d 20 21 3d 20  iletypemenu] != 
39630 22 22 20 7d 20 7b 20 73 65 74 20 63 68 61 6e 67  "" } { set chang
39640 65 73 20 31 20 7d 0a 0a 20 20 20 20 69 66 20 7b  es 1 }..    if {
39650 20 24 63 68 61 6e 67 65 73 20 7d 20 7b 0a 09 41   $changes } {..A
39660 64 64 46 69 6c 65 54 79 70 65 4d 65 6e 75 5f 64  ddFileTypeMenu_d
39670 6f 20 24 64 65 73 63 6d 65 6e 75 5f 6e 65 77 0a  o $descmenu_new.
39680 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61      }.}..proc Ra
39690 6d 44 65 62 75 67 67 65 72 3a 3a 41 64 64 46 69  mDebugger::AddFi
396a0 6c 65 54 79 70 65 4d 65 6e 75 5f 64 6f 20 7b 20  leTypeMenu_do { 
396b0 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20 7d 20 7b  descmenu_new } {
396c0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61  .    variable ma
396d0 69 6e 66 72 61 6d 65 0a 20 20 20 20 0a 20 20 20  inframe.    .   
396e0 20 4d 61 69 6e 46 72 61 6d 65 3a 3a 5f 63 72 65   MainFrame::_cre
396f0 61 74 65 5f 6d 65 6e 75 62 61 72 20 24 6d 61 69  ate_menubar $mai
39700 6e 66 72 61 6d 65 20 24 64 65 73 63 6d 65 6e 75  nframe $descmenu
39710 5f 6e 65 77 0a 20 20 20 20 0a 20 20 20 20 73 65  _new.    .    se
39720 74 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61  t menu [$mainfra
39730 6d 65 20 67 65 74 6d 65 6e 75 20 61 63 74 69 76  me getmenu activ
39740 65 70 72 6f 67 72 61 6d 73 5d 0a 20 20 20 20 24  eprograms].    $
39750 6d 65 6e 75 20 63 6f 6e 66 69 67 75 72 65 20 2d  menu configure -
39760 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73  postcommand [lis
39770 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 41  t RamDebugger::A
39780 63 74 75 61 6c 69 7a 65 41 63 74 69 76 65 50 72  ctualizeActivePr
39790 6f 67 72 61 6d 73 49 66 56 6f 69 64 20 5c 0a 09  ogramsIfVoid \..
397a0 20 20 20 20 24 6d 65 6e 75 5d 0a 20 20 20 20 0a      $menu].    .
397b0 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d      set menu [$m
397c0 61 69 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75  ainframe getmenu
397d0 20 6d 61 63 72 6f 73 5d 0a 20 20 20 20 41 64 64   macros].    Add
397e0 41 63 74 69 76 65 4d 61 63 72 6f 73 54 6f 4d 65  ActiveMacrosToMe
397f0 6e 75 20 24 6d 61 69 6e 66 72 61 6d 65 20 24 6d  nu $mainframe $m
39800 65 6e 75 0a 20 20 20 20 0a 20 20 20 20 73 65 74  enu.    .    set
39810 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d   menu [$mainfram
39820 65 20 67 65 74 6d 65 6e 75 20 76 69 65 77 5d 0a  e getmenu view].
39830 20 20 20 20 24 6d 65 6e 75 20 63 6f 6e 66 69 67      $menu config
39840 75 72 65 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64  ure -postcommand
39850 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
39860 65 72 3a 3a 41 63 74 75 61 6c 69 7a 65 56 69 65  er::ActualizeVie
39870 77 4d 65 6e 75 20 24 6d 65 6e 75 5d 0a 20 20 20  wMenu $menu].   
39880 20 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b   .    set menu [
39890 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d 65  $mainframe getme
398a0 6e 75 20 72 65 63 65 6e 74 66 69 6c 65 73 5d 0a  nu recentfiles].
398b0 20 20 20 20 24 6d 65 6e 75 20 63 6f 6e 66 69 67      $menu config
398c0 75 72 65 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64  ure -postcommand
398d0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
398e0 65 72 3a 3a 41 64 64 52 65 63 65 6e 74 66 69 6c  er::AddRecentfil
398f0 65 73 54 6f 4d 65 6e 75 20 24 6d 65 6e 75 5d 0a  esToMenu $menu].
39900 20 20 20 20 0a 20 20 20 20 23 20 76 65 72 79 20      .    # very 
39910 64 69 72 74 79 2e 20 57 69 74 68 6f 75 74 20 69  dirty. Without i
39920 74 2c 20 74 68 65 20 72 61 64 69 6f 62 75 74 74  t, the radiobutt
39930 6f 6e 20 69 6e 64 69 63 61 74 6f 72 20 69 73 20  on indicator is 
39940 6e 6f 74 20 64 72 61 77 6e 2e 20 57 68 79 3f 3f  not drawn. Why??
39950 3f 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b  ?.    set menu [
39960 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d 65  $mainframe getme
39970 6e 75 20 61 63 74 69 76 65 63 6f 6e 66 69 67 75  nu activeconfigu
39980 72 61 74 69 6f 6e 5d 0a 20 20 20 20 63 61 74 63  ration].    catc
39990 68 20 7b 20 24 6d 65 6e 75 20 63 6f 6e 66 20 2d  h { $menu conf -
399a0 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 22 24 6d 65  postcommand "$me
399b0 6e 75 20 63 6f 6e 66 20 2d 73 65 6c 65 63 74 63  nu conf -selectc
399c0 6f 6c 6f 72 20 62 6c 61 63 6b 22 20 7d 0a 7d 0a  olor black" }.}.
399d0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65  .proc RamDebugge
399e0 72 3a 3a 58 4d 4c 49 6e 64 65 6e 74 20 7b 20 7b  r::XMLIndent { {
399f0 20 6e 6f 6e 65 20 22 22 20 7d 20 7b 20 68 74 6d   none "" } { htm
39a00 6c 20 30 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61  l 0 } } {.    va
39a10 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20  riable text.    
39a20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74  variable current
39a30 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a 20  fileIsModified. 
39a40 20 20 20 0a 20 20 20 20 73 65 74 20 65 72 72 20     .    set err 
39a50 5b 63 61 74 63 68 20 7b 20 70 61 63 6b 61 67 65  [catch { package
39a60 20 72 65 71 75 69 72 65 20 74 64 6f 6d 20 7d 5d   require tdom }]
39a70 0a 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d  .    if { $err }
39a80 20 7b 0a 09 74 6b 5f 6d 65 73 73 61 67 65 42 6f   {..tk_messageBo
39a90 78 20 2d 6d 65 73 73 61 67 65 20 5b 5f 20 22 49  x -message [_ "I
39aa0 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74  t is necessary t
39ab0 6f 20 69 6e 73 74 61 6c 6c 20 70 61 63 6b 61 67  o install packag
39ac0 65 20 27 74 64 6f 6d 27 22 5d 0a 09 72 65 74 75  e 'tdom'"]..retu
39ad0 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74  rn.    }.    set
39ae0 20 64 61 74 61 20 5b 24 74 65 78 74 20 67 65 74   data [$text get
39af0 20 31 2e 30 20 65 6e 64 2d 31 63 5d 0a 20 20 20   1.0 end-1c].   
39b00 20 73 65 74 20 68 65 61 64 65 72 20 22 22 0a 20   set header "". 
39b10 20 20 20 72 65 67 65 78 70 20 7b 5e 28 2e 2a 3f     regexp {^(.*?
39b20 29 3c 5c 73 2a 3f 28 3f 21 5c 3f 7c 21 29 7d 20  )<\s*?(?!\?|!)} 
39b30 24 64 61 74 61 20 7b 7d 20 68 65 61 64 65 72 0a  $data {} header.
39b40 20 20 20 20 69 66 20 7b 20 21 24 68 74 6d 6c 20      if { !$html 
39b50 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 61  } {..set err [ca
39b60 74 63 68 20 7b 20 64 6f 6d 20 70 61 72 73 65 20  tch { dom parse 
39b70 24 64 61 74 61 20 64 6f 63 20 7d 20 65 72 72 73  $data doc } errs
39b80 74 72 69 6e 67 5d 0a 20 20 20 20 7d 20 65 6c 73  tring].    } els
39b90 65 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 61  e {..set err [ca
39ba0 74 63 68 20 7b 20 64 6f 6d 20 70 61 72 73 65 20  tch { dom parse 
39bb0 2d 68 74 6d 6c 20 24 64 61 74 61 20 64 6f 63 20  -html $data doc 
39bc0 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 20 20 20  } errstring].   
39bd0 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 65 72 72   }.    if { $err
39be0 20 7d 20 7b 0a 09 74 6b 5f 6d 65 73 73 61 67 65   } {..tk_message
39bf0 42 6f 78 20 2d 6d 65 73 73 61 67 65 20 5b 5f 20  Box -message [_ 
39c00 22 58 4d 4c 20 69 6e 20 66 69 6c 65 20 69 73 20  "XML in file is 
39c10 6e 6f 74 20 63 6f 72 72 65 63 74 20 28 25 73 29  not correct (%s)
39c20 22 20 24 65 72 72 73 74 72 69 6e 67 5d 0a 09 72  " $errstring]..r
39c30 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20  eturn.    }.    
39c40 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 49  set currentfileI
39c50 73 4d 6f 64 69 66 69 65 64 5f 73 61 76 65 20 24  sModified_save $
39c60 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64  currentfileIsMod
39c70 69 66 69 65 64 0a 20 20 20 20 24 74 65 78 74 20  ified.    $text 
39c80 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
39c90 20 20 20 24 74 65 78 74 20 69 6e 73 65 72 74 20     $text insert 
39ca0 65 6e 64 20 24 68 65 61 64 65 72 0a 20 20 20 20  end $header.    
39cb0 73 65 74 20 72 6f 6f 74 20 5b 24 64 6f 63 20 64  set root [$doc d
39cc0 6f 63 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 5d 0a  ocumentElement].
39cd0 20 20 20 20 69 66 20 7b 20 24 6e 6f 6e 65 20 65      if { $none e
39ce0 71 20 22 22 20 7d 20 7b 0a 09 24 74 65 78 74 20  q "" } {..$text 
39cf0 69 6e 73 65 72 74 20 65 6e 64 20 5b 24 72 6f 6f  insert end [$roo
39d00 74 20 61 73 58 4d 4c 5d 0a 20 20 20 20 7d 20 65  t asXML].    } e
39d10 6c 73 65 20 7b 0a 09 24 74 65 78 74 20 69 6e 73  lse {..$text ins
39d20 65 72 74 20 65 6e 64 20 5b 24 72 6f 6f 74 20 61  ert end [$root a
39d30 73 58 4d 4c 20 2d 69 6e 64 65 6e 74 20 24 6e 6f  sXML -indent $no
39d40 6e 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20 52 65  ne].    }.    Re
39d50 69 6e 73 74 72 75 6d 65 6e 74 43 75 72 72 65 6e  instrumentCurren
39d60 74 46 69 6c 65 0a 20 20 20 20 73 65 74 20 63 75  tFile.    set cu
39d70 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66  rrentfileIsModif
39d80 69 65 64 20 24 63 75 72 72 65 6e 74 66 69 6c 65  ied $currentfile
39d90 49 73 4d 6f 64 69 66 69 65 64 5f 73 61 76 65 0a  IsModified_save.
39da0 7d 0a 0a 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68  }..if { [llength
39db0 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20   [info commands 
39dc0 6c 72 65 70 65 61 74 5d 5d 20 3d 3d 20 30 20 7d  lrepeat]] == 0 }
39dd0 20 7b 0a 20 20 20 20 70 72 6f 63 20 6c 72 65 70   {.    proc lrep
39de0 65 61 74 20 7b 20 63 6f 75 6e 74 20 65 6c 65 6d  eat { count elem
39df0 65 6e 74 20 7d 20 7b 0a 09 73 65 74 20 72 65 74  ent } {..set ret
39e00 76 61 6c 20 22 22 0a 09 66 6f 72 20 7b 20 73 65  val ""..for { se
39e10 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 24  t i 0 } { $i < $
39e20 63 6f 75 6e 74 20 7d 20 7b 20 69 6e 63 72 20 69  count } { incr i
39e30 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e   } {..    lappen
39e40 64 20 72 65 74 76 61 6c 20 24 65 6c 65 6d 65 6e  d retval $elemen
39e50 74 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 72 65  t..}..return $re
39e60 74 76 61 6c 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  tval.    }.}..pr
39e70 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
39e80 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c  MarkerContextual
39e90 53 75 62 6d 65 6e 75 44 6f 20 7b 20 6c 69 6e 65  SubmenuDo { line
39ea0 20 77 68 61 74 20 7d 20 7b 0a 0a 20 20 20 20 73   what } {..    s
39eb0 77 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 73  witch $what {..s
39ec0 65 74 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b  et {..    if { [
39ed0 63 61 74 63 68 20 5b 6c 69 73 74 20 72 62 72 65  catch [list rbre
39ee0 61 6b 20 24 6c 69 6e 65 5d 20 65 72 72 6f 72 73  ak $line] errors
39ef0 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 57 61 69  tring] } {...Wai
39f00 74 53 74 61 74 65 20 30 0a 09 09 57 61 72 6e 57  tState 0...WarnW
39f10 69 6e 20 24 65 72 72 6f 72 73 74 72 69 6e 67 0a  in $errorstring.
39f20 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a  ..return..    }.
39f30 09 20 20 20 20 55 70 64 61 74 65 41 72 72 6f 77  .    UpdateArrow
39f40 41 6e 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 31  AndBreak $line 1
39f50 20 22 22 0a 09 7d 0a 09 63 6c 65 61 72 20 7b 0a   ""..}..clear {.
39f60 09 20 20 20 20 66 6f 72 65 61 63 68 20 6e 75 6d  .    foreach num
39f70 20 5b 72 69 6e 66 6f 20 24 6c 69 6e 65 5d 20 7b   [rinfo $line] {
39f80 0a 09 09 72 64 65 6c 20 24 6e 75 6d 0a 09 20 20  ...rdel $num..  
39f90 20 20 7d 0a 09 20 20 20 20 55 70 64 61 74 65 41    }..    UpdateA
39fa0 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24 6c 69  rrowAndBreak $li
39fb0 6e 65 20 30 20 22 22 0a 09 7d 0a 09 65 6e 61 62  ne 0 ""..}..enab
39fc0 6c 65 64 69 73 61 62 6c 65 20 7b 0a 09 20 20 20  ledisable {..   
39fd0 20 66 6f 72 65 61 63 68 20 6e 75 6d 20 5b 72 69   foreach num [ri
39fe0 6e 66 6f 20 24 6c 69 6e 65 5d 20 7b 0a 09 09 72  nfo $line] {...r
39ff0 65 6e 61 62 6c 65 64 69 73 61 62 6c 65 20 24 6e  enabledisable $n
3a000 75 6d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 55  um..    }..    U
3a010 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42 72 65  pdateArrowAndBre
3a020 61 6b 20 24 6c 69 6e 65 20 22 22 20 22 22 0a 09  ak $line "" ""..
3a030 7d 0a 09 63 6c 65 61 72 63 6f 6e 64 20 7b 0a 09  }..clearcond {..
3a040 20 20 20 20 66 6f 72 65 61 63 68 20 6e 75 6d 20      foreach num 
3a050 5b 72 69 6e 66 6f 20 24 6c 69 6e 65 5d 20 7b 0a  [rinfo $line] {.
3a060 09 09 72 63 6f 6e 64 20 24 6e 75 6d 20 22 22 0a  ..rcond $num "".
3a070 09 20 20 20 20 7d 0a 09 7d 0a 09 77 69 6e 64 6f  .    }..}..windo
3a080 77 20 7b 0a 09 20 20 20 20 44 69 73 70 6c 61 79  w {..    Display
3a090 42 72 65 61 6b 70 6f 69 6e 74 73 57 69 6e 64 6f  BreakpointsWindo
3a0a0 77 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72  w..}.    }.}..pr
3a0b0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
3a0c0 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c  MarkerContextual
3a0d0 53 75 62 6d 65 6e 75 20 7b 20 77 20 78 20 79 20  Submenu { w x y 
3a0e0 58 20 59 20 7d 20 7b 0a 20 20 20 20 76 61 72 69  X Y } {.    vari
3a0f0 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61  able text.    va
3a100 72 69 61 62 6c 65 20 6d 61 72 6b 65 72 0a 20 20  riable marker.  
3a110 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
3a120 6e 73 0a 0a 20 20 20 20 73 65 74 20 6c 69 6e 65  ns..    set line
3a130 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e   [scan [$text in
3a140 64 65 78 20 40 30 2c 24 79 5d 20 25 64 5d 0a 20  dex @0,$y] %d]. 
3a150 20 20 20 73 65 74 20 6e 75 6d 20 2d 31 0a 20 20     set num -1.  
3a160 20 20 66 6f 72 65 61 63 68 20 22 6e 75 6d 20 65    foreach "num e
3a170 6e 64 69 73 20 2d 20 2d 20 63 6f 6e 64 22 20 5b  ndis - - cond" [
3a180 6c 69 6e 64 65 78 20 5b 72 69 6e 66 6f 20 2d 66  lindex [rinfo -f
3a190 75 6c 6c 20 24 6c 69 6e 65 5d 20 30 5d 20 62 72  ull $line] 0] br
3a1a0 65 61 6b 0a 0a 20 20 20 20 73 65 74 20 6d 65 6e  eak..    set men
3a1b0 75 20 24 77 2e 6d 65 6e 75 0a 20 20 20 20 63 61  u $w.menu.    ca
3a1c0 74 63 68 20 7b 20 64 65 73 74 72 6f 79 20 24 6d  tch { destroy $m
3a1d0 65 6e 75 20 7d 0a 20 20 20 20 6d 65 6e 75 20 24  enu }.    menu $
3a1e0 6d 65 6e 75 20 2d 74 65 61 72 6f 66 66 20 30 0a  menu -tearoff 0.
3a1f0 0a 20 20 20 20 69 66 20 7b 20 24 6e 75 6d 20 3d  .    if { $num =
3a200 3d 20 2d 31 20 7d 20 7b 0a 09 24 6d 65 6e 75 20  = -1 } {..$menu 
3a210 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62  add command -lab
3a220 65 6c 20 5b 5f 20 22 53 65 74 20 62 72 65 61 6b  el [_ "Set break
3a230 70 6f 69 6e 74 22 5d 20 2d 63 6f 6d 6d 61 6e 64  point"] -command
3a240 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 61   \..    [list Ra
3a250 6d 44 65 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65  mDebugger::Marke
3a260 72 43 6f 6e 74 65 78 74 75 61 6c 53 75 62 6d 65  rContextualSubme
3a270 6e 75 44 6f 20 24 6c 69 6e 65 20 73 65 74 5d 0a  nuDo $line set].
3a280 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24 6d      } else {..$m
3a290 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20  enu add command 
3a2a0 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 6c 65 61 72  -label [_ "Clear
3a2b0 20 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20 2d 63   breakpoint"] -c
3a2c0 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 20 5b 6c  ommand \..    [l
3a2d0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
3a2e0 3a 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61  :MarkerContextua
3a2f0 6c 53 75 62 6d 65 6e 75 44 6f 20 24 6c 69 6e 65  lSubmenuDo $line
3a300 20 63 6c 65 61 72 5d 0a 09 69 66 20 7b 20 24 65   clear]..if { $e
3a310 6e 64 69 73 20 7d 20 7b 0a 09 20 20 20 20 24 6d  ndis } {..    $m
3a320 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20  enu add command 
3a330 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 69 73 61 62  -label [_ "Disab
3a340 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20  le breakpoint"] 
3a350 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 5b 6c 69  -command \...[li
3a360 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  st RamDebugger::
3a370 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c  MarkerContextual
3a380 53 75 62 6d 65 6e 75 44 6f 20 24 6c 69 6e 65 20  SubmenuDo $line 
3a390 65 6e 61 62 6c 65 64 69 73 61 62 6c 65 5d 0a 09  enabledisable]..
3a3a0 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 6d  } else {..    $m
3a3b0 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20  enu add command 
3a3c0 2d 6c 61 62 65 6c 20 5b 5f 20 22 45 6e 61 62 6c  -label [_ "Enabl
3a3d0 65 20 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20 2d  e breakpoint"] -
3a3e0 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 5b 6c 69 73  command \...[lis
3a3f0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4d  t RamDebugger::M
3a400 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c 53  arkerContextualS
3a410 75 62 6d 65 6e 75 44 6f 20 24 6c 69 6e 65 20 65  ubmenuDo $line e
3a420 6e 61 62 6c 65 64 69 73 61 62 6c 65 5d 0a 09 7d  nabledisable]..}
3a430 0a 09 69 66 20 7b 20 24 63 6f 6e 64 20 21 3d 20  ..if { $cond != 
3a440 22 22 20 7d 20 7b 0a 09 20 20 20 20 24 6d 65 6e  "" } {..    $men
3a450 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c  u add command -l
3a460 61 62 65 6c 20 5b 5f 20 22 43 6c 65 61 72 20 63  abel [_ "Clear c
3a470 6f 6e 64 69 74 69 6f 6e 3a 20 25 73 22 20 24 63  ondition: %s" $c
3a480 6f 6e 64 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a  ond] -command \.
3a490 09 09 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  ..[list RamDebug
3a4a0 67 65 72 3a 3a 4d 61 72 6b 65 72 43 6f 6e 74 65  ger::MarkerConte
3a4b0 78 74 75 61 6c 53 75 62 6d 65 6e 75 44 6f 20 24  xtualSubmenuDo $
3a4c0 6c 69 6e 65 20 63 6c 65 61 72 63 6f 6e 64 5d 0a  line clearcond].
3a4d0 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 24 6d 65  .}.    }.    $me
3a4e0 6e 75 20 61 64 64 20 73 65 70 61 72 61 74 6f 72  nu add separator
3a4f0 0a 0a 20 20 20 20 73 65 74 20 69 74 65 6d 20 5b  ..    set item [
3a500 24 6d 61 72 6b 65 72 20 66 69 6e 64 20 77 69 74  $marker find wit
3a510 68 74 61 67 20 22 62 6f 6f 6b 6d 61 72 6b 26 26  htag "bookmark&&
3a520 6c 24 6c 69 6e 65 22 5d 0a 0a 20 20 20 20 69 66  l$line"]..    if
3a530 20 7b 20 24 69 74 65 6d 20 65 71 20 22 22 20 7d   { $item eq "" }
3a540 20 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 6f   {..$menu add co
3a550 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20  mmand -label [_ 
3a560 22 53 61 76 65 20 70 6f 73 69 74 69 6f 6e 22 5d  "Save position"]
3a570 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20   -command \..   
3a580 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
3a590 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74 61  er::PositionsSta
3a5a0 63 6b 20 73 61 76 65 20 24 74 65 78 74 20 24 6c  ck save $text $l
3a5b0 69 6e 65 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20  ine].    } else 
3a5c0 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d  {..$menu add com
3a5d0 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22  mand -label [_ "
3a5e0 43 6c 65 61 72 20 70 6f 73 69 74 69 6f 6e 22 5d  Clear position"]
3a5f0 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20   -command \..   
3a600 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
3a610 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74 61  er::PositionsSta
3a620 63 6b 20 63 6c 65 61 6e 20 24 74 65 78 74 20 24  ck clean $text $
3a630 6c 69 6e 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20  line].    }.    
3a640 24 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72 61  $menu add separa
3a650 74 6f 72 0a 20 20 20 20 24 6d 65 6e 75 20 61 64  tor.    $menu ad
3a660 64 20 63 61 73 63 61 64 65 20 2d 6d 65 6e 75 20  d cascade -menu 
3a670 24 6d 65 6e 75 2e 6d 20 2d 6c 61 62 65 6c 20 5b  $menu.m -label [
3a680 5f 20 22 47 6f 20 74 6f 20 70 6f 73 69 74 69 6f  _ "Go to positio
3a690 6e 22 5d 0a 20 20 20 20 6d 65 6e 75 20 24 6d 65  n"].    menu $me
3a6a0 6e 75 2e 6d 20 2d 74 65 61 72 6f 66 66 20 30 0a  nu.m -tearoff 0.
3a6b0 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24  .    foreach i $
3a6c0 6f 70 74 69 6f 6e 73 28 73 61 76 65 64 5f 70 6f  options(saved_po
3a6d0 73 69 74 69 6f 6e 73 5f 73 74 61 63 6b 29 20 7b  sitions_stack) {
3a6e0 0a 09 66 6f 72 65 61 63 68 20 22 66 69 6c 65 20  ..foreach "file 
3a6f0 6c 69 6e 65 20 63 6f 6e 74 65 78 74 22 20 24 69  line context" $i
3a700 20 62 72 65 61 6b 0a 09 69 66 20 7b 20 24 63 6f   break..if { $co
3a710 6e 74 65 78 74 20 6e 65 20 22 22 20 7d 20 7b 20  ntext ne "" } { 
3a720 73 65 74 20 63 6f 6e 74 65 78 74 20 22 2d 2d 20  set context "-- 
3a730 24 63 6f 6e 74 65 78 74 22 20 7d 0a 09 73 65 74  $context" }..set
3a740 20 74 78 74 20 22 5b 66 69 6c 65 20 74 61 69 6c   txt "[file tail
3a750 20 24 66 69 6c 65 5d 3a 24 6c 69 6e 65 20 24 63   $file]:$line $c
3a760 6f 6e 74 65 78 74 22 0a 09 69 66 20 7b 20 5b 73  ontext"..if { [s
3a770 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 78  tring length $tx
3a780 74 5d 20 3e 20 36 30 20 7d 20 7b 0a 09 20 20 20  t] > 60 } {..   
3a790 20 73 65 74 20 74 78 74 20 5b 73 74 72 69 6e 67   set txt [string
3a7a0 20 72 61 6e 67 65 20 24 74 78 74 20 30 20 35 36   range $txt 0 56
3a7b0 5d 2e 2e 2e 0a 09 7d 0a 09 24 6d 65 6e 75 2e 6d  ].....}..$menu.m
3a7c0 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61   add command -la
3a7d0 62 65 6c 20 24 74 78 74 20 2d 63 6f 6d 6d 61 6e  bel $txt -comman
3a7e0 64 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52  d \..    [list R
3a7f0 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69  amDebugger::Posi
3a800 74 69 6f 6e 73 53 74 61 63 6b 20 67 6f 74 6f 20  tionsStack goto 
3a810 24 74 65 78 74 20 24 6c 69 6e 65 20 24 66 69 6c  $text $line $fil
3a820 65 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24 6d  e].    }..    $m
3a830 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20  enu add command 
3a840 2d 6c 61 62 65 6c 20 5b 5f 20 22 4c 61 73 74 20  -label [_ "Last 
3a850 50 6f 73 69 74 69 6f 6e 22 5d 20 2d 63 6f 6d 6d  Position"] -comm
3a860 61 6e 64 20 5c 0a 09 22 52 61 6d 44 65 62 75 67  and \.."RamDebug
3a870 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74  ger::PositionsSt
3a880 61 63 6b 20 67 6f 22 0a 20 20 20 20 24 6d 65 6e  ack go".    $men
3a890 75 20 61 64 64 20 73 65 70 61 72 61 74 6f 72 0a  u add separator.
3a8a0 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f      $menu add co
3a8b0 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20  mmand -label [_ 
3a8c0 22 50 6f 73 69 74 69 6f 6e 73 20 77 69 6e 64 6f  "Positions windo
3a8d0 77 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09  w"] -command \..
3a8e0 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
3a8f0 72 3a 3a 44 69 73 70 6c 61 79 50 6f 73 69 74 69  r::DisplayPositi
3a900 6f 6e 73 53 74 61 63 6b 20 20 2d 63 75 72 72 5f  onsStack  -curr_
3a910 74 65 78 74 20 24 74 65 78 74 20 2d 6e 6f 77 6c  text $text -nowl
3a920 69 6e 65 20 24 6c 69 6e 65 5d 0a 20 20 20 20 24  ine $line].    $
3a930 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64  menu add command
3a940 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 42 72 65 61   -label [_ "Brea
3a950 6b 70 6f 69 6e 74 73 20 77 69 6e 64 6f 77 22 5d  kpoints window"]
3a960 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 5b 6c 69   -command \..[li
3a970 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  st RamDebugger::
3a980 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c  MarkerContextual
3a990 53 75 62 6d 65 6e 75 44 6f 20 24 6c 69 6e 65 20  SubmenuDo $line 
3a9a0 77 69 6e 64 6f 77 5d 0a 0a 20 20 20 20 74 6b 5f  window]..    tk_
3a9b0 70 6f 70 75 70 20 24 6d 65 6e 75 20 24 58 20 24  popup $menu $X $
3a9c0 59 0a 7d 0a 0a 23 20 6f 6e 6c 79 20 66 6f 72 20  Y.}..# only for 
3a9d0 77 69 6e 64 6f 77 73 0a 70 72 6f 63 20 52 61 6d  windows.proc Ram
3a9e0 44 65 62 75 67 67 65 72 3a 3a 52 65 67 69 73 74  Debugger::Regist
3a9f0 65 72 45 78 74 65 6e 73 69 6f 6e 20 7b 7d 20 7b  erExtension {} {
3aa00 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
3aa10 78 74 0a 0a 20 20 20 20 70 61 63 6b 61 67 65 20  xt..    package 
3aa20 72 65 71 75 69 72 65 20 72 65 67 69 73 74 72 79  require registry
3aa30 0a 0a 20 20 20 20 73 65 74 20 6b 65 79 28 31 29  ..    set key(1)
3aa40 20 7b 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52   {HKEY_CLASSES_R
3aa50 4f 4f 54 5c 2e 74 63 6c 7d 0a 0a 20 20 20 20 69  OOT\.tcl}..    i
3aa60 66 20 7b 20 5b 63 61 74 63 68 20 7b 72 65 67 69  f { [catch {regi
3aa70 73 74 72 79 20 67 65 74 20 24 6b 65 79 28 31 29  stry get $key(1)
3aa80 20 22 22 7d 20 76 61 6c 28 31 29 5d 20 7d 20 7b   ""} val(1)] } {
3aa90 0a 09 73 65 74 20 76 61 6c 28 31 29 20 54 63 6c  ..set val(1) Tcl
3aaa0 46 69 6c 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20  File.    }..    
3aab0 73 65 74 20 6b 65 79 28 32 29 20 22 48 4b 45 59  set key(2) "HKEY
3aac0 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 5c 5c 24  _CLASSES_ROOT\\$
3aad0 76 61 6c 28 31 29 22 0a 0a 20 20 20 20 69 66 20  val(1)"..    if 
3aae0 7b 20 5b 63 61 74 63 68 20 7b 72 65 67 69 73 74  { [catch {regist
3aaf0 72 79 20 67 65 74 20 24 6b 65 79 28 32 29 20 22  ry get $key(2) "
3ab00 22 7d 20 76 61 6c 28 32 29 5d 20 7d 20 7b 0a 09  "} val(2)] } {..
3ab10 73 65 74 20 76 61 6c 28 32 29 20 54 43 4c 2d 54  set val(2) TCL-T
3ab20 4b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74  K.    }..    set
3ab30 20 6b 65 79 28 33 29 20 22 24 6b 65 79 28 32 29   key(3) "$key(2)
3ab40 5c 5c 73 68 65 6c 6c 5c 5c 52 61 6d 44 65 62 75  \\shell\\RamDebu
3ab50 67 67 65 72 5c 5c 63 6f 6d 6d 61 6e 64 22 0a 20  gger\\command". 
3ab60 20 20 20 73 65 74 20 76 61 6c 28 33 29 20 22 5c     set val(3) "\
3ab70 22 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d  "[file nativenam
3ab80 65 20 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65 78  e [info nameofex
3ab90 65 63 75 74 61 62 6c 65 5d 5d 5c 22 20 22 0a 20  ecutable]]\" ". 
3aba0 20 20 20 69 66 20 7b 20 21 5b 73 74 72 69 6e 67     if { ![string
3abb0 20 65 71 75 61 6c 20 5b 66 69 6c 65 20 74 61 69   equal [file tai
3abc0 6c 20 24 3a 3a 61 72 67 76 30 5d 20 6d 61 69 6e  l $::argv0] main
3abd0 2e 74 63 6c 5d 20 7d 20 7b 0a 09 61 70 70 65 6e  .tcl] } {..appen
3abe0 64 20 76 61 6c 28 33 29 20 22 5c 22 5b 66 69 6c  d val(3) "\"[fil
3abf0 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 3a 3a  e nativename $::
3ac00 61 72 67 76 30 5d 5c 22 20 22 0a 20 20 20 20 7d  argv0]\" ".    }
3ac10 0a 20 20 20 20 61 70 70 65 6e 64 20 76 61 6c 28  .    append val(
3ac20 33 29 20 22 5c 22 25 31 5c 22 20 25 2a 22 0a 0a  3) "\"%1\" %*"..
3ac30 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20      for { set i 
3ac40 31 20 7d 20 7b 20 24 69 20 3c 3d 20 33 20 7d 20  1 } { $i <= 3 } 
3ac50 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 69 66  { incr i } {..if
3ac60 20 7b 20 5b 63 61 74 63 68 20 7b 20 72 65 67 69   { [catch { regi
3ac70 73 74 72 79 20 67 65 74 20 24 6b 65 79 28 24 69  stry get $key($i
3ac80 29 20 22 22 20 7d 20 72 76 61 6c 28 24 69 29 5d  ) "" } rval($i)]
3ac90 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 72 76   } {..    set rv
3aca0 61 6c 28 24 69 29 20 22 22 0a 09 7d 0a 20 20 20  al($i) ""..}.   
3acb0 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 76 61   }..    if { $va
3acc0 6c 28 31 29 20 65 71 20 24 72 76 61 6c 28 31 29  l(1) eq $rval(1)
3acd0 20 26 26 20 24 76 61 6c 28 32 29 20 65 71 20 24   && $val(2) eq $
3ace0 72 76 61 6c 28 32 29 20 26 26 20 24 76 61 6c 28  rval(2) && $val(
3acf0 33 29 20 65 71 20 24 72 76 61 6c 28 33 29 20 7d  3) eq $rval(3) }
3ad00 20 7b 0a 09 64 69 61 6c 6f 67 77 69 6e 5f 73 6e   {..dialogwin_sn
3ad10 69 74 20 24 74 65 78 74 2e 5f 61 73 6b 20 2d 74  it $text._ask -t
3ad20 69 74 6c 65 20 5b 5f 20 22 55 6e 61 73 73 6f 63  itle [_ "Unassoc
3ad30 69 61 74 65 20 65 78 74 65 6e 73 69 6f 6e 22 5d  iate extension"]
3ad40 0a 09 73 65 74 20 66 20 5b 24 74 65 78 74 2e 5f  ..set f [$text._
3ad50 61 73 6b 20 67 69 76 65 66 72 61 6d 65 5d 0a 09  ask giveframe]..
3ad60 6c 61 62 65 6c 20 24 66 2e 6c 31 20 2d 74 65 78  label $f.l1 -tex
3ad70 74 20 5b 5f 20 22 44 6f 20 79 6f 75 20 77 61 6e  t [_ "Do you wan
3ad80 74 20 74 6f 20 75 6e 61 73 73 6f 63 69 61 74 65  t to unassociate
3ad90 20 63 6f 6d 6d 61 6e 64 20 27 52 61 6d 44 65 62   command 'RamDeb
3ada0 75 67 67 65 72 20 66 72 6f 6d 20 65 78 74 65 6e  ugger from exten
3adb0 73 69 6f 6e 20 2e 74 63 6c 3f 22 5d 0a 09 73 65  sion .tcl?"]..se
3adc0 74 20 73 6d 61 6c 6c 66 6f 6e 74 73 69 7a 65 20  t smallfontsize 
3add0 5b 65 78 70 72 20 7b 5b 66 6f 6e 74 20 61 63 74  [expr {[font act
3ade0 75 61 6c 20 5b 24 66 2e 6c 31 20 63 67 65 74 20  ual [$f.l1 cget 
3adf0 2d 66 6f 6e 74 5d 20 2d 73 69 7a 65 5d 2d 31 7d  -font] -size]-1}
3ae00 5d 0a 09 6c 61 62 65 6c 20 24 66 2e 6c 32 20 2d  ]..label $f.l2 -
3ae10 66 6f 6e 74 20 22 2d 73 69 7a 65 20 24 73 6d 61  font "-size $sma
3ae20 6c 6c 66 6f 6e 74 73 69 7a 65 22 20 2d 74 65 78  llfontsize" -tex
3ae30 74 20 5b 5f 20 22 4e 6f 74 65 3a 20 74 68 69 73  t [_ "Note: this
3ae40 20 63 6f 6d 6d 61 6e 64 20 63 61 6e 20 62 65 20   command can be 
3ae50 75 73 65 64 20 69 6e 20 74 68 65 20 57 69 6e 64  used in the Wind
3ae60 6f 77 73 5c 0a 09 20 20 20 20 20 20 65 78 70 6c  ows\..      expl
3ae70 6f 72 65 72 20 62 79 20 75 73 69 6e 67 20 74 68  orer by using th
3ae80 65 20 63 6f 6e 74 65 78 74 75 61 6c 20 6d 65 6e  e contextual men
3ae90 75 20 6f 76 65 72 20 6f 6e 65 20 2e 74 63 6c 20  u over one .tcl 
3aea0 66 69 6c 65 22 20 5d 20 2d 77 72 61 70 6c 65 6e  file" ] -wraplen
3aeb0 67 74 68 20 31 37 30 20 2d 6a 75 73 74 69 66 79  gth 170 -justify
3aec0 20 6c 65 66 74 0a 0a 09 67 72 69 64 20 24 66 2e   left...grid $f.
3aed0 6c 31 20 2d 73 74 69 63 6b 79 20 6e 77 20 2d 70  l1 -sticky nw -p
3aee0 61 64 78 20 35 20 2d 70 61 64 79 20 35 0a 09 67  adx 5 -pady 5..g
3aef0 72 69 64 20 24 66 2e 6c 32 20 2d 73 74 69 63 6b  rid $f.l2 -stick
3af00 79 20 6e 77 20 2d 70 61 64 78 20 35 20 2d 70 61  y nw -padx 5 -pa
3af10 64 79 20 35 0a 0a 09 73 65 74 20 61 63 74 69 6f  dy 5...set actio
3af20 6e 20 5b 24 74 65 78 74 2e 5f 61 73 6b 20 63 72  n [$text._ask cr
3af30 65 61 74 65 77 69 6e 64 6f 77 5d 0a 09 64 65 73  eatewindow]..des
3af40 74 72 6f 79 20 24 74 65 78 74 2e 5f 61 73 6b 0a  troy $text._ask.
3af50 09 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 3c 3d  .if { $action <=
3af60 20 30 20 7d 20 7b 20 20 72 65 74 75 72 6e 20 7d   0 } {  return }
3af70 0a 0a 09 69 66 20 7b 20 5b 63 61 74 63 68 20 7b  ...if { [catch {
3af80 0a 09 20 20 20 20 72 65 67 69 73 74 72 79 20 64  ..    registry d
3af90 65 6c 65 74 65 20 22 24 6b 65 79 28 32 29 5c 5c  elete "$key(2)\\
3afa0 73 68 65 6c 6c 5c 5c 52 61 6d 44 65 62 75 67 67  shell\\RamDebugg
3afb0 65 72 22 0a 09 7d 5d 20 7d 20 7b 0a 09 20 20 20  er"..}] } {..   
3afc0 20 74 6b 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d   tk_messageBox -
3afd0 6d 65 73 73 61 67 65 20 5c 0a 09 09 5b 5f 20 22  message \...[_ "
3afe0 45 72 72 6f 72 20 69 6e 20 74 68 65 20 6f 70 65  Error in the ope
3aff0 72 61 74 69 6f 6e 2e 20 43 68 65 63 6b 20 79 6f  ration. Check yo
3b000 75 72 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 61  ur permissions a
3b010 6e 64 2f 6f 72 20 65 6e 74 65 72 20 61 73 20 61  nd/or enter as a
3b020 64 6d 69 6e 69 73 74 72 61 74 6f 72 22 5d 0a 09  dministrator"]..
3b030 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  }..return.    }.
3b040 20 20 20 20 64 69 61 6c 6f 67 77 69 6e 5f 73 6e      dialogwin_sn
3b050 69 74 20 24 74 65 78 74 2e 5f 61 73 6b 20 2d 74  it $text._ask -t
3b060 69 74 6c 65 20 5b 5f 20 22 41 73 73 6f 63 69 61  itle [_ "Associa
3b070 74 65 20 65 78 74 65 6e 73 69 6f 6e 22 5d 0a 20  te extension"]. 
3b080 20 20 20 73 65 74 20 66 20 5b 24 74 65 78 74 2e     set f [$text.
3b090 5f 61 73 6b 20 67 69 76 65 66 72 61 6d 65 5d 0a  _ask giveframe].
3b0a0 20 20 20 20 6c 61 62 65 6c 20 24 66 2e 6c 31 20      label $f.l1 
3b0b0 2d 74 65 78 74 20 5b 5f 20 22 44 6f 20 79 6f 75  -text [_ "Do you
3b0c0 20 77 61 6e 74 20 74 6f 20 61 73 73 6f 63 69 61   want to associa
3b0d0 74 65 20 63 6f 6d 6d 61 6e 64 20 27 52 61 6d 44  te command 'RamD
3b0e0 65 62 75 67 67 65 72 20 74 6f 20 65 78 74 65 6e  ebugger to exten
3b0f0 73 69 6f 6e 20 2e 74 63 6c 3f 22 5d 0a 20 20 20  sion .tcl?"].   
3b100 20 73 65 74 20 73 6d 61 6c 6c 66 6f 6e 74 73 69   set smallfontsi
3b110 7a 65 20 5b 65 78 70 72 20 7b 5b 66 6f 6e 74 20  ze [expr {[font 
3b120 61 63 74 75 61 6c 20 5b 24 66 2e 6c 31 20 63 67  actual [$f.l1 cg
3b130 65 74 20 2d 66 6f 6e 74 5d 20 2d 73 69 7a 65 5d  et -font] -size]
3b140 2d 31 7d 5d 0a 20 20 20 20 6c 61 62 65 6c 20 24  -1}].    label $
3b150 66 2e 6c 32 20 2d 66 6f 6e 74 20 22 2d 73 69 7a  f.l2 -font "-siz
3b160 65 20 24 73 6d 61 6c 6c 66 6f 6e 74 73 69 7a 65  e $smallfontsize
3b170 22 20 2d 74 65 78 74 20 5b 5f 20 22 4e 6f 74 65  " -text [_ "Note
3b180 3a 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63  : this command c
3b190 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 74 68  an be used in th
3b1a0 65 20 57 69 6e 64 6f 77 73 5c 0a 09 20 20 20 65  e Windows\..   e
3b1b0 78 70 6c 6f 72 65 72 20 62 79 20 75 73 69 6e 67  xplorer by using
3b1c0 20 74 68 65 20 63 6f 6e 74 65 78 74 75 61 6c 20   the contextual 
3b1d0 6d 65 6e 75 20 6f 76 65 72 20 6f 6e 65 20 2e 74  menu over one .t
3b1e0 63 6c 20 66 69 6c 65 22 5d 20 2d 77 72 61 70 6c  cl file"] -wrapl
3b1f0 65 6e 67 74 68 20 31 37 30 20 2d 6a 75 73 74 69  ength 170 -justi
3b200 66 79 20 6c 65 66 74 0a 0a 20 20 20 20 67 72 69  fy left..    gri
3b210 64 20 24 66 2e 6c 31 20 2d 73 74 69 63 6b 79 20  d $f.l1 -sticky 
3b220 6e 77 20 2d 70 61 64 78 20 35 20 2d 70 61 64 79  nw -padx 5 -pady
3b230 20 35 0a 20 20 20 20 67 72 69 64 20 24 66 2e 6c   5.    grid $f.l
3b240 32 20 2d 73 74 69 63 6b 79 20 6e 77 20 2d 70 61  2 -sticky nw -pa
3b250 64 78 20 35 20 2d 70 61 64 79 20 35 0a 0a 20 20  dx 5 -pady 5..  
3b260 20 20 73 65 74 20 61 63 74 69 6f 6e 20 5b 24 74    set action [$t
3b270 65 78 74 2e 5f 61 73 6b 20 63 72 65 61 74 65 77  ext._ask createw
3b280 69 6e 64 6f 77 5d 0a 20 20 20 20 64 65 73 74 72  indow].    destr
3b290 6f 79 20 24 74 65 78 74 2e 5f 61 73 6b 0a 20 20  oy $text._ask.  
3b2a0 20 20 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 3c    if { $action <
3b2b0 3d 20 30 20 7d 20 7b 20 20 72 65 74 75 72 6e 20  = 0 } {  return 
3b2c0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74  }..    if { [cat
3b2d0 63 68 20 7b 0a 09 66 6f 72 20 7b 20 73 65 74 20  ch {..for { set 
3b2e0 69 20 31 20 7d 20 7b 20 24 69 20 3c 3d 20 33 20  i 1 } { $i <= 3 
3b2f0 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09  } { incr i } {..
3b300 20 20 20 20 72 65 67 69 73 74 72 79 20 73 65 74      registry set
3b310 20 24 6b 65 79 28 24 69 29 20 22 22 20 24 76 61   $key($i) "" $va
3b320 6c 28 24 69 29 0a 09 7d 0a 20 20 20 20 7d 5d 20  l($i)..}.    }] 
3b330 7d 20 7b 0a 09 74 6b 5f 6d 65 73 73 61 67 65 42  } {..tk_messageB
3b340 6f 78 20 2d 6d 65 73 73 61 67 65 20 5b 5f 20 22  ox -message [_ "
3b350 45 72 72 6f 72 20 69 6e 20 74 68 65 20 6f 70 65  Error in the ope
3b360 72 61 74 69 6f 6e 2e 20 43 68 65 63 6b 20 79 6f  ration. Check yo
3b370 75 72 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 61  ur permissions a
3b380 6e 64 2f 6f 72 20 65 6e 74 65 72 20 61 73 20 61  nd/or enter as a
3b390 64 6d 69 6e 69 73 74 72 61 74 6f 72 22 5d 0a 20  dministrator"]. 
3b3a0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d     }.}..proc Ram
3b3b0 44 65 62 75 67 67 65 72 3a 3a 45 78 74 72 61 63  Debugger::Extrac
3b3c0 74 45 78 61 6d 70 6c 65 73 44 69 72 20 7b 7d 20  tExamplesDir {} 
3b3d0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  {.    variable t
3b3e0 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 0a 20  opdir_external. 
3b3f0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74     variable text
3b400 20 0a 0a 20 20 20 20 73 65 74 20 64 69 72 20 5b   ..    set dir [
3b410 74 6b 5f 63 68 6f 6f 73 65 44 69 72 65 63 74 6f  tk_chooseDirecto
3b420 72 79 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24  ry -initialdir $
3b430 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 20  topdir_external 
3b440 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 5c 0a  -parent $text \.
3b450 09 09 20 2d 74 69 74 6c 65 20 5b 5f 20 22 53 65  .. -title [_ "Se
3b460 6c 65 63 74 20 64 69 72 65 63 74 6f 72 79 20 77  lect directory w
3b470 68 65 72 65 20 74 6f 20 65 78 74 72 61 63 74 20  here to extract 
3b480 74 68 65 20 45 78 61 6d 70 6c 65 73 20 64 69 72  the Examples dir
3b490 65 63 74 6f 72 79 22 5d 5d 0a 20 20 20 20 69 66  ectory"]].    if
3b4a0 20 7b 20 24 64 69 72 20 65 71 20 22 22 20 7d 20   { $dir eq "" } 
3b4b0 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 66  { return }.    f
3b4c0 69 6c 65 20 63 6f 70 79 20 2d 66 6f 72 63 65 20  ile copy -force 
3b4d0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64  [file join $topd
3b4e0 69 72 5f 65 78 74 65 72 6e 61 6c 20 45 78 61 6d  ir_external Exam
3b4f0 70 6c 65 73 5d 20 24 64 69 72 0a 20 20 20 20 53  ples] $dir.    S
3b500 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 43 6f  etMessage [_ "Co
3b510 70 69 65 64 20 65 78 61 6d 70 6c 65 73 20 64 69  pied examples di
3b520 72 65 63 74 6f 72 79 20 69 6e 74 6f 20 64 69 72  rectory into dir
3b530 65 63 74 6f 72 79 20 27 25 73 27 22 20 24 64 69  ectory '%s'" $di
3b540 72 5d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65  r].}..proc RamDe
3b550 62 75 67 67 65 72 3a 3a 53 68 6f 77 53 74 61 74  bugger::ShowStat
3b560 75 73 42 61 72 20 7b 7d 20 7b 0a 20 20 20 20 76  usBar {} {.    v
3b570 61 72 69 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d  ariable mainfram
3b580 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f  e.    variable o
3b590 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 77 69 74  ptions..    swit
3b5a0 63 68 20 24 6f 70 74 69 6f 6e 73 28 73 68 6f 77  ch $options(show
3b5b0 73 74 61 74 75 73 62 61 72 29 20 7b 0a 09 31 20  statusbar) {..1 
3b5c0 7b 0a 09 20 20 20 20 24 6d 61 69 6e 66 72 61 6d  {..    $mainfram
3b5d0 65 20 73 68 6f 77 73 74 61 74 75 73 62 61 72 20  e showstatusbar 
3b5e0 70 72 6f 67 72 65 73 73 69 6f 6e 0a 09 7d 0a 09  progression..}..
3b5f0 30 20 7b 0a 09 20 20 20 20 24 6d 61 69 6e 66 72  0 {..    $mainfr
3b600 61 6d 65 20 73 68 6f 77 73 74 61 74 75 73 62 61  ame showstatusba
3b610 72 20 6e 6f 6e 65 0a 09 7d 0a 20 20 20 20 7d 0a  r none..}.    }.
3b620 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
3b630 67 65 72 3a 3a 53 68 6f 77 42 75 74 74 6f 6e 73  ger::ShowButtons
3b640 54 6f 6f 6c 42 61 72 20 7b 7d 20 7b 0a 20 20 20  ToolBar {} {.   
3b650 20 76 61 72 69 61 62 6c 65 20 6d 61 69 6e 66 72   variable mainfr
3b660 61 6d 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ame.    variable
3b670 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 77   options..    sw
3b680 69 74 63 68 20 24 6f 70 74 69 6f 6e 73 28 73 68  itch $options(sh
3b690 6f 77 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72  owbuttonstoolbar
3b6a0 29 20 7b 0a 09 31 20 7b 0a 09 20 20 20 20 24 6d  ) {..1 {..    $m
3b6b0 61 69 6e 66 72 61 6d 65 20 73 68 6f 77 74 6f 6f  ainframe showtoo
3b6c0 6c 62 61 72 20 30 20 31 0a 09 7d 0a 09 30 20 7b  lbar 0 1..}..0 {
3b6d0 0a 09 20 20 20 20 24 6d 61 69 6e 66 72 61 6d 65  ..    $mainframe
3b6e0 20 73 68 6f 77 74 6f 6f 6c 62 61 72 20 30 20 30   showtoolbar 0 0
3b6f0 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f  ..}.    }.}..pro
3b700 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54  c RamDebugger::T
3b710 6f 6f 67 6c 65 54 6f 6f 6c 62 61 72 73 53 74 61  oogleToolbarsSta
3b720 74 75 73 62 61 72 20 7b 7d 20 7b 0a 20 20 20 20  tusbar {} {.    
3b730 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73  variable options
3b740 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65  .    variable te
3b750 78 74 0a 0a 20 20 20 20 73 65 74 20 77 20 5b 77  xt..    set w [w
3b760 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74  info toplevel $t
3b770 65 78 74 5d 0a 0a 20 20 20 20 69 66 20 7b 24 6f  ext]..    if {$o
3b780 70 74 69 6f 6e 73 28 73 68 6f 77 62 75 74 74 6f  ptions(showbutto
3b790 6e 73 74 6f 6f 6c 62 61 72 29 20 7d 20 7b 0a 09  nstoolbar) } {..
3b7a0 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 68 6f 77  set options(show
3b7b0 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 29 20  buttonstoolbar) 
3b7c0 30 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 73  0..set options(s
3b7d0 68 6f 77 73 74 61 74 75 73 62 61 72 29 20 30 0a  howstatusbar) 0.
3b7e0 09 24 77 20 63 6f 6e 66 69 67 75 72 65 20 2d 6d  .$w configure -m
3b7f0 65 6e 75 20 22 22 0a 09 67 72 69 64 20 72 65 6d  enu ""..grid rem
3b800 6f 76 65 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e  ove [winfo paren
3b810 74 20 24 74 65 78 74 5d 2e 78 73 63 72 6f 6c 6c  t $text].xscroll
3b820 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73  .    } else {..s
3b830 65 74 20 6f 70 74 69 6f 6e 73 28 73 68 6f 77 62  et options(showb
3b840 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 29 20 31  uttonstoolbar) 1
3b850 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 68  ..set options(sh
3b860 6f 77 73 74 61 74 75 73 62 61 72 29 20 31 0a 09  owstatusbar) 1..
3b870 24 77 20 63 6f 6e 66 69 67 75 72 65 20 2d 6d 65  $w configure -me
3b880 6e 75 20 24 77 2e 6d 65 6e 75 62 61 72 0a 09 67  nu $w.menubar..g
3b890 72 69 64 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e  rid [winfo paren
3b8a0 74 20 24 74 65 78 74 5d 2e 78 73 63 72 6f 6c 6c  t $text].xscroll
3b8b0 0a 20 20 20 20 7d 0a 20 20 20 20 53 68 6f 77 53  .    }.    ShowS
3b8c0 74 61 74 75 73 42 61 72 0a 20 20 20 20 53 68 6f  tatusBar.    Sho
3b8d0 77 42 75 74 74 6f 6e 73 54 6f 6f 6c 42 61 72 0a  wButtonsToolBar.
3b8e0 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67  }..proc RamDebug
3b8f0 67 65 72 3a 3a 53 70 6c 61 73 68 20 7b 7d 20 7b  ger::Splash {} {
3b900 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 77 20  .    .    set w 
3b910 5b 74 6f 70 6c 65 76 65 6c 20 2e 73 70 6c 61 73  [toplevel .splas
3b920 68 5d 0a 20 20 20 20 24 77 20 63 6f 6e 66 69 67  h].    $w config
3b930 75 72 65 20 2d 62 67 20 23 66 66 65 36 65 36 20  ure -bg #ffe6e6 
3b940 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 73 6f  -bd 1 -relief so
3b950 6c 69 64 0a 20 20 20 20 77 6d 20 6f 76 65 72 72  lid.    wm overr
3b960 69 64 65 72 65 64 69 72 65 63 74 20 2e 73 70 6c  ideredirect .spl
3b970 61 73 68 20 31 0a 20 20 20 20 73 65 74 20 77 69  ash 1.    set wi
3b980 20 5b 65 78 70 72 20 7b 69 6e 74 28 2e 35 2a 5b   [expr {int(.5*[
3b990 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 64 74  winfo screenwidt
3b9a0 68 20 2e 5d 2d 2e 35 2a 32 32 30 29 7d 5d 0a 20  h .]-.5*220)}]. 
3b9b0 20 20 20 73 65 74 20 68 65 20 5b 65 78 70 72 20     set he [expr 
3b9c0 7b 69 6e 74 28 2e 35 2a 5b 77 69 6e 66 6f 20 73  {int(.5*[winfo s
3b9d0 63 72 65 65 6e 68 65 69 67 68 74 20 2e 5d 2d 2e  creenheight .]-.
3b9e0 35 2a 31 30 30 29 7d 5d 0a 20 20 20 20 77 6d 20  5*100)}].    wm 
3b9f0 67 65 6f 6d 65 74 72 79 20 24 77 20 32 32 30 78  geometry $w 220x
3ba00 31 30 30 2b 24 77 69 2b 24 68 65 0a 0a 20 20 20  100+$wi+$he..   
3ba10 20 6c 61 62 65 6c 20 24 77 2e 6c 20 2d 74 65 78   label $w.l -tex
3ba20 74 20 52 61 6d 44 65 62 75 67 67 65 72 20 2d 66  t RamDebugger -f
3ba30 6f 6e 74 20 22 2d 66 61 6d 69 6c 79 20 7b 6e 65  ont "-family {ne
3ba40 77 20 63 65 6e 74 75 72 79 20 73 63 68 6f 6f 6c  w century school
3ba50 62 6f 6f 6b 7d 20 2d 73 69 7a 65 20 32 30 20 2d  book} -size 20 -
3ba60 77 65 69 67 68 74 20 62 6f 6c 64 22 20 5c 0a 09  weight bold" \..
3ba70 2d 66 67 20 5c 23 64 33 35 31 33 64 20 2d 62 67  -fg \#d3513d -bg
3ba80 20 23 66 66 65 36 65 36 20 2d 61 6e 63 68 6f 72   #ffe6e6 -anchor
3ba90 20 63 65 6e 74 65 72 0a 20 20 20 20 0a 20 20 20   center.    .   
3baa0 20 6c 61 62 65 6c 20 24 77 2e 6c 32 20 2d 74 65   label $w.l2 -te
3bab0 78 74 20 5b 5f 20 22 57 61 69 74 20 70 6c 65 61  xt [_ "Wait plea
3bac0 73 65 2e 2e 2e 22 5d 20 2d 66 6f 6e 74 20 22 2d  se..."] -font "-
3bad0 66 61 6d 69 6c 79 20 7b 6e 65 77 20 63 65 6e 74  family {new cent
3bae0 75 72 79 20 73 63 68 6f 6f 6c 62 6f 6f 6b 7d 20  ury schoolbook} 
3baf0 2d 73 69 7a 65 20 31 32 22 20 5c 0a 09 2d 66 67  -size 12" \..-fg
3bb00 20 5c 23 64 33 35 31 33 64 20 2d 62 67 20 23 66   \#d3513d -bg #f
3bb10 66 65 36 65 36 20 2d 61 6e 63 68 6f 72 20 63 65  fe6e6 -anchor ce
3bb20 6e 74 65 72 0a 20 20 20 20 0a 20 20 20 20 67 72  nter.    .    gr
3bb30 69 64 20 24 77 2e 6c 20 2d 70 61 64 78 20 35 20  id $w.l -padx 5 
3bb40 2d 70 61 64 79 20 35 0a 20 20 20 20 67 72 69 64  -pady 5.    grid
3bb50 20 24 77 2e 6c 32 20 2d 70 61 64 78 20 35 20 2d   $w.l2 -padx 5 -
3bb60 70 61 64 79 20 35 0a 20 20 20 20 67 72 69 64 20  pady 5.    grid 
3bb70 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20  columnconfigure 
3bb80 24 77 20 30 20 2d 77 65 69 67 68 74 20 31 0a 20  $w 0 -weight 1. 
3bb90 20 20 20 75 70 64 61 74 65 0a 7d 0a 0a 70 72 6f     update.}..pro
3bba0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45  c RamDebugger::E
3bbb0 6e 64 53 70 6c 61 73 68 20 7b 7d 20 7b 0a 20 20  ndSplash {} {.  
3bbc0 20 20 64 65 73 74 72 6f 79 20 2e 73 70 6c 61 73    destroy .splas
3bbd0 68 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62  h.}..proc RamDeb
3bbe0 75 67 67 65 72 3a 3a 73 65 74 5f 74 69 74 6c 65  ugger::set_title
3bbf0 20 7b 20 74 69 74 6c 65 20 7d 20 7b 0a 20 20 20   { title } {.   
3bc00 20 76 61 72 69 61 62 6c 65 20 69 73 77 69 6e 63   variable iswinc
3bc10 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  e.    variable t
3bc20 65 78 74 0a 20 20 20 20 0a 20 20 20 20 69 66 20  ext.    .    if 
3bc30 7b 20 21 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a  { !$iswince } {.
3bc40 09 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f  .wm title [winfo
3bc50 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d   toplevel $text]
3bc60 20 22 52 61 6d 44 65 62 75 67 67 65 72 20 20 20   "RamDebugger   
3bc70 20 20 20 24 74 69 74 6c 65 22 0a 20 20 20 20 7d     $title".    }
3bc80 20 65 6c 73 65 20 7b 0a 09 77 6d 20 74 69 74 6c   else {..wm titl
3bc90 65 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65  e [winfo topleve
3bca0 6c 20 24 74 65 78 74 5d 20 22 52 20 2d 20 24 74  l $text] "R - $t
3bcb0 69 74 6c 65 22 0a 20 20 20 20 7d 0a 7d 0a 70 72  itle".    }.}.pr
3bcc0 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  oc RamDebugger::
3bcd0 49 6e 69 74 47 55 49 20 7b 20 7b 20 77 20 2e 67  InitGUI { { w .g
3bce0 75 69 20 7d 20 7b 20 67 65 6f 6d 65 74 72 79 20  ui } { geometry 
3bcf0 22 22 20 7d 20 7b 20 56 69 65 77 4f 6e 6c 79 54  "" } { ViewOnlyT
3bd00 65 78 74 4f 72 41 6c 6c 20 22 22 20 7d 20 7b 20  extOrAll "" } { 
3bd10 74 6f 70 6c 65 76 65 6c 75 73 65 20 22 22 20 7d  topleveluse "" }
3bd20 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
3bd30 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61  e options.    va
3bd40 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 5f 64  riable options_d
3bd50 65 66 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ef.    variable 
3bd60 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61  marker.    varia
3bd70 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72  ble text.    var
3bd80 69 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a  iable mainframe.
3bd90 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 73      variable lis
3bda0 74 62 6f 78 0a 20 20 20 20 76 61 72 69 61 62 6c  tbox.    variabl
3bdb0 65 20 6c 69 73 74 62 6f 78 6c 61 62 65 6c 0a 20  e listboxlabel. 
3bdc0 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74     variable list
3bdd0 62 6f 78 6c 61 62 65 6c 66 72 61 6d 65 0a 20 20  boxlabelframe.  
3bde0 20 20 76 61 72 69 61 62 6c 65 20 63 76 73 5f 69    variable cvs_i
3bdf0 6e 64 69 63 61 74 6f 72 5f 66 72 61 6d 65 0a 20  ndicator_frame. 
3be00 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65     variable pane
3be10 32 69 6e 31 0a 20 20 20 20 76 61 72 69 61 62 6c  2in1.    variabl
3be20 65 20 69 6d 61 67 65 73 0a 20 20 20 20 76 61 72  e images.    var
3be30 69 61 62 6c 65 20 74 65 78 74 53 54 0a 20 20 20  iable textST.   
3be40 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 4f 55   variable textOU
3be50 54 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  T.    variable t
3be60 65 78 74 43 4f 4d 50 0a 20 20 20 20 76 61 72 69  extCOMP.    vari
3be70 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73  able breakpoints
3be80 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f  .    variable to
3be90 70 64 69 72 0a 20 20 20 20 76 61 72 69 61 62 6c  pdir.    variabl
3bea0 65 20 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61  e topdir_externa
3beb0 6c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 54  l.    variable T
3bec0 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 0a 20  imeMeasureData. 
3bed0 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75     variable debu
3bee0 67 67 65 72 73 74 61 74 65 0a 20 20 20 20 76 61  ggerstate.    va
3bef0 72 69 61 62 6c 65 20 64 65 73 63 6d 65 6e 75 0a  riable descmenu.
3bf00 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e      variable pan
3bf10 65 31 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  e1.    variable 
3bf20 70 61 6e 65 32 0a 20 20 20 20 76 61 72 69 61 62  pane2.    variab
3bf30 6c 65 20 70 61 6e 65 33 0a 20 20 20 20 76 61 72  le pane3.    var
3bf40 69 61 62 6c 65 20 69 73 77 69 6e 63 65 0a 0a 20  iable iswince.. 
3bf50 20 20 20 69 66 20 7b 20 21 24 69 73 77 69 6e 63     if { !$iswinc
3bf60 65 20 7d 20 7b 0a 09 70 72 6f 63 20 3a 3a 62 67  e } {..proc ::bg
3bf70 65 72 72 6f 72 20 7b 20 65 72 72 73 74 72 69 6e  error { errstrin
3bf80 67 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20  g } {..    if { 
3bf90 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 52  [info commands R
3bfa0 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74  amDebugger::Text
3bfb0 4f 75 74 52 61 69 73 65 5d 20 21 3d 20 22 22 20  OutRaise] != "" 
3bfc0 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 67 67 65  } {...RamDebugge
3bfd0 72 3a 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a  r::TextOutRaise.
3bfe0 09 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54  ..RamDebugger::T
3bff0 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20  extOutInsertRed 
3c000 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 45 52  "-------------ER
3c010 52 4f 52 20 46 52 4f 4d 20 52 41 4d 44 45 42 55  ROR FROM RAMDEBU
3c020 47 47 45 52 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c  GGER-----------\
3c030 6e 22 0a 09 09 52 61 6d 44 65 62 75 67 67 65 72  n"...RamDebugger
3c040 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52  ::TextOutInsertR
3c050 65 64 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a  ed $::errorInfo.
3c060 09 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54  ..RamDebugger::T
3c070 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20  extOutInsertRed 
3c080 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  "---------------
3c090 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c0a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c  ---------------\
3c0b0 6e 22 0a 09 09 57 61 72 6e 57 69 6e 20 24 65 72  n"...WarnWin $er
3c0c0 72 73 74 72 69 6e 67 0a 09 20 20 20 20 7d 20 65  rstring..    } e
3c0d0 6c 73 65 20 7b 20 70 75 74 73 20 22 24 65 72 72  lse { puts "$err
3c0e0 73 74 72 69 6e 67 20 28 24 3a 3a 65 72 72 6f 72  string ($::error
3c0f0 49 6e 66 6f 29 22 20 7d 0a 09 7d 0a 20 20 20 20  Info)" }..}.    
3c100 7d 20 65 6c 73 65 20 7b 0a 09 53 70 6c 61 73 68  } else {..Splash
3c110 0a 09 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
3c120 65 20 68 65 5f 64 69 61 6c 6f 67 0a 09 70 61 63  e he_dialog..pac
3c130 6b 61 67 65 20 72 65 71 75 69 72 65 20 77 63 65  kage require wce
3c140 0a 20 20 20 20 7d 0a 20 20 20 20 23 20 64 69 72  .    }.    # dir
3c150 74 79 20 74 72 69 63 6b 20 74 6f 20 61 76 6f 69  ty trick to avoi
3c160 64 20 63 6f 6e 66 6c 69 63 74 73 20 77 69 74 68  d conflicts with
3c170 20 6f 74 68 65 72 20 62 77 69 64 67 65 74 20 70   other bwidget p
3c180 61 63 6b 61 67 65 73 0a 20 20 20 20 23 20 6f 6e  ackages.    # on
3c190 6c 79 20 6e 65 63 65 73 73 61 72 79 20 77 68 65  ly necessary whe
3c1a0 6e 20 77 6f 72 6b 69 6e 67 20 69 6e 73 69 64 65  n working inside
3c1b0 20 61 20 6d 61 73 74 65 72 0a 20 20 20 20 23 61   a master.    #a
3c1c0 75 74 6f 5f 6c 6f 61 64 20 43 6f 6d 62 6f 42 6f  uto_load ComboBo
3c1d0 78 0a 0a 20 20 20 20 23 72 65 71 75 69 72 65 20  x..    #require 
3c1e0 42 57 69 64 67 65 74 52 2c 20 61 20 42 57 69 64  BWidgetR, a BWid
3c1f0 67 65 74 20 77 69 74 68 20 73 6f 6d 65 20 6d 6f  get with some mo
3c200 64 69 66 69 63 61 74 69 6f 6e 73 2c 20 6d 61 72  difications, mar
3c210 6b 65 64 20 77 69 74 68 20 52 41 4d 53 41 4e 0a  ked with RAMSAN.
3c220 20 20 20 20 23 69 6e 73 69 64 65 20 74 68 65 20      #inside the 
3c230 47 69 44 20 73 63 72 69 70 74 73 20 42 57 69 64  GiD scripts BWid
3c240 67 65 74 20 69 73 20 72 65 61 6c 6c 79 20 42 57  get is really BW
3c250 69 64 67 65 74 52 2c 20 74 6f 20 61 76 6f 69 64  idgetR, to avoid
3c260 20 64 75 70 6c 69 63 61 74 65 20 69 74 0a 20 20   duplicate it.  
3c270 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 7b 70    if { [catch {p
3c280 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 42  ackage require B
3c290 57 69 64 67 65 74 52 7d 5d 20 7d 20 7b 0a 09 70  WidgetR}] } {..p
3c2a0 75 74 73 20 22 63 6f 75 6c 64 20 6e 6f 74 20 6c  uts "could not l
3c2b0 6f 61 64 20 70 61 63 6b 61 67 65 20 42 57 69 64  oad package BWid
3c2c0 67 65 74 52 2e 20 4c 6f 61 64 69 6e 67 20 70 61  getR. Loading pa
3c2d0 63 6b 61 67 65 20 42 57 69 64 67 65 74 2e 20 53  ckage BWidget. S
3c2e0 6f 6d 65 20 70 72 6f 62 6c 65 6d 73 20 77 69 74  ome problems wit
3c2f0 68 20 61 63 63 65 6c 65 72 61 74 6f 72 73 20 6d  h accelerators m
3c300 61 79 20 61 70 70 65 61 72 2c 20 73 70 65 63 69  ay appear, speci
3c310 61 6c 6c 79 20 6f 6e 20 4d 61 63 4f 53 58 22 0a  ally on MacOSX".
3c320 09 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  .package require
3c330 20 42 57 69 64 67 65 74 0a 20 20 20 20 7d 0a 20   BWidget.    }. 
3c340 20 20 0a 20 20 20 20 23 20 64 69 72 74 79 20 74    .    # dirty t
3c350 72 69 63 6b 20 74 6f 20 61 76 6f 69 64 20 63 6f  rick to avoid co
3c360 6e 66 6c 69 63 74 73 20 77 69 74 68 20 6f 74 68  nflicts with oth
3c370 65 72 20 62 77 69 64 67 65 74 20 70 61 63 6b 61  er bwidget packa
3c380 67 65 73 0a 20 20 20 20 61 75 74 6f 5f 6c 6f 61  ges.    auto_loa
3c390 64 20 43 6f 6d 62 6f 42 6f 78 0a 20 20 20 20 70  d ComboBox.    p
3c3a0 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73  ackage require s
3c3b0 75 70 65 72 67 72 69 64 0a 20 20 20 20 70 61 63  upergrid.    pac
3c3c0 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 75 70  kage require sup
3c3d0 65 72 74 65 78 74 0a 20 20 20 20 70 61 63 6b 61  ertext.    packa
3c3e0 67 65 20 72 65 71 75 69 72 65 20 64 69 61 6c 6f  ge require dialo
3c3f0 67 77 69 6e 0a 20 20 20 20 70 61 63 6b 61 67 65  gwin.    package
3c400 20 72 65 71 75 69 72 65 20 74 65 78 74 75 74 69   require textuti
3c410 6c 0a 20 20 20 20 70 61 63 6b 61 67 65 20 72 65  l.    package re
3c420 71 75 69 72 65 20 74 6f 6f 6c 74 69 70 0a 20 20  quire tooltip.  
3c430 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72    package requir
3c440 65 20 69 6d 67 3a 3a 70 6e 67 0a 20 20 20 20 0a  e img::png.    .
3c450 20 20 20 20 69 66 20 7b 20 21 5b 63 61 74 63 68      if { ![catch
3c460 20 7b 20 70 61 63 6b 61 67 65 20 76 63 6f 6d 70   { package vcomp
3c470 61 72 65 20 5b 70 61 63 6b 61 67 65 20 70 72 6f  are [package pro
3c480 76 69 64 65 20 54 6b 5d 20 38 2e 35 20 7d 20 72  vide Tk] 8.5 } r
3c490 65 74 5d 20 26 26 20 24 72 65 74 20 3c 20 30 7d  et] && $ret < 0}
3c4a0 20 7b 0a 09 69 6e 74 65 72 70 20 61 6c 69 61 73   {..interp alias
3c4b0 20 22 22 20 74 74 6b 3a 3a 73 74 79 6c 65 20 22   "" ttk::style "
3c4c0 22 20 73 74 79 6c 65 0a 20 20 20 20 7d 0a 20 20  " style.    }.  
3c4d0 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69    if { [info exi
3c4e0 73 74 73 20 3a 3a 69 73 70 6f 63 6b 65 74 5d 20  sts ::ispocket] 
3c4f0 7d 20 7b 0a 09 73 65 74 20 69 73 70 6f 63 6b 65  } {..set ispocke
3c500 74 20 24 3a 3a 69 73 70 6f 63 6b 65 74 0a 20 20  t $::ispocket.  
3c510 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 3a 3a    } elseif { $::
3c520 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 29  tcl_platform(os)
3c530 20 65 71 20 22 57 69 6e 64 6f 77 73 20 43 45 22   eq "Windows CE"
3c540 20 7d 20 7b 0a 09 73 65 74 20 69 73 70 6f 63 6b   } {..set ispock
3c550 65 74 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 20  et 1.    } else 
3c560 7b 0a 09 73 65 74 20 69 73 70 6f 63 6b 65 74 20  {..set ispocket 
3c570 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b  0.    }.    if {
3c580 20 5b 74 6b 20 77 69 6e 64 6f 77 69 6e 67 73 79   [tk windowingsy
3c590 73 74 65 6d 5d 20 65 71 20 22 78 31 31 22 20 7c  stem] eq "x11" |
3c5a0 7c 20 24 69 73 70 6f 63 6b 65 74 20 7d 20 7b 0a  | $ispocket } {.
3c5b0 09 74 74 6b 3a 3a 73 74 79 6c 65 20 74 68 65 6d  .ttk::style them
3c5c0 65 20 75 73 65 20 63 6c 61 6d 0a 09 74 74 6b 3a  e use clam..ttk:
3c5d0 3a 73 74 79 6c 65 20 74 68 65 6d 65 20 73 65 74  :style theme set
3c5e0 74 69 6e 67 73 20 63 6c 61 6d 20 7b 0a 09 20 20  tings clam {..  
3c5f0 20 20 74 74 6b 3a 3a 73 74 79 6c 65 20 63 6f 6e    ttk::style con
3c600 66 69 67 75 72 65 20 54 42 75 74 74 6f 6e 20 2d  figure TButton -
3c610 70 61 64 64 69 6e 67 20 31 0a 09 20 20 20 20 74  padding 1..    t
3c620 74 6b 3a 3a 73 74 79 6c 65 20 63 6f 6e 66 69 67  tk::style config
3c630 75 72 65 20 54 4d 65 6e 75 62 75 74 74 6f 6e 20  ure TMenubutton 
3c640 2d 70 61 64 64 69 6e 67 20 31 0a 09 20 20 20 20  -padding 1..    
3c650 74 74 6b 3a 3a 73 74 79 6c 65 20 6d 61 70 20 54  ttk::style map T
3c660 6f 6f 6c 62 75 74 74 6f 6e 20 2d 62 61 63 6b 67  oolbutton -backg
3c670 72 6f 75 6e 64 20 22 66 6f 63 75 73 20 67 72 65  round "focus gre
3c680 79 20 5b 74 74 6b 3a 3a 73 74 79 6c 65 20 6d 61  y [ttk::style ma
3c690 70 20 54 6f 6f 6c 62 75 74 74 6f 6e 20 2d 62 61  p Toolbutton -ba
3c6a0 63 6b 67 72 6f 75 6e 64 5d 22 0a 09 7d 0a 09 0a  ckground]"..}...
3c6b0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 63 61      } else {..ca
3c6c0 74 63 68 20 7b 0a 09 20 20 20 20 74 74 6b 3a 3a  tch {..    ttk::
3c6d0 73 74 79 6c 65 20 74 68 65 6d 65 20 73 65 74 74  style theme sett
3c6e0 69 6e 67 73 20 77 69 6e 6e 61 74 69 76 65 20 7b  ings winnative {
3c6f0 0a 09 09 74 74 6b 3a 3a 73 74 79 6c 65 20 63 6f  ...ttk::style co
3c700 6e 66 69 67 75 72 65 20 54 6f 6f 6c 62 75 74 74  nfigure Toolbutt
3c710 6f 6e 20 2d 70 61 64 64 69 6e 67 20 31 0a 09 20  on -padding 1.. 
3c720 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20     }..}.    }.  
3c730 20 20 23 6e 65 65 64 65 64 20 61 20 63 61 74 63    #needed a catc
3c740 68 20 66 6f 72 20 77 69 6e 63 65 0a 20 20 20 20  h for wince.    
3c750 63 61 74 63 68 20 7b 20 70 61 63 6b 61 67 65 20  catch { package 
3c760 72 65 71 75 69 72 65 20 74 6b 64 6e 64 20 7d 20  require tkdnd } 
3c770 3b 23 20 6f 6e 6c 79 20 69 66 20 69 74 20 69 73  ;# only if it is
3c780 20 63 6f 6d 70 69 6c 65 64 0a 20 20 20 20 70 61   compiled.    pa
3c790 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 66 75  ckage require fu
3c7a0 6c 6c 74 6b 74 72 65 65 0a 0a 20 20 20 20 69 66  lltktree..    if
3c7b0 20 7b 20 5b 70 61 63 6b 61 67 65 20 76 63 6f 6d   { [package vcom
3c7c0 70 61 72 65 20 5b 70 61 63 6b 61 67 65 20 70 72  pare [package pr
3c7d0 65 73 65 6e 74 20 54 63 6c 5d 20 38 2e 35 5d 20  esent Tcl] 8.5] 
3c7e0 3e 3d 20 30 20 7d 20 7b 0a 09 6f 70 74 69 6f 6e  >= 0 } {..option
3c7f0 20 61 64 64 20 2a 50 61 6e 65 64 77 69 6e 64 6f   add *Panedwindo
3c800 77 2e 53 74 72 65 74 63 68 20 61 6c 77 61 79 73  w.Stretch always
3c810 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 62  .    } else {..b
3c820 69 6e 64 20 50 61 6e 65 64 77 69 6e 64 6f 77 20  ind Panedwindow 
3c830 3c 43 6f 6e 66 69 67 75 72 65 3e 20 5b 6c 69 73  <Configure> [lis
3c840 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52  t RamDebugger::R
3c850 65 73 69 7a 65 50 61 6e 65 64 57 69 6e 64 6f 77  esizePanedWindow
3c860 20 25 57 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20   %W].    }..    
3c870 43 72 65 61 74 65 49 6d 61 67 65 73 0a 20 20 20  CreateImages.   
3c880 20 54 6b 42 61 63 6b 43 6f 6d 70 61 74 69 62 69   TkBackCompatibi
3c890 6c 69 74 79 0a 20 20 20 20 43 72 65 61 74 65 4d  lity.    CreateM
3c8a0 6f 64 69 66 79 46 6f 6e 74 73 0a 20 20 20 20 49  odifyFonts.    I
3c8b0 6e 69 74 4f 70 74 69 6f 6e 73 0a 20 20 20 20 0a  nitOptions.    .
3c8c0 20 20 20 20 73 65 74 20 74 6b 74 61 62 6c 65 74      set tktablet
3c8d0 5f 6f 6b 20 5b 65 78 70 72 20 7b 21 5b 63 61 74  _ok [expr {![cat
3c8e0 63 68 20 7b 20 70 61 63 6b 61 67 65 20 72 65 71  ch { package req
3c8f0 75 69 72 65 20 74 6b 74 61 62 6c 65 74 20 7d 5d  uire tktablet }]
3c900 7d 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a  }]..    if { $::
3c910 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 29  tcl_platform(os)
3c920 20 65 71 20 22 44 61 72 77 69 6e 22 20 7d 20 7b   eq "Darwin" } {
3c930 0a 09 73 65 74 20 74 6b 74 61 62 6c 65 74 5f 6f  ..set tktablet_o
3c940 6b 20 30 20 0a 20 20 20 20 7d 0a 20 20 20 20 0a  k 0 .    }.    .
3c950 20 20 20 20 69 66 20 7b 20 21 24 69 73 77 69 6e      if { !$iswin
3c960 63 65 20 26 26 20 24 74 6b 74 61 62 6c 65 74 5f  ce && $tktablet_
3c970 6f 6b 20 26 26 20 5b 69 6e 66 6f 20 63 6f 6d 6d  ok && [info comm
3c980 61 6e 64 73 20 3a 3a 74 6b 74 61 62 6c 65 74 3a  ands ::tktablet:
3c990 3a 69 6e 69 74 5f 69 6e 70 75 74 5f 70 61 6e 65  :init_input_pane
3c9a0 6c 5d 20 6e 65 20 22 22 20 7d 20 7b 0a 09 74 6b  l] ne "" } {..tk
3c9b0 74 61 62 6c 65 74 3a 3a 69 6e 69 74 5f 69 6e 70  tablet::init_inp
3c9c0 75 74 5f 70 61 6e 65 6c 0a 09 74 6b 74 61 62 6c  ut_panel..tktabl
3c9d0 65 74 3a 3a 69 6e 69 74 5f 69 6e 70 75 74 5f 70  et::init_input_p
3c9e0 61 6e 65 6c 5f 74 65 78 74 0a 20 20 20 20 7d 0a  anel_text.    }.
3c9f0 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e 63      if { $iswinc
3ca00 65 20 7d 20 7b 20 70 6f 63 6b 65 74 70 63 3a 3a  e } { pocketpc::
3ca10 69 6e 69 74 20 7d 0a 0a 20 20 20 20 69 66 20 7b  init }..    if {
3ca20 20 24 74 6f 70 6c 65 76 65 6c 75 73 65 20 3d 3d   $topleveluse ==
3ca30 20 22 22 20 7d 20 7b 0a 09 74 6f 70 6c 65 76 65   "" } {..topleve
3ca40 6c 20 24 77 20 2d 63 6c 61 73 73 20 52 61 6d 44  l $w -class RamD
3ca50 65 62 75 67 67 65 72 0a 20 20 20 20 7d 20 65 6c  ebugger.    } el
3ca60 73 65 20 7b 0a 09 74 6f 70 6c 65 76 65 6c 20 24  se {..toplevel $
3ca70 77 20 2d 75 73 65 20 24 74 6f 70 6c 65 76 65 6c  w -use $toplevel
3ca80 75 73 65 0a 09 75 70 64 61 74 65 20 69 64 6c 65  use..update idle
3ca90 74 61 73 6b 73 20 3b 23 20 64 6f 65 73 6e 27 74  tasks ;# doesn't
3caa0 20 77 6f 72 6b 20 69 66 20 74 68 69 73 20 69 73   work if this is
3cab0 20 72 65 6d 6f 76 65 64 3b 20 64 6f 65 73 20 6e   removed; does n
3cac0 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 69 74 20  ot work with it 
3cad0 65 69 74 68 65 72 0a 20 20 20 20 7d 0a 20 20 20  either.    }.   
3cae0 20 69 66 20 7b 20 24 74 6f 70 6c 65 76 65 6c 75   if { $toplevelu
3caf0 73 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 77 6d  se == "" } {..wm
3cb00 20 77 69 74 68 64 72 61 77 20 24 77 0a 09 77 6d   withdraw $w..wm
3cb10 20 67 65 6f 6d 20 24 77 20 38 30 30 78 36 30 30   geom $w 800x600
3cb20 2b 30 2b 30 0a 20 20 20 20 7d 20 65 6c 73 65 20  +0+0.    } else 
3cb30 7b 20 75 70 64 61 74 65 20 7d 0a 0a 20 20 20 20  { update }..    
3cb40 77 6d 20 74 69 74 6c 65 20 24 77 20 52 61 6d 44  wm title $w RamD
3cb50 65 62 75 67 67 65 72 0a 20 20 20 20 77 6d 20 70  ebugger.    wm p
3cb60 72 6f 74 6f 63 6f 6c 20 24 77 20 57 4d 5f 44 45  rotocol $w WM_DE
3cb70 4c 45 54 45 5f 57 49 4e 44 4f 57 20 22 52 61 6d  LETE_WINDOW "Ram
3cb80 44 65 62 75 67 67 65 72 3a 3a 45 78 69 74 47 55  Debugger::ExitGU
3cb90 49 22 0a 20 20 20 20 23 20 41 70 70 6c 79 44 72  I".    # ApplyDr
3cba0 6f 70 42 69 6e 64 69 6e 67 20 24 77 20 5b 6c 69  opBinding $w [li
3cbb0 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  st RamDebugger::
3cbc0 44 72 6f 70 42 69 6e 64 69 6e 67 44 6f 6e 65 20  DropBindingDone 
3cbd0 25 44 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74  %D].    .    set
3cbe0 20 64 65 73 63 6d 65 6e 75 20 22 22 0a 20 20 20   descmenu "".   
3cbf0 20 69 66 20 7b 20 5b 20 74 6b 20 77 69 6e 64 6f   if { [ tk windo
3cc00 77 69 6e 67 73 79 73 74 65 6d 5d 20 65 71 20 22  wingsystem] eq "
3cc10 61 71 75 61 22 7d 20 7b 0a 09 70 72 6f 63 20 3a  aqua"} {..proc :
3cc20 3a 74 6b 3a 3a 6d 61 63 3a 3a 53 68 6f 77 50 72  :tk::mac::ShowPr
3cc30 65 66 65 72 65 6e 63 65 73 20 7b 7d 20 7b 0a 09  eferences {} {..
3cc40 20 20 20 20 61 66 74 65 72 20 69 64 6c 65 20 52      after idle R
3cc50 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 72 65 66  amDebugger::Pref
3cc60 65 72 65 6e 63 65 73 57 69 6e 64 6f 77 0a 09 7d  erencesWindow..}
3cc70 0a 23 20 20 20 20 20 20 20 20 20 70 72 6f 63 20  .#         proc 
3cc80 3a 3a 74 6b 41 62 6f 75 74 44 69 61 6c 6f 67 20  ::tkAboutDialog 
3cc90 7b 7d 20 7b 0a 23 20 20 20 20 20 20 20 20 20 20  {} {.#          
3cca0 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a     RamDebugger::
3ccb0 41 62 6f 75 74 57 69 6e 64 6f 77 0a 23 20 20 20  AboutWindow.#   
3ccc0 20 20 20 20 20 20 7d 0a 09 6c 61 70 70 65 6e 64        }..lappend
3ccd0 20 64 65 73 63 6d 65 6e 75 20 5c 0a 09 20 20 20   descmenu \..   
3cce0 20 52 61 6d 64 65 62 75 67 67 65 72 20 61 6c 6c   Ramdebugger all
3ccf0 20 61 70 70 6c 65 20 30 20 5b 6c 69 73 74 20 5c   apple 0 [list \
3cd00 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64  ...[list command
3cd10 20 5b 5f 20 22 41 62 6f 75 74 20 52 61 6d 64 65   [_ "About Ramde
3cd20 62 75 67 67 65 72 22 5d 20 7b 7d 20 5b 5f 20 22  bugger"] {} [_ "
3cd30 41 62 6f 75 74 22 5d 20 22 22 20 5c 0a 09 09 20  About"] "" \... 
3cd40 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d     -command "Ram
3cd50 44 65 62 75 67 67 65 72 3a 3a 41 62 6f 75 74 57  Debugger::AboutW
3cd60 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5d 0a 20 20  indow"] \...].  
3cd70 20 20 7d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20    }.    lappend 
3cd80 64 65 73 63 6d 65 6e 75 20 5c 0a 09 09 26 5b 5f  descmenu \...&[_
3cd90 20 22 46 69 6c 65 22 5d 20 61 6c 6c 20 66 69 6c   "File"] all fil
3cda0 65 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c  e 0 [list \...[l
3cdb0 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3cdc0 22 4e 65 77 22 5d 20 7b 7d 20 5b 5f 20 22 42 65  "New"] {} [_ "Be
3cdd0 67 69 6e 20 6e 65 77 20 66 69 6c 65 22 5d 20 22  gin new file"] "
3cde0 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22  " \...-command "
3cdf0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4e 65 77  RamDebugger::New
3ce00 46 69 6c 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74  File"] \...[list
3ce10 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 4f 70   command &[_ "Op
3ce20 65 6e 22 5d 20 7b 7d 20 5b 5f 20 22 53 65 6c 65  en"] {} [_ "Sele
3ce30 63 74 20 73 6f 75 72 63 65 20 66 69 6c 65 22 5d  ct source file"]
3ce40 20 22 43 74 72 6c 20 6f 22 20 5c 0a 09 09 2d 63   "Ctrl o" \...-c
3ce50 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3ce60 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 22 5d 20  ger::OpenFile"] 
3ce70 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3ce80 64 20 5b 5f 20 22 4f 70 65 6e 20 28 4e 65 77 20  d [_ "Open (New 
3ce90 77 69 6e 29 22 5d 20 7b 7d 20 5b 5f 20 22 4f 70  win)"] {} [_ "Op
3cea0 65 6e 20 6e 65 77 20 77 69 6e 64 6f 77 20 61 6e  en new window an
3ceb0 64 20 73 65 6c 65 63 74 20 73 6f 75 72 63 65 20  d select source 
3cec0 66 69 6c 65 22 5d 20 22 53 68 69 66 74 43 74 72  file"] "ShiftCtr
3ced0 6c 20 6f 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e  l o" \...-comman
3cee0 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  d "RamDebugger::
3cef0 4f 70 65 6e 46 69 6c 65 49 6e 4e 65 77 57 69 6e  OpenFileInNewWin
3cf00 64 6f 77 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20  dow"] \...[list 
3cf10 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 53 61 76  command &[_ "Sav
3cf20 65 22 5d 20 7b 7d 20 5b 5f 20 22 53 61 76 65 20  e"] {} [_ "Save 
3cf30 66 69 6c 65 22 5d 20 22 43 74 72 6c 20 73 22 20  file"] "Ctrl s" 
3cf40 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61  \...-command "Ra
3cf50 6d 44 65 62 75 67 67 65 72 3a 3a 53 61 76 65 46  mDebugger::SaveF
3cf60 69 6c 65 20 73 61 76 65 22 5d 20 5c 0a 09 09 5b  ile save"] \...[
3cf70 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20  list command [_ 
3cf80 22 53 61 76 65 20 26 61 73 22 5d 20 7b 7d 20 5b  "Save &as"] {} [
3cf90 5f 20 22 53 61 76 65 20 66 69 6c 65 20 61 73 22  _ "Save file as"
3cfa0 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e  ] "" \...-comman
3cfb0 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  d "RamDebugger::
3cfc0 53 61 76 65 46 69 6c 65 20 73 61 76 65 61 73 22  SaveFile saveas"
3cfd0 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  ] \...[list comm
3cfe0 61 6e 64 20 26 5b 5f 20 22 43 6c 6f 73 65 22 5d  and &[_ "Close"]
3cff0 20 7b 7d 20 5b 5f 20 22 43 6c 6f 73 65 20 63 75   {} [_ "Close cu
3d000 72 72 65 6e 74 20 66 69 6c 65 22 5d 20 22 43 74  rrent file"] "Ct
3d010 72 6c 20 46 34 22 20 5c 0a 09 09 2d 63 6f 6d 6d  rl F4" \...-comm
3d020 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72  and "RamDebugger
3d030 3a 3a 43 6c 6f 73 65 46 69 6c 65 22 5d 20 5c 0a  ::CloseFile"] \.
3d040 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09  ..separator \...
3d050 5b 6c 69 73 74 20 63 61 73 63 61 64 20 26 5b 5f  [list cascad &[_
3d060 20 22 44 65 62 75 67 20 6f 6e 22 5d 20 7b 7d 20   "Debug on"] {} 
3d070 61 63 74 69 76 65 70 72 6f 67 72 61 6d 73 20 30  activeprograms 0
3d080 20 7b 7d 5d 20 5c 0a 09 09 73 65 70 61 72 61 74   {}] \...separat
3d090 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 61 73  or \...[list cas
3d0a0 63 61 64 20 26 5b 5f 20 22 52 65 76 69 73 69 6f  cad &[_ "Revisio
3d0b0 6e 73 22 5d 20 7b 7d 20 72 65 76 69 73 69 6f 6e  ns"] {} revision
3d0c0 73 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c  s 0 [list \...[l
3d0d0 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3d0e0 22 53 61 76 65 20 72 65 76 69 73 69 6f 6e 22 5d  "Save revision"]
3d0f0 20 7b 7d 20 5b 5f 20 22 53 61 76 65 73 20 61 20   {} [_ "Saves a 
3d100 72 65 76 69 73 69 6f 6e 20 6f 66 20 74 68 65 20  revision of the 
3d110 66 69 6c 65 22 5d 20 22 53 68 69 66 74 43 74 72  file"] "ShiftCtr
3d120 6c 20 73 22 20 5c 0a 09 09 20 20 20 20 20 20 20  l s" \...       
3d130 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65   -command "RamDe
3d140 62 75 67 67 65 72 3a 3a 43 56 53 3a 3a 53 61 76  bugger::CVS::Sav
3d150 65 52 65 76 69 73 69 6f 6e 22 5d 20 5c 0a 09 09  eRevision"] \...
3d160 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b  [list command &[
3d170 5f 20 22 4f 70 65 6e 20 72 65 76 69 73 69 6f 6e  _ "Open revision
3d180 73 20 6c 69 73 74 22 5d 20 7b 7d 20 5b 5f 20 22  s list"] {} [_ "
3d190 4f 70 65 6e 20 72 65 76 69 73 69 6f 6e 73 20 6c  Open revisions l
3d1a0 69 73 74 20 66 6f 72 20 63 75 72 72 65 6e 74 20  ist for current 
3d1b0 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 09 20 20  file"] "" \...  
3d1c0 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22        -command "
3d1d0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 56 53  RamDebugger::CVS
3d1e0 3a 3a 4f 70 65 6e 52 65 76 69 73 69 6f 6e 73 22  ::OpenRevisions"
3d1f0 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20  ] \...separator 
3d200 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3d210 64 20 26 5b 5f 20 22 56 69 65 77 20 72 65 76 69  d &[_ "View revi
3d220 73 65 64 20 66 69 6c 65 73 22 5d 20 7b 7d 20 5c  sed files"] {} \
3d230 0a 09 09 20 20 20 20 20 5b 5f 20 22 56 69 65 77  ...     [_ "View
3d240 20 61 6c 6c 20 66 69 6c 65 73 20 75 6e 64 65 72   all files under
3d250 20 72 65 76 69 73 69 6f 6e 20 63 6f 6e 74 72 6f   revision contro
3d260 6c 22 5d 20 22 22 20 5c 0a 09 09 20 20 20 20 20  l"] "" \...     
3d270 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62  -command "RamDeb
3d280 75 67 67 65 72 3a 3a 43 56 53 3a 3a 53 68 6f 77  ugger::CVS::Show
3d290 41 6c 6c 46 69 6c 65 73 22 5d 20 5c 0a 09 09 20  AllFiles"] \... 
3d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d2c0 20 20 20 20 20 20 20 20 20 20 20 20 5d 5d 20 5c              ]] \
3d2d0 0a 09 09 5b 6c 69 73 74 20 63 61 73 63 61 64 20  ...[list cascad 
3d2e0 26 5b 5f 20 22 52 65 63 65 6e 74 20 66 69 6c 65  &[_ "Recent file
3d2f0 73 22 5d 20 7b 7d 20 72 65 63 65 6e 74 66 69 6c  s"] {} recentfil
3d300 65 73 20 30 20 7b 7d 5d 20 5c 0a 09 09 73 65 70  es 0 {}] \...sep
3d310 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74  arator \...[list
3d320 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 51 75   command &[_ "Qu
3d330 69 74 22 5d 20 7b 7d 20 5b 5f 20 22 45 78 69 74  it"] {} [_ "Exit
3d340 20 70 72 6f 67 72 61 6d 22 5d 20 22 43 74 72 6c   program"] "Ctrl
3d350 20 71 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64   q" \...-command
3d360 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 78   RamDebugger::Ex
3d370 69 74 47 55 49 5d 20 5c 0a 09 09 5d 20 5c 0a 09  itGUI] \...] \..
3d380 09 26 5b 5f 20 22 45 64 69 74 22 5d 20 61 6c 6c  .&[_ "Edit"] all
3d390 20 65 64 69 74 20 30 20 5b 6c 69 73 74 20 5c 0a   edit 0 [list \.
3d3a0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
3d3b0 26 5b 5f 20 22 55 6e 64 6f 22 5d 20 7b 7d 20 5b  &[_ "Undo"] {} [
3d3c0 5f 20 22 55 6e 64 6f 20 70 72 65 76 69 6f 75 73  _ "Undo previous
3d3d0 20 69 6e 73 65 72 74 2f 64 65 6c 65 74 65 20 6f   insert/delete o
3d3e0 70 65 72 61 74 69 6f 6e 22 5d 20 22 43 74 72 6c  peration"] "Ctrl
3d3f0 20 7a 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64   z" \...-command
3d400 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43   "RamDebugger::C
3d410 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20  utCopyPasteText 
3d420 75 6e 64 6f 22 5d 20 5c 0a 09 09 73 65 70 61 72  undo"] \...separ
3d430 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63  ator \...[list c
3d440 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 43 75 74 22  ommand &[_ "Cut"
3d450 5d 20 7b 7d 20 5b 5f 20 22 43 75 74 20 73 65 6c  ] {} [_ "Cut sel
3d460 65 63 74 65 64 20 74 65 78 74 20 74 6f 20 63 6c  ected text to cl
3d470 69 70 62 6f 61 72 64 22 5d 20 22 43 74 72 6c 20  ipboard"] "Ctrl 
3d480 78 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  x" \...-command 
3d490 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75  "RamDebugger::Cu
3d4a0 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 63  tCopyPasteText c
3d4b0 75 74 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  ut"] \...[list c
3d4c0 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43 26 6f 70 79  ommand [_ "C&opy
3d4d0 22 5d 20 7b 7d 20 5b 5f 20 22 43 6f 70 79 20 73  "] {} [_ "Copy s
3d4e0 65 6c 65 63 74 65 64 20 74 65 78 74 20 74 6f 20  elected text to 
3d4f0 63 6c 69 70 62 6f 61 72 64 22 5d 20 22 43 74 72  clipboard"] "Ctr
3d500 6c 20 63 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e  l c" \...-comman
3d510 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  d "RamDebugger::
3d520 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 74  CutCopyPasteText
3d530 20 63 6f 70 79 22 5d 20 5c 0a 09 09 5b 6c 69 73   copy"] \...[lis
3d540 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 50  t command &[_ "P
3d550 61 73 74 65 22 5d 20 7b 7d 20 5b 5f 20 22 50 61  aste"] {} [_ "Pa
3d560 73 74 65 20 74 65 78 74 20 66 72 6f 6d 20 63 6c  ste text from cl
3d570 69 70 62 6f 61 72 64 22 5d 20 22 43 74 72 6c 20  ipboard"] "Ctrl 
3d580 76 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  v" \...-command 
3d590 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75  "RamDebugger::Cu
3d5a0 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 70  tCopyPasteText p
3d5b0 61 73 74 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74  aste"] \...[list
3d5c0 20 63 6f 6d 6d 61 6e 64 20 22 26 50 61 73 74 65   command "&Paste
3d5d0 20 73 74 61 63 6b 22 20 7b 7d 20 22 50 61 73 74   stack" {} "Past
3d5e0 20 74 65 78 74 20 66 72 6f 6d 20 70 72 65 76 69   text from previ
3d5f0 6f 75 73 20 70 61 73 74 65 73 22 20 22 53 68 69  ous pastes" "Shi
3d600 66 74 43 74 72 6c 20 76 22 20 5c 0a 09 09 2d 63  ftCtrl v" \...-c
3d610 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3d620 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 74  ger::CutCopyPast
3d630 65 54 65 78 74 20 70 61 73 74 65 5f 73 74 61 63  eText paste_stac
3d640 6b 22 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f  k"] \...separato
3d650 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 61 73 63  r \...[list casc
3d660 61 64 20 26 5b 5f 20 22 41 64 76 61 6e 63 65 64  ad &[_ "Advanced
3d670 22 5d 20 7b 7d 20 65 64 69 74 61 64 76 61 6e 63  "] {} editadvanc
3d680 65 64 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 20  ed 0 [list \... 
3d690 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64     [list command
3d6a0 20 26 5b 5f 20 22 49 6e 64 65 6e 74 20 72 65 67   &[_ "Indent reg
3d6b0 69 6f 6e 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 64  ion"] {} [_ "Ind
3d6c0 65 6e 74 20 73 65 6c 65 63 74 65 64 20 72 65 67  ent selected reg
3d6d0 69 6f 6e 20 6f 72 20 6c 69 6e 65 22 5d 20 22 50  ion or line"] "P
3d6e0 72 69 6e 74 20 54 61 62 22 20 5c 0a 09 09 20 20  rint Tab" \...  
3d6f0 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22        -command "
3d700 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 64  RamDebugger::Ind
3d710 65 6e 74 22 5d 20 5c 0a 09 09 20 20 20 20 5b 6c  ent"] \...    [l
3d720 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3d730 22 43 6f 6d 6d 65 6e 74 20 72 65 67 69 6f 6e 22  "Comment region"
3d740 5d 20 7b 7d 20 5b 5f 20 22 43 6f 6d 6d 65 6e 74  ] {} [_ "Comment
3d750 20 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f 6e   selected region
3d760 22 5d 20 22 46 36 22 20 5c 0a 09 09 20 20 20 20  "] "F6" \...    
3d770 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64          -command
3d780 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43   "RamDebugger::C
3d790 6f 6d 6d 65 6e 74 53 65 6c 65 63 74 69 6f 6e 20  ommentSelection 
3d7a0 74 6f 67 67 6c 65 22 5d 20 5c 0a 09 09 20 20 20  toggle"] \...   
3d7b0 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26   [list command &
3d7c0 5b 5f 20 22 55 6e 63 6f 6d 6d 65 6e 74 20 72 65  [_ "Uncomment re
3d7d0 67 69 6f 6e 22 5d 20 7b 7d 20 5b 5f 20 22 55 6e  gion"] {} [_ "Un
3d7e0 2d 63 6f 6d 6d 65 6e 74 20 73 65 6c 65 63 74 65  -comment selecte
3d7f0 64 20 72 65 67 69 6f 6e 22 5d 20 22 53 68 69 66  d region"] "Shif
3d800 74 20 46 36 22 20 5c 0a 09 09 20 20 20 20 20 20  t F6" \...      
3d810 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44    -command "RamD
3d820 65 62 75 67 67 65 72 3a 3a 43 6f 6d 6d 65 6e 74  ebugger::Comment
3d830 53 65 6c 65 63 74 69 6f 6e 20 6f 66 66 22 5d 20  Selection off"] 
3d840 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f  \...    [list co
3d850 6d 6d 61 6e 64 20 26 5b 5f 20 22 49 6e 73 65 72  mmand &[_ "Inser
3d860 74 20 62 72 61 63 65 73 2f 62 72 61 63 6b 65 74  t braces/bracket
3d870 73 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 73 65 72  s"] {} [_ "Inser
3d880 74 73 20 20 70 61 69 72 73 20 6f 66 20 62 72 61  ts  pairs of bra
3d890 63 6b 65 74 73 2c 20 62 72 61 63 65 73 20 6f 72  ckets, braces or
3d8a0 20 71 75 6f 74 65 73 22 5d 20 22 43 74 72 6c 20   quotes"] "Ctrl 
3d8b0 6c 65 73 73 22 20 5c 0a 09 09 20 20 20 20 20 20  less" \...      
3d8c0 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44    -command "RamD
3d8d0 65 62 75 67 67 65 72 3a 3a 69 6e 73 65 72 74 5f  ebugger::insert_
3d8e0 62 72 61 63 6b 65 74 73 5f 62 72 61 63 65 73 22  brackets_braces"
3d8f0 5d 20 5c 0a 09 09 20 20 20 20 73 65 70 61 72 61  ] \...    separa
3d900 74 6f 72 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73  tor \...    [lis
3d910 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43 65  t command [_ "Ce
3d920 6e 74 65 72 20 64 69 73 70 6c 61 79 22 5d 20 7b  nter display"] {
3d930 7d 20 5b 5f 20 22 43 65 6e 74 65 72 20 74 65 78  } [_ "Center tex
3d940 74 20 64 69 73 70 6c 61 79 22 5d 20 22 43 74 72  t display"] "Ctr
3d950 6c 20 6c 22 20 5c 0a 09 09 20 20 20 20 20 20 20  l l" \...       
3d960 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65   -command "RamDe
3d970 62 75 67 67 65 72 3a 3a 43 65 6e 74 65 72 44 69  bugger::CenterDi
3d980 73 70 6c 61 79 22 5d 20 5c 0a 09 09 20 20 20 20  splay"] \...    
3d990 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f  [list command [_
3d9a0 20 22 53 65 61 72 63 68 20 69 6e 20 66 69 6c 65   "Search in file
3d9b0 73 22 5d 20 7b 7d 20 5b 5f 20 22 53 65 61 72 63  s"] {} [_ "Searc
3d9c0 68 20 66 6f 72 20 70 61 74 74 65 72 6e 20 69 6e  h for pattern in
3d9d0 20 67 69 76 65 6e 20 66 69 6c 65 73 22 5d 20 5c   given files"] \
3d9e0 0a 09 09 20 20 20 20 22 53 68 69 66 74 43 74 72  ...    "ShiftCtr
3d9f0 6c 20 66 22 20 5c 0a 09 09 20 20 20 20 20 20 20  l f" \...       
3da00 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65   -command "RamDe
3da10 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68 49 6e  bugger::SearchIn
3da20 46 69 6c 65 73 22 5d 20 5c 0a 09 09 20 20 20 20  Files"] \...    
3da30 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 20 20  separator \...  
3da40 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20    [list command 
3da50 26 5b 5f 20 22 53 61 76 65 2f 63 6c 65 61 72 20  &[_ "Save/clear 
3da60 70 6f 73 69 74 69 6f 6e 22 5d 20 7b 7d 20 5c 0a  position"] {} \.
3da70 09 09 20 20 20 20 20 20 20 20 5b 5f 20 22 53 61  ..        [_ "Sa
3da80 76 65 20 70 6f 73 69 74 69 6f 6e 20 74 6f 20 73  ve position to s
3da90 74 61 63 6b 20 6f 72 20 63 6c 65 61 72 20 70 6f  tack or clear po
3daa0 73 69 74 69 6f 6e 22 5d 20 22 53 68 69 66 74 20  sition"] "Shift 
3dab0 46 32 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20  F2" \...        
3dac0 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62  -command "RamDeb
3dad0 75 67 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73  ugger::Positions
3dae0 53 74 61 63 6b 20 73 61 76 65 22 5d 20 5c 0a 09  Stack save"] \..
3daf0 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61  .    [list comma
3db00 6e 64 20 26 5b 5f 20 22 47 6f 20 74 6f 20 70 6f  nd &[_ "Go to po
3db10 73 69 74 69 6f 6e 22 5d 20 7b 7d 20 5b 5f 20 22  sition"] {} [_ "
3db20 52 65 63 6f 76 65 72 20 70 6f 73 69 74 69 6f 6e  Recover position
3db30 20 66 72 6f 6d 20 73 74 61 63 6b 22 5d 20 22 46   from stack"] "F
3db40 32 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d  2" \...        -
3db50 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3db60 67 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53  gger::PositionsS
3db70 74 61 63 6b 20 67 6f 22 5d 20 5c 0a 09 09 20 20  tack go"] \...  
3db80 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20    [list command 
3db90 26 5b 5f 20 22 44 69 73 70 6c 61 79 20 70 6f 73  &[_ "Display pos
3dba0 69 74 69 6f 6e 73 20 73 74 61 63 6b 22 5d 20 7b  itions stack"] {
3dbb0 7d 20 5b 5f 20 22 44 69 73 70 6c 61 79 20 70 6f  } [_ "Display po
3dbc0 73 69 74 69 6f 6e 73 20 73 74 61 63 6b 22 5d 20  sitions stack"] 
3dbd0 22 43 74 72 6c 20 46 32 22 20 5c 0a 09 09 20 20  "Ctrl F2" \...  
3dbe0 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22        -command "
3dbf0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73  RamDebugger::Dis
3dc00 70 6c 61 79 50 6f 73 69 74 69 6f 6e 73 53 74 61  playPositionsSta
3dc10 63 6b 22 5d 20 5c 0a 09 09 20 20 20 5d 20 5c 0a  ck"] \...   ] \.
3dc20 09 09 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 61  ..] \...[list ca
3dc30 73 63 61 64 20 26 5b 5f 20 22 4d 61 63 72 6f 73  scad &[_ "Macros
3dc40 22 5d 20 7b 7d 20 6d 61 63 72 6f 73 20 30 20 5b  "] {} macros 0 [
3dc50 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 5b 6c 69  list \...    [li
3dc60 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 4d  st command [_ "M
3dc70 61 63 72 6f 73 22 5d 2e 2e 2e 20 7b 7d 20 5b 5f  acros"]... {} [_
3dc80 20 22 4d 6f 64 69 66 79 20 6f 72 20 65 78 65 63   "Modify or exec
3dc90 75 74 65 20 6d 61 63 72 6f 73 22 5d 20 22 22 20  ute macros"] "" 
3dca0 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 63 6f 6d  \...        -com
3dcb0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65  mand "RamDebugge
3dcc0 72 3a 3a 4d 61 63 72 6f 73 20 24 77 22 5d 20 5c  r::Macros $w"] \
3dcd0 0a 09 09 20 20 20 5d 20 5c 0a 09 09 5d 20 5c 0a  ...   ] \...] \.
3dce0 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09  ..separator \...
3dcf0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f  [list command [_
3dd00 20 22 53 65 61 72 63 68 22 5d 2e 2e 2e 20 7b 7d   "Search"]... {}
3dd10 20 5b 5f 20 22 53 65 61 72 63 68 20 74 65 78 74   [_ "Search text
3dd20 20 69 6e 20 73 6f 75 72 63 65 20 66 69 6c 65 22   in source file"
3dd30 5d 20 22 43 74 72 6c 20 66 22 20 5c 0a 09 09 2d  ] "Ctrl f" \...-
3dd40 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3dd50 67 67 65 72 3a 3a 53 65 61 72 63 68 57 69 6e 64  gger::SearchWind
3dd60 6f 77 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  ow"] \...[list c
3dd70 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43 6f 6e 74 69  ommand [_ "Conti
3dd80 6e 75 65 20 73 65 61 72 63 68 22 5d 20 7b 7d 20  nue search"] {} 
3dd90 5b 5f 20 22 43 6f 6e 74 69 6e 75 65 20 73 65 61  [_ "Continue sea
3dda0 72 63 68 69 6e 67 20 74 65 78 74 22 5d 20 22 46  rching text"] "F
3ddb0 33 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  3" \...-command 
3ddc0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65  "RamDebugger::Se
3ddd0 61 72 63 68 20 24 77 20 61 6e 79 22 5d 20 5c 0a  arch $w any"] \.
3dde0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
3ddf0 5b 5f 20 22 49 73 65 61 72 63 68 20 66 6f 72 77  [_ "Isearch forw
3de00 61 72 64 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 63  ard"] {} [_ "Inc
3de10 72 65 6d 65 6e 74 61 6c 6c 79 20 73 65 61 72 63  rementally searc
3de20 68 20 66 6f 72 77 61 72 64 22 5d 20 22 43 74 72  h forward"] "Ctr
3de30 6c 20 69 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e  l i" \...-comman
3de40 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  d "RamDebugger::
3de50 53 65 61 72 63 68 20 24 77 20 69 66 6f 72 77 61  Search $w iforwa
3de60 72 64 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  rd"] \...[list c
3de70 6f 6d 6d 61 6e 64 20 5b 5f 20 22 49 73 65 61 72  ommand [_ "Isear
3de80 63 68 20 66 6f 72 77 61 72 64 20 73 65 6c 65 63  ch forward selec
3de90 74 65 64 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 63  ted"] {} [_ "Inc
3dea0 72 65 6d 65 6e 74 61 6c 6c 79 20 73 65 61 72 63  rementally searc
3deb0 68 20 66 6f 72 77 61 72 64 2e 20 42 65 67 69 6e  h forward. Begin
3dec0 20 77 69 74 68 20 73 65 6c 65 63 74 65 64 20 74   with selected t
3ded0 65 78 74 20 6f 72 20 77 69 74 68 20 74 65 78 74  ext or with text
3dee0 20 61 74 20 63 75 72 73 6f 72 22 5d 20 22 22 20   at cursor"] "" 
3def0 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61  \...-command "Ra
3df00 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63  mDebugger::Searc
3df10 68 20 24 77 20 69 66 6f 72 77 61 72 64 22 5d 20  h $w iforward"] 
3df20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3df30 64 20 5b 5f 20 22 49 73 65 61 72 63 68 20 62 61  d [_ "Isearch ba
3df40 63 6b 77 61 72 64 22 5d 20 7b 7d 20 5b 5f 20 22  ckward"] {} [_ "
3df50 49 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 20 73 65  Incrementally se
3df60 61 72 63 68 20 62 61 63 6b 77 61 72 64 22 5d 20  arch backward"] 
3df70 22 43 74 72 6c 20 72 22 20 5c 0a 09 09 2d 63 6f  "Ctrl r" \...-co
3df80 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67  mmand "RamDebugg
3df90 65 72 3a 3a 53 65 61 72 63 68 20 24 77 20 69 62  er::Search $w ib
3dfa0 61 63 6b 77 61 72 64 22 5d 20 5c 0a 09 09 5b 6c  ackward"] \...[l
3dfb0 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3dfc0 22 52 65 70 6c 61 63 65 22 5d 2e 2e 2e 20 7b 7d  "Replace"]... {}
3dfd0 20 5b 5f 20 22 52 65 70 6c 61 63 65 20 74 65 78   [_ "Replace tex
3dfe0 74 20 69 6e 20 73 6f 75 72 63 65 20 66 69 6c 65  t in source file
3dff0 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61  "] "" \...-comma
3e000 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a  nd "RamDebugger:
3e010 3a 53 65 61 72 63 68 57 69 6e 64 6f 77 20 31 22  :SearchWindow 1"
3e020 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  ] \...[list comm
3e030 61 6e 64 20 26 5b 5f 20 22 47 6f 74 6f 20 6c 69  and &[_ "Goto li
3e040 6e 65 22 5d 20 7b 7d 20 5b 5f 20 22 47 6f 20 74  ne"] {} [_ "Go t
3e050 6f 20 74 68 65 20 67 69 76 65 6e 20 6c 69 6e 65  o the given line
3e060 22 5d 20 22 43 74 72 6c 20 67 22 20 5c 0a 09 09  "] "Ctrl g" \...
3e070 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62  -command "RamDeb
3e080 75 67 67 65 72 3a 3a 47 6f 74 6f 4c 69 6e 65 22  ugger::GotoLine"
3e090 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20  ] \...separator 
3e0a0 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3e0b0 64 20 26 5b 5f 20 22 50 72 65 66 65 72 65 6e 63  d &[_ "Preferenc
3e0c0 65 73 22 5d 20 7b 7d 20 5b 5f 20 22 43 68 6f 6f  es"] {} [_ "Choo
3e0d0 73 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 66  se preferences f
3e0e0 6f 72 20 52 61 6d 44 65 62 75 67 67 65 72 22 5d  or RamDebugger"]
3e0f0 20 22 43 74 72 6c 20 70 22 20 5c 0a 09 09 2d 63   "Ctrl p" \...-c
3e100 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3e110 67 65 72 3a 3a 50 72 65 66 65 72 65 6e 63 65 73  ger::Preferences
3e120 57 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5d 20 5c  Window"] \...] \
3e130 0a 09 09 26 5b 5f 20 22 56 69 65 77 22 5d 20 61  ...&[_ "View"] a
3e140 6c 6c 20 76 69 65 77 20 30 20 5b 6c 69 73 74 20  ll view 0 [list 
3e150 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3e160 64 20 26 5b 5f 20 22 56 69 65 77 20 74 65 78 74  d &[_ "View text
3e170 2f 61 6c 6c 22 5d 20 7b 7d 20 5c 0a 09 09 5b 5f  /all"] {} \...[_
3e180 20 22 54 6f 67 67 6c 65 20 62 65 74 77 65 65 6e   "Toggle between
3e190 20 76 69 65 77 69 6e 67 20 61 6c 6c 20 77 69 6e   viewing all win
3e1a0 64 6f 77 73 20 6f 72 20 6f 6e 6c 79 20 74 65 78  dows or only tex
3e1b0 74 20 77 69 6e 64 6f 77 22 5d 20 22 43 74 72 6c  t window"] "Ctrl
3e1c0 20 74 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64   t" \...-command
3e1d0 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56   "RamDebugger::V
3e1e0 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c  iewOnlyTextOrAll
3e1f0 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 68 65  "] \...[list che
3e200 63 6b 62 75 74 74 6f 6e 20 26 5b 5f 20 22 56 69  ckbutton &[_ "Vi
3e210 65 77 20 66 69 6c 65 73 20 70 61 6e 65 22 5d 20  ew files pane"] 
3e220 7b 7d 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c  {} \...[_ "Toggl
3e230 65 20 62 65 74 77 65 65 6e 20 76 69 65 77 69 6e  e between viewin
3e240 67 20 74 68 65 20 66 69 6c 65 20 6c 69 73 74 20  g the file list 
3e250 70 61 6e 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63  pane"] "" \...-c
3e260 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3e270 67 65 72 3a 3a 43 68 65 63 6b 4c 69 73 74 46 69  ger::CheckListFi
3e280 6c 65 73 50 61 6e 65 22 20 5c 0a 09 09 2d 76 61  lesPane" \...-va
3e290 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67  riable RamDebugg
3e2a0 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 6c 69 73 74  er::options(list
3e2b0 66 69 6c 65 73 70 61 6e 65 29 5d 20 5c 0a 09 09  filespane)] \...
3e2c0 5b 6c 69 73 74 20 63 68 65 63 6b 62 75 74 74 6f  [list checkbutto
3e2d0 6e 20 26 5b 5f 20 22 56 69 65 77 20 76 61 72 69  n &[_ "View vari
3e2e0 61 62 6c 65 73 20 70 61 6e 65 22 5d 20 7b 7d 20  ables pane"] {} 
3e2f0 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c 65 20 62  \...[_ "Toggle b
3e300 65 74 77 65 65 6e 20 76 69 65 77 69 6e 67 20 74  etween viewing t
3e310 68 65 76 69 65 77 20 76 61 72 69 61 62 6c 65 73  heview variables
3e320 20 70 61 6e 65 22 5d 20 22 22 20 5c 0a 09 09 2d   pane"] "" \...-
3e330 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3e340 67 67 65 72 3a 3a 43 68 65 63 6b 56 69 65 77 56  gger::CheckViewV
3e350 61 72 69 61 62 6c 65 73 50 61 6e 65 22 20 5c 0a  ariablesPane" \.
3e360 09 09 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44  ..-variable RamD
3e370 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73  ebugger::options
3e380 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 70 61  (viewvariablespa
3e390 6e 65 29 5d 20 5c 0a 09 09 73 65 70 61 72 61 74  ne)] \...separat
3e3a0 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d  or \...[list com
3e3b0 6d 61 6e 64 20 26 5b 5f 20 22 53 65 63 6f 6e 64  mand &[_ "Second
3e3c0 61 72 79 20 76 69 65 77 22 5d 20 7b 7d 20 5c 0a  ary view"] {} \.
3e3d0 09 09 5b 5f 20 22 54 6f 67 67 6c 65 20 62 65 74  ..[_ "Toggle bet
3e3e0 77 65 65 6e 20 61 63 74 69 76 61 74 69 6e 67 20  ween activating 
3e3f0 61 20 73 65 63 6f 6e 64 61 72 79 20 76 69 65 77  a secondary view
3e400 20 66 6f 72 20 66 69 6c 65 73 22 5d 20 22 43 74   for files"] "Ct
3e410 72 6c 20 33 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61  rl 3" \...-comma
3e420 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a  nd "RamDebugger:
3e430 3a 56 69 65 77 53 65 63 6f 6e 64 54 65 78 74 22  :ViewSecondText"
3e440 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  ] \...[list comm
3e450 61 6e 64 20 26 5b 5f 20 22 54 6f 67 67 6c 65 20  and &[_ "Toggle 
3e460 66 6f 63 75 73 22 5d 20 7b 7d 20 5c 0a 09 09 5b  focus"] {} \...[
3e470 5f 20 22 54 6f 67 67 6c 65 20 62 65 74 77 65 65  _ "Toggle betwee
3e480 6e 20 61 63 74 69 76 61 74 69 6e 67 20 74 68 65  n activating the
3e490 20 6d 61 69 6e 20 6f 72 20 74 68 65 20 73 65 63   main or the sec
3e4a0 6f 6e 64 61 72 79 20 76 69 65 77 22 5d 20 22 43  ondary view"] "C
3e4b0 74 72 6c 20 34 22 20 5c 0a 09 09 2d 63 6f 6d 6d  trl 4" \...-comm
3e4c0 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72  and "RamDebugger
3e4d0 3a 3a 46 6f 63 75 73 53 65 63 6f 6e 64 54 65 78  ::FocusSecondTex
3e4e0 74 54 6f 67 67 6c 65 22 5d 20 5c 0a 09 09 5b 6c  tToggle"] \...[l
3e4f0 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3e500 22 54 6f 67 67 6c 65 20 76 69 65 77 73 22 5d 20  "Toggle views"] 
3e510 7b 7d 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c  {} \...[_ "Toggl
3e520 65 20 66 69 6c 65 73 20 62 65 74 77 65 65 6e 20  e files between 
3e530 74 68 65 20 6d 61 69 6e 20 61 6e 64 20 74 68 65  the main and the
3e540 20 73 65 63 6f 6e 64 61 72 79 20 76 69 65 77 22   secondary view"
3e550 5d 20 22 43 74 72 6c 20 35 22 20 5c 0a 09 09 2d  ] "Ctrl 5" \...-
3e560 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3e570 67 67 65 72 3a 3a 54 6f 67 67 6c 65 56 69 65 77  gger::ToggleView
3e580 73 22 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f  s"] \...separato
3e590 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 68 65 63  r \...[list chec
3e5a0 6b 62 75 74 74 6f 6e 20 5b 5f 20 22 53 74 61 74  kbutton [_ "Stat
3e5b0 75 73 20 62 61 72 22 5d 20 7b 7d 20 5c 0a 09 09  us bar"] {} \...
3e5c0 20 5b 5f 20 22 56 69 65 77 2f 68 69 64 65 20 73   [_ "View/hide s
3e5d0 74 61 74 75 73 20 62 61 72 22 5d 20 22 22 20 5c  tatus bar"] "" \
3e5e0 0a 09 09 2d 76 61 72 69 61 62 6c 65 20 52 61 6d  ...-variable Ram
3e5f0 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e  Debugger::option
3e600 73 28 73 68 6f 77 73 74 61 74 75 73 62 61 72 29  s(showstatusbar)
3e610 20 2d 63 6f 6d 6d 61 6e 64 20 52 61 6d 44 65 62   -command RamDeb
3e620 75 67 67 65 72 3a 3a 53 68 6f 77 53 74 61 74 75  ugger::ShowStatu
3e630 73 42 61 72 5d 20 5c 0a 09 09 5b 6c 69 73 74 20  sBar] \...[list 
3e640 63 68 65 63 6b 62 75 74 74 6f 6e 20 5b 5f 20 22  checkbutton [_ "
3e650 42 75 74 74 6f 6e 73 20 74 6f 6f 6c 62 61 72 22  Buttons toolbar"
3e660 5d 20 7b 7d 20 5c 0a 09 09 20 5b 5f 20 22 56 69  ] {} \... [_ "Vi
3e670 65 77 2f 68 69 64 65 20 62 75 74 74 6f 6e 73 20  ew/hide buttons 
3e680 74 6f 6f 6c 62 61 72 22 5d 20 22 22 20 5c 0a 09  toolbar"] "" \..
3e690 09 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65  .-variable RamDe
3e6a0 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28  bugger::options(
3e6b0 73 68 6f 77 62 75 74 74 6f 6e 73 74 6f 6f 6c 62  showbuttonstoolb
3e6c0 61 72 29 20 2d 63 6f 6d 6d 61 6e 64 20 52 61 6d  ar) -command Ram
3e6d0 44 65 62 75 67 67 65 72 3a 3a 53 68 6f 77 42 75  Debugger::ShowBu
3e6e0 74 74 6f 6e 73 54 6f 6f 6c 42 61 72 5d 20 5c 0a  ttonsToolBar] \.
3e6f0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
3e700 26 5b 5f 20 22 54 6f 67 67 6c 65 20 74 6f 6f 62  &[_ "Toggle toob
3e710 61 72 73 20 61 6e 64 20 73 74 61 74 75 73 62 61  ars and statusba
3e720 72 22 5d 20 7b 7d 20 5c 0a 09 09 5b 5f 20 22 54  r"] {} \...[_ "T
3e730 6f 67 67 6c 65 20 74 68 65 20 76 69 65 77 20 6f  oggle the view o
3e740 66 20 74 68 65 20 74 6f 6f 6c 62 61 72 20 61 6e  f the toolbar an
3e750 64 20 74 68 65 20 73 74 61 74 75 73 62 61 72 22  d the statusbar"
3e760 5d 20 22 43 74 72 6c 20 36 22 20 5c 0a 09 09 2d  ] "Ctrl 6" \...-
3e770 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3e780 67 67 65 72 3a 3a 54 6f 6f 67 6c 65 54 6f 6f 6c  gger::ToogleTool
3e790 62 61 72 73 53 74 61 74 75 73 62 61 72 22 5d 20  barsStatusbar"] 
3e7a0 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a  \...separator \.
3e7b0 09 09 5d 20 5c 0a 09 09 26 5b 5f 20 22 44 65 62  ..] \...&[_ "Deb
3e7c0 75 67 22 5d 20 61 6c 6c 20 64 65 62 75 67 20 30  ug"] all debug 0
3e7d0 20 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c 69 73 74   [list \...[list
3e7e0 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 43 6f   command &[_ "Co
3e7f0 6e 74 69 6e 75 65 2f 47 6f 22 5d 20 64 65 62 75  ntinue/Go"] debu
3e800 67 65 6e 74 72 79 20 5b 5f 20 22 62 65 67 69 6e  gentry [_ "begin
3e810 2f 63 6f 6e 74 69 6e 75 65 20 65 78 65 63 75 74  /continue execut
3e820 69 6f 6e 22 5d 20 22 46 35 22 20 5c 0a 09 09 2d  ion"] "F5" \...-
3e830 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3e840 67 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55  gger::ContNextGU
3e850 49 20 72 63 6f 6e 74 22 5d 20 5c 0a 09 09 5b 6c  I rcont"] \...[l
3e860 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22  ist command [_ "
3e870 53 65 74 2f 75 6e 73 65 74 20 26 62 72 65 61 6b  Set/unset &break
3e880 70 6f 69 6e 74 22 5d 20 64 65 62 75 67 65 6e 74  point"] debugent
3e890 72 79 20 5b 5f 20 22 53 65 74 2f 75 6e 73 65 74  ry [_ "Set/unset
3e8a0 20 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20 22 46   breakpoint"] "F
3e8b0 39 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  9" \...-command 
3e8c0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65  "RamDebugger::Se
3e8d0 74 47 55 49 42 72 65 61 6b 70 6f 69 6e 74 22 5d  tGUIBreakpoint"]
3e8e0 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61   \...[list comma
3e8f0 6e 64 20 26 5b 5f 20 22 4e 65 78 74 22 5d 20 64  nd &[_ "Next"] d
3e900 65 62 75 67 65 6e 74 72 79 20 5b 5f 20 22 63 6f  ebugentry [_ "co
3e910 6e 74 69 6e 75 65 20 6f 6e 65 20 63 6f 6d 6d 61  ntinue one comma
3e920 6e 64 22 5d 20 22 46 31 30 22 20 5c 0a 09 09 2d  nd"] "F10" \...-
3e930 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
3e940 67 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55  gger::ContNextGU
3e950 49 20 72 6e 65 78 74 22 5d 20 5c 0a 09 09 5b 6c  I rnext"] \...[l
3e960 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
3e970 22 53 74 65 70 22 5d 20 64 65 62 75 67 65 6e 74  "Step"] debugent
3e980 72 79 20 5b 5f 20 22 63 6f 6e 74 69 6e 75 65 20  ry [_ "continue 
3e990 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2c 20 65 6e 74  one command, ent
3e9a0 65 72 69 6e 67 20 69 6e 20 73 75 62 63 6f 6d 6d  ering in subcomm
3e9b0 61 6e 64 73 22 5d 20 22 46 31 31 22 20 5c 0a 09  ands"] "F11" \..
3e9c0 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65  .-command "RamDe
3e9d0 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74  bugger::ContNext
3e9e0 47 55 49 20 72 73 74 65 70 22 5d 20 5c 0a 09 09  GUI rstep"] \...
3e9f0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f  [list command [_
3ea00 20 22 42 72 65 61 6b 22 5d 20 64 65 62 75 67 65   "Break"] debuge
3ea10 6e 74 72 79 20 5b 5f 20 22 42 72 65 61 6b 20 65  ntry [_ "Break e
3ea20 78 65 63 75 74 69 6f 6e 20 61 73 20 66 61 73 74  xecution as fast
3ea30 20 61 73 20 70 6f 73 73 69 62 6c 65 22 5d 20 22   as possible"] "
3ea40 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22  " \...-command "
3ea50 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e  RamDebugger::Con
3ea60 74 4e 65 78 74 47 55 49 20 72 6e 65 78 74 66 75  tNextGUI rnextfu
3ea70 6c 6c 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  ll"] \...[list c
3ea80 6f 6d 6d 61 6e 64 20 5b 5f 20 22 52 65 74 75 72  ommand [_ "Retur
3ea90 6e 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20 5b  n"] debugentry [
3eaa0 5f 20 22 4d 61 6b 65 73 20 74 68 65 20 63 6f 64  _ "Makes the cod
3eab0 65 20 72 65 74 75 72 6e 20 66 72 6f 6d 20 70 72  e return from pr
3eac0 6f 63 20 77 69 74 68 6f 75 74 20 66 69 6e 69 73  oc without finis
3ead0 68 69 6e 67 20 65 78 65 63 75 74 69 6f 6e 22 5d  hing execution"]
3eae0 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64   "" \...-command
3eaf0 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43   "RamDebugger::C
3eb00 6f 6e 74 4e 65 78 74 47 55 49 20 72 6e 65 78 74  ontNextGUI rnext
3eb10 72 65 74 75 72 6e 22 5d 20 5c 0a 09 09 5b 6c 69  return"] \...[li
3eb20 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 53  st command [_ "S
3eb30 74 6f 70 20 64 65 62 75 67 67 69 6e 67 22 5d 20  top debugging"] 
3eb40 64 65 62 75 67 65 6e 74 72 79 20 5b 5f 20 22 53  debugentry [_ "S
3eb50 74 6f 70 20 63 75 72 72 65 6e 74 20 64 65 62 75  top current debu
3eb60 67 67 69 6e 67 22 5d 20 22 53 68 69 66 74 20 46  gging"] "Shift F
3eb70 35 22 20 5c 0a 09 09 20 20 20 20 20 2d 63 6f 6d  5" \...     -com
3eb80 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72  mand RamDebugger
3eb90 3a 3a 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70  ::DisconnectStop
3eba0 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20  ] \...separator 
3ebb0 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3ebc0 64 20 5b 5f 20 22 43 6f 6e 74 69 6e 75 65 20 26  d [_ "Continue &
3ebd0 74 6f 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20  to"] debugentry 
3ebe0 5b 5f 20 22 63 6f 6e 74 69 6e 75 65 20 74 6f 20  [_ "continue to 
3ebf0 73 65 6c 65 63 74 65 64 20 6c 69 6e 65 22 5d 20  selected line"] 
3ec00 22 43 74 72 6c 20 46 35 22 20 5c 0a 09 09 2d 63  "Ctrl F5" \...-c
3ec10 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3ec20 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49  ger::ContNextGUI
3ec30 20 72 63 6f 6e 74 74 6f 22 5d 20 5c 0a 09 09 5b   rcontto"] \...[
3ec40 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20  list command [_ 
3ec50 22 43 6f 6e 74 69 6e 75 65 20 6f 75 74 20 6c 6f  "Continue out lo
3ec60 6f 70 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20  op"] debugentry 
3ec70 5b 5f 20 22 63 6f 6e 74 69 6e 75 65 20 74 6f 20  [_ "continue to 
3ec80 6a 75 73 74 20 61 66 74 65 72 20 63 75 72 72 65  just after curre
3ec90 6e 74 20 6c 6f 6f 70 22 5d 20 22 43 74 72 6c 20  nt loop"] "Ctrl 
3eca0 46 31 30 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e  F10" \...-comman
3ecb0 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  d "RamDebugger::
3ecc0 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 63 6f 6e  ContNextGUI rcon
3ecd0 74 6f 75 74 6c 6f 6f 70 22 5d 20 5c 0a 09 09 73  toutloop"] \...s
3ece0 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69  eparator \...[li
3ecf0 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22  st command &[_ "
3ed00 45 78 70 72 65 73 73 69 6f 6e 73 22 5d 2e 2e 2e  Expressions"]...
3ed10 20 64 65 62 75 67 65 6e 74 72 79 20 5c 0a 09 09   debugentry \...
3ed20 20 20 20 20 5b 5f 20 22 4f 70 65 6e 20 61 20 77      [_ "Open a w
3ed30 69 6e 64 6f 77 20 74 6f 20 76 69 73 75 61 6c 69  indow to visuali
3ed40 7a 65 20 65 78 70 72 65 73 69 6f 6e 73 20 6f 72  ze expresions or
3ed50 20 76 61 72 69 61 62 6c 65 73 22 5d 20 22 46 31   variables"] "F1
3ed60 32 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  2" \...-command 
3ed70 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69  "RamDebugger::Di
3ed80 73 70 6c 61 79 56 61 72 57 69 6e 64 6f 77 20 24  splayVarWindow $
3ed90 77 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f  w"] \...[list co
3eda0 6d 6d 61 6e 64 20 5b 5f 20 22 42 72 65 61 6b 70  mmand [_ "Breakp
3edb0 6f 69 6e 74 73 22 5d 2e 2e 2e 20 64 65 62 75 67  oints"]... debug
3edc0 65 6e 74 72 79 20 5c 0a 09 09 20 20 20 20 5b 5f  entry \...    [_
3edd0 20 22 4f 70 65 6e 20 61 20 77 69 6e 64 6f 77 20   "Open a window 
3ede0 74 6f 20 76 69 73 75 61 6c 69 7a 65 20 74 68 65  to visualize the
3edf0 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 6c 69 73   breakpoints lis
3ee00 74 22 5d 20 22 41 6c 74 20 46 39 22 20 5c 0a 09  t"] "Alt F9" \..
3ee10 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65  .-command "RamDe
3ee20 62 75 67 67 65 72 3a 3a 44 69 73 70 6c 61 79 42  bugger::DisplayB
3ee30 72 65 61 6b 70 6f 69 6e 74 73 57 69 6e 64 6f 77  reakpointsWindow
3ee40 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d  "] \...[list com
3ee50 6d 61 6e 64 20 26 5b 5f 20 22 54 69 6d 69 6e 67  mand &[_ "Timing
3ee60 20 63 6f 6e 74 72 6f 6c 22 5d 2e 2e 2e 20 64 65   control"]... de
3ee70 62 75 67 65 6e 74 72 79 20 5c 0a 09 09 20 20 20  bugentry \...   
3ee80 20 5b 5f 20 22 4f 70 65 6e 20 61 20 77 69 6e 64   [_ "Open a wind
3ee90 6f 77 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 65 78  ow to control ex
3eea0 65 63 75 74 69 6f 6e 20 74 69 6d 65 73 22 5d 20  ecution times"] 
3eeb0 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20  "" \...-command 
3eec0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69  "RamDebugger::Di
3eed0 73 70 6c 61 79 54 69 6d 65 73 57 69 6e 64 6f 77  splayTimesWindow
3eee0 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d  "] \...[list com
3eef0 6d 61 6e 64 20 26 5b 5f 20 22 50 72 6f 66 69 6c  mand &[_ "Profil
3ef00 65 20 70 72 6f 63 65 64 75 72 65 73 22 5d 20 64  e procedures"] d
3ef10 65 62 75 67 65 6e 74 72 79 20 5c 0a 09 09 20 20  ebugentry \...  
3ef20 20 20 5b 5f 20 22 4f 70 65 6e 20 61 20 77 69 6e    [_ "Open a win
3ef30 64 6f 77 20 74 6f 20 70 72 6f 66 69 6c 65 20 65  dow to profile e
3ef40 78 65 63 75 74 69 6f 6e 20 74 69 6d 65 20 6f 66  xecution time of
3ef50 20 70 72 6f 63 73 22 5d 20 22 22 20 5c 0a 09 09   procs"] "" \...
3ef60 2d 63 6f 6d 6d 61 6e 64 20 22 70 72 6f 66 69 6c  -command "profil
3ef70 65 70 72 6f 63 73 3a 3a 4f 70 65 6e 47 55 49 22  eprocs::OpenGUI"
3ef80 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20  ] \...separator 
3ef90 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e  \...[list comman
3efa0 64 20 26 5b 5f 20 22 52 65 69 6e 73 74 72 75 6d  d &[_ "Reinstrum
3efb0 65 6e 74 22 5d 20 64 65 62 75 67 65 6e 74 72 79  ent"] debugentry
3efc0 20 5c 0a 09 09 20 20 20 20 5b 5f 20 22 52 65 69   \...    [_ "Rei
3efd0 6e 73 74 72 75 6d 65 6e 74 20 61 6e 64 20 72 65  nstrument and re
3efe0 63 6f 6c 6f 72 69 7a 65 20 61 20 66 69 6c 65 22  colorize a file"
3eff0 5d 20 22 41 6c 74 20 52 22 20 5c 0a 09 09 2d 63  ] "Alt R" \...-c
3f000 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67  ommand "RamDebug
3f010 67 65 72 3a 3a 52 65 69 6e 73 74 72 75 6d 65 6e  ger::Reinstrumen
3f020 74 43 75 72 72 65 6e 74 46 69 6c 65 22 5d 20 5c  tCurrentFile"] \
3f030 0a 09 09 5d 20 5c 0a 09 09 26 5b 5f 20 22 43 2b  ...] \...&[_ "C+
3f040 2b 20 70 72 6f 6a 65 63 74 22 5d 20 61 6c 6c 20  + project"] all 
3f050 63 2b 2b 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09  c++ 0 [list \...
3f060 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b  [list command &[
3f070 5f 20 22 43 72 65 61 74 65 2f 45 64 69 74 22 5d  _ "Create/Edit"]
3f080 20 63 2b 2b 65 6e 74 72 79 20 5b 5f 20 22 43 72   c++entry [_ "Cr
3f090 65 61 74 65 20 6f 72 20 65 64 69 74 20 61 20 63  eate or edit a c
3f0a0 2b 2b 20 63 6f 6d 70 69 6c 65 20 70 72 6f 6a 65  ++ compile proje
3f0b0 63 74 22 5d 20 22 41 6c 74 20 46 37 22 20 5c 0a  ct"] "Alt F7" \.
3f0c0 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 6f  ..-command "cpro
3f0d0 6a 65 63 74 3a 3a 43 72 65 61 74 65 20 24 77 22  ject::Create $w"
3f0e0 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 61 73 63  ] \...[list casc
3f0f0 61 64 20 5b 5f 20 22 43 26 6f 6e 66 69 67 75 72  ad [_ "C&onfigur
3f100 61 74 69 6f 6e 22 5d 20 7b 7d 20 61 63 74 69 76  ation"] {} activ
3f110 65 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 30  econfiguration 0
3f120 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 20   [list \...     
3f130 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75     [list radiobu
3f140 74 74 6f 6e 20 5b 5f 20 22 44 65 62 75 67 22 5d  tton [_ "Debug"]
3f150 20 61 63 74 69 76 65 63 6f 6e 66 69 67 75 72 61   activeconfigura
3f160 74 69 6f 6e 20 5b 5f 20 22 43 6f 6d 70 69 6c 65  tion [_ "Compile
3f170 20 64 65 62 75 67 20 76 65 72 73 69 6f 6e 22 5d   debug version"]
3f180 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20   "" \...        
3f190 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62  -variable RamDeb
3f1a0 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 64  ugger::options(d
3f1b0 65 62 75 67 72 65 6c 65 61 73 65 29 20 2d 76 61  ebugrelease) -va
3f1c0 6c 75 65 20 64 65 62 75 67 20 2d 73 65 6c 65 63  lue debug -selec
3f1d0 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a  tcolor black] \.
3f1e0 09 09 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20  ..        [list 
3f1f0 72 61 64 69 6f 62 75 74 74 6f 6e 20 5b 5f 20 22  radiobutton [_ "
3f200 52 65 6c 65 61 73 65 22 5d 20 61 63 74 69 76 65  Release"] active
3f210 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 5b 5f  configuration [_
3f220 20 22 43 6f 6d 70 69 6c 65 20 72 65 6c 65 61 73   "Compile releas
3f230 65 20 76 65 72 73 69 6f 6e 22 5d 20 22 22 20 5c  e version"] "" \
3f240 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69  ...        -vari
3f250 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72  able RamDebugger
3f260 3a 3a 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 72  ::options(debugr
3f270 65 6c 65 61 73 65 29 20 2d 76 61 6c 75 65 20 72  elease) -value r
3f280 65 6c 65 61 73 65 20 5c 0a 09 09 20 20 20 20 20  elease \...     
3f290 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 6f         -selectco
3f2a0 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 20  lor black] \... 
3f2b0 20 20 20 20 20 20 20 5d 20 5c 0a 09 09 5d 20 5c         ] \...] \
3f2c0 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64  ...[list command
3f2d0 20 5b 5f 20 22 43 6f 26 6d 70 69 6c 65 22 5d 20   [_ "Co&mpile"] 
3f2e0 63 2b 2b 65 6e 74 72 79 20 5b 5f 20 22 43 6f 6d  c++entry [_ "Com
3f2f0 70 69 6c 65 20 70 72 6f 6a 65 63 74 22 5d 20 22  pile project"] "
3f300 46 37 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64  F7" \...-command
3f310 20 22 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70   "cproject::Comp
3f320 69 6c 65 20 24 77 22 5d 20 5c 0a 09 09 5b 6c 69  ile $w"] \...[li
3f330 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43  st command [_ "C
3f340 6f 6d 26 70 69 6c 65 20 6e 6f 6e 20 73 74 6f 70  om&pile non stop
3f350 22 5d 20 63 2b 2b 65 6e 74 72 79 20 5b 5f 20 22  "] c++entry [_ "
3f360 43 6f 6d 70 69 6c 65 20 70 72 6f 6a 65 63 74 2c  Compile project,
3f370 20 64 6f 20 6e 6f 74 20 73 74 6f 70 20 6f 6e 20   do not stop on 
3f380 65 72 72 6f 72 73 22 5d 20 5c 0a 09 09 22 43 74  errors"] \..."Ct
3f390 72 6c 20 46 37 22 20 2d 63 6f 6d 6d 61 6e 64 20  rl F7" -command 
3f3a0 22 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69  "cproject::Compi
3f3b0 6c 65 4e 6f 53 74 6f 70 20 24 77 22 5d 20 5c 0a  leNoStop $w"] \.
3f3c0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
3f3d0 5b 5f 20 22 43 6f 6d 70 69 6c 65 20 61 6c 6c 22  [_ "Compile all"
3f3e0 5d 20 63 2b 2b 65 6e 74 72 79 20 5b 5f 20 22 43  ] c++entry [_ "C
3f3f0 6f 6d 70 69 6c 65 20 70 72 6f 6a 65 63 74 2c 20  ompile project, 
3f400 61 6c 6c 20 74 61 72 67 65 74 73 22 5d 20 22 22  all targets"] ""
3f410 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 63   \...-command "c
3f420 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c 65  project::Compile
3f430 41 6c 6c 20 24 77 22 5d 20 5c 0a 09 09 73 65 70  All $w"] \...sep
3f440 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74  arator \...[list
3f450 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 54 6f   command &[_ "To
3f460 75 63 68 20 66 69 6c 65 73 22 5d 20 63 2b 2b 65  uch files"] c++e
3f470 6e 74 72 79 20 5b 5f 20 22 41 63 74 75 61 6c 69  ntry [_ "Actuali
3f480 7a 65 20 64 61 74 65 20 66 6f 72 20 61 6c 6c 20  ze date for all 
3f490 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 69 6c 65  compilation file
3f4a0 73 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d  s"] "" \...-comm
3f4b0 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 54  and "cproject::T
3f4c0 6f 75 63 68 46 69 6c 65 73 20 24 77 22 5d 20 5c  ouchFiles $w"] \
3f4d0 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64  ...[list command
3f4e0 20 5b 5f 20 22 43 6c 26 65 61 6e 22 5d 20 63 2b   [_ "Cl&ean"] c+
3f4f0 2b 65 6e 74 72 79 20 5b 5f 20 22 43 6c 65 61 6e  +entry [_ "Clean
3f500 20 63 6f 6d 70 69 6c 65 64 20 70 72 6f 6a 65 63   compiled projec
3f510 74 20 66 69 6c 65 73 22 5d 20 22 22 20 5c 0a 09  t files"] "" \..
3f520 09 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a  .-command "cproj
3f530 65 63 74 3a 3a 43 6c 65 61 6e 43 6f 6d 70 69 6c  ect::CleanCompil
3f540 65 64 46 69 6c 65 73 20 24 77 22 5d 20 5c 0a 09  edFiles $w"] \..
3f550 09 5d 20 5c 0a 09 09 26 5b 5f 20 22 55 74 69 6c  .] \...&[_ "Util
3f560 69 74 69 65 73 22 5d 20 61 6c 6c 20 75 74 69 6c  ities"] all util
3f570 69 74 69 65 73 20 30 20 5b 6c 69 73 74 20 5c 0a  ities 0 [list \.
3f580 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
3f590 26 5b 5f 20 22 4f 70 65 6e 20 63 6f 6e 73 6f 6c  &[_ "Open consol
3f5a0 65 22 5d 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20  e"] {} [_ "Open 
3f5b0 63 6f 6e 73 6f 6c 65 22 5d 20 22 22 20 5c 0a 09  console"] "" \..
3f5c0 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65  .-command "RamDe
3f5d0 62 75 67 67 65 72 3a 3a 4f 70 65 6e 43 6f 6e 73  bugger::OpenCons
3f5e0 6f 6c 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20  ole"] \...[list 
3f5f0 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 4f 26 70 65  command [_ "O&pe
3f600 6e 20 56 69 73 75 61 6c 52 65 67 65 78 70 22 5d  n VisualRegexp"]
3f610 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20 56 69 73   {} [_ "Open Vis
3f620 75 61 6c 52 65 67 65 78 70 22 5d 20 22 22 20 5c  ualRegexp"] "" \
3f630 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d  ...-command "Ram
3f640 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 50 72  Debugger::OpenPr
3f650 6f 67 72 61 6d 20 76 69 73 75 61 6c 72 65 67 65  ogram visualrege
3f660 78 70 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  xp"] \...[list c
3f670 6f 6d 6d 61 6e 64 20 5b 5f 20 22 4f 70 65 6e 20  ommand [_ "Open 
3f680 54 6b 64 69 66 66 22 5d 20 7b 7d 20 5b 5f 20 22  Tkdiff"] {} [_ "
3f690 4f 70 65 6e 20 54 6b 64 69 66 66 22 5d 20 22 22  Open Tkdiff"] ""
3f6a0 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52   \...-command "R
3f6b0 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e  amDebugger::Open
3f6c0 50 72 6f 67 72 61 6d 20 74 6b 64 69 66 66 22 5d  Program tkdiff"]
3f6d0 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61   \...[list comma
3f6e0 6e 64 20 5b 5f 20 22 4f 70 65 6e 20 54 6b 63 76  nd [_ "Open Tkcv
3f6f0 73 22 5d 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20  s"] {} [_ "Open 
3f700 54 6b 63 76 73 22 5d 20 22 22 20 5c 0a 09 09 20  Tkcvs"] "" \... 
3f710 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d     -command "Ram
3f720 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 50 72  Debugger::OpenPr
3f730 6f 67 72 61 6d 20 74 6b 63 76 73 22 5d 20 5c 0a  ogram tkcvs"] \.
3f740 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d  ..    [list comm
3f750 61 6e 64 20 5b 5f 20 22 56 65 72 73 69 6f 6e 20  and [_ "Version 
3f760 63 6f 6e 74 72 6f 6c 20 73 79 73 74 65 6d 22 5d  control system"]
3f770 2e 2e 2e 20 7b 7d 20 5c 0a 09 09 20 20 20 20 5b  ... {} \...    [
3f780 5f 20 22 4f 70 65 6e 20 56 65 72 73 69 6f 6e 20  _ "Open Version 
3f790 63 6f 6e 74 72 6f 6c 20 73 79 73 74 65 6d 20 77  control system w
3f7a0 69 6e 64 6f 77 20 77 69 74 68 20 63 76 73 20 6f  indow with cvs o
3f7b0 72 20 66 6f 73 73 69 6c 22 5d 20 22 43 74 72 6c  r fossil"] "Ctrl
3f7c0 20 37 22 20 5c 0a 09 09 20 20 20 2d 63 6f 6d 6d   7" \...   -comm
3f7d0 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72  and "RamDebugger
3f7e0 3a 3a 43 56 53 3a 3a 75 70 64 61 74 65 5f 72 65  ::CVS::update_re
3f7f0 63 75 72 73 69 76 65 20 2e 20 6c 61 73 74 22 5d  cursive . last"]
3f800 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c   \...separator \
3f810 0a 09 20 20 20 20 20 20 20 5b 6c 69 73 74 20 63  ..       [list c
3f820 61 73 63 61 64 20 5b 5f 20 22 46 69 6c 65 20 74  ascad [_ "File t
3f830 79 70 65 22 5d 20 7b 7d 20 66 69 6c 65 74 79 70  ype"] {} filetyp
3f840 65 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20  e 0 [list \...  
3f850 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75 74    [list radiobut
3f860 74 6f 6e 20 5b 5f 20 22 41 75 74 6f 6d 61 74 69  ton [_ "Automati
3f870 63 22 5d 20 66 69 6c 65 74 79 70 65 20 5b 5f 20  c"] filetype [_ 
3f880 22 53 65 6c 65 63 74 69 6f 6e 20 69 73 20 6d 61  "Selection is ma
3f890 64 65 20 62 61 73 65 64 20 6f 6e 20 65 78 74 65  de based on exte
3f8a0 6e 73 69 6f 6e 22 5d 20 22 22 20 5c 0a 09 09 20  nsion"] "" \... 
3f8b0 20 20 20 20 20 20 20 2d 76 61 72 69 61 62 6c 65         -variable
3f8c0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70   RamDebugger::op
3f8d0 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 20  tions(filetype) 
3f8e0 2d 76 61 6c 75 65 20 61 75 74 6f 20 2d 73 65 6c  -value auto -sel
3f8f0 65 63 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20  ectcolor black] 
3f900 5c 0a 09 09 20 20 20 20 73 65 70 61 72 61 74 6f  \...    separato
3f910 72 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20  r \...    [list 
3f920 72 61 64 69 6f 62 75 74 74 6f 6e 20 5b 5f 20 22  radiobutton [_ "
3f930 54 43 4c 22 5d 20 66 69 6c 65 74 79 70 65 20 22  TCL"] filetype "
3f940 22 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 20  " "" \...       
3f950 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65   -variable RamDe
3f960 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28  bugger::options(
3f970 66 69 6c 65 74 79 70 65 29 20 2d 76 61 6c 75 65  filetype) -value
3f980 20 54 43 4c 20 5c 0a 09 09 20 20 20 20 20 20 20   TCL \...       
3f990 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20   -command [list 
3f9a0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61  RamDebugger::Cha
3f9b0 6e 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09  ngeFileType] \..
3f9c0 09 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74  .        -select
3f9d0 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09  color black] \..
3f9e0 09 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f  .    [list radio
3f9f0 62 75 74 74 6f 6e 20 5b 5f 20 22 43 2f 43 2b 2b  button [_ "C/C++
3fa00 22 5d 20 66 69 6c 65 74 79 70 65 20 22 22 20 22  "] filetype "" "
3fa10 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76  " \...        -v
3fa20 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67  ariable RamDebug
3fa30 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c  ger::options(fil
3fa40 65 74 79 70 65 29 20 2d 76 61 6c 75 65 20 43 2f  etype) -value C/
3fa50 43 2b 2b 20 5c 0a 09 09 20 20 20 20 20 20 20 20  C++ \...        
3fa60 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52  -command [list R
3fa70 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e  amDebugger::Chan
3fa80 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09  geFileType] \...
3fa90 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63          -selectc
3faa0 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09  olor black] \...
3fab0 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62      [list radiob
3fac0 75 74 74 6f 6e 20 5b 5f 20 22 58 4d 4c 22 5d 20  utton [_ "XML"] 
3fad0 66 69 6c 65 74 79 70 65 20 22 22 20 22 22 20 5c  filetype "" "" \
3fae0 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69  ...        -vari
3faf0 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72  able RamDebugger
3fb00 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79  ::options(filety
3fb10 70 65 29 20 2d 76 61 6c 75 65 20 58 4d 4c 20 5c  pe) -value XML \
3fb20 0a 09 09 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d  ...        -comm
3fb30 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d 44 65 62  and [list RamDeb
3fb40 75 67 67 65 72 3a 3a 43 68 61 6e 67 65 46 69 6c  ugger::ChangeFil
3fb50 65 54 79 70 65 5d 20 5c 0a 09 09 20 20 20 20 20  eType] \...     
3fb60 20 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20     -selectcolor 
3fb70 62 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5b  black] \...    [
3fb80 6c 69 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e  list radiobutton
3fb90 20 5b 5f 20 22 4d 61 6b 65 66 69 6c 65 22 5d 20   [_ "Makefile"] 
3fba0 66 69 6c 65 74 79 70 65 20 22 22 20 22 22 20 5c  filetype "" "" \
3fbb0 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69  ...        -vari
3fbc0 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72  able RamDebugger
3fbd0 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79  ::options(filety
3fbe0 70 65 29 20 2d 76 61 6c 75 65 20 4d 61 6b 65 66  pe) -value Makef
3fbf0 69 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20  ile \...        
3fc00 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52  -command [list R
3fc10 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e  amDebugger::Chan
3fc20 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09  geFileType] \...
3fc30 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63          -selectc
3fc40 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09  olor black] \...
3fc50 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62      [list radiob
3fc60 75 74 74 6f 6e 20 5b 5f 20 22 47 69 44 20 42 41  utton [_ "GiD BA
3fc70 53 20 66 69 6c 65 22 5d 20 66 69 6c 65 74 79 70  S file"] filetyp
3fc80 65 20 22 22 20 22 22 20 5c 0a 09 09 20 20 20 20  e "" "" \...    
3fc90 20 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61      -variable Ra
3fca0 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f  mDebugger::optio
3fcb0 6e 73 28 66 69 6c 65 74 79 70 65 29 20 2d 76 61  ns(filetype) -va
3fcc0 6c 75 65 20 22 47 69 44 20 42 41 53 20 66 69 6c  lue "GiD BAS fil
3fcd0 65 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d  e" \...        -
3fce0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61  command [list Ra
3fcf0 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67  mDebugger::Chang
3fd00 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09 20  eFileType] \... 
3fd10 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 6f         -selectco
3fd20 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 20  lor black] \... 
3fd30 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75     [list radiobu
3fd40 74 74 6f 6e 20 5b 5f 20 22 47 69 44 20 64 61 74  tton [_ "GiD dat
3fd50 61 20 66 69 6c 65 73 22 5d 20 66 69 6c 65 74 79  a files"] filety
3fd60 70 65 20 22 22 20 22 22 20 5c 0a 09 09 20 20 20  pe "" "" \...   
3fd70 20 20 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52       -variable R
3fd80 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69  amDebugger::opti
3fd90 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 20 2d 76  ons(filetype) -v
3fda0 61 6c 75 65 20 22 47 69 44 20 64 61 74 61 20 66  alue "GiD data f
3fdb0 69 6c 65 73 22 20 5c 0a 09 09 20 20 20 20 20 20  iles" \...      
3fdc0 20 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74    -command [list
3fdd0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68   RamDebugger::Ch
3fde0 61 6e 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a  angeFileType] \.
3fdf0 09 09 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63  ..        -selec
3fe00 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a  tcolor black] \.
3fe10 09 09 20 20 20 20 73 65 70 61 72 61 74 6f 72 20  ..    separator 
3fe20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 68  \...    [list ch
3fe30 65 63 6b 62 75 74 74 6f 6e 20 5b 5f 20 22 4f 6e  eckbutton [_ "On
3fe40 6c 79 20 66 6f 72 20 74 68 69 73 20 66 69 6c 65  ly for this file
3fe50 22 5d 20 66 69 6c 65 74 79 70 65 20 22 22 20 22  "] filetype "" "
3fe60 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76  " \...        -v
3fe70 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67  ariable RamDebug
3fe80 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c  ger::options(fil
3fe90 65 74 79 70 65 5f 6f 6e 6c 79 5f 74 68 69 73 5f  etype_only_this_
3fea0 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 20  file) \...      
3feb0 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62    -selectcolor b
3fec0 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5d 20  lack] \...    ] 
3fed0 5c 0a 09 09 5d 20 5c 0a 09 20 20 20 20 5b 6c 69  \...] \..    [li
3fee0 73 74 20 63 61 73 63 61 64 20 5b 5f 20 22 46 69  st cascad [_ "Fi
3fef0 6c 65 20 6c 69 6e 65 73 20 65 6e 64 22 5d 20 7b  le lines end"] {
3ff00 7d 20 66 69 6c 65 6c 69 6e 65 65 6e 64 20 30 20  } filelineend 0 
3ff10 5b 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 5b 6c  [list \...    [l
3ff20 69 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e 20  ist radiobutton 
3ff30 5b 5f 20 22 41 75 74 6f 6d 61 74 69 63 22 5d 20  [_ "Automatic"] 
3ff40 66 69 6c 65 6c 69 6e 65 65 6e 64 20 5b 5f 20 22  filelineend [_ "
3ff50 4e 61 74 69 76 65 20 6c 69 6e 65 20 65 6e 64 73  Native line ends
3ff60 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20   for the active 
3ff70 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
3ff80 22 5d 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20  "] "" \...      
3ff90 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44    -variable RamD
3ffa0 65 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e 74  ebugger::current
3ffb0 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 2d 76 61  file_endline -va
3ffc0 6c 75 65 20 61 75 74 6f 20 2d 73 65 6c 65 63 74  lue auto -select
3ffd0 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09  color black] \..
3ffe0 09 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 5c  .    separator \
3fff0 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 72 61 64  ...    [list rad
40000 69 6f 62 75 74 74 6f 6e 20 5b 5f 20 22 55 6e 69  iobutton [_ "Uni
40010 78 22 5d 20 66 69 6c 65 6c 69 6e 65 65 6e 64 20  x"] filelineend 
40020 22 22 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20  "" "" \...      
40030 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44    -variable RamD
40040 65 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e 74  ebugger::current
40050 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 2d 76 61  file_endline -va
40060 6c 75 65 20 6c 66 20 5c 0a 09 09 20 20 20 20 20  lue lf \...     
40070 20 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20     -selectcolor 
40080 62 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5b  black] \...    [
40090 6c 69 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e  list radiobutton
400a0 20 5b 5f 20 22 57 69 6e 64 6f 77 73 22 5d 20 66   [_ "Windows"] f
400b0 69 6c 65 6c 69 6e 65 65 6e 64 20 22 22 20 22 22  ilelineend "" ""
400c0 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61   \...        -va
400d0 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67  riable RamDebugg
400e0 65 72 3a 3a 63 75 72 72 65 6e 74 66 69 6c 65 5f  er::currentfile_
400f0 65 6e 64 6c 69 6e 65 20 2d 76 61 6c 75 65 20 63  endline -value c
40100 72 6c 66 20 5c 0a 09 09 20 20 20 20 20 20 20 20  rlf \...        
40110 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 6c 61  -selectcolor bla
40120 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5d 20 5c 0a  ck] \...    ] \.
40130 09 09 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f  ..] \...separato
40140 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  r \...[list comm
40150 61 6e 64 20 26 5b 5f 20 22 56 69 65 77 20 69 6e  and &[_ "View in
40160 73 74 72 75 6d 65 6e 74 65 64 20 66 69 6c 65 20  strumented file 
40170 50 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20  P"] {} [_ "View 
40180 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 66 69 6c  instrumented fil
40190 65 20 50 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f  e P"] "" \...-co
401a0 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67  mmand "RamDebugg
401b0 65 72 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d 65  er::ViewInstrume
401c0 6e 74 65 64 46 69 6c 65 20 69 6e 73 74 72 75 6d  ntedFile instrum
401d0 65 6e 74 65 64 50 22 5d 20 5c 0a 09 09 5b 6c 69  entedP"] \...[li
401e0 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 56  st command [_ "V
401f0 69 65 77 20 69 6e 73 74 72 75 6d 65 6e 74 65 64  iew instrumented
40200 20 66 69 6c 65 20 52 22 5d 20 7b 7d 20 5b 5f 20   file R"] {} [_ 
40210 22 56 69 65 77 20 69 6e 73 74 72 75 6d 65 6e 74  "View instrument
40220 65 64 20 66 69 6c 65 20 52 22 5d 20 22 22 20 5c  ed file R"] "" \
40230 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d  ...-command "Ram
40240 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77 49 6e  Debugger::ViewIn
40250 73 74 72 75 6d 65 6e 74 65 64 46 69 6c 65 20 69  strumentedFile i
40260 6e 73 74 72 75 6d 65 6e 74 65 64 52 22 5d 20 5c  nstrumentedR"] \
40270 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64  ...[list command
40280 20 5b 5f 20 22 56 69 65 77 20 69 6e 73 74 72 75   [_ "View instru
40290 6d 65 6e 74 65 64 20 69 6e 66 6f 20 66 69 6c 65  mented info file
402a0 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20 69  "] {} [_ "View i
402b0 6e 73 74 72 75 6d 65 6e 74 65 64 20 69 6e 66 6f  nstrumented info
402c0 20 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 09 2d   file"] "" \...-
402d0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
402e0 67 67 65 72 3a 3a 56 69 65 77 49 6e 73 74 72 75  gger::ViewInstru
402f0 6d 65 6e 74 65 64 46 69 6c 65 20 69 6e 66 6f 22  mentedFile info"
40300 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  ] \...[list comm
40310 61 6e 64 20 5b 5f 20 22 56 69 65 77 20 69 6e 73  and [_ "View ins
40320 74 72 75 6d 65 6e 74 65 64 20 74 69 6d 65 20 66  trumented time f
40330 69 6c 65 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65  ile"] {} [_ "Vie
40340 77 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 74  w instrumented t
40350 69 6d 65 20 66 69 6c 65 22 5d 20 22 22 20 5c 0a  ime file"] "" \.
40360 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44  ..-command "RamD
40370 65 62 75 67 67 65 72 3a 3a 56 69 65 77 49 6e 73  ebugger::ViewIns
40380 74 72 75 6d 65 6e 74 65 64 46 69 6c 65 20 74 69  trumentedFile ti
40390 6d 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63  me"] \...[list c
403a0 6f 6d 6d 61 6e 64 20 5b 5f 20 22 56 69 65 77 20  ommand [_ "View 
403b0 67 64 62 20 6c 6f 67 22 5d 20 7b 7d 20 5c 0a 09  gdb log"] {} \..
403c0 09 20 20 5b 5f 20 22 56 69 65 77 20 61 6c 6c 20  .  [_ "View all 
403d0 63 6f 6d 6d 61 6e 64 73 20 74 72 61 6e 73 66 65  commands transfe
403e0 72 72 65 64 20 66 72 6f 6d 2f 74 6f 20 67 64 62  rred from/to gdb
403f0 2c 20 69 66 20 64 65 62 75 67 67 69 6e 67 20 63  , if debugging c
40400 2b 2b 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d  ++"] "" \...-com
40410 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65  mand "RamDebugge
40420 72 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d 65 6e  r::ViewInstrumen
40430 74 65 64 46 69 6c 65 20 67 64 62 22 5d 20 5c 0a  tedFile gdb"] \.
40440 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
40450 26 5b 5f 20 22 43 6f 75 6e 74 20 4c 4f 43 22 5d  &[_ "Count LOC"]
40460 20 7b 7d 20 5b 5f 20 22 43 6f 75 6e 74 20 6e 75   {} [_ "Count nu
40470 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 6f 66  mber of lines of
40480 20 63 6f 64 65 22 5d 20 22 22 20 5c 0a 09 09 2d   code"] "" \...-
40490 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
404a0 67 67 65 72 3a 3a 43 6f 75 6e 74 4c 4f 43 49 6e  gger::CountLOCIn
404b0 46 69 6c 65 73 20 24 77 22 5d 20 5c 0a 09 09 73  Files $w"] \...s
404c0 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69  eparator \...[li
404d0 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22  st command &[_ "
404e0 57 69 6e 64 6f 77 73 20 68 69 65 72 61 72 63 68  Windows hierarch
404f0 79 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20  y"] {} [_ "View 
40500 77 69 6e 64 6f 77 73 20 68 69 65 72 61 72 63 68  windows hierarch
40510 79 22 5d 20 22 43 74 72 6c 20 31 22 20 5c 0a 09  y"] "Ctrl 1" \..
40520 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65  .-command "RamDe
40530 62 75 67 67 65 72 3a 3a 44 69 73 70 6c 61 79 57  bugger::DisplayW
40540 69 6e 64 6f 77 73 48 69 65 72 61 72 63 68 79 22  indowsHierarchy"
40550 5d 20 5c 0a 09 09 5d 20 5c 0a 09 09 26 5b 5f 20  ] \...] \...&[_ 
40560 22 48 65 6c 70 22 5d 20 61 6c 6c 20 68 65 6c 70  "Help"] all help
40570 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c 69   0 [list \...[li
40580 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22  st command &[_ "
40590 48 65 6c 70 22 5d 20 7b 7d 20 5b 5f 20 22 47 69  Help"] {} [_ "Gi
405a0 76 65 73 20 68 65 6c 70 22 5d 20 22 43 74 72 6c  ves help"] "Ctrl
405b0 20 68 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64   h" \...-command
405c0 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56   "RamDebugger::V
405d0 69 65 77 48 65 6c 70 46 69 6c 65 22 5d 20 5c 0a  iewHelpFile"] \.
405e0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20  ..[list command 
405f0 26 5b 5f 20 22 43 6f 6e 74 65 78 74 75 61 6c 20  &[_ "Contextual 
40600 68 65 6c 70 22 5d 20 7b 7d 20 5b 5f 20 22 47 69  help"] {} [_ "Gi
40610 76 65 73 20 68 65 6c 70 20 66 6f 72 20 63 6f 6d  ves help for com
40620 6d 61 6e 64 73 20 69 6e 20 65 64 69 74 6f 72 22  mands in editor"
40630 5d 20 22 46 31 22 20 5c 0a 09 09 2d 63 6f 6d 6d  ] "F1" \...-comm
40640 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72  and "RamDebugger
40650 3a 3a 56 69 65 77 48 65 6c 70 46 6f 72 57 6f 72  ::ViewHelpForWor
40660 64 22 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f  d"] \...separato
40670 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d  r \...[list comm
40680 61 6e 64 20 26 5b 5f 20 22 45 78 74 72 61 63 74  and &[_ "Extract
40690 20 65 78 61 6d 70 6c 65 73 22 5d 20 22 65 78 74   examples"] "ext
406a0 72 61 63 74 65 78 61 6d 70 6c 65 73 22 20 5c 0a  ractexamples" \.
406b0 09 09 20 20 20 20 20 5b 5f 20 22 45 78 74 72 61  ..     [_ "Extra
406c0 63 74 73 20 65 78 61 6d 70 6c 65 73 20 64 69 72  cts examples dir
406d0 65 63 74 6f 72 79 20 74 6f 20 61 20 75 73 65 72  ectory to a user
406e0 2d 73 65 6c 65 63 74 61 62 6c 65 20 64 69 72 65  -selectable dire
406f0 63 74 6f 72 79 22 5d 20 22 22 20 5c 0a 09 09 2d  ctory"] "" \...-
40700 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75  command "RamDebu
40710 67 67 65 72 3a 3a 45 78 74 72 61 63 74 45 78 61  gger::ExtractExa
40720 6d 70 6c 65 73 44 69 72 22 5d 20 5c 0a 09 09 5b  mplesDir"] \...[
40730 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f  list command &[_
40740 20 22 52 65 67 69 73 74 65 72 20 63 6d 64 20 65   "Register cmd e
40750 78 74 65 6e 73 69 6f 6e 22 5d 2e 2e 2e 20 72 65  xtension"]... re
40760 67 69 73 74 65 72 65 78 74 65 6e 73 69 6f 6e 20  gisterextension 
40770 5c 0a 09 09 20 20 20 20 20 5b 5f 20 22 52 65 67  \...     [_ "Reg
40780 69 73 74 65 72 20 52 61 6d 44 65 62 75 67 67 65  ister RamDebugge
40790 72 20 61 73 20 63 6f 6d 6d 61 6e 64 20 69 6e 20  r as command in 
407a0 74 68 65 20 2e 74 63 6c 20 65 78 74 65 6e 73 69  the .tcl extensi
407b0 6f 6e 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d  on"] "" \...-com
407c0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65  mand "RamDebugge
407d0 72 3a 3a 52 65 67 69 73 74 65 72 45 78 74 65 6e  r::RegisterExten
407e0 73 69 6f 6e 22 5d 20 5c 0a 09 09 73 65 70 61 72  sion"] \...separ
407f0 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63  ator \...[list c
40800 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 41 62 6f 75  ommand &[_ "Abou
40810 74 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 66 6f 72  t"] {} [_ "Infor
40820 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
40830 20 70 72 6f 67 72 61 6d 22 5d 20 22 22 20 5c 0a   program"] "" \.
40840 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44  ..-command "RamD
40850 65 62 75 67 67 65 72 3a 3a 41 62 6f 75 74 57 69  ebugger::AboutWi
40860 6e 64 6f 77 22 5d 20 5c 0a 09 09 5d 0a 20 20 20  ndow"] \...].   
40870 20 0a 20 20 20 20 69 66 20 7b 20 5b 20 74 6b 20   .    if { [ tk 
40880 77 69 6e 64 6f 77 69 6e 67 73 79 73 74 65 6d 5d  windowingsystem]
40890 20 65 71 20 22 61 71 75 61 22 7d 20 7b 0a 09 73   eq "aqua"} {..s
408a0 65 74 20 64 65 73 63 6d 65 6e 75 5f 6f 6c 64 20  et descmenu_old 
408b0 24 64 65 73 63 6d 65 6e 75 0a 09 73 65 74 20 64  $descmenu..set d
408c0 65 73 63 6d 65 6e 75 20 22 22 0a 09 73 65 74 20  escmenu ""..set 
408d0 62 61 64 20 5b 6c 69 73 74 20 26 5b 5f 20 22 50  bad [list &[_ "P
408e0 72 65 66 65 72 65 6e 63 65 73 22 5d 20 26 5b 5f  references"] &[_
408f0 20 22 41 62 6f 75 74 22 5d 20 26 5b 5f 20 22 45   "About"] &[_ "E
40900 78 74 72 61 63 74 20 65 78 61 6d 70 6c 65 73 22  xtract examples"
40910 5d 20 5c 0a 09 09 26 5b 5f 20 22 52 65 67 69 73  ] \...&[_ "Regis
40920 74 65 72 20 63 6d 64 20 65 78 74 65 6e 73 69 6f  ter cmd extensio
40930 6e 22 5d 2e 2e 2e 5d 0a 09 66 6f 72 65 61 63 68  n"]...]..foreach
40940 20 22 6d 65 6e 75 6e 61 6d 65 20 74 61 67 73 20   "menuname tags 
40950 6d 65 6e 75 49 64 20 74 65 61 72 6f 66 66 20 6d  menuId tearoff m
40960 65 6e 75 65 6e 74 72 69 65 73 22 20 24 64 65 73  enuentries" $des
40970 63 6d 65 6e 75 5f 6f 6c 64 20 7b 0a 09 20 20 20  cmenu_old {..   
40980 20 73 65 74 20 6d 65 6e 75 65 6e 74 72 69 65 73   set menuentries
40990 4e 20 22 22 0a 09 20 20 20 20 66 6f 72 65 61 63  N ""..    foreac
409a0 68 20 69 20 24 6d 65 6e 75 65 6e 74 72 69 65 73  h i $menuentries
409b0 20 7b 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65   {...if { [linde
409c0 78 20 24 69 20 31 5d 20 69 6e 20 24 62 61 64 20  x $i 1] in $bad 
409d0 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b  } {...    if { [
409e0 6c 69 6e 64 65 78 20 24 6d 65 6e 75 65 6e 74 72  lindex $menuentr
409f0 69 65 73 4e 20 65 6e 64 5d 20 65 71 20 22 73 65  iesN end] eq "se
40a00 70 61 72 61 74 6f 72 22 20 7d 20 7b 0a 09 09 20  parator" } {... 
40a10 20 20 20 20 20 20 20 73 65 74 20 6d 65 6e 75 65         set menue
40a20 6e 74 72 69 65 73 4e 20 5b 6c 72 61 6e 67 65 20  ntriesN [lrange 
40a30 24 6d 65 6e 75 65 6e 74 72 69 65 73 4e 20 30 20  $menuentriesN 0 
40a40 65 6e 64 2d 31 5d 0a 09 09 20 20 20 20 7d 0a 09  end-1]...    }..
40a50 09 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 09 09  .    continue...
40a60 7d 0a 09 09 6c 61 70 70 65 6e 64 20 6d 65 6e 75  }...lappend menu
40a70 65 6e 74 72 69 65 73 4e 20 24 69 0a 09 20 20 20  entriesN $i..   
40a80 20 7d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20   }..    lappend 
40a90 64 65 73 63 6d 65 6e 75 20 24 6d 65 6e 75 6e 61  descmenu $menuna
40aa0 6d 65 20 24 74 61 67 73 20 24 6d 65 6e 75 49 64  me $tags $menuId
40ab0 20 24 74 65 61 72 6f 66 66 20 24 6d 65 6e 75 65   $tearoff $menue
40ac0 6e 74 72 69 65 73 4e 0a 09 7d 0a 20 20 20 20 7d  ntriesN..}.    }
40ad0 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e  .    if { $iswin
40ae0 63 65 20 7d 20 7b 0a 09 73 65 74 20 64 65 73 63  ce } {..set desc
40af0 6d 65 6e 75 5f 6f 6c 64 20 24 64 65 73 63 6d 65  menu_old $descme
40b00 6e 75 0a 09 73 65 74 20 6d 65 6e 75 65 6e 74 72  nu..set menuentr
40b10 69 65 73 47 20 22 22 0a 09 66 6f 72 65 61 63 68  iesG ""..foreach
40b20 20 22 6d 65 6e 75 6e 61 6d 65 20 74 61 67 73 20   "menuname tags 
40b30 6d 65 6e 75 49 64 20 74 65 61 72 6f 66 66 20 6d  menuId tearoff m
40b40 65 6e 75 65 6e 74 72 69 65 73 22 20 24 64 65 73  enuentries" $des
40b50 63 6d 65 6e 75 5f 6f 6c 64 20 7b 0a 09 20 20 20  cmenu_old {..   
40b60 20 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 2d   if { [lsearch -
40b70 65 78 61 63 74 20 5b 6c 69 73 74 20 64 65 62 75  exact [list debu
40b80 67 20 63 2b 2b 5d 20 24 6d 65 6e 75 49 64 5d 20  g c++] $menuId] 
40b90 21 3d 20 2d 31 20 7d 20 7b 20 63 6f 6e 74 69 6e  != -1 } { contin
40ba0 75 65 20 7d 0a 09 20 20 20 20 6c 61 70 70 65 6e  ue }..    lappen
40bb0 64 20 6d 65 6e 75 65 6e 74 72 69 65 73 47 20 5b  d menuentriesG [
40bc0 6c 69 73 74 20 63 61 73 63 61 64 20 24 6d 65 6e  list cascad $men
40bd0 75 6e 61 6d 65 20 24 74 61 67 73 20 24 6d 65 6e  uname $tags $men
40be0 75 49 64 20 30 20 24 6d 65 6e 75 65 6e 74 72 69  uId 0 $menuentri
40bf0 65 73 5d 0a 09 7d 0a 09 6c 61 70 70 65 6e 64 20  es]..}..lappend 
40c00 6d 65 6e 75 65 6e 74 72 69 65 73 47 20 73 65 70  menuentriesG sep
40c10 61 72 61 74 6f 72 20 5c 0a 09 20 20 20 20 5b 6c  arator \..    [l
40c20 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20  ist command &[_ 
40c30 22 51 75 69 74 22 5d 20 7b 7d 20 5b 5f 20 22 45  "Quit"] {} [_ "E
40c40 78 69 74 20 70 72 6f 67 72 61 6d 22 5d 20 22 43  xit program"] "C
40c50 74 72 6c 20 71 22 20 5c 0a 09 09 2d 63 6f 6d 6d  trl q" \...-comm
40c60 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a  and RamDebugger:
40c70 3a 45 78 69 74 47 55 49 5d 0a 09 73 65 74 20 64  :ExitGUI]..set d
40c80 65 73 63 6d 65 6e 75 20 5b 6c 69 73 74 20 26 5b  escmenu [list &[
40c90 5f 20 22 4d 65 6e 75 22 5d 20 61 6c 6c 20 6d 65  _ "Menu"] all me
40ca0 6e 75 20 30 20 24 6d 65 6e 75 65 6e 74 72 69 65  nu 0 $menuentrie
40cb0 73 47 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65  sG].    }.    se
40cc0 74 20 6d 61 69 6e 66 72 61 6d 65 20 5b 4d 61 69  t mainframe [Mai
40cd0 6e 46 72 61 6d 65 20 24 77 2e 6d 61 69 6e 66 72  nFrame $w.mainfr
40ce0 61 6d 65 20 5c 0a 09 09 20 20 20 20 20 20 20 2d  ame \...       -
40cf0 74 65 78 74 76 61 72 69 61 62 6c 65 20 52 61 6d  textvariable Ram
40d00 44 65 62 75 67 67 65 72 3a 3a 73 74 61 74 75 73  Debugger::status
40d10 20 5c 0a 09 09 20 20 20 20 20 20 20 2d 70 72 6f   \...       -pro
40d20 67 72 65 73 73 76 61 72 20 52 61 6d 44 65 62 75  gressvar RamDebu
40d30 67 67 65 72 3a 3a 70 72 6f 67 72 65 73 73 76 61  gger::progressva
40d40 72 20 2d 70 72 6f 67 72 65 73 73 6d 61 78 20 31  r -progressmax 1
40d50 30 30 20 5c 0a 09 09 20 20 20 20 20 20 20 2d 70  00 \...       -p
40d60 72 6f 67 72 65 73 73 74 79 70 65 20 6e 6f 72 6d  rogresstype norm
40d70 61 6c 20 2d 6d 65 6e 75 20 24 64 65 73 63 6d 65  al -menu $descme
40d80 6e 75 20 2d 67 72 69 64 20 30 5d 0a 20 20 20 20  nu -grid 0].    
40d90 23 24 6d 61 69 6e 66 72 61 6d 65 20 73 68 6f 77  #$mainframe show
40da0 73 74 61 74 75 73 62 61 72 20 70 72 6f 67 72 65  statusbar progre
40db0 73 73 69 6f 6e 20 0a 0a 20 20 20 20 69 66 20 7b  ssion ..    if {
40dc0 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d   $::tcl_platform
40dd0 28 70 6c 61 74 66 6f 72 6d 29 20 6e 65 20 22 77  (platform) ne "w
40de0 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 24 6d 61  indows" } {..$ma
40df0 69 6e 66 72 61 6d 65 20 73 65 74 6d 65 6e 75 73  inframe setmenus
40e00 74 61 74 65 20 72 65 67 69 73 74 65 72 65 78 74  tate registerext
40e10 65 6e 73 69 6f 6e 20 64 69 73 61 62 6c 65 64 0a  ension disabled.
40e20 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20      }..    if { 
40e30 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a  ![info exists ::
40e40 73 74 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d  starkit::topdir]
40e50 20 7d 20 7b 0a 09 24 6d 61 69 6e 66 72 61 6d 65   } {..$mainframe
40e60 20 73 65 74 6d 65 6e 75 73 74 61 74 65 20 65 78   setmenustate ex
40e70 74 72 61 63 74 65 78 61 6d 70 6c 65 73 20 64 69  tractexamples di
40e80 73 61 62 6c 65 64 0a 20 20 20 20 7d 0a 20 20 20  sabled.    }.   
40e90 20 0a 20 20 20 20 73 65 74 20 63 76 73 5f 69 6e   .    set cvs_in
40ea0 64 69 63 61 74 6f 72 5f 66 72 61 6d 65 20 5b 24  dicator_frame [$
40eb0 6d 61 69 6e 66 72 61 6d 65 20 61 64 64 69 6e 64  mainframe addind
40ec0 69 63 61 74 6f 72 20 2d 77 69 64 74 68 20 31 30  icator -width 10
40ed0 20 5c 0a 09 20 20 20 20 2d 61 6e 63 68 6f 72 20   \..    -anchor 
40ee0 65 20 2d 70 61 64 78 20 33 5d 0a 20 20 20 20 52  e -padx 3].    R
40ef0 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 56 53 3a  amDebugger::CVS:
40f00 3a 69 6e 64 69 63 61 74 6f 72 5f 69 6e 69 74 20  :indicator_init 
40f10 24 63 76 73 5f 69 6e 64 69 63 61 74 6f 72 5f 66  $cvs_indicator_f
40f20 72 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 73 65  rame.    .    se
40f30 74 20 6c 61 62 65 6c 20 5b 24 6d 61 69 6e 66 72  t label [$mainfr
40f40 61 6d 65 20 61 64 64 69 6e 64 69 63 61 74 6f 72  ame addindicator
40f50 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 52   -textvariable R
40f60 61 6d 44 65 62 75 67 67 65 72 3a 3a 64 65 62 75  amDebugger::debu
40f70 67 67 65 72 73 74 61 74 65 20 2d 77 69 64 74 68  ggerstate -width
40f80 20 36 20 5c 0a 09 20 20 20 20 2d 61 6e 63 68 6f   6 \..    -ancho
40f90 72 20 65 20 2d 70 61 64 78 20 33 5d 0a 0a 20 20  r e -padx 3]..  
40fa0 20 20 62 69 6e 64 20 24 6c 61 62 65 6c 20 3c 31    bind $label <1
40fb0 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  > [list RamDebug
40fc0 67 65 72 3a 3a 44 69 73 70 6c 61 79 54 69 6d 65  ger::DisplayTime
40fd0 73 57 69 6e 64 6f 77 4d 65 6e 75 20 24 6c 61 62  sWindowMenu $lab
40fe0 65 6c 20 25 58 20 25 59 5d 0a 0a 20 20 20 20 73  el %X %Y]..    s
40ff0 65 74 20 6c 61 62 65 6c 20 5b 24 6d 61 69 6e 66  et label [$mainf
41000 72 61 6d 65 20 61 64 64 69 6e 64 69 63 61 74 6f  rame addindicato
41010 72 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20  r -textvariable 
41020 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4c 69 6e  RamDebugger::Lin
41030 65 4e 75 6d 20 2d 77 69 64 74 68 20 36 20 5c 0a  eNum -width 6 \.
41040 09 20 20 20 20 2d 61 6e 63 68 6f 72 20 65 20 2d  .    -anchor e -
41050 70 61 64 78 20 33 5d 0a 0a 20 20 20 20 62 69 6e  padx 3]..    bin
41060 64 20 24 6c 61 62 65 6c 20 3c 31 3e 20 52 61 6d  d $label <1> Ram
41070 44 65 62 75 67 67 65 72 3a 3a 47 6f 74 6f 4c 69  Debugger::GotoLi
41080 6e 65 0a 20 20 20 20 73 65 74 20 6c 61 62 65 6c  ne.    set label
41090 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 61 64 64   [$mainframe add
410a0 69 6e 64 69 63 61 74 6f 72 20 2d 74 65 78 74 76  indicator -textv
410b0 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67  ariable RamDebug
410c0 67 65 72 3a 3a 72 65 6d 6f 74 65 73 65 72 76 65  ger::remoteserve
410d0 72 20 2d 77 69 64 74 68 20 31 35 20 5c 0a 09 09  r -width 15 \...
410e0 20 20 20 2d 61 6e 63 68 6f 72 20 65 20 2d 70 61     -anchor e -pa
410f0 64 78 20 33 5d 0a 20 20 20 20 73 65 74 20 6d 65  dx 3].    set me
41100 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67  nu [$mainframe g
41110 65 74 6d 65 6e 75 20 61 63 74 69 76 65 70 72 6f  etmenu activepro
41120 67 72 61 6d 73 5d 0a 20 20 20 20 73 65 74 20 6d  grams].    set m
41130 65 6e 75 31 20 5b 6d 65 6e 75 20 24 77 2e 61 63  enu1 [menu $w.ac
41140 74 75 61 6c 69 7a 65 70 72 6f 67 72 61 6d 73 6d  tualizeprogramsm
41150 65 6e 75 20 2d 74 65 61 72 6f 66 66 20 30 5d 0a  enu -tearoff 0].
41160 20 20 20 20 24 6d 65 6e 75 31 20 63 6f 6e 66 69      $menu1 confi
41170 67 75 72 65 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e  gure -postcomman
41180 64 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67  d [list RamDebug
41190 67 65 72 3a 3a 41 63 74 75 61 6c 69 7a 65 41 63  ger::ActualizeAc
411a0 74 69 76 65 50 72 6f 67 72 61 6d 73 20 24 6d 65  tivePrograms $me
411b0 6e 75 31 20 31 5d 0a 0a 20 20 20 20 62 69 6e 64  nu1 1]..    bind
411c0 20 24 6c 61 62 65 6c 20 3c 31 3e 20 22 74 6b 5f   $label <1> "tk_
411d0 70 6f 70 75 70 20 24 6d 65 6e 75 31 20 25 58 20  popup $menu1 %X 
411e0 25 59 22 0a 20 20 20 20 73 65 74 20 6d 65 6e 75  %Y".    set menu
411f0 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74   [$mainframe get
41200 6d 65 6e 75 20 76 69 65 77 5d 0a 20 20 20 20 24  menu view].    $
41210 6d 65 6e 75 20 63 6f 6e 66 69 67 75 72 65 20 2d  menu configure -
41220 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73  postcommand [lis
41230 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 41  t RamDebugger::A
41240 63 74 75 61 6c 69 7a 65 56 69 65 77 4d 65 6e 75  ctualizeViewMenu
41250 20 24 6d 65 6e 75 5d 0a 0a 20 20 20 20 73 65 74   $menu]..    set
41260 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d   menu [$mainfram
41270 65 20 67 65 74 6d 65 6e 75 20 72 65 63 65 6e 74  e getmenu recent
41280 66 69 6c 65 73 5d 0a 20 20 20 20 24 6d 65 6e 75  files].    $menu
41290 20 63 6f 6e 66 69 67 75 72 65 20 2d 70 6f 73 74   configure -post
412a0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61  command [list Ra
412b0 6d 44 65 62 75 67 67 65 72 3a 3a 41 64 64 52 65  mDebugger::AddRe
412c0 63 65 6e 74 66 69 6c 65 73 54 6f 4d 65 6e 75 20  centfilesToMenu 
412d0 24 6d 65 6e 75 5d 0a 0a 20 20 20 20 23 20 76 65  $menu]..    # ve
412e0 72 79 20 64 69 72 74 79 2e 20 57 69 74 68 6f 75  ry dirty. Withou
412f0 74 20 69 74 2c 20 74 68 65 20 72 61 64 69 6f 62  t it, the radiob
41300 75 74 74 6f 6e 20 69 6e 64 69 63 61 74 6f 72 20  utton indicator 
41310 69 73 20 6e 6f 74 20 64 72 61 77 6e 2e 20 57 68  is not drawn. Wh
41320 79 3f 3f 3f 0a 20 20 20 20 73 65 74 20 6d 65 6e  y???.    set men
41330 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65  u [$mainframe ge
41340 74 6d 65 6e 75 20 61 63 74 69 76 65 63 6f 6e 66  tmenu activeconf
41350 69 67 75 72 61 74 69 6f 6e 5d 0a 20 20 20 20 63  iguration].    c
41360 61 74 63 68 20 7b 20 24 6d 65 6e 75 20 63 6f 6e  atch { $menu con
41370 66 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 22  f -postcommand "
41380 24 6d 65 6e 75 20 63 6f 6e 66 20 2d 73 65 6c 65  $menu conf -sele
41390 63 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 22 20 7d  ctcolor black" }
413a0 0a 0a 20 20 20 20 73 65 74 20 66 20 5b 24 6d 61  ..    set f [$ma
413b0 69 6e 66 72 61 6d 65 20 67 65 74 66 72 61 6d 65  inframe getframe
413c0 5d 0a 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  ]..    #########
413d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
413e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
413f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41410 23 23 23 23 23 23 23 0a 20 20 20 20 23 20 20 20  #######.    #   
41420 20 20 54 68 65 20 74 6f 6f 6c 62 61 72 0a 20 20    The toolbar.  
41430 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
41440 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41450 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41460 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41470 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41480 23 23 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 69  ##..    if { !$i
41490 73 77 69 6e 63 65 20 7d 20 7b 0a 09 73 65 74 20  swince } {..set 
414a0 74 6f 6f 6c 62 61 72 20 5b 24 6d 61 69 6e 66 72  toolbar [$mainfr
414b0 61 6d 65 20 61 64 64 74 6f 6f 6c 62 61 72 5d 0a  ame addtoolbar].
414c0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24 6d      } else {..$m
414d0 61 69 6e 66 72 61 6d 65 20 61 64 64 74 6f 6f 6c  ainframe addtool
414e0 62 61 72 0a 09 73 65 74 20 74 6f 6f 6c 62 61 72  bar..set toolbar
414f0 20 5b 74 74 6b 3a 3a 66 72 61 6d 65 20 24 66 2e   [ttk::frame $f.
41500 74 6f 6f 6c 62 61 72 5d 0a 09 67 72 69 64 20 24  toolbar]..grid $
41510 74 6f 6f 6c 62 61 72 20 2d 73 74 69 63 6b 79 20  toolbar -sticky 
41520 77 20 2d 72 6f 77 20 31 20 2d 63 6f 6c 75 6d 6e  w -row 1 -column
41530 20 30 0a 0a 20 20 20 20 7d 0a 20 20 20 20 24 6d   0..    }.    $m
41540 61 69 6e 66 72 61 6d 65 20 61 64 64 74 6f 6f 6c  ainframe addtool
41550 62 61 72 20 3b 23 20 73 65 61 72 63 68 0a 20 20  bar ;# search.  
41560 20 20 24 6d 61 69 6e 66 72 61 6d 65 20 73 68 6f    $mainframe sho
41570 77 74 6f 6f 6c 62 61 72 20 31 20 30 0a 20 20 20  wtoolbar 1 0.   
41580 20 24 6d 61 69 6e 66 72 61 6d 65 20 61 64 64 74   $mainframe addt
41590 6f 6f 6c 62 61 72 20 3b 23 20 67 65 74 66 69 6c  oolbar ;# getfil
415a0 65 0a 20 20 20 20 24 6d 61 69 6e 66 72 61 6d 65  e.    $mainframe
415b0 20 73 68 6f 77 74 6f 6f 6c 62 61 72 20 32 20 30   showtoolbar 2 0
415c0 0a 09 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77  ...    if { $isw
415d0 69 6e 63 65 20 7d 20 7b 0a 09 23 77 69 6e 63 65  ince } {..#wince
415e0 0a 09 73 65 74 20 64 61 74 61 20 5b 6c 69 73 74  ..set data [list
415f0 20 5c 0a 09 09 66 69 6c 65 6e 65 77 31 36 20 5b   \...filenew16 [
41600 5f 20 22 42 65 67 69 6e 20 6e 65 77 20 66 69 6c  _ "Begin new fil
41610 65 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72  e"] "RamDebugger
41620 3a 3a 4e 65 77 46 69 6c 65 22 20 5c 0a 09 09 66  ::NewFile" \...f
41630 69 6c 65 6f 70 65 6e 31 36 20 5b 5f 20 22 4f 70  ileopen16 [_ "Op
41640 65 6e 20 73 6f 75 72 63 65 20 66 69 6c 65 22 5d  en source file"]
41650 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f   "RamDebugger::O
41660 70 65 6e 46 69 6c 65 20 2d 66 6f 72 63 65 5f 62  penFile -force_b
41670 72 6f 77 73 65 72 20 31 22 20 5c 0a 09 09 66 69  rowser 1" \...fi
41680 6c 65 73 61 76 65 31 36 20 5b 5f 20 22 53 61 76  lesave16 [_ "Sav
41690 65 20 66 69 6c 65 22 5d 20 22 52 61 6d 44 65 62  e file"] "RamDeb
416a0 75 67 67 65 72 3a 3a 53 61 76 65 46 69 6c 65 20  ugger::SaveFile 
416b0 2d 66 6f 72 63 65 5f 62 72 6f 77 73 65 72 20 31  -force_browser 1
416c0 20 73 61 76 65 22 20 5c 0a 09 09 2d 20 2d 20 2d   save" \...- - -
416d0 20 5c 0a 09 09 75 6e 64 6f 2d 31 36 20 5b 5f 20   \...undo-16 [_ 
416e0 22 55 6e 64 6f 20 70 72 65 76 69 6f 75 73 20 69  "Undo previous i
416f0 6e 73 65 72 74 2f 64 65 6c 65 74 65 20 6f 70 65  nsert/delete ope
41700 72 61 74 69 6f 6e 22 5d 20 22 52 61 6d 44 65 62  ration"] "RamDeb
41710 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61  ugger::CutCopyPa
41720 73 74 65 54 65 78 74 20 75 6e 64 6f 22 20 5c 0a  steText undo" \.
41730 09 09 65 64 69 74 63 75 74 2d 31 36 20 5b 5f 20  ..editcut-16 [_ 
41740 22 43 75 74 20 73 65 6c 65 63 74 65 64 20 74 65  "Cut selected te
41750 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 22  xt to clipboard"
41760 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  ] "RamDebugger::
41770 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 74  CutCopyPasteText
41780 20 63 75 74 22 20 5c 0a 09 09 65 64 69 74 63 6f   cut" \...editco
41790 70 79 2d 31 36 20 5b 5f 20 22 43 6f 70 79 20 73  py-16 [_ "Copy s
417a0 65 6c 65 63 74 65 64 20 74 65 78 74 20 74 6f 20  elected text to 
417b0 63 6c 69 70 62 6f 61 72 64 22 5d 20 22 52 61 6d  clipboard"] "Ram
417c0 44 65 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70  Debugger::CutCop
417d0 79 50 61 73 74 65 54 65 78 74 20 63 6f 70 79 22  yPasteText copy"
417e0 20 5c 0a 09 09 65 64 69 74 70 61 73 74 65 2d 31   \...editpaste-1
417f0 36 20 5b 5f 20 22 50 61 73 74 65 20 74 65 78 74  6 [_ "Paste text
41800 20 66 72 6f 6d 20 63 6c 69 70 62 6f 61 72 64 22   from clipboard"
41810 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  ] "RamDebugger::
41820 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 74  CutCopyPasteText
41830 20 70 61 73 74 65 22 20 5c 0a 09 09 66 69 6e 64   paste" \...find
41840 2d 31 36 20 5b 5f 20 22 53 65 61 72 63 68 20 74  -16 [_ "Search t
41850 65 78 74 20 69 6e 20 73 6f 75 72 63 65 20 66 69  ext in source fi
41860 6c 65 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65  le"] "RamDebugge
41870 72 3a 3a 53 65 61 72 63 68 57 69 6e 64 6f 77 22  r::SearchWindow"
41880 20 5c 0a 09 09 2d 20 2d 20 2d 20 5c 0a 09 09 5d   \...- - - \...]
41890 0a 09 73 65 74 20 74 6b 74 61 62 6c 65 74 5f 6f  ..set tktablet_o
418a0 6b 20 30 0a 09 69 66 20 7b 20 24 74 6b 74 61 62  k 0..if { $tktab
418b0 6c 65 74 5f 6f 6b 20 7d 20 7b 0a 09 20 20 20 20  let_ok } {..    
418c0 6c 61 70 70 65 6e 64 20 64 61 74 61 20 22 22 20  lappend data "" 
418d0 5b 5f 20 22 41 63 74 69 76 61 74 65 20 54 61 62  [_ "Activate Tab
418e0 6c 65 74 50 43 20 64 72 61 67 22 5d 20 22 22 0a  letPC drag"] "".
418f0 09 7d 0a 09 6c 61 70 70 65 6e 64 20 64 61 74 61  .}..lappend data
41900 20 63 6f 6c 6f 72 69 7a 65 2d 31 36 20 5b 5f 20   colorize-16 [_ 
41910 22 52 65 69 6e 73 74 72 75 6d 65 6e 74 20 61 6e  "Reinstrument an
41920 64 20 72 65 63 6f 6c 6f 72 69 7a 65 20 63 6f 64  d recolorize cod
41930 65 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72  e"] "RamDebugger
41940 3a 3a 52 65 69 6e 73 74 72 75 6d 65 6e 74 43 75  ::ReinstrumentCu
41950 72 72 65 6e 74 46 69 6c 65 22 0a 20 20 20 20 7d  rrentFile".    }
41960 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 64 61 74   else {..set dat
41970 61 20 5b 6c 69 73 74 20 5c 0a 09 09 66 69 6c 65  a [list \...file
41980 6e 65 77 32 32 20 5b 5f 20 22 42 65 67 69 6e 20  new22 [_ "Begin 
41990 6e 65 77 20 66 69 6c 65 22 5d 20 22 52 61 6d 44  new file"] "RamD
419a0 65 62 75 67 67 65 72 3a 3a 4e 65 77 46 69 6c 65  ebugger::NewFile
419b0 22 20 5c 0a 09 09 66 69 6c 65 6f 70 65 6e 32 32  " \...fileopen22
419c0 20 5b 5f 20 22 4f 70 65 6e 20 73 6f 75 72 63 65   [_ "Open source
419d0 20 66 69 6c 65 22 5d 20 22 52 61 6d 44 65 62 75   file"] "RamDebu
419e0 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 20 2d  gger::OpenFile -
419f0 66 6f 72 63 65 5f 62 72 6f 77 73 65 72 20 31 22  force_browser 1"
41a00 20 5c 0a 09 09 66 69 6c 65 73 61 76 65 32 32 20   \...filesave22 
41a10 5b 5f 20 22 53 61 76 65 20 66 69 6c 65 22 5d 20  [_ "Save file"] 
41a20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 61  "RamDebugger::Sa
41a30 76 65 46 69 6c 65 20 2d 66 6f 72 63 65 5f 62 72  veFile -force_br
41a40 6f 77 73 65 72 20 31 20 73 61 76 65 22 20 5c 0a  owser 1 save" \.
41a50 09 09 2d 20 2d 20 2d 20 5c 0a 09 09 61 63 74 75  ..- - - \...actu
41a60 6e 64 6f 32 32 20 5b 5f 20 22 55 6e 64 6f 20 70  ndo22 [_ "Undo p
41a70 72 65 76 69 6f 75 73 20 69 6e 73 65 72 74 2f 64  revious insert/d
41a80 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 22  elete operation"
41a90 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  ] "RamDebugger::
41aa0 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 74  CutCopyPasteText
41ab0 20 75 6e 64 6f 22 20 5c 0a 09 09 65 64 69 74 63   undo" \...editc
41ac0 75 74 32 32 20 5b 5f 20 22 43 75 74 20 73 65 6c  ut22 [_ "Cut sel
41ad0 65 63 74 65 64 20 74 65 78 74 20 74 6f 20 63 6c  ected text to cl
41ae0 69 70 62 6f 61 72 64 22 5d 20 22 52 61 6d 44 65  ipboard"] "RamDe
41af0 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50  bugger::CutCopyP
41b00 61 73 74 65 54 65 78 74 20 63 75 74 22 20 5c 0a  asteText cut" \.
41b10 09 09 65 64 69 74 63 6f 70 79 2d 32 32 20 5b 5f  ..editcopy-22 [_
41b20 20 22 43 6f 70 79 20 73 65 6c 65 63 74 65 64 20   "Copy selected 
41b30 74 65 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72  text to clipboar
41b40 64 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72  d"] "RamDebugger
41b50 3a 3a 43 75 74 43 6f 70 79 50 61 73 74 65 54 65  ::CutCopyPasteTe
41b60 78 74 20 63 6f 70 79 22 20 5c 0a 09 09 65 64 69  xt copy" \...edi
41b70 74 70 61 73 74 65 32 32 20 5b 5f 20 22 50 61 73  tpaste22 [_ "Pas
41b80 74 65 20 74 65 78 74 20 66 72 6f 6d 20 63 6c 69  te text from cli
41b90 70 62 6f 61 72 64 22 5d 20 5c 0a 09 09 20 20 20  pboard"] \...   
41ba0 20 5b 6c 69 73 74 20 6d 65 6e 75 62 75 74 74 6f   [list menubutto
41bb0 6e 5f 62 75 74 74 6f 6e 20 22 52 61 6d 44 65 62  n_button "RamDeb
41bc0 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61  ugger::CutCopyPa
41bd0 73 74 65 54 65 78 74 20 70 61 73 74 65 22 20 22  steText paste" "
41be0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 74  RamDebugger::Cut
41bf0 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 70 61  CopyPasteText pa
41c00 73 74 65 5f 73 74 61 63 6b 20 25 57 22 5d 20 5c  ste_stack %W"] \
41c10 0a 09 09 66 69 6e 64 2d 32 32 20 5b 5f 20 22 53  ...find-22 [_ "S
41c20 65 61 72 63 68 20 74 65 78 74 20 69 6e 20 73 6f  earch text in so
41c30 75 72 63 65 20 66 69 6c 65 22 5d 20 22 52 61 6d  urce file"] "Ram
41c40 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68  Debugger::Search
41c50 57 69 6e 64 6f 77 22 20 5c 0a 09 09 2d 20 2d 20  Window" \...- - 
41c60 2d 20 5c 0a 09 09 70 6c 61 79 65 72 5f 65 6e 64  - \...player_end
41c70 2d 32 32 20 5b 5f 20 22 62 65 67 69 6e 2f 63 6f  -22 [_ "begin/co
41c80 6e 74 69 6e 75 65 20 65 78 65 63 75 74 69 6f 6e  ntinue execution
41c90 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a  "] "RamDebugger:
41ca0 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 63 6f  :ContNextGUI rco
41cb0 6e 74 22 20 5c 0a 09 09 70 6c 61 79 65 72 5f 73  nt" \...player_s
41cc0 74 6f 70 2d 32 32 20 5b 5f 20 22 53 65 74 2f 75  top-22 [_ "Set/u
41cd0 6e 73 65 74 20 26 62 72 65 61 6b 70 6f 69 6e 74  nset &breakpoint
41ce0 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a  "] "RamDebugger:
41cf0 3a 53 65 74 47 55 49 42 72 65 61 6b 70 6f 69 6e  :SetGUIBreakpoin
41d00 74 22 20 5c 0a 09 09 66 69 6e 69 73 68 2d 32 32  t" \...finish-22
41d10 20 5b 5f 20 22 63 6f 6e 74 69 6e 75 65 20 6f 6e   [_ "continue on
41d20 65 20 63 6f 6d 6d 61 6e 64 22 5d 20 22 52 61 6d  e command"] "Ram
41d30 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e 65  Debugger::ContNe
41d40 78 74 47 55 49 20 72 6e 65 78 74 22 20 5c 0a 09  xtGUI rnext" \..
41d50 09 64 6f 77 6e 2d 32 32 20 5b 5f 20 22 63 6f 6e  .down-22 [_ "con
41d60 74 69 6e 75 65 20 6f 6e 65 20 63 6f 6d 6d 61 6e  tinue one comman
41d70 64 2c 20 65 6e 74 65 72 69 6e 67 20 69 6e 20 73  d, entering in s
41d80 75 62 63 6f 6d 6d 61 6e 64 73 22 5d 20 22 52 61  ubcommands"] "Ra
41d90 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e  mDebugger::ContN
41da0 65 78 74 47 55 49 20 72 73 74 65 70 22 20 5c 0a  extGUI rstep" \.
41db0 09 09 73 74 6f 70 2d 32 32 20 5b 5f 20 22 73 74  ..stop-22 [_ "st
41dc0 6f 70 20 64 65 62 75 67 67 69 6e 67 22 5d 20 22  op debugging"] "
41dd0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73  RamDebugger::Dis
41de0 63 6f 6e 6e 65 63 74 53 74 6f 70 22 20 5c 0a 09  connectStop" \..
41df0 09 2d 20 2d 20 2d 20 5c 0a 09 09 6e 61 76 62 61  .- - - \...navba
41e00 63 6b 32 32 20 5b 5f 20 22 47 6f 20 74 6f 20 70  ck22 [_ "Go to p
41e10 6f 73 69 74 69 6f 6e 22 5d 20 22 52 61 6d 44 65  osition"] "RamDe
41e20 62 75 67 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e  bugger::Position
41e30 73 53 74 61 63 6b 20 67 6f 22 20 5c 0a 09 09 61  sStack go" \...a
41e40 63 74 62 6f 6f 6b 6d 61 72 6b 32 32 20 5b 5f 20  ctbookmark22 [_ 
41e50 22 53 61 76 65 2f 63 6c 65 61 72 20 70 6f 73 69  "Save/clear posi
41e60 74 69 6f 6e 22 5d 20 22 52 61 6d 44 65 62 75 67  tion"] "RamDebug
41e70 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74  ger::PositionsSt
41e80 61 63 6b 20 73 61 76 65 22 20 5c 0a 09 09 2d 20  ack save" \...- 
41e90 2d 20 2d 20 5c 0a 09 09 5d 0a 09 69 66 20 7b 20  - - \...]..if { 
41ea0 24 74 6b 74 61 62 6c 65 74 5f 6f 6b 20 7d 20 7b  $tktablet_ok } {
41eb0 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 61  ..    lappend da
41ec0 74 61 20 22 22 20 5b 5f 20 22 41 63 74 69 76 61  ta "" [_ "Activa
41ed0 74 65 20 54 61 62 6c 65 74 50 43 20 64 72 61 67  te TabletPC drag
41ee0 22 5d 20 22 22 0a 09 7d 0a 09 6c 61 70 70 65 6e  "] ""..}..lappen
41ef0 64 20 64 61 74 61 20 63 6f 6c 6f 72 69 7a 65 2d  d data colorize-
41f00 32 32 20 5b 5f 20 22 52 65 69 6e 73 74 72 75 6d  22 [_ "Reinstrum
41f10 65 6e 74 20 61 6e 64 20 72 65 63 6f 6c 6f 72 69  ent and recolori
41f20 7a 65 20 63 6f 64 65 22 5d 20 22 52 61 6d 44 65  ze code"] "RamDe
41f30 62 75 67 67 65 72 3a 3a 52 65 69 6e 73 74 72 75  bugger::Reinstru
41f40 6d 65 6e 74 43 75 72 72 65 6e 74 46 69 6c 65 22  mentCurrentFile"
41f50 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 69  .    }.    set i
41f60 64 78 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68  dx 0.    foreach
41f70 20 22 69 6d 67 20 68 65 6c 70 20 63 6d 64 22 20   "img help cmd" 
41f80 24 64 61 74 61 20 7b 0a 09 69 66 20 7b 20 5b 73  $data {..if { [s
41f90 74 72 69 6e 67 20 6d 61 74 63 68 20 22 6d 65 6e  tring match "men
41fa0 75 62 75 74 74 6f 6e 5f 62 75 74 74 6f 6e 20 2a  ubutton_button *
41fb0 22 20 24 63 6d 64 5d 20 7d 20 7b 0a 09 20 20 20  " $cmd] } {..   
41fc0 20 63 75 3a 3a 6d 65 6e 75 62 75 74 74 6f 6e 5f   cu::menubutton_
41fd0 62 75 74 74 6f 6e 20 24 74 6f 6f 6c 62 61 72 2e  button $toolbar.
41fe0 62 62 6f 78 24 69 64 78 20 2d 69 6d 61 67 65 20  bbox$idx -image 
41ff0 24 69 6d 67 20 2d 73 74 79 6c 65 20 54 6f 6f 6c  $img -style Tool
42000 62 75 74 74 6f 6e 20 5c 0a 09 09 2d 63 6f 6d 6d  button \...-comm
42010 61 6e 64 20 5b 6c 69 6e 64 65 78 20 24 63 6d 64  and [lindex $cmd
42020 20 31 5d 20 2d 6d 65 6e 75 20 24 74 6f 6f 6c 62   1] -menu $toolb
42030 61 72 2e 62 62 6f 78 24 69 64 78 2e 6d 20 5c 0a  ar.bbox$idx.m \.
42040 09 09 2d 74 61 6b 65 66 6f 63 75 73 20 30 0a 09  ..-takefocus 0..
42050 20 20 20 20 73 65 74 20 63 20 5b 73 74 72 69 6e      set c [strin
42060 67 20 6d 61 70 20 5b 6c 69 73 74 20 25 57 20 24  g map [list %W $
42070 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78  toolbar.bbox$idx
42080 2e 6d 5d 20 5b 6c 69 6e 64 65 78 20 24 63 6d 64  .m] [lindex $cmd
42090 20 32 5d 5d 0a 09 20 20 20 20 6d 65 6e 75 20 24   2]]..    menu $
420a0 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78  toolbar.bbox$idx
420b0 2e 6d 20 2d 74 65 61 72 6f 66 66 20 30 20 2d 70  .m -tearoff 0 -p
420c0 6f 73 74 63 6f 6d 6d 61 6e 64 20 24 63 0a 09 20  ostcommand $c.. 
420d0 20 20 20 74 6f 6f 6c 74 69 70 3a 3a 74 6f 6f 6c     tooltip::tool
420e0 74 69 70 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f  tip $toolbar.bbo
420f0 78 24 69 64 78 20 24 68 65 6c 70 0a 09 7d 20 65  x$idx $help..} e
42100 6c 73 65 69 66 20 7b 20 24 69 6d 67 20 6e 65 20  lseif { $img ne 
42110 22 2d 22 20 7d 20 7b 0a 09 20 20 20 20 74 74 6b  "-" } {..    ttk
42120 3a 3a 62 75 74 74 6f 6e 20 24 74 6f 6f 6c 62 61  ::button $toolba
42130 72 2e 62 62 6f 78 24 69 64 78 20 2d 69 6d 61 67  r.bbox$idx -imag
42140 65 20 24 69 6d 67 20 2d 73 74 79 6c 65 20 54 6f  e $img -style To
42150 6f 6c 62 75 74 74 6f 6e 20 2d 63 6f 6d 6d 61 6e  olbutton -comman
42160 64 20 24 63 6d 64 20 5c 0a 09 09 2d 74 61 6b 65  d $cmd \...-take
42170 66 6f 63 75 73 20 30 0a 09 20 20 20 20 74 6f 6f  focus 0..    too
42180 6c 74 69 70 3a 3a 74 6f 6f 6c 74 69 70 20 24 74  ltip::tooltip $t
42190 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78 20  oolbar.bbox$idx 
421a0 24 68 65 6c 70 0a 09 7d 20 65 6c 73 65 20 7b 0a  $help..} else {.
421b0 09 20 20 20 20 74 74 6b 3a 3a 73 65 70 61 72 61  .    ttk::separa
421c0 74 6f 72 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f  tor $toolbar.bbo
421d0 78 24 69 64 78 20 2d 6f 72 69 65 6e 74 20 76 65  x$idx -orient ve
421e0 72 74 69 63 61 6c 0a 09 7d 0a 09 67 72 69 64 20  rtical..}..grid 
421f0 24 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64  $toolbar.bbox$id
42200 78 20 2d 72 6f 77 20 30 20 2d 63 6f 6c 75 6d 6e  x -row 0 -column
42210 20 24 69 64 78 20 2d 73 74 69 63 6b 79 20 6e 73   $idx -sticky ns
42220 0a 09 69 6e 63 72 20 69 64 78 0a 20 20 20 20 7d  ..incr idx.    }
42230 0a 20 20 20 20 67 72 69 64 20 63 6f 6c 75 6d 6e  .    grid column
42240 63 6f 6e 66 69 67 75 72 65 20 24 74 6f 6f 6c 62  configure $toolb
42250 61 72 20 24 69 64 78 20 2d 77 65 69 67 68 74 20  ar $idx -weight 
42260 31 0a 20 20 20 20 69 66 20 7b 20 24 74 6b 74 61  1.    if { $tkta
42270 62 6c 65 74 5f 6f 6b 20 7d 20 7b 0a 09 73 65 74  blet_ok } {..set
42280 20 74 61 62 6c 65 74 50 43 5f 64 72 61 67 5f 62   tabletPC_drag_b
42290 75 74 74 6f 6e 20 24 74 6f 6f 6c 62 61 72 2e 62  utton $toolbar.b
422a0 62 6f 78 5b 65 78 70 72 20 7b 24 69 64 78 2d 32  box[expr {$idx-2
422b0 7d 5d 0a 20 20 20 20 7d 0a 20 20 20 20 23 23 23  }].    }.    ###
422c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
422d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
422e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
422f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42300 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20  #############.  
42310 20 20 23 20 74 68 65 20 68 6f 72 69 7a 6f 6e 74    # the horizont
42320 61 6c 20 33 20 6c 65 76 65 6c 73 20 70 61 6e 65  al 3 levels pane
42330 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
42340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42360 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42370 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42380 23 23 23 23 23 0a 0a 20 20 20 20 23 73 65 74 20  #####..    #set 
42390 70 77 20 5b 50 61 6e 65 64 57 69 6e 64 6f 77 20  pw [PanedWindow 
423a0 24 66 2e 70 77 20 2d 73 69 64 65 20 74 6f 70 20  $f.pw -side top 
423b0 2d 70 61 64 20 30 20 2d 77 65 69 67 68 74 73 20  -pad 0 -weights 
423c0 61 76 61 69 6c 61 62 6c 65 20 2d 61 63 74 69 76  available -activ
423d0 61 74 6f 72 20 6c 69 6e 65 5d 0a 20 20 20 20 73  ator line].    s
423e0 65 74 20 70 77 20 5b 70 61 6e 65 64 77 69 6e 64  et pw [panedwind
423f0 6f 77 20 24 66 2e 70 77 20 2d 6f 72 69 65 6e 74  ow $f.pw -orient
42400 20 68 6f 72 69 7a 6f 6e 74 61 6c 5d 0a 0a 20 20   horizontal]..  
42410 20 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20    if { [llength 
42420 5b 4d 61 6e 61 67 65 50 61 6e 65 73 20 24 70 77  [ManagePanes $pw
42430 20 68 20 22 33 30 30 20 31 30 30 22 5d 5d 20 3d   h "300 100"]] =
42440 3d 20 33 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68  = 3 } {..foreach
42450 20 22 77 65 69 67 68 74 31 20 77 65 69 67 68 74   "weight1 weight
42460 32 20 77 65 69 67 68 74 33 22 20 5b 4d 61 6e 61  2 weight3" [Mana
42470 67 65 50 61 6e 65 73 20 24 70 77 20 68 20 22 31  gePanes $pw h "1
42480 30 30 20 33 30 30 20 31 30 30 22 5d 20 62 72 65  00 300 100"] bre
42490 61 6b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  ak.    } else {.
424a0 09 73 65 74 20 77 65 69 67 68 74 31 20 32 0a 09  .set weight1 2..
424b0 66 6f 72 65 61 63 68 20 22 77 65 69 67 68 74 32  foreach "weight2
424c0 20 77 65 69 67 68 74 33 22 20 5b 4d 61 6e 61 67   weight3" [Manag
424d0 65 50 61 6e 65 73 20 24 70 77 20 68 20 22 33 30  ePanes $pw h "30
424e0 30 20 31 30 30 22 5d 20 62 72 65 61 6b 0a 20 20  0 100"] break.  
424f0 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b    }..    if { ![
42500 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69  info exists opti
42510 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 5d  ons(defaultdir)]
42520 20 7d 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e   } {..set option
42530 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 5b 70  s(defaultdir) [p
42540 77 64 5d 0a 20 20 20 20 7d 0a 20 20 20 20 23 73  wd].    }.    #s
42550 65 74 20 70 61 6e 65 31 20 5b 24 70 77 20 61 64  et pane1 [$pw ad
42560 64 20 2d 77 65 69 67 68 74 20 24 77 65 69 67 68  d -weight $weigh
42570 74 31 5d 0a 0a 20 20 20 20 73 65 74 20 6c 69 73  t1]..    set lis
42580 74 62 6f 78 6c 61 62 65 6c 66 72 61 6d 65 20 5b  tboxlabelframe [
42590 66 72 61 6d 65 20 24 66 2e 6c 66 6c 66 5d 0a 20  frame $f.lflf]. 
425a0 20 20 20 73 65 74 20 70 61 6e 65 31 20 24 6c 69     set pane1 $li
425b0 73 74 62 6f 78 6c 61 62 65 6c 66 72 61 6d 65 0a  stboxlabelframe.
425c0 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f  .    if { $optio
425d0 6e 73 28 6c 69 73 74 66 69 6c 65 73 70 61 6e 65  ns(listfilespane
425e0 29 20 7d 20 7b 0a 09 24 70 77 20 61 64 64 20 24  ) } {..$pw add $
425f0 66 2e 6c 66 6c 66 20 2d 73 74 69 63 6b 79 20 6e  f.lflf -sticky n
42600 73 65 77 20 2d 77 69 64 74 68 20 24 77 65 69 67  sew -width $weig
42610 68 74 31 20 2d 6d 69 6e 73 69 7a 65 20 31 30 30  ht1 -minsize 100
42620 0a 20 20 20 20 7d 0a 0a 23 20 20 20 20 20 67 72  .    }..#     gr
42630 69 64 20 24 66 2e 6c 66 6c 66 20 2d 69 6e 20 24  id $f.lflf -in $
42640 70 61 6e 65 31 20 2d 72 6f 77 20 30 20 2d 63 6f  pane1 -row 0 -co
42650 6c 75 6d 6e 20 30 20 2d 73 74 69 63 6b 79 20 6e  lumn 0 -sticky n
42660 73 65 77 0a 23 20 20 20 20 20 67 72 69 64 20 63  sew.#     grid c
42670 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24  olumnconfigure $
42680 70 61 6e 65 31 20 30 20 2d 77 65 69 67 68 74 20  pane1 0 -weight 
42690 31 0a 23 20 20 20 20 20 67 72 69 64 20 72 6f 77  1.#     grid row
426a0 63 6f 6e 66 69 67 75 72 65 20 24 70 61 6e 65 31  configure $pane1
426b0 20 30 20 2d 77 65 69 67 68 74 20 31 0a 0a 20 20   0 -weight 1..  
426c0 20 20 73 65 74 20 6c 69 73 74 62 6f 78 6c 61 62    set listboxlab
426d0 65 6c 20 5b 4c 61 62 65 6c 20 24 6c 69 73 74 62  el [Label $listb
426e0 6f 78 6c 61 62 65 6c 66 72 61 6d 65 2e 6c 20 2d  oxlabelframe.l -
426f0 61 6e 63 68 6f 72 20 65 20 2d 72 65 6c 69 65 66  anchor e -relief
42700 20 72 61 69 73 65 64 20 2d 62 64 20 31 20 5c 0a   raised -bd 1 \.
42710 09 2d 70 61 64 78 20 35 20 2d 67 72 69 64 20 22  .-padx 5 -grid "
42720 30 20 65 77 22 5d 0a 20 20 20 20 62 69 6e 64 20  0 ew"].    bind 
42730 24 6c 69 73 74 62 6f 78 6c 61 62 65 6c 20 3c 43  $listboxlabel <C
42740 6f 6e 66 69 67 75 72 65 3e 20 22 52 61 6d 44 65  onfigure> "RamDe
42750 62 75 67 67 65 72 3a 3a 43 6f 6e 66 69 67 75 72  bugger::Configur
42760 65 4c 61 62 65 6c 20 24 6c 69 73 74 62 6f 78 6c  eLabel $listboxl
42770 61 62 65 6c 22 0a 0a 20 20 20 20 62 69 6e 64 20  abel"..    bind 
42780 24 6c 69 73 74 62 6f 78 6c 61 62 65 6c 20 3c 42  $listboxlabel <B
42790 75 74 74 6f 6e 50 72 65 73 73 2d 31 3e 20 22 52  uttonPress-1> "R
427a0 61 6d 44 65 62 75 67 67 65 72 3a 3a 4c 69 73 74  amDebugger::List
427b0 42 6f 78 4c 61 62 65 6c 4d 65 6e 75 20 24 6c 69  BoxLabelMenu $li
427c0 73 74 62 6f 78 6c 61 62 65 6c 20 25 58 20 25 59  stboxlabel %X %Y
427d0 22 0a 20 20 20 20 62 69 6e 64 20 24 6c 69 73 74  ".    bind $list
427e0 62 6f 78 6c 61 62 65 6c 20 3c 3c 43 6f 6e 74 65  boxlabel <<Conte
427f0 78 74 75 61 6c 3e 3e 20 22 52 61 6d 44 65 62 75  xtual>> "RamDebu
42800 67 67 65 72 3a 3a 4c 69 73 74 42 6f 78 4c 61 62  gger::ListBoxLab
42810 65 6c 4d 65 6e 75 20 24 6c 69 73 74 62 6f 78 6c  elMenu $listboxl
42820 61 62 65 6c 20 25 58 20 25 59 22 0a 0a 20 20 20  abel %X %Y"..   
42830 20 73 65 74 20 73 77 20 5b 53 63 72 6f 6c 6c 65   set sw [Scrolle
42840 64 57 69 6e 64 6f 77 20 24 6c 69 73 74 62 6f 78  dWindow $listbox
42850 6c 61 62 65 6c 66 72 61 6d 65 2e 6c 66 20 2d 72  labelframe.lf -r
42860 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f  elief sunken -bo
42870 72 64 65 72 77 69 64 74 68 20 30 20 2d 67 72 69  rderwidth 0 -gri
42880 64 20 30 5d 0a 20 20 20 20 73 65 74 20 6c 69 73  d 0].    set lis
42890 74 62 6f 78 20 5b 4c 69 73 74 42 6f 78 20 24 73  tbox [ListBox $s
428a0 77 2e 6c 62 20 2d 62 61 63 6b 67 72 6f 75 6e 64  w.lb -background
428b0 20 77 68 69 74 65 20 2d 6d 75 6c 74 69 63 6f 6c   white -multicol
428c0 75 6d 6e 20 30 20 2d 73 65 6c 65 63 74 6d 6f 64  umn 0 -selectmod
428d0 65 20 73 69 6e 67 6c 65 5d 0a 20 20 20 20 24 73  e single].    $s
428e0 77 20 73 65 74 77 69 64 67 65 74 20 24 6c 69 73  w setwidget $lis
428f0 74 62 6f 78 0a 0a 20 20 20 20 24 73 77 2e 6c 62  tbox..    $sw.lb
42900 20 63 6f 6e 66 69 67 75 72 65 20 2d 64 65 6c 74   configure -delt
42910 61 79 20 5b 65 78 70 72 20 5b 66 6f 6e 74 20 6d  ay [expr [font m
42920 65 74 72 69 63 73 20 5b 24 73 77 2e 6c 62 20 63  etrics [$sw.lb c
42930 67 65 74 20 2d 66 6f 6e 74 5d 20 2d 6c 69 6e 65  get -font] -line
42940 73 70 61 63 65 5d 5d 0a 20 20 20 20 4c 69 73 74  space]].    List
42950 42 6f 78 45 76 65 6e 74 73 20 24 6c 69 73 74 62  BoxEvents $listb
42960 6f 78 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  ox RamDebugger::
42970 4c 69 73 74 42 6f 78 44 6f 75 62 6c 65 31 20 52  ListBoxDouble1 R
42980 61 6d 44 65 62 75 67 67 65 72 3a 3a 4c 69 73 74  amDebugger::List
42990 62 6f 78 4d 65 6e 75 0a 20 20 20 20 73 75 70 65  boxMenu.    supe
429a0 72 67 72 69 64 3a 3a 67 6f 20 24 66 2e 6c 66 6c  rgrid::go $f.lfl
429b0 66 0a 0a 20 20 20 20 23 73 65 74 20 70 61 6e 65  f..    #set pane
429c0 32 20 5b 24 70 77 20 61 64 64 20 2d 77 65 69 67  2 [$pw add -weig
429d0 68 74 20 24 77 65 69 67 68 74 32 5d 0a 20 20 20  ht $weight2].   
429e0 20 73 65 74 20 70 61 6e 65 32 20 5b 66 72 61 6d   set pane2 [fram
429f0 65 20 24 70 77 2e 70 61 6e 65 32 5d 0a 20 20 20  e $pw.pane2].   
42a00 20 24 70 77 20 61 64 64 20 24 70 61 6e 65 32 20   $pw add $pane2 
42a10 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 2d 77 69  -sticky nsew -wi
42a20 64 74 68 20 24 77 65 69 67 68 74 32 0a 0a 20 20  dth $weight2..  
42a30 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
42a40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42a50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42a60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42a70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42a80 23 23 0a 20 20 20 20 23 20 74 68 65 20 76 65 72  ##.    # the ver
42a90 74 69 63 61 6c 20 65 64 69 74 20 77 69 6e 64 6f  tical edit windo
42aa0 77 20 61 6e 64 20 73 74 61 63 6b 20 74 72 61 63  w and stack trac
42ab0 65 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  e.    ##########
42ac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42ad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42ae0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42af0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
42b00 23 23 23 23 23 23 0a 0a 20 20 20 20 73 65 74 20  ######..    set 
42b10 70 77 69 6e 20 5b 70 61 6e 65 64 77 69 6e 64 6f  pwin [panedwindo
42b20 77 20 24 70 61 6e 65 32 2e 70 77 20 2d 6f 72 69  w $pane2.pw -ori
42b30 65 6e 74 20 76 65 72 74 69 63 61 6c 20 2d 67 72  ent vertical -gr
42b40 69 64 20 30 5d 0a 0a 20 20 20 20 66 6f 72 65 61  id 0]..    forea
42b50 63 68 20 22 77 65 69 67 68 74 31 69 6e 20 77 65  ch "weight1in we
42b60 69 67 68 74 32 69 6e 22 20 5b 4d 61 6e 61 67 65  ight2in" [Manage
42b70 50 61 6e 65 73 20 24 70 77 69 6e 20 76 20 22 33  Panes $pwin v "3
42b80 30 30 20 35 30 22 5d 20 62 72 65 61 6b 0a 0a 20  00 50"] break.. 
42b90 20 20 20 23 73 65 74 20 70 61 6e 65 32 69 6e 31     #set pane2in1
42ba0 20 5b 24 70 77 69 6e 20 61 64 64 20 2d 77 65 69   [$pwin add -wei
42bb0 67 68 74 20 24 77 65 69 67 68 74 31 69 6e 5d 0a  ght $weight1in].
42bc0 20 20 20 20 73 65 74 20 70 61 6e 65 32 69 6e 31      set pane2in1
42bd0 20 5b 66 72 61 6d 65 20 24 70 77 69 6e 2e 70 61   [frame $pwin.pa
42be0 6e 65 32 69 6e 31 5d 0a 20 20 20 20 24 70 77 69  ne2in1].    $pwi
42bf0 6e 20 61 64 64 20 24 70 61 6e 65 32 69 6e 31 20  n add $pane2in1 
42c00 2d 68 65 69 67 68 74 20 24 77 65 69 67 68 74 31  -height $weight1
42c10 69 6e 0a 0a 20 20 20 20 73 65 74 20 66 75 6c 6c  in..    set full
42c20 74 65 78 74 20 5b 66 72 61 6d 65 20 24 66 2e 66  text [frame $f.f
42c30 75 6c 6c 74 65 78 74 20 2d 67 72 69 64 20 6e 6f  ulltext -grid no
42c40 20 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 73   -bd 1 -relief s
42c50 75 6e 6b 65 6e 5d 0a 20 20 20 20 67 72 69 64 20  unken].    grid 
42c60 24 66 75 6c 6c 74 65 78 74 20 2d 69 6e 20 24 70  $fulltext -in $p
42c70 61 6e 65 32 69 6e 31 20 2d 73 74 69 63 6b 79 20  ane2in1 -sticky 
42c80 6e 73 65 77 0a 20 20 20 20 67 72 69 64 20 72 6f  nsew.    grid ro
42c90 77 63 6f 6e 66 20 24 70 61 6e 65 32 69 6e 31 20  wconf $pane2in1 
42ca0 30 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20  0 -weight 1.    
42cb0 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 20  grid columnconf 
42cc0 24 70 61 6e 65 32 69 6e 31 20 30 20 2d 77 65 69  $pane2in1 0 -wei
42cd0 67 68 74 20 31 0a 0a 20 20 20 20 73 65 74 20 6d  ght 1..    set m
42ce0 61 72 6b 65 72 20 5b 63 61 6e 76 61 73 20 24 66  arker [canvas $f
42cf0 75 6c 6c 74 65 78 74 2e 63 61 6e 20 2d 62 67 20  ulltext.can -bg 
42d00 67 72 65 79 39 30 20 2d 67 72 69 64 20 22 30 20  grey90 -grid "0 
42d10 77 6e 73 22 20 2d 77 69 64 74 68 20 31 34 20 2d  wns" -width 14 -
42d20 62 64 20 30 20 5c 0a 09 20 20 20 20 2d 68 69 67  bd 0 \..    -hig
42d30 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20  hlightthickness 
42d40 30 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b  0].    .    if {
42d50 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d   $::tcl_platform
42d60 28 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77  (platform) eq "w
42d70 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 65 76 65  indows" } {..eve
42d80 6e 74 20 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74  nt add <<Context
42d90 75 61 6c 50 72 65 73 73 3e 3e 20 3c 42 75 74 74  ualPress>> <Butt
42da0 6f 6e 50 72 65 73 73 2d 33 3e 0a 09 65 76 65 6e  onPress-3>..even
42db0 74 20 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75  t add <<Contextu
42dc0 61 6c 3e 3e 20 3c 42 75 74 74 6f 6e 52 65 6c 65  al>> <ButtonRele
42dd0 61 73 65 2d 33 3e 0a 09 65 76 65 6e 74 20 61 64  ase-3>..event ad
42de0 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 3e 3e  d <<Contextual>>
42df0 20 3c 41 70 70 3e 0a 09 73 65 74 20 3a 3a 63 6f   <App>..set ::co
42e00 6e 74 72 6f 6c 20 43 6f 6e 74 72 6f 6c 0a 09 73  ntrol Control..s
42e10 65 74 20 3a 3a 63 6f 6e 74 72 6f 6c 5f 74 78 74  et ::control_txt
42e20 20 43 74 72 6c 0a 09 73 65 74 20 3a 3a 61 6c 74   Ctrl..set ::alt
42e30 20 41 6c 74 0a 09 73 65 74 20 3a 3a 61 6c 74 5f   Alt..set ::alt_
42e40 74 78 74 20 41 6c 74 0a 20 20 20 20 7d 20 65 6c  txt Alt.    } el
42e50 73 65 69 66 20 7b 20 5b 74 6b 20 77 69 6e 64 6f  seif { [tk windo
42e60 77 69 6e 67 73 79 73 74 65 6d 5d 20 65 71 20 22  wingsystem] eq "
42e70 61 71 75 61 22 20 7d 20 7b 0a 09 65 76 65 6e 74  aqua" } {..event
42e80 20 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61   add <<Contextua
42e90 6c 50 72 65 73 73 3e 3e 20 3c 42 75 74 74 6f 6e  lPress>> <Button
42ea0 50 72 65 73 73 2d 32 3e 0a 09 65 76 65 6e 74 20  Press-2>..event 
42eb0 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c  add <<Contextual
42ec0 3e 3e 20 3c 42 75 74 74 6f 6e 52 65 6c 65 61 73  >> <ButtonReleas
42ed0 65 2d 32 3e 0a 09 73 65 74 20 3a 3a 63 6f 6e 74  e-2>..set ::cont
42ee0 72 6f 6c 20 43 6f 6d 6d 61 6e 64 0a 09 73 65 74  rol Command..set
42ef0 20 3a 3a 63 6f 6e 74 72 6f 6c 5f 74 78 74 20 43   ::control_txt C
42f00 6f 6d 6d 61 6e 64 0a 09 73 65 74 20 3a 3a 61 6c  ommand..set ::al
42f10 74 20 43 6f 6e 74 72 6f 6c 0a 09 73 65 74 20 3a  t Control..set :
42f20 3a 61 6c 74 5f 74 78 74 20 43 74 72 6c 0a 09 0a  :alt_txt Ctrl...
42f30 09 66 6f 72 65 61 63 68 20 65 76 20 5b 62 69 6e  .foreach ev [bin
42f40 64 20 54 65 78 74 5d 20 7b 0a 09 20 20 20 20 69  d Text] {..    i
42f50 66 20 7b 20 5b 72 65 67 73 75 62 20 7b 43 6f 6e  f { [regsub {Con
42f60 74 72 6f 6c 7d 20 24 65 76 20 7b 43 6f 6d 6d 61  trol} $ev {Comma
42f70 6e 64 7d 20 65 76 43 5d 20 7d 20 7b 0a 09 09 62  nd} evC] } {...b
42f80 69 6e 64 20 54 65 78 74 20 24 65 76 43 20 5b 62  ind Text $evC [b
42f90 69 6e 64 20 54 65 78 74 20 24 65 76 5d 0a 09 20  ind Text $ev].. 
42fa0 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c     }..}.    } el
42fb0 73 65 20 7b 0a 09 65 76 65 6e 74 20 61 64 64 20  se {..event add 
42fc0 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 50 72 65 73  <<ContextualPres
42fd0 73 3e 3e 20 3c 42 75 74 74 6f 6e 50 72 65 73 73  s>> <ButtonPress
42fe0 2d 33 3e 0a 09 65 76 65 6e 74 20 61 64 64 20 3c  -3>..event add <
42ff0 3c 43 6f 6e 74 65 78 74 75 61 6c 3e 3e 20 3c 42  <Contextual>> <B
43000 75 74 74 6f 6e 52 65 6c 65 61 73 65 2d 33 3e 0a  uttonRelease-3>.
43010 09 73 65 74 20 3a 3a 63 6f 6e 74 72 6f 6c 20 43  .set ::control C
43020 6f 6e 74 72 6f 6c 0a 09 73 65 74 20 3a 3a 63 6f  ontrol..set ::co
43030 6e 74 72 6f 6c 5f 74 78 74 20 43 74 72 6c 0a 09  ntrol_txt Ctrl..
43040 73 65 74 20 3a 3a 61 6c 74 20 41 6c 74 0a 09 73  set ::alt Alt..s
43050 65 74 20 3a 3a 61 6c 74 5f 74 78 74 20 41 6c 74  et ::alt_txt Alt
43060 0a 20 20 20 20 7d 0a 20 20 20 20 62 69 6e 64 20  .    }.    bind 
43070 24 6d 61 72 6b 65 72 20 3c 3c 43 6f 6e 74 65 78  $marker <<Contex
43080 74 75 61 6c 3e 3e 20 5b 6c 69 73 74 20 52 61 6d  tual>> [list Ram
43090 44 65 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72  Debugger::Marker
430a0 43 6f 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e  ContextualSubmen
430b0 75 20 25 57 20 25 78 20 25 79 20 25 58 20 25 59  u %W %x %y %X %Y
430c0 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 74  ].    .    set t
430d0 65 78 74 20 5b 73 75 70 65 72 74 65 78 74 3a 3a  ext [supertext::
430e0 74 65 78 74 20 24 66 75 6c 6c 74 65 78 74 2e 74  text $fulltext.t
430f0 65 78 74 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20  ext -background 
43100 77 68 69 74 65 20 2d 66 6f 72 65 67 72 6f 75 6e  white -foregroun
43110 64 20 62 6c 61 63 6b 20 5c 0a 09 09 20 20 2d 77  d black \...  -w
43120 72 61 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68 20  rap none -width 
43130 38 30 20 2d 68 65 69 67 68 74 20 34 30 20 5c 0a  80 -height 40 \.
43140 09 09 20 20 2d 65 78 70 6f 72 74 73 65 6c 65 63  ..  -exportselec
43150 74 69 6f 6e 20 30 20 2d 66 6f 6e 74 20 46 69 78  tion 0 -font Fix
43160 65 64 46 6f 6e 74 20 2d 68 69 67 68 6c 69 67 68  edFont -highligh
43170 74 74 68 69 63 6b 6e 65 73 73 20 30 20 2d 65 64  tthickness 0 -ed
43180 69 74 61 62 6c 65 20 30 20 5c 0a 09 09 20 20 2d  itable 0 \...  -
43190 70 72 65 70 72 6f 63 20 52 61 6d 44 65 62 75 67  preproc RamDebug
431a0 67 65 72 3a 3a 43 68 65 63 6b 54 65 78 74 42 65  ger::CheckTextBe
431b0 66 6f 72 65 20 5c 0a 09 09 20 20 2d 70 6f 73 74  fore \...  -post
431c0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72  proc RamDebugger
431d0 3a 3a 55 70 64 61 74 65 4c 69 6e 65 4e 75 6d 20  ::UpdateLineNum 
431e0 2d 62 64 20 30 20 2d 67 72 69 64 20 31 20 5c 0a  -bd 0 -grid 1 \.
431f0 09 09 20 20 2d 75 6e 64 6f 63 61 6c 6c 62 61 63  ..  -undocallbac
43200 6b 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  k "RamDebugger::
43210 55 6e 64 6f 43 61 6c 6c 62 61 63 6b 22 20 5c 0a  UndoCallback" \.
43220 09 09 20 20 2d 78 73 63 72 6f 6c 6c 63 6f 6d 6d  ..  -xscrollcomm
43230 61 6e 64 20 5b 6c 69 73 74 20 24 66 75 6c 6c 74  and [list $fullt
43240 65 78 74 2e 78 73 63 72 6f 6c 6c 20 73 65 74 5d  ext.xscroll set]
43250 20 5c 0a 09 09 20 20 2d 79 73 63 72 6f 6c 6c 63   \...  -yscrollc
43260 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d  ommand [list Ram
43270 44 65 62 75 67 67 65 72 3a 3a 53 63 72 6f 6c 6c  Debugger::Scroll
43280 53 63 72 6f 6c 6c 41 6e 64 43 61 6e 76 61 73 20  ScrollAndCanvas 
43290 24 66 75 6c 6c 74 65 78 74 2e 74 65 78 74 20 5c  $fulltext.text \
432a0 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
432b0 20 20 20 20 20 20 20 20 20 20 24 66 75 6c 6c 74            $fullt
432c0 65 78 74 2e 79 73 63 72 6f 6c 6c 20 24 66 75 6c  ext.yscroll $ful
432d0 6c 74 65 78 74 2e 63 61 6e 5d 5d 0a 20 20 20 20  ltext.can]].    
432e0 73 63 72 6f 6c 6c 62 61 72 20 24 66 75 6c 6c 74  scrollbar $fullt
432f0 65 78 74 2e 79 73 63 72 6f 6c 6c 20 2d 6f 72 69  ext.yscroll -ori
43300 65 6e 74 20 76 65 72 74 69 63 61 6c 20 2d 67 72  ent vertical -gr
43310 69 64 20 32 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a  id 2 -command \.
43320 09 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67  .[list RamDebugg
43330 65 72 3a 3a 53 63 72 6f 6c 6c 54 65 78 74 41 6e  er::ScrollTextAn
43340 64 43 61 6e 76 61 73 20 24 66 75 6c 6c 74 65 78  dCanvas $fulltex
43350 74 2e 74 65 78 74 20 24 66 75 6c 6c 74 65 78 74  t.text $fulltext
43360 2e 63 61 6e 5d 0a 20 20 20 20 73 63 72 6f 6c 6c  .can].    scroll
43370 62 61 72 20 24 66 75 6c 6c 74 65 78 74 2e 78 73  bar $fulltext.xs
43380 63 72 6f 6c 6c 20 2d 6f 72 69 65 6e 74 20 68 6f  croll -orient ho
43390 72 69 7a 6f 6e 74 61 6c 20 2d 67 72 69 64 20 22  rizontal -grid "
433a0 30 20 32 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 24  0 2" -command "$
433b0 66 75 6c 6c 74 65 78 74 2e 74 65 78 74 20 78 76  fulltext.text xv
433c0 69 65 77 22 0a 0a 20 20 20 20 41 70 70 6c 79 43  iew"..    ApplyC
433d0 6f 6c 6f 72 50 72 65 66 73 20 24 74 65 78 74 0a  olorPrefs $text.
433e0 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 21 24      .    if { !$
433f0 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09 73 65 74  iswince } {..set
43400 20 72 65 73 20 32 30 0a 20 20 20 20 7d 20 65 6c   res 20.    } el
43410 73 65 20 7b 0a 09 73 65 74 20 72 65 73 20 31 36  se {..set res 16
43420 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b  .    }..    if {
43430 20 24 74 6b 74 61 62 6c 65 74 5f 6f 6b 20 26 26   $tktablet_ok &&
43440 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 61   [info exists ta
43450 62 6c 65 74 50 43 5f 64 72 61 67 5f 62 75 74 74  bletPC_drag_butt
43460 6f 6e 5d 20 7d 20 7b 0a 09 74 6b 74 61 62 6c 65  on] } {..tktable
43470 74 3a 3a 64 72 61 67 5f 6d 6f 64 65 20 24 74 65  t::drag_mode $te
43480 78 74 20 24 74 61 62 6c 65 74 50 43 5f 64 72 61  xt $tabletPC_dra
43490 67 5f 62 75 74 74 6f 6e 20 52 61 6d 44 65 62 75  g_button RamDebu
434a0 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 54 61  gger::options(Ta
434b0 62 6c 65 74 50 43 6d 6f 64 65 29 20 24 72 65 73  bletPCmode) $res
434c0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 73 65 74  .    }..    #set
434d0 20 70 61 6e 65 32 69 6e 32 20 5b 24 70 77 69 6e   pane2in2 [$pwin
434e0 20 61 64 64 20 2d 77 65 69 67 68 74 20 24 77 65   add -weight $we
434f0 69 67 68 74 32 69 6e 5d 0a 20 20 20 20 73 65 74  ight2in].    set
43500 20 70 61 6e 65 32 69 6e 32 20 5b 66 72 61 6d 65   pane2in2 [frame
43510 20 24 70 77 69 6e 2e 70 61 6e 65 32 69 6e 32 5d   $pwin.pane2in2]
43520 0a 20 20 20 20 24 70 77 69 6e 20 61 64 64 20 24  .    $pwin add $
43530 70 61 6e 65 32 69 6e 32 20 2d 68 65 69 67 68 74  pane2in2 -height
43540 20 24 77 65 69 67 68 74 32 69 6e 0a 0a 20 20 20   $weight2in..   
43550 20 4e 6f 74 65 42 6f 6f 6b 20 24 70 61 6e 65 32   NoteBook $pane2
43560 69 6e 32 2e 6e 62 20 2d 68 6f 6d 6f 67 65 6e 65  in2.nb -homogene
43570 6f 75 73 20 31 20 2d 62 64 20 31 20 2d 69 6e 74  ous 1 -bd 1 -int
43580 65 72 6e 61 6c 62 6f 72 64 65 72 77 69 64 74 68  ernalborderwidth
43590 20 30 20 5c 0a 09 20 20 20 20 2d 67 72 69 64 20   0 \..    -grid 
435a0 22 30 20 70 79 32 22 20 2d 73 69 64 65 20 62 6f  "0 py2" -side bo
435b0 74 74 6f 6d 0a 0a 20 20 20 20 73 65 74 20 66 31  ttom..    set f1
435c0 20 5b 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 69   [$pane2in2.nb i
435d0 6e 73 65 72 74 20 65 6e 64 20 73 74 61 63 6b 74  nsert end stackt
435e0 72 61 63 65 20 2d 74 65 78 74 20 5b 5f 20 22 53  race -text [_ "S
435f0 74 61 63 6b 20 74 72 61 63 65 22 5d 5d 0a 20 0a  tack trace"]]. .
43600 20 20 20 20 73 65 74 20 73 77 32 20 5b 53 63 72      set sw2 [Scr
43610 6f 6c 6c 65 64 57 69 6e 64 6f 77 20 24 66 31 2e  olledWindow $f1.
43620 6c 66 32 20 2d 72 65 6c 69 65 66 20 73 75 6e 6b  lf2 -relief sunk
43630 65 6e 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20  en -borderwidth 
43640 30 20 2d 67 72 69 64 20 22 30 22 20 5c 0a 09 20  0 -grid "0" \.. 
43650 20 20 20 2d 73 63 72 6f 6c 6c 62 61 72 20 62 6f     -scrollbar bo
43660 74 68 20 2d 61 75 74 6f 20 62 6f 74 68 5d 0a 20  th -auto both]. 
43670 20 20 20 73 65 74 20 74 65 78 74 53 54 20 5b 74     set textST [t
43680 65 78 74 20 24 73 77 32 2e 74 65 78 74 32 20 2d  ext $sw2.text2 -
43690 62 61 63 6b 67 72 6f 75 6e 64 20 77 68 69 74 65  background white
436a0 20 2d 77 72 61 70 20 6e 6f 6e 65 20 2d 77 69 64   -wrap none -wid
436b0 74 68 20 38 30 20 2d 68 65 69 67 68 74 20 34 20  th 80 -height 4 
436c0 5c 0a 09 20 20 20 20 2d 68 69 67 68 6c 69 67 68  \..    -highligh
436d0 74 74 68 69 63 6b 6e 65 73 73 20 30 20 2d 65 78  tthickness 0 -ex
436e0 70 6f 72 74 73 65 6c 65 63 74 69 6f 6e 20 30 5d  portselection 0]
436f0 0a 20 20 20 20 24 73 77 32 20 73 65 74 77 69 64  .    $sw2 setwid
43700 67 65 74 20 24 74 65 78 74 53 54 0a 0a 20 20 20  get $textST..   
43710 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24   supergrid::go $
43720 66 31 0a 0a 20 20 20 20 73 65 74 20 66 32 20 5b  f1..    set f2 [
43730 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 69 6e 73  $pane2in2.nb ins
43740 65 72 74 20 65 6e 64 20 6f 75 74 70 75 74 20 2d  ert end output -
43750 74 65 78 74 20 5b 5f 20 22 4f 75 74 70 75 74 22  text [_ "Output"
43760 5d 5d 0a 0a 20 20 20 20 73 65 74 20 73 77 32 20  ]]..    set sw2 
43770 5b 53 63 72 6f 6c 6c 65 64 57 69 6e 64 6f 77 20  [ScrolledWindow 
43780 24 66 32 2e 6c 66 32 20 2d 72 65 6c 69 65 66 20  $f2.lf2 -relief 
43790 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 65 72 77 69  sunken -borderwi
437a0 64 74 68 20 30 20 2d 67 72 69 64 20 22 30 22 20  dth 0 -grid "0" 
437b0 5c 0a 09 20 20 20 20 2d 73 63 72 6f 6c 6c 62 61  \..    -scrollba
437c0 72 20 62 6f 74 68 20 2d 61 75 74 6f 20 62 6f 74  r both -auto bot
437d0 68 5d 0a 20 20 20 20 73 65 74 20 74 65 78 74 4f  h].    set textO
437e0 55 54 20 5b 74 65 78 74 20 24 73 77 32 2e 74 65  UT [text $sw2.te
437f0 78 74 32 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20  xt2 -background 
43800 77 68 69 74 65 20 2d 77 72 61 70 20 6e 6f 6e 65  white -wrap none
43810 20 2d 77 69 64 74 68 20 38 30 20 2d 68 65 69 67   -width 80 -heig
43820 68 74 20 34 20 5c 0a 09 20 20 20 20 2d 68 69 67  ht 4 \..    -hig
43830 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20  hlightthickness 
43840 30 20 2d 65 78 70 6f 72 74 73 65 6c 65 63 74 69  0 -exportselecti
43850 6f 6e 20 30 5d 0a 20 20 20 20 24 73 77 32 20 73  on 0].    $sw2 s
43860 65 74 77 69 64 67 65 74 20 24 74 65 78 74 4f 55  etwidget $textOU
43870 54 0a 0a 20 20 20 20 73 75 70 65 72 67 72 69 64  T..    supergrid
43880 3a 3a 67 6f 20 24 66 32 0a 0a 20 20 20 20 73 65  ::go $f2..    se
43890 74 20 66 33 20 5b 24 70 61 6e 65 32 69 6e 32 2e  t f3 [$pane2in2.
438a0 6e 62 20 69 6e 73 65 72 74 20 65 6e 64 20 63 6f  nb insert end co
438b0 6d 70 69 6c 65 20 2d 74 65 78 74 20 5b 5f 20 22  mpile -text [_ "
438c0 43 6f 6d 70 69 6c 65 22 5d 5d 0a 0a 20 20 20 20  Compile"]]..    
438d0 73 65 74 20 73 77 32 20 5b 53 63 72 6f 6c 6c 65  set sw2 [Scrolle
438e0 64 57 69 6e 64 6f 77 20 24 66 33 2e 6c 66 33 20  dWindow $f3.lf3 
438f0 2d 72 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 2d  -relief sunken -
43900 62 6f 72 64 65 72 77 69 64 74 68 20 30 20 2d 67  borderwidth 0 -g
43910 72 69 64 20 22 30 22 20 5c 0a 09 20 20 20 20 2d  rid "0" \..    -
43920 73 63 72 6f 6c 6c 62 61 72 20 62 6f 74 68 20 2d  scrollbar both -
43930 61 75 74 6f 20 62 6f 74 68 5d 0a 20 20 20 20 73  auto both].    s
43940 65 74 20 74 65 78 74 43 4f 4d 50 20 5b 74 65 78  et textCOMP [tex
43950 74 20 24 73 77 32 2e 74 65 78 74 32 20 2d 62 61  t $sw2.text2 -ba
43960 63 6b 67 72 6f 75 6e 64 20 77 68 69 74 65 20 2d  ckground white -
43970 77 72 61 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68  wrap none -width
43980 20 38 30 20 2d 68 65 69 67 68 74 20 34 20 5c 0a   80 -height 4 \.
43990 09 20 20 20 20 2d 68 69 67 68 6c 69 67 68 74 74  .    -highlightt
439a0 68 69 63 6b 6e 65 73 73 20 30 20 2d 65 78 70 6f  hickness 0 -expo
439b0 72 74 73 65 6c 65 63 74 69 6f 6e 20 30 5d 0a 20  rtselection 0]. 
439c0 20 20 20 24 73 77 32 20 73 65 74 77 69 64 67 65     $sw2 setwidge
439d0 74 20 24 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20  t $textCOMP..   
439e0 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24   supergrid::go $
439f0 66 33 0a 0a 20 20 20 20 23 24 70 61 6e 65 32 69  f3..    #$pane2i
43a00 6e 32 2e 6e 62 20 63 6f 6d 70 75 74 65 5f 73 69  n2.nb compute_si
43a10 7a 65 0a 20 20 20 20 24 70 61 6e 65 32 69 6e 32  ze.    $pane2in2
43a20 2e 6e 62 20 72 61 69 73 65 20 73 74 61 63 6b 74  .nb raise stackt
43a30 72 61 63 65 0a 0a 20 20 20 20 70 72 6f 63 20 4e  race..    proc N
43a40 6f 74 65 42 6f 6f 6b 50 6f 70 75 70 4d 65 6e 75  oteBookPopupMenu
43a50 20 7b 20 66 20 78 20 79 20 70 61 67 65 20 7d 20   { f x y page } 
43a60 7b 0a 0a 09 63 61 74 63 68 20 7b 20 64 65 73 74  {...catch { dest
43a70 72 6f 79 20 24 66 2e 6d 20 7d 0a 09 6d 65 6e 75  roy $f.m }..menu
43a80 20 24 66 2e 6d 0a 09 73 77 69 74 63 68 20 24 70   $f.m..switch $p
43a90 61 67 65 20 7b 0a 09 20 20 20 20 73 74 61 63 6b  age {..    stack
43aa0 74 72 61 63 65 20 7b 20 0a 09 09 73 65 74 20 78  trace { ...set x
43ab0 74 20 5b 65 78 70 72 20 7b 24 78 2d 5b 77 69 6e  t [expr {$x-[win
43ac0 66 6f 20 72 6f 6f 74 78 20 24 66 5d 7d 5d 0a 09  fo rootx $f]}]..
43ad0 09 73 65 74 20 79 74 20 5b 65 78 70 72 20 7b 24  .set yt [expr {$
43ae0 79 2d 5b 77 69 6e 66 6f 20 72 6f 6f 74 79 20 24  y-[winfo rooty $
43af0 66 5d 7d 5d 0a 09 09 24 66 2e 6d 20 61 64 64 20  f]}]...$f.m add 
43b00 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b  command -label [
43b10 5f 20 22 41 63 74 69 76 61 74 65 20 73 74 61 63  _ "Activate stac
43b20 6b 20 6c 65 76 65 6c 22 5d 20 2d 63 6f 6d 6d 61  k level"] -comma
43b30 6e 64 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74  nd \...    [list
43b40 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 74   RamDebugger::St
43b50 61 63 6b 44 6f 75 62 6c 65 31 20 24 66 20 40 24  ackDouble1 $f @$
43b60 78 74 2c 24 79 74 5d 0a 09 09 24 66 2e 6d 20 61  xt,$yt]...$f.m a
43b70 64 64 20 63 68 65 63 6b 62 75 74 74 6f 6e 20 2d  dd checkbutton -
43b80 6c 61 62 65 6c 20 5b 5f 20 22 41 75 74 6f 20 72  label [_ "Auto r
43b90 61 69 73 65 20 73 74 61 63 6b 20 74 72 61 63 65  aise stack trace
43ba0 22 5d 20 2d 76 61 72 69 61 62 6c 65 20 5c 0a 09  "] -variable \..
43bb0 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72  .    RamDebugger
43bc0 3a 3a 6f 70 74 69 6f 6e 73 28 61 75 74 6f 5f 72  ::options(auto_r
43bd0 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 61 63 65  aise_stack_trace
43be0 29 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 6f 75  )..    }..    ou
43bf0 74 70 75 74 20 7b 0a 09 09 24 66 2e 6d 20 61 64  tput {...$f.m ad
43c00 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c  d command -label
43c10 20 5b 5f 20 22 43 6c 65 61 72 22 5d 20 2d 63 6f   [_ "Clear"] -co
43c20 6d 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65  mmand RamDebugge
43c30 72 3a 3a 54 65 78 74 4f 75 74 43 6c 65 61 72 0a  r::TextOutClear.
43c40 09 09 24 66 2e 6d 20 61 64 64 20 63 68 65 63 6b  ..$f.m add check
43c50 62 75 74 74 6f 6e 20 2d 6c 61 62 65 6c 20 5b 5f  button -label [_
43c60 20 22 41 75 74 6f 20 72 61 69 73 65 20 73 74 61   "Auto raise sta
43c70 63 6b 20 74 72 61 63 65 22 5d 20 2d 76 61 72 69  ck trace"] -vari
43c80 61 62 6c 65 20 5c 0a 09 09 20 20 20 20 52 61 6d  able \...    Ram
43c90 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e  Debugger::option
43ca0 73 28 61 75 74 6f 5f 72 61 69 73 65 5f 73 74 61  s(auto_raise_sta
43cb0 63 6b 5f 74 72 61 63 65 29 0a 09 20 20 20 20 7d  ck_trace)..    }
43cc0 0a 09 20 20 20 20 63 6f 6d 70 69 6c 65 20 7b 0a  ..    compile {.
43cd0 09 09 73 65 74 20 78 74 20 5b 65 78 70 72 20 7b  ..set xt [expr {
43ce0 24 78 2d 5b 77 69 6e 66 6f 20 72 6f 6f 74 78 20  $x-[winfo rootx 
43cf0 24 66 5d 7d 5d 0a 09 09 73 65 74 20 79 74 20 5b  $f]}]...set yt [
43d00 65 78 70 72 20 7b 24 79 2d 5b 77 69 6e 66 6f 20  expr {$y-[winfo 
43d10 72 6f 6f 74 79 20 24 66 5d 7d 5d 0a 09 09 24 66  rooty $f]}]...$f
43d20 2e 6d 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d  .m add command -
43d30 6c 61 62 65 6c 20 5b 5f 20 22 41 63 74 69 76 61  label [_ "Activa
43d40 74 65 20 73 74 61 63 6b 20 6c 65 76 65 6c 22 5d  te stack level"]
43d50 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 20 20   -command \...  
43d60 20 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67    [list RamDebug
43d70 67 65 72 3a 3a 53 74 61 63 6b 44 6f 75 62 6c 65  ger::StackDouble
43d80 31 20 24 66 20 40 24 78 74 2c 24 79 74 5d 0a 09  1 $f @$xt,$yt]..
43d90 09 24 66 2e 6d 20 61 64 64 20 63 6f 6d 6d 61 6e  .$f.m add comman
43da0 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 6c 65  d -label [_ "Cle
43db0 61 72 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 52 61  ar"] -command Ra
43dc0 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43  mDebugger::TextC
43dd0 6f 6d 70 43 6c 65 61 72 0a 09 20 20 20 20 7d 0a  ompClear..    }.
43de0 09 7d 0a 09 74 6b 5f 70 6f 70 75 70 20 24 66 2e  .}..tk_popup $f.
43df0 6d 20 24 78 20 24 79 0a 20 20 20 20 7d 0a 20 20  m $x $y.    }.  
43e00 20 20 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 62    $pane2in2.nb b
43e10 69 6e 64 74 61 62 73 20 3c 3c 43 6f 6e 74 65 78  indtabs <<Contex
43e20 74 75 61 6c 3e 3e 20 5b 6c 69 73 74 20 52 61 6d  tual>> [list Ram
43e30 44 65 62 75 67 67 65 72 3a 3a 4e 6f 74 65 42 6f  Debugger::NoteBo
43e40 6f 6b 50 6f 70 75 70 4d 65 6e 75 20 25 57 20 25  okPopupMenu %W %
43e50 58 20 25 59 5d 0a 20 20 20 20 62 69 6e 64 20 24  X %Y].    bind $
43e60 74 65 78 74 53 54 20 3c 3c 43 6f 6e 74 65 78 74  textST <<Context
43e70 75 61 6c 3e 3e 20 5b 6c 69 73 74 20 52 61 6d 44  ual>> [list RamD
43e80 65 62 75 67 67 65 72 3a 3a 4e 6f 74 65 42 6f 6f  ebugger::NoteBoo
43e90 6b 50 6f 70 75 70 4d 65 6e 75 20 25 57 20 25 58  kPopupMenu %W %X
43ea0 20 25 59 20 73 74 61 63 6b 74 72 61 63 65 5d 0a   %Y stacktrace].
43eb0 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 4f 55      bind $textOU
43ec0 54 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 3e 3e  T <<Contextual>>
43ed0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67   [list RamDebugg
43ee0 65 72 3a 3a 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75  er::NoteBookPopu
43ef0 70 4d 65 6e 75 20 25 57 20 25 58 20 25 59 20 6f  pMenu %W %X %Y o
43f00 75 74 70 75 74 5d 0a 20 20 20 20 62 69 6e 64 20  utput].    bind 
43f10 24 74 65 78 74 43 4f 4d 50 20 3c 3c 43 6f 6e 74  $textCOMP <<Cont
43f20 65 78 74 75 61 6c 3e 3e 20 5b 6c 69 73 74 20 52  extual>> [list R
43f30 61 6d 44 65 62 75 67 67 65 72 3a 3a 4e 6f 74 65  amDebugger::Note
43f40 42 6f 6f 6b 50 6f 70 75 70 4d 65 6e 75 20 25 57  BookPopupMenu %W
43f50 20 25 58 20 25 59 20 63 6f 6d 70 69 6c 65 5d 0a   %X %Y compile].
43f60 0a 0a 20 20 20 20 70 72 6f 63 20 54 65 78 74 53  ..    proc TextS
43f70 74 61 63 6b 54 72 61 63 65 52 61 69 73 65 20 7b  tackTraceRaise {
43f80 7d 20 22 63 61 74 63 68 20 7b 20 24 70 61 6e 65  } "catch { $pane
43f90 32 69 6e 32 2e 6e 62 20 72 61 69 73 65 20 73 74  2in2.nb raise st
43fa0 61 63 6b 74 72 61 63 65 20 7d 22 0a 20 20 20 20  acktrace }".    
43fb0 70 72 6f 63 20 54 65 78 74 4f 75 74 52 61 69 73  proc TextOutRais
43fc0 65 20 7b 7d 20 22 63 61 74 63 68 20 7b 20 24 70  e {} "catch { $p
43fd0 61 6e 65 32 69 6e 32 2e 6e 62 20 72 61 69 73 65  ane2in2.nb raise
43fe0 20 6f 75 74 70 75 74 20 7d 22 0a 20 20 20 20 70   output }".    p
43ff0 72 6f 63 20 54 65 78 74 43 6f 6d 70 52 61 69 73  roc TextCompRais
44000 65 20 7b 7d 20 22 63 61 74 63 68 20 7b 20 24 70  e {} "catch { $p
44010 61 6e 65 32 69 6e 32 2e 6e 62 20 72 61 69 73 65  ane2in2.nb raise
44020 20 63 6f 6d 70 69 6c 65 20 7d 22 0a 0a 0a 20 20   compile }"...  
44030 20 20 23 73 65 74 20 70 61 6e 65 33 20 5b 24 70    #set pane3 [$p
44040 77 20 61 64 64 20 2d 77 65 69 67 68 74 20 24 77  w add -weight $w
44050 65 69 67 68 74 33 5d 0a 20 20 20 20 73 65 74 20  eight3].    set 
44060 70 61 6e 65 33 20 5b 66 72 61 6d 65 20 24 70 77  pane3 [frame $pw
44070 2e 70 61 6e 65 33 5d 0a 20 20 20 20 0a 20 20 20  .pane3].    .   
44080 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 76   if { $options(v
44090 69 65 77 76 61 72 69 61 62 6c 65 73 70 61 6e 65  iewvariablespane
440a0 29 20 7d 20 7b 0a 09 24 70 77 20 61 64 64 20 24  ) } {..$pw add $
440b0 70 61 6e 65 33 20 2d 73 74 69 63 6b 79 20 6e 73  pane3 -sticky ns
440c0 65 77 20 2d 77 69 64 74 68 20 24 77 65 69 67 68  ew -width $weigh
440d0 74 33 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20  t3.    }.    .  
440e0 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
440f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44100 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44120 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44130 23 23 0a 20 20 20 20 23 20 74 68 65 20 76 65 72  ##.    # the ver
44140 74 69 63 61 6c 20 75 73 65 72 20 64 65 66 69 6e  tical user defin
44150 65 64 20 2d 20 6c 6f 63 61 6c 0a 20 20 20 20 23  ed - local.    #
44160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44180 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44190 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
441a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
441b0 0a 20 20 20 20 73 65 74 20 70 77 31 20 5b 70 61  .    set pw1 [pa
441c0 6e 65 64 77 69 6e 64 6f 77 20 24 70 61 6e 65 33  nedwindow $pane3
441d0 2e 70 77 20 2d 6f 72 69 65 6e 74 20 76 65 72 74  .pw -orient vert
441e0 69 63 61 6c 20 2d 67 72 69 64 20 22 30 22 5d 0a  ical -grid "0"].
441f0 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 77 65  .    foreach "we
44200 69 67 68 74 33 69 6e 31 20 77 65 69 67 68 74 33  ight3in1 weight3
44210 69 6e 32 22 20 5b 4d 61 6e 61 67 65 50 61 6e 65  in2" [ManagePane
44220 73 20 24 70 77 31 20 68 20 22 31 30 30 20 31 30  s $pw1 h "100 10
44230 30 22 5d 20 62 72 65 61 6b 0a 0a 20 20 20 20 23  0"] break..    #
44240 73 65 74 20 70 61 6e 65 33 69 6e 31 20 5b 24 70  set pane3in1 [$p
44250 77 31 20 61 64 64 20 2d 77 65 69 67 68 74 20 24  w1 add -weight $
44260 77 65 69 67 68 74 33 69 6e 31 5d 0a 20 20 20 20  weight3in1].    
44270 73 65 74 20 70 61 6e 65 33 69 6e 31 20 5b 66 72  set pane3in1 [fr
44280 61 6d 65 20 24 70 77 31 2e 70 61 6e 65 33 69 6e  ame $pw1.pane3in
44290 31 5d 0a 20 20 20 20 24 70 77 31 20 61 64 64 20  1].    $pw1 add 
442a0 24 70 61 6e 65 33 69 6e 31 20 2d 73 74 69 63 6b  $pane3in1 -stick
442b0 79 20 6e 73 65 77 20 2d 68 65 69 67 68 74 20 24  y nsew -height $
442c0 77 65 69 67 68 74 33 69 6e 31 0a 0a 20 20 20 20  weight3in1..    
442d0 6c 61 62 65 6c 20 24 70 61 6e 65 33 69 6e 31 2e  label $pane3in1.
442e0 6c 31 20 2d 74 65 78 74 20 5b 5f 20 22 55 73 65  l1 -text [_ "Use
442f0 72 20 64 65 66 69 6e 65 64 20 76 61 72 69 61 62  r defined variab
44300 6c 65 73 22 5d 20 2d 72 65 6c 69 65 66 20 72 61  les"] -relief ra
44310 69 73 65 64 20 2d 62 64 20 31 20 2d 67 72 69 64  ised -bd 1 -grid
44320 20 22 30 20 65 77 22 0a 0a 20 20 20 20 73 65 74   "0 ew"..    set
44330 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 69 6e   sw [ScrolledWin
44340 64 6f 77 20 24 70 61 6e 65 33 69 6e 31 2e 73 77  dow $pane3in1.sw
44350 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 30 20   -borderwidth 0 
44360 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 72 61  -bd 1 -relief ra
44370 69 73 65 64 20 2d 67 72 69 64 20 22 30 20 6e 73  ised -grid "0 ns
44380 77 65 22 5d 0a 20 20 20 20 73 65 74 20 73 66 20  we"].    set sf 
44390 5b 53 63 72 6f 6c 6c 61 62 6c 65 46 72 61 6d 65  [ScrollableFrame
443a0 20 24 73 77 2e 66 20 2d 63 6f 6e 73 74 72 61 69   $sw.f -constrai
443b0 6e 65 64 77 69 64 74 68 20 31 5d 0a 20 20 20 20  nedwidth 1].    
443c0 24 73 77 20 73 65 74 77 69 64 67 65 74 20 24 73  $sw setwidget $s
443d0 66 0a 20 20 20 20 73 65 74 20 66 31 20 5b 24 73  f.    set f1 [$s
443e0 66 20 67 65 74 66 72 61 6d 65 5d 0a 0a 0a 20 20  f getframe]...  
443f0 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
44400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44410 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44430 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44440 23 23 0a 20 20 20 20 23 20 74 68 65 20 68 6f 72  ##.    # the hor
44450 69 7a 6f 6e 74 61 6c 20 75 73 65 72 20 64 65 66  izontal user def
44460 69 6e 65 64 20 76 61 72 73 0a 20 20 20 20 23 23  ined vars.    ##
44470 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44480 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44490 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
444a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
444b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a  ##############..
444c0 20 20 20 20 73 65 74 20 70 77 20 5b 70 61 6e 65      set pw [pane
444d0 64 77 69 6e 64 6f 77 20 24 66 31 2e 70 77 20 2d  dwindow $f1.pw -
444e0 6f 72 69 65 6e 74 20 68 6f 72 69 7a 6f 6e 74 61  orient horizonta
444f0 6c 20 2d 67 72 69 64 20 22 30 20 6e 73 22 5d 0a  l -grid "0 ns"].
44500 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 77 65  .    foreach "we
44510 69 67 68 74 31 20 77 65 69 67 68 74 32 22 20 5b  ight1 weight2" [
44520 4d 61 6e 61 67 65 50 61 6e 65 73 20 24 70 77 20  ManagePanes $pw 
44530 68 20 22 31 30 30 20 31 30 30 22 5d 20 62 72 65  h "100 100"] bre
44540 61 6b 0a 0a 23 20 20 20 20 20 73 65 74 20 70 61  ak..#     set pa
44550 6e 65 31 5f 76 61 72 73 20 5b 24 70 77 20 61 64  ne1_vars [$pw ad
44560 64 20 2d 77 65 69 67 68 74 20 24 77 65 69 67 68  d -weight $weigh
44570 74 31 5d 0a 23 20 20 20 20 20 73 65 74 20 70 61  t1].#     set pa
44580 6e 65 32 5f 76 61 72 73 20 5b 24 70 77 20 61 64  ne2_vars [$pw ad
44590 64 20 2d 77 65 69 67 68 74 20 24 77 65 69 67 68  d -weight $weigh
445a0 74 32 5d 0a 20 20 20 20 73 65 74 20 70 61 6e 65  t2].    set pane
445b0 31 5f 76 61 72 73 20 5b 66 72 61 6d 65 20 24 70  1_vars [frame $p
445c0 77 2e 70 61 6e 65 31 5f 76 61 72 73 5d 0a 20 20  w.pane1_vars].  
445d0 20 20 24 70 77 20 61 64 64 20 24 70 61 6e 65 31    $pw add $pane1
445e0 5f 76 61 72 73 20 2d 73 74 69 63 6b 79 20 6e 73  _vars -sticky ns
445f0 65 77 20 2d 77 69 64 74 68 20 24 77 65 69 67 68  ew -width $weigh
44600 74 31 0a 20 20 20 20 73 65 74 20 70 61 6e 65 32  t1.    set pane2
44610 5f 76 61 72 73 20 5b 66 72 61 6d 65 20 24 70 77  _vars [frame $pw
44620 2e 70 61 6e 65 32 5f 76 61 72 73 5d 0a 20 20 20  .pane2_vars].   
44630 20 24 70 77 20 61 64 64 20 24 70 61 6e 65 32 5f   $pw add $pane2_
44640 76 61 72 73 20 2d 73 74 69 63 6b 79 20 6e 73 65  vars -sticky nse
44650 77 20 2d 77 69 64 74 68 20 24 77 65 69 67 68 74  w -width $weight
44660 32 0a 0a 20 20 20 20 6c 61 62 65 6c 20 24 70 61  2..    label $pa
44670 6e 65 31 5f 76 61 72 73 2e 6c 20 2d 74 65 78 74  ne1_vars.l -text
44680 20 56 61 72 69 61 62 6c 65 73 20 2d 72 65 6c 69   Variables -reli
44690 65 66 20 72 61 69 73 65 64 20 2d 62 64 20 31 0a  ef raised -bd 1.
446a0 20 20 20 20 6c 61 62 65 6c 20 24 70 61 6e 65 32      label $pane2
446b0 5f 76 61 72 73 2e 6c 20 2d 74 65 78 74 20 56 61  _vars.l -text Va
446c0 6c 75 65 73 20 2d 72 65 6c 69 65 66 20 72 61 69  lues -relief rai
446d0 73 65 64 20 2d 62 64 20 31 0a 0a 20 20 20 20 67  sed -bd 1..    g
446e0 72 69 64 20 24 70 61 6e 65 31 5f 76 61 72 73 2e  rid $pane1_vars.
446f0 6c 20 2d 73 74 69 63 6b 79 20 65 77 0a 20 20 20  l -sticky ew.   
44700 20 67 72 69 64 20 24 70 61 6e 65 32 5f 76 61 72   grid $pane2_var
44710 73 2e 6c 20 2d 73 74 69 63 6b 79 20 65 77 0a 0a  s.l -sticky ew..
44720 20 20 20 20 43 72 65 61 74 65 50 61 6e 65 64 45      CreatePanedE
44730 6e 74 72 69 65 73 20 31 32 20 24 70 61 6e 65 31  ntries 12 $pane1
44740 5f 76 61 72 73 20 24 70 61 6e 65 32 5f 76 61 72  _vars $pane2_var
44750 73 20 22 22 0a 0a 20 20 20 20 69 66 20 7b 20 5b  s ""..    if { [
44760 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69  info exists opti
44770 6f 6e 73 28 77 61 74 63 68 65 64 76 61 72 73 29  ons(watchedvars)
44780 5d 20 7d 20 7b 0a 09 73 65 74 20 69 20 30 0a 09  ] } {..set i 0..
44790 66 6f 72 65 61 63 68 20 6a 20 24 6f 70 74 69 6f  foreach j $optio
447a0 6e 73 28 77 61 74 63 68 65 64 76 61 72 73 29 20  ns(watchedvars) 
447b0 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72  {..    if { [str
447c0 69 6e 67 20 74 72 69 6d 20 24 6a 5d 20 3d 3d 20  ing trim $j] == 
447d0 22 22 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20  "" } { continue 
447e0 7d 0a 09 20 20 20 20 73 65 74 20 52 61 6d 44 65  }..    set RamDe
447f0 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72  bugger::EvalEntr
44800 69 65 73 28 24 69 2c 6c 65 66 74 29 20 24 6a 0a  ies($i,left) $j.
44810 09 20 20 20 20 69 6e 63 72 20 69 0a 09 20 20 20  .    incr i..   
44820 20 69 66 20 7b 20 24 69 20 3e 20 31 32 20 7d 20   if { $i > 12 } 
44830 7b 0a 09 09 43 72 65 61 74 65 50 61 6e 65 64 45  {...CreatePanedE
44840 6e 74 72 69 65 73 20 24 69 20 24 70 61 6e 65 31  ntries $i $pane1
44850 5f 76 61 72 73 20 24 70 61 6e 65 32 5f 76 61 72  _vars $pane2_var
44860 73 20 22 22 0a 09 20 20 20 20 7d 0a 09 7d 0a 20  s ""..    }..}. 
44870 20 20 20 7d 0a 0a 23 20 20 20 20 20 73 65 74 20     }..#     set 
44880 70 61 6e 65 33 69 6e 32 20 5b 24 70 77 31 20 61  pane3in2 [$pw1 a
44890 64 64 20 2d 77 65 69 67 68 74 20 24 77 65 69 67  dd -weight $weig
448a0 68 74 33 69 6e 32 5d 0a 20 20 20 20 73 65 74 20  ht3in2].    set 
448b0 70 61 6e 65 33 69 6e 32 20 5b 66 72 61 6d 65 20  pane3in2 [frame 
448c0 24 70 77 31 2e 70 61 6e 65 33 69 6e 32 5d 0a 20  $pw1.pane3in2]. 
448d0 20 20 20 24 70 77 31 20 61 64 64 20 24 70 61 6e     $pw1 add $pan
448e0 65 33 69 6e 32 20 2d 73 74 69 63 6b 79 20 6e 73  e3in2 -sticky ns
448f0 65 77 20 2d 68 65 69 67 68 74 20 24 77 65 69 67  ew -height $weig
44900 68 74 33 69 6e 32 0a 0a 20 20 20 20 63 68 65 63  ht3in2..    chec
44910 6b 62 75 74 74 6f 6e 20 24 70 61 6e 65 33 69 6e  kbutton $pane3in
44920 32 2e 6c 31 20 2d 74 65 78 74 20 5b 5f 20 22 4c  2.l1 -text [_ "L
44930 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 22 5d  ocal variables"]
44940 20 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64 20   -relief raised 
44950 2d 62 64 20 31 20 2d 67 72 69 64 20 22 30 20 65  -bd 1 -grid "0 e
44960 77 22 20 5c 0a 09 2d 76 61 72 69 61 62 6c 65 20  w" \..-variable 
44970 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74  RamDebugger::opt
44980 69 6f 6e 73 28 56 69 65 77 4c 6f 63 61 6c 56 61  ions(ViewLocalVa
44990 72 69 61 62 6c 65 73 29 20 5c 0a 09 2d 63 6f 6d  riables) \..-com
449a0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65  mand "RamDebugge
449b0 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72  r::CheckEvalEntr
449c0 69 65 73 4c 20 64 6f 22 0a 0a 20 20 20 20 73 65  iesL do"..    se
449d0 74 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 69  t sw [ScrolledWi
449e0 6e 64 6f 77 20 24 70 61 6e 65 33 69 6e 32 2e 73  ndow $pane3in2.s
449f0 77 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 30  w -borderwidth 0
44a00 20 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 72   -bd 1 -relief r
44a10 61 69 73 65 64 20 2d 67 72 69 64 20 22 30 20 6e  aised -grid "0 n
44a20 73 77 65 22 5d 0a 20 20 20 20 73 65 74 20 73 66  swe"].    set sf
44a30 20 5b 53 63 72 6f 6c 6c 61 62 6c 65 46 72 61 6d   [ScrollableFram
44a40 65 20 24 73 77 2e 66 20 2d 63 6f 6e 73 74 72 61  e $sw.f -constra
44a50 69 6e 65 64 77 69 64 74 68 20 31 5d 0a 20 20 20  inedwidth 1].   
44a60 20 24 73 77 20 73 65 74 77 69 64 67 65 74 20 24   $sw setwidget $
44a70 73 66 0a 20 20 20 20 73 65 74 20 66 31 4c 20 5b  sf.    set f1L [
44a80 24 73 66 20 67 65 74 66 72 61 6d 65 5d 0a 0a 0a  $sf getframe]...
44a90 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
44aa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ab0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ae0 23 23 23 23 0a 20 20 20 20 23 20 74 68 65 20 68  ####.    # the h
44af0 6f 72 69 7a 6f 6e 74 61 6c 20 6c 6f 63 61 6c 20  orizontal local 
44b00 76 61 72 73 0a 20 20 20 20 23 23 23 23 23 23 23  vars.    #######
44b10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44b40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44b50 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 73  #########..    s
44b60 65 74 20 70 77 4c 20 5b 70 61 6e 65 64 77 69 6e  et pwL [panedwin
44b70 64 6f 77 20 24 66 31 4c 2e 70 77 20 2d 6f 72 69  dow $f1L.pw -ori
44b80 65 6e 74 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 2d  ent horizontal -
44b90 67 72 69 64 20 22 30 20 6e 73 22 5d 0a 0a 20 20  grid "0 ns"]..  
44ba0 20 20 66 6f 72 65 61 63 68 20 22 77 65 69 67 68    foreach "weigh
44bb0 74 31 20 77 65 69 67 68 74 32 22 20 5b 4d 61 6e  t1 weight2" [Man
44bc0 61 67 65 50 61 6e 65 73 20 24 70 77 4c 20 68 20  agePanes $pwL h 
44bd0 22 31 30 30 20 31 30 30 22 5d 20 62 72 65 61 6b  "100 100"] break
44be0 0a 0a 23 20 20 20 20 20 73 65 74 20 70 61 6e 65  ..#     set pane
44bf0 31 5f 76 61 72 73 4c 20 5b 24 70 77 4c 20 61 64  1_varsL [$pwL ad
44c00 64 20 2d 77 65 69 67 68 74 20 24 77 65 69 67 68  d -weight $weigh
44c10 74 31 5d 0a 23 20 20 20 20 20 73 65 74 20 70 61  t1].#     set pa
44c20 6e 65 32 5f 76 61 72 73 4c 20 5b 24 70 77 4c 20  ne2_varsL [$pwL 
44c30 61 64 64 20 2d 77 65 69 67 68 74 20 24 77 65 69  add -weight $wei
44c40 67 68 74 32 5d 0a 20 20 20 20 73 65 74 20 70 61  ght2].    set pa
44c50 6e 65 31 5f 76 61 72 73 4c 20 5b 66 72 61 6d 65  ne1_varsL [frame
44c60 20 24 70 77 4c 2e 70 61 6e 65 31 5f 76 61 72 73   $pwL.pane1_vars
44c70 4c 5d 0a 20 20 20 20 24 70 77 4c 20 61 64 64 20  L].    $pwL add 
44c80 24 70 61 6e 65 31 5f 76 61 72 73 4c 20 2d 73 74  $pane1_varsL -st
44c90 69 63 6b 79 20 6e 73 65 77 20 2d 77 69 64 74 68  icky nsew -width
44ca0 20 24 77 65 69 67 68 74 31 0a 20 20 20 20 73 65   $weight1.    se
44cb0 74 20 70 61 6e 65 32 5f 76 61 72 73 4c 20 5b 66  t pane2_varsL [f
44cc0 72 61 6d 65 20 24 70 77 4c 2e 70 61 6e 65 32 5f  rame $pwL.pane2_
44cd0 76 61 72 73 4c 5d 0a 20 20 20 20 24 70 77 4c 20  varsL].    $pwL 
44ce0 61 64 64 20 24 70 61 6e 65 32 5f 76 61 72 73 4c  add $pane2_varsL
44cf0 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 2d 77   -sticky nsew -w
44d00 69 64 74 68 20 24 77 65 69 67 68 74 32 0a 0a 20  idth $weight2.. 
44d10 20 20 20 6c 61 62 65 6c 20 24 70 61 6e 65 31 5f     label $pane1_
44d20 76 61 72 73 4c 2e 6c 20 2d 74 65 78 74 20 56 61  varsL.l -text Va
44d30 72 69 61 62 6c 65 73 20 2d 72 65 6c 69 65 66 20  riables -relief 
44d40 72 61 69 73 65 64 20 2d 62 64 20 31 20 2d 67 72  raised -bd 1 -gr
44d50 69 64 20 22 30 20 65 77 22 0a 20 20 20 20 6c 61  id "0 ew".    la
44d60 62 65 6c 20 24 70 61 6e 65 32 5f 76 61 72 73 4c  bel $pane2_varsL
44d70 2e 6c 20 2d 74 65 78 74 20 56 61 6c 75 65 73 20  .l -text Values 
44d80 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64 20 2d  -relief raised -
44d90 62 64 20 31 20 2d 67 72 69 64 20 22 30 20 65 77  bd 1 -grid "0 ew
44da0 22 0a 0a 20 20 20 20 67 72 69 64 20 24 70 61 6e  "..    grid $pan
44db0 65 31 5f 76 61 72 73 4c 2e 6c 20 2d 73 74 69 63  e1_varsL.l -stic
44dc0 6b 79 20 65 77 0a 20 20 20 20 67 72 69 64 20 24  ky ew.    grid $
44dd0 70 61 6e 65 32 5f 76 61 72 73 4c 2e 6c 20 2d 73  pane2_varsL.l -s
44de0 74 69 63 6b 79 20 65 77 0a 0a 20 20 20 20 43 72  ticky ew..    Cr
44df0 65 61 74 65 50 61 6e 65 64 45 6e 74 72 69 65 73  eatePanedEntries
44e00 20 31 32 20 24 70 61 6e 65 31 5f 76 61 72 73 4c   12 $pane1_varsL
44e10 20 24 70 61 6e 65 32 5f 76 61 72 73 4c 20 4c 0a   $pane2_varsL L.
44e20 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
44e30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44e40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44e50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44e60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44e70 23 23 23 23 23 0a 20 20 20 20 23 20 74 68 65 20  #####.    # the 
44e80 6e 69 63 65 20 73 75 70 65 72 67 72 69 64 0a 20  nice supergrid. 
44e90 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23     #############
44ea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44eb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ed0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44ee0 23 23 23 0a 0a 20 20 20 20 73 75 70 65 72 67 72  ###..    supergr
44ef0 69 64 3a 3a 67 6f 20 24 70 61 6e 65 33 69 6e 31  id::go $pane3in1
44f00 0a 20 20 20 20 73 75 70 65 72 67 72 69 64 3a 3a  .    supergrid::
44f10 67 6f 20 24 70 61 6e 65 33 69 6e 32 0a 20 20 20  go $pane3in2.   
44f20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24   supergrid::go $
44f30 66 31 0a 20 20 20 20 73 75 70 65 72 67 72 69 64  f1.    supergrid
44f40 3a 3a 67 6f 20 24 66 31 4c 0a 20 20 20 20 73 75  ::go $f1L.    su
44f50 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 75 6c  pergrid::go $ful
44f60 6c 74 65 78 74 0a 20 20 20 20 73 75 70 65 72 67  ltext.    superg
44f70 72 69 64 3a 3a 67 6f 20 24 70 61 6e 65 32 69 6e  rid::go $pane2in
44f80 32 0a 20 20 20 20 23 69 66 20 7b 20 5b 69 6e 66  2.    #if { [inf
44f90 6f 20 65 78 69 73 74 73 20 70 61 6e 65 31 5d 20  o exists pane1] 
44fa0 7d 20 7b 20 73 75 70 65 72 67 72 69 64 3a 3a 67  } { supergrid::g
44fb0 6f 20 24 70 61 6e 65 31 20 7d 0a 20 20 20 20 73  o $pane1 }.    s
44fc0 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 70 61  upergrid::go $pa
44fd0 6e 65 32 0a 20 20 20 20 73 75 70 65 72 67 72 69  ne2.    supergri
44fe0 64 3a 3a 67 6f 20 24 70 61 6e 65 33 0a 0a 20 20  d::go $pane3..  
44ff0 20 20 67 72 69 64 20 24 66 2e 70 77 20 2d 73 74    grid $f.pw -st
45000 69 63 6b 79 20 6e 73 65 77 20 2d 63 6f 6c 75 6d  icky nsew -colum
45010 6e 20 30 20 2d 72 6f 77 20 30 0a 20 20 20 20 67  n 0 -row 0.    g
45020 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67  rid columnconfig
45030 75 72 65 20 24 66 20 30 20 2d 77 65 69 67 68 74  ure $f 0 -weight
45040 20 31 0a 20 20 20 20 67 72 69 64 20 72 6f 77 63   1.    grid rowc
45050 6f 6e 66 69 67 75 72 65 20 24 66 20 30 20 2d 77  onfigure $f 0 -w
45060 65 69 67 68 74 20 31 0a 20 20 20 20 73 75 70 65  eight 1.    supe
45070 72 67 72 69 64 3a 3a 67 6f 20 24 77 0a 0a 20 20  rgrid::go $w..  
45080 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
45090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
450a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
450b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
450c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
450d0 23 23 0a 20 20 20 20 23 20 74 68 65 20 62 69 6e  ##.    # the bin
450e0 64 69 6e 67 73 0a 20 20 20 20 23 23 23 23 23 23  dings.    ######
450f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
45100 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
45110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
45120 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
45130 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20  ##########..    
45140 69 66 20 7b 5b 73 74 72 69 6e 67 20 65 71 75 61  if {[string equa
45150 6c 20 22 75 6e 69 78 22 20 24 3a 3a 74 63 6c 5f  l "unix" $::tcl_
45160 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72  platform(platfor
45170 6d 29 5d 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20  m)]} {..foreach 
45180 22 62 75 74 20 75 6e 69 74 73 22 20 5b 6c 69 73  "but units" [lis
45190 74 20 34 20 2d 35 20 35 20 35 5d 20 7b 0a 09 20  t 4 -5 5 5] {.. 
451a0 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b 0a 09 09     set comm {...
451b0 73 65 74 20 77 20 25 57 0a 09 09 77 68 69 6c 65  set w %W...while
451c0 20 7b 20 24 77 20 21 3d 20 5b 77 69 6e 66 6f 20   { $w != [winfo 
451d0 74 6f 70 6c 65 76 65 6c 20 24 77 5d 20 7d 20 7b  toplevel $w] } {
451e0 0a 09 09 20 20 20 20 63 61 74 63 68 20 7b 0a 09  ...    catch {..
451f0 09 20 20 20 20 20 20 20 20 73 65 74 20 79 63 6f  .        set yco
45200 6d 6d 20 5b 24 77 20 63 67 65 74 20 2d 79 73 63  mm [$w cget -ysc
45210 72 6f 6c 6c 63 6f 6d 6d 61 6e 64 5d 0a 09 09 20  rollcommand]... 
45220 20 20 20 20 20 20 20 69 66 20 7b 20 24 79 63 6f         if { $yco
45230 6d 6d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 20  mm != "" } {... 
45240 20 20 20 20 20 20 20 20 20 20 20 24 77 20 79 76             $w yv
45250 69 65 77 20 73 63 72 6f 6c 6c 20 24 75 6e 69 74  iew scroll $unit
45260 73 20 75 6e 69 74 73 0a 09 09 20 20 20 20 20 20  s units...      
45270 20 20 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20        break...  
45280 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 0a        }...    }.
45290 09 09 20 20 20 20 73 65 74 20 77 20 5b 77 69 6e  ..    set w [win
452a0 66 6f 20 70 61 72 65 6e 74 20 24 77 5d 0a 09 09  fo parent $w]...
452b0 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65  }..    }..    re
452c0 67 73 75 62 20 2d 61 6c 6c 20 7b 28 3f 71 29 24  gsub -all {(?q)$
452d0 75 6e 69 74 73 7d 20 24 63 6f 6d 6d 20 24 75 6e  units} $comm $un
452e0 69 74 73 20 63 6f 6d 6d 0a 09 20 20 20 20 62 69  its comm..    bi
452f0 6e 64 20 54 65 78 74 20 3c 42 75 74 74 6f 6e 2d  nd Text <Button-
45300 24 62 75 74 3e 20 22 22 0a 09 20 20 20 20 62 69  $but> ""..    bi
45310 6e 64 20 61 6c 6c 20 3c 42 75 74 74 6f 6e 2d 24  nd all <Button-$
45320 62 75 74 3e 20 24 63 6f 6d 6d 0a 09 7d 0a 20 20  but> $comm..}.  
45330 20 20 7d 20 65 6c 73 65 20 7b 0a 09 62 69 6e 64    } else {..bind
45340 20 54 65 78 74 20 3c 4d 6f 75 73 65 57 68 65 65   Text <MouseWhee
45350 6c 3e 20 22 22 0a 09 62 69 6e 64 20 61 6c 6c 20  l> ""..bind all 
45360 3c 4d 6f 75 73 65 57 68 65 65 6c 3e 20 7b 0a 09  <MouseWheel> {..
45370 20 20 20 20 73 65 74 20 77 20 25 57 0a 09 20 20      set w %W..  
45380 20 20 77 68 69 6c 65 20 7b 20 24 77 20 21 3d 20    while { $w != 
45390 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20  [winfo toplevel 
453a0 24 77 5d 20 7d 20 7b 0a 09 09 63 61 74 63 68 20  $w] } {...catch 
453b0 7b 0a 09 09 20 20 20 20 73 65 74 20 79 63 6f 6d  {...    set ycom
453c0 6d 20 5b 24 77 20 63 67 65 74 20 2d 79 73 63 72  m [$w cget -yscr
453d0 6f 6c 6c 63 6f 6d 6d 61 6e 64 5d 0a 09 09 20 20  ollcommand]...  
453e0 20 20 69 66 20 7b 20 24 79 63 6f 6d 6d 20 21 3d    if { $ycomm !=
453f0 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 20 20   "" } {...      
45400 20 20 24 77 20 79 76 69 65 77 20 73 63 72 6f 6c    $w yview scrol
45410 6c 20 5b 65 78 70 72 20 69 6e 74 28 2d 31 2a 25  l [expr int(-1*%
45420 44 2f 33 36 29 5d 20 75 6e 69 74 73 0a 09 09 20  D/36)] units... 
45430 20 20 20 20 20 20 20 62 72 65 61 6b 0a 09 09 20         break... 
45440 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20 77     }...}...set w
45450 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 24   [winfo parent $
45460 77 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20  w]..    }..}.   
45470 20 7d 0a 0a 0a 20 20 20 20 73 65 74 20 6d 65 6e   }...    set men
45480 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65  u [$mainframe ge
45490 74 6d 65 6e 75 20 64 65 62 75 67 5d 0a 20 20 20  tmenu debug].   
454a0 20 69 66 20 7b 20 24 6d 65 6e 75 20 65 71 20 22   if { $menu eq "
454b0 22 20 7d 20 7b 0a 09 73 65 74 20 6d 65 6e 75 20  " } {..set menu 
454c0 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d  [$mainframe getm
454d0 65 6e 75 20 65 64 69 74 5d 20 20 20 0a 20 20 20  enu edit]   .   
454e0 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78   }.    bind $tex
454f0 74 20 3c 31 3e 20 5b 6c 69 73 74 20 66 6f 63 75  t <1> [list focu
45500 73 20 24 74 65 78 74 5d 0a 20 20 20 20 62 69 6e  s $text].    bin
45510 64 20 24 74 65 78 74 20 3c 3c 43 6f 6e 74 65 78  d $text <<Contex
45520 74 75 61 6c 3e 3e 20 22 25 57 20 6d 61 72 6b 20  tual>> "%W mark 
45530 73 65 74 20 69 6e 73 65 72 74 20 40 25 78 2c 25  set insert @%x,%
45540 79 20 3b 20 52 61 6d 44 65 62 75 67 67 65 72 3a  y ; RamDebugger:
45550 3a 54 65 78 74 4d 6f 74 69 6f 6e 20 2d 31 20 2d  :TextMotion -1 -
45560 31 20 2d 31 20 2d 31 3b 5c 0a 09 20 20 20 20 74  1 -1 -1;\..    t
45570 6b 5f 70 6f 70 75 70 20 24 6d 65 6e 75 20 25 58  k_popup $menu %X
45580 20 25 59 22 0a 20 20 20 20 69 66 20 7b 20 24 69   %Y".    if { $i
45590 73 77 69 6e 63 65 20 7d 20 7b 20 70 6f 63 6b 65  swince } { pocke
455a0 74 70 63 3a 3a 61 64 64 20 24 74 65 78 74 20 7d  tpc::add $text }
455b0 0a 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74  ..    bind $text
455c0 20 3c 44 6f 75 62 6c 65 2d 31 3e 20 22 52 61 6d   <Double-1> "Ram
455d0 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68  Debugger::Search
455e0 42 72 61 63 65 73 20 25 78 20 25 79 20 3b 62 72  Braces %x %y ;br
455f0 65 61 6b 22 20 0a 20 20 20 20 0a 20 20 20 20 24  eak" .    .    $
45600 74 65 78 74 53 54 20 63 6f 6e 66 20 2d 73 74 61  textST conf -sta
45610 74 65 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20  te disabled.    
45620 62 69 6e 64 20 24 74 65 78 74 53 54 20 3c 31 3e  bind $textST <1>
45630 20 7b 20 66 6f 63 75 73 20 25 57 20 7d 0a 20 20   { focus %W }.  
45640 20 20 62 69 6e 64 20 24 74 65 78 74 53 54 20 3c    bind $textST <
45650 44 6f 75 62 6c 65 2d 31 3e 20 7b 20 52 61 6d 44  Double-1> { RamD
45660 65 62 75 67 67 65 72 3a 3a 53 74 61 63 6b 44 6f  ebugger::StackDo
45670 75 62 6c 65 31 20 25 57 20 40 25 78 2c 25 79 20  uble1 %W @%x,%y 
45680 7d 0a 0a 20 20 20 20 24 74 65 78 74 4f 55 54 20  }..    $textOUT 
45690 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61  conf -state disa
456a0 62 6c 65 64 0a 20 20 20 20 62 69 6e 64 20 24 74  bled.    bind $t
456b0 65 78 74 4f 55 54 20 3c 31 3e 20 7b 20 66 6f 63  extOUT <1> { foc
456c0 75 73 20 25 57 20 7d 0a 20 20 20 20 62 69 6e 64  us %W }.    bind
456d0 20 24 74 65 78 74 4f 55 54 20 3c 44 6f 75 62 6c   $textOUT <Doubl
456e0 65 2d 31 3e 20 7b 20 52 61 6d 44 65 62 75 67 67  e-1> { RamDebugg
456f0 65 72 3a 3a 53 74 61 63 6b 44 6f 75 62 6c 65 31  er::StackDouble1
45700 20 25 57 20 40 25 78 2c 25 79 20 7d 0a 20 20 20   %W @%x,%y }.   
45710 20 0a 20 20 20 20 24 74 65 78 74 43 4f 4d 50 20   .    $textCOMP 
45720 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61  conf -state disa
45730 62 6c 65 64 0a 20 20 20 20 62 69 6e 64 20 24 74  bled.    bind $t
45740 65 78 74 43 4f 4d 50 20 3c 31 3e 20 7b 20 66 6f  extCOMP <1> { fo
45750 63 75 73 20 25 57 20 7d 0a 20 20 20 20 62 69 6e  cus %W }.    bin
45760 64 20 24 74 65 78 74 43 4f 4d 50 20 3c 44 6f 75  d $textCOMP <Dou
45770 62 6c 65 2d 31 3e 20 7b 20 52 61 6d 44 65 62 75  ble-1> { RamDebu
45780 67 67 65 72 3a 3a 53 74 61 63 6b 44 6f 75 62 6c  gger::StackDoubl
45790 65 31 20 25 57 20 40 25 78 2c 25 79 20 7d 0a 0a  e1 %W @%x,%y }..
457a0 20 20 20 20 62 69 6e 64 20 61 6c 6c 20 3c 46 34      bind all <F4
457b0 3e 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a  > "RamDebugger::
457c0 50 72 65 76 4e 65 78 74 43 6f 6d 70 69 6c 65 45  PrevNextCompileE
457d0 72 72 6f 72 20 6e 65 78 74 22 0a 20 20 20 20 62  rror next".    b
457e0 69 6e 64 20 61 6c 6c 20 3c 53 68 69 66 74 2d 46  ind all <Shift-F
457f0 34 3e 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a  4> "RamDebugger:
45800 3a 50 72 65 76 4e 65 78 74 43 6f 6d 70 69 6c 65  :PrevNextCompile
45810 45 72 72 6f 72 20 70 72 65 76 22 0a 20 20 20 20  Error prev".    
45820 62 69 6e 64 20 24 74 65 78 74 20 3c 4d 6f 74 69  bind $text <Moti
45830 6f 6e 3e 20 22 52 61 6d 44 65 62 75 67 67 65 72  on> "RamDebugger
45840 3a 3a 54 65 78 74 4d 6f 74 69 6f 6e 20 25 58 20  ::TextMotion %X 
45850 25 59 20 25 78 20 25 79 22 0a 20 20 20 20 23 20  %Y %x %y".    # 
45860 69 6e 20 6c 69 6e 75 78 2c 20 46 31 30 20 6d 61  in linux, F10 ma
45870 6b 65 73 20 73 6f 6d 65 20 73 74 75 70 69 64 20  kes some stupid 
45880 74 68 69 6e 67 0a 20 20 20 20 62 69 6e 64 20 61  thing.    bind a
45890 6c 6c 20 3c 46 31 30 3e 20 22 22 0a 0a 20 20 20  ll <F10> ""..   
458a0 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a   bind $text <$::
458b0 61 6c 74 2d 4c 65 66 74 3e 20 22 52 61 6d 44 65  alt-Left> "RamDe
458c0 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76  bugger::GotoPrev
458d0 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73  iousNextInWinLis
458e0 74 20 70 72 65 76 20 3b 20 62 72 65 61 6b 22 0a  t prev ; break".
458f0 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c      bind $text <
45900 43 6f 6e 74 72 6f 6c 2d 54 61 62 3e 20 22 5b 6c  Control-Tab> "[l
45910 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
45920 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20  :ChooseViewFile 
45930 73 74 61 72 74 5d 20 3b 20 62 72 65 61 6b 22 0a  start] ; break".
45940 0a 23 20 20 20 20 20 62 69 6e 64 20 24 74 65 78  .#     bind $tex
45950 74 20 3c 43 6f 6e 74 72 6f 6c 2d 54 61 62 3e 20  t <Control-Tab> 
45960 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 6f  "RamDebugger::Go
45970 74 6f 50 72 65 76 69 6f 75 73 4e 65 78 74 49 6e  toPreviousNextIn
45980 57 69 6e 4c 69 73 74 20 70 72 65 76 20 3b 20 62  WinList prev ; b
45990 72 65 61 6b 22 0a 23 20 20 20 20 20 62 69 6e 64  reak".#     bind
459a0 20 24 74 65 78 74 20 3c 43 6f 6e 74 72 6f 6c 2d   $text <Control-
459b0 53 68 69 66 74 2d 54 61 62 3e 20 22 52 61 6d 44  Shift-Tab> "RamD
459c0 65 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65  ebugger::GotoPre
459d0 76 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69  viousNextInWinLi
459e0 73 74 20 6e 65 78 74 20 3b 20 62 72 65 61 6b 22  st next ; break"
459f0 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20  .    bind $text 
45a00 3c 24 3a 3a 61 6c 74 2d 52 69 67 68 74 3e 20 22  <$::alt-Right> "
45a10 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 6f 74  RamDebugger::Got
45a20 6f 50 72 65 76 69 6f 75 73 4e 65 78 74 49 6e 57  oPreviousNextInW
45a30 69 6e 4c 69 73 74 20 6e 65 78 74 20 3b 20 62 72  inList next ; br
45a40 65 61 6b 22 0a 20 20 20 20 62 69 6e 64 20 24 74  eak".    bind $t
45a50 65 78 74 20 3c 54 61 62 3e 20 22 52 61 6d 44 65  ext <Tab> "RamDe
45a60 62 75 67 67 65 72 3a 3a 49 6e 64 65 6e 74 20 3b  bugger::Indent ;
45a70 20 62 72 65 61 6b 22 0a 20 20 20 20 62 69 6e 64   break".    bind
45a80 20 24 74 65 78 74 20 3c 52 65 74 75 72 6e 3e 20   $text <Return> 
45a90 22 5b 62 69 6e 64 20 54 65 78 74 20 3c 52 65 74  "[bind Text <Ret
45aa0 75 72 6e 3e 5d 20 3b 20 52 61 6d 44 65 62 75 67  urn>] ; RamDebug
45ab0 67 65 72 3a 3a 49 6e 64 65 6e 74 4c 69 6e 65 20  ger::IndentLine 
45ac0 7b 7d 20 3b 20 62 72 65 61 6b 22 0a 0a 20 20 20  {} ; break"..   
45ad0 20 73 65 74 20 63 20 5b 6c 69 73 74 20 24 74 65   set c [list $te
45ae0 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65  xt mark set inse
45af0 72 74 20 22 69 6e 73 65 72 74 2d 31 63 22 5d 0a  rt "insert-1c"].
45b00 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c      bind $text <
45b10 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 32  $::control-Key-2
45b20 3e 20 22 5b 6c 69 73 74 20 74 6b 3a 3a 54 65 78  > "[list tk::Tex
45b30 74 49 6e 73 65 72 74 20 24 74 65 78 74 20 7b 22  tInsert $text {"
45b40 22 7d 5d 3b 24 63 22 0a 20 20 20 20 62 69 6e 64  "}];$c".    bind
45b50 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72   $text <$::contr
45b60 6f 6c 2d 4b 65 79 2d 39 3e 20 22 5b 6c 69 73 74  ol-Key-9> "[list
45b70 20 74 6b 3a 3a 54 65 78 74 49 6e 73 65 72 74 20   tk::TextInsert 
45b80 24 74 65 78 74 20 7b 28 29 7d 5d 3b 24 63 22 0a  $text {()}];$c".
45b90 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c      bind $text <
45ba0 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 70 6c 75 73 3e  $::control-plus>
45bb0 20 22 5b 6c 69 73 74 20 74 6b 3a 3a 54 65 78 74   "[list tk::Text
45bc0 49 6e 73 65 72 74 20 24 74 65 78 74 20 7b 5b 5d  Insert $text {[]
45bd0 7d 5d 3b 24 63 22 0a 20 20 20 20 62 69 6e 64 20  }];$c".    bind 
45be0 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f  $text <$::contro
45bf0 6c 2d 53 68 69 66 74 2d 70 6c 75 73 3e 20 5b 6c  l-Shift-plus> [l
45c00 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
45c10 3a 69 6e 73 65 72 74 5f 74 72 61 6e 73 6c 61 74  :insert_translat
45c20 69 6f 6e 5f 63 6d 64 5d 0a 20 20 20 20 62 69 6e  ion_cmd].    bin
45c30 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74  d $text <$::cont
45c40 72 6f 6c 2d 61 73 74 65 72 69 73 6b 3e 20 5b 6c  rol-asterisk> [l
45c50 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
45c60 3a 69 6e 73 65 72 74 5f 74 72 61 6e 73 6c 61 74  :insert_translat
45c70 69 6f 6e 5f 63 6d 64 5d 0a 20 20 20 20 62 69 6e  ion_cmd].    bin
45c80 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74  d $text <$::cont
45c90 72 6f 6c 2d 63 63 65 64 69 6c 6c 61 3e 20 22 5b  rol-ccedilla> "[
45ca0 6c 69 73 74 20 74 6b 3a 3a 54 65 78 74 49 6e 73  list tk::TextIns
45cb0 65 72 74 20 24 74 65 78 74 20 7b 7b 7d 7d 5d 3b  ert $text {{}}];
45cc0 24 63 22 0a 20 20 20 20 62 69 6e 64 20 24 74 65  $c".    bind $te
45cd0 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 62  xt <$::control-b
45ce0 61 63 6b 73 6c 61 73 68 3e 20 22 5b 6c 69 73 74  ackslash> "[list
45cf0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 69 6e   RamDebugger::in
45d00 73 65 72 74 5f 62 72 61 63 6b 65 74 73 5f 62 72  sert_brackets_br
45d10 61 63 65 73 5d 3b 62 72 65 61 6b 22 0a 20 20 20  aces];break".   
45d20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a   bind $text <$::
45d30 63 6f 6e 74 72 6f 6c 2d 6c 65 73 73 3e 20 22 5b  control-less> "[
45d40 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72  list RamDebugger
45d50 3a 3a 69 6e 73 65 72 74 5f 62 72 61 63 6b 65 74  ::insert_bracket
45d60 73 5f 62 72 61 63 65 73 5d 3b 62 72 65 61 6b 22  s_braces];break"
45d70 0a 0a 20 20 20 20 73 65 74 20 63 6d 64 20 7b 0a  ..    set cmd {.
45d80 09 69 66 20 7b 20 22 25 41 22 20 65 71 20 22 5c  .if { "%A" eq "\
45d90 7d 22 20 7d 20 7b 0a 09 20 20 20 20 25 4f 4c 44  }" } {..    %OLD
45da0 5f 43 4d 44 25 0a 09 20 20 20 20 52 61 6d 44 65  _CMD%..    RamDe
45db0 62 75 67 67 65 72 3a 3a 49 6e 64 65 6e 74 4c 69  bugger::IndentLi
45dc0 6e 65 20 7b 7d 0a 09 20 20 20 20 62 72 65 61 6b  ne {}..    break
45dd0 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 62 69  ..}.    }.    bi
45de0 6e 64 20 24 74 65 78 74 20 3c 4b 65 79 50 72 65  nd $text <KeyPre
45df0 73 73 3e 20 5b 73 74 72 69 6e 67 20 6d 61 70 20  ss> [string map 
45e00 5b 6c 69 73 74 20 25 4f 4c 44 5f 43 4d 44 25 20  [list %OLD_CMD% 
45e10 5b 62 69 6e 64 20 54 65 78 74 20 3c 4b 65 79 50  [bind Text <KeyP
45e20 72 65 73 73 3e 5d 5d 20 24 63 6d 64 5d 0a 20 20  ress>]] $cmd].  
45e30 20 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74   .    bind $text
45e40 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 78 3e 20   <$::control-x> 
45e50 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75  "RamDebugger::Cu
45e60 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 63  tCopyPasteText c
45e70 75 74 20 20 20 3b 20 62 72 65 61 6b 22 0a 20 20  ut   ; break".  
45e80 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a    bind $text <$:
45e90 3a 63 6f 6e 74 72 6f 6c 2d 63 3e 20 22 52 61 6d  :control-c> "Ram
45ea0 44 65 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70  Debugger::CutCop
45eb0 79 50 61 73 74 65 54 65 78 74 20 63 6f 70 79 20  yPasteText copy 
45ec0 20 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 62 69   ; break".    bi
45ed0 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e  nd $text <$::con
45ee0 74 72 6f 6c 2d 76 3e 20 22 52 61 6d 44 65 62 75  trol-v> "RamDebu
45ef0 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73  gger::CutCopyPas
45f00 74 65 54 65 78 74 20 70 61 73 74 65 20 3b 20 62  teText paste ; b
45f10 72 65 61 6b 22 0a 20 20 20 20 62 69 6e 64 20 24  reak".    bind $
45f20 74 65 78 74 20 3c 24 3a 3a 61 6c 74 2d 42 61 63  text <$::alt-Bac
45f30 6b 53 70 61 63 65 3e 20 5b 6c 69 73 74 20 52 61  kSpace> [list Ra
45f40 6d 44 65 62 75 67 67 65 72 3a 3a 44 65 6c 65 74  mDebugger::Delet
45f50 65 50 72 65 76 69 6f 75 73 57 6f 72 64 5d 0a 20  ePreviousWord]. 
45f60 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24     bind $text <$
45f70 3a 3a 63 6f 6e 74 72 6f 6c 2d 42 61 63 6b 53 70  ::control-BackSp
45f80 61 63 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65  ace> [list RamDe
45f90 62 75 67 67 65 72 3a 3a 44 65 6c 65 74 65 50 72  bugger::DeletePr
45fa0 65 76 69 6f 75 73 57 6f 72 64 5d 0a 20 20 20 20  eviousWord].    
45fb0 62 69 6e 64 20 5b 77 69 6e 66 6f 20 74 6f 70 6c  bind [winfo topl
45fc0 65 76 65 6c 20 24 74 65 78 74 5d 20 3c 24 3a 3a  evel $text] <$::
45fd0 63 6f 6e 74 72 6f 6c 2d 76 3e 20 22 22 0a 20 20  control-v> "".  
45fe0 20 20 62 69 6e 64 20 5b 77 69 6e 66 6f 20 74 6f    bind [winfo to
45ff0 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 20 3c 54  plevel $text] <T
46000 61 62 3e 20 22 22 0a 20 20 20 20 62 69 6e 64 20  ab> "".    bind 
46010 24 74 65 78 74 20 3c 46 6f 63 75 73 49 6e 3e 20  $text <FocusIn> 
46020 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
46030 72 3a 3a 53 65 61 72 63 68 57 69 6e 64 6f 77 5f  r::SearchWindow_
46040 61 75 74 6f 63 6c 6f 73 65 5d 0a 20 20 20 20 62  autoclose].    b
46050 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f  ind $text <$::co
46060 6e 74 72 6f 6c 2d 49 3e 20 5b 6c 69 73 74 20 52  ntrol-I> [list R
46070 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72  amDebugger::Sear
46080 63 68 20 24 77 20 69 66 6f 72 77 61 72 64 5f 67  ch $w iforward_g
46090 65 74 5f 69 6e 73 65 72 74 5d 0a 20 20 20 20 62  et_insert].    b
460a0 69 6e 64 20 24 74 65 78 74 20 3c 45 73 63 61 70  ind $text <Escap
460b0 65 3e 3c 69 3e 20 22 5b 6c 69 73 74 20 52 61 6d  e><i> "[list Ram
460c0 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68  Debugger::Search
460d0 20 24 77 20 69 66 6f 72 77 61 72 64 5f 67 65 74   $w iforward_get
460e0 5f 69 6e 73 65 72 74 5d 20 3b 62 72 65 61 6b 22  _insert] ;break"
460f0 0a 20 20 20 20 62 69 6e 64 20 24 77 20 3c 24 3a  .    bind $w <$:
46100 3a 63 6f 6e 74 72 6f 6c 2d 73 6c 61 73 68 3e 20  :control-slash> 
46110 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65  [list RamDebugge
46120 72 3a 3a 43 56 53 3a 3a 75 70 64 61 74 65 5f 72  r::CVS::update_r
46130 65 63 75 72 73 69 76 65 20 2e 20 63 75 72 72 65  ecursive . curre
46140 6e 74 5d 20 3b 23 20 63 6f 6e 74 72 6f 6c 2d 73  nt] ;# control-s
46150 68 69 66 74 2d 37 0a 0a 20 20 20 20 73 65 74 20  hift-7..    set 
46160 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65  menu [$mainframe
46170 20 67 65 74 6d 65 6e 75 20 65 64 69 74 5d 0a 20   getmenu edit]. 
46180 20 20 20 24 6d 65 6e 75 20 65 6e 74 72 79 63 6f     $menu entryco
46190 6e 66 69 67 75 72 65 20 5b 5f 20 22 49 73 65 61  nfigure [_ "Isea
461a0 72 63 68 20 66 6f 72 77 61 72 64 20 73 65 6c 65  rch forward sele
461b0 63 74 65 64 22 5d 20 2d 61 63 63 20 22 43 74 72  cted"] -acc "Ctr
461c0 6c 2b 53 68 69 66 74 2d 49 22 0a 0a 0a 20 20 20  l+Shift-I"...   
461d0 20 62 69 6e 64 20 24 77 20 3c 53 68 69 66 74 2d   bind $w <Shift-
461e0 4b 65 79 2d 46 35 3e 20 22 52 61 6d 44 65 62 75  Key-F5> "RamDebu
461f0 67 67 65 72 3a 3a 44 69 73 63 6f 6e 6e 65 63 74  gger::Disconnect
46200 53 74 6f 70 20 3b 62 72 65 61 6b 22 0a 0a 20 20  Stop ;break"..  
46210 20 20 66 6f 72 65 61 63 68 20 69 20 5b 62 69 6e    foreach i [bin
46220 64 20 24 77 5d 20 7b 0a 09 62 69 6e 64 20 24 74  d $w] {..bind $t
46230 65 78 74 20 24 69 20 22 5b 62 69 6e 64 20 24 77  ext $i "[bind $w
46240 20 24 69 5d 20 3b 62 72 65 61 6b 22 0a 20 20 20   $i] ;break".   
46250 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 72   }.    bind $mar
46260 6b 65 72 20 3c 31 3e 20 7b 0a 09 63 61 74 63 68  ker <1> {..catch
46270 20 7b 20 64 65 73 74 72 6f 79 20 5b 77 69 6e 66   { destroy [winf
46280 6f 20 74 6f 70 6c 65 76 65 6c 20 25 57 5d 2e 73  o toplevel %W].s
46290 65 61 72 63 68 20 7d 0a 09 74 6b 3a 3a 54 65 78  earch }..tk::Tex
462a0 74 42 75 74 74 6f 6e 31 20 24 52 61 6d 44 65 62  tButton1 $RamDeb
462b0 75 67 67 65 72 3a 3a 74 65 78 74 20 30 20 25 79  ugger::text 0 %y
462c0 0a 09 20 73 65 74 20 74 6b 3a 3a 50 72 69 76 28  .. set tk::Priv(
462d0 73 65 6c 65 63 74 4d 6f 64 65 29 20 6c 69 6e 65  selectMode) line
462e0 0a 09 20 74 6b 3a 3a 54 65 78 74 53 65 6c 65 63  .. tk::TextSelec
462f0 74 54 6f 20 24 52 61 6d 44 65 62 75 67 67 65 72  tTo $RamDebugger
46300 3a 3a 74 65 78 74 20 30 20 25 79 0a 23 20 0a 23  ::text 0 %y.# .#
46310 20 20 20 20 20 20 20 20 20 73 65 74 20 74 6b 50           set tkP
46320 72 69 76 28 78 29 20 30 0a 23 20 20 20 20 20 20  riv(x) 0.#      
46330 20 20 20 73 65 74 20 74 6b 50 72 69 76 28 79 29     set tkPriv(y)
46340 20 25 79 0a 23 20 20 20 20 20 20 20 20 20 73 65   %y.#         se
46350 74 20 74 6b 50 72 69 76 28 6d 6f 75 73 65 4d 6f  t tkPriv(mouseMo
46360 76 65 64 29 20 30 0a 23 20 20 20 20 20 20 20 20  ved) 0.#        
46370 20 73 65 74 20 74 6b 50 72 69 76 28 70 72 65 73   set tkPriv(pres
46380 73 58 29 20 30 0a 23 20 20 20 20 20 20 20 20 20  sX) 0.#         
46390 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 6d 6f 75  set tk::Priv(mou
463a0 73 65 4d 6f 76 65 64 29 20 30 0a 23 20 20 20 20  seMoved) 0.#    
463b0 20 20 20 20 20 73 65 74 20 74 6b 3a 3a 50 72 69       set tk::Pri
463c0 76 28 70 72 65 73 73 58 29 20 30 0a 23 20 20 20  v(pressX) 0.#   
463d0 20 20 20 20 20 20 73 65 74 20 74 6b 3a 3a 50 72        set tk::Pr
463e0 69 76 28 78 29 20 30 0a 23 20 20 20 20 20 20 20  iv(x) 0.#       
463f0 20 20 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 79    set tk::Priv(y
46400 29 20 25 79 0a 23 20 20 20 20 20 20 20 20 20 24  ) %y.#         $
46410 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 74 65 78  RamDebugger::tex
46420 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72  t mark set inser
46430 74 20 5b 74 6b 54 65 78 74 43 6c 6f 73 65 73 74  t [tkTextClosest
46440 47 61 70 20 24 52 61 6d 44 65 62 75 67 67 65 72  Gap $RamDebugger
46450 3a 3a 74 65 78 74 20 30 20 25 79 5d 0a 23 20 20  ::text 0 %y].#  
46460 20 20 20 20 20 20 20 24 52 61 6d 44 65 62 75 67         $RamDebug
46470 67 65 72 3a 3a 74 65 78 74 20 6d 61 72 6b 20 73  ger::text mark s
46480 65 74 20 61 6e 63 68 6f 72 20 69 6e 73 65 72 74  et anchor insert
46490 0a 23 20 0a 23 20 20 20 20 20 20 20 20 20 73 65  .# .#         se
464a0 74 20 69 6e 69 20 5b 24 52 61 6d 44 65 62 75 67  t ini [$RamDebug
464b0 67 65 72 3a 3a 74 65 78 74 20 69 6e 64 65 78 20  ger::text index 
464c0 22 40 30 2c 25 79 20 6c 69 6e 65 73 74 61 72 74  "@0,%y linestart
464d0 22 5d 0a 23 20 20 20 20 20 20 20 20 20 73 65 74  "].#         set
464e0 20 65 6e 64 20 5b 24 52 61 6d 44 65 62 75 67 67   end [$RamDebugg
464f0 65 72 3a 3a 74 65 78 74 20 69 6e 64 65 78 20 22  er::text index "
46500 40 30 2c 25 79 20 6c 69 6e 65 65 6e 64 22 5d 0a  @0,%y lineend"].
46510 23 20 20 20 20 20 20 20 20 20 24 52 61 6d 44 65  #         $RamDe
46520 62 75 67 67 65 72 3a 3a 74 65 78 74 20 74 61 67  bugger::text tag
46530 20 72 65 6d 6f 76 65 20 73 65 6c 20 31 2e 30 20   remove sel 1.0 
46540 65 6e 64 0a 23 20 20 20 20 20 20 20 20 20 24 52  end.#         $R
46550 61 6d 44 65 62 75 67 67 65 72 3a 3a 74 65 78 74  amDebugger::text
46560 20 74 61 67 20 61 64 64 20 73 65 6c 20 24 69 6e   tag add sel $in
46570 69 20 24 65 6e 64 0a 23 20 20 20 20 20 20 20 20  i $end.#        
46580 20 73 65 74 20 74 6b 50 72 69 76 28 73 65 6c 65   set tkPriv(sele
46590 63 74 4d 6f 64 65 29 20 6c 69 6e 65 0a 20 20 20  ctMode) line.   
465a0 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 72   }.    bind $mar
465b0 6b 65 72 20 3c 42 31 2d 4d 6f 74 69 6f 6e 3e 20  ker <B1-Motion> 
465c0 7b 0a 09 73 65 74 20 74 6b 50 72 69 76 28 78 29  {..set tkPriv(x)
465d0 20 30 0a 09 73 65 74 20 74 6b 50 72 69 76 28 79   0..set tkPriv(y
465e0 29 20 25 79 0a 09 73 65 74 20 74 6b 3a 3a 50 72  ) %y..set tk::Pr
465f0 69 76 28 78 29 20 30 0a 09 73 65 74 20 74 6b 3a  iv(x) 0..set tk:
46600 3a 50 72 69 76 28 79 29 20 25 79 0a 09 74 6b 3a  :Priv(y) %y..tk:
46610 3a 54 65 78 74 53 65 6c 65 63 74 54 6f 20 24 52  :TextSelectTo $R
46620 61 6d 44 65 62 75 67 67 65 72 3a 3a 74 65 78 74  amDebugger::text
46630 20 30 20 25 79 0a 20 20 20 20 7d 0a 20 20 20 20   0 %y.    }.    
46640 62 69 6e 64 20 24 6d 61 72 6b 65 72 20 3c 42 31  bind $marker <B1
46650 2d 4c 65 61 76 65 3e 20 7b 0a 09 73 65 74 20 74  -Leave> {..set t
46660 6b 50 72 69 76 28 78 29 20 30 0a 09 73 65 74 20  kPriv(x) 0..set 
46670 74 6b 50 72 69 76 28 79 29 20 25 79 0a 09 73 65  tkPriv(y) %y..se
46680 74 20 74 6b 3a 3a 50 72 69 76 28 78 29 20 25 78  t tk::Priv(x) %x
46690 0a 09 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 79  ..set tk::Priv(y
466a0 29 20 25 79 0a 09 74 6b 3a 3a 54 65 78 74 41 75  ) %y..tk::TextAu
466b0 74 6f 53 63 61 6e 20 24 52 61 6d 44 65 62 75 67  toScan $RamDebug
466c0 67 65 72 3a 3a 74 65 78 74 0a 20 20 20 20 7d 0a  ger::text.    }.
466d0 20 20 20 20 62 69 6e 64 20 24 6d 61 72 6b 65 72      bind $marker
466e0 20 3c 42 31 2d 45 6e 74 65 72 3e 20 7b 0a 09 74   <B1-Enter> {..t
466f0 6b 3a 3a 43 61 6e 63 65 6c 52 65 70 65 61 74 0a  k::CancelRepeat.
46700 20 20 20 20 7d 0a 20 20 20 20 62 69 6e 64 20 24      }.    bind $
46710 6d 61 72 6b 65 72 20 3c 42 75 74 74 6f 6e 52 65  marker <ButtonRe
46720 6c 65 61 73 65 2d 31 3e 20 7b 0a 09 74 6b 3a 3a  lease-1> {..tk::
46730 43 61 6e 63 65 6c 52 65 70 65 61 74 0a 20 20 20  CancelRepeat.   
46740 20 7d 0a 0a 20 20 20 20 62 69 6e 64 20 61 6c 6c   }..    bind all
46750 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79   <$::control-Key
46760 2d 31 3e 20 22 52 61 6d 44 65 62 75 67 67 65 72  -1> "RamDebugger
46770 3a 3a 44 69 73 70 6c 61 79 57 69 6e 64 6f 77 73  ::DisplayWindows
46780 48 69 65 72 61 72 63 68 79 20 3b 62 72 65 61 6b  Hierarchy ;break
46790 22 0a 0a 20 20 20 20 41 70 70 6c 79 44 72 6f 70  "..    ApplyDrop
467a0 42 69 6e 64 69 6e 67 20 24 77 20 5b 6c 69 73 74  Binding $w [list
467b0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 72   RamDebugger::Dr
467c0 6f 70 42 69 6e 64 69 6e 67 44 6f 6e 65 20 25 44  opBindingDone %D
467d0 5d 0a 0a 20 20 20 20 23 20 42 57 69 64 67 65 74  ]..    # BWidget
467e0 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
467f0 73 65 74 73 20 74 68 65 73 65 20 62 65 63 61 75  sets these becau
46800 73 65 20 74 68 65 79 20 61 72 65 20 69 6e 20 74  se they are in t
46810 68 65 20 6d 61 69 6e 20 6d 61 69 6e 0a 20 20 20  he main main.   
46820 20 23 20 77 65 20 6f 6e 6c 79 20 77 61 6e 74 20   # we only want 
46830 74 68 65 6d 20 69 6e 64 69 76 69 64 75 61 6c 6c  them individuall
46840 79 20 69 6e 20 65 76 65 72 79 20 77 69 64 67 65  y in every widge
46850 74 0a 20 20 20 20 62 69 6e 64 20 24 77 20 3c 24  t.    bind $w <$
46860 3a 3a 63 6f 6e 74 72 6f 6c 2d 63 3e 20 22 22 0a  ::control-c> "".
46870 20 20 20 20 62 69 6e 64 20 24 77 20 3c 24 3a 3a      bind $w <$::
46880 63 6f 6e 74 72 6f 6c 2d 76 3e 20 22 22 0a 0a 20  control-v> "".. 
46890 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70     if { $::tcl_p
468a0 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d  latform(platform
468b0 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 7d  ) eq "windows" }
468c0 20 7b 0a 09 65 76 65 6e 74 20 64 65 6c 65 74 65   {..event delete
468d0 20 3c 3c 50 61 73 74 65 53 65 6c 65 63 74 69 6f   <<PasteSelectio
468e0 6e 3e 3e 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20  n>>.    }.    . 
468f0 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e 63 65     if { $iswince
46900 20 7d 20 7b 20 70 6f 63 6b 65 74 70 63 3a 3a 61   } { pocketpc::a
46910 64 64 20 24 6d 61 72 6b 65 72 20 7d 0a 0a 20 20  dd $marker }..  
46920 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
46930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
46940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
46950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
46960 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
46970 23 23 0a 20 20 20 20 23 20 73 74 61 72 74 20 75  ##.    # start u
46980 70 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 23 23  p options.    ##
46990 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
469a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
469b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
469c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
469d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a  ##############..
469e0 20 20 20 20 69 66 20 7b 20 24 56 69 65 77 4f 6e      if { $ViewOn
469f0 6c 79 54 65 78 74 4f 72 41 6c 6c 20 3d 3d 20 22  lyTextOrAll == "
46a00 4f 6e 6c 79 54 65 78 74 22 20 7d 20 7b 0a 09 73  OnlyText" } {..s
46a10 65 74 20 6f 70 74 69 6f 6e 73 28 56 69 65 77 4f  et options(ViewO
46a20 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29 20 22 4f  nlyTextOrAll) "O
46a30 6e 6c 79 54 65 78 74 22 0a 20 20 20 20 7d 0a 20  nlyText".    }. 
46a40 20 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d     set geomkey m
46a50 61 69 6e 67 65 6f 6d 65 74 72 79 5f 24 6f 70 74  aingeometry_$opt
46a60 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78  ions(ViewOnlyTex
46a70 74 4f 72 41 6c 6c 29 0a 0a 20 20 20 20 69 66 20  tOrAll)..    if 
46a80 7b 20 24 67 65 6f 6d 65 74 72 79 20 21 3d 20 22  { $geometry != "
46a90 22 20 7d 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f  " } {..set optio
46aa0 6e 73 28 24 67 65 6f 6d 6b 65 79 29 20 24 67 65  ns($geomkey) $ge
46ab0 6f 6d 65 74 72 79 0a 20 20 20 20 7d 20 65 6c 73  ometry.    } els
46ac0 65 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69  eif { ![info exi
46ad0 73 74 73 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f  sts options($geo
46ae0 6d 6b 65 79 29 5d 20 7d 20 7b 0a 09 73 65 74 20  mkey)] } {..set 
46af0 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79  options($geomkey
46b00 29 20 38 30 30 78 36 30 30 2b 30 2b 30 0a 20 20  ) 800x600+0+0.  
46b10 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69    }..    if { [i
46b20 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f  nfo exists optio
46b30 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f  ns(ViewOnlyTextO
46b40 72 41 6c 6c 29 5d 20 26 26 20 24 6f 70 74 69 6f  rAll)] && $optio
46b50 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f  ns(ViewOnlyTextO
46b60 72 41 6c 6c 29 20 3d 3d 20 22 4f 6e 6c 79 54 65  rAll) == "OnlyTe
46b70 78 74 22 20 7d 20 7b 0a 09 52 61 6d 44 65 62 75  xt" } {..RamDebu
46b80 67 67 65 72 3a 3a 56 69 65 77 4f 6e 6c 79 54 65  gger::ViewOnlyTe
46b90 78 74 4f 72 41 6c 6c 0a 20 20 20 20 7d 0a 0a 20  xtOrAll.    }.. 
46ba0 20 20 20 23 20 74 72 69 63 6b 20 74 6f 20 6b 6e     # trick to kn
46bb0 6f 77 20 69 66 20 77 65 20 61 72 65 20 64 65 62  ow if we are deb
46bc0 75 67 67 69 6e 67 20 52 61 6d 44 65 62 75 67 67  ugging RamDebugg
46bd0 65 72 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66  er.    if { [inf
46be0 6f 20 63 6f 6d 6d 61 6e 64 73 20 73 65 6e 64 6d  o commands sendm
46bf0 61 73 74 65 72 5d 20 21 3d 20 22 22 20 7d 20 7b  aster] != "" } {
46c00 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b  ..if { [regexp {
46c10 28 5c 64 2b 29 78 28 5c 64 2b 29 5b 2b 5d 28 5b  (\d+)x(\d+)[+]([
46c20 2d 5c 64 5d 2b 29 5b 2b 5d 28 5b 2d 5c 64 5d 2b  -\d]+)[+]([-\d]+
46c30 29 7d 20 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f  )} $options($geo
46c40 6d 6b 65 79 29 20 7b 7d 20 77 69 20 68 65 20 78  mkey) {} wi he x
46c50 70 6f 73 20 79 70 6f 73 5d 20 7d 20 7b 0a 09 20  pos ypos] } {.. 
46c60 20 20 20 69 6e 63 72 20 78 70 6f 73 20 32 30 0a     incr xpos 20.
46c70 09 20 20 20 20 69 6e 63 72 20 79 70 6f 73 20 32  .    incr ypos 2
46c80 30 0a 09 20 20 20 20 63 75 3a 3a 73 65 74 5f 77  0..    cu::set_w
46c90 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 20 24  indow_geometry $
46ca0 77 20 24 7b 77 69 7d 78 24 68 65 2b 24 78 70 6f  w ${wi}x$he+$xpo
46cb0 73 2b 24 79 70 6f 73 0a 09 20 20 20 20 69 66 20  s+$ypos..    if 
46cc0 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f  { [info exists o
46cd0 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69  ptions(currentfi
46ce0 6c 65 29 5d 20 26 26 20 5c 0a 09 09 20 20 20 20  le)] && \...    
46cf0 20 5b 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20   [AreFilesEqual 
46d00 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74  $options(current
46d10 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 20  file) \...      
46d20 20 20 20 20 5b 73 65 6e 64 6d 61 73 74 65 72 20      [sendmaster 
46d30 73 65 74 20 3a 3a 52 61 6d 44 65 62 75 67 67 65  set ::RamDebugge
46d40 72 3a 3a 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d  r::currentfile]]
46d50 20 7d 20 7b 0a 09 09 0a 09 09 73 65 74 20 6f 70   } {......set op
46d60 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c  tions(currentfil
46d70 65 29 20 22 22 0a 09 09 66 6f 72 20 7b 20 73 65  e) ""...for { se
46d80 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b  t i 0 } { $i < [
46d90 6c 6c 65 6e 67 74 68 20 24 6f 70 74 69 6f 6e 73  llength $options
46da0 28 52 65 63 65 6e 74 46 69 6c 65 73 29 5d 20 7d  (RecentFiles)] }
46db0 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09   { incr i } {...
46dc0 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28      set options(
46dd0 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 6c 69  currentfile) [li
46de0 6e 64 65 78 20 24 6f 70 74 69 6f 6e 73 28 52 65  ndex $options(Re
46df0 63 65 6e 74 46 69 6c 65 73 29 20 24 69 5d 0a 09  centFiles) $i]..
46e00 09 20 20 20 20 69 66 20 7b 20 21 5b 41 72 65 46  .    if { ![AreF
46e10 69 6c 65 73 45 71 75 61 6c 20 24 6f 70 74 69 6f  ilesEqual $optio
46e20 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 29 20  ns(currentfile) 
46e30 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20  \...            
46e40 20 20 20 5b 73 65 6e 64 6d 61 73 74 65 72 20 73     [sendmaster s
46e50 65 74 20 3a 3a 52 61 6d 44 65 62 75 67 67 65 72  et ::RamDebugger
46e60 3a 3a 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d 20  ::currentfile]] 
46e70 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 62 72  } {...        br
46e80 65 61 6b 0a 09 09 20 20 20 20 7d 20 65 6c 73 65  eak...    } else
46e90 20 7b 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 63   { set options(c
46ea0 75 72 72 65 6e 74 66 69 6c 65 29 20 22 22 20 7d  urrentfile) "" }
46eb0 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20  ...}..    }..}. 
46ec0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20     } else {..if 
46ed0 7b 20 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d  { $options($geom
46ee0 6b 65 79 29 20 65 71 20 22 7a 6f 6f 6d 65 64 22  key) eq "zoomed"
46ef0 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24   } {..    if { $
46f00 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70  ::tcl_platform(p
46f10 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 6e  latform) eq "win
46f20 64 6f 77 73 22 20 7d 20 7b 0a 09 09 77 6d 20 73  dows" } {...wm s
46f30 74 61 74 65 20 24 77 20 7a 6f 6f 6d 65 64 0a 09  tate $w zoomed..
46f40 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 63      } else {...c
46f50 61 74 63 68 20 7b 20 77 6d 20 61 74 74 72 69 62  atch { wm attrib
46f60 75 74 65 73 20 24 77 20 2d 7a 6f 6f 6d 65 64 20  utes $w -zoomed 
46f70 31 20 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20  1 }..    }..    
46f80 77 6d 20 67 65 6f 6d 65 74 72 79 20 24 77 20 38  wm geometry $w 8
46f90 30 30 78 36 30 30 2b 30 2b 30 0a 09 7d 20 65 6c  00x600+0+0..} el
46fa0 73 65 20 7b 0a 09 20 20 20 20 63 75 3a 3a 73 65  se {..    cu::se
46fb0 74 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72  t_window_geometr
46fc0 79 20 24 77 20 24 6f 70 74 69 6f 6e 73 28 24 67  y $w $options($g
46fd0 65 6f 6d 6b 65 79 29 0a 09 7d 0a 20 20 20 20 7d  eomkey)..}.    }
46fe0 0a 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77 69  ..    if { $iswi
46ff0 6e 63 65 20 7d 20 7b 0a 09 23 20 77 69 6e 63 65  nce } {..# wince
47000 0a 09 77 6d 20 67 65 6f 6d 65 74 72 79 20 24 77  ..wm geometry $w
47010 20 32 34 30 78 32 36 38 2b 2d 32 2b 32 36 0a 09   240x268+-2+26..
47020 3a 3a 65 74 63 6c 3a 3a 61 75 74 6f 66 69 74 20  ::etcl::autofit 
47030 24 77 0a 09 62 69 6e 64 20 24 77 20 3c 43 6f 6e  $w..bind $w <Con
47040 66 69 67 75 72 65 52 65 71 75 65 73 74 3e 20 7b  figureRequest> {
47050 3a 3a 65 74 63 6c 3a 3a 61 75 74 6f 66 69 74 20  ::etcl::autofit 
47060 25 57 7d 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20  %W}.    }.    . 
47070 20 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61     set menu [$ma
47080 69 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20  inframe getmenu 
47090 61 63 74 69 76 65 70 72 6f 67 72 61 6d 73 5d 0a  activeprograms].
470a0 20 20 20 20 69 66 20 7b 20 5b 20 74 6b 20 77 69      if { [ tk wi
470b0 6e 64 6f 77 69 6e 67 73 79 73 74 65 6d 5d 20 65  ndowingsystem] e
470c0 71 20 22 61 71 75 61 22 20 7d 20 7b 0a 09 41 63  q "aqua" } {..Ac
470d0 74 75 61 6c 69 7a 65 41 63 74 69 76 65 50 72 6f  tualizeActivePro
470e0 67 72 61 6d 73 20 24 6d 65 6e 75 0a 20 20 20 20  grams $menu.    
470f0 7d 20 65 6c 73 65 20 7b 0a 09 24 6d 65 6e 75 20  } else {..$menu 
47100 63 6f 6e 66 69 67 75 72 65 20 2d 70 6f 73 74 63  configure -postc
47110 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d  ommand [list Ram
47120 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c  Debugger::Actual
47130 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d  izeActiveProgram
47140 73 20 24 6d 65 6e 75 20 31 5d 0a 20 20 20 20 7d  s $menu 1].    }
47150 0a 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 5b  ..    set menu [
47160 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d 65  $mainframe getme
47170 6e 75 20 6d 61 63 72 6f 73 5d 0a 20 20 20 20 41  nu macros].    A
47180 64 64 41 63 74 69 76 65 4d 61 63 72 6f 73 54 6f  ddActiveMacrosTo
47190 4d 65 6e 75 20 24 6d 61 69 6e 66 72 61 6d 65 20  Menu $mainframe 
471a0 24 6d 65 6e 75 0a 0a 20 20 20 20 69 66 20 7b 20  $menu..    if { 
471b0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74  [info exists opt
471c0 69 6f 6e 73 28 62 72 65 61 6b 70 6f 69 6e 74 73  ions(breakpoints
471d0 29 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 6c 6c  )] } {..if { [ll
471e0 65 6e 67 74 68 20 5b 6c 69 6e 64 65 78 20 24 6f  ength [lindex $o
471f0 70 74 69 6f 6e 73 28 62 72 65 61 6b 70 6f 69 6e  ptions(breakpoin
47200 74 73 29 20 30 5d 5d 20 3d 3d 20 34 20 7d 20 7b  ts) 0]] == 4 } {
47210 0a 09 20 20 20 20 73 65 74 20 62 72 65 61 6b 70  ..    set breakp
47220 6f 69 6e 74 73 20 22 22 0a 09 20 20 20 20 66 6f  oints ""..    fo
47230 72 65 61 63 68 20 69 20 24 6f 70 74 69 6f 6e 73  reach i $options
47240 28 62 72 65 61 6b 70 6f 69 6e 74 73 29 20 7b 0a  (breakpoints) {.
47250 09 09 6c 61 70 70 65 6e 64 20 62 72 65 61 6b 70  ..lappend breakp
47260 6f 69 6e 74 73 20 5b 63 6f 6e 63 61 74 20 5b 6c  oints [concat [l
47270 69 73 74 20 5b 6c 69 6e 64 65 78 20 24 69 20 30  ist [lindex $i 0
47280 5d 5d 20 31 20 5b 6c 72 61 6e 67 65 20 24 69 20  ]] 1 [lrange $i 
47290 31 20 33 5d 5d 0a 09 20 20 20 20 7d 0a 09 7d 20  1 3]]..    }..} 
472a0 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20  else {..    set 
472b0 62 72 65 61 6b 70 6f 69 6e 74 73 20 24 6f 70 74  breakpoints $opt
472c0 69 6f 6e 73 28 62 72 65 61 6b 70 6f 69 6e 74 73  ions(breakpoints
472d0 29 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69  )..}.    }.    i
472e0 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73  f { [info exists
472f0 20 6f 70 74 69 6f 6e 73 28 54 69 6d 65 4d 65 61   options(TimeMea
47300 73 75 72 65 44 61 74 61 29 5d 20 7d 20 7b 0a 09  sureData)] } {..
47310 73 65 74 20 54 69 6d 65 4d 65 61 73 75 72 65 44  set TimeMeasureD
47320 61 74 61 20 24 6f 70 74 69 6f 6e 73 28 54 69 6d  ata $options(Tim
47330 65 4d 65 61 73 75 72 65 44 61 74 61 29 0a 20 20  eMeasureData).  
47340 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69    }..    if { [i
47350 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f  nfo exists optio
47360 6e 73 28 64 65 62 75 67 67 65 72 73 74 61 74 65  ns(debuggerstate
47370 29 5d 20 26 26 20 24 6f 70 74 69 6f 6e 73 28 64  )] && $options(d
47380 65 62 75 67 67 65 72 73 74 61 74 65 29 20 3d 3d  ebuggerstate) ==
47390 20 22 74 69 6d 65 22 20 7d 20 7b 0a 09 73 65 74   "time" } {..set
473a0 20 64 65 62 75 67 67 65 72 73 74 61 74 65 20 24   debuggerstate $
473b0 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 67 65 72  options(debugger
473c0 73 74 61 74 65 29 0a 09 23 52 61 6d 44 65 62 75  state)..#RamDebu
473d0 67 67 65 72 3a 3a 44 69 73 70 6c 61 79 54 69 6d  gger::DisplayTim
473e0 65 73 57 69 6e 64 6f 77 0a 20 20 20 20 7d 0a 20  esWindow.    }. 
473f0 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78     if { [info ex
47400 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 53 65 61  ists options(Sea
47410 72 63 68 54 6f 6f 6c 62 61 72 29 5d 20 26 26 20  rchToolbar)] && 
47420 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69 6f 6e 73  [lindex $options
47430 28 53 65 61 72 63 68 54 6f 6f 6c 62 61 72 29 20  (SearchToolbar) 
47440 30 5d 20 26 26 20 5c 0a 09 28 21 5b 69 6e 66 6f  0] && \..(![info
47450 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28   exists options(
47460 53 65 61 72 63 68 54 6f 6f 6c 62 61 72 5f 61 75  SearchToolbar_au
47470 74 6f 63 6c 6f 73 65 29 5d 20 7c 7c 20 21 24 6f  toclose)] || !$o
47480 70 74 69 6f 6e 73 28 53 65 61 72 63 68 54 6f 6f  ptions(SearchToo
47490 6c 62 61 72 5f 61 75 74 6f 63 6c 6f 73 65 29 29  lbar_autoclose))
474a0 20 7d 20 7b 0a 09 53 65 61 72 63 68 57 69 6e 64   } {..SearchWind
474b0 6f 77 20 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69  ow [lindex $opti
474c0 6f 6e 73 28 53 65 61 72 63 68 54 6f 6f 6c 62 61  ons(SearchToolba
474d0 72 29 20 31 5d 0a 20 20 20 20 7d 0a 20 20 20 20  r) 1].    }.    
474e0 53 68 6f 77 53 74 61 74 75 73 42 61 72 0a 20 20  ShowStatusBar.  
474f0 20 20 53 68 6f 77 42 75 74 74 6f 6e 73 54 6f 6f    ShowButtonsToo
47500 6c 42 61 72 0a 0a 20 20 20 20 0a 23 20 20 20 20  lBar..    .#    
47510 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73   if { [info exis
47520 74 73 20 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74  ts options(remot
47530 65 73 65 72 76 65 72 54 79 70 65 29 5d 20 26 26  eserverType)] &&
47540 20 24 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65   $options(remote
47550 73 65 72 76 65 72 54 79 70 65 29 20 3d 3d 20 22  serverType) == "
47560 72 65 6d 6f 74 65 22 20 26 26 20 5c 0a 23 20 20  remote" && \.#  
47570 20 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 65 78          [info ex
47580 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 72 65 6d  ists options(rem
47590 6f 74 65 73 65 72 76 65 72 29 5d 20 7d 20 7b 0a  oteserver)] } {.
475a0 23 20 20 20 20 20 20 20 20 20 53 65 74 4d 65 73  #         SetMes
475b0 73 61 67 65 20 22 43 6f 6e 6e 65 63 74 69 6e 67  sage "Connecting
475c0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24 6f   remoteserver $o
475d0 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 73 65 72  ptions(remoteser
475e0 76 65 72 29 2e 2e 2e 22 0a 23 20 20 20 20 20 20  ver)...".#      
475f0 20 20 20 63 61 74 63 68 20 7b 20 72 64 65 62 75     catch { rdebu
47600 67 20 24 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74  g $options(remot
47610 65 73 65 72 76 65 72 29 20 7d 0a 23 20 20 20 20  eserver) }.#    
47620 20 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20       SetMessage 
47630 22 22 0a 23 20 20 20 20 20 7d 0a 0a 20 20 20 20  "".#     }..    
47640 4e 65 77 46 69 6c 65 0a 20 20 20 20 0a 20 20 20  NewFile.    .   
47650 20 66 6f 63 75 73 20 2d 66 6f 72 63 65 20 24 74   focus -force $t
47660 65 78 74 0a 20 20 20 20 63 70 72 6f 6a 65 63 74  ext.    cproject
47670 3a 3a 49 6e 69 74 20 24 77 0a 0a 20 20 20 20 23  ::Init $w..    #
47680 20 66 6f 72 20 74 6b 63 6f 6e 0a 20 20 20 20 72   for tkcon.    r
47690 65 6e 61 6d 65 20 3a 3a 65 78 69 74 20 3a 3a 65  ename ::exit ::e
476a0 78 69 74 5f 66 69 6e 61 6c 0a 20 20 20 20 70 72  xit_final.    pr
476b0 6f 63 20 3a 3a 65 78 69 74 20 7b 20 61 72 67 73  oc ::exit { args
476c0 20 7d 20 7b 7d 0a 0a 20 20 20 20 23 20 66 6f 72   } {}..    # for
476d0 20 64 65 66 69 6e 69 6e 67 20 77 68 61 74 20 69   defining what i
476e0 73 20 61 20 77 6f 72 64 20 66 6f 72 20 74 65 78  s a word for tex
476f0 74 20 77 69 64 67 65 74 73 0a 20 20 20 20 61 75  t widgets.    au
47700 74 6f 5f 6c 6f 61 64 20 74 63 6c 5f 77 6f 72 64  to_load tcl_word
47710 42 72 65 61 6b 41 66 74 65 72 0a 20 20 20 20 73  BreakAfter.    s
47720 65 74 20 3a 3a 74 63 6c 5f 77 6f 72 64 63 68 61  et ::tcl_wordcha
47730 72 73 20 22 5c 5c 77 22 0a 20 20 20 20 73 65 74  rs "\\w".    set
47740 20 3a 3a 74 63 6c 5f 6e 6f 6e 77 6f 72 64 63 68   ::tcl_nonwordch
47750 61 72 73 20 22 5c 5c 57 22 0a 23 20 20 20 20 20  ars "\\W".#     
47760 73 65 74 20 3a 3a 74 63 6c 5f 77 6f 72 64 63 68  set ::tcl_wordch
47770 61 72 73 20 7b 5c 53 7d 0a 23 20 20 20 20 20 73  ars {\S}.#     s
47780 65 74 20 3a 3a 74 63 6c 5f 6e 6f 6e 77 6f 72 64  et ::tcl_nonword
47790 63 68 61 72 73 20 7b 5c 73 7d 0a 0a 20 20 20 20  chars {\s}..    
477a0 23 20 69 74 20 69 73 20 64 6f 6e 65 20 69 6e 20  # it is done in 
477b0 74 68 69 73 20 77 61 79 20 62 65 63 61 75 73 65  this way because
477c0 20 69 66 20 6e 6f 74 2c 20 74 68 65 20 64 65 66   if not, the def
477d0 69 6e 69 74 69 6f 6e 20 67 65 74 73 20 72 65 6c  inition gets rel
477e0 6f 61 64 0a 20 20 20 20 70 72 6f 63 20 3a 3a 74  oad.    proc ::t
477f0 6b 54 61 62 54 6f 57 69 6e 64 6f 77 20 7b 20 77  kTabToWindow { w
47800 20 7d 20 7b 20 61 66 74 65 72 20 31 30 30 20 57   } { after 100 W
47810 69 64 67 65 74 3a 3a 74 72 61 76 65 72 73 65 54  idget::traverseT
47820 6f 20 24 77 20 7d 0a 23 20 20 20 20 20 75 70 6c  o $w }.#     upl
47830 65 76 65 6c 20 5c 23 30 20 7b 0a 23 20 20 20 20  evel \#0 {.#    
47840 20 20 20 20 20 70 72 6f 63 20 74 6b 54 61 62 54       proc tkTabT
47850 6f 57 69 6e 64 6f 77 20 7b 77 7d 20 7b 0a 23 20  oWindow {w} {.# 
47860 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 63 75              focu
47870 73 20 24 77 0a 23 20 20 20 20 20 20 20 20 20 20  s $w.#          
47880 20 20 20 61 66 74 65 72 20 31 30 30 20 7b 0a 23     after 100 {.#
47890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
478a0 20 73 65 74 20 77 20 5b 66 6f 63 75 73 5d 0a 23   set w [focus].#
478b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
478c0 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 65 71 75   if {[string equ
478d0 61 6c 20 5b 77 69 6e 66 6f 20 63 6c 61 73 73 20  al [winfo class 
478e0 24 77 5d 20 45 6e 74 72 79 5d 7d 20 7b 0a 23 20  $w] Entry]} {.# 
478f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47900 20 20 20 20 24 77 20 73 65 6c 65 63 74 69 6f 6e      $w selection
47910 20 72 61 6e 67 65 20 30 20 65 6e 64 0a 23 20 20   range 0 end.#  
47920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47930 20 20 20 24 77 20 69 63 75 72 73 6f 72 20 65 6e     $w icursor en
47940 64 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20  d.#             
47950 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 20 20      }.#         
47960 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 20 20      }.#         
47970 7d 0a 23 20 20 20 20 20 7d 0a 0a 20 20 20 20 23  }.#     }..    #
47980 20 69 66 20 77 65 20 64 6f 20 69 74 20 61 74 20   if we do it at 
47990 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 2c 20 61  the beginning, a
479a0 6e 20 75 67 6c 79 20 75 70 64 61 74 65 20 69 73  n ugly update is
479b0 20 6d 61 64 65 0a 20 20 20 20 69 66 20 7b 20 24   made.    if { $
479c0 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70  ::tcl_platform(p
479d0 6c 61 74 66 6f 72 6d 29 20 6e 65 20 22 77 69 6e  latform) ne "win
479e0 64 6f 77 73 22 20 7d 20 7b 0a 09 73 65 74 20 69  dows" } {..set i
479f0 6d 67 20 5b 69 6d 61 67 65 20 63 72 65 61 74 65  mg [image create
47a00 20 70 68 6f 74 6f 20 2d 66 69 6c 65 20 5b 66 69   photo -file [fi
47a10 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 20  le join $topdir 
47a20 61 64 64 6f 6e 73 20 72 61 6d 64 65 62 75 67 67  addons ramdebugg
47a30 65 72 2e 70 6e 67 5d 5d 0a 09 77 6d 20 69 63 6f  er.png]]..wm ico
47a40 6e 70 68 6f 74 6f 20 24 77 20 24 69 6d 67 0a 09  nphoto $w $img..
47a50 23 77 6d 20 69 63 6f 6e 62 69 74 6d 61 70 20 24  #wm iconbitmap $
47a60 77 20 40 24 74 6f 70 64 69 72 2f 61 64 64 6f 6e  w @$topdir/addon
47a70 73 2f 72 61 6d 64 65 62 75 67 67 65 72 2e 78 62  s/ramdebugger.xb
47a80 6d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b  m.    } elseif {
47a90 20 21 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09   !$iswince } {..
47aa0 77 6d 20 69 63 6f 6e 62 69 74 6d 61 70 20 24 77  wm iconbitmap $w
47ab0 20 24 74 6f 70 64 69 72 2f 61 64 64 6f 6e 73 2f   $topdir/addons/
47ac0 72 61 6d 64 65 62 75 67 67 65 72 2e 69 63 6f 0a  ramdebugger.ico.
47ad0 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69  .if { ![info exi
47ae0 73 74 73 20 3a 3a 69 73 5f 70 61 63 6b 61 67 65  sts ::is_package
47af0 5d 20 7c 7c 20 21 24 3a 3a 69 73 5f 70 61 63 6b  ] || !$::is_pack
47b00 61 67 65 20 7d 20 7b 0a 09 20 20 20 20 63 61 74  age } {..    cat
47b10 63 68 20 7b 20 77 6d 20 69 63 6f 6e 62 69 74 6d  ch { wm iconbitm
47b20 61 70 20 24 77 20 2d 64 65 66 61 75 6c 74 20 24  ap $w -default $
47b30 74 6f 70 64 69 72 2f 61 64 64 6f 6e 73 2f 72 61  topdir/addons/ra
47b40 6d 64 65 62 75 67 67 65 72 2e 69 63 6f 20 7d 0a  mdebugger.ico }.
47b50 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  .}.    }.    if 
47b60 7b 20 21 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a  { !$iswince } {.
47b70 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 56  .RamDebugger::CV
47b80 53 3a 3a 4d 61 6e 61 67 65 41 75 74 6f 53 61 76  S::ManageAutoSav
47b90 65 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 64 61  e.    }.    upda
47ba0 74 65 20 69 64 6c 65 74 61 73 6b 73 0a 0a 20 20  te idletasks..  
47bb0 20 20 45 6e 64 53 70 6c 61 73 68 0a 0a 20 20 20    EndSplash..   
47bc0 20 69 66 20 7b 20 5b 5b 77 69 6e 66 6f 20 74 6f   if { [[winfo to
47bd0 70 6c 65 76 65 6c 20 24 77 5d 20 63 67 65 74 20  plevel $w] cget 
47be0 2d 75 73 65 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a  -use] == "" } {.
47bf0 09 77 6d 20 64 65 69 63 6f 6e 69 66 79 20 24 77  .wm deiconify $w
47c00 0a 09 66 6f 63 75 73 20 2d 66 6f 72 63 65 20 24  ..focus -force $
47c10 74 65 78 74 0a 20 20 20 20 7d 0a 20 20 20 20 69  text.    }.    i
47c20 66 20 7b 20 24 69 73 77 69 6e 63 65 20 7d 20 7b  f { $iswince } {
47c30 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68  ..set err [catch
47c40 20 7b 20 3a 3a 65 74 63 6c 3a 3a 61 75 74 6f 66   { ::etcl::autof
47c50 69 74 20 24 77 20 7d 5d 0a 09 69 66 20 7b 20 24  it $w }]..if { $
47c60 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 77 6d 20  err } {..    wm 
47c70 67 65 6f 6d 65 74 72 79 20 24 77 20 32 34 30 78  geometry $w 240x
47c80 32 36 38 2b 2d 32 2b 32 36 0a 09 7d 20 20 20 0a  268+-2+26..}   .
47c90 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61      }.}..proc Ra
47ca0 6d 44 65 62 75 67 67 65 72 3a 3a 69 6e 73 65 72  mDebugger::inser
47cb0 74 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 5f 63 6d  t_translation_cm
47cc0 64 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  d {} {.    varia
47cd0 62 6c 65 20 74 65 78 74 0a 20 20 20 20 0a 20 20  ble text.    .  
47ce0 20 20 73 65 74 20 6f 6c 64 53 65 70 61 72 61 74    set oldSeparat
47cf0 6f 72 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d  or [$text cget -
47d00 61 75 74 6f 73 65 70 61 72 61 74 6f 72 73 5d 0a  autoseparators].
47d10 20 20 20 20 69 66 20 7b 24 6f 6c 64 53 65 70 61      if {$oldSepa
47d20 72 61 74 6f 72 7d 20 7b 0a 09 24 74 65 78 74 20  rator} {..$text 
47d30 63 6f 6e 66 69 67 75 72 65 20 2d 61 75 74 6f 73  configure -autos
47d40 65 70 61 72 61 74 6f 72 73 20 30 0a 20 20 20 20  eparators 0.    
47d50 7d 0a 20 20 20 20 24 74 65 78 74 20 65 64 69 74  }.    $text edit
47d60 20 73 65 70 61 72 61 74 6f 72 0a 20 0a 20 20 20   separator. .   
47d70 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 73   if {[llength [s
47d80 65 74 20 72 61 6e 67 65 20 5b 24 74 65 78 74 20  et range [$text 
47d90 74 61 67 20 72 61 6e 67 65 73 20 73 65 6c 5d 5d  tag ranges sel]]
47da0 5d 7d 20 7b 0a 09 6c 61 73 73 69 67 6e 20 24 72  ]} {..lassign $r
47db0 61 6e 67 65 20 73 31 20 73 32 0a 09 69 66 20 7b  ange s1 s2..if {
47dc0 20 5b 24 74 65 78 74 20 67 65 74 20 22 24 73 31   [$text get "$s1
47dd0 2d 31 63 22 5d 20 65 71 20 7b 22 7d 20 7d 20 7b  -1c"] eq {"} } {
47de0 0a 09 20 20 20 20 73 65 74 20 73 31 20 5b 24 74  ..    set s1 [$t
47df0 65 78 74 20 69 6e 64 65 78 20 22 24 73 31 2d 31  ext index "$s1-1
47e00 63 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 24 74  c"]..}..if { [$t
47e10 65 78 74 20 67 65 74 20 22 24 73 32 22 5d 20 65  ext get "$s2"] e
47e20 71 20 7b 22 7d 20 7d 20 7b 0a 09 20 20 20 20 73  q {"} } {..    s
47e30 65 74 20 73 32 20 5b 24 74 65 78 74 20 69 6e 64  et s2 [$text ind
47e40 65 78 20 22 24 73 32 2b 31 63 22 5d 0a 09 7d 0a  ex "$s2+1c"]..}.
47e50 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65      } else {..se
47e60 74 20 69 20 5b 24 74 65 78 74 20 69 6e 64 65 78  t i [$text index
47e70 20 69 6e 73 65 72 74 5d 0a 09 6c 61 73 73 69 67   insert]..lassig
47e80 6e 20 5b 6c 69 73 74 20 24 69 20 24 69 5d 20 73  n [list $i $i] s
47e90 31 20 73 32 0a 09 73 65 74 20 73 31 5f 73 61 76  1 s2..set s1_sav
47ea0 65 20 24 73 31 0a 09 77 68 69 6c 65 20 7b 20 5b  e $s1..while { [
47eb0 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20 24 73  $text compare $s
47ec0 31 20 3e 20 22 24 73 31 20 6c 69 6e 65 73 74 61  1 > "$s1 linesta
47ed0 72 74 22 5d 20 26 26 20 5b 72 65 67 65 78 70 20  rt"] && [regexp 
47ee0 7b 5b 5c 77 5c 73 5c 22 25 5d 7d 20 5b 24 74 65  {[\w\s\"%]} [$te
47ef0 78 74 20 67 65 74 20 22 24 73 31 2d 31 63 22 5d  xt get "$s1-1c"]
47f00 5d 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20  ] } {..    if { 
47f10 24 73 31 20 6e 65 20 24 73 31 5f 73 61 76 65 20  $s1 ne $s1_save 
47f20 26 26 20 5b 24 74 65 78 74 20 67 65 74 20 24 73  && [$text get $s
47f30 31 5d 20 65 71 20 7b 22 7d 20 7d 20 7b 20 62 72  1] eq {"} } { br
47f40 65 61 6b 20 7d 0a 09 20 20 20 20 73 65 74 20 73  eak }..    set s
47f50 31 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22  1 [$text index "
47f60 24 73 31 2d 31 63 22 5d 0a 09 7d 0a 09 69 66 20  $s1-1c"]..}..if 
47f70 7b 20 5b 24 74 65 78 74 20 67 65 74 20 22 24 73  { [$text get "$s
47f80 31 22 5d 20 6e 65 20 7b 22 7d 20 7d 20 7b 0a 09  1"] ne {"} } {..
47f90 09 73 65 74 20 73 31 20 24 73 31 5f 73 61 76 65  .set s1 $s1_save
47fa0 0a 09 09 77 68 69 6c 65 20 7b 20 5b 24 74 65 78  ...while { [$tex
47fb0 74 20 63 6f 6d 70 61 72 65 20 24 73 31 20 3e 20  t compare $s1 > 
47fc0 22 24 73 31 20 6c 69 6e 65 73 74 61 72 74 22 5d  "$s1 linestart"]
47fd0 20 26 26 20 5b 72 65 67 65 78 70 20 7b 5b 5c 77   && [regexp {[\w
47fe0 5c 22 25 5d 7d 20 5b 24 74 65 78 74 20 67 65 74  \"%]} [$text get
47ff0 20 22 24 73 31 2d 31 63 22 5d 5d 20 7d 20 7b 0a   "$s1-1c"]] } {.
48000 09 09 20 20 20 20 73 65 74 20 73 31 20 5b 24 74  ..    set s1 [$t
48010 65 78 74 20 69 6e 64 65 78 20 22 24 73 31 2d 31  ext index "$s1-1
48020 63 22 5d 0a 09 09 7d 0a 09 09 73 65 74 20 72 65  c"]...}...set re
48030 78 20 7b 5b 5c 77 25 5d 7d 0a 09 20 20 20 20 7d  x {[\w%]}..    }
48040 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65   else {...set re
48050 78 20 7b 5b 5c 77 5c 73 25 5c 22 5d 7d 0a 09 20  x {[\w\s%\"]}.. 
48060 20 20 20 7d 0a 09 20 20 20 20 77 68 69 6c 65 20     }..    while 
48070 7b 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65  { [$text compare
48080 20 24 73 32 20 3c 20 22 24 73 32 20 6c 69 6e 65   $s2 < "$s2 line
48090 65 6e 64 22 5d 20 26 26 20 5b 72 65 67 65 78 70  end"] && [regexp
480a0 20 24 72 65 78 20 5b 24 74 65 78 74 20 67 65 74   $rex [$text get
480b0 20 22 24 73 32 2b 31 63 22 5d 5d 20 7d 20 7b 0a   "$s2+1c"]] } {.
480c0 09 20 20 20 20 69 66 20 7b 20 5b 24 74 65 78 74  .    if { [$text
480d0 20 67 65 74 20 24 73 32 5d 20 65 71 20 7b 22 7d   get $s2] eq {"}
480e0 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 20 20   } { break }..  
480f0 20 20 73 65 74 20 73 32 20 5b 24 74 65 78 74 20    set s2 [$text 
48100 69 6e 64 65 78 20 22 24 73 32 2b 31 63 22 5d 0a  index "$s2+1c"].
48110 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20  .}.    }.    if 
48120 7b 20 5b 24 74 65 78 74 20 67 65 74 20 22 24 73  { [$text get "$s
48130 31 22 5d 20 6e 65 20 7b 22 7d 20 7d 20 7b 0a 09  1"] ne {"} } {..
48140 24 74 65 78 74 20 69 6e 73 65 72 74 20 24 73 31  $text insert $s1
48150 20 7b 22 7d 0a 09 73 65 74 20 73 32 20 5b 24 74   {"}..set s2 [$t
48160 65 78 74 20 69 6e 64 65 78 20 22 24 73 32 2b 31  ext index "$s2+1
48170 63 22 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66  c"].    } elseif
48180 20 7b 20 5b 72 65 67 65 78 70 20 7b 5c 5b 28 5b   { [regexp {\[([
48190 5f 3d 5d 29 5c 73 2b 7d 20 5b 24 74 65 78 74 20  _=])\s+} [$text 
481a0 67 65 74 20 22 24 73 31 2d 33 63 22 20 24 73 31  get "$s1-3c" $s1
481b0 5d 20 7b 7d 20 63 6d 64 5d 20 7d 20 7b 0a 09 73  ] {} cmd] } {..s
481c0 77 69 74 63 68 20 2d 2d 20 24 63 6d 64 20 7b 0a  witch -- $cmd {.
481d0 09 20 20 20 20 22 5f 22 20 7b 20 24 74 65 78 74  .    "_" { $text
481e0 20 72 65 70 6c 61 63 65 20 22 24 73 31 2d 32 63   replace "$s1-2c
481f0 22 20 22 24 73 31 2d 31 63 22 20 22 3d 22 20 7d  " "$s1-1c" "=" }
48200 0a 09 20 20 20 20 22 3d 22 20 7b 20 24 74 65 78  ..    "=" { $tex
48210 74 20 72 65 70 6c 61 63 65 20 22 24 73 31 2d 32  t replace "$s1-2
48220 63 22 20 22 24 73 31 2d 31 63 22 20 22 5f 22 20  c" "$s1-1c" "_" 
48230 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20  }..}..return.   
48240 20 7d 0a 20 20 20 20 24 74 65 78 74 20 69 6e 73   }.    $text ins
48250 65 72 74 20 24 73 31 20 22 5c 5b 5f 20 22 0a 20  ert $s1 "\[_ ". 
48260 20 20 20 73 65 74 20 73 32 20 5b 24 74 65 78 74     set s2 [$text
48270 20 69 6e 64 65 78 20 22 24 73 32 2b 33 63 22 5d   index "$s2+3c"]
48280 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b  .    .    if { [
48290 24 74 65 78 74 20 67 65 74 20 22 24 73 32 20 2d  $text get "$s2 -
482a0 31 63 22 5d 20 6e 65 20 22 5c 22 22 20 7c 7c 20  1c"] ne "\"" || 
482b0 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20 22  [$text compare "
482c0 24 73 31 2b 34 63 22 20 3d 3d 20 24 73 32 5d 20  $s1+4c" == $s2] 
482d0 7d 20 7b 0a 09 24 74 65 78 74 20 69 6e 73 65 72  } {..$text inser
482e0 74 20 24 73 32 20 7b 22 7d 0a 09 73 65 74 20 73  t $s2 {"}..set s
482f0 32 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22  2 [$text index "
48300 24 73 32 2b 31 63 22 5d 0a 20 20 20 20 7d 0a 20  $s2+1c"].    }. 
48310 20 20 20 24 74 65 78 74 20 69 6e 73 65 72 74 20     $text insert 
48320 24 73 32 20 22 5c 5d 22 0a 20 20 20 20 24 74 65  $s2 "\]".    $te
48330 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65  xt mark set inse
48340 72 74 20 22 24 73 32 2d 31 63 22 0a 20 20 20 20  rt "$s2-1c".    
48350 0a 20 20 20 20 24 74 65 78 74 20 73 65 65 20 69  .    $text see i
48360 6e 73 65 72 74 0a 20 20 20 20 24 74 65 78 74 20  nsert.    $text 
48370 65 64 69 74 20 73 65 70 61 72 61 74 6f 72 0a 20  edit separator. 
48380 20 20 20 69 66 20 7b 24 6f 6c 64 53 65 70 61 72     if {$oldSepar
48390 61 74 6f 72 7d 20 7b 0a 09 24 74 65 78 74 20 63  ator} {..$text c
483a0 6f 6e 66 69 67 75 72 65 20 2d 61 75 74 6f 73 65  onfigure -autose
483b0 70 61 72 61 74 6f 72 73 20 31 0a 20 20 20 20 7d  parators 1.    }
483c0 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
483d0 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 49 6e  gger::OpenFileIn
483e0 4e 65 77 57 69 6e 64 6f 77 20 7b 20 61 72 67 73  NewWindow { args
483f0 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c   } {.    variabl
48400 65 20 69 6e 66 6f 5f 73 63 72 69 70 74 0a 20 20  e info_script.  
48410 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a    variable text.
48420 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74      variable opt
48430 69 6f 6e 73 0a 20 20 20 20 0a 20 20 20 20 73 65  ions.    .    se
48440 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20  t optional {..{ 
48450 2d 61 73 6b 5f 66 6f 72 5f 66 69 6c 65 20 62 6f  -ask_for_file bo
48460 6f 6c 65 61 6e 20 31 20 7d 0a 20 20 20 20 7d 0a  olean 1 }.    }.
48470 20 20 20 20 73 65 74 20 63 6f 6d 70 75 6c 73 6f      set compulso
48480 72 79 20 22 22 0a 20 20 20 20 70 61 72 73 65 5f  ry "".    parse_
48490 61 72 67 73 20 24 6f 70 74 69 6f 6e 61 6c 20 24  args $optional $
484a0 63 6f 6d 70 75 6c 73 6f 72 79 20 24 61 72 67 73  compulsory $args
484b0 0a 0a 0a 20 20 20 20 73 65 74 20 77 20 5b 77 69  ...    set w [wi
484c0 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65  nfo toplevel $te
484d0 78 74 5d 0a 20 20 20 20 73 65 74 20 67 65 6f 6d  xt].    set geom
484e0 6b 65 79 20 6d 61 69 6e 67 65 6f 6d 65 74 72 79  key maingeometry
484f0 5f 6e 65 77 77 69 6e 5f 24 6f 70 74 69 6f 6e 73  _newwin_$options
48500 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41  (ViewOnlyTextOrA
48510 6c 6c 29 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e  ll).    if { [in
48520 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e  fo exists option
48530 73 28 24 67 65 6f 6d 6b 65 79 29 5d 20 7d 20 7b  s($geomkey)] } {
48540 0a 09 73 65 74 20 67 65 6f 6d 65 74 72 79 20 24  ..set geometry $
48550 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79  options($geomkey
48560 29 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ).    } else {..
48570 61 70 70 65 6e 64 20 67 65 6f 6d 65 74 72 79 20  append geometry 
48580 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 77 69  [expr {[winfo wi
48590 64 74 68 20 24 77 5d 2d 34 30 7d 5d 78 20 5c 0a  dth $w]-40}]x \.
485a0 09 20 20 20 20 5b 65 78 70 72 20 7b 5b 77 69 6e  .    [expr {[win
485b0 66 6f 20 68 65 69 67 68 74 20 24 77 5d 2d 34 30  fo height $w]-40
485c0 7d 5d 2b 20 5c 0a 09 20 20 20 20 5b 65 78 70 72  }]+ \..    [expr
485d0 20 7b 5b 77 69 6e 66 6f 20 72 6f 6f 74 78 20 24   {[winfo rootx $
485e0 77 5d 2b 34 30 7d 5d 2b 20 5c 0a 09 20 20 20 20  w]+40}]+ \..    
485f0 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 72 6f  [expr {[winfo ro
48600 6f 74 79 20 24 77 5d 2b 34 30 7d 5d 0a 20 20 20  oty $w]+40}].   
48610 20 7d 0a 20 20 20 20 73 65 74 20 69 64 78 20 32   }.    set idx 2
48620 0a 20 20 20 20 77 68 69 6c 65 20 7b 20 5b 69 6e  .    while { [in
48630 74 65 72 70 20 65 78 69 73 74 73 20 72 61 6d 64  terp exists ramd
48640 65 62 75 67 67 65 72 24 69 64 78 5d 20 7d 20 7b  ebugger$idx] } {
48650 20 69 6e 63 72 20 69 64 78 20 7d 0a 20 20 20 20   incr idx }.    
48660 73 65 74 20 69 70 20 72 61 6d 64 65 62 75 67 67  set ip ramdebugg
48670 65 72 24 69 64 78 0a 20 20 20 20 69 6e 74 65 72  er$idx.    inter
48680 70 20 63 72 65 61 74 65 20 24 69 70 0a 20 20 20  p create $ip.   
48690 20 63 61 74 63 68 20 7b 20 24 69 70 20 65 76 61   catch { $ip eva
486a0 6c 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  l package requir
486b0 65 20 74 6b 64 6e 64 20 7d 20 3b 23 20 6f 6e 6c  e tkdnd } ;# onl
486c0 79 20 69 66 20 69 74 20 69 73 20 63 6f 6d 70 69  y if it is compi
486d0 6c 65 64 0a 20 20 20 20 24 69 70 20 65 76 61 6c  led.    $ip eval
486e0 20 5b 6c 69 73 74 20 73 65 74 20 61 75 74 6f 5f   [list set auto_
486f0 70 61 74 68 20 24 3a 3a 61 75 74 6f 5f 70 61 74  path $::auto_pat
48700 68 5d 0a 20 20 20 20 24 69 70 20 65 76 61 6c 20  h].    $ip eval 
48710 5b 6c 69 73 74 20 73 65 74 20 61 72 67 76 30 20  [list set argv0 
48720 24 3a 3a 61 72 67 76 30 5d 0a 20 20 20 20 24 69  $::argv0].    $i
48730 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 73 65 74  p eval [list set
48740 20 61 72 67 63 20 30 5d 0a 20 20 20 20 24 69 70   argc 0].    $ip
48750 20 65 76 61 6c 20 5b 6c 69 73 74 20 73 65 74 20   eval [list set 
48760 61 72 67 76 20 5b 6c 69 73 74 20 2d 72 67 65 6f  argv [list -rgeo
48770 6d 65 74 72 79 20 24 67 65 6f 6d 65 74 72 79 20  metry $geometry 
48780 2d 6e 6f 70 72 65 66 73 77 72 69 74 65 20 5c 0a  -noprefswrite \.
48790 09 09 2d 6e 6f 6f 70 65 6e 64 65 66 61 75 6c 74  ..-noopendefault
487a0 5d 5d 0a 20 20 20 20 69 6e 74 65 72 70 20 61 6c  ]].    interp al
487b0 69 61 73 20 24 69 70 20 65 78 69 74 20 22 22 20  ias $ip exit "" 
487c0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65  RamDebugger::Ope
487d0 6e 46 69 6c 65 49 6e 4e 65 77 57 69 6e 64 6f 77  nFileInNewWindow
487e0 5f 65 78 69 74 20 24 69 70 0a 20 20 20 20 23 20  _exit $ip.    # 
487f0 74 72 79 69 6e 67 20 62 6f 74 68 20 77 61 79 73  trying both ways
48800 20 6f 66 20 6c 6f 61 64 69 6e 67 20 54 6b 20 62   of loading Tk b
48810 65 63 61 75 73 65 20 74 68 65 79 20 64 65 70 65  ecause they depe
48820 6e 64 20 6f 6e 20 73 79 73 74 65 6d 20 63 6f 6e  nd on system con
48830 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 20 20 73  figuration.    s
48840 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20  et err [catch { 
48850 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 6c  $ip eval [list l
48860 6f 61 64 20 7b 7d 20 54 6b 5d 20 7d 5d 0a 20 20  oad {} Tk] }].  
48870 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a    if { $err } {.
48880 09 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 74 20  .$ip eval [list 
48890 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
488a0 54 6b 5d 0a 20 20 20 20 7d 0a 20 20 20 20 24 69  Tk].    }.    $i
488b0 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 73 6f 75  p eval [list sou
488c0 72 63 65 20 24 69 6e 66 6f 5f 73 63 72 69 70 74  rce $info_script
488d0 5d 0a 20 20 20 20 24 69 70 20 65 76 61 6c 20 5b  ].    $ip eval [
488e0 6c 69 73 74 20 61 72 72 61 79 20 73 65 74 20 52  list array set R
488f0 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69  amDebugger::opti
48900 6f 6e 73 20 5b 61 72 72 61 79 20 67 65 74 20 6f  ons [array get o
48910 70 74 69 6f 6e 73 5d 5d 0a 20 20 20 20 69 66 20  ptions]].    if 
48920 7b 20 24 61 73 6b 5f 66 6f 72 5f 66 69 6c 65 20  { $ask_for_file 
48930 7d 20 7b 0a 09 24 69 70 20 65 76 61 6c 20 5b 6c  } {..$ip eval [l
48940 69 73 74 20 61 66 74 65 72 20 31 30 30 20 5b 6c  ist after 100 [l
48950 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a  ist RamDebugger:
48960 3a 4f 70 65 6e 46 69 6c 65 5d 5d 0a 20 20 20 20  :OpenFile]].    
48970 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 24 69 70  }.    return $ip
48980 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75  .}..proc RamDebu
48990 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 49 6e  gger::OpenFileIn
489a0 4e 65 77 57 69 6e 64 6f 77 5f 65 78 69 74 20 7b  NewWindow_exit {
489b0 20 69 70 20 7d 20 7b 0a 20 20 20 20 76 61 72 69   ip } {.    vari
489c0 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20  able options..  
489d0 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d 61    set geomkey ma
489e0 69 6e 67 65 6f 6d 65 74 72 79 5f 6e 65 77 77 69  ingeometry_newwi
489f0 6e 5f 5b 24 69 70 20 65 76 61 6c 20 5b 6c 69 73  n_[$ip eval [lis
48a00 74 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 56 69  t set options(Vi
48a10 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29  ewOnlyTextOrAll)
48a20 5d 5d 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f  ]].    set optio
48a30 6e 73 28 24 67 65 6f 6d 6b 65 79 29 20 5b 24 69  ns($geomkey) [$i
48a40 70 20 65 76 61 6c 20 7b 0a 09 20 20 20 20 73 65  p eval {..    se
48a50 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65  t w [winfo tople
48a60 76 65 6c 20 24 74 65 78 74 5d 0a 09 20 20 20 20  vel $text]..    
48a70 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74  if { $::tcl_plat
48a80 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 65  form(platform) e
48a90 71 20 22 77 69 6e 64 6f 77 73 22 20 26 26 20 5b  q "windows" && [
48aa0 77 6d 20 73 74 61 74 65 20 24 77 5d 20 65 71 20  wm state $w] eq 
48ab0 22 7a 6f 6f 6d 65 64 22 20 7d 20 7b 0a 09 09 73  "zoomed" } {...s
48ac0 65 74 20 7a 6f 6f 6d 65 64 20 31 0a 09 20 20 20  et zoomed 1..   
48ad0 20 7d 20 65 6c 73 65 69 66 20 7b 20 21 5b 63 61   } elseif { ![ca
48ae0 74 63 68 20 7b 20 77 6d 20 61 74 74 72 69 62 75  tch { wm attribu
48af0 74 65 73 20 24 77 20 2d 7a 6f 6f 6d 65 64 20 7d  tes $w -zoomed }
48b00 20 72 65 74 5d 20 26 26 20 24 72 65 74 20 7d 20   ret] && $ret } 
48b10 7b 0a 09 09 73 65 74 20 7a 6f 6f 6d 65 64 20 31  {...set zoomed 1
48b20 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09  ..    } else {..
48b30 09 73 65 74 20 7a 6f 6f 6d 65 64 20 30 0a 09 20  .set zoomed 0.. 
48b40 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24     }..    if { $
48b50 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09 09 73 65 74  zoomed } {...set
48b60 20 72 65 74 20 7a 6f 6f 6d 65 64 0a 09 20 20 20   ret zoomed..   
48b70 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20   } else {...set 
48b80 72 65 74 20 5b 63 75 3a 3a 67 69 76 65 5f 77 69  ret [cu::give_wi
48b90 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 20 24 77  ndow_geometry $w
48ba0 5d 0a 09 20 20 20 20 7d 0a 09 7d 5d 20 0a 20 20  ]..    }..}] .  
48bb0 20 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20    interp delete 
48bc0 24 69 70 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44  $ip.}..proc RamD
48bd0 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 44 65 66  ebugger::OpenDef
48be0 61 75 6c 74 46 69 6c 65 20 7b 7d 20 7b 0a 20 20  aultFile {} {.  
48bf0 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f    variable optio
48c00 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  ns.    variable 
48c10 74 65 78 74 0a 0a 20 20 20 20 69 66 20 7b 20 5b  text..    if { [
48c20 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69  info exists opti
48c30 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 29  ons(currentfile)
48c40 5d 20 26 26 20 24 6f 70 74 69 6f 6e 73 28 63 75  ] && $options(cu
48c50 72 72 65 6e 74 66 69 6c 65 29 20 21 3d 20 22 22  rrentfile) != ""
48c60 20 20 26 26 20 5c 0a 09 20 20 20 20 20 5b 66 69    && \..     [fi
48c70 6c 65 20 65 78 69 73 74 73 20 24 6f 70 74 69 6f  le exists $optio
48c80 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 29 5d  ns(currentfile)]
48c90 20 7d 20 7b 0a 09 53 65 74 4d 65 73 73 61 67 65   } {..SetMessage
48ca0 20 5b 5f 20 22 4f 70 65 6e 69 6e 67 20 66 69 6c   [_ "Opening fil
48cb0 65 20 27 25 73 27 22 20 24 6f 70 74 69 6f 6e 73  e '%s'" $options
48cc0 28 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 2e 2e  (currentfile)]..
48cd0 2e 0a 09 4f 70 65 6e 46 69 6c 65 46 20 24 6f 70  ...OpenFileF $op
48ce0 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c  tions(currentfil
48cf0 65 29 0a 09 46 69 6c 6c 4c 69 73 74 42 6f 78 0a  e)..FillListBox.
48d00 09 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78  ...if { [info ex
48d10 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 63 75 72  ists options(cur
48d20 72 65 6e 74 69 64 78 29 5d 20 7d 20 7b 0a 09 20  rentidx)] } {.. 
48d30 20 20 20 24 74 65 78 74 20 73 65 65 20 24 6f 70     $text see $op
48d40 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 69 64 78  tions(currentidx
48d50 29 0a 09 20 20 20 20 24 74 65 78 74 20 6d 61 72  )..    $text mar
48d60 6b 20 73 65 74 20 69 6e 73 65 72 74 20 24 6f 70  k set insert $op
48d70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 69 64 78  tions(currentidx
48d80 29 0a 09 7d 0a 09 53 65 74 4d 65 73 73 61 67 65  )..}..SetMessage
48d90 20 22 22 0a 20 20 20 20 7d 0a 7d 0a 0a 69 66 20   "".    }.}..if 
48da0 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  { ![info exists 
48db0 53 6b 69 70 52 61 6d 44 65 62 75 67 67 65 72 49  SkipRamDebuggerI
48dc0 6e 69 74 5d 20 7d 20 7b 0a 20 20 20 20 69 66 20  nit] } {.    if 
48dd0 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73  { [info commands
48de0 20 6d 61 73 74 65 72 5d 20 21 3d 20 22 22 20 7d   master] != "" }
48df0 20 7b 0a 09 73 65 74 20 72 65 67 69 73 74 65 72   {..set register
48e00 61 73 72 65 6d 6f 74 65 20 30 0a 20 20 20 20 7d  asremote 0.    }
48e10 20 65 6c 73 65 20 7b 20 73 65 74 20 72 65 67 69   else { set regi
48e20 73 74 65 72 61 73 72 65 6d 6f 74 65 20 31 20 7d  sterasremote 1 }
48e30 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24  .    .    if { $
48e40 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f  ::tcl_platform(o
48e50 73 29 20 65 71 20 22 44 61 72 77 69 6e 22 20 7d  s) eq "Darwin" }
48e60 20 7b 0a 09 69 66 20 7b 5b 73 74 72 69 6e 67 20   {..if {[string 
48e70 66 69 72 73 74 20 22 2d 70 73 6e 22 20 5b 6c 69  first "-psn" [li
48e80 6e 64 65 78 20 24 61 72 67 76 20 30 5d 5d 20 3d  ndex $argv 0]] =
48e90 3d 20 30 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  = 0} {..    set 
48ea0 61 72 67 76 20 5b 6c 72 61 6e 67 65 20 24 61 72  argv [lrange $ar
48eb0 67 76 20 31 20 65 6e 64 5d 0a 09 7d 0a 20 20 20  gv 1 end]..}.   
48ec0 20 7d 0a 20 20 20 20 73 65 74 20 72 65 61 64 77   }.    set readw
48ed0 72 69 74 65 70 72 65 66 73 20 79 65 73 0a 20 20  riteprefs yes.  
48ee0 20 20 69 66 20 7b 20 5b 73 65 74 20 69 70 6f 73    if { [set ipos
48ef0 20 5b 6c 73 65 61 72 63 68 20 24 61 72 67 76 20   [lsearch $argv 
48f00 22 2d 6e 6f 70 72 65 66 73 22 5d 5d 20 21 3d 20  "-noprefs"]] != 
48f10 2d 31 20 7d 20 7b 0a 09 73 65 74 20 72 65 61 64  -1 } {..set read
48f20 77 72 69 74 65 70 72 65 66 73 20 6e 6f 72 65 61  writeprefs norea
48f30 64 77 72 69 74 65 0a 09 73 65 74 20 61 72 67 76  dwrite..set argv
48f40 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 67 76   [lreplace $argv
48f50 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20   $ipos $ipos].  
48f60 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 65    }.    if { [se
48f70 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
48f80 24 61 72 67 76 20 22 2d 6e 6f 70 72 65 66 73 77  $argv "-noprefsw
48f90 72 69 74 65 22 5d 5d 20 21 3d 20 2d 31 20 7d 20  rite"]] != -1 } 
48fa0 7b 0a 09 73 65 74 20 72 65 61 64 77 72 69 74 65  {..set readwrite
48fb0 70 72 65 66 73 20 6e 6f 77 72 69 74 65 0a 09 73  prefs nowrite..s
48fc0 65 74 20 61 72 67 76 20 5b 6c 72 65 70 6c 61 63  et argv [lreplac
48fd0 65 20 24 61 72 67 76 20 24 69 70 6f 73 20 24 69  e $argv $ipos $i
48fe0 70 6f 73 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69  pos].    }.    i
48ff0 66 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 5b 6c  f { [set ipos [l
49000 73 65 61 72 63 68 20 24 61 72 67 76 20 22 2d 6f  search $argv "-o
49010 6e 6c 79 74 65 78 74 22 5d 5d 20 21 3d 20 2d 31  nlytext"]] != -1
49020 20 7d 20 7b 0a 09 73 65 74 20 56 69 65 77 4f 6e   } {..set ViewOn
49030 6c 79 54 65 78 74 4f 72 41 6c 6c 20 4f 6e 6c 79  lyTextOrAll Only
49040 54 65 78 74 0a 09 73 65 74 20 61 72 67 76 20 5b  Text..set argv [
49050 6c 72 65 70 6c 61 63 65 20 24 61 72 67 76 20 24  lreplace $argv $
49060 69 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 20  ipos $ipos].    
49070 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 56 69 65  } else { set Vie
49080 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 22  wOnlyTextOrAll "
49090 22 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 65  " }.    if { [se
490a0 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20  t ipos [lsearch 
490b0 24 61 72 67 76 20 22 2d 6e 6f 6f 70 65 6e 64 65  $argv "-noopende
490c0 66 61 75 6c 74 22 5d 5d 20 21 3d 20 2d 31 20 7d  fault"]] != -1 }
490d0 20 7b 0a 09 73 65 74 20 6f 70 65 6e 64 65 66 61   {..set opendefa
490e0 75 6c 74 20 30 0a 09 73 65 74 20 61 72 67 76 20  ult 0..set argv 
490f0 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 67 76 20  [lreplace $argv 
49100 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20  $ipos $ipos].   
49110 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 6f 70   } else { set op
49120 65 6e 64 65 66 61 75 6c 74 20 31 20 7d 0a 0a 20  endefault 1 }.. 
49130 20 20 20 69 66 20 7b 20 5b 73 65 74 20 69 70 6f     if { [set ipo
49140 73 20 5b 6c 73 65 61 72 63 68 20 24 61 72 67 76  s [lsearch $argv
49150 20 22 2d 72 67 65 6f 6d 2a 22 5d 5d 20 21 3d 20   "-rgeom*"]] != 
49160 2d 31 20 7d 20 7b 0a 09 73 65 74 20 69 70 6f 73  -1 } {..set ipos
49170 6d 31 20 5b 65 78 70 72 20 7b 24 69 70 6f 73 2b  m1 [expr {$ipos+
49180 31 7d 5d 0a 09 73 65 74 20 67 65 6f 6d 65 74 72  1}]..set geometr
49190 79 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20  y [lindex $argv 
491a0 24 69 70 6f 73 6d 31 5d 0a 09 73 65 74 20 61 72  $iposm1]..set ar
491b0 67 76 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72  gv [lreplace $ar
491c0 67 76 20 24 69 70 6f 73 20 24 69 70 6f 73 6d 31  gv $ipos $iposm1
491d0 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73  ].    } else { s
491e0 65 74 20 67 65 6f 6d 65 74 72 79 20 22 22 20 7d  et geometry "" }
491f0 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b  .    .    if { [
49200 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63  set ipos [lsearc
49210 68 20 24 61 72 67 76 20 22 2d 72 75 73 65 22 5d  h $argv "-ruse"]
49220 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74  ] != -1 } {..set
49230 20 69 70 6f 73 6d 31 20 5b 65 78 70 72 20 7b 24   iposm1 [expr {$
49240 69 70 6f 73 2b 31 7d 5d 0a 09 73 65 74 20 74 6f  ipos+1}]..set to
49250 70 6c 65 76 65 6c 75 73 65 20 5b 6c 69 6e 64 65  pleveluse [linde
49260 78 20 24 61 72 67 76 20 24 69 70 6f 73 6d 31 5d  x $argv $iposm1]
49270 0a 09 73 65 74 20 61 72 67 76 20 5b 6c 72 65 70  ..set argv [lrep
49280 6c 61 63 65 20 24 61 72 67 76 20 24 69 70 6f 73  lace $argv $ipos
49290 20 24 69 70 6f 73 6d 31 5d 0a 20 20 20 20 7d 20   $iposm1].    } 
492a0 65 6c 73 65 20 7b 20 73 65 74 20 74 6f 70 6c 65  else { set tople
492b0 76 65 6c 75 73 65 20 22 22 20 7d 0a 0a 20 20 20  veluse "" }..   
492c0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e   RamDebugger::In
492d0 69 74 20 24 72 65 61 64 77 72 69 74 65 70 72 65  it $readwritepre
492e0 66 73 20 24 72 65 67 69 73 74 65 72 61 73 72 65  fs $registerasre
492f0 6d 6f 74 65 0a 20 20 20 20 0a 20 20 20 20 23 23  mote.    .    ##
49300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49310 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20  ##############. 
49350 20 20 20 23 20 20 20 20 20 49 6e 69 74 20 74 68     #     Init th
49360 65 20 47 55 49 20 70 61 72 74 0a 20 20 20 20 23  e GUI part.    #
49370 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49390 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
493a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
493b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
493c0 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b 69      .    if { [i
493d0 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 77 6d 5d  nfo commands wm]
493e0 20 21 3d 20 22 22 20 26 26 20 5b 69 6e 66 6f 20   != "" && [info 
493f0 63 6f 6d 6d 61 6e 64 73 20 74 6b 63 6f 6e 5f 70  commands tkcon_p
49400 75 74 73 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09  uts] == "" } {..
49410 77 6d 20 77 69 74 68 64 72 61 77 20 2e 0a 0a 09  wm withdraw ....
49420 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 69  RamDebugger::Ini
49430 74 47 55 49 20 2e 67 75 69 20 24 67 65 6f 6d 65  tGUI .gui $geome
49440 74 72 79 20 24 56 69 65 77 4f 6e 6c 79 54 65 78  try $ViewOnlyTex
49450 74 4f 72 41 6c 6c 20 24 74 6f 70 6c 65 76 65 6c  tOrAll $toplevel
49460 75 73 65 0a 0a 09 69 66 20 7b 20 5b 6c 6c 65 6e  use...if { [llen
49470 67 74 68 20 24 61 72 67 76 5d 20 7d 20 7b 0a 09  gth $argv] } {..
49480 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a      RamDebugger:
49490 3a 4f 70 65 6e 46 69 6c 65 46 20 5b 66 69 6c 65  :OpenFileF [file
494a0 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b 6c 69 6e 64   normalize [lind
494b0 65 78 20 24 61 72 67 76 20 30 5d 5d 0a 09 7d 20  ex $argv 0]]..} 
494c0 65 6c 73 65 69 66 20 7b 20 24 6f 70 65 6e 64 65  elseif { $opende
494d0 66 61 75 6c 74 20 7d 20 7b 0a 09 20 20 20 20 52  fault } {..    R
494e0 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e  amDebugger::Open
494f0 44 65 66 61 75 6c 74 46 69 6c 65 0a 09 7d 0a 09  DefaultFile..}..
49500 70 72 6f 63 20 52 65 6c 6f 61 64 53 63 72 69 70  proc ReloadScrip
49510 74 20 7b 7d 20 7b 0a 09 20 20 20 20 73 6f 75 72  t {} {..    sour
49520 63 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d  ce [info script]
49530 0a 09 20 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f  ..    WarnWin [_
49540 20 22 52 65 6c 6f 61 64 22 5d 0a 09 7d 0a 09 62   "Reload"]..}..b
49550 69 6e 64 20 61 6c 6c 20 3c 24 3a 3a 63 6f 6e 74  ind all <$::cont
49560 72 6f 6c 2d 78 3e 3c 24 3a 3a 63 6f 6e 74 72 6f  rol-x><$::contro
49570 6c 2d 6c 3e 20 52 65 6c 6f 61 64 53 63 72 69 70  l-l> ReloadScrip
49580 74 0a 09 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20  t....if { [info 
49590 63 6f 6d 6d 61 6e 64 73 20 6d 61 73 74 65 72 5d  commands master]
495a0 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20   != "" } {..    
495b0 23 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64  #RamDebugger::rd
495c0 65 62 75 67 20 2d 6d 61 73 74 65 72 0a 09 7d 0a  ebug -master..}.
495d0 20 20 20 20 7d 0a 7d 20 0a 20 20 20 20               }.} .