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 }.} .