0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 20 2d 2a 2d 20 #!/bin/sh.# -*-
0010: 74 63 6c 20 2d 2a 2d 20 5c 0a 23 20 74 68 65 20 tcl -*- \.# the
0020: 6e 65 78 74 20 6c 69 6e 65 20 72 65 73 74 61 72 next line restar
0030: 74 73 20 75 73 69 6e 67 20 77 69 73 68 20 5c 0a ts using wish \.
0040: 65 78 65 63 20 77 69 73 68 20 22 24 30 22 20 22 exec wish "$0" "
0050: 24 40 22 0a 23 20 52 61 6d 44 65 62 75 67 67 65 $@".# RamDebugge
0060: 72 20 20 2d 2a 2d 20 54 43 4c 20 2d 2a 2d 20 43 r -*- TCL -*- C
0070: 72 65 61 74 65 64 3a 20 72 61 6d 73 61 6e 20 4a reated: ramsan J
0080: 75 6c 2d 32 30 30 32 2c 20 4d 6f 64 69 66 69 65 ul-2002, Modifie
0090: 64 3a 20 72 61 6d 73 61 6e 20 44 65 63 2d 32 30 d: ramsan Dec-20
00a0: 30 39 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 09..package requ
00b0: 69 72 65 20 54 63 6c 20 38 2e 35 0a 70 61 63 6b ire Tcl 8.5.pack
00c0: 61 67 65 20 72 65 71 75 69 72 65 20 54 6b 20 38 age require Tk 8
00d0: 2e 35 0a 0a 23 20 70 61 63 6b 61 67 65 20 72 65 .5..# package re
00e0: 71 75 69 72 65 20 63 6f 6d 70 61 73 73 5f 75 74 quire compass_ut
00f0: 69 6c 73 0a 23 20 6d 79 6c 6f 67 3a 3a 69 6e 69 ils.# mylog::ini
0100: 74 20 2d 76 69 65 77 5f 62 69 6e 64 69 6e 67 20 t -view_binding
0110: 3c 43 6f 6e 74 72 6f 6c 2d 4c 3e 20 64 65 62 75 <Control-L> debu
0120: 67 0a 0a 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 g..if { [info ex
0130: 69 73 74 73 20 3a 3a 73 74 61 72 6b 69 74 3a 3a ists ::starkit::
0140: 74 6f 70 64 69 72 5d 20 7d 20 7b 0a 20 20 20 20 topdir] } {.
0150: 23 20 54 68 69 73 20 69 73 20 66 6f 72 20 74 68 # This is for th
0160: 65 20 73 74 61 72 6b 69 74 20 69 6e 20 55 4e 49 e starkit in UNI
0170: 58 20 74 6f 20 73 74 61 72 74 20 67 72 61 70 68 X to start graph
0180: 69 63 61 6c 6c 79 0a 20 20 20 20 23 20 74 68 61 ically. # tha
0190: 74 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 t the following
01a0: 6c 69 6e 65 20 6f 75 74 20 69 66 20 79 6f 75 20 line out if you
01b0: 77 61 6e 74 20 74 6f 20 72 75 6e 20 77 69 74 68 want to run with
01c0: 6f 75 74 20 47 55 49 0a 20 20 20 20 70 61 63 6b out GUI. pack
01d0: 61 67 65 20 72 65 71 75 69 72 65 20 54 6b 20 38 age require Tk 8
01e0: 2e 35 0a 7d 0a 0a 70 61 63 6b 61 67 65 20 72 65 .5.}..package re
01f0: 71 75 69 72 65 20 6d 73 67 63 61 74 0a 0a 69 66 quire msgcat..if
0200: 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 { [info command
0210: 73 20 5f 5d 20 65 71 20 22 22 20 7d 20 7b 0a 20 s _] eq "" } {.
0220: 20 20 20 70 72 6f 63 20 3a 3a 5f 20 7b 20 61 72 proc ::_ { ar
0230: 67 73 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 72 65 gs } {..if { [re
0240: 67 65 78 70 20 7b 28 2e 2a 29 23 43 23 28 2e 2a gexp {(.*)#C#(.*
0250: 29 7d 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 )} [lindex $args
0260: 20 30 5d 20 7b 7d 20 73 74 72 20 63 6f 6d 6d 5d 0] {} str comm]
0270: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 61 72 } {.. set ar
0280: 67 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 gs [lreplace $ar
0290: 67 73 20 30 20 30 20 24 73 74 72 5d 0a 09 7d 0a gs 0 0 $str]..}.
02a0: 09 72 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c .return [uplevel
02b0: 20 31 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 1 ::msgcat::mc
02c0: 24 61 72 67 73 5d 0a 20 20 20 20 7d 0a 7d 0a 0a $args]. }.}..
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: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0320: 0a 23 20 20 54 68 69 73 20 73 6f 66 74 77 61 72 .# This softwar
0330: 65 20 69 73 20 63 6f 70 79 72 69 67 68 74 65 64 e is copyrighted
0340: 20 62 79 20 52 61 6d 6f 6e 20 52 69 62 6f 20 28 by Ramon Ribo (
0350: 52 41 4d 53 41 4e 29 20 72 61 6d 73 61 6e 40 63 RAMSAN) ramsan@c
0360: 6f 6d 70 61 73 73 69 73 2e 63 6f 6d 0a 23 20 20 ompassis.com.#
0370: 28 68 74 74 70 3a 2f 2f 77 77 77 2e 67 69 64 68 (http://www.gidh
0380: 6f 6d 65 2e 63 6f 6d 2f 72 61 6d 73 61 6e 29 20 ome.com/ramsan)
0390: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65 The following te
03a0: 72 6d 73 20 61 70 70 6c 79 20 74 6f 20 61 6c 6c rms apply to all
03b0: 20 66 69 6c 65 73 20 0a 23 20 20 61 73 73 6f 63 files .# assoc
03c0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 iated with the s
03d0: 6f 66 74 77 61 72 65 20 75 6e 6c 65 73 73 20 65 oftware unless e
03e0: 78 70 6c 69 63 69 74 6c 79 20 64 69 73 63 6c 61 xplicitly discla
03f0: 69 6d 65 64 20 69 6e 20 69 6e 64 69 76 69 64 75 imed in individu
0400: 61 6c 20 66 69 6c 65 73 2e 0a 0a 23 20 20 54 68 al files...# Th
0410: 65 20 61 75 74 68 6f 72 73 20 68 65 72 65 62 79 e authors hereby
0420: 20 67 72 61 6e 74 20 70 65 72 6d 69 73 73 69 6f grant permissio
0430: 6e 20 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20 n to use, copy,
0440: 6d 6f 64 69 66 79 2c 20 64 69 73 74 72 69 62 75 modify, distribu
0450: 74 65 2c 0a 23 20 20 61 6e 64 20 6c 69 63 65 6e te,.# and licen
0460: 73 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 se this software
0470: 20 61 6e 64 20 69 74 73 20 64 6f 63 75 6d 65 6e and its documen
0480: 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 79 20 70 tation for any p
0490: 75 72 70 6f 73 65 2c 20 70 72 6f 76 69 64 65 64 urpose, provided
04a0: 0a 23 20 20 74 68 61 74 20 65 78 69 73 74 69 6e .# that existin
04b0: 67 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 g copyright noti
04c0: 63 65 73 20 61 72 65 20 72 65 74 61 69 6e 65 64 ces are retained
04d0: 20 69 6e 20 61 6c 6c 20 63 6f 70 69 65 73 20 61 in all copies a
04e0: 6e 64 20 74 68 61 74 20 74 68 69 73 0a 23 20 20 nd that this.#
04f0: 6e 6f 74 69 63 65 20 69 73 20 69 6e 63 6c 75 64 notice is includ
0500: 65 64 20 76 65 72 62 61 74 69 6d 20 69 6e 20 61 ed verbatim in a
0510: 6e 79 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 ny distributions
0520: 2e 20 4e 6f 20 77 72 69 74 74 65 6e 20 61 67 72 . No written agr
0530: 65 65 6d 65 6e 74 2c 0a 23 20 20 6c 69 63 65 6e eement,.# licen
0540: 73 65 2c 20 6f 72 20 72 6f 79 61 6c 74 79 20 66 se, or royalty f
0550: 65 65 20 69 73 20 72 65 71 75 69 72 65 64 20 66 ee is required f
0560: 6f 72 20 61 6e 79 20 6f 66 20 74 68 65 20 61 75 or any of the au
0570: 74 68 6f 72 69 7a 65 64 20 75 73 65 73 2e 0a 23 thorized uses..#
0580: 20 20 4d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 Modifications
0590: 74 6f 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 to this software
05a0: 20 6d 61 79 20 62 65 20 63 6f 70 79 72 69 67 68 may be copyrigh
05b0: 74 65 64 20 62 79 20 74 68 65 69 72 20 61 75 74 ted by their aut
05c0: 68 6f 72 73 0a 23 20 20 61 6e 64 20 6e 65 65 64 hors.# and need
05d0: 20 6e 6f 74 20 66 6f 6c 6c 6f 77 20 74 68 65 20 not follow the
05e0: 6c 69 63 65 6e 73 69 6e 67 20 74 65 72 6d 73 20 licensing terms
05f0: 64 65 73 63 72 69 62 65 64 20 68 65 72 65 2c 20 described here,
0600: 70 72 6f 76 69 64 65 64 20 74 68 61 74 0a 23 20 provided that.#
0610: 20 74 68 65 20 6e 65 77 20 74 65 72 6d 73 20 61 the new terms a
0620: 72 65 20 63 6c 65 61 72 6c 79 20 69 6e 64 69 63 re clearly indic
0630: 61 74 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73 ated on the firs
0640: 74 20 70 61 67 65 20 6f 66 20 65 61 63 68 20 66 t page of each f
0650: 69 6c 65 20 77 68 65 72 65 0a 23 20 20 74 68 65 ile where.# the
0660: 79 20 61 70 70 6c 79 2e 0a 0a 23 20 20 49 4e 20 y apply...# IN
0670: 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 NO EVENT SHALL T
0680: 48 45 20 41 55 54 48 4f 52 53 20 4f 52 20 44 49 HE AUTHORS OR DI
0690: 53 54 52 49 42 55 54 4f 52 53 20 42 45 20 4c 49 STRIBUTORS BE LI
06a0: 41 42 4c 45 20 54 4f 20 41 4e 59 20 50 41 52 54 ABLE TO ANY PART
06b0: 59 0a 23 20 20 46 4f 52 20 44 49 52 45 43 54 2c Y.# FOR DIRECT,
06c0: 20 49 4e 44 49 52 45 43 54 2c 20 53 50 45 43 49 INDIRECT, SPECI
06d0: 41 4c 2c 20 49 4e 43 49 44 45 4e 54 41 4c 2c 20 AL, INCIDENTAL,
06e0: 4f 52 20 43 4f 4e 53 45 51 55 45 4e 54 49 41 4c OR CONSEQUENTIAL
06f0: 20 44 41 4d 41 47 45 53 0a 23 20 20 41 52 49 53 DAMAGES.# ARIS
0700: 49 4e 47 20 4f 55 54 20 4f 46 20 54 48 45 20 55 ING OUT OF THE U
0710: 53 45 20 4f 46 20 54 48 49 53 20 53 4f 46 54 57 SE OF THIS SOFTW
0720: 41 52 45 2c 20 49 54 53 20 44 4f 43 55 4d 45 4e ARE, ITS DOCUMEN
0730: 54 41 54 49 4f 4e 2c 20 4f 52 20 41 4e 59 0a 23 TATION, OR ANY.#
0740: 20 20 44 45 52 49 56 41 54 49 56 45 53 20 54 48 DERIVATIVES TH
0750: 45 52 45 4f 46 2c 20 45 56 45 4e 20 49 46 20 54 EREOF, EVEN IF T
0760: 48 45 20 41 55 54 48 4f 52 53 20 48 41 56 45 20 HE AUTHORS HAVE
0770: 42 45 45 4e 20 41 44 56 49 53 45 44 20 4f 46 20 BEEN ADVISED OF
0780: 54 48 45 0a 23 20 20 50 4f 53 53 49 42 49 4c 49 THE.# POSSIBILI
0790: 54 59 20 4f 46 20 53 55 43 48 20 44 41 4d 41 47 TY OF SUCH DAMAG
07a0: 45 2e 0a 0a 23 20 20 54 48 45 20 41 55 54 48 4f E...# THE AUTHO
07b0: 52 53 20 41 4e 44 20 44 49 53 54 52 49 42 55 54 RS AND DISTRIBUT
07c0: 4f 52 53 20 53 50 45 43 49 46 49 43 41 4c 4c 59 ORS SPECIFICALLY
07d0: 20 44 49 53 43 4c 41 49 4d 20 41 4e 59 20 57 41 DISCLAIM ANY WA
07e0: 52 52 41 4e 54 49 45 53 2c 0a 23 20 20 49 4e 43 RRANTIES,.# INC
07f0: 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f 54 20 LUDING, BUT NOT
0800: 4c 49 4d 49 54 45 44 20 54 4f 2c 20 54 48 45 20 LIMITED TO, THE
0810: 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49 IMPLIED WARRANTI
0820: 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 ES OF MERCHANTAB
0830: 49 4c 49 54 59 2c 0a 23 20 20 46 49 54 4e 45 53 ILITY,.# FITNES
0840: 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c S FOR A PARTICUL
0850: 41 52 20 50 55 52 50 4f 53 45 2c 20 41 4e 44 20 AR PURPOSE, AND
0860: 4e 4f 4e 2d 49 4e 46 52 49 4e 47 45 4d 45 4e 54 NON-INFRINGEMENT
0870: 2e 20 20 54 48 49 53 20 53 4f 46 54 57 41 52 45 . THIS SOFTWARE
0880: 0a 23 20 20 49 53 20 50 52 4f 56 49 44 45 44 20 .# IS PROVIDED
0890: 4f 4e 20 41 4e 20 22 41 53 20 49 53 22 20 42 41 ON AN "AS IS" BA
08a0: 53 49 53 2c 20 41 4e 44 20 54 48 45 20 41 55 54 SIS, AND THE AUT
08b0: 48 4f 52 53 20 41 4e 44 20 44 49 53 54 52 49 42 HORS AND DISTRIB
08c0: 55 54 4f 52 53 20 48 41 56 45 0a 23 20 20 4e 4f UTORS HAVE.# NO
08d0: 20 4f 42 4c 49 47 41 54 49 4f 4e 20 54 4f 20 50 OBLIGATION TO P
08e0: 52 4f 56 49 44 45 20 4d 41 49 4e 54 45 4e 41 4e ROVIDE MAINTENAN
08f0: 43 45 2c 20 53 55 50 50 4f 52 54 2c 20 55 50 44 CE, SUPPORT, UPD
0900: 41 54 45 53 2c 20 45 4e 48 41 4e 43 45 4d 45 4e ATES, ENHANCEMEN
0910: 54 53 2c 20 4f 52 0a 23 20 20 4d 4f 44 49 46 49 TS, OR.# MODIFI
0920: 43 41 54 49 4f 4e 53 2e 0a 23 23 23 23 23 23 23 CATIONS..#######
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 23 23 23 23 23 23 23 ################
0970: 23 23 23 23 23 23 23 23 23 0a 0a 6e 61 6d 65 73 #########..names
0980: 70 61 63 65 20 65 76 61 6c 20 52 61 6d 44 65 62 pace eval RamDeb
0990: 75 67 67 65 72 20 7b 0a 0a 20 20 20 20 23 23 23 ugger {.. ###
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 23 23 23 ################
09e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
09f0: 20 20 23 20 20 20 20 52 61 6d 44 65 62 75 67 67 # RamDebugg
0a00: 65 72 20 76 65 72 73 69 6f 6e 0a 20 20 20 20 23 er version. #
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 23 ################
0a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0a60: 0a 20 20 20 20 73 65 74 20 56 65 72 73 69 6f 6e . set Version
0a70: 20 38 2e 33 0a 0a 20 20 20 20 23 23 23 23 23 23 8.3.. ######
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 23 23 23 23 23 23 ################
0ac0: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
0ad0: 20 20 20 20 4e 6f 6e 20 47 55 49 20 63 6f 6d 6d Non GUI comm
0ae0: 61 6e 64 73 0a 20 20 20 20 23 23 23 23 23 23 23 ands. #######
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 23 23 23 23 23 23 23 ################
0b30: 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 6e #########.. n
0b40: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 amespace export
0b50: 72 68 65 6c 70 20 72 64 65 62 75 67 20 72 6c 69 rhelp rdebug rli
0b60: 73 74 20 72 65 76 61 6c 20 72 63 6f 6e 74 20 72 st reval rcont r
0b70: 6e 65 78 74 20 72 73 74 65 70 20 72 62 72 65 61 next rstep rbrea
0b80: 6b 20 72 63 6f 6e 64 20 72 69 6e 66 6f 20 72 64 k rcond rinfo rd
0b90: 65 6c 20 5c 0a 09 72 73 74 61 63 6b 20 72 6f 75 el \..rstack rou
0ba0: 74 70 75 74 20 72 74 69 6d 65 20 72 65 6e 61 62 tput rtime renab
0bb0: 6c 65 64 69 73 61 62 6c 65 0a 0a 20 20 20 20 23 ledisable.. #
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 23 ################
0c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0c10: 20 20 20 20 23 20 63 6f 6d 6d 75 6e 69 63 61 74 # communicat
0c20: 69 6f 6e 73 20 69 73 73 75 65 73 0a 20 20 20 20 ions issues.
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: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0c80: 0a 0a 20 20 20 20 23 20 63 61 6e 20 62 65 3a 20 .. # can be:
0c90: 72 65 6d 6f 74 65 3b 20 6c 6f 63 61 6c 3b 20 6d remote; local; m
0ca0: 61 73 74 65 72 3b 20 6f 72 20 67 64 62 0a 20 20 aster; or gdb.
0cb0: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 variable remot
0cc0: 65 73 65 72 76 65 72 54 79 70 65 20 22 22 0a 20 eserverType "".
0cd0: 20 20 20 23 20 77 68 65 6e 20 72 65 6d 6f 74 65 # when remote
0ce0: 73 65 72 76 65 72 54 79 70 65 20 69 73 20 6d 61 serverType is ma
0cf0: 73 74 65 72 2c 20 69 74 20 63 61 6e 20 62 65 20 ster, it can be
0d00: 6d 61 73 74 65 72 2c 20 22 6d 61 73 74 65 72 20 master, "master
0d10: 70 72 6f 63 22 2c 20 6f 72 20 22 6d 61 73 74 65 proc", or "maste
0d20: 72 20 61 6c 6c 22 0a 20 20 20 20 76 61 72 69 61 r all". varia
0d30: 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 ble remoteserver
0d40: 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 "". variable
0d50: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d remoteserverNum
0d60: 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 "". variable
0d70: 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72 20 debuggerserver
0d80: 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 "". variable
0d90: 64 65 62 75 67 67 65 72 73 65 72 76 65 72 4e 75 debuggerserverNu
0da0: 6d 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c m "". variabl
0db0: 65 20 73 65 72 76 69 63 65 73 0a 20 20 20 20 76 e services. v
0dc0: 61 72 69 61 62 6c 65 20 75 73 65 63 6f 6d 6d 52 ariable usecommR
0dd0: 20 31 0a 20 20 20 20 0a 20 20 20 20 23 23 23 23 1. . ####
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 23 23 23 23 ################
0e20: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
0e30: 20 23 20 64 65 62 75 67 67 65 72 20 73 74 61 74 # debugger stat
0e40: 65 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 e. ##########
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 23 23 23 23 23 23 23 23 23 23 ################
0e90: 23 23 23 23 23 23 0a 0a 20 20 20 20 76 61 72 69 ######.. vari
0ea0: 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 74 61 able debuggersta
0eb0: 74 65 20 22 22 20 3b 23 20 63 61 6e 20 62 65 3a te "" ;# can be:
0ec0: 20 22 22 20 6f 72 20 64 65 62 75 67 20 6f 72 20 "" or debug or
0ed0: 74 69 6d 65 0a 20 20 20 20 76 61 72 69 61 62 6c time. variabl
0ee0: 65 20 63 75 72 72 65 6e 74 66 69 6c 65 20 22 22 e currentfile ""
0ef0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
0f00: 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e rrentfile_endlin
0f10: 65 20 61 75 74 6f 0a 20 20 20 20 76 61 72 69 61 e auto. varia
0f20: 62 6c 65 20 63 75 72 72 65 6e 74 6c 69 6e 65 20 ble currentline
0f30: 31 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 1. variable c
0f40: 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 urrentfileIsModi
0f50: 66 69 65 64 20 30 0a 20 20 20 20 76 61 72 69 61 fied 0. varia
0f60: 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61 ble files. va
0f70: 72 69 61 62 6c 65 20 66 69 6c 65 73 5f 65 6e 64 riable files_end
0f80: 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c line. variabl
0f90: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 e instrumentedfi
0fa0: 6c 65 73 50 0a 20 20 20 20 76 61 72 69 61 62 6c lesP. variabl
0fb0: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 e instrumentedfi
0fc0: 6c 65 73 52 0a 20 20 20 20 76 61 72 69 61 62 6c lesR. variabl
0fd0: 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 e instrumentedfi
0fe0: 6c 65 73 54 69 6d 65 0a 20 20 20 20 76 61 72 69 lesTime. vari
0ff0: 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 able instrumente
1000: 64 66 69 6c 65 73 53 65 6e 74 0a 20 20 20 20 76 dfilesSent. v
1010: 61 72 69 61 62 6c 65 20 66 69 6c 65 73 6c 69 73 ariable fileslis
1020: 74 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c t "". variabl
1030: 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 22 22 e breakpoints ""
1040: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 54 69 . variable Ti
1050: 6d 65 4d 65 61 73 75 72 65 44 61 74 61 20 22 22 meMeasureData ""
1060: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 64 . variable gd
1070: 62 6c 6f 67 20 22 22 0a 20 20 20 20 76 61 72 69 blog "". vari
1080: 61 62 6c 65 20 43 68 65 63 6b 45 78 74 65 72 6e able CheckExtern
1090: 61 6c 46 69 6c 65 4d 6f 64 69 66 69 63 61 74 69 alFileModificati
10a0: 6f 6e 20 31 0a 0a 20 20 20 20 76 61 72 69 61 62 on 1.. variab
10b0: 6c 65 20 43 61 63 68 65 44 69 72 0a 20 20 20 20 le CacheDir.
10c0: 76 61 72 69 61 62 6c 65 20 41 70 70 44 61 74 61 variable AppData
10d0: 44 69 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 Dir. variable
10e0: 20 69 6e 66 6f 5f 73 63 72 69 70 74 0a 0a 20 20 info_script..
10f0: 20 20 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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1140: 23 23 0a 20 20 20 20 23 20 47 55 49 20 73 74 61 ##. # GUI sta
1150: 74 65 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 te. #########
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 23 23 23 23 23 23 23 23 23 ################
11a0: 23 23 23 23 23 23 23 0a 0a 20 20 20 20 76 61 72 #######.. var
11b0: 69 61 62 6c 65 20 74 65 78 74 20 22 22 0a 20 20 iable text "".
11c0: 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 53 variable textS
11d0: 54 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 T. variable t
11e0: 65 78 74 4f 55 54 0a 20 20 20 20 76 61 72 69 61 extOUT. varia
11f0: 62 6c 65 20 74 65 78 74 43 4f 4d 50 0a 20 20 20 ble textCOMP.
1200: 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74 variable IsInSt
1210: 6f 70 20 30 0a 20 20 20 20 76 61 72 69 61 62 6c op 0. variabl
1220: 65 20 54 65 78 74 4d 6f 74 69 6f 6e 41 66 74 65 e TextMotionAfte
1230: 72 49 64 20 22 22 0a 20 20 20 20 76 61 72 69 61 rId "". varia
1240: 62 6c 65 20 61 66 74 65 72 69 64 5f 66 6f 72 6d ble afterid_form
1250: 65 73 73 61 67 65 20 22 22 0a 20 20 20 20 76 61 essage "". va
1260: 72 69 61 62 6c 65 20 45 78 70 72 65 73 73 69 6f riable Expressio
1270: 6e 52 65 73 75 6c 74 20 22 22 0a 20 20 20 20 76 nResult "". v
1280: 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 0a 20 20 ariable count.
1290: 20 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62 variable listb
12a0: 6f 78 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 ox "". variab
12b0: 6c 65 20 70 72 6f 67 72 65 73 73 76 61 72 0a 20 le progressvar.
12c0: 20 20 20 76 61 72 69 61 62 6c 65 20 73 74 61 74 variable stat
12d0: 75 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 us. variable
12e0: 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 WindowFilesList
12f0: 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 "". variable
1300: 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c WindowFilesListL
1310: 69 6e 65 4e 75 6d 73 20 22 22 0a 20 20 20 20 76 ineNums "". v
1320: 61 72 69 61 62 6c 65 20 6f 6c 64 50 61 73 74 65 ariable oldPaste
1330: 53 74 61 63 6b 20 22 22 0a 20 20 20 20 76 61 72 Stack "". var
1340: 69 61 62 6c 65 20 43 75 73 74 6f 6d 46 69 6c 65 iable CustomFile
1350: 54 79 70 65 4d 65 6e 75 53 74 61 63 6b 20 22 22 TypeMenuStack ""
1360: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 6c . variable ol
1370: 64 47 72 61 62 0a 20 20 20 20 76 61 72 69 61 62 dGrab. variab
1380: 6c 65 20 67 72 61 62 53 74 61 74 75 73 0a 20 20 le grabStatus.
1390: 20 20 76 61 72 69 61 62 6c 65 20 6f 6c 64 46 6f variable oldFo
13a0: 63 75 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 cus. variable
13b0: 20 62 69 67 5f 69 63 6f 6e 73 20 30 0a 20 20 20 big_icons 0.
13c0: 20 76 61 72 69 61 62 6c 65 20 69 6e 73 69 64 65 variable inside
13d0: 5f 67 69 64 20 30 0a 20 20 20 20 0a 20 20 20 20 _gid 0. .
13e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
13f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1430: 0a 20 20 20 20 23 20 48 61 6e 64 6c 65 72 73 20 . # Handlers
1440: 74 6f 20 73 61 76 65 20 66 69 6c 65 73 2e 20 41 to save files. A
1450: 72 72 61 79 20 77 69 74 68 20 6e 61 6d 65 73 3a rray with names:
1460: 20 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 23 23 filename. ##
1470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
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 0a 0a ##############..
14c0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 46 69 6c variable Fil
14d0: 65 53 61 76 65 48 61 6e 64 6c 65 72 73 0a 0a 20 eSaveHandlers..
14e0: 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 #############
14f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
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 0a 20 20 20 20 23 20 50 72 65 66 65 72 ###. # Prefer
1540: 65 6e 63 65 73 0a 20 20 20 20 23 23 23 23 23 23 ences. ######
1550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1590: 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 ##########..
15a0: 76 61 72 69 61 62 6c 65 20 72 65 61 64 77 72 69 variable readwri
15b0: 74 65 70 72 65 66 73 0a 20 20 20 20 76 61 72 69 teprefs. vari
15c0: 61 62 6c 65 20 70 72 65 66 73 5f 67 72 6f 75 70 able prefs_group
15d0: 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c 65 "". variable
15e0: 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 options. var
15f0: 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 5f 64 65 iable options_de
1600: 66 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 f. . if {
1610: 5b 66 69 6c 65 20 74 79 70 65 20 5b 69 6e 66 6f [file type [info
1620: 20 73 63 72 69 70 74 5d 5d 20 65 71 20 22 6c 69 script]] eq "li
1630: 6e 6b 22 20 7d 20 7b 0a 09 73 65 74 20 69 6e 66 nk" } {..set inf
1640: 6f 5f 73 63 72 69 70 74 20 5b 66 69 6c 65 20 6c o_script [file l
1650: 69 6e 6b 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 ink [info script
1660: 5d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ]]. } else {.
1670: 09 73 65 74 20 69 6e 66 6f 5f 73 63 72 69 70 74 .set info_script
1680: 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 0a 20 [info script].
1690: 20 20 20 7d 0a 20 20 20 20 76 61 72 69 61 62 6c }. variabl
16a0: 65 20 74 6f 70 64 69 72 20 5b 66 69 6c 65 20 6e e topdir [file n
16b0: 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64 ormalize [file d
16c0: 69 72 6e 61 6d 65 20 24 69 6e 66 6f 5f 73 63 72 irname $info_scr
16d0: 69 70 74 5d 5d 0a 0a 20 20 20 20 69 66 20 7b 20 ipt]].. if {
16e0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 74 61 [info exists sta
16f0: 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d 20 7d 20 rkit::topdir] }
1700: 7b 0a 09 69 66 20 7b 20 5b 66 69 6c 65 20 74 79 {..if { [file ty
1710: 70 65 20 24 73 74 61 72 6b 69 74 3a 3a 74 6f 70 pe $starkit::top
1720: 64 69 72 5d 20 65 71 20 22 6c 69 6e 6b 22 20 7d dir] eq "link" }
1730: 20 7b 0a 09 20 20 20 20 73 65 74 20 73 74 61 72 {.. set star
1740: 6b 69 74 5f 74 6f 70 64 69 72 20 5b 66 69 6c 65 kit_topdir [file
1750: 20 6c 69 6e 6b 20 24 73 74 61 72 6b 69 74 3a 3a link $starkit::
1760: 74 6f 70 64 69 72 5d 0a 09 7d 20 65 6c 73 65 20 topdir]..} else
1770: 7b 0a 09 20 20 20 20 73 65 74 20 73 74 61 72 6b {.. set stark
1780: 69 74 5f 74 6f 70 64 69 72 20 24 73 74 61 72 6b it_topdir $stark
1790: 69 74 3a 3a 74 6f 70 64 69 72 0a 09 7d 0a 09 69 it::topdir..}..i
17a0: 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 74 73 f { [file exists
17b0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 [file dirname $
17c0: 73 74 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d starkit::topdir]
17d0: 2f 2e 2e 2f 73 68 61 72 65 2f 72 61 6d 64 65 62 /../share/ramdeb
17e0: 75 67 67 65 72 5d 20 7d 20 7b 0a 09 20 20 20 20 ugger] } {..
17f0: 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 5f variable topdir_
1800: 65 78 74 65 72 6e 61 6c 20 5b 66 69 6c 65 20 6e external [file n
1810: 6f 72 6d 61 6c 69 7a 65 20 20 5b 66 69 6c 65 20 ormalize [file
1820: 64 69 72 6e 61 6d 65 20 24 73 74 61 72 6b 69 74 dirname $starkit
1830: 5f 74 6f 70 64 69 72 5d 2f 2e 2e 2f 73 68 61 72 _topdir]/../shar
1840: 65 2f 72 61 6d 64 65 62 75 67 67 65 72 5d 0a 09 e/ramdebugger]..
1850: 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 76 61 } else {.. va
1860: 72 69 61 62 6c 65 20 74 6f 70 64 69 72 5f 65 78 riable topdir_ex
1870: 74 65 72 6e 61 6c 20 5b 66 69 6c 65 20 6e 6f 72 ternal [file nor
1880: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64 69 72 malize [file dir
1890: 6e 61 6d 65 20 24 73 74 61 72 6b 69 74 5f 74 6f name $starkit_to
18a0: 70 64 69 72 5d 5d 0a 09 7d 0a 20 20 20 20 7d 20 pdir]]..}. }
18b0: 65 6c 73 65 20 7b 0a 09 76 61 72 69 61 62 6c 65 else {..variable
18c0: 20 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c topdir_external
18d0: 20 24 74 6f 70 64 69 72 0a 20 20 20 20 7d 0a 20 $topdir. }.
18e0: 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 61 75 74 lappend ::aut
18f0: 6f 5f 70 61 74 68 20 5b 66 69 6c 65 20 64 69 72 o_path [file dir
1900: 6e 61 6d 65 20 24 74 6f 70 64 69 72 5d 0a 20 20 name $topdir].
1910: 20 20 6c 61 70 70 65 6e 64 20 3a 3a 61 75 74 6f lappend ::auto
1920: 5f 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e _path [file join
1930: 20 24 74 6f 70 64 69 72 20 73 63 72 69 70 74 73 $topdir scripts
1940: 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a ]. lappend ::
1950: 61 75 74 6f 5f 70 61 74 68 20 5b 66 69 6c 65 20 auto_path [file
1960: 6a 6f 69 6e 20 24 74 6f 70 64 69 72 5f 65 78 74 join $topdir_ext
1970: 65 72 6e 61 6c 20 61 64 64 6f 6e 73 5d 0a 7d 0a ernal addons].}.
1980: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 .###############
1990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
19a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
19b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
19c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
19d0: 23 0a 23 20 20 20 49 6e 69 74 20 70 72 6f 63 0a #.# Init proc.
19e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
19f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1a00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1a10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1a20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1a30: 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
1a40: 65 72 3a 3a 49 6e 69 74 20 7b 20 5f 72 65 61 64 er::Init { _read
1a50: 77 72 69 74 65 70 72 65 66 73 20 5f 70 72 65 66 writeprefs _pref
1a60: 73 5f 67 72 6f 75 70 20 7b 20 72 65 67 69 73 74 s_group { regist
1a70: 65 72 61 73 72 65 6d 6f 74 65 20 31 20 7d 20 7b erasremote 1 } {
1a80: 20 5f 62 69 67 5f 69 63 6f 6e 73 20 30 20 7d 20 _big_icons 0 }
1a90: 0a 20 20 20 20 7b 20 63 68 65 63 6b 5f 72 65 6d . { check_rem
1aa0: 6f 74 65 73 20 31 20 7d 7d 20 7b 0a 20 20 20 20 otes 1 }} {.
1ab0: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 variable debugge
1ac0: 72 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 rserver. vari
1ad0: 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 65 72 able debuggerser
1ae0: 76 65 72 4e 75 6d 0a 20 20 20 20 76 61 72 69 61 verNum. varia
1af0: 62 6c 65 20 74 6f 70 64 69 72 0a 20 20 20 20 76 ble topdir. v
1b00: 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 5f 65 ariable topdir_e
1b10: 78 74 65 72 6e 61 6c 0a 20 20 20 20 76 61 72 69 xternal. vari
1b20: 61 62 6c 65 20 43 61 63 68 65 44 69 72 0a 20 20 able CacheDir.
1b30: 20 20 76 61 72 69 61 62 6c 65 20 41 70 70 44 61 variable AppDa
1b40: 74 61 44 69 72 0a 20 20 20 20 76 61 72 69 61 62 taDir. variab
1b50: 6c 65 20 6f 70 74 69 6f 6e 73 5f 64 65 66 0a 20 le options_def.
1b60: 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 variable opti
1b70: 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ons. variable
1b80: 20 72 65 61 64 77 72 69 74 65 70 72 65 66 73 20 readwriteprefs
1b90: 24 5f 72 65 61 64 77 72 69 74 65 70 72 65 66 73 $_readwriteprefs
1ba0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 72 . variable pr
1bb0: 65 66 73 5f 67 72 6f 75 70 20 24 5f 70 72 65 66 efs_group $_pref
1bc0: 73 5f 67 72 6f 75 70 0a 20 20 20 20 76 61 72 69 s_group. vari
1bd0: 61 62 6c 65 20 69 73 77 69 6e 63 65 0a 20 20 20 able iswince.
1be0: 20 76 61 72 69 61 62 6c 65 20 69 6e 66 6f 5f 73 variable info_s
1bf0: 63 72 69 70 74 0a 20 20 20 20 76 61 72 69 61 62 cript. variab
1c00: 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 20 20 20 20 le usecommR.
1c10: 76 61 72 69 61 62 6c 65 20 62 69 67 5f 69 63 6f variable big_ico
1c20: 6e 73 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 ns. . set
1c30: 62 69 67 5f 69 63 6f 6e 73 20 24 5f 62 69 67 5f big_icons $_big_
1c40: 69 63 6f 6e 73 0a 0a 20 20 20 20 73 65 74 20 69 icons.. set i
1c50: 6e 66 6f 5f 73 63 72 69 70 74 20 5b 69 6e 66 6f nfo_script [info
1c60: 20 73 63 72 69 70 74 5d 0a 20 20 20 20 0a 20 20 script]. .
1c70: 20 20 69 66 20 7b 20 21 5b 66 69 6c 65 20 69 73 if { ![file is
1c80: 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 directory [file
1c90: 6a 6f 69 6e 20 24 74 6f 70 64 69 72 5f 65 78 74 join $topdir_ext
1ca0: 65 72 6e 61 6c 20 61 64 64 6f 6e 73 5d 5d 20 7d ernal addons]] }
1cb0: 20 7b 0a 09 73 65 74 20 74 78 74 20 5b 5f 20 22 {..set txt [_ "
1cc0: 45 72 72 6f 72 3a 20 62 61 64 20 69 6e 73 74 61 Error: bad insta
1cd0: 6c 6c 61 74 69 6f 6e 2e 20 44 69 72 65 63 74 6f llation. Directo
1ce0: 72 79 20 27 61 64 64 6f 6e 73 27 20 63 6f 75 6c ry 'addons' coul
1cf0: 64 20 6e 6f 74 20 62 65 20 66 6f 75 6e 64 20 69 d not be found i
1d00: 6e 20 27 25 73 27 22 20 24 74 6f 70 64 69 72 5f n '%s'" $topdir_
1d10: 65 78 74 65 72 6e 61 6c 5d 0a 09 70 75 74 73 20 external]..puts
1d20: 24 74 78 74 0a 09 63 61 74 63 68 20 7b 20 74 6b $txt..catch { tk
1d30: 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d 6d 65 73 _messageBox -mes
1d40: 73 61 67 65 20 24 74 78 74 20 7d 0a 20 20 20 20 sage $txt }.
1d50: 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 }.. if { [inf
1d60: 6f 20 63 6f 6d 6d 61 6e 64 73 20 77 69 6e 66 6f o commands winfo
1d70: 5d 20 6e 65 20 22 22 20 26 26 20 5b 77 69 6e 66 ] ne "" && [winf
1d80: 6f 20 73 63 72 65 65 6e 77 69 64 74 68 20 2e 5d o screenwidth .]
1d90: 20 3c 20 33 35 30 20 7d 20 7b 0a 09 73 65 74 20 < 350 } {..set
1da0: 69 73 77 69 6e 63 65 20 31 0a 20 20 20 20 7d 20 iswince 1. }
1db0: 65 6c 73 65 20 7b 20 73 65 74 20 69 73 77 69 6e else { set iswin
1dc0: 63 65 20 30 20 7d 0a 20 20 20 0a 20 20 20 20 74 ce 0 }. . t
1dd0: 63 6c 3a 3a 74 6d 3a 3a 61 64 64 20 5b 66 69 6c cl::tm::add [fil
1de0: 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 5f 65 e join $topdir_e
1df0: 78 74 65 72 6e 61 6c 20 61 64 64 6f 6e 73 20 74 xternal addons t
1e00: 63 6c 38 20 73 69 74 65 2d 74 63 6c 5d 20 0a 0a cl8 site-tcl] ..
1e10: 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e 63 if { $iswinc
1e20: 65 20 7d 20 7b 0a 09 73 65 74 20 41 70 70 44 61 e } {..set AppDa
1e30: 74 61 44 69 72 20 24 74 6f 70 64 69 72 5f 65 78 taDir $topdir_ex
1e40: 74 65 72 6e 61 6c 0a 20 20 20 20 7d 20 65 6c 73 ternal. } els
1e50: 65 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 eif { $::tcl_pla
1e60: 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 tform(platform)
1e70: 65 71 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b eq "windows" } {
1e80: 0a 09 73 65 74 20 75 73 65 63 6f 6d 6d 52 20 31 ..set usecommR 1
1e90: 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 ..if { [info exi
1ea0: 73 74 73 20 3a 3a 65 6e 76 28 41 50 50 44 41 54 sts ::env(APPDAT
1eb0: 41 29 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 A)] } {.. set
1ec0: 20 41 70 70 44 61 74 61 44 69 72 20 5b 66 69 6c AppDataDir [fil
1ed0: 65 20 6a 6f 69 6e 20 24 3a 3a 65 6e 76 28 41 50 e join $::env(AP
1ee0: 50 44 41 54 41 29 20 52 61 6d 44 65 62 75 67 67 PDATA) RamDebugg
1ef0: 65 72 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 er]..} else {..
1f00: 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 package requi
1f10: 72 65 20 72 65 67 69 73 74 72 79 0a 09 20 20 20 re registry..
1f20: 20 73 65 74 20 6b 65 79 20 7b 48 4b 45 59 5f 43 set key {HKEY_C
1f30: 55 52 52 45 4e 54 5f 55 53 45 52 5c 53 6f 66 74 URRENT_USER\Soft
1f40: 77 61 72 65 5c 4d 69 63 72 6f 73 6f 66 74 5c 57 ware\Microsoft\W
1f50: 69 6e 64 6f 77 73 5c 43 75 72 72 65 6e 74 56 65 indows\CurrentVe
1f60: 72 73 69 6f 6e 7d 0a 09 20 20 20 20 61 70 70 65 rsion}.. appe
1f70: 6e 64 20 6b 65 79 20 7b 5c 45 78 70 6c 6f 72 65 nd key {\Explore
1f80: 72 5c 53 68 65 6c 6c 20 46 6f 6c 64 65 72 73 7d r\Shell Folders}
1f90: 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 .. set err [c
1fa0: 61 74 63 68 20 7b 20 72 65 67 69 73 74 72 79 20 atch { registry
1fb0: 67 65 74 20 24 6b 65 79 20 41 70 70 44 61 74 61 get $key AppData
1fc0: 20 7d 20 41 70 70 44 61 74 61 5d 0a 09 20 20 20 } AppData]..
1fd0: 20 69 66 20 7b 20 21 24 65 72 72 20 7d 20 7b 0a if { !$err } {.
1fe0: 09 09 73 65 74 20 41 70 70 44 61 74 61 44 69 72 ..set AppDataDir
1ff0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 72 65 67 [file join [reg
2000: 69 73 74 72 79 20 67 65 74 20 24 6b 65 79 20 41 istry get $key A
2010: 70 70 44 61 74 61 5d 20 52 61 6d 44 65 62 75 67 ppData] RamDebug
2020: 67 65 72 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 ger].. } else
2030: 20 7b 0a 09 09 73 65 74 20 41 70 70 44 61 74 61 {...set AppData
2040: 44 69 72 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 Dir [file join $
2050: 3a 3a 65 6e 76 28 48 4f 4d 45 29 20 2e 52 61 6d ::env(HOME) .Ram
2060: 44 65 62 75 67 67 65 72 5d 0a 09 20 20 20 20 7d Debugger].. }
2070: 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b ..}. } else {
2080: 0a 09 73 65 74 20 41 70 70 44 61 74 61 44 69 72 ..set AppDataDir
2090: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a 65 [file join $::e
20a0: 6e 76 28 48 4f 4d 45 29 20 2e 52 61 6d 44 65 62 nv(HOME) .RamDeb
20b0: 75 67 67 65 72 5d 0a 20 20 20 20 7d 0a 20 20 20 ugger]. }.
20c0: 20 73 65 74 20 65 78 65 20 5b 66 69 6c 65 20 6a set exe [file j
20d0: 6f 69 6e 20 24 41 70 70 44 61 74 61 44 69 72 20 oin $AppDataDir
20e0: 65 78 65 5d 0a 20 20 20 20 69 66 20 7b 20 21 5b exe]. if { ![
20f0: 66 69 6c 65 20 65 78 69 73 74 73 20 24 65 78 65 file exists $exe
2100: 5d 20 7d 20 7b 0a 09 66 69 6c 65 20 6d 6b 64 69 ] } {..file mkdi
2110: 72 20 24 65 78 65 0a 20 20 20 20 7d 0a 20 20 20 r $exe. }.
2120: 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 if { $::tcl_pla
2130: 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 tform(platform)
2140: 65 71 20 22 77 69 6e 64 6f 77 73 22 20 26 26 20 eq "windows" &&
2150: 21 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09 69 !$iswince } {..i
2160: 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 f { ![info exist
2170: 73 20 3a 3a 65 6e 76 28 50 41 54 48 29 5d 20 7d s ::env(PATH)] }
2180: 20 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 73 74 {.. set list
2190: 20 22 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 ""..} else {..
21a0: 20 20 20 73 65 74 20 6c 69 73 74 20 5b 73 70 6c set list [spl
21b0: 69 74 20 24 3a 3a 65 6e 76 28 50 41 54 48 29 20 it $::env(PATH)
21c0: 5c 3b 5d 0a 09 7d 0a 09 73 65 74 20 73 68 6f 72 \;]..}..set shor
21d0: 74 6e 61 6d 65 20 5b 66 69 6c 65 20 6e 61 74 69 tname [file nati
21e0: 76 65 20 5b 66 69 6c 65 20 61 74 74 72 69 62 75 ve [file attribu
21f0: 74 65 73 20 24 65 78 65 20 2d 73 68 6f 72 74 6e tes $exe -shortn
2200: 61 6d 65 5d 5d 0a 09 69 66 20 7b 20 5b 73 65 74 ame]]..if { [set
2210: 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d ipos [lsearch -
2220: 65 78 61 63 74 20 24 6c 69 73 74 20 24 73 68 6f exact $list $sho
2230: 72 74 6e 61 6d 65 5d 5d 20 21 3d 20 30 20 7d 20 rtname]] != 0 }
2240: 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 6f {.. if { $ipo
2250: 73 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 s != -1 } {...se
2260: 74 20 6c 69 73 74 20 5b 6c 72 65 70 6c 61 63 65 t list [lreplace
2270: 20 24 6c 69 73 74 20 24 69 70 6f 73 20 24 69 70 $list $ipos $ip
2280: 6f 73 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 os].. }..
2290: 73 65 74 20 6c 69 73 74 20 5b 6c 69 6e 73 65 72 set list [linser
22a0: 74 20 24 6c 69 73 74 20 30 20 24 73 68 6f 72 74 t $list 0 $short
22b0: 6e 61 6d 65 5d 0a 09 20 20 20 20 73 65 74 20 3a name].. set :
22c0: 3a 65 6e 76 28 50 41 54 48 29 20 5b 6a 6f 69 6e :env(PATH) [join
22d0: 20 24 6c 69 73 74 20 5c 3b 5d 0a 09 20 20 20 20 $list \;]..
22e0: 23 20 74 68 69 73 20 69 73 20 61 20 76 61 72 69 # this is a vari
22f0: 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 54 43 able from the TC
2300: 4c 20 6c 69 62 72 61 72 79 0a 09 20 20 20 20 61 L library.. a
2310: 72 72 61 79 20 75 6e 73 65 74 20 3a 3a 61 75 74 rray unset ::aut
2320: 6f 5f 65 78 65 63 73 0a 09 7d 0a 20 20 20 20 7d o_execs..}. }
2330: 20 65 6c 73 65 69 66 20 7b 20 24 3a 3a 74 63 6c elseif { $::tcl
2340: 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 29 20 65 71 _platform(os) eq
2350: 20 22 44 61 72 77 69 6e 22 20 7d 20 7b 0a 09 69 "Darwin" } {..i
2360: 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 f { ![info exist
2370: 73 20 3a 3a 65 6e 76 28 50 41 54 48 29 5d 20 7d s ::env(PATH)] }
2380: 20 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 73 74 {.. set list
2390: 20 22 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 ""..} else {..
23a0: 20 20 20 73 65 74 20 6c 69 73 74 20 5b 73 70 6c set list [spl
23b0: 69 74 20 24 3a 3a 65 6e 76 28 50 41 54 48 29 20 it $::env(PATH)
23c0: 22 3a 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 73 ":"]..}..if { [s
23d0: 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 et ipos [lsearch
23e0: 20 2d 65 78 61 63 74 20 24 6c 69 73 74 20 24 65 -exact $list $e
23f0: 78 65 5d 5d 20 21 3d 20 30 20 7d 20 7b 0a 09 20 xe]] != 0 } {..
2400: 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21 3d if { $ipos !=
2410: 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 6c 69 -1 } {...set li
2420: 73 74 20 5b 6c 72 65 70 6c 61 63 65 20 24 6c 69 st [lreplace $li
2430: 73 74 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a st $ipos $ipos].
2440: 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 . }.. set
2450: 6c 69 73 74 20 5b 6c 69 6e 73 65 72 74 20 24 6c list [linsert $l
2460: 69 73 74 20 30 20 24 65 78 65 5d 0a 09 20 20 20 ist 0 $exe]..
2470: 20 73 65 74 20 3a 3a 65 6e 76 28 50 41 54 48 29 set ::env(PATH)
2480: 20 5b 6a 6f 69 6e 20 24 6c 69 73 74 20 22 3a 22 [join $list ":"
2490: 5d 0a 09 20 20 20 20 23 20 74 68 69 73 20 69 73 ].. # this is
24a0: 20 61 20 76 61 72 69 61 62 6c 65 20 66 72 6f 6d a variable from
24b0: 20 74 68 65 20 54 43 4c 20 6c 69 62 72 61 72 79 the TCL library
24c0: 0a 09 20 20 20 20 61 72 72 61 79 20 75 6e 73 65 .. array unse
24d0: 74 20 3a 3a 61 75 74 6f 5f 65 78 65 63 73 0a 09 t ::auto_execs..
24e0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b }. }. if {
24f0: 20 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 63 76 [auto_execok cv
2500: 73 5d 20 65 71 20 22 22 20 7c 7c 20 5b 61 75 74 s] eq "" || [aut
2510: 6f 5f 65 78 65 63 6f 6b 20 64 69 66 66 5d 20 65 o_execok diff] e
2520: 71 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 q "" } {..if { $
2530: 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 ::tcl_platform(p
2540: 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 6e latform) eq "win
2550: 64 6f 77 73 22 20 26 26 20 21 24 69 73 77 69 6e dows" && !$iswin
2560: 63 65 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 ce } {.. set
2570: 65 78 65 4c 69 73 74 20 5b 6c 69 73 74 20 63 61 exeList [list ca
2580: 74 2e 65 78 65 20 63 76 73 2e 65 78 65 20 64 69 t.exe cvs.exe di
2590: 66 66 2e 65 78 65 20 67 72 65 70 2e 65 78 65 20 ff.exe grep.exe
25a0: 6b 69 6c 6c 2e 65 78 65 20 74 6c 69 73 74 2e 65 kill.exe tlist.e
25b0: 78 65 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 xe]..} elseif {
25c0: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
25d0: 6f 73 29 20 65 71 20 22 44 61 72 77 69 6e 22 20 os) eq "Darwin"
25e0: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 78 65 } {.. set exe
25f0: 4c 69 73 74 20 5b 6c 69 73 74 20 63 76 73 5d 0a List [list cvs].
2600: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 .} else {.. s
2610: 65 74 20 65 78 65 4c 69 73 74 20 22 22 0a 09 7d et exeList ""..}
2620: 0a 09 69 66 20 7b 20 21 5b 66 69 6c 65 20 65 78 ..if { ![file ex
2630: 69 73 74 73 20 24 65 78 65 5d 20 26 26 20 24 65 ists $exe] && $e
2640: 78 65 4c 69 73 74 20 6e 65 20 22 22 20 7d 20 7b xeList ne "" } {
2650: 0a 09 20 20 20 20 66 69 6c 65 20 6d 6b 64 69 72 .. file mkdir
2660: 20 24 65 78 65 0a 09 7d 0a 09 66 6f 72 65 61 63 $exe..}..foreac
2670: 68 20 69 20 24 65 78 65 4c 69 73 74 20 7b 0a 09 h i $exeList {..
2680: 20 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 if { [file e
2690: 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e xists [file join
26a0: 20 24 74 6f 70 64 69 72 20 61 64 64 6f 6e 73 20 $topdir addons
26b0: 65 78 65 20 24 69 5d 5d 20 7d 20 7b 0a 09 09 66 exe $i]] } {...f
26c0: 69 6c 65 20 63 6f 70 79 20 2d 66 6f 72 63 65 20 ile copy -force
26d0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 [file join $topd
26e0: 69 72 20 61 64 64 6f 6e 73 20 65 78 65 20 24 69 ir addons exe $i
26f0: 5d 20 24 65 78 65 0a 09 20 20 20 20 7d 0a 09 7d ] $exe.. }..}
2700: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 64 . }. set d
2710: 69 72 73 20 22 22 0a 20 20 20 20 6c 61 70 70 65 irs "". lappe
2720: 6e 64 20 64 69 72 73 20 5b 66 69 6c 65 20 6a 6f nd dirs [file jo
2730: 69 6e 20 24 41 70 70 44 61 74 61 44 69 72 20 63 in $AppDataDir c
2740: 61 63 68 65 5d 0a 20 20 20 20 6c 61 70 70 65 6e ache]. lappen
2750: 64 20 64 69 72 73 20 5b 66 69 6c 65 20 6a 6f 69 d dirs [file joi
2760: 6e 20 24 74 6f 70 64 69 72 5f 65 78 74 65 72 6e n $topdir_extern
2770: 61 6c 20 63 61 63 68 65 5d 0a 0a 20 20 20 20 66 al cache].. f
2780: 6f 72 65 61 63 68 20 69 20 24 64 69 72 73 20 7b oreach i $dirs {
2790: 0a 09 63 61 74 63 68 20 7b 20 66 69 6c 65 20 6d ..catch { file m
27a0: 6b 64 69 72 20 24 69 20 7d 0a 09 69 66 20 7b 20 kdir $i }..if {
27b0: 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f 72 [file isdirector
27c0: 79 20 24 69 5d 20 7d 20 7b 0a 09 20 20 20 20 73 y $i] } {.. s
27d0: 65 74 20 43 61 63 68 65 44 69 72 20 24 69 0a 09 et CacheDir $i..
27e0: 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 20 20 20 break..}.
27f0: 20 7d 0a 0a 20 20 20 20 23 23 23 23 23 23 23 23 }.. ########
2800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2840: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 20 53 ########. # S
2850: 65 74 74 69 6e 67 20 70 72 65 66 65 72 65 6e 63 etting preferenc
2860: 65 73 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 es. #########
2870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
28a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
28b0: 23 23 23 23 23 23 23 0a 0a 20 20 20 20 73 65 74 #######.. set
28c0: 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 69 6e 64 options_def(ind
28d0: 65 6e 74 73 69 7a 65 54 43 4c 29 20 34 0a 20 20 entsizeTCL) 4.
28e0: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
28f0: 66 28 69 6e 64 65 6e 74 73 69 7a 65 43 2b 2b 29 f(indentsizeC++)
2900: 20 32 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 2. set optio
2910: 6e 73 5f 64 65 66 28 43 6f 6e 66 69 72 6d 53 74 ns_def(ConfirmSt
2920: 61 72 74 44 65 62 75 67 67 69 6e 67 29 20 31 0a artDebugging) 1.
2930: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f set options_
2940: 64 65 66 28 69 6e 73 74 72 75 6d 65 6e 74 5f 73 def(instrument_s
2950: 6f 75 72 63 65 29 20 61 75 74 6f 0a 20 20 20 20 ource) auto.
2960: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 set options_def(
2970: 69 6e 73 74 72 75 6d 65 6e 74 5f 70 72 6f 63 5f instrument_proc_
2980: 6c 61 73 74 5f 6c 69 6e 65 29 20 30 0a 20 20 20 last_line) 0.
2990: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 set options_def
29a0: 28 43 6f 6e 66 69 72 6d 4d 6f 64 69 66 79 56 61 (ConfirmModifyVa
29b0: 72 69 61 62 6c 65 29 20 31 0a 20 20 20 20 73 65 riable) 1. se
29c0: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 6f 70 t options_def(op
29d0: 65 6e 66 69 6c 65 5f 62 72 6f 77 73 65 72 29 20 enfile_browser)
29e0: 30 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 0. set option
29f0: 73 5f 64 65 66 28 4c 6f 63 61 6c 44 65 62 75 67 s_def(LocalDebug
2a00: 67 69 6e 67 54 79 70 65 29 20 74 6b 0a 20 20 20 gingType) tk.
2a10: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 set options_def
2a20: 28 65 78 65 63 75 74 61 62 6c 65 5f 64 69 72 73 (executable_dirs
2a30: 29 20 22 22 0a 20 20 20 20 73 65 74 20 6f 70 74 ) "". set opt
2a40: 69 6f 6e 73 5f 64 65 66 28 64 65 62 75 67 72 65 ions_def(debugre
2a50: 6c 65 61 73 65 29 20 64 65 62 75 67 0a 20 20 20 lease) debug.
2a60: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 set options_def
2a70: 28 56 69 65 77 4c 6f 63 61 6c 56 61 72 69 61 62 (ViewLocalVariab
2a80: 6c 65 73 29 20 31 0a 20 20 20 20 73 65 74 20 6f les) 1. set o
2a90: 70 74 69 6f 6e 73 5f 64 65 66 28 73 61 76 65 64 ptions_def(saved
2aa0: 5f 70 6f 73 69 74 69 6f 6e 73 5f 73 74 61 63 6b _positions_stack
2ab0: 29 20 22 22 0a 20 20 20 20 73 65 74 20 6f 70 74 ) "". set opt
2ac0: 69 6f 6e 73 5f 64 65 66 28 73 68 6f 77 73 74 61 ions_def(showsta
2ad0: 74 75 73 62 61 72 29 20 31 0a 20 20 20 20 73 65 tusbar) 1. se
2ae0: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 73 68 t options_def(sh
2af0: 6f 77 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 owbuttonstoolbar
2b00: 29 20 31 0a 20 20 20 20 73 65 74 20 6f 70 74 69 ) 1. set opti
2b10: 6f 6e 73 5f 64 65 66 28 43 6f 6d 70 69 6c 65 46 ons_def(CompileF
2b20: 61 73 74 49 6e 73 74 72 75 6d 65 6e 74 65 72 29 astInstrumenter)
2b30: 20 2d 31 0a 20 20 20 20 73 65 74 20 6f 70 74 69 -1. set opti
2b40: 6f 6e 73 5f 64 65 66 28 73 70 61 63 65 73 5f 74 ons_def(spaces_t
2b50: 6f 5f 74 61 62 73 29 20 31 0a 0a 20 20 20 20 73 o_tabs) 1.. s
2b60: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 et options_def(c
2b70: 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f 75 6e 64 olors,foreground
2b80: 29 20 62 6c 61 63 6b 0a 20 20 20 20 73 65 74 20 ) black. set
2b90: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f 6c 6f options_def(colo
2ba0: 72 73 2c 62 61 63 6b 67 72 6f 75 6e 64 29 20 77 rs,background) w
2bb0: 68 69 74 65 0a 20 20 20 20 73 65 74 20 6f 70 74 hite. set opt
2bc0: 69 6f 6e 73 5f 64 65 66 28 63 6f 6c 6f 72 73 2c ions_def(colors,
2bd0: 63 6f 6d 6d 61 6e 64 73 29 20 6d 61 67 65 6e 74 commands) magent
2be0: 61 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e a. set option
2bf0: 73 5f 64 65 66 28 63 6f 6c 6f 72 73 2c 64 65 66 s_def(colors,def
2c00: 69 6e 65 73 29 20 6d 61 67 65 6e 74 61 32 0a 20 ines) magenta2.
2c10: 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 set options_d
2c20: 65 66 28 63 6f 6c 6f 72 73 2c 70 72 6f 63 6e 61 ef(colors,procna
2c30: 6d 65 73 29 20 62 6c 75 65 0a 20 20 20 20 73 65 mes) blue. se
2c40: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f t options_def(co
2c50: 6c 6f 72 73 2c 71 75 6f 74 65 73 74 72 69 6e 67 lors,quotestring
2c60: 73 29 20 67 72 65 79 34 30 0a 20 20 20 20 73 65 s) grey40. se
2c70: 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f t options_def(co
2c80: 6c 6f 72 73 2c 73 65 74 29 20 67 72 65 65 6e 0a lors,set) green.
2c90: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f set options_
2ca0: 64 65 66 28 63 6f 6c 6f 72 73 2c 63 6f 6d 6d 65 def(colors,comme
2cb0: 6e 74 73 29 20 72 65 64 0a 20 20 20 20 73 65 74 nts) red. set
2cc0: 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 63 6f 6c options_def(col
2cd0: 6f 72 73 2c 76 61 72 6e 61 6d 65 73 29 20 5c 23 ors,varnames) \#
2ce0: 62 38 38 36 30 62 0a 0a 20 20 20 20 73 65 74 20 b8860b.. set
2cf0: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 6c 69 73 74 options_def(list
2d00: 66 69 6c 65 73 70 61 6e 65 29 20 30 0a 20 20 20 filespane) 0.
2d10: 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 set options_def
2d20: 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 70 61 (viewvariablespa
2d30: 6e 65 56 32 29 20 30 0a 20 20 20 20 73 65 74 20 neV2) 0. set
2d40: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 61 75 74 6f options_def(auto
2d50: 5f 72 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 61 _raise_stack_tra
2d60: 63 65 29 20 30 0a 20 20 20 20 0a 20 20 20 20 73 ce) 0. . s
2d70: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 66 et options_def(f
2d80: 69 6c 65 74 79 70 65 29 20 61 75 74 6f 0a 20 20 iletype) auto.
2d90: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
2da0: 66 28 66 69 6c 65 74 79 70 65 5f 6f 6e 6c 79 5f f(filetype_only_
2db0: 74 68 69 73 5f 66 69 6c 65 29 20 31 0a 20 20 20 this_file) 1.
2dc0: 20 0a 20 20 20 20 73 77 69 74 63 68 20 24 3a 3a . switch $::
2dd0: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 tcl_platform(pla
2de0: 74 66 6f 72 6d 29 20 7b 0a 09 77 69 6e 64 6f 77 tform) {..window
2df0: 73 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 69 s {.. if { $i
2e00: 73 77 69 6e 63 65 20 7d 20 7b 0a 09 09 23 20 57 swince } {...# W
2e10: 69 6e 63 65 0a 09 09 73 65 74 20 6f 70 74 69 6f ince...set optio
2e20: 6e 73 5f 64 65 66 28 4e 6f 72 6d 61 6c 46 6f 6e ns_def(NormalFon
2e30: 74 29 20 7b 20 2d 66 61 6d 69 6c 79 20 22 54 61 t) { -family "Ta
2e40: 68 6f 6d 61 22 20 2d 73 69 7a 65 20 37 20 2d 77 homa" -size 7 -w
2e50: 65 69 67 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 eight normal \..
2e60: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2e80: 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 -slant roman
2e90: 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 -underline 0 -ov
2ea0: 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 09 73 erstrike 0 }...s
2eb0: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 46 et options_def(F
2ec0: 69 78 65 64 46 6f 6e 74 29 20 20 7b 20 2d 66 61 ixedFont) { -fa
2ed0: 6d 69 6c 79 20 22 43 6f 75 72 69 65 72 22 20 2d mily "Courier" -
2ee0: 73 69 7a 65 20 37 20 2d 77 65 69 67 68 74 20 6e size 7 -weight n
2ef0: 6f 72 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 ormal \...
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c 61 -sla
2f20: 6e 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 6c nt roman -underl
2f30: 69 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 6b ine 0 -overstrik
2f40: 65 20 30 20 7d 0a 09 09 73 65 74 20 6f 70 74 69 e 0 }...set opti
2f50: 6f 6e 73 5f 64 65 66 28 48 65 6c 70 46 6f 6e 74 ons_def(HelpFont
2f60: 29 20 20 7b 20 2d 66 61 6d 69 6c 79 20 22 48 65 ) { -family "He
2f70: 6c 76 65 74 69 63 61 22 20 2d 73 69 7a 65 20 37 lvetica" -size 7
2f80: 20 2d 77 65 69 67 68 74 20 6e 6f 72 6d 61 6c 20 -weight normal
2f90: 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
2fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2fb0: 20 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 -slant roma
2fc0: 6e 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d n -underline 0 -
2fd0: 6f 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 overstrike 0 }..
2fe0: 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 .set options_def
2ff0: 28 73 68 6f 77 73 74 61 74 75 73 62 61 72 29 20 (showstatusbar)
3000: 30 0a 09 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f 0...set options_
3010: 64 65 66 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 def(ViewOnlyText
3020: 4f 72 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a OrAll) OnlyText.
3030: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
3040: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 set options_def(
3050: 4e 6f 72 6d 61 6c 46 6f 6e 74 29 20 7b 20 2d 66 NormalFont) { -f
3060: 61 6d 69 6c 79 20 22 4d 53 20 53 61 6e 73 20 53 amily "MS Sans S
3070: 65 72 69 66 22 20 2d 73 69 7a 65 20 38 20 2d 77 erif" -size 8 -w
3080: 65 69 67 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 eight normal \..
3090: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
30b0: 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 -slant roman
30c0: 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 -underline 0 -ov
30d0: 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 09 73 erstrike 0 }...s
30e0: 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 46 et options_def(F
30f0: 69 78 65 64 46 6f 6e 74 29 20 20 7b 20 2d 66 61 ixedFont) { -fa
3100: 6d 69 6c 79 20 22 43 6f 75 72 69 65 72 22 20 2d mily "Courier" -
3110: 73 69 7a 65 20 38 20 2d 77 65 69 67 68 74 20 6e size 8 -weight n
3120: 6f 72 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 ormal \...
3130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3140: 20 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c 61 -sla
3150: 6e 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 6c nt roman -underl
3160: 69 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 6b ine 0 -overstrik
3170: 65 20 30 20 7d 0a 09 09 73 65 74 20 6f 70 74 69 e 0 }...set opti
3180: 6f 6e 73 5f 64 65 66 28 48 65 6c 70 46 6f 6e 74 ons_def(HelpFont
3190: 29 20 20 7b 20 2d 66 61 6d 69 6c 79 20 22 48 65 ) { -family "He
31a0: 6c 76 65 74 69 63 61 22 20 2d 73 69 7a 65 20 31 lvetica" -size 1
31b0: 31 20 2d 77 65 69 67 68 74 20 6e 6f 72 6d 61 6c 1 -weight normal
31c0: 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 \...
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
31e0: 20 20 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d -slant rom
31f0: 61 6e 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 an -underline 0
3200: 2d 6f 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a -overstrike 0 }.
3210: 09 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 ..set options_de
3220: 66 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 f(ViewOnlyTextOr
3230: 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a 09 20 All) OnlyText..
3240: 20 20 20 7d 0a 09 7d 0a 09 64 65 66 61 75 6c 74 }..}..default
3250: 20 7b 0a 09 20 20 20 20 73 65 74 20 6f 70 74 69 {.. set opti
3260: 6f 6e 73 5f 64 65 66 28 4e 6f 72 6d 61 6c 46 6f ons_def(NormalFo
3270: 6e 74 29 20 7b 20 2d 66 61 6d 69 6c 79 20 22 46 nt) { -family "F
3280: 72 65 65 53 61 6e 73 22 20 2d 73 69 7a 65 20 31 reeSans" -size 1
3290: 30 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 0 \...
32a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
32b0: 20 20 20 20 2d 77 65 69 67 68 74 20 6e 6f 72 6d -weight norm
32c0: 61 6c 20 2d 73 6c 61 6e 74 20 72 6f 6d 61 6e 20 al -slant roman
32d0: 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 2d 6f 76 -underline 0 -ov
32e0: 65 72 73 74 72 69 6b 65 20 30 20 7d 0a 09 20 20 erstrike 0 }..
32f0: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
3300: 66 28 46 69 78 65 64 46 6f 6e 74 29 20 20 7b 20 f(FixedFont) {
3310: 2d 66 61 6d 69 6c 79 20 22 46 72 65 65 53 61 6e -family "FreeSan
3320: 73 22 20 2d 73 69 7a 65 20 31 30 20 2d 77 65 69 s" -size 10 -wei
3330: 67 68 74 20 6e 6f 72 6d 61 6c 20 5c 0a 09 09 20 ght normal \...
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 73 6c -sl
3360: 61 6e 74 20 72 6f 6d 61 6e 20 2d 75 6e 64 65 72 ant roman -under
3370: 6c 69 6e 65 20 30 20 2d 6f 76 65 72 73 74 72 69 line 0 -overstri
3380: 6b 65 20 30 20 7d 0a 09 20 20 20 20 73 65 74 20 ke 0 }.. set
3390: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 48 65 6c 70 options_def(Help
33a0: 46 6f 6e 74 29 20 20 7b 20 2d 66 61 6d 69 6c 79 Font) { -family
33b0: 20 22 48 65 6c 76 65 74 69 63 61 22 20 2d 73 69 "Helvetica" -si
33c0: 7a 65 20 31 32 20 2d 77 65 69 67 68 74 20 6e 6f ze 12 -weight no
33d0: 72 6d 61 6c 20 5c 0a 09 09 20 20 20 20 20 20 20 rmal \...
33e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33f0: 20 20 20 20 20 20 2d 73 6c 61 6e 74 20 72 6f 6d -slant rom
3400: 61 6e 20 2d 75 6e 64 65 72 6c 69 6e 65 20 30 20 an -underline 0
3410: 2d 6f 76 65 72 73 74 72 69 6b 65 20 30 20 7d 0a -overstrike 0 }.
3420: 09 20 20 20 20 0a 09 20 20 20 20 69 66 20 7b 20 . .. if {
3430: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
3440: 6d 61 63 68 69 6e 65 29 20 65 71 20 22 61 72 6d machine) eq "arm
3450: 76 37 6c 22 20 7d 20 7b 0a 09 09 66 6f 72 65 61 v7l" } {...forea
3460: 63 68 20 69 20 5b 6c 69 73 74 20 4e 6f 72 6d 61 ch i [list Norma
3470: 6c 46 6f 6e 74 20 46 69 78 65 64 46 6f 6e 74 20 lFont FixedFont
3480: 48 65 6c 70 46 6f 6e 74 5d 20 7b 0a 09 09 20 20 HelpFont] {...
3490: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
34a0: 66 28 24 69 29 20 7b 20 2d 66 61 6d 69 6c 79 20 f($i) { -family
34b0: 22 47 65 6f 72 67 69 61 22 20 2d 73 69 7a 65 20 "Georgia" -size
34c0: 31 34 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 14 }...}.. }.
34d0: 09 20 20 20 20 0a 09 20 20 20 20 73 65 74 20 6f . .. set o
34e0: 70 74 69 6f 6e 73 5f 64 65 66 28 56 69 65 77 4f ptions_def(ViewO
34f0: 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29 20 4f 6e nlyTextOrAll) On
3500: 6c 79 54 65 78 74 0a 09 7d 0a 20 20 20 20 7d 0a lyText..}. }.
3510: 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 . set options
3520: 5f 64 65 66 28 65 78 74 65 6e 73 69 6f 6e 73 2c _def(extensions,
3530: 54 43 4c 29 20 22 2e 74 63 6c 20 2a 22 0a 20 20 TCL) ".tcl *".
3540: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
3550: 66 28 65 78 74 65 6e 73 69 6f 6e 73 2c 43 2f 43 f(extensions,C/C
3560: 2b 2b 29 20 22 2e 63 20 2e 63 70 70 20 2e 63 63 ++) ".c .cpp .cc
3570: 20 2e 68 22 0a 20 20 20 20 73 65 74 20 6f 70 74 .h". set opt
3580: 69 6f 6e 73 5f 64 65 66 28 65 78 74 65 6e 73 69 ions_def(extensi
3590: 6f 6e 73 2c 58 4d 4c 29 20 22 2e 78 6d 6c 20 2e ons,XML) ".xml .
35a0: 73 70 64 20 2e 78 73 6c 20 2e 78 73 6c 74 20 2e spd .xsl .xslt .
35b0: 73 76 67 20 28 78 6d 6c 29 2a 22 0a 20 20 20 20 svg (xml)*".
35c0: 73 65 74 20 22 6f 70 74 69 6f 6e 73 5f 64 65 66 set "options_def
35d0: 28 65 78 74 65 6e 73 69 6f 6e 73 2c 47 69 44 20 (extensions,GiD
35e0: 42 41 53 20 66 69 6c 65 29 22 20 2e 62 61 73 0a BAS file)" .bas.
35f0: 20 20 20 20 73 65 74 20 22 6f 70 74 69 6f 6e 73 set "options
3600: 5f 64 65 66 28 65 78 74 65 6e 73 69 6f 6e 73 2c _def(extensions,
3610: 47 69 44 20 64 61 74 61 20 66 69 6c 65 73 29 22 GiD data files)"
3620: 20 22 2e 70 72 62 20 2e 6d 61 74 20 2e 63 6e 64 ".prb .mat .cnd
3630: 22 0a 20 20 20 20 73 65 74 20 22 6f 70 74 69 6f ". set "optio
3640: 6e 73 5f 64 65 66 28 65 78 74 65 6e 73 69 6f 6e ns_def(extension
3650: 73 2c 4d 61 6b 65 66 69 6c 65 29 22 20 22 4d 61 s,Makefile)" "Ma
3660: 6b 65 66 69 6c 65 22 0a 20 20 20 20 73 65 74 20 kefile". set
3670: 22 6f 70 74 69 6f 6e 73 5f 64 65 66 28 65 78 74 "options_def(ext
3680: 65 6e 73 69 6f 6e 73 2c 6c 61 74 65 78 29 22 20 ensions,latex)"
3690: 22 2e 74 65 78 22 0a 20 20 20 20 73 65 74 20 22 ".tex". set "
36a0: 6f 70 74 69 6f 6e 73 5f 64 65 66 28 65 78 74 65 options_def(exte
36b0: 6e 73 69 6f 6e 73 2c 77 69 6b 69 29 22 20 22 2e nsions,wiki)" ".
36c0: 77 69 6b 69 22 0a 20 20 20 20 0a 20 20 20 20 23 wiki". . #
36d0: 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 69 this variable i
36e0: 73 20 6f 6e 6c 79 20 75 73 65 64 20 6f 6e 20 77 s only used on w
36f0: 69 6e 64 6f 77 73 2e 20 49 74 20 63 61 6e 20 62 indows. It can b
3700: 65 3a 0a 20 20 20 20 23 20 30 3a 20 4f 6e 6c 79 e:. # 0: Only
3710: 20 63 68 65 63 6b 20 72 65 6d 6f 74 65 20 70 72 check remote pr
3720: 6f 67 72 61 6d 73 20 6f 6e 20 64 65 6d 61 6e 64 ograms on demand
3730: 20 28 75 73 65 66 75 6c 20 69 66 20 6e 6f 74 20 (useful if not
3740: 6d 61 6b 69 6e 67 20 72 65 6d 6f 74 65 20 64 65 making remote de
3750: 62 75 67 67 69 6e 67 2c 20 74 68 65 0a 20 20 20 bugging, the.
3760: 20 23 20 20 20 20 73 74 61 72 74 20 75 70 20 69 # start up i
3770: 73 20 66 61 73 74 65 72 29 0a 20 20 20 20 23 20 s faster). #
3780: 31 3a 20 52 65 67 69 73 74 65 72 20 61 73 20 72 1: Register as r
3790: 65 6d 6f 74 65 20 61 6e 64 20 63 68 65 63 6b 20 emote and check
37a0: 72 65 6d 6f 74 65 20 70 72 6f 67 72 61 6d 73 20 remote programs
37b0: 6f 6e 20 73 74 61 72 74 20 75 70 2e 20 49 74 20 on start up. It
37c0: 63 61 6e 20 62 65 20 73 6c 6f 77 65 72 20 74 68 can be slower th
37d0: 65 0a 20 20 20 20 23 20 20 20 20 73 74 61 72 74 e. # start
37e0: 20 75 70 20 62 75 74 20 69 73 20 62 65 74 74 65 up but is bette
37f0: 72 20 77 68 65 6e 20 6d 61 6b 69 6e 67 20 72 65 r when making re
3800: 6d 6f 74 65 20 64 65 62 75 67 67 69 6e 67 0a 0a mote debugging..
3810: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f set options_
3820: 64 65 66 28 43 68 65 63 6b 52 65 6d 6f 74 65 73 def(CheckRemotes
3830: 29 20 31 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 ) 1.. set opt
3840: 69 6f 6e 73 5f 64 65 66 28 41 75 74 6f 53 61 76 ions_def(AutoSav
3850: 65 52 65 76 69 73 69 6f 6e 73 29 20 31 0a 20 20 eRevisions) 1.
3860: 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 set options_de
3870: 66 28 41 75 74 6f 53 61 76 65 52 65 76 69 73 69 f(AutoSaveRevisi
3880: 6f 6e 73 5f 74 69 6d 65 29 20 35 0a 20 20 20 20 ons_time) 5.
3890: 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 65 66 28 set options_def(
38a0: 41 75 74 6f 53 61 76 65 52 65 76 69 73 69 6f 6e AutoSaveRevision
38b0: 73 5f 69 64 6c 65 74 69 6d 65 29 20 35 0a 0a 20 s_idletime) 5..
38c0: 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 5f 64 set options_d
38d0: 65 66 28 6e 6f 6e 49 6e 73 74 72 75 6d 65 6e 74 ef(nonInstrument
38e0: 69 6e 67 50 72 6f 63 73 29 20 22 22 0a 0a 20 20 ingProcs) ""..
38f0: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ##############
3900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3940: 23 23 0a 20 20 20 20 23 20 52 65 61 64 69 6e 67 ##. # Reading
3950: 20 70 72 65 66 65 72 65 6e 63 65 73 20 28 74 68 preferences (th
3960: 65 79 20 61 72 65 20 6f 6e 6c 79 20 73 61 76 65 ey are only save
3970: 64 20 69 6e 20 47 55 49 20 6d 6f 64 65 29 0a 20 d in GUI mode).
3980: 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 #############
3990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
39a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
39b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
39c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
39d0: 23 23 23 0a 0a 20 20 20 20 69 66 20 7b 20 24 3a ###.. if { $:
39e0: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c :tcl_platform(pl
39f0: 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 atform) == "wind
3a00: 6f 77 73 22 20 7d 20 7b 0a 09 69 66 20 7b 20 5b ows" } {..if { [
3a10: 63 61 74 63 68 20 7b 20 70 61 63 6b 61 67 65 20 catch { package
3a20: 72 65 71 75 69 72 65 20 72 65 67 69 73 74 72 79 require registry
3a30: 20 7d 5d 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 }] } {.. for
3a40: 65 61 63 68 20 69 20 5b 69 6e 66 6f 20 6c 6f 61 each i [info loa
3a50: 64 65 64 5d 20 7b 0a 09 09 69 66 20 7b 20 5b 73 ded] {...if { [s
3a60: 74 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63 tring equal -noc
3a70: 61 73 65 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 ase [lindex $i 1
3a80: 5d 20 22 72 65 67 69 73 74 72 79 22 5d 20 7d 20 ] "registry"] }
3a90: 7b 0a 09 09 20 20 20 20 6c 6f 61 64 20 5b 6c 69 {... load [li
3aa0: 6e 64 65 78 20 24 69 20 30 5d 0a 09 09 20 20 20 ndex $i 0]...
3ab0: 20 62 72 65 61 6b 0a 09 09 7d 0a 09 20 20 20 20 break...}..
3ac0: 7d 0a 09 7d 0a 09 70 61 63 6b 61 67 65 20 72 65 }..}..package re
3ad0: 71 75 69 72 65 20 72 65 67 69 73 74 72 79 0a 20 quire registry.
3ae0: 20 20 20 7d 0a 0a 20 20 20 20 61 72 72 61 79 20 }.. array
3af0: 73 65 74 20 6f 70 74 69 6f 6e 73 20 5b 61 72 72 set options [arr
3b00: 61 79 20 67 65 74 20 6f 70 74 69 6f 6e 73 5f 64 ay get options_d
3b10: 65 66 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24 72 ef].. if { $r
3b20: 65 61 64 77 72 69 74 65 70 72 65 66 73 20 65 71 eadwriteprefs eq
3b30: 20 22 79 65 73 22 20 7c 7c 20 24 72 65 61 64 77 "yes" || $readw
3b40: 72 69 74 65 70 72 65 66 73 20 65 71 20 22 6e 6f riteprefs eq "no
3b50: 77 72 69 74 65 22 20 7d 20 7b 0a 09 52 65 61 64 write" } {..Read
3b60: 50 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 Preferences.
3b70: 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f }.. set optio
3b80: 6e 73 28 43 68 65 63 6b 52 65 6d 6f 74 65 73 29 ns(CheckRemotes)
3b90: 20 24 63 68 65 63 6b 5f 72 65 6d 6f 74 65 73 0a $check_remotes.
3ba0: 0a 20 20 20 20 55 70 64 61 74 65 45 78 65 63 44 . UpdateExecD
3bb0: 69 72 73 0a 0a 20 20 20 20 23 23 23 23 23 23 23 irs.. #######
3bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3c00: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 20 #########. #
3c10: 52 65 67 69 73 74 65 72 69 6e 67 20 61 73 20 72 Registering as r
3c20: 65 6d 6f 74 65 20 73 65 72 76 65 72 0a 20 20 20 emote server.
3c30: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ###############
3c40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3c50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3c80: 23 0a 0a 20 20 20 20 69 66 20 7b 20 24 64 65 62 #.. if { $deb
3c90: 75 67 67 65 72 73 65 72 76 65 72 20 21 3d 20 22 uggerserver != "
3ca0: 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a " } { return }..
3cb0: 20 20 20 20 73 65 74 20 64 65 62 75 67 67 65 72 set debugger
3cc0: 73 65 72 76 65 72 20 72 61 6d 64 65 62 75 67 67 server ramdebugg
3cd0: 65 72 0a 0a 20 20 20 20 69 66 20 7b 20 24 75 73 er.. if { $us
3ce0: 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09 69 66 20 7b ecommR } {..if {
3cf0: 20 24 6f 70 74 69 6f 6e 73 28 43 68 65 63 6b 52 $options(CheckR
3d00: 65 6d 6f 74 65 73 29 20 3d 3d 20 31 20 7d 20 7b emotes) == 1 } {
3d10: 0a 09 20 20 20 20 75 70 6c 65 76 65 6c 20 5c 23 .. uplevel \#
3d20: 30 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 0 package requir
3d30: 65 20 63 6f 6d 6d 52 20 20 3b 23 6d 6f 64 69 66 e commR ;#modif
3d40: 69 63 61 74 69 6f 6e 20 28 63 6f 6d 6d 52 29 20 ication (commR)
3d50: 6f 66 20 74 63 6c 6c 69 62 20 63 6f 6d 6d 20 70 of tcllib comm p
3d60: 61 63 6b 61 67 65 0a 09 20 20 20 20 73 65 74 20 ackage.. set
3d70: 64 65 62 75 67 67 65 72 73 65 72 76 65 72 4e 75 debuggerserverNu
3d80: 6d 20 5b 63 6f 6d 6d 52 3a 3a 72 65 67 69 73 74 m [commR::regist
3d90: 65 72 20 52 61 6d 44 65 62 75 67 67 65 72 20 31 er RamDebugger 1
3da0: 5d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 ]..}. } else
3db0: 7b 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f {..if { [info co
3dc0: 6d 6d 61 6e 64 73 20 77 6d 5d 20 21 3d 20 22 22 mmands wm] != ""
3dd0: 20 7d 20 7b 0a 09 20 20 20 20 70 61 63 6b 61 67 } {.. packag
3de0: 65 20 72 65 71 75 69 72 65 20 54 6b 0a 09 20 20 e require Tk..
3df0: 20 20 77 6d 20 77 69 74 68 64 72 61 77 20 2e 0a wm withdraw ..
3e00: 09 7d 0a 09 73 65 74 20 64 65 62 75 67 67 65 72 .}..set debugger
3e10: 73 65 72 76 65 72 20 5b 74 6b 20 61 70 70 6e 61 server [tk appna
3e20: 6d 65 20 24 64 65 62 75 67 67 65 72 73 65 72 76 me $debuggerserv
3e30: 65 72 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f er]. }.}..pro
3e40: 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 c RamDebugger::S
3e50: 65 74 46 6f 6e 74 20 7b 20 63 75 61 6c 20 63 6f etFont { cual co
3e60: 6d 6f 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 mo } {. varia
3e70: 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 ble options..
3e80: 20 73 65 74 20 69 64 78 20 5b 20 6c 73 65 61 72 set idx [ lsear
3e90: 63 68 20 7b 4e 6f 72 6d 61 6c 46 6f 6e 74 20 46 ch {NormalFont F
3ea0: 69 78 65 64 46 6f 6e 74 20 48 65 6c 70 46 6f 6e ixedFont HelpFon
3eb0: 74 7d 20 24 63 75 61 6c 5d 0a 20 20 20 20 69 66 t} $cual]. if
3ec0: 20 7b 20 24 69 64 78 20 21 3d 20 2d 31 7d 20 7b { $idx != -1} {
3ed0: 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 24 63 ..set options($c
3ee0: 75 61 6c 29 20 24 63 6f 6d 6f 0a 20 20 20 20 7d ual) $como. }
3ef0: 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
3f00: 67 67 65 72 3a 3a 55 70 64 61 74 65 45 78 65 63 gger::UpdateExec
3f10: 44 69 72 73 20 7b 7d 20 7b 0a 20 20 20 20 76 61 Dirs {} {. va
3f20: 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 riable options.
3f30: 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 variable topd
3f40: 69 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ir. variable
3f50: 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 0a topdir_external.
3f60: 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c . if { $::tcl
3f70: 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f _platform(platfo
3f80: 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22 rm) == "windows"
3f90: 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 5b } {..set file [
3fa0: 66 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 filenormalize [f
3fb0: 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 ile join $topdir
3fc0: 5f 65 78 74 65 72 6e 61 6c 20 61 64 64 6f 6e 73 _external addons
3fd0: 20 65 78 65 5d 5d 0a 09 69 66 20 7b 20 5b 66 69 exe]]..if { [fi
3fe0: 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 24 le isdirectory $
3ff0: 66 69 6c 65 5d 20 26 26 20 5b 6c 73 65 61 72 63 file] && [lsearc
4000: 68 20 2d 65 78 61 63 74 20 24 6f 70 74 69 6f 6e h -exact $option
4010: 73 28 65 78 65 63 75 74 61 62 6c 65 5f 64 69 72 s(executable_dir
4020: 73 29 20 24 66 69 6c 65 5d 20 3d 3d 20 2d 31 20 s) $file] == -1
4030: 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 } {.. lappend
4040: 20 6f 70 74 69 6f 6e 73 28 65 78 65 63 75 74 61 options(executa
4050: 62 6c 65 5f 64 69 72 73 29 20 24 66 69 6c 65 0a ble_dirs) $file.
4060: 09 7d 0a 09 66 6f 72 65 61 63 68 20 69 20 5b 67 .}..foreach i [g
4070: 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 lob -nocomplain
4080: 2d 64 69 72 20 63 3a 20 6d 69 6e 67 77 2a 5d 20 -dir c: mingw*]
4090: 7b 0a 09 20 20 20 20 73 65 74 20 64 69 72 73 5f {.. set dirs_
40a0: 69 6e 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 in [glob -nocomp
40b0: 6c 61 69 6e 20 2d 64 69 72 20 24 69 20 6d 69 6e lain -dir $i min
40c0: 67 77 2a 5d 0a 09 20 20 20 20 66 6f 72 65 61 63 gw*].. foreac
40d0: 68 20 6a 20 5b 63 6f 6e 63 61 74 20 5b 6c 69 73 h j [concat [lis
40e0: 74 20 24 69 5d 20 24 64 69 72 73 5f 69 6e 5d 20 t $i] $dirs_in]
40f0: 7b 0a 09 09 69 66 20 7b 20 5b 66 69 6c 65 20 69 {...if { [file i
4100: 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 sdirectory [file
4110: 20 6a 6f 69 6e 20 24 6a 20 62 69 6e 5d 5d 20 7d join $j bin]] }
4120: 20 7b 0a 09 09 20 20 20 20 73 65 74 20 66 69 6c {... set fil
4130: 65 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 e [filenormalize
4140: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6a 20 62 [file join $j b
4150: 69 6e 5d 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 in]]... if {
4160: 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 [lsearch -exact
4170: 24 6f 70 74 69 6f 6e 73 28 65 78 65 63 75 74 61 $options(executa
4180: 62 6c 65 5f 64 69 72 73 29 20 24 66 69 6c 65 5d ble_dirs) $file]
4190: 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 == -1 } {...
41a0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 lappend opt
41b0: 69 6f 6e 73 28 65 78 65 63 75 74 61 62 6c 65 5f ions(executable_
41c0: 64 69 72 73 29 20 24 66 69 6c 65 0a 09 09 20 20 dirs) $file...
41d0: 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 }...}.. }..
41e0: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 }. }.. if
41f0: 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
4200: 3a 3a 65 6e 76 28 50 41 54 48 29 5d 20 7d 20 7b ::env(PATH)] } {
4210: 0a 09 73 65 74 20 6c 69 73 74 20 22 22 0a 20 20 ..set list "".
4220: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 } else {..set
4230: 6c 69 73 74 20 5b 73 70 6c 69 74 20 24 3a 3a 65 list [split $::e
4240: 6e 76 28 50 41 54 48 29 20 5c 3b 5d 0a 20 20 20 nv(PATH) \;].
4250: 20 7d 0a 20 20 20 20 73 65 74 20 68 61 73 63 68 }. set hasch
4260: 61 6e 67 65 64 20 30 0a 20 20 20 20 66 6f 72 65 anged 0. fore
4270: 61 63 68 20 69 20 24 6f 70 74 69 6f 6e 73 28 65 ach i $options(e
4280: 78 65 63 75 74 61 62 6c 65 5f 64 69 72 73 29 20 xecutable_dirs)
4290: 7b 0a 09 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 {..if { $::tcl_p
42a0: 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d latform(platform
42b0: 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 7d ) eq "windows" }
42c0: 20 7b 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 {.. set err
42d0: 5b 63 61 74 63 68 20 7b 20 73 65 74 20 73 68 6f [catch { set sho
42e0: 72 74 6e 61 6d 65 20 5b 66 69 6c 65 20 6e 61 74 rtname [file nat
42f0: 69 76 65 20 5b 66 69 6c 65 20 61 74 74 72 69 62 ive [file attrib
4300: 75 74 65 73 20 24 69 20 2d 73 68 6f 72 74 6e 61 utes $i -shortna
4310: 6d 65 5d 5d 20 7d 5d 0a 09 20 20 20 20 69 66 20 me]] }].. if
4320: 7b 20 21 24 65 72 72 20 7d 20 7b 20 73 65 74 20 { !$err } { set
4330: 69 20 24 73 68 6f 72 74 6e 61 6d 65 20 7d 0a 09 i $shortname }..
4340: 7d 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 }..if { [lsearch
4350: 20 2d 65 78 61 63 74 20 24 6c 69 73 74 20 24 69 -exact $list $i
4360: 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 ] == -1 } {..
4370: 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 20 24 69 lappend list $i
4380: 0a 09 20 20 20 20 73 65 74 20 68 61 73 63 68 61 .. set hascha
4390: 6e 67 65 64 20 31 0a 09 7d 0a 20 20 20 20 7d 0a nged 1..}. }.
43a0: 20 20 20 20 69 66 20 7b 20 24 68 61 73 63 68 61 if { $hascha
43b0: 6e 67 65 64 20 7d 20 7b 0a 09 73 65 74 20 3a 3a nged } {..set ::
43c0: 65 6e 76 28 50 41 54 48 29 20 5b 6a 6f 69 6e 20 env(PATH) [join
43d0: 24 6c 69 73 74 20 5c 3b 5d 0a 09 23 20 74 68 69 $list \;]..# thi
43e0: 73 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 s is a variable
43f0: 66 72 6f 6d 20 74 68 65 20 54 43 4c 20 6c 69 62 from the TCL lib
4400: 72 61 72 79 0a 09 61 72 72 61 79 20 75 6e 73 65 rary..array unse
4410: 74 20 3a 3a 61 75 74 6f 5f 65 78 65 63 73 0a 20 t ::auto_execs.
4420: 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 73 65 }. . se
4430: 74 20 64 69 72 73 20 22 22 0a 20 20 20 20 66 6f t dirs "". fo
4440: 72 65 61 63 68 20 69 20 24 6f 70 74 69 6f 6e 73 reach i $options
4450: 28 65 78 65 63 75 74 61 62 6c 65 5f 64 69 72 73 (executable_dirs
4460: 29 20 7b 0a 09 69 66 20 7b 20 24 69 20 6e 69 20 ) {..if { $i ni
4470: 24 3a 3a 61 75 74 6f 5f 70 61 74 68 20 7d 20 7b $::auto_path } {
4480: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 69 .. lappend di
4490: 72 73 20 24 69 0a 09 7d 0a 20 20 20 20 7d 0a 20 rs $i..}. }.
44a0: 20 20 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 if { [llength
44b0: 20 24 64 69 72 73 5d 20 7d 20 7b 0a 09 73 65 74 $dirs] } {..set
44c0: 20 3a 3a 61 75 74 6f 5f 70 61 74 68 20 5b 6c 69 ::auto_path [li
44d0: 6e 73 65 72 74 20 24 3a 3a 61 75 74 6f 5f 70 61 nsert $::auto_pa
44e0: 74 68 20 30 20 7b 2a 7d 24 64 69 72 73 5d 0a 20 th 0 {*}$dirs].
44f0: 20 20 20 7d 0a 7d 0a 0a 23 23 23 23 23 23 23 23 }.}..########
4500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4540: 23 23 23 23 23 23 23 23 0a 23 20 20 20 20 20 20 ########.#
4550: 20 4d 61 69 6e 20 6e 6f 6e 20 47 55 49 20 66 75 Main non GUI fu
4560: 6e 63 74 69 6f 6e 73 0a 23 23 23 23 23 23 23 23 nctions.########
4570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
45a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
45b0: 23 23 23 23 23 23 23 23 0a 0a 0a 70 72 6f 63 20 ########...proc
45c0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 68 65 RamDebugger::rhe
45d0: 6c 70 20 7b 20 61 72 67 73 20 7d 20 7b 0a 0a 20 lp { args } {..
45e0: 20 20 20 73 65 74 20 75 73 61 67 65 73 74 72 69 set usagestri
45f0: 6e 67 20 7b 75 73 61 67 65 3a 20 72 68 65 6c 70 ng {usage: rhelp
4600: 20 3f 73 77 69 74 63 68 65 73 3f 20 3f 63 6f 6d ?switches? ?com
4610: 6d 61 6e 64 3f 0a 09 2d 68 3a 20 20 20 20 20 20 mand?..-h:
4620: 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a displays usage.
4630: 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 20 .--: end of
4640: 6f 70 74 69 6f 6e 73 0a 0a 09 54 6f 20 6f 62 74 options...To obt
4650: 61 69 6e 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 ain more informa
4660: 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6d 6d 61 6e tion of a comman
4670: 64 2c 20 75 73 65 20 27 72 68 65 6c 70 20 63 6f d, use 'rhelp co
4680: 6d 6d 61 6e 64 27 20 6f 72 20 27 63 6f 6d 6d 61 mmand' or 'comma
4690: 6e 64 20 2d 68 27 2e 0a 09 54 6f 20 62 65 67 69 nd -h'...To begi
46a0: 6e 20 64 65 62 75 67 67 69 6e 67 2c 20 75 73 65 n debugging, use
46b0: 20 72 64 65 62 75 67 2e 0a 20 20 20 20 7d 0a 20 rdebug.. }.
46c0: 20 20 20 50 61 72 73 65 41 72 67 73 20 24 61 72 ParseArgs $ar
46d0: 67 73 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 gs $usagestring
46e0: 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 opts.. if { $
46f0: 6f 70 74 73 28 63 6f 6d 6d 61 6e 64 29 20 21 3d opts(command) !=
4700: 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 69 "" } {..if { [i
4710: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 24 6f 70 nfo commands $op
4720: 74 73 28 63 6f 6d 6d 61 6e 64 29 5d 20 3d 3d 20 ts(command)] ==
4730: 22 22 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f "" } {.. erro
4740: 72 20 5b 5f 20 22 63 6f 6d 6d 61 6e 64 20 27 25 r [_ "command '%
4750: 73 27 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 s' does not exis
4760: 74 22 20 24 6f 70 74 73 28 63 6f 6d 6d 61 6e 64 t" $opts(command
4770: 29 5d 5c 6e 24 75 73 61 67 65 73 74 72 69 6e 67 )]\n$usagestring
4780: 0a 09 7d 0a 09 63 61 74 63 68 20 7b 20 24 6f 70 ..}..catch { $op
4790: 74 73 28 63 6f 6d 6d 61 6e 64 29 20 2d 68 20 7d ts(command) -h }
47a0: 20 73 74 72 69 6e 67 0a 09 72 65 74 75 72 6e 20 string..return
47b0: 24 73 74 72 69 6e 67 0a 20 20 20 20 7d 0a 20 20 $string. }.
47c0: 20 20 73 65 74 20 6c 69 73 74 20 5b 6e 61 6d 65 set list [name
47d0: 73 70 61 63 65 20 65 78 70 6f 72 74 5d 0a 20 20 space export].
47e0: 20 20 73 65 74 20 72 65 74 76 61 6c 20 5b 5f 20 set retval [_
47f0: 22 55 73 65 20 27 72 68 65 6c 70 20 2d 68 27 20 "Use 'rhelp -h'
4800: 6f 72 20 27 72 68 65 6c 70 20 63 6f 6d 6d 61 6e or 'rhelp comman
4810: 64 27 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f d' for more info
4820: 72 6d 61 74 69 6f 6e 22 5d 5c 6e 5c 6e 0a 20 20 rmation"]\n\n.
4830: 20 20 66 6f 72 65 61 63 68 20 69 20 5b 6e 61 6d foreach i [nam
4840: 65 73 70 61 63 65 20 65 78 70 6f 72 74 5d 20 7b espace export] {
4850: 0a 09 63 61 74 63 68 20 7b 20 24 69 20 2d 68 20 ..catch { $i -h
4860: 7d 20 73 74 72 69 6e 67 0a 09 72 65 67 65 78 70 } string..regexp
4870: 20 7b 5e 2e 2a 3a 28 2e 2a 29 7d 20 5b 6c 69 6e {^.*:(.*)} [lin
4880: 64 65 78 20 5b 73 70 6c 69 74 20 24 73 74 72 69 dex [split $stri
4890: 6e 67 20 5c 6e 5d 20 30 5d 20 7b 7d 20 73 74 72 ng \n] 0] {} str
48a0: 69 6e 67 0a 09 61 70 70 65 6e 64 20 72 65 74 76 ing..append retv
48b0: 61 6c 20 22 24 73 74 72 69 6e 67 5c 6e 22 0a 20 al "$string\n".
48c0: 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 }. return
48d0: 24 72 65 74 76 61 6c 0a 7d 0a 0a 70 72 6f 63 20 $retval.}..proc
48e0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 65 RamDebugger::rde
48f0: 62 75 67 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 bug { args } {.
4900: 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f variable remo
4910: 74 65 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 teserver. var
4920: 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 iable remoteserv
4930: 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 erType. varia
4940: 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 ble remoteserver
4950: 4e 75 6d 0a 20 20 20 20 76 61 72 69 61 62 6c 65 Num. variable
4960: 20 64 65 62 75 67 67 65 72 73 65 72 76 65 72 0a debuggerserver.
4970: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 variable deb
4980: 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d 0a 20 uggerserverNum.
4990: 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
49a0: 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 entfile. vari
49b0: 61 62 6c 65 20 73 65 72 76 69 63 65 73 0a 20 20 able services.
49c0: 20 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 variable instr
49d0: 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 umentedfilesSent
49e0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 . variable de
49f0: 62 75 67 67 65 72 73 74 61 74 65 0a 20 20 20 20 buggerstate.
4a00: 76 61 72 69 61 62 6c 65 20 67 64 62 6c 6f 67 0a variable gdblog.
4a10: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 variable opt
4a20: 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c ions. variabl
4a30: 65 20 69 6e 69 74 69 61 6c 63 6f 6d 6d 61 6e 64 e initialcommand
4a40: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 75 s. variable u
4a50: 73 65 63 6f 6d 6d 52 0a 20 20 20 20 76 61 72 69 secommR. vari
4a60: 61 62 6c 65 20 74 63 6c 73 68 5f 64 65 66 61 75 able tclsh_defau
4a70: 6c 74 5f 64 69 72 73 0a 0a 20 20 20 20 73 65 74 lt_dirs.. set
4a80: 20 75 73 61 67 65 73 74 72 69 6e 67 20 7b 75 73 usagestring {us
4a90: 61 67 65 3a 20 72 64 65 62 75 67 20 3f 73 77 69 age: rdebug ?swi
4aa0: 74 63 68 65 73 3f 20 3f 70 72 6f 67 72 61 6d 3f tches? ?program?
4ab0: 0a 09 2d 68 3a 20 20 20 20 20 20 20 20 20 20 20 ..-h:
4ac0: 20 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 displays usage
4ad0: 0a 09 2d 61 63 74 69 76 65 73 3a 20 20 20 20 20 ..-actives:
4ae0: 20 20 72 65 74 75 72 6e 20 61 63 74 69 76 65 20 return active
4af0: 70 72 6f 67 72 61 6d 73 0a 09 2d 66 6f 72 63 65 programs..-force
4b00: 75 70 64 61 74 65 3a 20 20 20 66 6f 72 63 65 20 update: force
4b10: 75 70 64 61 74 65 20 6f 66 20 72 65 6d 6f 74 65 update of remote
4b20: 20 70 72 6f 67 72 61 6d 20 73 65 61 72 63 68 0a program search.
4b30: 09 2d 66 6f 72 63 65 75 70 64 61 74 65 32 3a 20 .-forceupdate2:
4b40: 20 66 6f 72 63 65 20 75 70 64 61 74 65 20 6f 66 force update of
4b50: 20 72 65 6d 6f 74 65 20 70 72 6f 67 72 61 6d 20 remote program
4b60: 73 65 61 72 63 68 2c 20 74 72 79 20 68 61 72 64 search, try hard
4b70: 65 72 0a 09 2d 64 69 73 63 6f 6e 6e 65 63 74 3a er..-disconnect:
4b80: 20 20 20 20 64 69 73 63 6f 6e 6e 65 63 74 20 66 disconnect f
4b90: 72 6f 6d 20 72 65 6d 6f 74 65 73 65 72 76 65 72 rom remoteserver
4ba0: 0a 09 2d 63 75 72 72 65 6e 74 66 69 6c 65 3a 20 ..-currentfile:
4bb0: 20 20 65 78 65 63 75 74 65 20 61 6e 64 20 64 65 execute and de
4bc0: 62 75 67 20 63 75 72 72 65 6e 74 66 69 6c 65 0a bug currentfile.
4bd0: 09 2d 6d 61 73 74 65 72 3a 20 20 20 20 20 20 20 .-master:
4be0: 20 6f 6e 6c 79 20 76 61 6c 69 64 20 77 68 65 6e only valid when
4bf0: 20 52 61 6d 44 65 62 75 67 67 65 72 20 69 73 20 RamDebugger is
4c00: 69 6e 63 6c 75 64 65 64 20 61 73 20 70 61 63 6b included as pack
4c10: 61 67 65 2e 20 44 65 62 75 67 73 20 6d 61 73 74 age. Debugs mast
4c20: 65 72 20 70 72 6f 67 72 61 6d 0a 09 2d 64 65 62 er program..-deb
4c30: 75 67 63 70 6c 75 73 70 6c 75 73 3a 20 65 78 65 ugcplusplus: exe
4c40: 63 75 74 65 20 61 6e 64 20 64 65 62 75 67 20 61 cute and debug a
4c50: 20 63 2b 2b 20 66 69 6c 65 2e 20 70 72 6f 67 72 c++ file. progr
4c60: 61 6d 20 69 73 20 61 20 6c 69 73 74 20 77 69 74 am is a list wit
4c70: 68 20 70 72 67 2e 20 6e 61 6d 65 20 61 6e 64 20 h prg. name and
4c80: 61 72 67 73 0a 09 2d 2d 3a 20 20 20 20 20 20 20 args..--:
4c90: 20 20 20 20 20 20 65 6e 64 20 6f 66 20 6f 70 74 end of opt
4ca0: 69 6f 6e 73 0a 0a 09 54 6f 20 62 65 67 69 6e 20 ions...To begin
4cb0: 64 65 62 75 67 67 69 6e 67 20 61 20 54 43 4c 20 debugging a TCL
4cc0: 66 69 6c 65 2c 20 73 65 6c 65 63 74 20 74 68 65 file, select the
4cd0: 20 66 69 6c 65 20 77 69 74 68 20 27 72 6c 69 73 file with 'rlis
4ce0: 74 27 20 61 6e 64 20 75 73 65 20 27 72 64 65 62 t' and use 'rdeb
4cf0: 75 67 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 27 ug -currentfile'
4d00: 2e 0a 09 54 6f 20 62 65 67 69 6e 20 64 65 62 75 ...To begin debu
4d10: 67 67 69 6e 67 20 61 20 72 65 6d 6f 74 65 20 70 gging a remote p
4d20: 72 6f 67 72 61 6d 2c 20 75 73 65 20 27 72 64 65 rogram, use 'rde
4d30: 62 75 67 20 70 72 6f 67 72 61 6d 27 2c 20 77 68 bug program', wh
4d40: 65 72 65 20 70 72 6f 67 72 61 6d 20 69 73 20 6f ere program is o
4d50: 6e 65 20 61 63 74 69 76 65 0a 09 70 72 6f 67 72 ne active..progr
4d60: 61 6d 2c 20 74 68 61 74 20 6d 75 73 74 20 62 65 am, that must be
4d70: 6c 6f 6e 67 20 74 6f 20 74 68 65 20 73 65 72 76 long to the serv
4d80: 69 63 65 73 20 6c 69 73 74 2e 0a 20 20 20 20 7d ices list.. }
4d90: 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 20 24 . ParseArgs $
4da0: 61 72 67 73 20 24 75 73 61 67 65 73 74 72 69 6e args $usagestrin
4db0: 67 20 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b g opts.. if {
4dc0: 20 24 6f 70 74 73 28 2d 6d 61 73 74 65 72 29 20 $opts(-master)
4dd0: 7d 20 7b 0a 09 23 20 6e 6f 74 68 69 6e 67 0a 20 } {..# nothing.
4de0: 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 6f } elseif { $o
4df0: 70 74 73 28 2d 66 6f 72 63 65 75 70 64 61 74 65 pts(-forceupdate
4e00: 32 29 20 7d 20 7b 0a 09 46 69 6e 64 41 63 74 69 2) } {..FindActi
4e10: 76 65 50 72 6f 67 72 61 6d 73 20 32 0a 20 20 20 vePrograms 2.
4e20: 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 6f 70 74 } elseif { $opt
4e30: 73 28 2d 66 6f 72 63 65 75 70 64 61 74 65 29 20 s(-forceupdate)
4e40: 7d 20 7b 0a 09 46 69 6e 64 41 63 74 69 76 65 50 } {..FindActiveP
4e50: 72 6f 67 72 61 6d 73 20 31 0a 20 20 20 20 7d 20 rograms 1. }
4e60: 65 6c 73 65 20 7b 20 46 69 6e 64 41 63 74 69 76 else { FindActiv
4e70: 65 50 72 6f 67 72 61 6d 73 20 30 20 7d 0a 20 20 ePrograms 0 }.
4e80: 20 20 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 . if { $opt
4e90: 73 28 2d 61 63 74 69 76 65 73 29 20 7d 20 7b 20 s(-actives) } {
4ea0: 72 65 74 75 72 6e 20 5b 61 72 72 61 79 20 6e 61 return [array na
4eb0: 6d 65 73 20 73 65 72 76 69 63 65 73 5d 20 7d 0a mes services] }.
4ec0: 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 . if { $opts(
4ed0: 2d 64 69 73 63 6f 6e 6e 65 63 74 29 20 7d 20 7b -disconnect) } {
4ee0: 0a 09 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 ..if { $remotese
4ef0: 72 76 65 72 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 rver == "" } {..
4f00: 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 error [_ "Er
4f10: 72 6f 72 2e 20 54 68 65 72 65 20 69 73 20 6e 6f ror. There is no
4f20: 20 64 65 62 75 67 67 69 6e 67 20 73 65 73 73 69 debugging sessi
4f30: 6f 6e 20 61 63 74 69 76 65 20 74 6f 20 73 74 6f on active to sto
4f40: 70 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 24 72 65 p"]..}..if { $re
4f50: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d moteserverType =
4f60: 3d 20 22 6d 61 73 74 65 72 22 20 7d 20 7b 0a 09 = "master" } {..
4f70: 20 20 20 20 23 20 77 68 79 20 6e 6f 74 3f 0a 09 # why not?..
4f80: 20 20 20 20 23 65 72 72 6f 72 20 5b 5f 20 22 49 #error [_ "I
4f90: 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c t is not possibl
4fa0: 65 20 74 6f 20 73 74 6f 70 20 74 68 69 73 20 74 e to stop this t
4fb0: 79 70 65 20 6f 66 20 64 65 62 75 67 67 69 6e 67 ype of debugging
4fc0: 2e 20 55 73 65 20 27 51 75 69 74 27 20 69 6e 73 . Use 'Quit' ins
4fd0: 74 65 61 64 22 5d 0a 09 7d 20 65 6c 73 65 69 66 tead"]..} elseif
4fe0: 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 { $remoteserver
4ff0: 54 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 Type == "local"
5000: 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b } {.. catch {
5010: 20 6c 6f 63 61 6c 20 65 76 61 6c 20 64 65 73 74 local eval dest
5020: 72 6f 79 20 2e 20 7d 0a 09 20 20 20 20 63 61 74 roy . }.. cat
5030: 63 68 20 7b 20 69 6e 74 65 72 70 20 64 65 6c 65 ch { interp dele
5040: 74 65 20 6c 6f 63 61 6c 20 7d 0a 09 7d 20 65 6c te local }..} el
5050: 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 seif { $remotese
5060: 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 rverType == "gdb
5070: 22 20 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68 " } {.. catch
5080: 20 7b 0a 09 09 6c 61 73 73 69 67 6e 20 24 72 65 {...lassign $re
5090: 6d 6f 74 65 73 65 72 76 65 72 20 66 69 64 20 70 moteserver fid p
50a0: 69 64 0a 09 09 23 70 75 74 73 20 2d 6e 6f 6e 65 id...#puts -none
50b0: 77 6c 69 6e 65 20 5b 6c 69 6e 64 65 78 20 24 72 wline [lindex $r
50c0: 65 6d 6f 74 65 73 65 72 76 65 72 20 30 5d 20 7b emoteserver 0] {
50d0: 5c 78 30 33 7d 0a 09 09 69 66 20 7b 20 24 3a 3a \x03}...if { $::
50e0: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 tcl_platform(pla
50f0: 74 66 6f 72 6d 29 20 65 71 20 22 75 6e 69 78 22 tform) eq "unix"
5100: 20 7d 20 7b 0a 09 09 20 20 20 20 65 78 65 63 20 } {... exec
5110: 6b 69 6c 6c 20 2d 73 20 49 4e 54 20 24 70 69 64 kill -s INT $pid
5120: 0a 09 09 7d 0a 09 09 70 75 74 73 20 24 66 69 64 ...}...puts $fid
5130: 20 71 75 69 74 0a 09 09 63 6c 6f 73 65 20 24 66 quit...close $f
5140: 69 64 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65 id.. }..}..se
5150: 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 22 t remoteserver "
5160: 22 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 "..set remoteser
5170: 76 65 72 54 79 70 65 20 22 22 0a 09 69 66 20 7b verType ""..if {
5180: 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20 $debuggerstate
5190: 3d 3d 20 22 64 65 62 75 67 22 20 7d 20 7b 20 73 == "debug" } { s
51a0: 65 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 et debuggerstate
51b0: 20 22 22 20 7d 0a 09 54 61 6b 65 41 72 72 6f 77 "" }..TakeArrow
51c0: 4f 75 74 46 72 6f 6d 54 65 78 74 0a 09 72 65 74 OutFromText..ret
51d0: 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 54 65 urn. }. Te
51e0: 78 74 4f 75 74 43 6c 65 61 72 0a 0a 20 20 20 20 xtOutClear..
51f0: 69 66 20 7b 20 24 6f 70 74 73 28 2d 6d 61 73 74 if { $opts(-mast
5200: 65 72 29 20 7d 20 7b 0a 09 69 66 20 7b 20 24 72 er) } {..if { $r
5210: 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 emoteserverType
5220: 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 7b 0a 09 == "local" } {..
5230: 20 20 20 20 63 61 74 63 68 20 7b 20 6c 6f 63 61 catch { loca
5240: 6c 20 65 76 61 6c 20 64 65 73 74 72 6f 79 20 2e l eval destroy .
5250: 20 7d 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 }.. catch {
5260: 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20 6c 6f interp delete lo
5270: 63 61 6c 20 7d 0a 09 7d 20 65 6c 73 65 69 66 20 cal }..} elseif
5280: 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 { $remoteserverT
5290: 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b ype == "gdb" } {
52a0: 0a 09 20 20 20 20 63 61 74 63 68 20 7b 0a 09 09 .. catch {...
52b0: 70 75 74 73 20 5b 6c 69 6e 64 65 78 20 24 72 65 puts [lindex $re
52c0: 6d 6f 74 65 73 65 72 76 65 72 20 30 5d 20 71 75 moteserver 0] qu
52d0: 69 74 0a 09 09 63 6c 6f 73 65 20 5b 6c 69 6e 64 it...close [lind
52e0: 65 78 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 ex $remoteserver
52f0: 20 30 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 0].. }..}..s
5300: 65 74 20 67 64 62 6c 6f 67 20 22 22 0a 0a 09 69 et gdblog ""...i
5310: 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
5320: 20 6f 70 74 69 6f 6e 73 28 6d 61 73 74 65 72 5f options(master_
5330: 74 79 70 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 type)] } {..
5340: 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 set remoteserver
5350: 20 24 6f 70 74 69 6f 6e 73 28 6d 61 73 74 65 72 $options(master
5360: 5f 74 79 70 65 29 0a 09 7d 20 65 6c 73 65 20 7b _type)..} else {
5370: 0a 09 20 20 20 20 23 73 65 74 20 72 65 6d 6f 74 .. #set remot
5380: 65 73 65 72 76 65 72 20 6d 61 73 74 65 72 0a 09 eserver master..
5390: 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65 73 65 set remotese
53a0: 72 76 65 72 20 22 6d 61 73 74 65 72 20 70 72 6f rver "master pro
53b0: 63 22 0a 09 7d 0a 09 73 65 74 20 72 65 6d 6f 74 c"..}..set remot
53c0: 65 73 65 72 76 65 72 54 79 70 65 20 6d 61 73 74 eserverType mast
53d0: 65 72 0a 09 54 61 6b 65 41 72 72 6f 77 4f 75 74 er..TakeArrowOut
53e0: 46 72 6f 6d 54 65 78 74 0a 20 20 20 20 7d 20 65 FromText. } e
53f0: 6c 73 65 69 66 20 7b 20 24 6f 70 74 73 28 2d 63 lseif { $opts(-c
5400: 75 72 72 65 6e 74 66 69 6c 65 29 20 7d 20 7b 0a urrentfile) } {.
5410: 09 69 66 20 7b 20 5b 69 6e 74 65 72 70 20 65 78 .if { [interp ex
5420: 69 73 74 73 20 6c 6f 63 61 6c 5d 20 7d 20 7b 0a ists local] } {.
5430: 09 20 20 20 20 63 61 74 63 68 20 7b 20 6c 6f 63 . catch { loc
5440: 61 6c 20 65 76 61 6c 20 64 65 73 74 72 6f 79 20 al eval destroy
5450: 2e 20 7d 0a 09 20 20 20 20 63 61 74 63 68 20 7b . }.. catch {
5460: 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20 6c interp delete l
5470: 6f 63 61 6c 20 7d 0a 09 7d 0a 09 69 6e 74 65 72 ocal }..}..inter
5480: 70 20 63 72 65 61 74 65 20 6c 6f 63 61 6c 0a 09 p create local..
5490: 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c 6f 63 interp alias loc
54a0: 61 6c 20 73 65 6e 64 6d 61 73 74 65 72 20 22 22 al sendmaster ""
54b0: 20 65 76 61 6c 0a 09 23 20 64 69 72 74 79 20 74 eval..# dirty t
54c0: 72 69 63 6b 20 74 6f 20 61 76 6f 69 64 20 74 68 rick to avoid th
54d0: 65 20 73 6c 61 76 65 20 69 6e 74 65 72 70 20 62 e slave interp b
54e0: 6c 6f 63 6b 0a 09 69 6e 74 65 72 70 20 65 76 61 lock..interp eva
54f0: 6c 20 6c 6f 63 61 6c 20 7b 0a 09 20 20 20 20 70 l local {.. p
5500: 72 6f 63 20 75 70 64 61 74 65 6d 61 73 74 65 72 roc updatemaster
5510: 20 7b 7d 20 7b 0a 09 09 73 65 6e 64 6d 61 73 74 {} {...sendmast
5520: 65 72 20 75 70 64 61 74 65 0a 09 09 61 66 74 65 er update...afte
5530: 72 20 33 30 30 30 20 75 70 64 61 74 65 6d 61 73 r 3000 updatemas
5540: 74 65 72 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 70 ter.. }..}..p
5550: 72 6f 63 20 65 78 69 74 5f 73 6c 61 76 65 20 7b roc exit_slave {
5560: 20 61 72 67 73 20 7d 20 7b 0a 09 20 20 20 20 69 args } {.. i
5570: 66 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74 f { [catch [list
5580: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 RamDebugger::rd
5590: 65 62 75 67 20 2d 64 69 73 63 6f 6e 6e 65 63 74 ebug -disconnect
55a0: 5d 20 65 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b ] errstring] } {
55b0: 0a 09 09 57 61 72 6e 57 69 6e 20 24 65 72 72 73 ...WarnWin $errs
55c0: 74 72 69 6e 67 0a 09 20 20 20 20 7d 20 65 6c 73 tring.. } els
55d0: 65 20 7b 0a 09 09 73 65 74 20 63 6f 64 65 20 30 e {...set code 0
55e0: 0a 09 09 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 ...if { [llength
55f0: 20 24 61 72 67 73 5d 20 3d 3d 20 31 20 7d 20 7b $args] == 1 } {
5600: 20 73 65 74 20 63 6f 64 65 20 5b 6c 69 6e 64 65 set code [linde
5610: 78 20 24 61 72 67 73 20 30 5d 20 7d 0a 09 09 54 x $args 0] }...T
5620: 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 54 65 extOutRaise...Te
5630: 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 5b xtOutInsertRed [
5640: 5f 20 22 50 72 6f 67 72 61 6d 20 65 78 69 74 65 _ "Program exite
5650: 64 20 77 69 74 68 20 63 6f 64 65 20 25 73 22 20 d with code %s"
5660: 24 63 6f 64 65 5d 0a 09 20 20 20 20 7d 0a 09 7d $code].. }..}
5670: 0a 09 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c ..interp alias l
5680: 6f 63 61 6c 20 65 78 69 74 20 22 22 20 52 61 6d ocal exit "" Ram
5690: 44 65 62 75 67 67 65 72 3a 3a 65 78 69 74 5f 73 Debugger::exit_s
56a0: 6c 61 76 65 0a 09 6c 6f 63 61 6c 20 65 76 61 6c lave..local eval
56b0: 20 7b 20 73 65 74 20 61 72 67 63 20 30 20 3b 20 { set argc 0 ;
56c0: 73 65 74 20 61 72 67 76 20 22 22 20 7d 0a 09 6c set argv "" }..l
56d0: 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73 74 20 ocal eval [list
56e0: 73 65 74 20 3a 3a 61 75 74 6f 5f 70 61 74 68 20 set ::auto_path
56f0: 24 3a 3a 61 75 74 6f 5f 70 61 74 68 5d 0a 09 6c $::auto_path]..l
5700: 6f 63 61 6c 20 65 76 61 6c 20 7b 0a 09 20 20 20 ocal eval {..
5710: 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 if { [info exis
5720: 74 73 20 65 6e 76 28 54 43 4c 4c 49 42 50 41 54 ts env(TCLLIBPAT
5730: 48 29 5d 20 7d 20 7b 0a 09 09 66 6f 72 65 61 63 H)] } {...foreac
5740: 68 20 69 20 24 65 6e 76 28 54 43 4c 4c 49 42 50 h i $env(TCLLIBP
5750: 41 54 48 29 20 7b 0a 09 09 20 20 20 20 6c 61 70 ATH) {... lap
5760: 70 65 6e 64 20 3a 3a 61 75 74 6f 5f 70 61 74 68 pend ::auto_path
5770: 20 24 69 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 $i...}.. }..
5780: 20 20 20 20 66 6f 72 65 61 63 68 20 22 6e 20 76 foreach "n v
5790: 22 20 5b 61 72 72 61 79 20 67 65 74 20 65 6e 76 " [array get env
57a0: 20 54 43 4c 2a 5f 54 4d 5f 50 41 54 48 5d 20 7b TCL*_TM_PATH] {
57b0: 0a 09 09 66 6f 72 65 61 63 68 20 69 20 5b 73 70 ...foreach i [sp
57c0: 6c 69 74 20 24 76 20 22 3a 3b 22 5d 20 7b 0a 09 lit $v ":;"] {..
57d0: 09 20 20 20 20 3a 3a 74 63 6c 3a 3a 74 6d 3a 3a . ::tcl::tm::
57e0: 70 61 74 68 20 61 64 64 20 24 69 0a 09 09 7d 0a path add $i...}.
57f0: 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 . }..}..if {
5800: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 63 ![info exists tc
5810: 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 lsh_default_dirs
5820: 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 74 ] } {.. set t
5830: 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 clsh_default_dir
5840: 73 20 5b 6c 69 73 74 20 22 22 20 22 22 5d 0a 09 s [list "" ""]..
5850: 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 set err [cat
5860: 63 68 20 7b 20 65 78 65 63 20 74 63 6c 73 68 20 ch { exec tclsh
5870: 3c 3c 20 7b 70 75 74 73 20 5b 73 65 74 20 61 75 << {puts [set au
5880: 74 6f 5f 70 61 74 68 5d 7d 7d 20 72 65 74 5d 0a to_path]}} ret].
5890: 09 20 20 20 20 69 66 20 7b 20 21 24 65 72 72 20 . if { !$err
58a0: 7d 20 7b 0a 09 09 6c 73 65 74 20 74 63 6c 73 68 } {...lset tclsh
58b0: 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20 30 20 _default_dirs 0
58c0: 24 72 65 74 0a 09 20 20 20 20 7d 0a 09 20 20 20 $ret.. }..
58d0: 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 set err [catch
58e0: 7b 20 65 78 65 63 20 74 63 6c 73 68 20 3c 3c 20 { exec tclsh <<
58f0: 7b 70 75 74 73 20 5b 3a 3a 74 63 6c 3a 3a 74 6d {puts [::tcl::tm
5900: 3a 3a 70 61 74 68 20 6c 69 73 74 5d 7d 7d 20 72 ::path list]}} r
5910: 65 74 5d 0a 09 20 20 20 20 69 66 20 7b 20 21 24 et].. if { !$
5920: 65 72 72 20 7d 20 7b 0a 09 09 6c 73 65 74 20 74 err } {...lset t
5930: 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f 64 69 72 clsh_default_dir
5940: 73 20 31 20 24 72 65 74 0a 09 20 20 20 20 7d 0a s 1 $ret.. }.
5950: 09 7d 0a 09 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 .}..if { [llengt
5960: 68 20 5b 6c 69 6e 64 65 78 20 24 74 63 6c 73 68 h [lindex $tclsh
5970: 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20 30 5d _default_dirs 0]
5980: 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 6f 63 61 6c ] } {.. local
5990: 20 65 76 61 6c 20 6c 61 70 70 65 6e 64 20 3a 61 eval lappend :a
59a0: 75 74 6f 5f 70 61 74 68 20 5b 6c 69 6e 64 65 78 uto_path [lindex
59b0: 20 24 74 63 6c 73 68 5f 64 65 66 61 75 6c 74 5f $tclsh_default_
59c0: 64 69 72 73 20 30 5d 0a 09 7d 0a 09 69 66 20 7b dirs 0]..}..if {
59d0: 20 5b 6c 6c 65 6e 67 74 68 20 5b 6c 69 6e 64 65 [llength [linde
59e0: 78 20 24 74 63 6c 73 68 5f 64 65 66 61 75 6c 74 x $tclsh_default
59f0: 5f 64 69 72 73 20 31 5d 5d 20 7d 20 7b 0a 09 20 _dirs 1]] } {..
5a00: 20 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20 3a 3a local eval ::
5a10: 74 63 6c 3a 3a 74 6d 3a 3a 70 61 74 68 20 61 64 tcl::tm::path ad
5a20: 64 20 5b 6c 69 6e 64 65 78 20 24 74 63 6c 73 68 d [lindex $tclsh
5a30: 5f 64 65 66 61 75 6c 74 5f 64 69 72 73 20 31 5d _default_dirs 1]
5a40: 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 74 6f 64 ..}..set filetod
5a50: 65 62 75 67 20 24 63 75 72 72 65 6e 74 66 69 6c ebug $currentfil
5a60: 65 0a 09 73 65 74 20 4c 6f 63 61 6c 44 65 62 75 e..set LocalDebu
5a70: 67 67 69 6e 67 54 79 70 65 20 74 6b 0a 09 69 66 ggingType tk..if
5a80: 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
5a90: 6f 70 74 69 6f 6e 73 28 4c 6f 63 61 6c 44 65 62 options(LocalDeb
5aa0: 75 67 67 69 6e 67 54 79 70 65 29 5d 20 7d 20 7b uggingType)] } {
5ab0: 0a 09 20 20 20 20 73 65 74 20 4c 6f 63 61 6c 44 .. set LocalD
5ac0: 65 62 75 67 67 69 6e 67 54 79 70 65 20 24 6f 70 ebuggingType $op
5ad0: 74 69 6f 6e 73 28 4c 6f 63 61 6c 44 65 62 75 67 tions(LocalDebug
5ae0: 67 69 6e 67 54 79 70 65 29 0a 09 7d 0a 09 73 65 gingType)..}..se
5af0: 74 20 63 68 61 6e 67 65 64 5f 64 69 72 20 30 0a t changed_dir 0.
5b00: 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 .if { [info exis
5b10: 74 73 20 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 ts options(curre
5b20: 6e 74 66 69 6c 65 61 72 67 73 35 29 5d 20 7d 20 ntfileargs5)] }
5b30: 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 {.. foreach "
5b40: 63 75 72 72 20 63 75 72 72 5f 61 73 20 64 69 72 curr curr_as dir
5b50: 5f 69 6e 20 61 72 67 5f 69 6e 20 74 63 6c 5f 6f _in arg_in tcl_o
5b60: 72 5f 74 6b 22 20 24 6f 70 74 69 6f 6e 73 28 63 r_tk" $options(c
5b70: 75 72 72 65 6e 74 66 69 6c 65 61 72 67 73 35 29 urrentfileargs5)
5b80: 20 7b 0a 09 09 69 66 20 7b 20 24 63 75 72 72 20 {...if { $curr
5b90: 3d 3d 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 == $currentfile
5ba0: 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 24 } {... if { $
5bb0: 63 75 72 72 5f 61 73 20 21 3d 20 22 22 20 7d 20 curr_as != "" }
5bc0: 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 {... set
5bd0: 66 69 6c 65 74 6f 64 65 62 75 67 20 24 63 75 72 filetodebug $cur
5be0: 72 5f 61 73 0a 09 09 20 20 20 20 7d 0a 09 09 20 r_as... }...
5bf0: 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 69 73 if { [file is
5c00: 64 69 72 65 63 74 6f 72 79 20 24 64 69 72 5f 69 directory $dir_i
5c10: 6e 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 n] } {...
5c20: 20 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73 local eval [lis
5c30: 74 20 63 64 20 24 64 69 72 5f 69 6e 5d 0a 09 09 t cd $dir_in]...
5c40: 20 20 20 20 20 20 20 20 73 65 74 20 63 68 61 6e set chan
5c50: 67 65 64 5f 64 69 72 20 31 0a 09 09 20 20 20 20 ged_dir 1...
5c60: 20 20 20 20 73 65 74 20 74 78 74 20 5b 5f 20 22 set txt [_ "
5c70: 45 78 65 63 75 74 69 6e 67 20 27 25 73 27 5c 6e Executing '%s'\n
5c80: 69 6e 20 64 69 72 65 63 74 6f 72 79 3a 20 25 73 in directory: %s
5c90: 5c 6e 22 20 24 66 69 6c 65 74 6f 64 65 62 75 67 \n" $filetodebug
5ca0: 20 24 64 69 72 5f 69 6e 5d 0a 09 09 20 20 20 20 $dir_in]...
5cb0: 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 74 78 74 } else { set txt
5cc0: 20 5b 5f 20 22 45 78 65 63 75 74 69 6e 67 20 27 [_ "Executing '
5cd0: 25 73 27 5c 6e 22 20 24 66 69 6c 65 74 6f 64 65 %s'\n" $filetode
5ce0: 62 75 67 5d 20 7d 0a 09 09 20 20 20 20 54 65 78 bug] }... Tex
5cf0: 74 4f 75 74 49 6e 73 65 72 74 42 6c 75 65 20 24 tOutInsertBlue $
5d00: 74 78 74 0a 09 09 20 20 20 20 53 65 74 4d 65 73 txt... SetMes
5d10: 73 61 67 65 20 5b 5f 20 22 45 78 65 63 75 74 69 sage [_ "Executi
5d20: 6e 67 20 27 25 73 27 22 20 24 66 69 6c 65 74 6f ng '%s'" $fileto
5d30: 64 65 62 75 67 5d 0a 09 09 20 20 20 20 6c 6f 63 debug]... loc
5d40: 61 6c 20 65 76 61 6c 20 5b 6c 69 73 74 20 73 65 al eval [list se
5d50: 74 20 61 72 67 63 20 5b 6c 6c 65 6e 67 74 68 20 t argc [llength
5d60: 24 61 72 67 5f 69 6e 5d 5d 0a 09 09 20 20 20 20 $arg_in]]...
5d70: 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73 74 local eval [list
5d80: 20 73 65 74 20 61 72 67 76 20 24 61 72 67 5f 69 set argv $arg_i
5d90: 6e 5d 0a 09 09 20 20 20 20 54 65 78 74 4f 75 74 n]... TextOut
5da0: 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20 22 55 InsertBlue [_ "U
5db0: 73 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 3a 20 sing arguments:
5dc0: 27 25 73 27 5c 6e 22 20 24 61 72 67 5f 69 6e 5d '%s'\n" $arg_in]
5dd0: 0a 09 09 20 20 20 20 69 66 20 7b 20 24 74 63 6c ... if { $tcl
5de0: 5f 6f 72 5f 74 6b 20 21 3d 20 22 61 75 74 6f 22 _or_tk != "auto"
5df0: 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 } {... s
5e00: 65 74 20 4c 6f 63 61 6c 44 65 62 75 67 67 69 6e et LocalDebuggin
5e10: 67 54 79 70 65 20 24 74 63 6c 5f 6f 72 5f 74 6b gType $tcl_or_tk
5e20: 0a 09 09 20 20 20 20 20 20 20 20 54 65 78 74 4f ... TextO
5e30: 75 74 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20 utInsertBlue [_
5e40: 22 43 6f 6e 73 69 64 65 72 69 6e 67 20 66 69 6c "Considering fil
5e50: 65 20 61 73 20 74 79 70 65 3a 20 25 73 22 20 24 e as type: %s" $
5e60: 74 63 6c 5f 6f 72 5f 74 6b 5d 0a 09 09 20 20 20 tcl_or_tk]...
5e70: 20 7d 0a 09 09 20 20 20 20 54 65 78 74 4f 75 74 }... TextOut
5e80: 49 6e 73 65 72 74 42 6c 75 65 20 5b 5f 20 22 44 InsertBlue [_ "D
5e90: 65 66 69 6e 65 64 20 69 6e 3a 20 46 69 6c 65 2d efined in: File-
5ea0: 3e 44 65 62 75 67 20 6f 6e 2d 3e 43 75 72 72 65 >Debug on->Curre
5eb0: 6e 74 20 66 69 6c 65 20 61 72 67 75 6d 65 6e 74 nt file argument
5ec0: 73 5c 6e 22 5d 0a 09 09 20 20 20 20 62 72 65 61 s\n"]... brea
5ed0: 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a k...}.. }..}.
5ee0: 09 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c 69 73 .local eval [lis
5ef0: 74 20 73 65 74 20 61 72 67 76 30 20 24 66 69 6c t set argv0 $fil
5f00: 65 74 6f 64 65 62 75 67 5d 0a 0a 09 73 65 74 20 etodebug]...set
5f10: 65 72 72 20 5b 63 61 74 63 68 20 7b 70 61 63 6b err [catch {pack
5f20: 61 67 65 20 70 72 65 73 65 6e 74 20 72 65 67 69 age present regi
5f30: 73 74 72 79 7d 20 76 65 72 5d 0a 09 69 66 20 7b stry} ver]..if {
5f40: 20 21 24 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 !$err } {..
5f50: 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c 6f 63 interp alias loc
5f60: 61 6c 20 72 65 67 69 73 74 72 79 20 22 22 20 72 al registry "" r
5f70: 65 67 69 73 74 72 79 0a 09 20 20 20 20 69 6e 74 egistry.. int
5f80: 65 72 70 20 65 76 61 6c 20 6c 6f 63 61 6c 20 70 erp eval local p
5f90: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 72 ackage provide r
5fa0: 65 67 69 73 74 72 79 20 24 76 65 72 0a 09 7d 0a egistry $ver..}.
5fb0: 09 69 66 20 7b 20 24 4c 6f 63 61 6c 44 65 62 75 .if { $LocalDebu
5fc0: 67 67 69 6e 67 54 79 70 65 20 3d 3d 20 22 74 6b ggingType == "tk
5fd0: 22 20 7d 20 7b 0a 09 20 20 20 20 69 6e 74 65 72 " } {.. inter
5fe0: 70 20 65 76 61 6c 20 6c 6f 63 61 6c 20 5b 6c 69 p eval local [li
5ff0: 73 74 20 6c 6f 61 64 20 7b 7d 20 54 6b 5d 0a 09 st load {} Tk]..
6000: 20 20 20 20 23 69 6e 74 65 72 70 20 65 76 61 6c #interp eval
6010: 20 6c 6f 63 61 6c 20 70 61 63 6b 61 67 65 20 72 local package r
6020: 65 71 75 69 72 65 20 54 6b 0a 09 20 20 20 20 69 equire Tk.. i
6030: 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 f { $::tcl_platf
6040: 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d orm(platform) ==
6050: 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 "windows" } {..
6060: 09 69 6e 74 65 72 70 20 61 6c 69 61 73 20 6c 6f .interp alias lo
6070: 63 61 6c 20 63 6f 6e 73 6f 6c 65 20 22 22 20 63 cal console "" c
6080: 6f 6e 73 6f 6c 65 0a 09 20 20 20 20 7d 0a 09 20 onsole.. }..
6090: 20 20 20 6c 6f 63 61 6c 20 65 76 61 6c 20 5b 6c local eval [l
60a0: 69 73 74 20 62 69 6e 64 20 2e 20 3c 44 65 73 74 ist bind . <Dest
60b0: 72 6f 79 3e 20 7b 20 69 66 20 7b 20 22 25 57 22 roy> { if { "%W"
60c0: 20 3d 3d 20 22 2e 22 20 7d 20 7b 20 65 78 69 74 == "." } { exit
60d0: 20 7d 20 7d 5d 0a 09 7d 0a 09 73 65 74 20 72 65 } }]..}..set re
60e0: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 6c moteserverType l
60f0: 6f 63 61 6c 0a 09 69 66 20 7b 20 24 66 69 6c 65 ocal..if { $file
6100: 74 6f 64 65 62 75 67 20 3d 3d 20 22 22 20 7d 20 todebug == "" }
6110: 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 {.. error [_
6120: 22 45 72 72 6f 72 2e 20 74 68 65 72 65 20 69 73 "Error. there is
6130: 20 6e 6f 20 63 75 72 72 65 6e 74 20 66 69 6c 65 no current file
6140: 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 21 24 63 68 "]..}..if { !$ch
6150: 61 6e 67 65 64 5f 64 69 72 20 7d 20 7b 20 6c 6f anged_dir } { lo
6160: 63 61 6c 20 65 76 61 6c 20 5b 63 64 20 5b 66 69 cal eval [cd [fi
6170: 6c 65 20 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 le dirname $file
6180: 74 6f 64 65 62 75 67 5d 5d 20 7d 0a 0a 09 73 65 todebug]] }...se
6190: 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24 t remoteserver $
61a0: 66 69 6c 65 74 6f 64 65 62 75 67 0a 09 54 61 6b filetodebug..Tak
61b0: 65 41 72 72 6f 77 4f 75 74 46 72 6f 6d 54 65 78 eArrowOutFromTex
61c0: 74 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b t. } elseif {
61d0: 20 24 6f 70 74 73 28 2d 64 65 62 75 67 63 70 6c $opts(-debugcpl
61e0: 75 73 70 6c 75 73 29 20 7d 20 7b 0a 09 69 66 20 usplus) } {..if
61f0: 7b 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 { $opts(program)
6200: 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 == "" } {..
6210: 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 if { $remoteserv
6220: 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 72 er != "" } {...r
6230: 65 74 75 72 6e 20 5b 6c 69 6e 64 65 78 20 24 72 eturn [lindex $r
6240: 65 6d 6f 74 65 73 65 72 76 65 72 20 31 5d 0a 09 emoteserver 1]..
6250: 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 65 72 72 } else { err
6260: 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e 20 25 73 or [_ "Error. %s
6270: 5c 6e 41 63 74 69 76 65 20 70 72 6f 67 72 61 6d \nActive program
6280: 73 3a 20 25 73 22 20 24 75 73 61 67 65 73 74 72 s: %s" $usagestr
6290: 69 6e 67 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 ing [array names
62a0: 20 73 65 72 76 69 63 65 73 5d 5d 20 7d 0a 09 7d services]] }..}
62b0: 0a 0a 09 69 66 20 7b 20 5b 61 75 74 6f 5f 65 78 ...if { [auto_ex
62c0: 65 63 6f 6b 20 67 64 62 5d 20 3d 3d 20 22 22 20 ecok gdb] == ""
62d0: 7d 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c } {.. variabl
62e0: 65 20 74 65 78 74 0a 09 20 20 20 20 69 66 20 7b e text.. if {
62f0: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 [info exists te
6300: 78 74 5d 20 26 26 20 5b 77 69 6e 66 6f 20 65 78 xt] && [winfo ex
6310: 69 73 74 73 20 24 74 65 78 74 5d 20 7d 20 7b 0a ists $text] } {.
6320: 09 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c 6f ..set ret [Dialo
6330: 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f 78 gWin::messageBox
6340: 20 2d 64 65 66 61 75 6c 74 20 79 65 73 20 2d 69 -default yes -i
6350: 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d 6d 65 con question -me
6360: 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20 20 20 ssage \...
6370: 20 20 20 20 20 20 20 5b 5f 20 22 43 6f 75 6c 64 [_ "Could
6380: 20 6e 6f 74 20 66 69 6e 64 20 63 6f 6d 6d 61 6e not find comman
6390: 64 20 27 67 64 62 27 2e 20 44 6f 20 79 6f 75 20 d 'gdb'. Do you
63a0: 77 61 6e 74 20 74 6f 20 73 65 65 20 74 68 65 20 want to see the
63b0: 68 65 6c 70 3f 22 5d 20 2d 70 61 72 65 6e 74 20 help?"] -parent
63c0: 24 74 65 78 74 53 54 20 5c 0a 09 09 20 20 20 20 $textST \...
63d0: 20 20 20 20 20 20 20 20 20 2d 74 69 74 6c 65 20 -title
63e0: 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 6e 6f 74 20 [_ "Command not
63f0: 66 6f 75 6e 64 22 5d 20 2d 74 79 70 65 20 79 65 found"] -type ye
6400: 73 6e 6f 5d 0a 09 09 69 66 20 7b 20 24 72 65 74 sno]...if { $ret
6410: 20 3d 3d 20 22 79 65 73 22 20 7d 20 7b 0a 09 09 == "yes" } {...
6420: 20 20 20 20 56 69 65 77 48 65 6c 70 46 6f 72 57 ViewHelpForW
6430: 6f 72 64 20 22 44 65 62 75 67 67 69 6e 67 20 63 ord "Debugging c
6440: 2b 2b 22 0a 09 09 20 20 20 20 23 52 61 6d 44 65 ++"... #RamDe
6450: 62 75 67 67 65 72 3a 3a 56 69 65 77 48 65 6c 70 bugger::ViewHelp
6460: 46 69 6c 65 20 22 30 31 52 61 6d 44 65 62 75 67 File "01RamDebug
6470: 67 65 72 2f 52 61 6d 44 65 62 75 67 67 65 72 5f ger/RamDebugger_
6480: 31 32 2e 68 74 6d 6c 22 0a 09 09 7d 0a 09 09 72 12.html"...}...r
6490: 65 74 75 72 6e 0a 09 20 20 20 20 7d 20 65 6c 73 eturn.. } els
64a0: 65 20 7b 0a 09 09 65 72 72 6f 72 20 5b 5f 20 22 e {...error [_ "
64b0: 43 6f 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 63 Could not find c
64c0: 6f 6d 6d 61 6e 64 20 27 67 64 62 27 22 5d 0a 09 ommand 'gdb'"]..
64d0: 20 20 20 20 7d 0a 09 7d 0a 09 0a 09 69 66 20 7b }..}....if {
64e0: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 $remoteserverTy
64f0: 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 pe == "local" }
6500: 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 6c {.. catch { l
6510: 6f 63 61 6c 20 65 76 61 6c 20 64 65 73 74 72 6f ocal eval destro
6520: 79 20 2e 20 7d 0a 09 20 20 20 20 63 61 74 63 68 y . }.. catch
6530: 20 7b 20 69 6e 74 65 72 70 20 64 65 6c 65 74 65 { interp delete
6540: 20 6c 6f 63 61 6c 20 7d 0a 09 7d 20 65 6c 73 65 local }..} else
6550: 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 if { $remoteserv
6560: 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 erType == "gdb"
6570: 7d 20 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b } {.. catch {
6580: 0a 09 09 70 75 74 73 20 5b 6c 69 6e 64 65 78 20 ...puts [lindex
6590: 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 30 5d $remoteserver 0]
65a0: 20 71 75 69 74 0a 09 09 63 6c 6f 73 65 20 5b 6c quit...close [l
65b0: 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73 65 72 index $remoteser
65c0: 76 65 72 20 30 5d 0a 09 20 20 20 20 7d 0a 09 7d ver 0].. }..}
65d0: 0a 09 73 65 74 20 67 64 62 6c 6f 67 20 22 22 0a ..set gdblog "".
65e0: 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 .set remoteserve
65f0: 72 54 79 70 65 20 67 64 62 0a 09 23 20 20 20 20 rType gdb..#
6600: 20 20 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 if { $::tc
6610: 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 l_platform(platf
6620: 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 orm) == "windows
6630: 22 20 7d 20 7b 0a 09 23 20 20 20 20 20 20 20 20 " } {..#
6640: 20 20 20 20 20 20 73 65 74 20 63 61 74 20 5b 66 set cat [f
6650: 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 ile join $topdir
6660: 20 61 64 64 6f 6e 73 20 63 61 74 2e 65 78 65 5d addons cat.exe]
6670: 0a 09 23 20 20 20 20 20 20 20 20 20 20 7d 20 65 ..# } e
6680: 6c 73 65 20 7b 20 73 65 74 20 63 61 74 20 63 61 lse { set cat ca
6690: 74 20 7d 0a 09 73 65 74 20 64 69 72 20 5b 6c 69 t }..set dir [li
66a0: 6e 64 65 78 20 24 6f 70 74 73 28 70 72 6f 67 72 ndex $opts(progr
66b0: 61 6d 29 20 31 5d 0a 09 73 65 74 20 70 77 64 20 am) 1]..set pwd
66c0: 5b 70 77 64 5d 0a 09 69 66 20 7b 20 24 64 69 72 [pwd]..if { $dir
66d0: 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 ne "" } {..
66e0: 63 64 20 24 64 69 72 20 20 20 20 20 20 20 20 0a cd $dir .
66f0: 09 7d 0a 09 73 65 74 20 66 69 64 20 5b 6f 70 65 .}..set fid [ope
6700: 6e 20 22 7c 67 64 62 20 2d 71 20 7c 26 20 63 61 n "|gdb -q |& ca
6710: 74 22 20 72 2b 5d 0a 09 73 65 74 20 70 69 64 20 t" r+]..set pid
6720: 5b 6c 69 6e 64 65 78 20 5b 70 69 64 20 24 66 69 [lindex [pid $fi
6730: 64 5d 20 30 5d 0a 09 63 64 20 24 70 77 64 0a 09 d] 0]..cd $pwd..
6740: 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 set remoteserver
6750: 20 5b 6c 69 73 74 20 24 66 69 64 20 24 70 69 64 [list $fid $pid
6760: 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 20 $opts(program)
6770: 73 74 61 72 74 5d 0a 09 66 63 6f 6e 66 69 67 75 start]..fconfigu
6780: 72 65 20 24 66 69 64 20 2d 62 6c 6f 63 6b 69 6e re $fid -blockin
6790: 67 20 30 20 2d 62 75 66 66 65 72 69 6e 67 20 6c g 0 -buffering l
67a0: 69 6e 65 0a 09 66 69 6c 65 65 76 65 6e 74 20 24 ine..fileevent $
67b0: 66 69 64 20 72 65 61 64 61 62 6c 65 20 52 61 6d fid readable Ram
67c0: 44 65 62 75 67 67 65 72 3a 3a 52 65 63 65 69 76 Debugger::Receiv
67d0: 65 46 72 6f 6d 47 64 62 0a 09 54 61 6b 65 41 72 eFromGdb..TakeAr
67e0: 72 6f 77 4f 75 74 46 72 6f 6d 54 65 78 74 0a 20 rowOutFromText.
67f0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 } else {..if
6800: 7b 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 { $opts(program)
6810: 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 == "" } {..
6820: 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 if { $remoteserv
6830: 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 72 er != "" } {...r
6840: 65 74 75 72 6e 20 24 72 65 6d 6f 74 65 73 65 72 eturn $remoteser
6850: 76 65 72 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 ver.. } else
6860: 7b 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f { error [_ "Erro
6870: 72 2e 20 25 73 5c 6e 41 63 74 69 76 65 20 70 72 r. %s\nActive pr
6880: 6f 67 72 61 6d 73 3a 20 25 73 22 20 24 75 73 61 ograms: %s" $usa
6890: 67 65 73 74 72 69 6e 67 20 5b 61 72 72 61 79 20 gestring [array
68a0: 6e 61 6d 65 73 20 73 65 72 76 69 63 65 73 5d 5d names services]]
68b0: 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 6c 73 65 }..}..if { [lse
68c0: 61 72 63 68 20 2d 65 78 61 63 74 20 5b 61 72 72 arch -exact [arr
68d0: 61 79 20 6e 61 6d 65 73 20 73 65 72 76 69 63 65 ay names service
68e0: 73 5d 20 24 6f 70 74 73 28 70 72 6f 67 72 61 6d s] $opts(program
68f0: 29 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 )] == -1 } {..
6900: 20 20 46 69 6e 64 41 63 74 69 76 65 50 72 6f 67 FindActiveProg
6910: 72 61 6d 73 20 31 0a 09 7d 0a 09 69 66 20 7b 20 rams 1..}..if {
6920: 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 [lsearch -exact
6930: 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 73 65 72 [array names ser
6940: 76 69 63 65 73 5d 20 24 6f 70 74 73 28 70 72 6f vices] $opts(pro
6950: 67 72 61 6d 29 5d 20 21 3d 20 2d 31 20 7d 20 7b gram)] != -1 } {
6960: 0a 09 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65 .. set remote
6970: 73 65 72 76 65 72 20 24 6f 70 74 73 28 70 72 6f server $opts(pro
6980: 67 72 61 6d 29 0a 09 20 20 20 20 73 65 74 20 72 gram).. set r
6990: 65 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d 20 24 emoteserverNum $
69a0: 73 65 72 76 69 63 65 73 28 24 72 65 6d 6f 74 65 services($remote
69b0: 73 65 72 76 65 72 29 0a 09 7d 20 65 6c 73 65 20 server)..} else
69c0: 7b 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f { error [_ "Erro
69d0: 72 2e 20 25 73 5c 6e 41 63 74 69 76 65 20 70 72 r. %s\nActive pr
69e0: 6f 67 72 61 6d 73 3a 20 25 73 22 20 24 75 73 61 ograms: %s" $usa
69f0: 67 65 73 74 72 69 6e 67 20 5b 61 72 72 61 79 20 gestring [array
6a00: 6e 61 6d 65 73 20 73 65 72 76 69 63 65 73 5d 5d names services]]
6a10: 20 7d 0a 09 69 66 20 7b 20 24 72 65 6d 6f 74 65 }..if { $remote
6a20: 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6c serverType == "l
6a30: 6f 63 61 6c 22 20 7d 20 7b 0a 09 20 20 20 20 63 ocal" } {.. c
6a40: 61 74 63 68 20 7b 20 6c 6f 63 61 6c 20 65 76 61 atch { local eva
6a50: 6c 20 64 65 73 74 72 6f 79 20 2e 20 7d 0a 09 20 l destroy . }..
6a60: 20 20 20 63 61 74 63 68 20 7b 20 69 6e 74 65 72 catch { inter
6a70: 70 20 64 65 6c 65 74 65 20 6c 6f 63 61 6c 20 7d p delete local }
6a80: 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 72 65 ..} elseif { $re
6a90: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d moteserverType =
6aa0: 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 20 20 20 = "gdb" } {..
6ab0: 20 63 61 74 63 68 20 7b 0a 09 09 70 75 74 73 20 catch {...puts
6ac0: 5b 6c 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73 [lindex $remotes
6ad0: 65 72 76 65 72 20 30 5d 20 71 75 69 74 0a 09 09 erver 0] quit...
6ae0: 63 6c 6f 73 65 20 5b 6c 69 6e 64 65 78 20 24 72 close [lindex $r
6af0: 65 6d 6f 74 65 73 65 72 76 65 72 20 30 5d 0a 09 emoteserver 0]..
6b00: 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 72 65 }..}..set re
6b10: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 72 moteserverType r
6b20: 65 6d 6f 74 65 0a 09 54 61 6b 65 41 72 72 6f 77 emote..TakeArrow
6b30: 4f 75 74 46 72 6f 6d 54 65 78 74 0a 20 20 20 20 OutFromText.
6b40: 7d 0a 0a 20 20 20 20 73 65 74 20 72 65 6d 6f 74 }.. set remot
6b50: 65 63 6f 6d 6d 20 7b 0a 09 6e 61 6d 65 73 70 61 ecomm {..namespa
6b60: 63 65 20 65 76 61 6c 20 52 44 43 20 7b 0a 09 20 ce eval RDC {..
6b70: 20 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 variable brea
6b80: 6b 73 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 ks.. variable
6b90: 20 74 72 61 63 65 73 20 22 22 0a 09 20 20 20 20 traces ""..
6ba0: 76 61 72 69 61 62 6c 65 20 74 72 61 63 65 64 5f variable traced_
6bb0: 76 61 72 69 61 62 6c 65 73 0a 09 20 20 20 20 76 variables.. v
6bc0: 61 72 69 61 62 6c 65 20 65 76 61 6c 68 61 6e 64 ariable evalhand
6bd0: 6c 65 72 20 22 22 0a 09 20 20 20 20 76 61 72 69 ler "".. vari
6be0: 61 62 6c 65 20 63 6f 64 65 20 22 22 0a 09 20 20 able code ""..
6bf0: 20 20 76 61 72 69 61 62 6c 65 20 73 74 6f 70 6e variable stopn
6c00: 65 78 74 20 30 0a 09 20 20 20 20 76 61 72 69 61 ext 0.. varia
6c10: 62 6c 65 20 63 6f 6e 74 74 6f 20 22 22 0a 09 20 ble contto ""..
6c20: 20 20 20 76 61 72 69 61 62 6c 65 20 6f 75 74 70 variable outp
6c30: 75 74 6c 69 6e 65 20 30 0a 09 20 20 20 20 76 61 utline 0.. va
6c40: 72 69 61 62 6c 65 20 6c 61 73 74 70 72 6f 63 73 riable lastprocs
6c50: 74 61 63 6b 20 22 22 0a 09 20 20 20 20 76 61 72 tack "".. var
6c60: 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
6c70: 65 20 22 22 0a 09 20 20 20 20 76 61 72 69 61 62 e "".. variab
6c80: 6c 65 20 6c 69 6e 65 63 6f 75 6e 74 65 72 20 30 le linecounter 0
6c90: 0a 09 7d 0a 09 70 72 6f 63 20 52 44 43 3a 3a 53 ..}..proc RDC::S
6ca0: 65 6e 64 44 65 76 20 7b 20 63 6f 6d 6d 20 7d 20 endDev { comm }
6cb0: 7b 0a 09 20 20 20 20 53 45 4e 44 44 45 56 42 4f {.. SENDDEVBO
6cc0: 44 59 0a 09 7d 0a 09 70 72 6f 63 20 52 44 43 3a DY..}..proc RDC:
6cd0: 3a 4d 65 61 73 75 72 65 54 69 6d 65 20 7b 20 6e :MeasureTime { n
6ce0: 61 6d 65 20 6c 65 76 65 6c 20 74 69 6d 65 73 74 ame level timest
6cf0: 72 20 7d 20 7b 0a 09 20 20 20 20 53 65 6e 64 44 r } {.. SendD
6d00: 65 76 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 ev [list RamDebu
6d10: 67 67 65 72 3a 3a 52 65 63 65 69 76 65 54 69 6d gger::ReceiveTim
6d20: 65 46 72 6f 6d 50 72 6f 67 72 61 6d 20 24 6e 61 eFromProgram $na
6d30: 6d 65 20 24 6c 65 76 65 6c 20 5b 6c 69 6e 64 65 me $level [linde
6d40: 78 20 24 74 69 6d 65 73 74 72 20 30 5d 5d 0a 09 x $timestr 0]]..
6d50: 7d 0a 09 70 72 6f 63 20 52 44 43 3a 3a 43 6f 6e }..proc RDC::Con
6d60: 74 69 6e 75 65 20 7b 7d 20 7b 0a 09 20 20 20 20 tinue {} {..
6d70: 73 65 74 20 3a 3a 52 44 43 3a 3a 63 6f 64 65 20 set ::RDC::code
6d80: 22 22 0a 09 7d 0a 09 70 72 6f 63 20 52 44 43 3a ""..}..proc RDC:
6d90: 3a 45 76 61 6c 20 7b 20 63 6f 6d 6d 20 7b 20 68 :Eval { comm { h
6da0: 61 6e 64 6c 65 72 20 22 22 20 7d 20 7d 20 7b 0a andler "" } } {.
6db0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 65 76 . variable ev
6dc0: 61 6c 68 61 6e 64 6c 65 72 20 24 68 61 6e 64 6c alhandler $handl
6dd0: 65 72 0a 09 20 20 20 20 73 65 74 20 3a 3a 52 44 er.. set ::RD
6de0: 43 3a 3a 63 6f 64 65 20 24 63 6f 6d 6d 0a 09 20 C::code $comm..
6df0: 20 20 20 75 70 64 61 74 65 0a 09 7d 0a 09 70 72 update..}..pr
6e00: 6f 63 20 52 44 43 3a 3a 47 65 74 4c 61 73 74 56 oc RDC::GetLastV
6e10: 69 73 69 74 65 64 20 7b 20 7d 20 7b 0a 09 20 20 isited { } {..
6e20: 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 0a variable data.
6e30: 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 . if { [info
6e40: 65 78 69 73 74 73 20 64 61 74 61 28 76 69 73 69 exists data(visi
6e50: 74 65 64 2c 66 69 6c 65 6e 75 6d 29 5d 20 7d 20 ted,filenum)] }
6e60: 7b 0a 09 09 72 65 74 75 72 6e 20 5b 6c 69 73 74 {...return [list
6e70: 20 24 64 61 74 61 28 76 69 73 69 74 65 64 2c 66 $data(visited,f
6e80: 69 6c 65 6e 75 6d 29 20 24 64 61 74 61 28 76 69 ilenum) $data(vi
6e90: 73 69 74 65 64 2c 6c 69 6e 65 29 5d 0a 09 20 20 sited,line)]..
6ea0: 20 20 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 72 } else { retur
6eb0: 6e 20 22 22 20 7d 0a 09 7d 0a 09 70 72 6f 63 20 n "" }..}..proc
6ec0: 52 44 43 3a 3a 46 20 7b 20 66 69 6c 65 6e 75 6d RDC::F { filenum
6ed0: 20 6c 69 6e 65 20 7d 20 7b 0a 09 20 20 20 20 76 line } {.. v
6ee0: 61 72 69 61 62 6c 65 20 63 6f 64 65 0a 09 20 20 ariable code..
6ef0: 20 20 76 61 72 69 61 62 6c 65 20 65 76 61 6c 68 variable evalh
6f00: 61 6e 64 6c 65 72 0a 09 20 20 20 20 23 20 3d 3d andler.. # ==
6f10: 20 31 20 6e 65 78 74 20 3b 20 3d 3d 20 32 20 73 1 next ; == 2 s
6f20: 74 65 70 20 3b 20 3d 3d 20 33 20 6e 65 78 74 66 tep ; == 3 nextf
6f30: 75 6c 6c 20 3b 20 3d 3d 20 34 20 6e 65 78 74 72 ull ; == 4 nextr
6f40: 65 74 75 72 6e 0a 09 20 20 20 20 76 61 72 69 61 eturn.. varia
6f50: 62 6c 65 20 73 74 6f 70 6e 65 78 74 0a 09 20 20 ble stopnext..
6f60: 20 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 74 variable contt
6f70: 6f 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 o.. variable
6f80: 62 72 65 61 6b 73 0a 09 20 20 20 20 76 61 72 69 breaks.. vari
6f90: 61 62 6c 65 20 74 72 61 63 65 73 0a 09 20 20 20 able traces..
6fa0: 20 76 61 72 69 61 62 6c 65 20 74 72 61 63 65 64 variable traced
6fb0: 5f 76 61 72 69 61 62 6c 65 73 0a 09 20 20 20 20 _variables..
6fc0: 76 61 72 69 61 62 6c 65 20 6f 75 74 70 75 74 6c variable outputl
6fd0: 69 6e 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c ine.. variabl
6fe0: 65 20 6c 61 73 74 70 72 6f 63 73 74 61 63 6b 0a e lastprocstack.
6ff0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 . variable li
7000: 6e 65 63 6f 75 6e 74 65 72 0a 0a 09 20 20 20 20 necounter...
7010: 76 61 72 69 61 62 6c 65 20 64 61 74 61 0a 09 20 variable data..
7020: 20 20 20 73 65 74 20 64 61 74 61 28 76 69 73 69 set data(visi
7030: 74 65 64 2c 66 69 6c 65 6e 75 6d 29 20 24 66 69 ted,filenum) $fi
7040: 6c 65 6e 75 6d 0a 09 20 20 20 20 73 65 74 20 64 lenum.. set d
7050: 61 74 61 28 76 69 73 69 74 65 64 2c 6c 69 6e 65 ata(visited,line
7060: 29 20 24 6c 69 6e 65 0a 09 20 20 20 20 0a 09 20 ) $line.. ..
7070: 20 20 20 73 65 74 20 70 72 6f 63 73 74 61 63 6b set procstack
7080: 20 22 22 0a 09 20 20 20 20 73 65 74 20 70 72 6f "".. set pro
7090: 63 6e 61 6d 65 20 22 22 0a 09 20 20 20 20 66 6f cname "".. fo
70a0: 72 20 7b 20 73 65 74 20 69 20 5b 65 78 70 72 20 r { set i [expr
70b0: 7b 5b 69 6e 66 6f 20 6c 65 76 65 6c 5d 2d 31 7d {[info level]-1}
70c0: 5d 20 7d 20 7b 20 24 69 20 3e 3d 20 31 20 7d 20 ] } { $i >= 1 }
70d0: 7b 20 69 6e 63 72 20 69 20 2d 31 20 7d 20 7b 0a { incr i -1 } {.
70e0: 09 09 73 65 74 20 70 72 6f 67 6e 61 6d 65 4c 20 ..set prognameL
70f0: 5b 6c 69 6e 64 65 78 20 5b 69 6e 66 6f 20 6c 65 [lindex [info le
7100: 76 65 6c 20 2d 24 69 5d 20 30 5d 0a 09 09 73 65 vel -$i] 0]...se
7110: 74 20 70 72 6f 63 6e 61 6d 65 4c 20 5b 75 70 6c t procnameL [upl
7120: 65 76 65 6c 20 24 69 20 5b 6c 69 73 74 20 6e 61 evel $i [list na
7130: 6d 65 73 70 61 63 65 20 77 68 69 63 68 20 2d 63 mespace which -c
7140: 6f 6d 6d 61 6e 64 20 24 70 72 6f 67 6e 61 6d 65 ommand $progname
7150: 4c 5d 5d 0a 09 09 6c 61 70 70 65 6e 64 20 70 72 L]]...lappend pr
7160: 6f 63 73 74 61 63 6b 20 24 70 72 6f 63 6e 61 6d ocstack $procnam
7170: 65 4c 0a 09 09 69 66 20 7b 20 24 69 20 3d 3d 20 eL...if { $i ==
7180: 31 20 7d 20 7b 20 73 65 74 20 70 72 6f 63 6e 61 1 } { set procna
7190: 6d 65 20 24 70 72 6f 63 6e 61 6d 65 4c 20 7d 0a me $procnameL }.
71a0: 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 . }.. set
71b0: 73 74 6f 70 20 30 0a 09 20 20 20 20 73 65 74 20 stop 0.. set
71c0: 62 72 65 61 6b 6e 75 6d 20 30 0a 09 20 20 20 20 breaknum 0..
71d0: 73 65 74 20 63 6f 6e 64 69 6e 66 6f 20 22 22 0a set condinfo "".
71e0: 09 20 20 20 20 73 65 74 20 6c 65 6e 20 5b 6c 6c . set len [ll
71f0: 65 6e 67 74 68 20 24 70 72 6f 63 73 74 61 63 6b ength $procstack
7200: 5d 0a 09 20 20 20 20 73 65 74 20 6c 61 73 74 6c ].. set lastl
7210: 65 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6c 61 73 en [llength $las
7220: 74 70 72 6f 63 73 74 61 63 6b 5d 0a 09 20 20 20 tprocstack]..
7230: 20 73 77 69 74 63 68 20 24 73 74 6f 70 6e 65 78 switch $stopnex
7240: 74 20 7b 0a 09 09 31 20 7b 0a 09 09 20 20 20 20 t {...1 {...
7250: 73 65 74 20 6c 6d 31 20 5b 65 78 70 72 20 7b 24 set lm1 [expr {$
7260: 6c 65 6e 2d 31 7d 5d 0a 09 09 20 20 20 20 69 66 len-1}]... if
7270: 20 7b 20 24 6c 65 6e 20 3c 3d 20 24 6c 61 73 74 { $len <= $last
7280: 6c 65 6e 20 26 26 20 24 70 72 6f 63 73 74 61 63 len && $procstac
7290: 6b 20 3d 3d 20 5b 6c 72 61 6e 67 65 20 24 6c 61 k == [lrange $la
72a0: 73 74 70 72 6f 63 73 74 61 63 6b 20 30 20 24 6c stprocstack 0 $l
72b0: 6d 31 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 m1] } {...
72c0: 20 20 73 65 74 20 73 74 6f 70 20 31 0a 09 09 20 set stop 1...
72d0: 20 20 20 7d 0a 09 09 7d 0a 09 09 32 20 7b 0a 09 }...}...2 {..
72e0: 09 20 20 20 20 69 66 20 7b 20 24 6c 65 6e 20 3c . if { $len <
72f0: 20 24 6c 61 73 74 6c 65 6e 20 7d 20 7b 20 73 65 $lastlen } { se
7300: 74 20 6c 6d 31 20 5b 65 78 70 72 20 7b 24 6c 65 t lm1 [expr {$le
7310: 6e 2d 31 7d 5d 0a 09 09 20 20 20 20 7d 20 65 6c n-1}]... } el
7320: 73 65 20 7b 20 73 65 74 20 6c 6d 31 20 5b 65 78 se { set lm1 [ex
7330: 70 72 20 7b 24 6c 61 73 74 6c 65 6e 2d 31 7d 5d pr {$lastlen-1}]
7340: 20 7d 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 6c }... if { [l
7350: 72 61 6e 67 65 20 24 70 72 6f 63 73 74 61 63 6b range $procstack
7360: 20 30 20 24 6c 6d 31 5d 20 3d 3d 20 5b 6c 72 61 0 $lm1] == [lra
7370: 6e 67 65 20 24 6c 61 73 74 70 72 6f 63 73 74 61 nge $lastprocsta
7380: 63 6b 20 30 20 24 6c 6d 31 5d 20 7d 20 7b 0a 09 ck 0 $lm1] } {..
7390: 09 20 20 20 20 20 20 20 20 73 65 74 20 73 74 6f . set sto
73a0: 70 20 31 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a p 1... }...}.
73b0: 09 09 33 20 7b 20 73 65 74 20 73 74 6f 70 20 31 ..3 { set stop 1
73c0: 20 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 }.. }.. i
73d0: 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 63 6f 6e f { [lindex $con
73e0: 74 74 6f 20 30 5d 20 3d 3d 20 24 66 69 6c 65 6e tto 0] == $filen
73f0: 75 6d 20 26 26 20 5b 6c 69 6e 64 65 78 20 24 63 um && [lindex $c
7400: 6f 6e 74 74 6f 20 31 5d 20 3d 3d 20 24 6c 69 6e ontto 1] == $lin
7410: 65 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 6c 65 e } {...if { $le
7420: 6e 20 3e 20 24 6c 61 73 74 6c 65 6e 20 26 26 20 n > $lastlen &&
7430: 5b 6c 69 6e 64 65 78 20 24 70 72 6f 63 73 74 61 [lindex $procsta
7440: 63 6b 20 65 6e 64 5d 20 65 71 20 5b 6c 69 6e 64 ck end] eq [lind
7450: 65 78 20 24 6c 61 73 74 70 72 6f 63 73 74 61 63 ex $lastprocstac
7460: 6b 20 65 6e 64 5d 20 7d 20 7b 0a 09 09 20 20 20 k end] } {...
7470: 20 23 20 6e 6f 74 68 69 6e 67 0a 09 09 7d 20 65 # nothing...} e
7480: 6c 73 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 lse {... set
7490: 73 74 6f 70 20 31 0a 09 09 20 20 20 20 73 65 74 stop 1... set
74a0: 20 63 6f 6e 74 74 6f 20 22 22 0a 09 09 7d 0a 09 contto ""...}..
74b0: 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 }.. if {
74c0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 62 72 65 [info exists bre
74d0: 61 6b 73 28 24 66 69 6c 65 6e 75 6d 2c 24 6c 69 aks($filenum,$li
74e0: 6e 65 29 5d 20 7d 20 7b 0a 09 09 73 65 74 20 62 ne)] } {...set b
74f0: 72 65 61 6b 6e 75 6d 20 5b 6c 69 6e 64 65 78 20 reaknum [lindex
7500: 24 62 72 65 61 6b 73 28 24 66 69 6c 65 6e 75 6d $breaks($filenum
7510: 2c 24 6c 69 6e 65 29 20 30 5d 0a 09 09 73 65 74 ,$line) 0]...set
7520: 20 63 6f 6e 64 20 5b 6c 69 6e 64 65 78 20 24 62 cond [lindex $b
7530: 72 65 61 6b 73 28 24 66 69 6c 65 6e 75 6d 2c 24 reaks($filenum,$
7540: 6c 69 6e 65 29 20 31 5d 0a 09 09 69 66 20 7b 20 line) 1]...if {
7550: 24 63 6f 6e 64 20 3d 3d 20 22 22 20 7d 20 7b 0a $cond == "" } {.
7560: 09 09 20 20 20 20 73 65 74 20 73 74 6f 70 20 31 .. set stop 1
7570: 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 ...} else {...
7580: 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 set err [catch
7590: 20 5b 6c 69 73 74 20 75 70 6c 65 76 65 6c 20 31 [list uplevel 1
75a0: 20 5b 6c 69 73 74 20 65 78 70 72 20 24 63 6f 6e [list expr $con
75b0: 64 5d 5d 20 63 6f 6e 64 69 6e 66 6f 5d 0a 09 09 d]] condinfo]...
75c0: 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7c 7c if { $err ||
75d0: 20 24 63 6f 6e 64 69 6e 66 6f 20 21 3d 20 30 20 $condinfo != 0
75e0: 7d 20 7b 20 73 65 74 20 73 74 6f 70 20 31 20 7d } { set stop 1 }
75f0: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 ...}.. }..
7600: 20 66 6f 72 65 61 63 68 20 74 72 61 63 65 20 24 foreach trace $
7610: 74 72 61 63 65 73 20 7b 0a 09 09 73 65 74 20 63 traces {...set c
7620: 6f 6e 64 20 5b 6c 69 6e 64 65 78 20 24 74 72 61 ond [lindex $tra
7630: 63 65 20 31 5d 0a 09 09 69 66 20 7b 20 5b 72 65 ce 1]...if { [re
7640: 67 65 78 70 20 7b 5e 5c 73 2a 76 61 72 69 61 62 gexp {^\s*variab
7650: 6c 65 5c 73 2b 28 2e 2a 29 7d 20 24 63 6f 6e 64 le\s+(.*)} $cond
7660: 20 7b 7d 20 76 61 72 6e 61 6d 65 5d 20 7d 20 7b {} varname] } {
7670: 0a 09 09 20 20 20 20 73 65 74 20 62 72 65 61 6b ... set break
7680: 6e 75 6d 20 5b 6c 69 6e 64 65 78 20 24 74 72 61 num [lindex $tra
7690: 63 65 20 30 5d 0a 09 09 20 20 20 20 73 65 74 20 ce 0]... set
76a0: 65 78 69 73 74 73 20 5b 75 70 6c 65 76 65 6c 20 exists [uplevel
76b0: 31 20 5b 6c 69 73 74 20 69 6e 66 6f 20 65 78 69 1 [list info exi
76c0: 73 74 73 20 24 76 61 72 6e 61 6d 65 5d 5d 0a 09 sts $varname]]..
76d0: 09 20 20 20 20 73 65 74 20 65 78 69 73 74 65 64 . set existed
76e0: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 72 [info exists tr
76f0: 61 63 65 64 5f 76 61 72 69 61 62 6c 65 73 28 24 aced_variables($
7700: 76 61 72 6e 61 6d 65 29 5d 0a 09 09 20 20 20 20 varname)]...
7710: 69 66 20 7b 20 24 65 78 69 73 74 73 20 7d 20 7b if { $exists } {
7720: 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 76 ... set v
7730: 20 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 [uplevel 1 [lis
7740: 74 20 73 65 74 20 24 76 61 72 6e 61 6d 65 5d 5d t set $varname]]
7750: 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 ... if {
7760: 21 24 65 78 69 73 74 65 64 20 7d 20 7b 0a 09 09 !$existed } {...
7770: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
7780: 74 72 61 63 65 64 5f 76 61 72 69 61 62 6c 65 73 traced_variables
7790: 28 24 76 61 72 6e 61 6d 65 29 20 24 76 0a 09 09 ($varname) $v...
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
77b0: 63 6f 6e 64 69 6e 66 6f 20 22 76 61 72 69 61 62 condinfo "variab
77c0: 6c 65 20 27 24 76 61 72 6e 61 6d 65 27 20 68 61 le '$varname' ha
77d0: 73 20 62 65 65 6e 20 63 72 65 61 74 65 64 22 0a s been created".
77e0: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 73 65 .. se
77f0: 74 20 73 74 6f 70 20 31 0a 09 09 20 20 20 20 20 t stop 1...
7800: 20 20 20 20 20 20 20 62 72 65 61 6b 0a 09 09 20 break...
7810: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
7820: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 73 65 .. se
7830: 74 20 6f 6c 64 5f 76 20 24 74 72 61 63 65 64 5f t old_v $traced_
7840: 76 61 72 69 61 62 6c 65 73 28 24 76 61 72 6e 61 variables($varna
7850: 6d 65 29 0a 09 09 20 20 20 20 20 20 20 20 20 20 me)...
7860: 20 20 73 65 74 20 74 72 61 63 65 64 5f 76 61 72 set traced_var
7870: 69 61 62 6c 65 73 28 24 76 61 72 6e 61 6d 65 29 iables($varname)
7880: 20 24 76 0a 09 09 20 20 20 20 20 20 20 20 20 20 $v...
7890: 20 20 69 66 20 7b 20 24 76 20 21 3d 20 24 6f 6c if { $v != $ol
78a0: 64 5f 76 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 d_v } {...
78b0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63 6f set co
78c0: 6e 64 69 6e 66 6f 20 22 76 61 72 69 61 62 6c 65 ndinfo "variable
78d0: 20 27 24 76 61 72 6e 61 6d 65 27 20 68 61 73 20 '$varname' has
78e0: 63 68 61 6e 67 65 64 20 76 61 6c 75 65 20 74 6f changed value to
78f0: 20 27 24 76 27 22 0a 09 09 20 20 20 20 20 20 20 '$v'"...
7900: 20 20 20 20 20 20 20 20 20 73 65 74 20 73 74 6f set sto
7910: 70 20 31 0a 09 09 20 20 20 20 20 20 20 20 20 20 p 1...
7920: 20 20 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20 break...
7930: 20 20 20 20 20 20 20 20 20 20 7d 0a 09 09 20 20 }...
7940: 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 20 }... }
7950: 65 6c 73 65 69 66 20 7b 20 24 65 78 69 73 74 65 elseif { $existe
7960: 64 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 d } {...
7970: 75 6e 73 65 74 20 74 72 61 63 65 64 5f 76 61 72 unset traced_var
7980: 69 61 62 6c 65 73 28 24 76 61 72 6e 61 6d 65 29 iables($varname)
7990: 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 63 ... set c
79a0: 6f 6e 64 69 6e 66 6f 20 22 76 61 72 69 61 62 6c ondinfo "variabl
79b0: 65 20 27 24 76 61 72 6e 61 6d 65 27 20 68 61 73 e '$varname' has
79c0: 20 62 65 65 6e 20 64 65 6c 65 74 65 64 22 0a 09 been deleted"..
79d0: 09 20 20 20 20 20 20 20 20 73 65 74 20 73 74 6f . set sto
79e0: 70 20 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 p 1... br
79f0: 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d 20 eak... }...}
7a00: 65 6c 73 65 69 66 20 7b 20 24 63 6f 6e 64 20 6e elseif { $cond n
7a10: 65 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 e "" } {... s
7a20: 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 5b 6c et err [catch [l
7a30: 69 73 74 20 75 70 6c 65 76 65 6c 20 31 20 5b 6c ist uplevel 1 [l
7a40: 69 73 74 20 65 78 70 72 20 24 63 6f 6e 64 5d 5d ist expr $cond]]
7a50: 20 63 6f 6e 64 69 6e 66 6f 5d 0a 09 09 20 20 20 condinfo]...
7a60: 20 69 66 20 7b 20 24 65 72 72 20 7c 7c 20 24 63 if { $err || $c
7a70: 6f 6e 64 69 6e 66 6f 20 21 3d 20 30 20 7d 20 7b ondinfo != 0 } {
7a80: 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 ... if {
7a90: 21 24 65 72 72 20 7d 20 7b 0a 09 09 20 20 20 20 !$err } {...
7aa0: 20 20 20 20 20 20 20 20 73 65 74 20 63 6f 6e 64 set cond
7ab0: 69 6e 66 6f 20 22 24 63 6f 6e 64 20 3d 20 24 63 info "$cond = $c
7ac0: 6f 6e 64 69 6e 66 6f 22 0a 09 09 20 20 20 20 20 ondinfo"...
7ad0: 20 20 20 7d 0a 09 09 20 20 20 20 20 20 20 20 73 }... s
7ae0: 65 74 20 62 72 65 61 6b 6e 75 6d 20 5b 6c 69 6e et breaknum [lin
7af0: 64 65 78 20 24 74 72 61 63 65 20 30 5d 0a 09 09 dex $trace 0]...
7b00: 20 20 20 20 20 20 20 20 73 65 74 20 73 74 6f 70 set stop
7b10: 20 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 1... bre
7b20: 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d 20 65 ak... }...} e
7b30: 6c 73 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 lse {... set
7b40: 73 74 6f 70 20 31 0a 09 09 20 20 20 20 62 72 65 stop 1... bre
7b50: 61 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 ak...}.. }..
7b60: 20 20 20 69 6e 63 72 20 6c 69 6e 65 63 6f 75 6e incr linecoun
7b70: 74 65 72 0a 09 20 20 20 20 69 66 20 7b 20 24 6c ter.. if { $l
7b80: 69 6e 65 63 6f 75 6e 74 65 72 20 3e 3d 20 35 30 inecounter >= 50
7b90: 30 20 7d 20 7b 0a 09 09 52 44 43 3a 3a 53 65 6e 0 } {...RDC::Sen
7ba0: 64 44 65 76 20 75 70 64 61 74 65 0a 09 09 73 65 dDev update...se
7bb0: 74 20 6c 69 6e 65 63 6f 75 6e 74 65 72 20 30 0a t linecounter 0.
7bc0: 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b . }.. if {
7bd0: 20 21 24 73 74 6f 70 20 7d 20 7b 0a 09 09 69 66 !$stop } {...if
7be0: 20 7b 20 24 6f 75 74 70 75 74 6c 69 6e 65 20 7d { $outputline }
7bf0: 20 7b 0a 09 09 20 20 20 20 73 65 74 20 70 72 6f {... set pro
7c00: 63 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20 5b 69 cname [lindex [i
7c10: 6e 66 6f 20 6c 65 76 65 6c 20 2d 31 5d 20 30 5d nfo level -1] 0]
7c20: 0a 09 09 20 20 20 20 53 65 6e 64 44 65 76 20 5b ... SendDev [
7c30: 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
7c40: 3a 3a 52 65 63 65 69 76 65 46 72 6f 6d 50 72 6f ::ReceiveFromPro
7c50: 67 72 61 6d 20 6f 75 74 70 75 74 20 5c 0a 09 09 gram output \...
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7c70: 20 24 66 69 6c 65 6e 75 6d 20 24 6c 69 6e 65 20 $filenum $line
7c80: 24 70 72 6f 63 6e 61 6d 65 20 22 22 20 22 22 5d $procname "" ""]
7c90: 0a 09 09 20 20 20 20 0a 09 09 7d 0a 09 09 72 65 ... ...}...re
7ca0: 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 turn.. }..
7cb0: 20 73 65 74 20 6c 61 73 74 70 72 6f 63 73 74 61 set lastprocsta
7cc0: 63 6b 20 24 70 72 6f 63 73 74 61 63 6b 0a 09 20 ck $procstack..
7cd0: 20 20 20 73 65 74 20 74 65 78 74 6c 69 6e 65 20 set textline
7ce0: 22 22 0a 09 20 20 20 20 73 65 74 20 63 6f 64 65 "".. set code
7cf0: 20 22 22 0a 09 20 20 20 20 73 65 74 20 3a 3a 52 "".. set ::R
7d00: 44 43 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 24 3a DC::errorInfo $:
7d10: 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 20 20 20 20 :errorInfo..
7d20: 73 65 74 20 3a 3a 52 44 43 3a 3a 65 72 72 20 5b set ::RDC::err [
7d30: 63 61 74 63 68 20 7b 0a 09 09 72 65 67 65 78 70 catch {...regexp
7d40: 20 22 52 44 43 3a 3a 46 5c 5c 73 2b 24 66 69 6c "RDC::F\\s+$fil
7d50: 65 6e 75 6d 2b 5c 5c 73 2b 24 6c 69 6e 65 5c 5c enum+\\s+$line\\
7d60: 73 2b 3b 20 28 5c 5b 5e 5c 6e 5d 2a 29 22 20 5b s+; (\[^\n]*)" [
7d70: 69 6e 66 6f 20 62 6f 64 79 20 24 70 72 6f 63 6e info body $procn
7d80: 61 6d 65 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 20 ame] {} \...
7d90: 71 74 65 78 74 6c 69 6e 65 0a 09 20 20 20 20 7d qtextline.. }
7da0: 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 3a 3a 52 ].. if { $::R
7db0: 44 43 3a 3a 65 72 72 20 7d 20 7b 20 73 65 74 20 DC::err } { set
7dc0: 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 24 3a 3a 52 ::errorInfo $::R
7dd0: 44 43 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 7d 0a DC::errorInfo }.
7de0: 0a 09 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 .. RDC::SendD
7df0: 65 76 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 ev [list RamDebu
7e00: 67 67 65 72 3a 3a 52 65 63 65 69 76 65 46 72 6f gger::ReceiveFro
7e10: 6d 50 72 6f 67 72 61 6d 20 24 62 72 65 61 6b 6e mProgram $breakn
7e20: 75 6d 20 24 66 69 6c 65 6e 75 6d 20 5c 0a 09 09 um $filenum \...
7e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6c $l
7e40: 69 6e 65 20 24 70 72 6f 63 6e 61 6d 65 20 24 74 ine $procname $t
7e50: 65 78 74 6c 69 6e 65 20 24 63 6f 6e 64 69 6e 66 extline $condinf
7e60: 6f 5d 0a 09 20 20 20 20 77 68 69 6c 65 20 31 20 o].. while 1
7e70: 7b 0a 09 09 69 66 20 7b 20 24 63 6f 64 65 20 3d {...if { $code =
7e80: 3d 20 22 22 20 7d 20 7b 20 76 77 61 69 74 20 3a = "" } { vwait :
7e90: 3a 52 44 43 3a 3a 63 6f 64 65 20 7d 0a 09 09 69 :RDC::code }...i
7ea0: 66 20 7b 20 24 63 6f 64 65 20 3d 3d 20 22 22 20 f { $code == ""
7eb0: 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 24 } {... if { $
7ec0: 73 74 6f 70 6e 65 78 74 20 3d 3d 20 34 20 7d 20 stopnext == 4 }
7ed0: 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 20 {... set
7ee0: 73 74 6f 70 6e 65 78 74 20 33 0a 09 09 20 20 20 stopnext 3...
7ef0: 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 6f 64 return -cod
7f00: 65 20 72 65 74 75 72 6e 0a 09 09 20 20 20 20 7d e return... }
7f10: 0a 09 09 20 20 20 20 72 65 74 75 72 6e 0a 09 09 ... return...
7f20: 7d 0a 09 09 73 65 74 20 65 72 72 20 5b 63 61 74 }...set err [cat
7f30: 63 68 20 7b 20 75 70 6c 65 76 65 6c 20 31 20 24 ch { uplevel 1 $
7f40: 63 6f 64 65 20 7d 20 72 65 74 75 72 6e 76 61 6c code } returnval
7f50: 75 65 5d 0a 09 09 73 65 74 20 63 6f 64 65 20 22 ue]...set code "
7f60: 22 0a 09 09 69 66 20 7b 20 24 65 76 61 6c 68 61 "...if { $evalha
7f70: 6e 64 6c 65 72 20 21 3d 20 22 22 20 7d 20 7b 0a ndler != "" } {.
7f80: 09 09 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 .. RDC::SendD
7f90: 65 76 20 22 24 65 76 61 6c 68 61 6e 64 6c 65 72 ev "$evalhandler
7fa0: 20 5b 6c 69 73 74 20 5b 6c 69 73 74 20 24 65 72 [list [list $er
7fb0: 72 20 24 72 65 74 75 72 6e 76 61 6c 75 65 5d 5d r $returnvalue]]
7fc0: 22 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 "...} else {...
7fd0: 20 20 20 52 44 43 3a 3a 53 65 6e 64 44 65 76 20 RDC::SendDev
7fe0: 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
7ff0: 72 3a 3a 52 65 63 65 69 76 65 46 72 6f 6d 50 72 r::ReceiveFromPr
8000: 6f 67 72 61 6d 45 78 70 72 20 24 65 72 72 20 24 ogramExpr $err $
8010: 72 65 74 75 72 6e 76 61 6c 75 65 5d 0a 09 09 7d returnvalue]...}
8020: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b .. }..}..if {
8030: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 [info commands
8040: 3a 3a 52 44 43 3a 3a 62 67 65 72 72 6f 72 5f 62 ::RDC::bgerror_b
8050: 61 73 65 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 ase] == "" } {..
8060: 20 20 20 20 63 61 74 63 68 20 7b 20 61 75 74 6f catch { auto
8070: 5f 69 6d 70 6f 72 74 20 3a 3a 62 67 65 72 72 6f _import ::bgerro
8080: 72 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b 69 r }.. if { [i
8090: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a 62 nfo commands ::b
80a0: 67 65 72 72 6f 72 5d 20 21 3d 20 22 22 20 7d 20 gerror] != "" }
80b0: 7b 0a 09 09 72 65 6e 61 6d 65 20 3a 3a 62 67 65 {...rename ::bge
80c0: 72 72 6f 72 20 3a 3a 52 44 43 3a 3a 62 67 65 72 rror ::RDC::bger
80d0: 72 6f 72 5f 62 61 73 65 0a 09 20 20 20 20 7d 0a ror_base.. }.
80e0: 09 20 20 20 20 70 72 6f 63 20 3a 3a 62 67 65 72 . proc ::bger
80f0: 72 6f 72 20 65 72 72 20 7b 0a 09 09 52 44 43 3a ror err {...RDC:
8100: 3a 53 65 6e 64 44 65 76 20 5b 6c 69 73 74 20 52 :SendDev [list R
8110: 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 63 65 amDebugger::Rece
8120: 69 76 65 45 72 72 6f 72 46 72 6f 6d 50 72 6f 67 iveErrorFromProg
8130: 72 61 6d 20 24 65 72 72 20 24 3a 3a 65 72 72 6f ram $err $::erro
8140: 72 49 6e 66 6f 5d 0a 09 20 20 20 20 7d 0a 09 7d rInfo].. }..}
8150: 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d ..if { [info com
8160: 6d 61 6e 64 73 20 3a 3a 52 44 43 3a 3a 70 75 74 mands ::RDC::put
8170: 73 5f 62 61 73 65 5d 20 3d 3d 20 22 22 20 7d 20 s_base] == "" }
8180: 7b 0a 09 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a {.. rename ::
8190: 70 75 74 73 20 3a 3a 52 44 43 3a 3a 70 75 74 73 puts ::RDC::puts
81a0: 5f 62 61 73 65 0a 09 20 20 20 20 70 72 6f 63 20 _base.. proc
81b0: 3a 3a 70 75 74 73 20 61 72 67 73 20 7b 0a 09 09 ::puts args {...
81c0: 73 65 74 20 61 72 67 73 4e 20 24 61 72 67 73 0a set argsN $args.
81d0: 09 09 73 65 74 20 68 61 73 6e 65 77 6c 69 6e 65 ..set hasnewline
81e0: 20 31 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65 1...if { [linde
81f0: 78 20 24 61 72 67 73 4e 20 30 5d 20 3d 3d 20 22 x $argsN 0] == "
8200: 2d 6e 6f 6e 65 77 6c 69 6e 65 22 20 7d 20 7b 0a -nonewline" } {.
8210: 09 09 20 20 20 20 73 65 74 20 68 61 73 6e 65 77 .. set hasnew
8220: 6c 69 6e 65 20 30 0a 09 09 20 20 20 20 73 65 74 line 0... set
8230: 20 61 72 67 73 4e 20 5b 6c 72 61 6e 67 65 20 24 argsN [lrange $
8240: 61 72 67 73 4e 20 31 20 65 6e 64 5d 0a 09 09 7d argsN 1 end]...}
8250: 0a 09 09 73 65 74 20 63 68 61 6e 6e 65 6c 49 64 ...set channelId
8260: 20 73 74 64 6f 75 74 0a 09 09 69 66 20 7b 20 5b stdout...if { [
8270: 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 4e 5d 20 llength $argsN]
8280: 3d 3d 20 32 20 7d 20 7b 0a 09 09 20 20 20 20 73 == 2 } {... s
8290: 65 74 20 63 68 61 6e 6e 65 6c 49 64 20 5b 6c 69 et channelId [li
82a0: 6e 64 65 78 20 24 61 72 67 73 4e 20 30 5d 0a 09 ndex $argsN 0]..
82b0: 09 20 20 20 20 73 65 74 20 61 72 67 73 4e 20 5b . set argsN [
82c0: 6c 72 61 6e 67 65 20 24 61 72 67 73 4e 20 31 20 lrange $argsN 1
82d0: 65 6e 64 5d 0a 09 09 7d 0a 09 09 69 66 20 7b 20 end]...}...if {
82e0: 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 4e 5d [llength $argsN]
82f0: 20 3d 3d 20 31 20 26 26 20 5b 72 65 67 65 78 70 == 1 && [regexp
8300: 20 7b 73 74 64 6f 75 74 7c 73 74 64 65 72 72 7d {stdout|stderr}
8310: 20 24 63 68 61 6e 6e 65 6c 49 64 5d 20 7d 20 7b $channelId] } {
8320: 0a 09 09 20 20 20 20 52 44 43 3a 3a 53 65 6e 64 ... RDC::Send
8330: 44 65 76 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 Dev [list RamDeb
8340: 75 67 67 65 72 3a 3a 52 65 63 65 69 76 65 4f 75 ugger::ReceiveOu
8350: 74 70 75 74 46 72 6f 6d 50 72 6f 67 72 61 6d 20 tputFromProgram
8360: 24 63 68 61 6e 6e 65 6c 49 64 20 5c 0a 09 09 20 $channelId \...
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8380: 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 24 61 72 [lindex $ar
8390: 67 73 4e 20 30 5d 20 24 68 61 73 6e 65 77 6c 69 gsN 0] $hasnewli
83a0: 6e 65 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 ne]...} else {..
83b0: 09 20 20 20 20 65 76 61 6c 20 3a 3a 52 44 43 3a . eval ::RDC:
83c0: 3a 70 75 74 73 5f 62 61 73 65 20 24 61 72 67 73 :puts_base $args
83d0: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 ...}.. }..}..
83e0: 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 if { [info comma
83f0: 6e 64 73 20 3a 3a 52 44 43 3a 3a 69 6e 66 6f 70 nds ::RDC::infop
8400: 72 6f 63 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 roc] == "" } {..
8410: 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 69 6e 66 rename ::inf
8420: 6f 20 3a 3a 52 44 43 3a 3a 69 6e 66 6f 70 72 6f o ::RDC::infopro
8430: 63 0a 09 20 20 20 20 70 72 6f 63 20 3a 3a 69 6e c.. proc ::in
8440: 66 6f 20 7b 20 61 72 67 73 20 7d 20 7b 0a 09 09 fo { args } {...
8450: 73 65 74 20 72 65 74 76 61 6c 20 5b 75 70 6c 65 set retval [uple
8460: 76 65 6c 20 31 20 3a 3a 52 44 43 3a 3a 69 6e 66 vel 1 ::RDC::inf
8470: 6f 70 72 6f 63 20 24 61 72 67 73 5d 0a 09 09 69 oproc $args]...i
8480: 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 f { [lindex $arg
8490: 73 20 30 5d 20 3d 3d 20 22 73 63 72 69 70 74 22 s 0] == "script"
84a0: 20 26 26 20 24 72 65 74 76 61 6c 20 3d 3d 20 22 && $retval == "
84b0: 22 20 7d 20 7b 0a 09 09 20 20 20 20 72 65 74 75 " } {... retu
84c0: 72 6e 20 24 3a 3a 52 44 43 3a 3a 63 75 72 72 65 rn $::RDC::curre
84d0: 6e 74 66 69 6c 65 0a 09 09 7d 0a 09 09 72 65 74 ntfile...}...ret
84e0: 75 72 6e 20 24 72 65 74 76 61 6c 0a 09 20 20 20 urn $retval..
84f0: 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e 66 }..}..if { [inf
8500: 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a 52 44 43 o commands ::RDC
8510: 3a 3a 73 6f 75 72 63 65 70 72 6f 63 5d 20 3d 3d ::sourceproc] ==
8520: 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 72 65 6e "" } {.. ren
8530: 61 6d 65 20 3a 3a 73 6f 75 72 63 65 20 3a 3a 52 ame ::source ::R
8540: 44 43 3a 3a 73 6f 75 72 63 65 70 72 6f 63 0a 09 DC::sourceproc..
8550: 20 20 20 20 70 72 6f 63 20 3a 3a 73 6f 75 72 63 proc ::sourc
8560: 65 20 7b 20 61 72 67 73 20 7d 20 7b 0a 09 09 73 e { args } {...s
8570: 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f et file [file jo
8580: 69 6e 20 5b 70 77 64 5d 20 5b 6c 69 6e 64 65 78 in [pwd] [lindex
8590: 20 24 61 72 67 73 20 65 6e 64 5d 5d 0a 09 09 73 $args end]]...s
85a0: 65 74 20 61 72 67 73 20 5b 6c 72 65 70 6c 61 63 et args [lreplac
85b0: 65 20 24 61 72 67 73 20 65 6e 64 20 65 6e 64 20 e $args end end
85c0: 24 66 69 6c 65 5d 0a 0a 09 09 73 65 74 20 72 65 $file]....set re
85d0: 74 76 61 6c 20 5b 52 44 43 3a 3a 53 65 6e 64 44 tval [RDC::SendD
85e0: 65 76 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a ev "RamDebugger:
85f0: 3a 52 65 63 65 69 76 65 46 72 6f 6d 50 72 6f 67 :ReceiveFromProg
8600: 72 61 6d 53 6f 75 72 63 65 20 24 61 72 67 73 22 ramSource $args"
8610: 5d 0a 09 09 69 66 20 7b 20 24 72 65 74 76 61 6c ]...if { $retval
8620: 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 != "" } {...
8630: 20 69 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d if { ![string m
8640: 61 74 63 68 20 22 3a 3a 52 44 43 3a 3a 73 6f 75 atch "::RDC::sou
8650: 72 63 65 70 72 6f 63 2a 22 20 24 72 65 74 76 61 rceproc*" $retva
8660: 6c 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 l] } {...
8670: 20 73 65 74 20 6f 6c 64 66 69 6c 65 20 5b 69 6e set oldfile [in
8680: 66 6f 20 73 63 72 69 70 74 5d 0a 09 09 20 20 20 fo script]...
8690: 20 20 20 20 20 23 20 63 61 74 63 68 20 69 73 20 # catch is
86a0: 68 65 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e here for version
86b0: 20 38 2e 33 0a 09 09 20 20 20 20 20 20 20 20 63 8.3... c
86c0: 61 74 63 68 20 7b 20 69 6e 66 6f 20 73 63 72 69 atch { info scri
86d0: 70 74 20 24 66 69 6c 65 20 7d 0a 09 09 20 20 20 pt $file }...
86e0: 20 7d 0a 09 09 20 20 20 20 75 70 6c 65 76 65 6c }... uplevel
86f0: 20 31 20 24 72 65 74 76 61 6c 0a 09 09 20 20 20 1 $retval...
8700: 20 69 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d if { ![string m
8710: 61 74 63 68 20 22 3a 3a 52 44 43 3a 3a 73 6f 75 atch "::RDC::sou
8720: 72 63 65 70 72 6f 63 2a 22 20 24 72 65 74 76 61 rceproc*" $retva
8730: 6c 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 l] } {...
8740: 20 23 20 63 61 74 63 68 20 69 73 20 68 65 72 65 # catch is here
8750: 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 38 2e 33 for version 8.3
8760: 0a 09 09 20 20 20 20 20 20 20 20 63 61 74 63 68 ... catch
8770: 20 7b 20 69 6e 66 6f 20 73 63 72 69 70 74 20 24 { info script $
8780: 6f 6c 64 66 69 6c 65 20 7d 0a 09 09 20 20 20 20 oldfile }...
8790: 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 }...}.. }..
87a0: 20 20 61 72 72 61 79 20 75 6e 73 65 74 20 74 72 array unset tr
87b0: 61 63 65 64 5f 76 61 72 69 61 62 6c 65 73 0a 09 aced_variables..
87c0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b }. }. if {
87d0: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 $remoteserverTy
87e0: 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 pe == "local" }
87f0: 7b 0a 09 73 65 74 20 72 65 6d 6f 74 65 63 6f 6d {..set remotecom
8800: 6d 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c m [string map [l
8810: 69 73 74 20 53 45 4e 44 44 45 56 42 4f 44 59 20 ist SENDDEVBODY
8820: 22 73 65 6e 64 6d 61 73 74 65 72 20 5c 24 63 6f "sendmaster \$co
8830: 6d 6d 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 mm"] \...
8840: 20 20 20 20 20 24 72 65 6d 6f 74 65 63 6f 6d 6d $remotecomm
8850: 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b ]. } elseif {
8860: 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 $remoteserverTy
8870: 70 65 20 3d 3d 20 22 6d 61 73 74 65 72 22 20 7d pe == "master" }
8880: 20 7b 0a 09 73 65 74 20 72 65 6d 6f 74 65 63 6f {..set remoteco
8890: 6d 6d 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b mm [string map [
88a0: 6c 69 73 74 20 53 45 4e 44 44 45 56 42 4f 44 59 list SENDDEVBODY
88b0: 20 22 72 61 6d 64 65 62 75 67 67 65 72 20 65 76 "ramdebugger ev
88c0: 61 6c 20 5c 24 63 6f 6d 6d 22 5d 20 5c 0a 09 09 al \$comm"] \...
88d0: 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 6d $rem
88e0: 6f 74 65 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 65 otecomm]. } e
88f0: 6c 73 65 69 66 20 7b 20 20 24 72 65 6d 6f 74 65 lseif { $remote
8900: 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 serverType == "g
8910: 64 62 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d db" } {..set rem
8920: 6f 74 65 63 6f 6d 6d 20 22 73 65 74 20 63 6f 6e otecomm "set con
8930: 66 69 72 6d 20 6f 66 66 5c 6e 22 0a 09 61 70 70 firm off\n"..app
8940: 65 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 end remotecomm "
8950: 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 20 70 set breakpoint p
8960: 65 6e 64 69 6e 67 20 6f 6e 5c 6e 22 0a 09 61 70 ending on\n"..ap
8970: 70 65 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 pend remotecomm
8980: 22 73 65 74 20 70 72 69 6e 74 20 65 6c 65 6d 65 "set print eleme
8990: 6e 74 73 20 32 30 30 5c 6e 22 0a 09 61 70 70 65 nts 200\n"..appe
89a0: 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 73 nd remotecomm "s
89b0: 65 74 20 70 72 69 6e 74 20 72 65 70 65 61 74 73 et print repeats
89c0: 20 31 30 30 5c 6e 22 0a 09 61 70 70 65 6e 64 20 100\n"..append
89d0: 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 73 65 74 20 remotecomm "set
89e0: 70 72 69 6e 74 20 61 64 64 72 65 73 73 20 6f 66 print address of
89f0: 66 5c 6e 22 0a 09 6c 61 73 73 69 67 6e 20 24 6f f\n"..lassign $o
8a00: 70 74 73 28 70 72 6f 67 72 61 6d 29 20 63 6d 64 pts(program) cmd
8a10: 20 64 69 72 20 61 72 67 73 0a 09 69 66 20 7b 20 dir args..if {
8a20: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 64 69 [file exists $di
8a30: 72 5d 20 7d 20 7b 0a 09 20 20 20 20 61 70 70 65 r] } {.. appe
8a40: 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 63 nd remotecomm "c
8a50: 64 20 5c 22 24 64 69 72 5c 22 5c 6e 22 0a 09 7d d \"$dir\"\n"..}
8a60: 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 ..if { [string i
8a70: 73 20 69 6e 74 65 67 65 72 20 24 63 6d 64 5d 20 s integer $cmd]
8a80: 7d 20 7b 0a 09 20 20 20 20 61 70 70 65 6e 64 20 } {.. append
8a90: 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 61 74 74 61 remotecomm "atta
8aa0: 63 68 20 24 63 6d 64 5c 6e 22 0a 09 7d 20 65 6c ch $cmd\n"..} el
8ab0: 73 65 20 7b 0a 09 20 20 20 20 61 70 70 65 6e 64 se {.. append
8ac0: 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 22 66 69 6c remotecomm "fil
8ad0: 65 20 5c 22 24 63 6d 64 5c 22 5c 6e 22 0a 09 20 e \"$cmd\"\n"..
8ae0: 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 if { [lindex
8af0: 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 20 31 $opts(program) 1
8b00: 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 61 70 ] != "" } {...ap
8b10: 70 65 6e 64 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 pend remotecomm
8b20: 22 73 65 74 20 61 72 67 73 20 24 61 72 67 73 22 "set args $args"
8b30: 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d .. }..}. }
8b40: 20 65 6c 73 65 69 66 20 7b 20 24 75 73 65 63 6f elseif { $useco
8b50: 6d 6d 52 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d mmR } {..set rem
8b60: 6f 74 65 63 6f 6d 6d 20 5b 73 74 72 69 6e 67 20 otecomm [string
8b70: 6d 61 70 20 5b 6c 69 73 74 20 53 45 4e 44 44 45 map [list SENDDE
8b80: 56 42 4f 44 59 20 22 63 6f 6d 6d 52 3a 3a 63 6f VBODY "commR::co
8b90: 6d 6d 20 73 65 6e 64 20 24 64 65 62 75 67 67 65 mm send $debugge
8ba0: 72 73 65 72 76 65 72 4e 75 6d 20 5c 24 63 6f 6d rserverNum \$com
8bb0: 6d 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 m"] \...
8bc0: 20 20 20 20 24 72 65 6d 6f 74 65 63 6f 6d 6d 5d $remotecomm]
8bd0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
8be0: 65 74 20 72 65 6d 6f 74 65 63 6f 6d 6d 20 5b 73 et remotecomm [s
8bf0: 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 tring map [list
8c00: 53 45 4e 44 44 45 56 42 4f 44 59 20 22 73 65 6e SENDDEVBODY "sen
8c10: 64 20 5c 22 24 64 65 62 75 67 67 65 72 73 65 72 d \"$debuggerser
8c20: 76 65 72 5c 22 20 5c 24 63 6f 6d 6d 22 5d 20 5c ver\" \$comm"] \
8c30: 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 24 ... $
8c40: 72 65 6d 6f 74 65 63 6f 6d 6d 5d 0a 20 20 20 20 remotecomm].
8c50: 7d 0a 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 }. EvalRemote
8c60: 20 24 72 65 6d 6f 74 65 63 6f 6d 6d 0a 20 20 20 $remotecomm.
8c70: 20 63 61 74 63 68 20 7b 20 75 6e 73 65 74 20 69 catch { unset i
8c80: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
8c90: 53 65 6e 74 20 7d 0a 0a 20 20 20 20 69 66 20 7b Sent }.. if {
8ca0: 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20 $debuggerstate
8cb0: 3d 3d 20 22 22 20 7c 7c 20 24 64 65 62 75 67 67 == "" || $debugg
8cc0: 65 72 73 74 61 74 65 20 3d 3d 20 22 64 65 62 75 erstate == "debu
8cd0: 67 22 20 7d 20 7b 0a 09 73 65 74 20 64 65 62 75 g" } {..set debu
8ce0: 67 67 65 72 73 74 61 74 65 20 64 65 62 75 67 0a ggerstate debug.
8cf0: 09 55 70 64 61 74 65 52 65 6d 6f 74 65 42 72 65 .UpdateRemoteBre
8d00: 61 6b 73 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 aks. }.. s
8d10: 77 69 74 63 68 20 24 72 65 6d 6f 74 65 73 65 72 witch $remoteser
8d20: 76 65 72 54 79 70 65 20 7b 0a 09 72 65 6d 6f 74 verType {..remot
8d30: 65 20 2d 20 6d 61 73 74 65 72 20 7b 0a 09 20 20 e - master {..
8d40: 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 if { $currentf
8d50: 69 6c 65 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 ile != "" } {...
8d60: 72 6c 69 73 74 20 2d 71 75 69 65 74 20 24 63 75 rlist -quiet $cu
8d70: 72 72 65 6e 74 66 69 6c 65 0a 09 20 20 20 20 7d rrentfile.. }
8d80: 0a 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 .. EvalRemote
8d90: 20 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 [list set ::RDC
8da0: 3a 3a 66 69 6e 69 73 68 65 64 5f 6c 6f 61 64 69 ::finished_loadi
8db0: 6e 67 5f 64 65 62 75 67 67 65 72 20 31 5d 0a 09 ng_debugger 1]..
8dc0: 7d 0a 09 6c 6f 63 61 6c 20 7b 0a 09 20 20 20 20 }..local {..
8dd0: 45 76 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 EvalRemote [list
8de0: 20 73 65 74 20 3a 3a 52 44 43 3a 3a 63 75 72 72 set ::RDC::curr
8df0: 65 6e 74 66 69 6c 65 20 24 66 69 6c 65 74 6f 64 entfile $filetod
8e00: 65 62 75 67 5d 0a 09 20 20 20 20 73 65 74 20 74 ebug].. set t
8e10: 6f 64 6f 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 odo "[list RamDe
8e20: 62 75 67 67 65 72 3a 3a 72 6c 69 73 74 20 2d 71 bugger::rlist -q
8e30: 75 69 65 74 20 2d 61 73 6d 61 69 6e 66 69 6c 65 uiet -asmainfile
8e40: 20 24 66 69 6c 65 74 6f 64 65 62 75 67 5d 3b 22 $filetodebug];"
8e50: 0a 09 20 20 20 20 61 70 70 65 6e 64 20 74 6f 64 .. append tod
8e60: 6f 20 22 5b 6c 69 73 74 20 73 65 74 20 52 61 6d o "[list set Ram
8e70: 44 65 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e Debugger::curren
8e80: 74 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 tfile $currentfi
8e90: 6c 65 5d 22 0a 09 20 20 20 20 61 66 74 65 72 20 le]".. after
8ea0: 69 64 6c 65 20 24 74 6f 64 6f 0a 09 20 20 20 20 idle $todo..
8eb0: 45 76 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 EvalRemote [list
8ec0: 20 73 65 74 20 3a 3a 52 44 43 3a 3a 66 69 6e 69 set ::RDC::fini
8ed0: 73 68 65 64 5f 6c 6f 61 64 69 6e 67 5f 64 65 62 shed_loading_deb
8ee0: 75 67 67 65 72 20 31 5d 0a 09 7d 0a 09 67 64 62 ugger 1]..}..gdb
8ef0: 20 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 {.. lassign
8f00: 24 6f 70 74 73 28 70 72 6f 67 72 61 6d 29 20 63 $opts(program) c
8f10: 6d 64 20 64 69 72 20 61 72 67 73 0a 09 20 20 20 md dir args..
8f20: 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 73 if { [string is
8f30: 20 69 6e 74 65 67 65 72 20 24 63 6d 64 5d 20 7d integer $cmd] }
8f40: 20 7b 0a 09 09 45 76 61 6c 52 65 6d 6f 74 65 20 {...EvalRemote
8f50: 22 63 6f 6e 74 69 6e 75 65 22 0a 09 20 20 20 20 "continue"..
8f60: 7d 20 65 6c 73 65 20 7b 0a 09 09 45 76 61 6c 52 } else {...EvalR
8f70: 65 6d 6f 74 65 20 22 72 75 6e 22 0a 09 20 20 20 emote "run"..
8f80: 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }..}. }.
8f90: 72 65 74 75 72 6e 20 5b 5f 20 22 42 65 67 69 6e return [_ "Begin
8fa0: 20 64 65 62 75 67 67 69 6e 67 20 6f 66 20 70 72 debugging of pr
8fb0: 6f 67 72 61 6d 20 27 25 73 27 22 20 24 72 65 6d ogram '%s'" $rem
8fc0: 6f 74 65 73 65 72 76 65 72 5d 0a 7d 0a 0a 70 72 oteserver].}..pr
8fd0: 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
8fe0: 72 65 76 61 6c 20 7b 20 61 72 67 73 20 7d 20 7b reval { args } {
8ff0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 45 78 . variable Ex
9000: 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 0a 20 pressionResult.
9010: 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 variable debu
9020: 67 67 65 72 73 74 61 74 65 0a 20 20 20 20 76 61 ggerstate. va
9030: 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 riable remoteser
9040: 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 verType. vari
9050: 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 able remoteserve
9060: 72 0a 0a 20 20 20 20 69 66 20 7b 20 24 64 65 62 r.. if { $deb
9070: 75 67 67 65 72 73 74 61 74 65 20 3d 3d 20 22 74 uggerstate == "t
9080: 69 6d 65 22 20 7d 20 7b 0a 09 65 72 72 6f 72 20 ime" } {..error
9090: 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 72 65 76 61 [_ "Command reva
90a0: 6c 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 l cannot be used
90b0: 20 69 6e 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e in 'time' mode.
90c0: 20 43 68 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20 Check rtime"].
90d0: 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 75 73 }.. set us
90e0: 61 67 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 agestring {usage
90f0: 3a 20 72 65 76 61 6c 20 3f 73 77 69 74 63 68 65 : reval ?switche
9100: 73 3f 20 61 72 67 20 3f 61 72 67 2e 2e 2e 3f 0a s? arg ?arg...?.
9110: 09 2d 68 3a 20 20 20 20 20 20 20 20 20 20 20 64 .-h: d
9120: 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a 09 2d isplays usage..-
9130: 6e 6f 6e 69 63 65 3a 20 20 20 20 20 20 72 65 74 nonice: ret
9140: 75 72 6e 20 61 20 6c 69 73 74 20 77 69 74 68 20 urn a list with
9150: 61 6e 20 69 6e 74 65 67 65 72 20 6f 66 20 74 68 an integer of th
9160: 65 20 65 72 72 6f 72 20 61 6e 64 20 74 68 65 20 e error and the
9170: 73 74 72 69 6e 67 0a 09 2d 68 61 6e 64 6c 65 72 string..-handler
9180: 20 63 6f 6d 6d 3a 20 72 65 74 75 72 6e 73 20 69 comm: returns i
9190: 6e 6d 65 64 69 61 74 65 6c 79 20 61 6e 64 20 63 nmediately and c
91a0: 61 6c 6c 73 20 6c 61 74 65 72 20 74 6f 20 27 63 alls later to 'c
91b0: 6f 6d 6d 27 20 77 69 74 68 20 74 68 65 20 72 65 omm' with the re
91c0: 73 75 6c 74 73 20 61 73 20 61 72 67 75 6d 65 6e sults as argumen
91d0: 74 0a 09 2d 2d 3a 20 20 20 20 20 20 20 20 20 20 t..--:
91e0: 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a end of options.
91f0: 0a 09 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 ..This command i
9200: 73 20 74 79 70 69 63 61 6c 6c 79 20 75 73 65 20 s typically use
9210: 77 68 65 6e 20 74 68 65 20 70 72 6f 67 72 61 6d when the program
9220: 20 68 61 73 20 61 6c 72 65 61 64 79 20 73 74 6f has already sto
9230: 70 70 65 64 20 69 6e 20 6f 6e 65 20 62 72 65 61 pped in one brea
9240: 6b 70 6f 69 6e 74 2e 0a 09 50 65 72 6d 6d 69 74 kpoint...Permmit
9250: 73 20 74 6f 20 65 76 61 6c 75 61 74 65 20 6f 6e s to evaluate on
9260: 65 20 65 78 70 72 65 73 69 6f 6e 20 69 6e 20 74 e expresion in t
9270: 68 65 20 63 6f 6e 74 65 78 74 20 6c 65 76 65 6c he context level
9280: 20 6f 66 20 74 68 65 20 62 72 65 61 6b 70 6f 69 of the breakpoi
9290: 6e 74 2e 20 54 68 65 20 65 78 70 72 65 73 73 69 nt. The expressi
92a0: 6f 6e 0a 09 63 61 6e 20 61 6c 73 6f 20 63 68 61 on..can also cha
92b0: 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 nge the value of
92c0: 20 6f 6e 65 20 76 61 72 69 61 62 6c 65 2e 0a 20 one variable..
92d0: 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 }. ParseAr
92e0: 67 73 20 24 61 72 67 73 20 24 75 73 61 67 65 73 gs $args $usages
92f0: 74 72 69 6e 67 20 6f 70 74 73 0a 20 20 20 20 73 tring opts. s
9300: 65 74 20 45 78 70 72 65 73 73 69 6f 6e 52 65 73 et ExpressionRes
9310: 75 6c 74 20 22 22 0a 20 20 20 20 69 66 20 7b 20 ult "". if {
9320: 24 6f 70 74 73 28 2d 68 61 6e 64 6c 65 72 29 20 $opts(-handler)
9330: 21 3d 20 30 20 7d 20 7b 0a 09 69 66 20 7b 20 24 != 0 } {..if { $
9340: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 remoteserverType
9350: 20 21 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 20 != "gdb" } {..
9360: 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 5b 6c EvalRemote [l
9370: 69 73 74 20 3a 3a 52 44 43 3a 3a 45 76 61 6c 20 ist ::RDC::Eval
9380: 24 6f 70 74 73 28 61 72 67 29 20 24 6f 70 74 73 $opts(arg) $opts
9390: 28 2d 68 61 6e 64 6c 65 72 29 5d 0a 09 7d 20 65 (-handler)]..} e
93a0: 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 72 lse {.. set r
93b0: 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65 emoteserver [lre
93c0: 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72 place $remoteser
93d0: 76 65 72 20 33 20 33 20 5b 6c 69 73 74 20 70 72 ver 3 3 [list pr
93e0: 69 6e 74 20 24 6f 70 74 73 28 2d 68 61 6e 64 6c int $opts(-handl
93f0: 65 72 29 5d 5d 0a 09 20 20 20 20 45 76 61 6c 52 er)]].. EvalR
9400: 65 6d 6f 74 65 20 22 70 72 69 6e 74 20 24 6f 70 emote "print $op
9410: 74 73 28 61 72 67 29 22 0a 09 7d 0a 09 72 65 74 ts(arg)"..}..ret
9420: 75 72 6e 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 urn "". }.
9430: 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 if { $remoteser
9440: 76 65 72 54 79 70 65 20 21 3d 20 22 67 64 62 22 verType != "gdb"
9450: 20 7d 20 7b 0a 09 45 76 61 6c 52 65 6d 6f 74 65 } {..EvalRemote
9460: 20 5b 6c 69 73 74 20 3a 3a 52 44 43 3a 3a 45 76 [list ::RDC::Ev
9470: 61 6c 20 24 6f 70 74 73 28 61 72 67 29 5d 0a 20 al $opts(arg)].
9480: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 } else {..set
9490: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c remoteserver [l
94a0: 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 replace $remotes
94b0: 65 72 76 65 72 20 33 20 33 20 70 72 69 6e 74 5d erver 3 3 print]
94c0: 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 22 70 72 ..EvalRemote "pr
94d0: 69 6e 74 20 24 6f 70 74 73 28 61 72 67 29 22 0a int $opts(arg)".
94e0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 }. if { $
94f0: 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 ExpressionResult
9500: 20 3d 3d 20 22 22 20 7d 20 7b 20 76 77 61 69 74 == "" } { vwait
9510: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 78 RamDebugger::Ex
9520: 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 20 7d pressionResult }
9530: 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 6f 70 74 .. if { !$opt
9540: 73 28 2d 6e 6f 6e 69 63 65 29 20 7d 20 7b 0a 09 s(-nonice) } {..
9550: 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 45 78 if { [lindex $Ex
9560: 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 20 30 pressionResult 0
9570: 5d 20 3d 3d 20 30 20 7d 20 7b 0a 09 20 20 20 20 ] == 0 } {..
9580: 72 65 74 75 72 6e 20 5b 6c 69 6e 64 65 78 20 24 return [lindex $
9590: 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 ExpressionResult
95a0: 20 31 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 1]..} else {..
95b0: 20 20 20 65 72 72 6f 72 20 5b 6c 69 6e 64 65 78 error [lindex
95c0: 20 24 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75 $ExpressionResu
95d0: 6c 74 20 31 5d 0a 09 7d 0a 20 20 20 20 7d 20 65 lt 1]..}. } e
95e0: 6c 73 65 20 7b 0a 09 72 65 74 75 72 6e 20 24 45 lse {..return $E
95f0: 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 0a xpressionResult.
9600: 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 }.}..proc Ra
9610: 6d 44 65 62 75 67 67 65 72 3a 3a 72 73 74 61 63 mDebugger::rstac
9620: 6b 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 k { args } {.
9630: 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 variable debugg
9640: 65 72 73 74 61 74 65 0a 20 20 20 20 76 61 72 69 erstate. vari
9650: 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 able remoteserve
9660: 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 r. variable r
9670: 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 0a emoteserverType.
9680: 20 20 20 20 76 61 72 69 61 62 6c 65 20 45 78 70 variable Exp
9690: 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 0a 0a 20 ressionResult..
96a0: 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 65 if { $debugge
96b0: 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 rstate == "time"
96c0: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 } {..error [_ "
96d0: 43 6f 6d 6d 61 6e 64 20 72 73 74 61 63 6b 20 63 Command rstack c
96e0: 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e annot be used in
96f0: 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 'time' mode. Ch
9700: 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 eck rtime"].
9710: 7d 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 }.. set usage
9720: 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 string {usage: r
9730: 73 74 61 63 6b 20 3f 73 77 69 74 63 68 65 73 3f stack ?switches?
9740: 0a 09 2d 68 3a 20 20 20 20 20 20 20 64 69 73 70 ..-h: disp
9750: 6c 61 79 73 20 75 73 61 67 65 0a 09 2d 6e 6f 6e lays usage..-non
9760: 69 63 65 3a 20 72 65 74 75 72 6e 20 61 20 6c 69 ice: return a li
9770: 73 74 20 77 69 74 68 20 61 6e 20 69 6e 74 65 67 st with an integ
9780: 65 72 20 6f 66 20 74 68 65 20 65 72 72 6f 72 20 er of the error
9790: 61 6e 64 20 74 68 65 20 73 74 72 69 6e 67 0a 09 and the string..
97a0: 2d 68 61 6e 64 6c 65 72 20 63 6f 6d 6d 3a 20 72 -handler comm: r
97b0: 65 74 75 72 6e 73 20 69 6e 6d 65 64 69 61 74 65 eturns inmediate
97c0: 6c 79 20 61 6e 64 20 63 61 6c 6c 73 20 6c 61 74 ly and calls lat
97d0: 65 72 20 74 6f 20 27 63 6f 6d 6d 27 20 77 69 74 er to 'comm' wit
97e0: 68 20 74 68 65 20 72 65 73 75 6c 74 73 20 61 73 h the results as
97f0: 20 61 72 67 75 6d 65 6e 74 0a 09 2d 2d 3a 20 20 argument..--:
9800: 20 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e end of option
9810: 73 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 s. }. Pars
9820: 65 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61 eArgs $args $usa
9830: 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 gestring opts..
9840: 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 if { $remotes
9850: 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 erverType == "gd
9860: 62 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d 6f b" } {..set remo
9870: 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 teserver [lrepla
9880: 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 ce $remoteserver
9890: 20 33 20 33 20 62 61 63 6b 74 72 61 63 65 5d 0a 3 3 backtrace].
98a0: 09 73 65 74 20 45 78 70 72 65 73 73 69 6f 6e 52 .set ExpressionR
98b0: 65 73 75 6c 74 20 22 22 0a 09 45 76 61 6c 52 65 esult ""..EvalRe
98c0: 6d 6f 74 65 20 22 62 61 63 6b 74 72 61 63 65 5c mote "backtrace\
98d0: 6e 70 72 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 nprintf \"FINISH
98e0: 45 44 20 42 41 43 4b 54 52 41 43 45 5c 5c 6e 5c ED BACKTRACE\\n\
98f0: 22 22 0a 09 69 66 20 7b 20 24 45 78 70 72 65 73 ""..if { $Expres
9900: 73 69 6f 6e 52 65 73 75 6c 74 20 3d 3d 20 22 22 sionResult == ""
9910: 20 7d 20 7b 20 76 77 61 69 74 20 52 61 6d 44 65 } { vwait RamDe
9920: 62 75 67 67 65 72 3a 3a 45 78 70 72 65 73 73 69 bugger::Expressi
9930: 6f 6e 52 65 73 75 6c 74 20 7d 0a 09 69 66 20 7b onResult }..if {
9940: 20 24 6f 70 74 73 28 2d 68 61 6e 64 6c 65 72 29 $opts(-handler)
9950: 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 != "" } {..
9960: 75 70 6c 65 76 65 6c 20 5c 23 30 20 24 6f 70 74 uplevel \#0 $opt
9970: 73 28 2d 68 61 6e 64 6c 65 72 29 20 5b 6c 69 73 s(-handler) [lis
9980: 74 20 24 45 78 70 72 65 73 73 69 6f 6e 52 65 73 t $ExpressionRes
9990: 75 6c 74 5d 0a 09 20 20 20 20 72 65 74 75 72 6e ult].. return
99a0: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 ..} else {..
99b0: 72 65 74 75 72 6e 20 24 45 78 70 72 65 73 73 69 return $Expressi
99c0: 6f 6e 52 65 73 75 6c 74 0a 09 7d 0a 20 20 20 20 onResult..}.
99d0: 7d 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b }. set comm {
99e0: 0a 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 ..set ::RDC::ret
99f0: 76 61 6c 20 22 53 54 41 43 4b 20 54 52 41 43 45 val "STACK TRACE
9a00: 5c 6e 22 0a 09 73 65 74 20 3a 3a 52 44 43 3a 3a \n"..set ::RDC::
9a10: 63 75 72 72 65 6e 74 20 5b 69 6e 66 6f 20 6c 65 current [info le
9a20: 76 65 6c 5d 0a 09 66 6f 72 20 7b 20 73 65 74 20 vel]..for { set
9a30: 3a 3a 52 44 43 3a 3a 69 20 24 3a 3a 52 44 43 3a ::RDC::i $::RDC:
9a40: 3a 63 75 72 72 65 6e 74 20 7d 20 7b 20 24 3a 3a :current } { $::
9a50: 52 44 43 3a 3a 69 20 3e 20 30 20 7d 20 7b 20 69 RDC::i > 0 } { i
9a60: 6e 63 72 20 3a 3a 52 44 43 3a 3a 69 20 2d 31 20 ncr ::RDC::i -1
9a70: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 3a 3a 52 } {.. set ::R
9a80: 44 43 3a 3a 6c 65 76 65 6c 20 22 22 0a 09 20 20 DC::level ""..
9a90: 20 20 66 6f 72 65 61 63 68 20 3a 3a 52 44 43 3a foreach ::RDC:
9aa0: 3a 6a 20 5b 69 6e 66 6f 20 6c 65 76 65 6c 20 24 :j [info level $
9ab0: 3a 3a 52 44 43 3a 3a 69 5d 20 7b 0a 09 09 72 65 ::RDC::i] {...re
9ac0: 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 6e 7d 20 24 gsub -all {\n} $
9ad0: 3a 3a 52 44 43 3a 3a 6a 20 7b 20 7d 20 3a 3a 52 ::RDC::j { } ::R
9ae0: 44 43 3a 3a 6a 0a 09 09 69 66 20 7b 20 5b 73 74 DC::j...if { [st
9af0: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a 52 ring length $::R
9b00: 44 43 3a 3a 6a 5d 20 3e 20 31 30 30 20 7d 20 7b DC::j] > 100 } {
9b10: 0a 09 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43 ... set ::RDC
9b20: 3a 3a 6a 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 ::j [string rang
9b30: 65 20 24 3a 3a 52 44 43 3a 3a 6a 20 30 20 39 36 e $::RDC::j 0 96
9b40: 5d 2e 2e 2e 0a 09 09 7d 0a 09 09 6c 61 70 70 65 ]......}...lappe
9b50: 6e 64 20 3a 3a 52 44 43 3a 3a 6c 65 76 65 6c 20 nd ::RDC::level
9b60: 24 3a 3a 52 44 43 3a 3a 6a 0a 09 20 20 20 20 7d $::RDC::j.. }
9b70: 0a 09 20 20 20 20 61 70 70 65 6e 64 20 3a 3a 52 .. append ::R
9b80: 44 43 3a 3a 72 65 74 76 61 6c 20 22 6c 65 76 65 DC::retval "leve
9b90: 6c 20 24 3a 3a 52 44 43 3a 3a 69 20 24 3a 3a 52 l $::RDC::i $::R
9ba0: 44 43 3a 3a 6c 65 76 65 6c 5c 6e 22 0a 09 7d 0a DC::level\n"..}.
9bb0: 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 .set ::RDC::retv
9bc0: 61 6c 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 al. }. ret
9bd0: 75 72 6e 20 5b 65 76 61 6c 20 72 65 76 61 6c 20 urn [eval reval
9be0: 24 61 72 67 73 20 5b 6c 69 73 74 20 24 63 6f 6d $args [list $com
9bf0: 6d 5d 5d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 m]].}..proc RamD
9c00: 65 62 75 67 67 65 72 3a 3a 72 63 6f 6e 74 20 7b ebugger::rcont {
9c10: 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 args } {. va
9c20: 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 riable currentfi
9c30: 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 le. variable
9c40: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
9c50: 73 50 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 sP. variable
9c60: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
9c70: 73 52 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 sR. variable
9c80: 63 75 72 72 65 6e 74 6c 69 6e 65 0a 20 20 20 20 currentline.
9c90: 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 6c 69 variable filesli
9ca0: 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 st. variable
9cb0: 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 20 20 debuggerstate.
9cc0: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 variable remot
9cd0: 65 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 eserver. vari
9ce0: 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 able remoteserve
9cf0: 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 rType. variab
9d00: 6c 65 20 66 69 6c 65 73 0a 0a 20 20 20 20 69 66 le files.. if
9d10: 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 74 { $debuggerstat
9d20: 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a e == "time" } {.
9d30: 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 .error [_ "Comma
9d40: 6e 64 20 72 63 6f 6e 74 20 63 61 6e 6e 6f 74 20 nd rcont cannot
9d50: 62 65 20 75 73 65 64 20 69 6e 20 27 74 69 6d 65 be used in 'time
9d60: 27 20 6d 6f 64 65 2e 20 43 68 65 63 6b 20 72 74 ' mode. Check rt
9d70: 69 6d 65 22 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 ime"]. }..
9d80: 20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e 67 set usagestring
9d90: 20 7b 75 73 61 67 65 3a 20 72 63 6f 6e 74 20 3f {usage: rcont ?
9da0: 73 77 69 74 63 68 65 73 3f 20 3f 6c 69 6e 65 3f switches? ?line?
9db0: 0a 09 2d 68 3a 20 20 20 20 20 20 20 64 69 73 70 ..-h: disp
9dc0: 6c 61 79 73 20 75 73 61 67 65 0a 09 2d 2d 3a 20 lays usage..--:
9dd0: 20 20 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f end of optio
9de0: 6e 73 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 ns. }. Par
9df0: 73 65 41 72 67 73 20 24 61 72 67 73 20 24 75 73 seArgs $args $us
9e00: 61 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a agestring opts..
9e10: 20 20 20 20 69 66 20 7b 20 21 5b 73 74 72 69 6e if { ![strin
9e20: 67 20 69 73 20 69 6e 74 65 67 65 72 20 24 6f 70 g is integer $op
9e30: 74 73 28 6c 69 6e 65 29 5d 20 7d 20 7b 0a 09 65 ts(line)] } {..e
9e40: 72 72 6f 72 20 5b 5f 20 22 6c 69 6e 65 20 27 25 rror [_ "line '%
9e50: 73 27 20 6d 75 73 74 20 62 65 20 61 20 6e 75 6d s' must be a num
9e60: 62 65 72 5c 6e 25 73 22 20 24 6f 70 74 73 28 6c ber\n%s" $opts(l
9e70: 69 6e 65 29 20 24 75 73 61 67 65 73 74 72 69 6e ine) $usagestrin
9e80: 67 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 g]. }.. if
9e90: 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 { $currentfile
9ea0: 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 72 6f 72 == "" } {..error
9eb0: 20 5b 5f 20 22 54 68 65 72 65 20 69 73 20 6e 6f [_ "There is no
9ec0: 20 66 69 6c 65 20 73 65 6c 65 63 74 65 64 5c 6e file selected\n
9ed0: 25 73 22 20 24 75 73 61 67 65 73 74 72 69 6e 67 %s" $usagestring
9ee0: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b ]. }. if {
9ef0: 20 24 6f 70 74 73 28 6c 69 6e 65 29 20 21 3d 20 $opts(line) !=
9f00: 22 22 20 7d 20 7b 0a 09 73 65 74 20 63 75 72 72 "" } {..set curr
9f10: 65 6e 74 6c 69 6e 65 20 24 6f 70 74 73 28 6c 69 entline $opts(li
9f20: 6e 65 29 0a 09 73 65 74 20 66 69 6c 65 6e 75 6d ne)..set filenum
9f30: 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24 66 [lsearchfile $f
9f40: 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 6e ileslist $curren
9f50: 74 66 69 6c 65 5d 0a 09 69 66 20 7b 20 24 72 65 tfile]..if { $re
9f60: 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 21 moteserverType !
9f70: 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 20 20 20 = "gdb" } {..
9f80: 20 73 65 74 20 69 70 6f 73 20 5b 73 74 72 69 6e set ipos [strin
9f90: 67 20 66 69 72 73 74 20 22 52 44 43 3a 3a 46 20 g first "RDC::F
9fa0: 24 66 69 6c 65 6e 75 6d 20 24 63 75 72 72 65 6e $filenum $curren
9fb0: 74 6c 69 6e 65 20 3b 22 20 5c 0a 09 09 20 20 20 tline ;" \...
9fc0: 20 20 20 20 20 20 20 24 69 6e 73 74 72 75 6d 65 $instrume
9fd0: 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 ntedfilesP($curr
9fe0: 65 6e 74 66 69 6c 65 29 5d 0a 09 20 20 20 20 69 entfile)].. i
9ff0: 66 20 7b 20 24 69 70 6f 73 20 3d 3d 20 2d 31 20 f { $ipos == -1
a000: 7d 20 7b 0a 09 09 73 65 74 20 69 70 6f 73 20 5b } {...set ipos [
a010: 73 74 72 69 6e 67 20 66 69 72 73 74 20 22 52 44 string first "RD
a020: 43 3a 3a 46 20 24 66 69 6c 65 6e 75 6d 20 24 63 C::F $filenum $c
a030: 75 72 72 65 6e 74 6c 69 6e 65 20 3b 22 20 5c 0a urrentline ;" \.
a040: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a050: 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c $instrumentedfil
a060: 65 73 52 28 24 63 75 72 72 65 6e 74 66 69 6c 65 esR($currentfile
a070: 29 5d 0a 09 09 69 66 20 7b 20 24 69 70 6f 73 20 )]...if { $ipos
a080: 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20 == -1 } {...
a090: 73 65 74 20 65 72 72 6f 72 6d 65 73 73 61 67 65 set errormessage
a0a0: 20 5b 5f 20 22 45 72 72 6f 72 3a 20 6c 69 6e 65 [_ "Error: line
a0b0: 20 25 73 20 69 73 20 6e 6f 74 20 69 6e 73 74 72 %s is not instr
a0c0: 75 6d 65 6e 74 65 64 22 20 24 63 75 72 72 65 6e umented" $curren
a0d0: 74 6c 69 6e 65 5d 0a 09 09 20 20 20 20 73 65 74 tline]... set
a0e0: 20 6c 69 6e 65 74 78 74 20 5b 6c 69 6e 64 65 78 linetxt [lindex
a0f0: 20 5b 73 70 6c 69 74 20 24 66 69 6c 65 73 28 24 [split $files($
a100: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5c 6e 5d currentfile) \n]
a110: 20 5b 65 78 70 72 20 7b 24 63 75 72 72 65 6e 74 [expr {$current
a120: 6c 69 6e 65 2d 31 7d 5d 5d 0a 09 09 20 20 20 20 line-1}]]...
a130: 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 if { [string tri
a140: 6d 20 24 6c 69 6e 65 74 78 74 5d 20 3d 3d 20 22 m $linetxt] == "
a150: 5c 7d 22 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 \}" } {...
a160: 20 20 61 70 70 65 6e 64 20 65 72 72 6f 72 6d 65 append errorme
a170: 73 73 61 67 65 20 5b 5f 20 22 2e 20 43 6f 6e 73 ssage [_ ". Cons
a180: 69 64 65 72 20 6f 70 74 69 6f 6e 20 27 49 6e 73 ider option 'Ins
a190: 74 72 75 6d 65 6e 74 20 70 72 6f 63 20 6c 61 73 trument proc las
a1a0: 74 20 6c 69 6e 65 27 20 69 6e 20 50 72 65 66 65 t line' in Prefe
a1b0: 72 65 6e 63 65 73 22 5d 0a 09 09 20 20 20 20 7d rences"]... }
a1c0: 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65 72 ... error $er
a1d0: 72 6f 72 6d 65 73 73 61 67 65 0a 09 09 7d 0a 09 rormessage...}..
a1e0: 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a }..}. }..
a1f0: 20 20 20 20 72 6c 69 73 74 20 2d 71 75 69 65 74 rlist -quiet
a200: 0a 20 20 20 20 53 74 6f 70 41 74 47 55 49 20 22 . StopAtGUI "
a210: 22 20 22 22 0a 20 20 20 20 69 66 20 7b 20 24 72 " "". if { $r
a220: 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 emoteserverType
a230: 21 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 69 66 != "gdb" } {..if
a240: 20 7b 20 24 6f 70 74 73 28 6c 69 6e 65 29 20 21 { $opts(line) !
a250: 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 = "" } {.. se
a260: 74 20 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 t filenum [lsear
a270: 63 68 66 69 6c 65 20 24 66 69 6c 65 73 6c 69 73 chfile $fileslis
a280: 74 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a t $currentfile].
a290: 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 . EvalRemote
a2a0: 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 3a [list set ::RDC:
a2b0: 3a 63 6f 6e 74 74 6f 20 5b 6c 69 73 74 20 24 66 :contto [list $f
a2c0: 69 6c 65 6e 75 6d 20 24 63 75 72 72 65 6e 74 6c ilenum $currentl
a2d0: 69 6e 65 5d 5d 0a 09 7d 0a 09 45 76 61 6c 52 65 ine]]..}..EvalRe
a2e0: 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 20 3a mote [list set :
a2f0: 3a 52 44 43 3a 3a 73 74 6f 70 6e 65 78 74 20 30 :RDC::stopnext 0
a300: 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 3a 3a ]..EvalRemote ::
a310: 52 44 43 3a 3a 43 6f 6e 74 69 6e 75 65 0a 20 20 RDC::Continue.
a320: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b } else {..if {
a330: 20 24 6f 70 74 73 28 6c 69 6e 65 29 20 21 3d 20 $opts(line) !=
a340: 22 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 "" } {.. set
a350: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 remoteserver [lr
a360: 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 eplace $remotese
a370: 72 76 65 72 20 33 20 33 20 73 65 74 62 72 65 61 rver 3 3 setbrea
a380: 6b 70 6f 69 6e 74 73 5d 0a 09 20 20 20 20 45 76 kpoints].. Ev
a390: 61 6c 52 65 6d 6f 74 65 20 22 74 62 72 65 61 6b alRemote "tbreak
a3a0: 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 63 75 72 [file tail $cur
a3b0: 72 65 6e 74 66 69 6c 65 5d 3a 24 63 75 72 72 65 rentfile]:$curre
a3c0: 6e 74 6c 69 6e 65 22 0a 09 20 20 20 20 45 76 61 ntline".. Eva
a3d0: 6c 52 65 6d 6f 74 65 20 22 70 72 69 6e 74 66 20 lRemote "printf
a3e0: 5c 22 46 49 4e 49 53 48 45 44 20 53 45 54 20 42 \"FINISHED SET B
a3f0: 52 45 41 4b 50 4f 49 4e 54 53 5c 5c 6e 5c 22 22 REAKPOINTS\\n\""
a400: 0a 09 7d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 ..}..EvalRemote
a410: 22 63 6f 6e 74 22 0a 20 20 20 20 7d 0a 7d 0a 0a "cont". }.}..
a420: 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
a430: 3a 3a 72 6e 65 78 74 20 7b 20 61 72 67 73 20 7d ::rnext { args }
a440: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
a450: 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 20 20 debuggerstate.
a460: 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 variable remot
a470: 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 eserverType.
a480: 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 variable remotes
a490: 65 72 76 65 72 0a 0a 20 20 20 20 69 66 20 7b 20 erver.. if {
a4a0: 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20 3d $debuggerstate =
a4b0: 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a 09 65 72 = "time" } {..er
a4c0: 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 ror [_ "Command
a4d0: 72 6e 65 78 74 20 63 61 6e 6e 6f 74 20 62 65 20 rnext cannot be
a4e0: 75 73 65 64 20 69 6e 20 27 74 69 6d 65 27 20 6d used in 'time' m
a4f0: 6f 64 65 2e 20 43 68 65 63 6b 20 72 74 69 6d 65 ode. Check rtime
a500: 22 5d 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 "]. }. .
a510: 20 20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e set usagestrin
a520: 67 20 7b 75 73 61 67 65 3a 20 72 6e 65 78 74 20 g {usage: rnext
a530: 3f 73 77 69 74 63 68 65 73 3f 0a 09 2d 68 3a 20 ?switches?..-h:
a540: 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 20 75 displays u
a550: 73 61 67 65 0a 09 2d 66 75 6c 6c 3a 20 20 20 20 sage..-full:
a560: 54 72 69 65 73 20 74 6f 20 73 74 6f 70 20 70 72 Tries to stop pr
a570: 6f 67 72 61 6d 20 65 78 65 63 75 74 69 6f 6e 20 ogram execution
a580: 69 6e 20 61 6e 79 20 6c 69 6e 65 0a 09 2d 72 65 in any line..-re
a590: 74 75 72 6e 3a 20 20 4d 61 6b 65 73 20 74 68 65 turn: Makes the
a5a0: 20 63 6f 64 65 20 72 65 74 75 72 6e 20 66 72 6f code return fro
a5b0: 6d 20 70 72 6f 63 20 77 69 74 68 6f 75 74 20 66 m proc without f
a5c0: 69 6e 69 73 68 69 6e 67 20 65 78 65 63 75 74 69 inishing executi
a5d0: 6f 6e 0a 09 2d 2d 3a 20 20 20 20 20 20 20 65 6e on..--: en
a5e0: 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 20 20 d of options.
a5f0: 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 }. ParseArgs
a600: 20 24 61 72 67 73 20 24 75 73 61 67 65 73 74 72 $args $usagestr
a610: 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20 20 72 6c ing opts.. rl
a620: 69 73 74 20 2d 71 75 69 65 74 0a 20 20 20 20 53 ist -quiet. S
a630: 74 6f 70 41 74 47 55 49 20 22 22 20 22 22 0a 0a topAtGUI "" ""..
a640: 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 if { $remote
a650: 73 65 72 76 65 72 54 79 70 65 20 6e 65 20 22 67 serverType ne "g
a660: 64 62 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 6f db" } {..if { $o
a670: 70 74 73 28 2d 72 65 74 75 72 6e 29 20 7d 20 7b pts(-return) } {
a680: 0a 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 .. EvalRemote
a690: 20 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 43 [list set ::RDC
a6a0: 3a 3a 73 74 6f 70 6e 65 78 74 20 34 5d 0a 09 7d ::stopnext 4]..}
a6b0: 20 65 6c 73 65 69 66 20 7b 20 24 6f 70 74 73 28 elseif { $opts(
a6c0: 2d 66 75 6c 6c 29 20 7d 20 7b 0a 09 20 20 20 20 -full) } {..
a6d0: 45 76 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 EvalRemote [list
a6e0: 20 73 65 74 20 3a 3a 52 44 43 3a 3a 73 74 6f 70 set ::RDC::stop
a6f0: 6e 65 78 74 20 33 5d 0a 09 7d 20 65 6c 73 65 20 next 3]..} else
a700: 7b 0a 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 {.. EvalRemot
a710: 65 20 5b 6c 69 73 74 20 73 65 74 20 3a 3a 52 44 e [list set ::RD
a720: 43 3a 3a 73 74 6f 70 6e 65 78 74 20 31 5d 0a 09 C::stopnext 1]..
a730: 7d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 3a 3a }..EvalRemote ::
a740: 52 44 43 3a 3a 43 6f 6e 74 69 6e 75 65 0a 20 20 RDC::Continue.
a750: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 } else {..set
a760: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 remoteserver [lr
a770: 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 eplace $remotese
a780: 72 76 65 72 20 33 20 33 20 6e 65 78 74 5d 0a 09 rver 3 3 next]..
a790: 6c 61 73 73 69 67 6e 20 24 72 65 6d 6f 74 65 73 lassign $remotes
a7a0: 65 72 76 65 72 20 66 69 64 20 70 69 64 0a 09 69 erver fid pid..i
a7b0: 66 20 7b 20 24 6f 70 74 73 28 2d 66 75 6c 6c 29 f { $opts(-full)
a7c0: 20 26 26 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 && $::tcl_platf
a7d0: 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 65 71 orm(platform) eq
a7e0: 20 22 75 6e 69 78 22 20 7d 20 7b 0a 09 20 20 20 "unix" } {..
a7f0: 20 65 78 65 63 20 6b 69 6c 6c 20 2d 73 20 49 4e exec kill -s IN
a800: 54 20 24 70 69 64 0a 09 7d 0a 09 23 45 76 61 6c T $pid..}..#Eval
a810: 52 65 6d 6f 74 65 20 5c 30 30 33 0a 09 45 76 61 Remote \003..Eva
a820: 6c 52 65 6d 6f 74 65 20 6e 65 78 74 0a 20 20 20 lRemote next.
a830: 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 }.}..proc RamDe
a840: 62 75 67 67 65 72 3a 3a 72 73 74 65 70 20 7b 20 bugger::rstep {
a850: 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 args } {. var
a860: 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 74 iable debuggerst
a870: 61 74 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ate. variable
a880: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 remoteserverTyp
a890: 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 e. variable r
a8a0: 65 6d 6f 74 65 73 65 72 76 65 72 0a 0a 20 20 20 emoteserver..
a8b0: 20 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 if { $debuggers
a8c0: 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d tate == "time" }
a8d0: 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f {..error [_ "Co
a8e0: 6d 6d 61 6e 64 20 72 73 74 65 70 20 63 61 6e 6e mmand rstep cann
a8f0: 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 27 74 ot be used in 't
a900: 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65 63 6b ime' mode. Check
a910: 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d 0a 0a rtime"]. }..
a920: 20 20 20 20 73 65 74 20 75 73 61 67 65 73 74 72 set usagestr
a930: 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 73 74 65 ing {usage: rste
a940: 70 20 3f 73 77 69 74 63 68 65 73 3f 0a 09 2d 68 p ?switches?..-h
a950: 3a 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 : displays
a960: 20 75 73 61 67 65 0a 09 2d 2d 3a 20 20 20 20 20 usage..--:
a970: 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 end of options.
a980: 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 }. ParseAr
a990: 67 73 20 24 61 72 67 73 20 24 75 73 61 67 65 73 gs $args $usages
a9a0: 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20 20 tring opts..
a9b0: 72 6c 69 73 74 20 2d 71 75 69 65 74 0a 20 20 20 rlist -quiet.
a9c0: 20 53 74 6f 70 41 74 47 55 49 20 22 22 20 22 22 StopAtGUI "" ""
a9d0: 0a 0a 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f .. if { $remo
a9e0: 74 65 73 65 72 76 65 72 54 79 70 65 20 21 3d 20 teserverType !=
a9f0: 22 67 64 62 22 20 7d 20 7b 0a 09 45 76 61 6c 52 "gdb" } {..EvalR
aa00: 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 20 emote [list set
aa10: 3a 3a 52 44 43 3a 3a 73 74 6f 70 6e 65 78 74 20 ::RDC::stopnext
aa20: 32 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 3a 2]..EvalRemote :
aa30: 3a 52 44 43 3a 3a 43 6f 6e 74 69 6e 75 65 0a 20 :RDC::Continue.
aa40: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 } else {..set
aa50: 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c remoteserver [l
aa60: 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 replace $remotes
aa70: 65 72 76 65 72 20 33 20 33 20 73 74 65 70 5d 0a erver 3 3 step].
aa80: 09 45 76 61 6c 52 65 6d 6f 74 65 20 73 74 65 70 .EvalRemote step
aa90: 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
aaa0: 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 6f 75 74 amDebugger::rout
aab0: 70 75 74 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 put { args } {.
aac0: 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 variable debu
aad0: 67 67 65 72 73 74 61 74 65 0a 0a 20 20 20 20 69 ggerstate.. i
aae0: 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 f { $debuggersta
aaf0: 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b te == "time" } {
ab00: 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d ..error [_ "Comm
ab10: 61 6e 64 20 72 6f 75 74 70 75 74 20 63 61 6e 6e and routput cann
ab20: 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 27 74 ot be used in 't
ab30: 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65 63 6b ime' mode. Check
ab40: 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d 0a 0a rtime"]. }..
ab50: 20 20 20 20 73 65 74 20 75 73 61 67 65 73 74 72 set usagestr
ab60: 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 6f 75 74 ing {usage: rout
ab70: 70 75 74 20 3f 73 77 69 74 63 68 65 73 3f 20 62 put ?switches? b
ab80: 6f 6f 6c 65 61 6e 0a 09 2d 68 3a 20 20 20 20 20 oolean..-h:
ab90: 20 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 displays usage
aba0: 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 ..--: end of
abb0: 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 7d 0a 20 options. }.
abc0: 20 20 20 50 61 72 73 65 41 72 67 73 20 24 61 72 ParseArgs $ar
abd0: 67 73 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 gs $usagestring
abe0: 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 opts.. if { $
abf0: 6f 70 74 73 28 62 6f 6f 6c 65 61 6e 29 20 7d 20 opts(boolean) }
ac00: 7b 0a 09 73 65 74 20 77 68 61 74 20 31 0a 20 20 {..set what 1.
ac10: 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 77 } else { set w
ac20: 68 61 74 20 30 20 7d 0a 20 20 20 20 45 76 61 6c hat 0 }. Eval
ac30: 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 74 Remote [list set
ac40: 20 3a 3a 52 44 43 3a 3a 6f 75 74 70 75 74 6c 69 ::RDC::outputli
ac50: 6e 65 20 24 77 68 61 74 5d 0a 7d 0a 0a 70 72 6f ne $what].}..pro
ac60: 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 c RamDebugger::r
ac70: 74 69 6d 65 20 7b 20 61 72 67 73 20 7d 20 7b 0a time { args } {.
ac80: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 variable deb
ac90: 75 67 67 65 72 73 74 61 74 65 0a 20 20 20 20 76 uggerstate. v
aca0: 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 ariable remotese
acb0: 72 76 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c rver. variabl
acc0: 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 e remoteserverTy
acd0: 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 pe. variable
ace0: 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 0a TimeMeasureData.
acf0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
ad00: 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 rentfile. var
ad10: 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
ad20: 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 e_endline. va
ad30: 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e riable instrumen
ad40: 74 65 64 66 69 6c 65 73 54 69 6d 65 0a 0a 20 20 tedfilesTime..
ad50: 20 20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e set usagestrin
ad60: 67 20 7b 75 73 61 67 65 3a 20 72 74 69 6d 65 20 g {usage: rtime
ad70: 3f 73 77 69 74 63 68 65 73 3f 20 3f 6e 61 6d 65 ?switches? ?name
ad80: 3f 20 3f 6c 69 6e 65 69 6e 69 3f 20 3f 6c 69 6e ? ?lineini? ?lin
ad90: 65 65 6e 64 3f 0a 09 2d 68 3a 20 20 20 20 20 20 eend?..-h:
ada0: 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 73 20 displays
adb0: 75 73 61 67 65 0a 09 2d 73 74 61 72 74 3a 20 20 usage..-start:
adc0: 20 20 20 20 20 20 20 73 74 61 72 74 20 74 69 6d start tim
add0: 65 20 6d 6f 64 65 0a 09 2d 73 74 6f 70 3a 20 20 e mode..-stop:
ade0: 20 20 20 20 20 20 20 20 73 74 6f 70 20 74 69 6d stop tim
adf0: 65 20 6d 6f 64 65 20 61 6e 64 20 67 6f 20 74 6f e mode and go to
ae00: 20 64 65 62 75 67 67 69 6e 67 20 6d 6f 64 65 0a debugging mode.
ae10: 09 2d 61 64 64 3a 20 20 20 20 20 20 20 20 20 20 .-add:
ae20: 20 41 64 64 20 61 20 74 69 6d 65 20 62 6c 6f 63 Add a time bloc
ae30: 6b 20 62 79 20 67 69 76 69 6e 67 20 6e 61 6d 65 k by giving name
ae40: 20 6c 69 6e 65 69 6e 69 20 61 6e 64 20 6c 69 6e lineini and lin
ae50: 65 65 6e 64 0a 09 2d 64 65 6c 65 74 65 3a 20 20 eend..-delete:
ae60: 20 20 20 20 20 20 44 65 6c 65 74 65 20 6e 61 6d Delete nam
ae70: 65 64 20 74 69 6d 65 20 62 6c 6f 63 6b 0a 09 2d ed time block..-
ae80: 6c 69 73 74 3a 20 20 20 20 20 20 20 20 20 20 4c list: L
ae90: 69 73 74 20 70 72 65 76 69 6f 75 73 6c 79 20 64 ist previously d
aea0: 65 66 69 6e 65 64 20 74 69 6d 65 20 62 6c 6f 63 efined time bloc
aeb0: 6b 73 0a 09 2d 64 69 73 70 6c 61 79 20 75 6e 69 ks..-display uni
aec0: 74 73 3a 20 44 69 73 70 6c 61 79 73 20 74 61 62 ts: Displays tab
aed0: 6c 65 20 6f 66 20 72 65 73 75 6c 74 73 2e 20 75 le of results. u
aee0: 6e 69 74 73 20 63 61 6e 20 62 65 3a 20 6d 69 63 nits can be: mic
aef0: 72 6f 73 65 63 2c 20 6d 69 6c 69 73 65 63 2c 20 rosec, milisec,
af00: 73 65 63 2c 20 6d 69 6e 0a 09 2d 63 6c 65 61 72 sec, min..-clear
af10: 74 69 6d 65 73 3a 20 20 20 20 43 6c 65 61 72 20 times: Clear
af20: 74 69 6d 65 73 20 74 61 62 6c 65 0a 09 2d 2d 3a times table..--:
af30: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 end
af40: 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 54 68 of options...Th
af50: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 is function is u
af60: 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 61 62 sed to obtain ab
af70: 73 6f 6c 75 74 65 20 61 6e 64 20 72 65 6c 61 74 solute and relat
af80: 69 76 65 20 74 69 6d 65 73 20 6f 66 20 73 65 76 ive times of sev
af90: 65 72 61 6c 20 62 6c 6f 63 6b 73 0a 09 6f 66 20 eral blocks..of
afa0: 74 68 65 20 63 6f 64 65 2e 20 54 68 65 20 70 72 the code. The pr
afb0: 6f 63 65 73 73 20 69 73 3a 20 64 65 66 69 6e 65 ocess is: define
afc0: 20 6f 6e 65 20 6f 72 20 73 65 76 65 72 61 6c 20 one or several
afd0: 62 6c 6f 63 6b 73 20 67 69 76 69 6e 67 20 74 68 blocks giving th
afe0: 65 20 62 6c 6f 63 6b 20 6e 61 6d 65 2c 0a 09 74 e block name,..t
aff0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6c 69 6e he beginning lin
b000: 65 20 61 6e 64 20 74 68 65 20 65 6e 64 20 6c 69 e and the end li
b010: 6e 65 20 77 69 74 68 20 6f 70 74 69 6f 6e 20 2d ne with option -
b020: 61 64 64 2e 20 41 66 74 65 72 2c 20 73 65 6c 65 add. After, sele
b030: 63 74 20 6f 70 74 69 6f 6e 20 2d 73 74 61 72 74 ct option -start
b040: 2e 0a 09 57 68 65 6e 20 66 69 6e 69 73 68 65 64 ...When finished
b050: 20 6d 65 61 73 75 72 69 6e 67 20 74 69 6d 65 73 measuring times
b060: 2c 20 75 73 65 20 6f 70 74 69 6f 6e 20 2d 64 69 , use option -di
b070: 73 70 6c 61 79 20 74 6f 20 73 65 65 20 74 68 65 splay to see the
b080: 20 72 65 73 75 6c 74 73 2e 20 55 73 65 20 2d 64 results. Use -d
b090: 65 6c 65 74 65 0a 09 74 6f 20 66 69 6e 69 73 68 elete..to finish
b0a0: 2e 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 .. }. Pars
b0b0: 65 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61 eArgs $args $usa
b0c0: 67 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 20 20 gestring opts.
b0d0: 20 20 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 . if { $opt
b0e0: 73 28 2d 63 6c 65 61 72 74 69 6d 65 73 29 20 7d s(-cleartimes) }
b0f0: 20 7b 0a 09 73 65 74 20 54 69 6d 65 4d 65 61 73 {..set TimeMeas
b100: 75 72 65 44 61 74 61 4e 65 77 20 22 22 0a 09 66 ureDataNew ""..f
b110: 6f 72 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65 oreach i $TimeMe
b120: 61 73 75 72 65 44 61 74 61 20 7b 0a 09 20 20 20 asureData {..
b130: 20 66 6f 72 65 61 63 68 20 22 6e 61 6d 65 20 66 foreach "name f
b140: 69 6c 65 20 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 ile lineini line
b150: 65 6e 64 20 6c 61 73 74 74 69 6d 65 22 20 24 69 end lasttime" $i
b160: 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 54 69 6d {...lappend Tim
b170: 65 4d 65 61 73 75 72 65 44 61 74 61 4e 65 77 20 eMeasureDataNew
b180: 5b 6c 69 73 74 20 24 6e 61 6d 65 20 24 66 69 6c [list $name $fil
b190: 65 20 24 6c 69 6e 65 69 6e 69 20 24 6c 69 6e 65 e $lineini $line
b1a0: 65 6e 64 20 22 22 5d 0a 09 20 20 20 20 7d 0a 09 end ""].. }..
b1b0: 7d 0a 09 73 65 74 20 54 69 6d 65 4d 65 61 73 75 }..set TimeMeasu
b1c0: 72 65 44 61 74 61 20 24 54 69 6d 65 4d 65 61 73 reData $TimeMeas
b1d0: 75 72 65 44 61 74 61 4e 65 77 0a 09 72 65 74 75 ureDataNew..retu
b1e0: 72 6e 20 5b 5f 20 22 63 6c 65 61 72 65 64 20 74 rn [_ "cleared t
b1f0: 69 6d 65 73 20 74 61 62 6c 65 22 5d 0a 20 20 20 imes table"].
b200: 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 }. if { $opt
b210: 73 28 2d 73 74 61 72 74 29 20 7d 20 7b 0a 09 73 s(-start) } {..s
b220: 65 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 et debuggerstate
b230: 20 74 69 6d 65 0a 0a 09 73 65 74 20 54 69 6d 65 time...set Time
b240: 4d 65 61 73 75 72 65 44 61 74 61 4e 65 77 20 22 MeasureDataNew "
b250: 22 0a 09 73 65 74 20 66 69 6c 65 73 20 22 22 0a "..set files "".
b260: 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 .set currentfile
b270: 5f 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 _save $currentfi
b280: 6c 65 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 le..set currentf
b290: 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 ile_endline_save
b2a0: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e $currentfile_en
b2b0: 64 6c 69 6e 65 0a 09 73 65 74 20 65 72 72 20 5b dline..set err [
b2c0: 63 61 74 63 68 20 7b 0a 09 20 20 20 20 66 6f 72 catch {.. for
b2d0: 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65 61 73 each i $TimeMeas
b2e0: 75 72 65 44 61 74 61 20 7b 0a 09 09 66 6f 72 65 ureData {...fore
b2f0: 61 63 68 20 22 6e 61 6d 65 20 66 69 6c 65 20 6c ach "name file l
b300: 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64 20 6c ineini lineend l
b310: 61 73 74 74 69 6d 65 22 20 24 69 20 7b 0a 09 09 asttime" $i {...
b320: 20 20 20 20 6c 61 70 70 65 6e 64 20 54 69 6d 65 lappend Time
b330: 4d 65 61 73 75 72 65 44 61 74 61 4e 65 77 20 5b MeasureDataNew [
b340: 6c 69 73 74 20 24 6e 61 6d 65 20 24 66 69 6c 65 list $name $file
b350: 20 24 6c 69 6e 65 69 6e 69 20 24 6c 69 6e 65 65 $lineini $linee
b360: 6e 64 20 22 22 5d 0a 09 09 20 20 20 20 69 66 20 nd ""]... if
b370: 7b 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24 { [lsearchfile $
b380: 66 69 6c 65 73 20 24 66 69 6c 65 5d 20 3d 3d 20 files $file] ==
b390: 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 -1 } {...
b3a0: 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 if { [file exis
b3b0: 74 73 20 24 66 69 6c 65 5d 20 7d 20 7b 0a 09 09 ts $file] } {...
b3c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 6c 69 73 rlis
b3d0: 74 20 2d 71 75 69 65 74 20 24 66 69 6c 65 0a 09 t -quiet $file..
b3e0: 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 70 . lap
b3f0: 70 65 6e 64 20 66 69 6c 65 73 20 24 66 69 6c 65 pend files $file
b400: 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 20 ... }...
b410: 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a }...}.. }.
b420: 09 7d 20 65 72 72 6f 72 73 74 72 69 6e 67 5d 0a .} errorstring].
b430: 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 .set currentfile
b440: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 $currentfile_sa
b450: 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 ve..set currentf
b460: 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72 ile_endline $cur
b470: 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 rentfile_endline
b480: 5f 73 61 76 65 0a 09 69 66 20 7b 20 24 65 72 72 _save..if { $err
b490: 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 20 } {.. error
b4a0: 24 65 72 72 6f 72 73 74 72 69 6e 67 0a 09 7d 0a $errorstring..}.
b4b0: 09 73 65 74 20 54 69 6d 65 4d 65 61 73 75 72 65 .set TimeMeasure
b4c0: 44 61 74 61 20 24 54 69 6d 65 4d 65 61 73 75 72 Data $TimeMeasur
b4d0: 65 44 61 74 61 4e 65 77 0a 09 69 66 20 7b 20 24 eDataNew..if { $
b4e0: 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 remoteserverType
b4f0: 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 26 26 20 24 == "local" && $
b500: 72 65 6d 6f 74 65 73 65 72 76 65 72 20 21 3d 20 remoteserver !=
b510: 22 22 20 7d 20 7b 0a 09 20 20 20 20 23 20 77 68 "" } {.. # wh
b520: 79 20 63 75 72 72 65 6e 74 66 69 6c 65 20 73 68 y currentfile sh
b530: 6f 75 6c 64 20 62 65 20 63 68 61 6e 67 65 64 20 ould be changed
b540: 68 65 72 65 3f 0a 09 20 20 20 20 23 20 20 20 20 here?.. #
b550: 20 20 20 20 20 20 20 20 20 73 65 74 20 63 75 72 set cur
b560: 72 65 6e 74 66 69 6c 65 20 24 72 65 6d 6f 74 65 rentfile $remote
b570: 73 65 72 76 65 72 0a 09 20 20 20 20 72 64 65 62 server.. rdeb
b580: 75 67 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 0a ug -currentfile.
b590: 09 7d 0a 09 69 66 20 7b 20 24 72 65 6d 6f 74 65 .}..if { $remote
b5a0: 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 22 serverType == ""
b5b0: 20 26 26 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e && [info comman
b5c0: 64 73 20 6d 61 73 74 65 72 5d 20 21 3d 20 22 22 ds master] != ""
b5d0: 20 7d 20 7b 0a 09 20 20 20 20 72 64 65 62 75 67 } {.. rdebug
b5e0: 20 2d 6d 61 73 74 65 72 0a 09 7d 0a 09 72 65 74 -master..}..ret
b5f0: 75 72 6e 20 5b 5f 20 22 55 73 69 6e 67 20 27 6d urn [_ "Using 'm
b600: 65 61 73 75 72 65 20 74 69 6d 65 73 27 20 6d 6f easure times' mo
b610: 64 65 22 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 de"]. }. i
b620: 66 20 7b 20 24 6f 70 74 73 28 2d 73 74 6f 70 29 f { $opts(-stop)
b630: 20 7d 20 7b 0a 09 69 66 20 7b 20 24 72 65 6d 6f } {..if { $remo
b640: 74 65 73 65 72 76 65 72 20 3d 3d 20 22 22 20 7d teserver == "" }
b650: 20 7b 0a 09 20 20 20 20 73 65 74 20 64 65 62 75 {.. set debu
b660: 67 67 65 72 73 74 61 74 65 20 22 22 0a 09 20 20 ggerstate ""..
b670: 20 20 72 65 74 75 72 6e 20 5b 5f 20 22 55 73 69 return [_ "Usi
b680: 6e 67 20 6e 6f 20 6d 6f 64 65 22 5d 0a 09 7d 20 ng no mode"]..}
b690: 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 else {.. set
b6a0: 64 65 62 75 67 67 65 72 73 74 61 74 65 20 64 65 debuggerstate de
b6b0: 62 75 67 0a 09 20 20 20 20 72 65 74 75 72 6e 20 bug.. return
b6c0: 5b 5f 20 22 55 73 69 6e 67 20 27 64 65 62 75 67 [_ "Using 'debug
b6d0: 27 20 6d 6f 64 65 22 5d 0a 09 7d 0a 20 20 20 20 ' mode"]..}.
b6e0: 7d 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 }. if { $opts
b6f0: 28 2d 64 65 6c 65 74 65 29 20 7d 20 7b 0a 09 73 (-delete) } {..s
b700: 65 74 20 69 70 6f 73 20 30 0a 09 66 6f 72 65 61 et ipos 0..forea
b710: 63 68 20 69 20 24 54 69 6d 65 4d 65 61 73 75 72 ch i $TimeMeasur
b720: 65 44 61 74 61 20 7b 0a 09 20 20 20 20 66 6f 72 eData {.. for
b730: 65 61 63 68 20 22 6e 61 6d 65 20 66 69 6c 65 20 each "name file
b740: 6c 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64 20 lineini lineend
b750: 6c 61 73 74 74 69 6d 65 22 20 24 69 20 7b 0a 09 lasttime" $i {..
b760: 09 69 66 20 7b 20 24 6e 61 6d 65 20 3d 3d 20 24 .if { $name == $
b770: 6f 70 74 73 28 6e 61 6d 65 29 20 7d 20 7b 0a 09 opts(name) } {..
b780: 09 20 20 20 20 73 65 74 20 54 69 6d 65 4d 65 61 . set TimeMea
b790: 73 75 72 65 44 61 74 61 20 5b 6c 72 65 70 6c 61 sureData [lrepla
b7a0: 63 65 20 24 54 69 6d 65 4d 65 61 73 75 72 65 44 ce $TimeMeasureD
b7b0: 61 74 61 20 24 69 70 6f 73 20 24 69 70 6f 73 5d ata $ipos $ipos]
b7c0: 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 ... if { [inf
b7d0: 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d o exists instrum
b7e0: 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 28 24 entedfilesTime($
b7f0: 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 09 20 20 20 file)] } {...
b800: 20 20 20 20 20 75 6e 73 65 74 20 69 6e 73 74 72 unset instr
b810: 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 umentedfilesTime
b820: 28 24 66 69 6c 65 29 0a 09 09 20 20 20 20 7d 0a ($file)... }.
b830: 09 09 20 20 20 20 72 65 74 75 72 6e 20 5b 5f 20 .. return [_
b840: 22 64 65 6c 65 74 65 64 20 74 69 6d 65 20 62 6c "deleted time bl
b850: 6f 63 6b 20 27 25 73 27 22 20 24 6f 70 74 73 28 ock '%s'" $opts(
b860: 6e 61 6d 65 29 5d 0a 09 09 7d 0a 09 20 20 20 20 name)]...}..
b870: 7d 0a 09 20 20 20 20 69 6e 63 72 20 69 70 6f 73 }.. incr ipos
b880: 0a 09 7d 0a 09 65 72 72 6f 72 20 5b 5f 20 22 45 ..}..error [_ "E
b890: 72 72 6f 72 3a 20 74 69 6d 65 20 62 6c 6f 63 6b rror: time block
b8a0: 20 27 25 73 27 20 6e 6f 74 20 66 6f 75 6e 64 22 '%s' not found"
b8b0: 20 24 6f 70 74 73 28 6e 61 6d 65 29 5d 0a 20 20 $opts(name)].
b8c0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 }. if { $op
b8d0: 74 73 28 2d 6c 69 73 74 29 20 7d 20 7b 0a 09 73 ts(-list) } {..s
b8e0: 65 74 20 72 65 74 76 61 6c 20 22 22 0a 09 66 6f et retval ""..fo
b8f0: 72 65 61 63 68 20 69 20 24 54 69 6d 65 4d 65 61 reach i $TimeMea
b900: 73 75 72 65 44 61 74 61 20 7b 0a 09 20 20 20 20 sureData {..
b910: 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20 24 69 append retval $i
b920: 5c 6e 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 72 \n..}..return $r
b930: 65 74 76 61 6c 0a 20 20 20 20 7d 0a 20 20 20 20 etval. }.
b940: 69 66 20 7b 20 24 6f 70 74 73 28 2d 64 69 73 70 if { $opts(-disp
b950: 6c 61 79 29 20 21 3d 20 30 20 7d 20 7b 0a 09 73 lay) != 0 } {..s
b960: 65 74 20 64 61 74 61 6e 61 6d 65 73 20 22 22 0a et datanames "".
b970: 09 73 65 74 20 74 64 61 74 61 20 22 22 0a 09 66 .set tdata ""..f
b980: 6f 72 20 7b 20 73 65 74 20 69 20 30 20 7d 20 7b or { set i 0 } {
b990: 20 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 $i < [llength $
b9a0: 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 5d TimeMeasureData]
b9b0: 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a } { incr i } {.
b9c0: 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 6e 61 . foreach "na
b9d0: 6d 65 20 66 69 6c 65 20 6c 69 6e 65 69 6e 69 20 me file lineini
b9e0: 6c 69 6e 65 65 6e 64 20 74 69 6d 65 22 20 5b 6c lineend time" [l
b9f0: 69 6e 64 65 78 20 24 54 69 6d 65 4d 65 61 73 75 index $TimeMeasu
ba00: 72 65 44 61 74 61 20 24 69 5d 20 62 72 65 61 6b reData $i] break
ba10: 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c 65 6e .. if { [llen
ba20: 67 74 68 20 24 74 69 6d 65 5d 20 3d 3d 20 30 20 gth $time] == 0
ba30: 7d 20 7b 0a 09 09 73 65 74 20 74 64 61 74 65 20 } {...set tdate
ba40: 5b 6c 69 6e 64 65 78 20 24 54 69 6d 65 4d 65 61 [lindex $TimeMea
ba50: 73 75 72 65 44 61 74 61 20 24 69 5d 0a 09 20 20 sureData $i]..
ba60: 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 6c 6c } elseif { [ll
ba70: 65 6e 67 74 68 20 24 74 69 6d 65 5d 20 3d 3d 31 ength $time] ==1
ba80: 20 7d 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 74 } {...lappend t
ba90: 64 61 74 61 20 5b 6c 69 73 74 20 24 6e 61 6d 65 data [list $name
baa0: 20 24 66 69 6c 65 20 24 6c 69 6e 65 69 6e 69 20 $file $lineini
bab0: 24 6c 69 6e 65 65 6e 64 20 5c 0a 09 09 20 20 20 $lineend \...
bac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bad0: 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 [lindex [lindex
bae0: 24 74 69 6d 65 20 30 5d 20 31 5d 5d 0a 09 20 20 $time 0] 1]]..
baf0: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 66 6f 72 } else {...for
bb00: 65 61 63 68 20 6a 20 5b 6c 73 6f 72 74 20 2d 69 each j [lsort -i
bb10: 6e 74 65 67 65 72 20 2d 69 6e 64 65 78 20 30 20 nteger -index 0
bb20: 24 74 69 6d 65 5d 20 7b 0a 09 09 20 20 20 20 6c $time] {... l
bb30: 61 70 70 65 6e 64 20 74 64 61 74 61 20 5b 6c 69 append tdata [li
bb40: 73 74 20 22 24 6e 61 6d 65 20 28 6c 65 76 65 6c st "$name (level
bb50: 3d 5b 6c 69 6e 64 65 78 20 24 6a 20 30 5d 29 22 =[lindex $j 0])"
bb60: 20 24 66 69 6c 65 20 24 6c 69 6e 65 69 6e 69 20 $file $lineini
bb70: 24 6c 69 6e 65 65 6e 64 20 5c 0a 09 09 20 20 20 $lineend \...
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
bb90: 20 20 20 20 5b 6c 69 6e 64 65 78 20 24 6a 20 31 [lindex $j 1
bba0: 5d 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d ]]...}.. }..}
bbb0: 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 30 20 ..for { set i 0
bbc0: 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 } { $i < [llengt
bbd0: 68 20 24 74 64 61 74 61 5d 20 7d 20 7b 20 69 6e h $tdata] } { in
bbe0: 63 72 20 69 20 7d 20 7b 0a 09 20 20 20 20 66 6f cr i } {.. fo
bbf0: 72 65 61 63 68 20 22 6e 61 6d 65 20 2d 20 6c 69 reach "name - li
bc00: 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64 20 74 69 neini lineend ti
bc10: 6d 65 22 20 5b 6c 69 6e 64 65 78 20 24 74 64 61 me" [lindex $tda
bc20: 74 61 20 24 69 5d 20 62 72 65 61 6b 0a 09 20 20 ta $i] break..
bc30: 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 if { ![info ex
bc40: 69 73 74 73 20 64 61 74 61 28 24 6e 61 6d 65 29 ists data($name)
bc50: 5d 20 7d 20 7b 0a 09 09 73 65 74 20 68 69 6c 65 ] } {...set hile
bc60: 76 65 6c 20 30 0a 09 09 73 65 74 20 64 61 74 61 vel 0...set data
bc70: 28 24 6e 61 6d 65 29 20 5b 6c 69 73 74 20 24 68 ($name) [list $h
bc80: 69 6c 65 76 65 6c 20 24 74 69 6d 65 20 30 5d 0a ilevel $time 0].
bc90: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
bca0: 73 65 74 20 68 69 6c 65 76 65 6c 20 5b 6c 69 6e set hilevel [lin
bcb0: 64 65 78 20 24 64 61 74 61 28 24 6e 61 6d 65 29 dex $data($name)
bcc0: 20 30 5d 0a 09 09 0a 09 20 20 20 20 7d 0a 09 20 0]..... }..
bcd0: 20 20 20 6c 61 70 70 65 6e 64 20 64 61 74 61 6e lappend datan
bce0: 61 6d 65 73 20 24 6e 61 6d 65 0a 09 20 20 20 20 ames $name..
bcf0: 69 66 20 7b 20 24 74 69 6d 65 20 3d 3d 20 22 22 if { $time == ""
bd00: 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a } { continue }.
bd10: 0a 09 20 20 20 20 69 6e 63 72 20 68 69 6c 65 76 .. incr hilev
bd20: 65 6c 0a 09 20 20 20 20 73 65 74 20 73 75 6d 20 el.. set sum
bd30: 30 0a 09 20 20 20 20 66 6f 72 20 7b 73 65 74 20 0.. for {set
bd40: 6a 20 5b 65 78 70 72 20 24 69 2b 31 5d 20 7d 20 j [expr $i+1] }
bd50: 7b 20 24 6a 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 { $j < [llength
bd60: 24 74 64 61 74 61 5d 20 7d 20 7b 20 69 6e 63 72 $tdata] } { incr
bd70: 20 6a 20 7d 20 7b 0a 09 09 66 6f 72 65 61 63 68 j } {...foreach
bd80: 20 22 6e 61 6d 65 5f 69 6e 20 2d 20 6c 69 6e 65 "name_in - line
bd90: 69 6e 69 5f 69 6e 20 6c 69 6e 65 65 6e 64 5f 69 ini_in lineend_i
bda0: 6e 20 74 69 6d 65 5f 69 6e 22 20 5b 6c 69 6e 64 n time_in" [lind
bdb0: 65 78 20 24 74 64 61 74 61 20 24 6a 5d 20 62 72 ex $tdata $j] br
bdc0: 65 61 6b 0a 09 09 69 66 20 7b 20 24 6c 69 6e 65 eak...if { $line
bdd0: 69 6e 69 5f 69 6e 20 3e 20 24 6c 69 6e 65 65 6e ini_in > $lineen
bde0: 64 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 09 d } { break }...
bdf0: 69 66 20 7b 20 24 6c 69 6e 65 69 6e 69 5f 69 6e if { $lineini_in
be00: 20 3d 3d 20 24 6c 69 6e 65 69 6e 69 20 26 26 20 == $lineini &&
be10: 24 6c 69 6e 65 65 6e 64 5f 69 6e 20 3d 3d 20 24 $lineend_in == $
be20: 6c 69 6e 65 65 6e 64 20 7d 20 7b 20 63 6f 6e 74 lineend } { cont
be30: 69 6e 75 65 20 7d 0a 09 09 69 66 20 7b 20 24 74 inue }...if { $t
be40: 69 6d 65 5f 69 6e 20 3d 3d 20 22 22 20 7d 20 7b ime_in == "" } {
be50: 0a 09 09 20 20 20 20 73 65 74 20 70 65 72 63 65 ... set perce
be60: 6e 74 20 22 22 0a 09 09 7d 20 65 6c 73 65 20 7b nt ""...} else {
be70: 0a 09 09 20 20 20 20 73 65 74 20 70 65 72 63 65 ... set perce
be80: 6e 74 20 5b 65 78 70 72 20 24 74 69 6d 65 5f 69 nt [expr $time_i
be90: 6e 2a 31 30 30 2f 64 6f 75 62 6c 65 28 24 74 69 n*100/double($ti
bea0: 6d 65 29 5d 0a 09 09 20 20 20 20 69 6e 63 72 20 me)]... incr
beb0: 73 75 6d 20 24 74 69 6d 65 5f 69 6e 0a 09 09 7d sum $time_in...}
bec0: 0a 09 09 73 65 74 20 64 61 74 61 28 24 6e 61 6d ...set data($nam
bed0: 65 5f 69 6e 29 20 5b 6c 69 73 74 20 24 68 69 6c e_in) [list $hil
bee0: 65 76 65 6c 20 24 74 69 6d 65 5f 69 6e 20 24 70 evel $time_in $p
bef0: 65 72 63 65 6e 74 5d 0a 09 20 20 20 20 7d 0a 09 ercent].. }..
bf00: 20 20 20 20 69 66 20 7b 20 24 73 75 6d 20 3e 20 if { $sum >
bf10: 30 20 26 26 20 24 74 69 6d 65 20 21 3d 20 22 22 0 && $time != ""
bf20: 20 26 26 20 24 73 75 6d 20 3c 20 24 74 69 6d 65 && $sum < $time
bf30: 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 6d 6e 61 } {...set remna
bf40: 6d 65 20 5b 5f 20 22 52 65 6d 61 69 6e 69 6e 67 me [_ "Remaining
bf50: 20 74 69 6d 65 20 66 6f 72 20 27 25 73 27 22 20 time for '%s'"
bf60: 24 6e 61 6d 65 5d 0a 09 09 73 65 74 20 74 69 6d $name]...set tim
bf70: 65 5f 72 65 6d 20 5b 65 78 70 72 20 24 74 69 6d e_rem [expr $tim
bf80: 65 2d 24 73 75 6d 5d 0a 09 09 73 65 74 20 64 61 e-$sum]...set da
bf90: 74 61 28 24 72 65 6d 6e 61 6d 65 29 20 5b 6c 69 ta($remname) [li
bfa0: 73 74 20 24 68 69 6c 65 76 65 6c 20 24 74 69 6d st $hilevel $tim
bfb0: 65 5f 72 65 6d 20 5b 65 78 70 72 20 24 74 69 6d e_rem [expr $tim
bfc0: 65 5f 72 65 6d 2a 31 30 30 2f 64 6f 75 62 6c 65 e_rem*100/double
bfd0: 28 24 74 69 6d 65 29 5d 5d 0a 09 09 6c 61 70 70 ($time)]]...lapp
bfe0: 65 6e 64 20 64 61 74 61 6e 61 6d 65 73 20 24 72 end datanames $r
bff0: 65 6d 6e 61 6d 65 0a 09 20 20 20 20 7d 0a 09 7d emname.. }..}
c000: 0a 09 73 65 74 20 75 6e 69 74 6e 61 6d 65 20 24 ..set unitname $
c010: 6f 70 74 73 28 2d 64 69 73 70 6c 61 79 29 0a 09 opts(-display)..
c020: 73 77 69 74 63 68 20 2d 2d 20 24 6f 70 74 73 28 switch -- $opts(
c030: 2d 64 69 73 70 6c 61 79 29 20 7b 0a 09 20 20 20 -display) {..
c040: 20 6d 69 63 72 6f 73 65 63 20 7b 20 73 65 74 20 microsec { set
c050: 75 6e 69 74 66 61 63 74 6f 72 20 31 20 3b 20 73 unitfactor 1 ; s
c060: 65 74 20 66 6f 72 6d 61 74 20 25 69 20 7d 0a 09 et format %i }..
c070: 20 20 20 20 6d 69 6c 69 73 65 63 20 7b 20 73 65 milisec { se
c080: 74 20 75 6e 69 74 66 61 63 74 6f 72 20 31 65 2d t unitfactor 1e-
c090: 33 20 20 3b 20 73 65 74 20 66 6f 72 6d 61 74 20 3 ; set format
c0a0: 25 2e 34 67 20 7d 0a 09 20 20 20 20 73 65 63 20 %.4g }.. sec
c0b0: 7b 20 73 65 74 20 75 6e 69 74 66 61 63 74 6f 72 { set unitfactor
c0c0: 20 31 65 2d 36 20 20 3b 20 73 65 74 20 66 6f 72 1e-6 ; set for
c0d0: 6d 61 74 20 25 2e 34 67 20 7d 0a 09 20 20 20 20 mat %.4g }..
c0e0: 6d 69 6e 20 7b 20 73 65 74 20 75 6e 69 74 66 61 min { set unitfa
c0f0: 63 74 6f 72 20 31 65 2d 36 2f 36 30 2e 30 20 20 ctor 1e-6/60.0
c100: 3b 20 73 65 74 20 66 6f 72 6d 61 74 20 25 2e 34 ; set format %.4
c110: 67 20 7d 0a 09 20 20 20 20 64 65 66 61 75 6c 74 g }.. default
c120: 20 7b 0a 09 09 65 72 72 6f 72 20 5b 2d 20 22 45 {...error [- "E
c130: 72 72 6f 72 20 69 6e 20 64 69 73 70 6c 61 79 20 rror in display
c140: 75 6e 69 74 73 2e 5c 6e 25 73 22 20 24 75 73 61 units.\n%s" $usa
c150: 67 65 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 7d gestring].. }
c160: 0a 09 7d 0a 09 73 65 74 20 72 65 74 76 61 6c 20 ..}..set retval
c170: 22 22 0a 09 66 6f 72 65 61 63 68 20 69 20 24 64 ""..foreach i $d
c180: 61 74 61 6e 61 6d 65 73 20 7b 0a 09 20 20 20 20 atanames {..
c190: 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20 5b 73 append retval [s
c1a0: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 2e 2e tring repeat "..
c1b0: 2e 2e 2e 22 20 5b 6c 69 6e 64 65 78 20 24 64 61 ..." [lindex $da
c1c0: 74 61 28 24 69 29 20 30 5d 5d 0a 09 20 20 20 20 ta($i) 0]]..
c1d0: 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20 24 69 append retval $i
c1e0: 0a 09 20 20 20 20 73 65 74 20 74 69 6d 65 20 5b .. set time [
c1f0: 6c 69 6e 64 65 78 20 24 64 61 74 61 28 24 69 29 lindex $data($i)
c200: 20 31 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 74 1].. if { $t
c210: 69 6d 65 20 21 3d 20 22 22 20 7d 20 7b 20 73 65 ime != "" } { se
c220: 74 20 74 69 6d 65 20 5b 66 6f 72 6d 61 74 20 24 t time [format $
c230: 66 6f 72 6d 61 74 20 5b 65 78 70 72 20 24 74 69 format [expr $ti
c240: 6d 65 2a 24 75 6e 69 74 66 61 63 74 6f 72 5d 5d me*$unitfactor]]
c250: 20 7d 0a 09 20 20 20 20 61 70 70 65 6e 64 20 72 }.. append r
c260: 65 74 76 61 6c 20 22 20 24 74 69 6d 65 20 24 75 etval " $time $u
c270: 6e 69 74 6e 61 6d 65 22 0a 09 20 20 20 20 69 66 nitname".. if
c280: 20 7b 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61 { [lindex $data
c290: 28 24 69 29 20 32 5d 20 21 3d 20 22 22 20 26 26 ($i) 2] != "" &&
c2a0: 20 5b 6c 69 6e 64 65 78 20 24 64 61 74 61 28 24 [lindex $data($
c2b0: 69 29 20 32 5d 20 21 3d 20 30 20 7d 20 7b 0a 09 i) 2] != 0 } {..
c2c0: 09 61 70 70 65 6e 64 20 72 65 74 76 61 6c 20 22 .append retval "
c2d0: 20 28 5b 66 6f 72 6d 61 74 20 25 2e 33 67 20 5b ([format %.3g [
c2e0: 6c 69 6e 64 65 78 20 24 64 61 74 61 28 24 69 29 lindex $data($i)
c2f0: 20 32 5d 5d 25 29 22 0a 09 20 20 20 20 7d 0a 09 2]]%)".. }..
c300: 20 20 20 20 69 66 20 7b 24 74 69 6d 65 20 3d 3d if {$time ==
c310: 20 22 22 20 7d 20 7b 20 61 70 70 65 6e 64 20 72 "" } { append r
c320: 65 74 76 61 6c 20 5b 5f 20 22 20 28 74 68 69 73 etval [_ " (this
c330: 20 62 6c 6f 63 6b 20 6e 6f 74 20 65 78 65 63 75 block not execu
c340: 74 65 64 20 73 69 6e 63 65 20 73 74 61 72 74 29 ted since start)
c350: 22 5d 20 7d 0a 09 20 20 20 20 61 70 70 65 6e 64 "] }.. append
c360: 20 72 65 74 76 61 6c 20 5c 6e 0a 09 7d 0a 09 72 retval \n..}..r
c370: 65 74 75 72 6e 20 24 72 65 74 76 61 6c 0a 20 20 eturn $retval.
c380: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 24 6f }. if { !$o
c390: 70 74 73 28 2d 61 64 64 29 20 7d 20 7b 0a 09 65 pts(-add) } {..e
c3a0: 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 3a 20 rror [_ "Error:
c3b0: 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 it is necessary
c3c0: 74 6f 20 73 65 6c 65 63 74 20 6f 6e 65 20 73 77 to select one sw
c3d0: 69 74 63 68 5c 6e 25 73 22 20 24 75 73 61 67 65 itch\n%s" $usage
c3e0: 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 string]. }.
c3f0: 20 20 69 66 20 7b 20 24 6f 70 74 73 28 6e 61 6d if { $opts(nam
c400: 65 29 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 e) == "" } {..er
c410: 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 3a 20 69 ror [_ "Error: i
c420: 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 t is necessary t
c430: 6f 20 65 6e 74 65 72 20 61 20 6e 61 6d 65 20 66 o enter a name f
c440: 6f 72 20 74 68 65 20 62 6c 6f 63 6b 5c 6e 25 73 or the block\n%s
c450: 22 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d 0a " $usagestring].
c460: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 }. if { !
c470: 5b 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 [string is integ
c480: 65 72 20 2d 73 74 72 69 63 74 20 24 6f 70 74 73 er -strict $opts
c490: 28 6c 69 6e 65 69 6e 69 29 5d 20 7c 7c 20 24 6f (lineini)] || $o
c4a0: 70 74 73 28 6c 69 6e 65 69 6e 69 29 20 3c 20 31 pts(lineini) < 1
c4b0: 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 } {..error [_ "
c4c0: 45 72 72 6f 72 3a 20 6c 69 6e 65 69 6e 69 20 6d Error: lineini m
c4d0: 75 73 74 20 62 65 20 61 20 70 6f 73 69 74 69 76 ust be a positiv
c4e0: 65 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20 24 75 e number\n%s" $u
c4f0: 73 61 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 20 sagestring].
c500: 7d 0a 20 20 20 20 69 66 20 7b 20 21 5b 73 74 72 }. if { ![str
c510: 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20 2d ing is integer -
c520: 73 74 72 69 63 74 20 24 6f 70 74 73 28 6c 69 6e strict $opts(lin
c530: 65 65 6e 64 29 5d 20 7c 7c 20 24 6f 70 74 73 28 eend)] || $opts(
c540: 6c 69 6e 65 65 6e 64 29 20 3c 20 31 20 7d 20 7b lineend) < 1 } {
c550: 0a 09 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f ..error [_ "Erro
c560: 72 3a 20 6c 69 6e 65 65 6e 64 20 6d 75 73 74 20 r: lineend must
c570: 62 65 20 61 20 70 6f 73 69 74 69 76 65 20 6e 75 be a positive nu
c580: 6d 62 65 72 5c 6e 25 73 22 20 24 75 73 61 67 65 mber\n%s" $usage
c590: 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 string]. }.
c5a0: 20 20 69 66 20 7b 20 24 6f 70 74 73 28 6c 69 6e if { $opts(lin
c5b0: 65 65 6e 64 29 20 3c 20 24 6f 70 74 73 28 6c 69 eend) < $opts(li
c5c0: 6e 65 69 6e 69 29 20 7d 20 7b 0a 09 65 72 72 6f neini) } {..erro
c5d0: 72 20 5b 5f 20 22 45 72 72 6f 72 3a 20 6c 69 6e r [_ "Error: lin
c5e0: 65 65 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 73 eend cannot be s
c5f0: 6d 61 6c 6c 65 72 20 74 68 61 6e 20 6c 69 6e 65 maller than line
c600: 69 6e 69 5c 6e 25 73 22 20 24 75 73 61 67 65 73 ini\n%s" $usages
c610: 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 20 tring]. }.
c620: 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69 if { $currentfi
c630: 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 le == "" } {..er
c640: 72 6f 72 5b 5f 20 20 22 45 72 72 6f 72 3a 20 74 ror[_ "Error: t
c650: 68 65 72 65 20 69 73 20 6e 6f 20 63 75 72 72 65 here is no curre
c660: 6e 74 20 66 69 6c 65 22 5d 0a 20 20 20 20 7d 0a nt file"]. }.
c670: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 54 foreach i $T
c680: 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 20 7b imeMeasureData {
c690: 0a 09 66 6f 72 65 61 63 68 20 22 6e 61 6d 65 20 ..foreach "name
c6a0: 66 69 6c 65 20 6c 69 6e 65 69 6e 69 20 6c 69 6e file lineini lin
c6b0: 65 65 6e 64 20 6c 61 73 74 74 69 6d 65 22 20 24 eend lasttime" $
c6c0: 69 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 6e i {.. if { $n
c6d0: 61 6d 65 20 3d 3d 20 24 6f 70 74 73 28 6e 61 6d ame == $opts(nam
c6e0: 65 29 20 7d 20 7b 0a 09 09 65 72 72 6f 72 20 5b e) } {...error [
c6f0: 5f 20 22 62 6c 6f 63 6b 20 6e 61 6d 65 20 27 25 _ "block name '%
c700: 73 27 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 s' already exist
c710: 73 22 20 24 6f 70 74 73 28 6e 61 6d 65 29 5d 0a s" $opts(name)].
c720: 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 . }.. set
c730: 66 61 69 6c 20 30 0a 09 20 20 20 20 69 66 20 7b fail 0.. if {
c740: 20 24 6f 70 74 73 28 6c 69 6e 65 69 6e 69 29 20 $opts(lineini)
c750: 3c 20 24 6c 69 6e 65 69 6e 69 20 26 26 20 24 6f < $lineini && $o
c760: 70 74 73 28 6c 69 6e 65 65 6e 64 29 20 3e 3d 20 pts(lineend) >=
c770: 24 6c 69 6e 65 69 6e 69 20 26 26 20 5c 0a 09 09 $lineini && \...
c780: 20 20 20 20 20 24 6f 70 74 73 28 6c 69 6e 65 65 $opts(linee
c790: 6e 64 29 20 3c 20 24 6c 69 6e 65 65 6e 64 20 7d nd) < $lineend }
c7a0: 20 7b 20 73 65 74 20 66 61 69 6c 20 31 20 7d 0a { set fail 1 }.
c7b0: 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 . if { $opts(
c7c0: 6c 69 6e 65 69 6e 69 29 20 3e 20 24 6c 69 6e 65 lineini) > $line
c7d0: 69 6e 69 20 26 26 20 24 6f 70 74 73 28 6c 69 6e ini && $opts(lin
c7e0: 65 69 6e 69 29 20 3c 3d 20 24 6c 69 6e 65 65 6e eini) <= $lineen
c7f0: 64 20 26 26 20 0a 09 09 20 24 6f 70 74 73 28 6c d && ... $opts(l
c800: 69 6e 65 65 6e 64 29 20 3e 20 24 6c 69 6e 65 65 ineend) > $linee
c810: 6e 64 20 7d 20 7b 20 73 65 74 20 66 61 69 6c 20 nd } { set fail
c820: 31 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 66 1 }.. if { $f
c830: 61 69 6c 20 7d 20 7b 0a 09 09 65 72 72 6f 72 20 ail } {...error
c840: 5b 5f 20 22 45 72 72 6f 72 3a 20 62 6c 6f 63 6b [_ "Error: block
c850: 20 69 73 20 63 72 6f 73 73 69 6e 67 20 77 69 74 is crossing wit
c860: 68 20 62 6c 6f 63 6b 20 27 25 73 27 22 20 24 6e h block '%s'" $n
c870: 61 6d 65 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 ame].. }..}.
c880: 20 20 20 7d 0a 20 20 20 20 70 72 6f 63 20 53 6f }. proc So
c890: 72 74 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74 rtTimeMeasureDat
c8a0: 61 20 7b 20 61 31 20 61 32 20 7d 20 7b 0a 09 73 a { a1 a2 } {..s
c8b0: 65 74 20 61 31 5f 6c 69 20 5b 6c 69 6e 64 65 78 et a1_li [lindex
c8c0: 20 24 61 31 20 32 5d 0a 09 73 65 74 20 61 31 5f $a1 2]..set a1_
c8d0: 6c 65 20 5b 6c 69 6e 64 65 78 20 24 61 31 20 33 le [lindex $a1 3
c8e0: 5d 0a 09 73 65 74 20 61 32 5f 6c 69 20 5b 6c 69 ]..set a2_li [li
c8f0: 6e 64 65 78 20 24 61 32 20 32 5d 0a 09 73 65 74 ndex $a2 2]..set
c900: 20 61 32 5f 6c 65 20 5b 6c 69 6e 64 65 78 20 24 a2_le [lindex $
c910: 61 32 20 33 5d 0a 09 0a 09 69 66 20 7b 20 24 61 a2 3]....if { $a
c920: 31 5f 6c 69 20 3c 20 24 61 32 5f 6c 69 20 7d 20 1_li < $a2_li }
c930: 7b 20 72 65 74 75 72 6e 20 2d 31 20 7d 0a 09 69 { return -1 }..i
c940: 66 20 7b 20 24 61 31 5f 6c 69 20 3e 20 24 61 32 f { $a1_li > $a2
c950: 5f 6c 69 20 7d 20 7b 20 72 65 74 75 72 6e 20 31 _li } { return 1
c960: 20 7d 0a 09 69 66 20 7b 20 24 61 31 5f 6c 65 20 }..if { $a1_le
c970: 3e 20 24 61 32 5f 6c 65 20 7d 20 7b 20 72 65 74 > $a2_le } { ret
c980: 75 72 6e 20 2d 31 20 7d 0a 09 69 66 20 7b 20 24 urn -1 }..if { $
c990: 61 31 5f 6c 65 20 3c 20 24 61 32 5f 6c 65 20 7d a1_le < $a2_le }
c9a0: 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 0a 09 72 { return 1 }..r
c9b0: 65 74 75 72 6e 20 30 0a 20 20 20 20 7d 0a 20 20 eturn 0. }.
c9c0: 20 20 6c 61 70 70 65 6e 64 20 54 69 6d 65 4d 65 lappend TimeMe
c9d0: 61 73 75 72 65 44 61 74 61 20 5b 6c 69 73 74 20 asureData [list
c9e0: 24 6f 70 74 73 28 6e 61 6d 65 29 20 24 63 75 72 $opts(name) $cur
c9f0: 72 65 6e 74 66 69 6c 65 20 24 6f 70 74 73 28 6c rentfile $opts(l
ca00: 69 6e 65 69 6e 69 29 20 24 6f 70 74 73 28 6c 69 ineini) $opts(li
ca10: 6e 65 65 6e 64 29 20 22 22 5d 0a 20 20 20 20 73 neend) ""]. s
ca20: 65 74 20 54 69 6d 65 4d 65 61 73 75 72 65 44 61 et TimeMeasureDa
ca30: 74 61 20 5b 6c 73 6f 72 74 20 2d 63 6f 6d 6d 61 ta [lsort -comma
ca40: 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a nd RamDebugger::
ca50: 53 6f 72 74 54 69 6d 65 4d 65 61 73 75 72 65 44 SortTimeMeasureD
ca60: 61 74 61 20 24 54 69 6d 65 4d 65 61 73 75 72 65 ata $TimeMeasure
ca70: 44 61 74 61 5d 0a 0a 20 20 20 20 69 66 20 7b 20 Data].. if {
ca80: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 [info exists ins
ca90: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 trumentedfilesTi
caa0: 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 me($currentfile)
cab0: 5d 20 7d 20 7b 0a 09 75 6e 73 65 74 20 69 6e 73 ] } {..unset ins
cac0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 trumentedfilesTi
cad0: 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 me($currentfile)
cae0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 . }. retur
caf0: 6e 20 5b 5f 20 22 41 64 64 65 64 20 74 69 6d 65 n [_ "Added time
cb00: 20 62 6c 6f 63 6b 20 27 25 73 27 22 20 24 6f 70 block '%s'" $op
cb10: 74 73 28 6e 61 6d 65 29 5d 0a 7d 0a 0a 70 72 6f ts(name)].}..pro
cb20: 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 c RamDebugger::r
cb30: 6c 69 73 74 20 7b 20 61 72 67 73 20 7d 20 7b 0a list { args } {.
cb40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
cb50: 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 rentfile. var
cb60: 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
cb70: 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 e_endline. va
cb80: 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 6c 69 riable currentli
cb90: 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ne. variable
cba0: 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 currentfileIsMod
cbb0: 69 66 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 ified. variab
cbc0: 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61 72 le files. var
cbd0: 69 61 62 6c 65 20 66 69 6c 65 73 5f 65 6e 64 6c iable files_endl
cbe0: 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ine. variable
cbf0: 20 66 69 6c 65 73 6d 74 69 6d 65 0a 20 20 20 20 filesmtime.
cc00: 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 6c 69 variable filesli
cc10: 73 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 st. variable
cc20: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
cc30: 73 50 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 sP. variable
cc40: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
cc50: 73 52 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 sR. variable
cc60: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
cc70: 73 54 69 6d 65 0a 20 20 20 20 76 61 72 69 61 62 sTime. variab
cc80: 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 le instrumentedf
cc90: 69 6c 65 73 53 65 6e 74 0a 20 20 20 20 76 61 72 ilesSent. var
cca0: 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 iable instrument
ccb0: 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20 20 20 20 edfilesInfo.
ccc0: 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 variable remotes
ccd0: 65 72 76 65 72 0a 20 20 20 20 76 61 72 69 61 62 erver. variab
cce0: 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54 le remoteserverT
ccf0: 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ype. variable
cd00: 20 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 20 debuggerstate.
cd10: 20 20 20 76 61 72 69 61 62 6c 65 20 54 69 6d 65 variable Time
cd20: 4d 65 61 73 75 72 65 44 61 74 61 0a 20 20 20 20 MeasureData.
cd30: 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
cd40: 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73 .. set usages
cd50: 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 6c tring {usage: rl
cd60: 69 73 74 20 3f 73 77 69 74 63 68 65 73 3f 20 3f ist ?switches? ?
cd70: 66 69 6c 65 3f 20 3f 6c 69 6e 65 3f 0a 09 2d 68 file? ?line?..-h
cd80: 3a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 : dis
cd90: 70 6c 61 79 73 20 75 73 61 67 65 0a 09 2d 71 75 plays usage..-qu
cda0: 69 65 74 3a 20 20 20 20 20 20 20 20 64 6f 20 6e iet: do n
cdb0: 6f 74 20 70 72 69 6e 74 20 61 6e 79 74 68 69 6e ot print anythin
cdc0: 67 0a 09 2d 66 6f 72 63 65 3a 20 20 20 20 20 20 g..-force:
cdd0: 20 20 66 6f 72 63 65 20 74 6f 20 72 65 6c 6f 61 force to reloa
cde0: 64 20 66 69 6c 65 0a 09 2d 72 65 69 6e 73 74 72 d file..-reinstr
cdf0: 75 6d 65 6e 74 3a 20 66 6f 72 63 65 20 74 6f 20 ument: force to
ce00: 72 65 69 6e 73 74 72 75 6d 65 6e 74 0a 09 2d 72 reinstrument..-r
ce10: 65 73 65 6e 64 3a 20 20 20 20 20 20 20 66 6f 72 esend: for
ce20: 63 65 20 74 6f 20 73 65 6e 64 20 61 67 61 69 6e ce to send again
ce30: 0a 09 2d 61 73 6d 61 69 6e 66 69 6c 65 3a 20 20 ..-asmainfile:
ce40: 20 57 68 65 6e 20 64 65 62 75 67 67 69 6e 67 20 When debugging
ce50: 6c 6f 63 61 6c 6c 79 2c 20 74 68 65 20 66 69 72 locally, the fir
ce60: 73 74 20 66 69 6c 65 2c 20 66 69 72 73 74 20 74 st file, first t
ce70: 69 6d 65 20 20 6d 75 73 74 20 62 65 20 6c 69 73 ime must be lis
ce80: 74 20 6c 69 6b 65 20 74 68 69 73 0a 09 2d 72 65 t like this..-re
ce90: 74 75 72 6e 64 61 74 61 3a 20 20 20 49 6e 73 74 turndata: Inst
cea0: 65 61 64 20 6f 66 20 73 65 6e 64 69 6e 67 20 69 ead of sending i
ceb0: 6e 73 74 72 20 66 69 6c 65 2c 20 72 65 74 75 72 nstr file, retur
cec0: 6e 20 69 74 0a 09 2d 65 6e 63 6f 64 69 6e 67 20 n it..-encoding
ced0: 65 6e 63 3a 20 6f 70 65 6e 20 66 69 6c 65 20 77 enc: open file w
cee0: 69 74 68 20 74 68 65 20 67 69 76 65 6e 20 65 6e ith the given en
cef0: 63 6f 64 69 6e 67 0a 09 2d 72 65 74 75 72 6e 5f coding..-return_
cf00: 65 72 72 6f 72 3a 20 20 49 6e 73 74 65 61 64 20 error: Instead
cf10: 6f 66 20 6f 70 65 6e 69 6e 67 20 61 20 77 61 72 of opening a war
cf20: 6e 69 6e 67 20 77 69 6e 64 6f 77 2c 20 72 65 74 ning window, ret
cf30: 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 0a 09 2d urns an error..-
cf40: 2d 3a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e -: en
cf50: 64 20 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 20 20 d of options.
cf60: 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 }. ParseArgs
cf70: 20 24 61 72 67 73 20 24 75 73 61 67 65 73 74 72 $args $usagestr
cf80: 69 6e 67 20 6f 70 74 73 0a 20 20 20 20 73 65 74 ing opts. set
cf90: 20 66 6f 72 63 65 20 24 6f 70 74 73 28 2d 66 6f force $opts(-fo
cfa0: 72 63 65 29 0a 20 20 20 20 73 65 74 20 72 65 69 rce). set rei
cfb0: 6e 73 74 72 75 6d 65 6e 74 20 24 6f 70 74 73 28 nstrument $opts(
cfc0: 2d 72 65 69 6e 73 74 72 75 6d 65 6e 74 29 0a 0a -reinstrument)..
cfd0: 20 20 20 20 69 66 20 7b 20 21 5b 73 74 72 69 6e if { ![strin
cfe0: 67 20 69 73 20 69 6e 74 65 67 65 72 20 24 6f 70 g is integer $op
cff0: 74 73 28 6c 69 6e 65 29 5d 20 7d 20 7b 0a 09 65 ts(line)] } {..e
d000: 72 72 6f 72 20 5b 5f 20 22 6c 69 6e 65 20 27 25 rror [_ "line '%
d010: 73 27 20 6d 75 73 74 20 62 65 20 61 20 6e 75 6d s' must be a num
d020: 62 65 72 5c 6e 25 73 22 20 24 6f 70 74 73 28 6c ber\n%s" $opts(l
d030: 69 6e 65 29 20 24 75 73 61 67 65 73 74 72 69 6e ine) $usagestrin
d040: 67 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 g]. }.. se
d050: 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 t currentfile_sa
d060: 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a ve $currentfile.
d070: 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 set currentf
d080: 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 ile_endline_save
d090: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e $currentfile_en
d0a0: 64 6c 69 6e 65 0a 20 20 20 20 69 66 20 7b 20 24 dline. if { $
d0b0: 6f 70 74 73 28 66 69 6c 65 29 20 21 3d 20 22 22 opts(file) != ""
d0c0: 20 7d 20 7b 20 73 65 74 20 63 75 72 72 65 6e 74 } { set current
d0d0: 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c file [filenormal
d0e0: 69 7a 65 20 24 6f 70 74 73 28 66 69 6c 65 29 5d ize $opts(file)]
d0f0: 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 63 75 }.. if { $cu
d100: 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 22 20 rrentfile == ""
d110: 7d 20 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 } {..set current
d120: 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c file $currentfil
d130: 65 5f 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 e_save..set curr
d140: 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 entfile_endline
d150: 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 $currentfile_end
d160: 6c 69 6e 65 5f 73 61 76 65 0a 09 65 72 72 6f 72 line_save..error
d170: 20 5b 5f 20 22 69 74 20 69 73 20 6e 65 63 65 73 [_ "it is neces
d180: 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 20 sary to enter a
d190: 66 69 6c 65 20 6e 61 6d 65 5c 6e 25 73 22 20 24 file name\n%s" $
d1a0: 75 73 61 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 usagestring].
d1b0: 20 7d 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 }.. set file
d1c0: 74 79 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 type [GiveFileTy
d1d0: 70 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d pe $currentfile]
d1e0: 0a 20 20 20 20 23 20 20 20 20 20 69 66 20 7b 20 . # if {
d1f0: 5b 72 65 67 65 78 70 20 7b 5c 2e 28 68 7c 63 7c [regexp {\.(h|c|
d200: 63 63 29 24 7d 20 24 63 75 72 72 65 6e 74 66 69 cc)$} $currentfi
d210: 6c 65 5d 20 7d 20 7b 0a 20 20 20 20 23 20 20 20 le] } {. #
d220: 20 20 20 20 20 20 73 65 74 20 66 69 6c 65 74 79 set filety
d230: 70 65 20 63 2b 2b 0a 20 20 20 20 23 20 20 20 20 pe c++. #
d240: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 23 20 } else {. #
d250: 20 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65 set file
d260: 74 79 70 65 20 74 63 6c 0a 20 20 20 20 23 20 20 type tcl. #
d270: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 63 }. if { $c
d280: 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 2a urrentfile == "*
d290: 4d 61 63 72 6f 73 2a 22 20 26 26 20 21 24 63 75 Macros*" && !$cu
d2a0: 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 rrentfileIsModif
d2b0: 69 65 64 20 26 26 20 5c 0a 09 20 20 20 20 20 21 ied && \.. !
d2c0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 [info exists ins
d2d0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 trumentedfilesP(
d2e0: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d $currentfile)] }
d2f0: 20 7b 0a 09 73 65 74 20 66 69 6c 65 73 28 24 63 {..set files($c
d300: 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 47 69 76 urrentfile) [Giv
d310: 65 4d 61 63 72 6f 73 44 6f 63 75 6d 65 6e 74 5d eMacrosDocument]
d320: 0a 09 73 65 74 20 66 69 6c 65 73 5f 65 6e 64 6c ..set files_endl
d330: 69 6e 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 ine($currentfile
d340: 29 20 61 75 74 6f 0a 0a 09 69 66 20 7b 20 5b 6c ) auto...if { [l
d350: 73 65 61 72 63 68 66 69 6c 65 20 24 66 69 6c 65 searchfile $file
d360: 73 6c 69 73 74 20 24 63 75 72 72 65 6e 74 66 69 slist $currentfi
d370: 6c 65 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 le] == -1 } {..
d380: 20 20 20 6c 61 70 70 65 6e 64 20 66 69 6c 65 73 lappend files
d390: 6c 69 73 74 20 24 63 75 72 72 65 6e 74 66 69 6c list $currentfil
d3a0: 65 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e 66 6f e..}..if { [info
d3b0: 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 exists instrume
d3c0: 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 28 24 63 ntedfilesTime($c
d3d0: 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b urrentfile)] } {
d3e0: 0a 09 20 20 20 20 75 6e 73 65 74 20 69 6e 73 74 .. unset inst
d3f0: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d rumentedfilesTim
d400: 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a e($currentfile).
d410: 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 .}. }.. if
d420: 20 7b 20 28 24 63 75 72 72 65 6e 74 66 69 6c 65 { ($currentfile
d430: 20 3d 3d 20 22 2a 4e 65 77 20 66 69 6c 65 2a 22 == "*New file*"
d440: 20 7c 7c 20 24 63 75 72 72 65 6e 74 66 69 6c 65 || $currentfile
d450: 49 73 4d 6f 64 69 66 69 65 64 20 29 20 26 26 20 IsModified ) &&
d460: 5c 0a 09 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 \.. ![info e
d470: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 xists instrument
d480: 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e edfilesP($curren
d490: 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 76 61 72 tfile)] } {..var
d4a0: 69 61 62 6c 65 20 74 65 78 74 0a 09 69 66 20 7b iable text..if {
d4b0: 20 24 6f 70 74 69 6f 6e 73 28 73 70 61 63 65 73 $options(spaces
d4c0: 5f 74 6f 5f 74 61 62 73 29 20 7d 20 7b 0a 09 20 _to_tabs) } {..
d4d0: 20 20 20 73 65 74 20 6d 61 70 20 5b 6c 69 73 74 set map [list
d4e0: 20 22 5c 6e 5b 73 74 72 69 6e 67 20 72 65 70 65 "\n[string repe
d4f0: 61 74 20 7b 20 7d 20 31 36 5d 22 20 22 5c 6e 5c at { } 16]" "\n\
d500: 74 5c 74 22 20 22 5c 6e 5b 73 74 72 69 6e 67 20 t\t" "\n[string
d510: 72 65 70 65 61 74 20 7b 20 7d 20 38 5d 22 20 22 repeat { } 8]" "
d520: 5c 6e 5c 74 22 5d 0a 09 7d 20 65 6c 73 65 20 7b \n\t"]..} else {
d530: 0a 09 20 20 20 20 73 65 74 20 6d 61 70 20 22 22 .. set map ""
d540: 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 73 28 24 ..}..set files($
d550: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 73 74 currentfile) [st
d560: 72 69 6e 67 20 6d 61 70 20 24 6d 61 70 20 5b 24 ring map $map [$
d570: 74 65 78 74 20 67 65 74 20 31 2e 30 20 65 6e 64 text get 1.0 end
d580: 2d 31 63 5d 5d 0a 09 73 65 74 20 66 69 6c 65 73 -1c]]..set files
d590: 5f 65 6e 64 6c 69 6e 65 28 24 63 75 72 72 65 6e _endline($curren
d5a0: 74 66 69 6c 65 29 20 24 63 75 72 72 65 6e 74 66 tfile) $currentf
d5b0: 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 0a 09 69 66 ile_endline...if
d5c0: 20 7b 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 { [lsearchfile
d5d0: 24 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 $fileslist $curr
d5e0: 65 6e 74 66 69 6c 65 5d 20 3d 3d 20 2d 31 20 7d entfile] == -1 }
d5f0: 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 {.. lappend
d600: 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 fileslist $curre
d610: 6e 74 66 69 6c 65 0a 09 7d 0a 09 69 66 20 7b 20 ntfile..}..if {
d620: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 [info exists ins
d630: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 trumentedfilesTi
d640: 6d 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 me($currentfile)
d650: 5d 20 7d 20 7b 0a 09 20 20 20 20 75 6e 73 65 74 ] } {.. unset
d660: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c instrumentedfil
d670: 65 73 54 69 6d 65 28 24 63 75 72 72 65 6e 74 66 esTime($currentf
d680: 69 6c 65 29 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 ile)..}. }.
d690: 20 20 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 66 if { [lsearchf
d6a0: 69 6c 65 20 24 66 69 6c 65 73 6c 69 73 74 20 24 ile $fileslist $
d6b0: 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 3d 3d 20 currentfile] ==
d6c0: 2d 31 20 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 -1 } {..lappend
d6d0: 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 fileslist $curre
d6e0: 6e 74 66 69 6c 65 0a 20 20 20 20 7d 0a 0a 20 20 ntfile. }..
d6f0: 20 20 73 65 74 20 72 65 61 64 5f 66 72 6f 6d 5f set read_from_
d700: 66 69 6c 65 20 30 0a 20 20 20 20 69 66 20 7b 20 file 0. if {
d710: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 66 69 ![info exists fi
d720: 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 6c 65 les($currentfile
d730: 29 5d 20 7c 7c 20 24 66 6f 72 63 65 7d 20 7b 0a )] || $force} {.
d740: 09 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 ...set err [catc
d750: 68 20 5b 6c 69 73 74 20 6f 70 65 6e 20 24 63 75 h [list open $cu
d760: 72 72 65 6e 74 66 69 6c 65 20 72 5d 20 66 69 6e rrentfile r] fin
d770: 5d 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 7b ]..if { $err } {
d780: 0a 09 20 20 20 20 73 65 74 20 66 69 6c 65 74 72 .. set filetr
d790: 79 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 09 y $currentfile..
d7a0: 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 set currentf
d7b0: 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ile $currentfile
d7c0: 5f 73 61 76 65 0a 09 20 20 20 20 73 65 74 20 63 _save.. set c
d7d0: 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 urrentfile_endli
d7e0: 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f ne $currentfile_
d7f0: 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 09 20 20 endline_save..
d800: 20 20 65 72 72 6f 72 20 5b 5f 20 22 66 69 6c 65 error [_ "file
d810: 20 27 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 65 '%s' does not e
d820: 78 69 73 74 5c 6e 25 73 22 20 24 66 69 6c 65 74 xist\n%s" $filet
d830: 72 79 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d ry $usagestring]
d840: 0a 09 7d 0a 09 73 65 74 20 66 63 6f 6e 66 20 5b ..}..set fconf [
d850: 66 63 6f 6e 66 69 67 75 72 65 20 24 66 69 6e 5d fconfigure $fin]
d860: 0a 09 66 63 6f 6e 66 69 67 75 72 65 20 24 66 69 ..fconfigure $fi
d870: 6e 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 n -translation b
d880: 69 6e 61 72 79 0a 09 73 65 74 20 68 65 61 64 65 inary..set heade
d890: 72 20 5b 72 65 61 64 20 24 66 69 6e 20 31 30 32 r [read $fin 102
d8a0: 34 5d 0a 09 73 65 65 6b 20 24 66 69 6e 20 30 0a 4]..seek $fin 0.
d8b0: 09 66 63 6f 6e 66 69 67 75 72 65 20 24 66 69 6e .fconfigure $fin
d8c0: 20 7b 2a 7d 24 66 63 6f 6e 66 0a 09 69 66 20 7b {*}$fconf..if {
d8d0: 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69 6e 67 $opts(-encoding
d8e0: 29 20 21 3d 20 30 20 26 26 20 24 6f 70 74 73 28 ) != 0 && $opts(
d8f0: 2d 65 6e 63 6f 64 69 6e 67 29 20 21 3d 20 22 22 -encoding) != ""
d900: 20 7d 20 7b 0a 09 20 20 20 20 66 63 6f 6e 66 69 } {.. fconfi
d910: 67 75 72 65 20 24 66 69 6e 20 2d 65 6e 63 6f 64 gure $fin -encod
d920: 69 6e 67 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 ing $opts(-encod
d930: 69 6e 67 29 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 ing)..} else {..
d940: 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 if {[string
d950: 72 61 6e 67 65 20 24 68 65 61 64 65 72 20 30 20 range $header 0
d960: 32 5d 20 65 71 20 5b 62 69 6e 61 72 79 20 66 6f 2] eq [binary fo
d970: 72 6d 61 74 20 63 63 63 20 30 78 45 46 20 30 78 rmat ccc 0xEF 0x
d980: 42 42 20 30 78 42 46 5d 20 7d 20 7b 0a 09 09 66 BB 0xBF] } {...f
d990: 63 6f 6e 66 69 67 75 72 65 20 24 66 69 6e 20 2d configure $fin -
d9a0: 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a 09 encoding utf-8..
d9b0: 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 72 }.. set r
d9c0: 65 78 20 7b 2d 5c 2a 2d 2e 2a 63 6f 64 69 6e 67 ex {-\*-.*coding
d9d0: 3a 5c 73 2a 75 74 66 2d 38 5c 73 2a 3b 2e 2a 2d :\s*utf-8\s*;.*-
d9e0: 5c 2a 2d 7c 65 6e 63 6f 64 69 6e 67 3d 5b 27 5c \*-|encoding=['\
d9f0: 22 5d 75 74 66 2d 38 5b 27 5c 22 5d 7d 0a 09 20 "]utf-8['\"]}..
da00: 20 20 20 61 70 70 65 6e 64 20 72 65 78 20 7b 7c append rex {|
da10: 3c 5c 3f 78 6d 6c 5c 73 2b 76 65 72 73 69 6f 6e <\?xml\s+version
da20: 3d 5c 53 2b 5c 73 2a 5c 3f 3e 7d 0a 09 20 20 20 =\S+\s*\?>}..
da30: 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 2d 6e if { [regexp -n
da40: 6f 63 61 73 65 20 2d 6c 69 6e 65 20 2d 2d 20 24 ocase -line -- $
da50: 72 65 78 20 24 68 65 61 64 65 72 5d 20 7d 20 7b rex $header] } {
da60: 0a 09 09 66 63 6f 6e 66 69 67 75 72 65 20 24 66 ...fconfigure $f
da70: 69 6e 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 in -encoding utf
da80: 2d 38 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65 -8.. }..}..se
da90: 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e t currentfile_en
daa0: 64 6c 69 6e 65 20 61 75 74 6f 0a 09 73 65 74 20 dline auto..set
dab0: 6c 65 6e 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 len [string leng
dac0: 74 68 20 24 68 65 61 64 65 72 5d 0a 09 69 66 20 th $header]..if
dad0: 7b 20 24 6c 65 6e 20 3e 20 30 20 7d 20 7b 0a 09 { $len > 0 } {..
dae0: 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 if { [regexp
daf0: 20 2d 61 6c 6c 20 7b 5c 72 5c 6e 7d 20 24 68 65 -all {\r\n} $he
db00: 61 64 65 72 5d 2a 31 2e 30 2f 24 6c 65 6e 20 3e ader]*1.0/$len >
db10: 3d 20 30 2e 30 30 35 20 7d 20 7b 0a 09 09 73 65 = 0.005 } {...se
db20: 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e t currentfile_en
db30: 64 6c 69 6e 65 20 63 72 6c 66 0a 09 20 20 20 20 dline crlf..
db40: 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65 67 65 } elseif { [rege
db50: 78 70 20 2d 61 6c 6c 20 7b 5c 6e 7d 20 24 68 65 xp -all {\n} $he
db60: 61 64 65 72 5d 2a 31 2e 30 2f 24 6c 65 6e 20 3e ader]*1.0/$len >
db70: 3d 20 30 2e 30 30 35 20 7d 20 7b 0a 09 09 73 65 = 0.005 } {...se
db80: 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e t currentfile_en
db90: 64 6c 69 6e 65 20 6c 66 0a 09 20 20 20 20 7d 0a dline lf.. }.
dba0: 09 7d 0a 09 73 65 74 20 66 69 6c 65 73 28 24 63 .}..set files($c
dbb0: 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 72 65 61 urrentfile) [rea
dbc0: 64 20 24 66 69 6e 5d 0a 09 73 65 74 20 72 65 61 d $fin]..set rea
dbd0: 64 5f 66 72 6f 6d 5f 66 69 6c 65 20 31 0a 09 73 d_from_file 1..s
dbe0: 65 74 20 66 69 6c 65 73 5f 65 6e 64 6c 69 6e 65 et files_endline
dbf0: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 24 ($currentfile) $
dc00: 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c currentfile_endl
dc10: 69 6e 65 0a 09 63 6c 6f 73 65 20 24 66 69 6e 0a ine..close $fin.
dc20: 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 66 69 .if { [lsearchfi
dc30: 6c 65 20 24 66 69 6c 65 73 6c 69 73 74 20 24 63 le $fileslist $c
dc40: 75 72 72 65 6e 74 66 69 6c 65 5d 20 3d 3d 20 2d urrentfile] == -
dc50: 31 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 1 } {.. lappe
dc60: 6e 64 20 66 69 6c 65 73 6c 69 73 74 20 24 63 75 nd fileslist $cu
dc70: 72 72 65 6e 74 66 69 6c 65 0a 09 7d 0a 09 73 65 rrentfile..}..se
dc80: 74 20 66 69 6c 65 73 6d 74 69 6d 65 28 24 63 75 t filesmtime($cu
dc90: 72 72 65 6e 74 66 69 6c 65 29 20 5b 66 69 6c 65 rrentfile) [file
dca0: 20 6d 74 69 6d 65 20 24 63 75 72 72 65 6e 74 66 mtime $currentf
dcb0: 69 6c 65 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 ile]. } else
dcc0: 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 {..set currentfi
dcd0: 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 66 69 6c 65 le_endline $file
dce0: 73 5f 65 6e 64 6c 69 6e 65 28 24 63 75 72 72 65 s_endline($curre
dcf0: 6e 74 66 69 6c 65 29 0a 20 20 20 20 7d 0a 0a 20 ntfile). }..
dd00: 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 if { ![info e
dd10: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 xists instrument
dd20: 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 edfilesInfo($cur
dd30: 72 65 6e 74 66 69 6c 65 29 5d 20 26 26 20 21 24 rentfile)] && !$
dd40: 66 6f 72 63 65 20 26 26 20 21 24 72 65 69 6e 73 force && !$reins
dd50: 74 72 75 6d 65 6e 74 20 7d 20 7b 0a 09 73 65 74 trument } {..set
dd60: 20 69 6e 66 6f 66 69 6c 65 20 5b 47 69 76 65 49 infofile [GiveI
dd70: 6e 73 74 46 69 6c 65 20 24 63 75 72 72 65 6e 74 nstFile $current
dd80: 66 69 6c 65 20 31 20 49 5d 0a 09 69 66 20 7b 20 file 1 I]..if {
dd90: 24 69 6e 66 6f 66 69 6c 65 20 21 3d 20 22 22 20 $infofile != ""
dda0: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6e } {.. set fin
ddb0: 20 5b 6f 70 65 6e 20 24 69 6e 66 6f 66 69 6c 65 [open $infofile
ddc0: 20 72 5d 0a 09 20 20 20 20 73 65 74 20 69 6e 73 r].. set ins
ddd0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e trumentedfilesIn
dde0: 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 fo($currentfile)
ddf0: 20 5b 72 65 61 64 20 24 66 69 6e 5d 0a 09 20 20 [read $fin]..
de00: 20 20 63 6c 6f 73 65 20 24 66 69 6e 0a 09 7d 0a close $fin..}.
de10: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b }. if { [
de20: 72 65 67 65 78 70 20 2d 2d 20 7b 2d 5c 2a 2d 28 regexp -- {-\*-(
de30: 2e 2a 3f 29 2d 5c 2a 2d 7d 20 5b 73 74 72 69 6e .*?)-\*-} [strin
de40: 67 20 72 61 6e 67 65 20 24 66 69 6c 65 73 28 24 g range $files($
de50: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 30 20 32 currentfile) 0 2
de60: 35 36 5d 20 7b 7d 20 65 6d 61 63 73 5f 6d 6f 64 56] {} emacs_mod
de70: 65 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 72 e] } {..if { ![r
de80: 65 67 65 78 70 20 7b 6d 6f 64 65 3a 5c 73 2a 28 egexp {mode:\s*(
de90: 5c 77 2b 29 7d 20 24 65 6d 61 63 73 5f 6d 6f 64 \w+)} $emacs_mod
dea0: 65 20 7b 7d 20 65 6d 61 63 73 5f 6d 6f 64 65 5d e {} emacs_mode]
deb0: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 6d } {.. set em
dec0: 61 63 73 5f 6d 6f 64 65 20 5b 73 74 72 69 6e 67 acs_mode [string
ded0: 20 74 72 69 6d 20 24 65 6d 61 63 73 5f 6d 6f 64 trim $emacs_mod
dee0: 65 5d 0a 09 7d 0a 09 73 77 69 74 63 68 20 2d 6e e]..}..switch -n
def0: 6f 63 61 73 65 20 2d 2d 20 24 65 6d 61 63 73 5f ocase -- $emacs_
df00: 6d 6f 64 65 20 7b 0a 09 20 20 20 20 74 63 6c 20 mode {.. tcl
df10: 7b 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 54 { set filetype T
df20: 43 4c 20 7d 0a 09 20 20 20 20 78 6d 6c 20 7b 20 CL }.. xml {
df30: 73 65 74 20 66 69 6c 65 74 79 70 65 20 58 4d 4c set filetype XML
df40: 20 7d 0a 09 20 20 20 20 63 2b 2b 20 2d 20 63 20 }.. c++ - c
df50: 7b 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 22 { set filetype "
df60: 43 2f 43 2b 2b 22 20 7d 0a 09 20 20 20 20 4d 61 C/C++" }.. Ma
df70: 6b 65 66 69 6c 65 20 7b 20 73 65 74 20 66 69 6c kefile { set fil
df80: 65 74 79 70 65 20 22 4d 61 6b 65 66 69 6c 65 22 etype "Makefile"
df90: 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }..}. }.
dfa0: 69 66 20 7b 20 5b 72 65 67 65 78 70 20 2d 6e 6f if { [regexp -no
dfb0: 63 61 73 65 20 2d 6c 69 6e 65 20 2d 2d 20 7b 3c case -line -- {<
dfc0: 5c 3f 78 6d 6c 5c 73 2b 7d 20 5b 73 74 72 69 6e \?xml\s+} [strin
dfd0: 67 20 72 61 6e 67 65 20 24 66 69 6c 65 73 28 24 g range $files($
dfe0: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 30 20 35 currentfile) 0 5
dff0: 30 5d 5d 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 0]] } {..set fil
e000: 65 74 79 70 65 20 58 4d 4c 0a 20 20 20 20 7d 0a etype XML. }.
e010: 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 set options(
e020: 66 69 6c 65 74 79 70 65 29 20 24 66 69 6c 65 74 filetype) $filet
e030: 79 70 65 0a 20 20 20 20 0a 20 20 20 20 69 66 20 ype. . if
e040: 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 { $filetype == "
e050: 54 43 4c 22 20 26 26 20 21 5b 69 6e 66 6f 20 65 TCL" && ![info e
e060: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 xists instrument
e070: 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e edfilesP($curren
e080: 74 66 69 6c 65 29 5d 20 5c 0a 09 20 20 20 20 20 tfile)] \..
e090: 26 26 20 21 24 66 6f 72 63 65 20 26 26 20 21 24 && !$force && !$
e0a0: 72 65 69 6e 73 74 72 75 6d 65 6e 74 20 26 26 20 reinstrument &&
e0b0: 21 24 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d !$currentfileIsM
e0c0: 6f 64 69 66 69 65 64 20 7d 20 7b 0a 09 73 65 74 odified } {..set
e0d0: 20 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 filenum [lsearc
e0e0: 68 66 69 6c 65 20 24 66 69 6c 65 73 6c 69 73 74 hfile $fileslist
e0f0: 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 0a $currentfile]..
e100: 09 66 6f 72 65 61 63 68 20 69 20 5b 6c 69 73 74 .foreach i [list
e110: 20 50 20 52 5d 20 7b 0a 09 20 20 20 20 73 65 74 P R] {.. set
e120: 20 69 6e 73 74 66 69 6c 65 20 5b 47 69 76 65 49 instfile [GiveI
e130: 6e 73 74 46 69 6c 65 20 24 63 75 72 72 65 6e 74 nstFile $current
e140: 66 69 6c 65 20 31 20 24 69 5d 0a 0a 09 20 20 20 file 1 $i]...
e150: 20 69 66 20 7b 20 24 69 6e 73 74 66 69 6c 65 20 if { $instfile
e160: 21 3d 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 != "" } {...set
e170: 66 69 6e 20 5b 6f 70 65 6e 20 24 69 6e 73 74 66 fin [open $instf
e180: 69 6c 65 20 72 5d 0a 09 09 69 66 20 7b 20 24 6f ile r]...if { $o
e190: 70 74 73 28 2d 65 6e 63 6f 64 69 6e 67 29 20 21 pts(-encoding) !
e1a0: 3d 20 30 20 26 26 20 24 6f 70 74 73 28 2d 65 6e = 0 && $opts(-en
e1b0: 63 6f 64 69 6e 67 29 20 21 3d 20 22 22 20 7d 20 coding) != "" }
e1c0: 7b 0a 09 09 20 20 20 20 66 63 6f 6e 66 69 67 75 {... fconfigu
e1d0: 72 65 20 24 66 69 6e 20 2d 65 6e 63 6f 64 69 6e re $fin -encodin
e1e0: 67 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69 6e g $opts(-encodin
e1f0: 67 29 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 g)...} else {...
e200: 20 20 20 20 73 65 74 20 68 65 61 64 65 72 20 5b set header [
e210: 72 65 61 64 20 24 66 69 6e 20 32 35 36 5d 0a 09 read $fin 256]..
e220: 09 20 20 20 20 73 65 74 20 72 65 78 20 7b 2d 5c . set rex {-\
e230: 2a 2d 2e 2a 63 6f 64 69 6e 67 3a 5c 73 2a 75 74 *-.*coding:\s*ut
e240: 66 2d 38 5c 73 2a 3b 2e 2a 2d 5c 2a 2d 7c 65 6e f-8\s*;.*-\*-|en
e250: 63 6f 64 69 6e 67 3d 5b 27 5c 22 5d 75 74 66 2d coding=['\"]utf-
e260: 38 5b 27 5c 22 5d 7d 0a 09 09 20 20 20 20 69 66 8['\"]}... if
e270: 20 7b 20 5b 72 65 67 65 78 70 20 2d 6e 6f 63 61 { [regexp -noca
e280: 73 65 20 2d 6c 69 6e 65 20 2d 2d 20 24 72 65 78 se -line -- $rex
e290: 20 24 68 65 61 64 65 72 5d 20 7d 20 7b 0a 09 09 $header] } {...
e2a0: 20 20 20 20 20 20 20 20 66 63 6f 6e 66 69 67 75 fconfigu
e2b0: 72 65 20 24 66 69 6e 20 2d 65 6e 63 6f 64 69 6e re $fin -encodin
e2c0: 67 20 75 74 66 2d 38 0a 09 09 20 20 20 20 7d 0a g utf-8... }.
e2d0: 09 09 20 20 20 20 73 65 65 6b 20 24 66 69 6e 20 .. seek $fin
e2e0: 30 0a 09 09 7d 0a 09 09 73 65 74 20 69 6e 73 74 0...}...set inst
e2f0: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 24 7b 69 rumentedfiles${i
e300: 7d 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 }($currentfile)
e310: 5b 72 65 61 64 20 24 66 69 6e 5d 0a 09 09 0a 09 [read $fin].....
e320: 09 73 65 74 20 6f 6c 64 66 69 6c 65 6e 75 6d 20 .set oldfilenum
e330: 30 20 3b 23 20 66 6f 72 20 66 69 6c 65 73 20 74 0 ;# for files t
e340: 68 61 74 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 hat do not have
e350: 61 6e 79 20 69 6e 73 74 72 75 6d 2e 20 6c 69 6e any instrum. lin
e360: 65 0a 09 09 72 65 67 65 78 70 20 7b 52 44 43 3a e...regexp {RDC:
e370: 3a 46 20 28 5b 2d 30 2d 39 5d 2b 29 7d 20 5b 73 :F ([-0-9]+)} [s
e380: 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 et instrumentedf
e390: 69 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 65 6e iles${i}($curren
e3a0: 74 66 69 6c 65 29 5d 20 7b 7d 20 6f 6c 64 66 69 tfile)] {} oldfi
e3b0: 6c 65 6e 75 6d 0a 09 09 69 66 20 7b 20 24 6f 6c lenum...if { $ol
e3c0: 64 66 69 6c 65 6e 75 6d 20 21 3d 20 24 66 69 6c dfilenum != $fil
e3d0: 65 6e 75 6d 20 7d 20 7b 0a 09 09 20 20 20 20 73 enum } {... s
e3e0: 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 et instrumentedf
e3f0: 69 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 65 6e iles${i}($curren
e400: 74 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 tfile) \...
e410: 20 20 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b [string map [
e420: 6c 69 73 74 20 22 52 44 43 3a 3a 46 20 24 6f 6c list "RDC::F $ol
e430: 64 66 69 6c 65 6e 75 6d 20 22 20 22 52 44 43 3a dfilenum " "RDC:
e440: 3a 46 20 24 66 69 6c 65 6e 75 6d 20 22 5d 20 5c :F $filenum "] \
e450: 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
e460: 5b 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 [set instrumente
e470: 64 66 69 6c 65 73 24 7b 69 7d 28 24 63 75 72 72 dfiles${i}($curr
e480: 65 6e 74 66 69 6c 65 29 5d 5d 0a 09 09 7d 0a 09 entfile)]]...}..
e490: 09 63 6c 6f 73 65 20 24 66 69 6e 0a 09 20 20 20 .close $fin..
e4a0: 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }..}. }.
e4b0: 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 . if { $filet
e4c0: 79 70 65 20 65 71 20 22 58 4d 4c 22 20 7d 20 7b ype eq "XML" } {
e4d0: 20 73 65 74 20 72 65 69 6e 73 74 72 75 6d 65 6e set reinstrumen
e4e0: 74 20 31 20 7d 0a 20 20 20 20 0a 20 20 20 20 69 t 1 }. . i
e4f0: 66 20 7b 20 28 24 66 69 6c 65 74 79 70 65 20 3d f { ($filetype =
e500: 3d 20 22 54 43 4c 22 20 20 26 26 20 21 5b 69 6e = "TCL" && ![in
e510: 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 fo exists instru
e520: 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 mentedfilesP($cu
e530: 72 72 65 6e 74 66 69 6c 65 29 5d 29 20 7c 7c 20 rrentfile)]) ||
e540: 5c 0a 09 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 \.. ![info e
e550: 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 xists instrument
e560: 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 edfilesInfo($cur
e570: 72 65 6e 74 66 69 6c 65 29 5d 20 7c 7c 20 24 66 rentfile)] || $f
e580: 6f 72 63 65 20 7c 7c 20 24 72 65 69 6e 73 74 72 orce || $reinstr
e590: 75 6d 65 6e 74 20 7d 20 7b 0a 09 53 65 74 4d 65 ument } {..SetMe
e5a0: 73 73 61 67 65 20 5b 5f 20 22 49 6e 73 74 72 75 ssage [_ "Instru
e5b0: 6d 65 6e 74 69 6e 67 20 66 69 6c 65 20 27 25 73 menting file '%s
e5c0: 27 22 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d '" $currentfile]
e5d0: 2e 2e 2e 0a 0a 09 73 65 74 20 66 69 6c 65 6e 75 ......set filenu
e5e0: 6d 20 5b 6c 73 65 61 72 63 68 66 69 6c 65 20 24 m [lsearchfile $
e5f0: 66 69 6c 65 73 6c 69 73 74 20 24 63 75 72 72 65 fileslist $curre
e600: 6e 74 66 69 6c 65 5d 0a 0a 09 69 66 20 7b 20 24 ntfile]...if { $
e610: 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 43 2f 43 filetype == "C/C
e620: 2b 2b 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 ++" } {.. if
e630: 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 49 6e 73 { [catch {...Ins
e640: 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 trumenter::DoWor
e650: 6b 46 6f 72 43 2b 2b 20 24 66 69 6c 65 73 28 24 kForC++ $files($
e660: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 currentfile) ins
e670: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e trumentedfilesIn
e680: 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 fo($currentfile)
e690: 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e .. } errstrin
e6a0: 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 g] } {...RamDebu
e6b0: 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 gger::ProgressVa
e6c0: 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 r 100...if { ![s
e6d0: 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 tring match "*u
e6e0: 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 ser demand*" $er
e6f0: 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 rstring] } {...
e700: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
e710: 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20 TextOutRaise...
e720: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
e730: 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 TextOutInsertRed
e740: 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09 $::errorInfo...
e750: 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d }...if { $opts(-
e760: 72 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 return_error) }
e770: 7b 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65 {... error $e
e780: 72 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73 rrstring...} els
e790: 65 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69 e {... WarnWi
e7a0: 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d n $errstring...}
e7b0: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b .. }..}..if {
e7c0: 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 58 $filetype == "X
e7d0: 4d 4c 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 ML" } {.. if
e7e0: 7b 20 24 72 65 61 64 5f 66 72 6f 6d 5f 66 69 6c { $read_from_fil
e7f0: 65 20 7d 20 7b 0a 09 09 69 66 20 7b 20 5b 69 6e e } {...if { [in
e800: 66 6f 20 63 6f 6d 6d 61 6e 64 20 3a 3a 70 3a 3a fo command ::p::
e810: 78 6d 6c 5d 20 6e 65 20 22 22 20 7d 20 7b 0a 09 xml] ne "" } {..
e820: 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 . set err [ca
e830: 74 63 68 20 7b 20 70 3a 3a 78 6d 6c 20 70 61 72 tch { p::xml par
e840: 73 65 20 24 66 69 6c 65 73 28 24 63 75 72 72 65 se $files($curre
e850: 6e 74 66 69 6c 65 29 20 7d 20 64 6f 63 5d 0a 09 ntfile) } doc]..
e860: 09 20 20 20 20 69 66 20 7b 20 21 24 65 72 72 20 . if { !$err
e870: 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 } {... se
e880: 74 20 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74 t files($current
e890: 66 69 6c 65 29 20 5b 24 64 6f 63 20 61 73 58 4d file) [$doc asXM
e8a0: 4c 5d 0a 09 09 20 20 20 20 20 20 20 20 24 64 6f L]... $do
e8b0: 63 20 64 65 6c 65 74 65 0a 09 09 20 20 20 20 7d c delete... }
e8c0: 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 ...} else {...
e8d0: 20 20 23 20 2d 6b 65 65 70 45 6d 70 74 69 65 73 # -keepEmpties
e8e0: 0a 09 09 20 20 20 20 73 65 74 20 65 72 72 20 5b ... set err [
e8f0: 63 61 74 63 68 20 7b 20 64 6f 6d 20 70 61 72 73 catch { dom pars
e900: 65 20 24 66 69 6c 65 73 28 24 63 75 72 72 65 6e e $files($curren
e910: 74 66 69 6c 65 29 20 7d 20 64 6f 63 5d 0a 09 09 tfile) } doc]...
e920: 20 20 20 20 69 66 20 7b 20 21 24 65 72 72 20 7d if { !$err }
e930: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 {... set
e940: 20 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66 files($currentf
e950: 69 6c 65 29 20 5b 24 64 6f 63 20 61 73 58 4d 4c ile) [$doc asXML
e960: 20 2d 69 6e 64 65 6e 74 20 32 5d 0a 09 09 20 20 -indent 2]...
e970: 20 20 20 20 20 20 24 64 6f 63 20 64 65 6c 65 74 $doc delet
e980: 65 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 e... }...}..
e990: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 65 72 }.. set er
e9a0: 72 20 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 72 r [catch { Instr
e9b0: 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 umenter::DoWorkF
e9c0: 6f 72 58 4d 4c 20 24 66 69 6c 65 73 28 24 63 75 orXML $files($cu
e9d0: 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 rrentfile) instr
e9e0: 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f umentedfilesInfo
e9f0: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d ($currentfile) }
ea00: 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 errstring]..
ea10: 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
ea20: 09 73 65 74 20 65 69 6e 66 6f 20 24 3a 3a 65 72 .set einfo $::er
ea30: 72 6f 72 49 6e 66 6f 0a 09 09 52 61 6d 44 65 62 rorInfo...RamDeb
ea40: 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 ugger::ProgressV
ea50: 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b ar 100...if { ![
ea60: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a string match "*
ea70: 75 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 user demand*" $e
ea80: 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 rrstring] } {...
ea90: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
eaa0: 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 :TextOutRaise...
eab0: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
eac0: 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 :TextOutInsertRe
ead0: 64 20 24 65 69 6e 66 6f 0a 09 09 7d 0a 09 09 23 d $einfo...}...#
eae0: 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 WarnWin $errstri
eaf0: 6e 67 2d 2d 24 65 69 6e 66 6f 0a 09 09 69 66 20 ng--$einfo...if
eb00: 7b 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f { $opts(-return_
eb10: 65 72 72 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20 error) } {...
eb20: 20 65 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e error $errstrin
eb30: 67 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 g...} else {...
eb40: 20 20 20 57 61 72 6e 57 69 6e 20 24 65 72 72 73 WarnWin $errs
eb50: 74 72 69 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d tring...}.. }
eb60: 0a 09 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 ..}..if { $filet
eb70: 79 70 65 20 3d 3d 20 22 6c 61 74 65 78 22 20 7d ype == "latex" }
eb80: 20 7b 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 {.. set err
eb90: 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 72 75 6d [catch { Instrum
eba0: 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 enter::DoWorkFor
ebb0: 4c 61 74 65 78 20 24 66 69 6c 65 73 28 24 63 75 Latex $files($cu
ebc0: 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 rrentfile) instr
ebd0: 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f umentedfilesInfo
ebe0: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d ($currentfile) }
ebf0: 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 errstring]..
ec00: 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
ec10: 09 73 65 74 20 65 69 6e 66 6f 20 24 3a 3a 65 72 .set einfo $::er
ec20: 72 6f 72 49 6e 66 6f 0a 09 09 52 61 6d 44 65 62 rorInfo...RamDeb
ec30: 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 ugger::ProgressV
ec40: 61 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b ar 100...if { ![
ec50: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a string match "*
ec60: 75 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 user demand*" $e
ec70: 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 rrstring] } {...
ec80: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
ec90: 3a 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 :TextOutRaise...
eca0: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
ecb0: 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 :TextOutInsertRe
ecc0: 64 20 24 65 69 6e 66 6f 0a 09 09 7d 0a 09 09 23 d $einfo...}...#
ecd0: 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 WarnWin $errstri
ece0: 6e 67 2d 2d 24 65 69 6e 66 6f 0a 09 09 69 66 20 ng--$einfo...if
ecf0: 7b 20 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f { $opts(-return_
ed00: 65 72 72 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20 error) } {...
ed10: 20 65 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e error $errstrin
ed20: 67 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 g...} else {...
ed30: 20 20 20 57 61 72 6e 57 69 6e 20 24 65 72 72 73 WarnWin $errs
ed40: 74 72 69 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d tring...}.. }
ed50: 0a 09 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 ..}..if { $filet
ed60: 79 70 65 20 3d 3d 20 22 77 69 6b 69 22 20 7d 20 ype == "wiki" }
ed70: 7b 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b {.. set err [
ed80: 63 61 74 63 68 20 7b 20 49 6e 73 74 72 75 6d 65 catch { Instrume
ed90: 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 57 nter::DoWorkForW
eda0: 69 6b 69 20 24 66 69 6c 65 73 28 24 63 75 72 72 iki $files($curr
edb0: 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 75 6d entfile) instrum
edc0: 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 entedfilesInfo($
edd0: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 7d 20 65 currentfile) } e
ede0: 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 69 rrstring].. i
edf0: 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 09 73 f { $err } {...s
ee00: 65 74 20 65 69 6e 66 6f 20 24 3a 3a 65 72 72 6f et einfo $::erro
ee10: 72 49 6e 66 6f 0a 09 09 52 61 6d 44 65 62 75 67 rInfo...RamDebug
ee20: 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72 ger::ProgressVar
ee30: 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 74 100...if { ![st
ee40: 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 73 ring match "*us
ee50: 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 72 er demand*" $err
ee60: 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 20 string] } {...
ee70: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 RamDebugger::T
ee80: 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20 20 extOutRaise...
ee90: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 RamDebugger::T
eea0: 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 extOutInsertRed
eeb0: 24 65 69 6e 66 6f 0a 09 09 7d 0a 09 09 23 57 61 $einfo...}...#Wa
eec0: 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 6e 67 rnWin $errstring
eed0: 2d 2d 24 65 69 6e 66 6f 0a 09 09 69 66 20 7b 20 --$einfo...if {
eee0: 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f 65 72 $opts(-return_er
eef0: 72 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20 20 65 ror) } {... e
ef00: 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e 67 0a rror $errstring.
ef10: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 ..} else {...
ef20: 20 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 WarnWin $errstr
ef30: 69 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 ing...}.. }..
ef40: 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 79 70 }..if { $filetyp
ef50: 65 20 3d 3d 20 22 47 69 44 20 42 41 53 20 66 69 e == "GiD BAS fi
ef60: 6c 65 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 le" } {.. if
ef70: 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 49 6e 73 { [catch {...Ins
ef80: 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 trumenter::DoWor
ef90: 6b 46 6f 72 42 61 73 20 24 66 69 6c 65 73 28 24 kForBas $files($
efa0: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 currentfile) ins
efb0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e trumentedfilesIn
efc0: 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 fo($currentfile)
efd0: 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e .. } errstrin
efe0: 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 g] } {...RamDebu
eff0: 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 gger::ProgressVa
f000: 72 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 r 100...if { ![s
f010: 74 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 tring match "*u
f020: 73 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 ser demand*" $er
f030: 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 rstring] } {...
f040: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
f050: 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20 TextOutRaise...
f060: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
f070: 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 TextOutInsertRed
f080: 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09 $::errorInfo...
f090: 7d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d }...if { $opts(-
f0a0: 72 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 return_error) }
f0b0: 7b 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65 {... error $e
f0c0: 72 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73 rrstring...} els
f0d0: 65 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69 e {... WarnWi
f0e0: 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d n $errstring...}
f0f0: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b .. }..}..if {
f100: 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 47 $filetype == "G
f110: 69 44 20 64 61 74 61 20 66 69 6c 65 73 22 20 7d iD data files" }
f120: 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 63 61 {.. if { [ca
f130: 74 63 68 20 7b 0a 09 09 49 6e 73 74 72 75 6d 65 tch {...Instrume
f140: 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 47 nter::DoWorkForG
f150: 69 44 44 61 74 61 20 24 66 69 6c 65 73 28 24 63 iDData $files($c
f160: 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 urrentfile) inst
f170: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 rumentedfilesInf
f180: 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a o($currentfile).
f190: 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e 67 . } errstring
f1a0: 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 67 ] } {...RamDebug
f1b0: 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72 ger::ProgressVar
f1c0: 20 31 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 74 100...if { ![st
f1d0: 72 69 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 73 ring match "*us
f1e0: 65 72 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 72 er demand*" $err
f1f0: 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 20 string] } {...
f200: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 RamDebugger::T
f210: 65 78 74 4f 75 74 52 61 69 73 65 0a 09 09 20 20 extOutRaise...
f220: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 RamDebugger::T
f230: 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 extOutInsertRed
f240: 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09 7d $::errorInfo...}
f250: 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d 72 ...if { $opts(-r
f260: 65 74 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 7b eturn_error) } {
f270: 0a 09 09 20 20 20 20 65 72 72 6f 72 20 24 65 72 ... error $er
f280: 72 73 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73 65 rstring...} else
f290: 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69 6e {... WarnWin
f2a0: 20 24 65 72 72 73 74 72 69 6e 67 0a 09 09 7d 0a $errstring...}.
f2b0: 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 . }..}..if {
f2c0: 24 66 69 6c 65 74 79 70 65 20 65 71 20 22 4d 61 $filetype eq "Ma
f2d0: 6b 65 66 69 6c 65 22 20 7d 20 7b 0a 09 20 20 20 kefile" } {..
f2e0: 20 69 66 20 7b 20 5b 63 61 74 63 68 20 7b 0a 09 if { [catch {..
f2f0: 09 20 20 20 20 49 6e 73 74 72 75 6d 65 6e 74 65 . Instrumente
f300: 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 4d 61 6b 65 r::DoWorkForMake
f310: 66 69 6c 65 20 24 66 69 6c 65 73 28 24 63 75 72 file $files($cur
f320: 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 75 rentfile) instru
f330: 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 mentedfilesInfo(
f340: 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 20 $currentfile)..
f350: 20 20 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 20 } errstring]
f360: 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 67 67 65 } {...RamDebugge
f370: 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72 20 31 r::ProgressVar 1
f380: 30 30 0a 09 09 69 66 20 7b 20 21 5b 73 74 72 69 00...if { ![stri
f390: 6e 67 20 6d 61 74 63 68 20 20 22 2a 75 73 65 72 ng match "*user
f3a0: 20 64 65 6d 61 6e 64 2a 22 20 24 65 72 72 73 74 demand*" $errst
f3b0: 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 20 20 20 20 ring] } {...
f3c0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
f3d0: 74 4f 75 74 52 61 69 73 65 0a 09 09 20 20 20 20 tOutRaise...
f3e0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
f3f0: 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 24 3a tOutInsertRed $:
f400: 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 09 7d 0a 09 :errorInfo...}..
f410: 09 69 66 20 7b 20 24 6f 70 74 73 28 2d 72 65 74 .if { $opts(-ret
f420: 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 7b 0a 09 urn_error) } {..
f430: 09 20 20 20 20 65 72 72 6f 72 20 24 65 72 72 73 . error $errs
f440: 74 72 69 6e 67 0a 09 09 7d 20 65 6c 73 65 20 7b tring...} else {
f450: 0a 09 09 20 20 20 20 57 61 72 6e 57 69 6e 20 24 ... WarnWin $
f460: 65 72 72 73 74 72 69 6e 67 0a 09 09 7d 0a 09 20 errstring...}..
f470: 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 24 66 }..}..if { $f
f480: 69 6c 65 74 79 70 65 20 3d 3d 20 22 54 43 4c 22 iletype == "TCL"
f490: 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b } {.. if { [
f4a0: 63 61 74 63 68 20 7b 0a 09 09 49 6e 73 74 72 75 catch {...Instru
f4b0: 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f menter::DoWorkFo
f4c0: 72 54 63 6c 20 24 66 69 6c 65 73 28 24 63 75 72 rTcl $files($cur
f4d0: 72 65 6e 74 66 69 6c 65 29 20 24 66 69 6c 65 6e rentfile) $filen
f4e0: 75 6d 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 um instrumentedf
f4f0: 69 6c 65 73 50 28 24 63 75 72 72 65 6e 74 66 69 ilesP($currentfi
f500: 6c 65 29 20 5c 0a 09 09 20 20 20 20 69 6e 73 74 le) \... inst
f510: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 52 28 24 rumentedfilesR($
f520: 63 75 72 72 65 6e 74 66 69 6c 65 29 20 69 6e 73 currentfile) ins
f530: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e trumentedfilesIn
f540: 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 fo($currentfile)
f550: 0a 09 20 20 20 20 7d 20 65 72 72 73 74 72 69 6e .. } errstrin
f560: 67 5d 20 7d 20 7b 0a 09 09 52 61 6d 44 65 62 75 g] } {...RamDebu
f570: 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 gger::ProgressVa
f580: 72 20 31 30 30 0a 09 09 69 66 20 7b 20 5b 69 6e r 100...if { [in
f590: 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 fo exists instru
f5a0: 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 mentedfilesP($cu
f5b0: 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a rrentfile)] } {.
f5c0: 09 09 20 20 20 20 75 6e 73 65 74 20 69 6e 73 74 .. unset inst
f5d0: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 rumentedfilesP($
f5e0: 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 09 7d currentfile)...}
f5f0: 0a 09 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 ...if { [info ex
f600: 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 ists instrumente
f610: 64 66 69 6c 65 73 52 28 24 63 75 72 72 65 6e 74 dfilesR($current
f620: 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 09 20 20 20 file)] } {...
f630: 20 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e unset instrumen
f640: 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 65 tedfilesR($curre
f650: 6e 74 66 69 6c 65 29 0a 09 09 7d 0a 09 09 69 66 ntfile)...}...if
f660: 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 { ![string matc
f670: 68 20 20 22 2a 75 73 65 72 20 64 65 6d 61 6e 64 h "*user demand
f680: 2a 22 20 24 65 72 72 73 74 72 69 6e 67 5d 20 7d *" $errstring] }
f690: 20 7b 0a 09 09 20 20 20 20 52 61 6d 44 65 62 75 {... RamDebu
f6a0: 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 52 61 69 gger::TextOutRai
f6b0: 73 65 0a 09 09 20 20 20 20 52 61 6d 44 65 62 75 se... RamDebu
f6c0: 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 49 6e 73 gger::TextOutIns
f6d0: 65 72 74 52 65 64 20 24 3a 3a 65 72 72 6f 72 49 ertRed $::errorI
f6e0: 6e 66 6f 0a 09 09 7d 0a 09 09 69 66 20 7b 20 24 nfo...}...if { $
f6f0: 6f 70 74 73 28 2d 72 65 74 75 72 6e 5f 65 72 72 opts(-return_err
f700: 6f 72 29 20 7d 20 7b 0a 09 09 20 20 20 20 65 72 or) } {... er
f710: 72 6f 72 20 24 65 72 72 73 74 72 69 6e 67 0a 09 ror $errstring..
f720: 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 .} else {...
f730: 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 WarnWin $errstri
f740: 6e 67 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d ng...}.. }..}
f750: 0a 09 0a 09 66 6f 72 65 61 63 68 20 69 20 5b 6c ....foreach i [l
f760: 69 73 74 20 50 20 52 5d 20 7b 0a 09 20 20 20 20 ist P R] {..
f770: 73 65 74 20 69 6e 73 74 66 69 6c 65 20 5b 47 69 set instfile [Gi
f780: 76 65 49 6e 73 74 46 69 6c 65 20 24 63 75 72 72 veInstFile $curr
f790: 65 6e 74 66 69 6c 65 20 30 20 24 69 5d 0a 09 20 entfile 0 $i]..
f7a0: 20 20 20 69 66 20 7b 20 24 69 6e 73 74 66 69 6c if { $instfil
f7b0: 65 20 21 3d 20 22 22 20 26 26 20 5b 69 6e 66 6f e != "" && [info
f7c0: 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 exists instrume
f7d0: 6e 74 65 64 66 69 6c 65 73 24 7b 69 7d 28 24 63 ntedfiles${i}($c
f7e0: 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 26 26 20 urrentfile)] &&
f7f0: 5c 0a 09 09 20 20 20 20 20 21 24 63 75 72 72 65 \... !$curre
f800: 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 ntfileIsModified
f810: 20 7d 20 7b 0a 09 09 73 65 74 20 66 6f 75 74 20 } {...set fout
f820: 5b 6f 70 65 6e 20 24 69 6e 73 74 66 69 6c 65 20 [open $instfile
f830: 77 5d 0a 09 09 69 66 20 7b 20 24 6f 70 74 73 28 w]...if { $opts(
f840: 2d 65 6e 63 6f 64 69 6e 67 29 20 21 3d 20 30 20 -encoding) != 0
f850: 26 26 20 24 6f 70 74 73 28 2d 65 6e 63 6f 64 69 && $opts(-encodi
f860: 6e 67 29 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 ng) != "" } {...
f870: 20 20 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 fconfigure $
f880: 66 6f 75 74 20 2d 65 6e 63 6f 64 69 6e 67 20 24 fout -encoding $
f890: 6f 70 74 73 28 2d 65 6e 63 6f 64 69 6e 67 29 0a opts(-encoding).
f8a0: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 ..} else {...
f8b0: 20 73 65 74 20 68 65 61 64 65 72 20 5b 73 74 72 set header [str
f8c0: 69 6e 67 20 72 61 6e 67 65 20 5b 73 65 74 20 69 ing range [set i
f8d0: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
f8e0: 24 7b 69 7d 28 24 63 75 72 72 65 6e 74 66 69 6c ${i}($currentfil
f8f0: 65 29 5d 20 30 20 32 35 35 5d 0a 09 09 20 20 20 e)] 0 255]...
f900: 20 73 65 74 20 72 65 78 20 7b 2d 5c 2a 2d 2e 2a set rex {-\*-.*
f910: 63 6f 64 69 6e 67 3a 5c 73 2a 75 74 66 2d 38 5c coding:\s*utf-8\
f920: 73 2a 3b 2e 2a 2d 5c 2a 2d 7c 65 6e 63 6f 64 69 s*;.*-\*-|encodi
f930: 6e 67 3d 5b 27 5c 22 5d 75 74 66 2d 38 5b 27 5c ng=['\"]utf-8['\
f940: 22 5d 7d 0a 09 09 20 20 20 20 69 66 20 7b 20 5b "]}... if { [
f950: 72 65 67 65 78 70 20 2d 6e 6f 63 61 73 65 20 2d regexp -nocase -
f960: 6c 69 6e 65 20 2d 2d 20 24 72 65 78 20 24 68 65 line -- $rex $he
f970: 61 64 65 72 5d 20 7d 20 7b 0a 09 09 20 20 20 20 ader] } {...
f980: 20 20 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 fconfigure $
f990: 66 6f 75 74 20 2d 65 6e 63 6f 64 69 6e 67 20 75 fout -encoding u
f9a0: 74 66 2d 38 0a 09 09 20 20 20 20 7d 0a 09 09 7d tf-8... }...}
f9b0: 0a 09 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 ...puts -nonewli
f9c0: 6e 65 20 24 66 6f 75 74 20 5b 73 65 74 20 69 6e ne $fout [set in
f9d0: 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 24 strumentedfiles$
f9e0: 7b 69 7d 28 24 63 75 72 72 65 6e 74 66 69 6c 65 {i}($currentfile
f9f0: 29 5d 0a 09 09 63 6c 6f 73 65 20 24 66 6f 75 74 )]...close $fout
fa00: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 .. }..}..set
fa10: 69 6e 66 6f 66 69 6c 65 20 5b 47 69 76 65 49 6e infofile [GiveIn
fa20: 73 74 46 69 6c 65 20 24 63 75 72 72 65 6e 74 66 stFile $currentf
fa30: 69 6c 65 20 30 20 49 5d 0a 09 69 66 20 7b 20 24 ile 0 I]..if { $
fa40: 69 6e 66 6f 66 69 6c 65 20 21 3d 20 22 22 20 26 infofile != "" &
fa50: 26 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 & [info exists i
fa60: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
fa70: 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c Info($currentfil
fa80: 65 29 5d 20 26 26 20 5c 0a 09 09 20 21 24 63 75 e)] && \... !$cu
fa90: 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 rrentfileIsModif
faa0: 69 65 64 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 ied } {.. set
fab0: 20 66 6f 75 74 20 5b 6f 70 65 6e 20 24 69 6e 66 fout [open $inf
fac0: 6f 66 69 6c 65 20 77 5d 0a 09 20 20 20 20 70 75 ofile w].. pu
fad0: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 ts -nonewline $f
fae0: 6f 75 74 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 out $instrumente
faf0: 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 dfilesInfo($curr
fb00: 65 6e 74 66 69 6c 65 29 0a 09 20 20 20 20 63 6c entfile).. cl
fb10: 6f 73 65 20 24 66 6f 75 74 0a 09 7d 0a 09 69 66 ose $fout..}..if
fb20: 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
fb30: 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
fb40: 73 53 65 6e 74 28 24 63 75 72 72 65 6e 74 66 69 sSent($currentfi
fb50: 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 75 6e le)] } {.. un
fb60: 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 set instrumented
fb70: 66 69 6c 65 73 53 65 6e 74 28 24 63 75 72 72 65 filesSent($curre
fb80: 6e 74 66 69 6c 65 29 0a 09 7d 0a 09 53 65 74 4d ntfile)..}..SetM
fb90: 65 73 73 61 67 65 20 22 22 0a 20 20 20 20 7d 0a essage "". }.
fba0: 20 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 if { $debugg
fbb0: 65 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 erstate == "time
fbc0: 22 20 26 26 20 5b 69 6e 66 6f 20 65 78 69 73 74 " && [info exist
fbd0: 73 20 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74 s files($current
fbe0: 66 69 6c 65 29 5d 20 26 26 20 5c 0a 09 20 20 20 file)] && \..
fbf0: 20 20 28 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 (![info exists
fc00: 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c instrumentedfil
fc10: 65 73 54 69 6d 65 28 24 63 75 72 72 65 6e 74 66 esTime($currentf
fc20: 69 6c 65 29 5d 20 7c 7c 20 24 66 6f 72 63 65 20 ile)] || $force
fc30: 7c 7c 20 24 72 65 69 6e 73 74 72 75 6d 65 6e 74 || $reinstrument
fc40: 29 20 7d 20 7b 0a 09 53 65 74 4d 65 73 73 61 67 ) } {..SetMessag
fc50: 65 20 5b 5f 20 22 49 6e 73 74 72 75 6d 65 6e 74 e [_ "Instrument
fc60: 69 6e 67 20 66 69 6c 65 20 27 25 73 27 20 66 6f ing file '%s' fo
fc70: 72 20 74 69 6d 65 20 6d 65 61 73 75 72 65 22 20 r time measure"
fc80: 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 2e 2e 2e $currentfile]...
fc90: 0a 09 49 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a ..Instrumenter::
fca0: 44 6f 57 6f 72 6b 46 6f 72 54 69 6d 65 20 24 66 DoWorkForTime $f
fcb0: 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 6c iles($currentfil
fcc0: 65 29 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 e) $currentfile
fcd0: 5c 0a 09 20 20 20 20 69 6e 73 74 72 75 6d 65 6e \.. instrumen
fce0: 74 65 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 tedfilesTime($cu
fcf0: 72 72 65 6e 74 66 69 6c 65 29 20 24 54 69 6d 65 rrentfile) $Time
fd00: 4d 65 61 73 75 72 65 44 61 74 61 0a 09 69 66 20 MeasureData..if
fd10: 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 { [info exists i
fd20: 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
fd30: 53 65 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c Sent($currentfil
fd40: 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 75 6e 73 e)] } {.. uns
fd50: 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 et instrumentedf
fd60: 69 6c 65 73 53 65 6e 74 28 24 63 75 72 72 65 6e ilesSent($curren
fd70: 74 66 69 6c 65 29 0a 09 7d 0a 09 53 65 74 4d 65 tfile)..}..SetMe
fd80: 73 73 61 67 65 20 22 22 0a 20 20 20 20 7d 0a 0a ssage "". }..
fd90: 20 20 20 20 73 65 74 20 72 65 74 76 61 6c 20 22 set retval "
fda0: 22 0a 0a 20 20 20 20 73 65 74 20 64 6f 73 65 6e ".. set dosen
fdb0: 64 20 2d 31 0a 0a 20 20 20 20 69 66 20 7b 20 24 d -1.. if { $
fdc0: 64 65 62 75 67 67 65 72 73 74 61 74 65 20 3d 3d debuggerstate ==
fdd0: 20 22 22 20 7c 7c 20 24 72 65 6d 6f 74 65 73 65 "" || $remotese
fde0: 72 76 65 72 20 3d 3d 20 22 22 20 7c 7c 20 5c 0a rver == "" || \.
fdf0: 09 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 . ![info exi
fe00: 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 sts instrumented
fe10: 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e 74 66 filesP($currentf
fe20: 69 6c 65 29 5d 20 7d 20 7b 20 73 65 74 20 64 6f ile)] } { set do
fe30: 73 65 6e 64 20 30 20 7d 0a 20 20 20 20 69 66 20 send 0 }. if
fe40: 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 { $remoteserver
fe50: 3d 3d 20 22 6d 61 73 74 65 72 22 20 26 26 20 21 == "master" && !
fe60: 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 64 61 74 $opts(-returndat
fe70: 61 29 20 7d 20 7b 20 73 65 74 20 64 6f 73 65 6e a) } { set dosen
fe80: 64 20 30 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 d 0 }. if { $
fe90: 64 6f 73 65 6e 64 20 21 3d 20 30 20 26 26 20 21 dosend != 0 && !
fea0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 [info exists ins
feb0: 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 trumentedfilesSe
fec0: 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 nt($currentfile)
fed0: 5d 20 7d 20 7b 20 73 65 74 20 64 6f 73 65 6e 64 ] } { set dosend
fee0: 20 31 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 64 1 }. if { $d
fef0: 6f 73 65 6e 64 20 21 3d 20 30 20 26 26 20 5b 69 osend != 0 && [i
ff00: 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 nfo exists instr
ff10: 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 umentedfilesSent
ff20: 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 ($currentfile)]
ff30: 26 26 20 5c 0a 09 20 20 20 20 20 24 69 6e 73 74 && \.. $inst
ff40: 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 6e rumentedfilesSen
ff50: 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 t($currentfile)
ff60: 21 3d 20 24 64 65 62 75 67 67 65 72 73 74 61 74 != $debuggerstat
ff70: 65 20 20 7d 20 7b 20 73 65 74 20 64 6f 73 65 6e e } { set dosen
ff80: 64 20 31 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 d 1 }. if { $
ff90: 64 6f 73 65 6e 64 20 21 3d 20 30 20 26 26 20 28 dosend != 0 && (
ffa0: 24 6f 70 74 73 28 2d 72 65 73 65 6e 64 29 20 7c $opts(-resend) |
ffb0: 7c 20 24 66 6f 72 63 65 20 7c 7c 20 24 6f 70 74 | $force || $opt
ffc0: 73 28 2d 72 65 74 75 72 6e 64 61 74 61 29 29 20 s(-returndata))
ffd0: 7d 20 7b 20 73 65 74 20 64 6f 73 65 6e 64 20 31 } { set dosend 1
ffe0: 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 64 6f }.. if { $do
fff0: 73 65 6e 64 20 3d 3d 20 31 20 7d 20 7b 0a 09 73 send == 1 } {..s
10000 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 0a et err [catch {.
10010 09 20 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 . if { $debug
10020 67 65 72 73 74 61 74 65 20 3d 3d 20 22 64 65 62 gerstate == "deb
10030 75 67 22 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 ug" } {...if { $
10040 6f 70 74 73 28 2d 72 65 74 75 72 6e 64 61 74 61 opts(-returndata
10050 29 20 7d 20 7b 0a 09 09 20 20 20 20 61 70 70 65 ) } {... appe
10060 6e 64 20 72 65 74 76 61 6c 20 24 69 6e 73 74 72 nd retval $instr
10070 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 umentedfilesP($c
10080 75 72 72 65 6e 74 66 69 6c 65 29 5c 6e 0a 09 09 urrentfile)\n...
10090 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 45 } else {... E
100a0 76 61 6c 52 65 6d 6f 74 65 20 24 69 6e 73 74 72 valRemote $instr
100b0 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 umentedfilesP($c
100c0 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 09 7d 0a urrentfile)...}.
100d0 09 09 69 66 20 7b 20 24 6f 70 74 73 28 2d 61 73 ..if { $opts(-as
100e0 6d 61 69 6e 66 69 6c 65 29 20 7c 7c 20 24 72 65 mainfile) || $re
100f0 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d 20 22 6d moteserver == "m
10100 61 73 74 65 72 20 61 6c 6c 22 20 7d 20 7b 0a 09 aster all" } {..
10110 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 28 . if { $opts(
10120 2d 72 65 74 75 72 6e 64 61 74 61 29 20 7d 20 7b -returndata) } {
10130 0a 09 09 20 20 20 20 20 20 20 20 61 70 70 65 6e ... appen
10140 64 20 72 65 74 76 61 6c 20 24 69 6e 73 74 72 75 d retval $instru
10150 6d 65 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 mentedfilesR($cu
10160 72 72 65 6e 74 66 69 6c 65 29 0a 09 09 20 20 20 rrentfile)...
10170 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 } else {...
10180 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 24 EvalRemote $
10190 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
101a0 73 52 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 sR($currentfile)
101b0 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 ... }...}..
101c0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 45 76 61 } else {...Eva
101d0 6c 52 65 6d 6f 74 65 20 24 69 6e 73 74 72 75 6d lRemote $instrum
101e0 65 6e 74 65 64 66 69 6c 65 73 54 69 6d 65 28 24 entedfilesTime($
101f0 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 20 20 currentfile)..
10200 20 20 7d 0a 09 20 20 20 20 73 65 74 20 69 6e 73 }.. set ins
10210 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 53 65 trumentedfilesSe
10220 6e 74 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 nt($currentfile)
10230 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 0a $debuggerstate.
10240 0a 09 20 20 20 20 46 69 6c 6c 4c 69 73 74 42 6f .. FillListBo
10250 78 0a 09 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a x..} errstring].
10260 09 0a 09 69 66 20 7b 20 24 65 72 72 20 3d 3d 20 ...if { $err ==
10270 31 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 1 } {.. set e
10280 72 72 73 74 72 69 6e 67 20 24 3a 3a 65 72 72 6f rrstring $::erro
10290 72 49 6e 66 6f 0a 09 20 20 20 20 0a 09 20 20 20 rInfo.. ..
102a0 20 69 66 20 7b 20 24 6f 70 74 73 28 2d 72 65 74 if { $opts(-ret
102b0 75 72 6e 5f 65 72 72 6f 72 29 20 7d 20 7b 0a 09 urn_error) } {..
102c0 09 65 72 72 6f 72 20 24 65 72 72 73 74 72 69 6e .error $errstrin
102d0 67 0a 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 g.. } elseif
102e0 7b 20 5b 63 61 74 63 68 20 7b 0a 09 09 57 61 72 { [catch {...War
102f0 6e 57 69 6e 20 24 65 72 72 73 74 72 69 6e 67 0a nWin $errstring.
10300 09 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 09 70 75 . }] } {...pu
10310 74 73 20 24 65 72 72 73 74 72 69 6e 67 0a 09 20 ts $errstring..
10320 20 20 20 7d 0a 09 7d 20 65 6c 73 65 69 66 20 7b }..} elseif {
10330 20 24 65 72 72 20 3d 3d 20 32 20 7d 20 7b 0a 09 $err == 2 } {..
10340 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 return..}.
10350 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 6f }.. if { $o
10360 70 74 73 28 6c 69 6e 65 29 20 21 3d 20 22 22 20 pts(line) != ""
10370 7d 20 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 } {..set current
10380 6c 69 6e 65 20 24 6f 70 74 73 28 6c 69 6e 65 29 line $opts(line)
10390 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
103a0 24 6f 70 74 73 28 2d 72 65 74 75 72 6e 64 61 74 $opts(-returndat
103b0 61 29 20 7c 7c 20 24 6f 70 74 73 28 2d 71 75 69 a) || $opts(-qui
103c0 65 74 29 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 et) } {..return
103d0 24 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a 0a 20 $retval. }..
103e0 20 20 20 73 65 74 20 6c 69 6e 65 73 20 5b 73 70 set lines [sp
103f0 6c 69 74 20 24 66 69 6c 65 73 28 24 63 75 72 72 lit $files($curr
10400 65 6e 74 66 69 6c 65 29 20 5c 6e 5d 0a 20 20 20 entfile) \n].
10410 20 73 65 74 20 72 65 74 76 61 6c 20 22 22 0a 20 set retval "".
10420 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 2d for { set i -
10430 31 20 7d 20 7b 20 24 69 20 3c 20 33 20 7d 20 7b 1 } { $i < 3 } {
10440 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 61 70 70 incr i } {..app
10450 65 6e 64 20 72 65 74 76 61 6c 20 22 5b 66 6f 72 end retval "[for
10460 6d 61 74 20 25 34 64 20 5b 65 78 70 72 20 24 63 mat %4d [expr $c
10470 75 72 72 65 6e 74 6c 69 6e 65 2b 24 69 2b 31 5d urrentline+$i+1]
10480 5d 20 2d 2d 3e 20 22 0a 09 61 70 70 65 6e 64 20 ] --> "..append
10490 72 65 74 76 61 6c 20 22 5b 6c 69 6e 64 65 78 20 retval "[lindex
104a0 24 6c 69 6e 65 73 20 5b 65 78 70 72 20 24 63 75 $lines [expr $cu
104b0 72 72 65 6e 74 6c 69 6e 65 2b 24 69 5d 5d 5c 6e rrentline+$i]]\n
104c0 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 63 72 ". }. incr
104d0 20 63 75 72 72 65 6e 74 6c 69 6e 65 20 34 0a 20 currentline 4.
104e0 20 20 20 72 65 74 75 72 6e 20 24 72 65 74 76 61 return $retva
104f0 6c 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 l.}..proc RamDeb
10500 75 67 67 65 72 3a 3a 72 63 6f 6e 64 20 7b 20 61 ugger::rcond { a
10510 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 rgs } {. vari
10520 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 able breakpoints
10530 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 . variable de
10540 62 75 67 67 65 72 73 74 61 74 65 0a 0a 20 20 20 buggerstate..
10550 20 69 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 if { $debuggers
10560 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d tate == "time" }
10570 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f {..error [_ "Co
10580 6d 6d 61 6e 64 20 72 63 6f 6e 64 20 63 61 6e 6e mmand rcond cann
10590 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 27 74 ot be used in 't
105a0 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65 63 6b ime' mode. Check
105b0 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d 0a 0a rtime"]. }..
105c0 20 20 20 20 73 65 74 20 75 73 61 67 65 73 74 72 set usagestr
105d0 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 63 6f 6e ing {usage: rcon
105e0 64 20 3f 73 77 69 74 63 68 65 73 3f 20 62 72 65 d ?switches? bre
105f0 61 6b 70 6f 69 6e 74 6e 75 6d 20 63 6f 6e 64 0a akpointnum cond.
10600 09 2d 68 3a 20 20 20 20 20 20 20 64 69 73 70 6c .-h: displ
10610 61 79 73 20 75 73 61 67 65 0a 09 2d 71 75 69 65 ays usage..-quie
10620 74 3a 20 64 6f 20 6e 6f 74 20 70 72 69 6e 74 20 t: do not print
10630 61 6e 79 74 68 69 6e 67 0a 09 2d 2d 3a 20 20 20 anything..--:
10640 20 20 65 6e 64 20 6f 66 20 6f 70 74 69 6f 6e 73 end of options
10650 0a 20 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 . }. Parse
10660 41 72 67 73 20 24 61 72 67 73 20 24 75 73 61 67 Args $args $usag
10670 65 73 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20 estring opts..
10680 20 20 73 65 74 20 66 6f 75 6e 64 20 30 0a 20 20 set found 0.
10690 20 20 73 65 74 20 69 70 6f 73 20 30 0a 20 20 20 set ipos 0.
106a0 20 66 6f 72 65 61 63 68 20 69 20 24 62 72 65 61 foreach i $brea
106b0 6b 70 6f 69 6e 74 73 20 7b 0a 09 69 66 20 7b 20 kpoints {..if {
106c0 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 20 3d 3d [lindex $i 0] ==
106d0 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e $opts(breakpoin
106e0 74 6e 75 6d 29 20 7d 20 7b 0a 09 20 20 20 20 73 tnum) } {.. s
106f0 65 74 20 66 6f 75 6e 64 20 31 0a 09 20 20 20 20 et found 1..
10700 62 72 65 61 6b 0a 09 7d 0a 09 69 6e 63 72 20 69 break..}..incr i
10710 70 6f 73 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 pos. }. if
10720 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 { !$found } {..
10730 65 72 72 6f 72 20 5b 5f 20 22 42 72 65 61 6b 70 error [_ "Breakp
10740 6f 69 6e 74 73 20 25 73 20 64 6f 65 73 20 6e 6f oints %s does no
10750 74 20 65 78 69 73 74 5c 6e 25 73 22 20 24 6f 70 t exist\n%s" $op
10760 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d ts(breakpointnum
10770 29 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d 0a ) $usagestring].
10780 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 62 72 }. set br
10790 65 61 6b 70 6f 69 6e 74 73 20 5b 6c 72 65 70 6c eakpoints [lrepl
107a0 61 63 65 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 ace $breakpoints
107b0 20 24 69 70 6f 73 20 24 69 70 6f 73 20 5b 6c 72 $ipos $ipos [lr
107c0 65 70 6c 61 63 65 20 24 69 20 34 20 34 20 24 6f eplace $i 4 4 $o
107d0 70 74 73 28 63 6f 6e 64 29 5d 5d 0a 0a 20 20 20 pts(cond)]]..
107e0 20 55 70 64 61 74 65 52 65 6d 6f 74 65 42 72 65 UpdateRemoteBre
107f0 61 6b 73 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 aks.. if { !$
10800 6f 70 74 73 28 2d 71 75 69 65 74 29 20 7d 20 7b opts(-quiet) } {
10810 0a 09 72 65 74 75 72 6e 20 5b 5f 20 22 63 6f 6e ..return [_ "con
10820 64 69 74 69 6f 6e 20 66 6f 72 20 62 72 65 61 6b dition for break
10830 70 6f 69 6e 74 20 25 73 3a 20 25 73 22 20 24 6f point %s: %s" $o
10840 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 pts(breakpointnu
10850 6d 29 20 24 6f 70 74 73 28 63 6f 6e 64 29 5d 0a m) $opts(cond)].
10860 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 }.}..proc Ra
10870 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 6e 61 62 mDebugger::renab
10880 6c 65 64 69 73 61 62 6c 65 20 7b 20 61 72 67 73 ledisable { args
10890 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
108a0 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 e breakpoints.
108b0 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 variable debug
108c0 67 65 72 73 74 61 74 65 0a 0a 20 20 20 20 69 66 gerstate.. if
108d0 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 74 { $debuggerstat
108e0 65 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a e == "time" } {.
108f0 09 65 72 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 .error [_ "Comma
10900 6e 64 20 72 65 6e 61 62 6c 65 64 69 73 61 62 6c nd renabledisabl
10910 65 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 e cannot be used
10920 20 69 6e 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e in 'time' mode.
10930 20 43 68 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20 Check rtime"].
10940 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 75 73 }.. set us
10950 61 67 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 agestring {usage
10960 3a 20 72 65 6e 61 62 6c 65 64 69 73 61 62 6c 65 : renabledisable
10970 20 3f 73 77 69 74 63 68 65 73 3f 20 62 72 65 61 ?switches? brea
10980 6b 70 6f 69 6e 74 6e 75 6d 0a 09 2d 68 3a 20 20 kpointnum..-h:
10990 20 20 20 20 20 64 69 73 70 6c 61 79 73 20 75 73 displays us
109a0 61 67 65 0a 09 2d 71 75 69 65 74 3a 20 64 6f 20 age..-quiet: do
109b0 6e 6f 74 20 70 72 69 6e 74 20 61 6e 79 74 68 69 not print anythi
109c0 6e 67 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 ng..--: end
109d0 6f 66 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 7d of options. }
109e0 0a 20 20 20 20 50 61 72 73 65 41 72 67 73 20 24 . ParseArgs $
109f0 61 72 67 73 20 24 75 73 61 67 65 73 74 72 69 6e args $usagestrin
10a00 67 20 6f 70 74 73 0a 0a 20 20 20 20 73 65 74 20 g opts.. set
10a10 66 6f 75 6e 64 20 30 0a 20 20 20 20 73 65 74 20 found 0. set
10a20 69 70 6f 73 20 30 0a 20 20 20 20 66 6f 72 65 61 ipos 0. forea
10a30 63 68 20 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 ch i $breakpoint
10a40 73 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65 s {..if { [linde
10a50 78 20 24 69 20 30 5d 20 3d 3d 20 24 6f 70 74 73 x $i 0] == $opts
10a60 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 (breakpointnum)
10a70 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 6f 75 } {.. set fou
10a80 6e 64 20 31 0a 09 20 20 20 20 62 72 65 61 6b 0a nd 1.. break.
10a90 09 7d 0a 09 69 6e 63 72 20 69 70 6f 73 0a 20 20 .}..incr ipos.
10aa0 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 24 66 }. if { !$f
10ab0 6f 75 6e 64 20 7d 20 7b 0a 09 65 72 72 6f 72 20 ound } {..error
10ac0 5b 5f 20 22 42 72 65 61 6b 70 6f 69 6e 74 73 20 [_ "Breakpoints
10ad0 25 73 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 %s does not exis
10ae0 74 5c 6e 25 73 22 20 24 6f 70 74 73 28 62 72 65 t\n%s" $opts(bre
10af0 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 24 75 73 61 akpointnum) $usa
10b00 67 65 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a gestring]. }.
10b10 20 20 20 20 73 65 74 20 62 72 20 5b 6c 69 6e 64 set br [lind
10b20 65 78 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 ex $breakpoints
10b30 24 69 70 6f 73 5d 0a 20 20 20 20 69 66 20 7b 20 $ipos]. if {
10b40 5b 6c 69 6e 64 65 78 20 24 62 72 20 31 5d 20 7d [lindex $br 1] }
10b50 20 7b 0a 09 6c 73 65 74 20 62 72 20 31 20 30 0a {..lset br 1 0.
10b60 09 73 65 74 20 65 6e 61 62 6c 65 64 69 73 61 62 .set enabledisab
10b70 6c 65 20 30 0a 20 20 20 20 7d 20 65 6c 73 65 20 le 0. } else
10b80 7b 0a 09 6c 73 65 74 20 62 72 20 31 20 31 0a 09 {..lset br 1 1..
10b90 73 65 74 20 65 6e 61 62 6c 65 64 69 73 61 62 6c set enabledisabl
10ba0 65 20 31 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 e 1. }. se
10bb0 74 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 5b 6c t breakpoints [l
10bc0 72 65 70 6c 61 63 65 20 24 62 72 65 61 6b 70 6f replace $breakpo
10bd0 69 6e 74 73 20 24 69 70 6f 73 20 24 69 70 6f 73 ints $ipos $ipos
10be0 20 24 62 72 5d 0a 0a 20 20 20 20 55 70 64 61 74 $br].. Updat
10bf0 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 0a 0a 20 eRemoteBreaks..
10c00 20 20 20 69 66 20 7b 20 21 24 6f 70 74 73 28 2d if { !$opts(-
10c10 71 75 69 65 74 29 20 7d 20 7b 0a 09 72 65 74 75 quiet) } {..retu
10c20 72 6e 20 5b 5f 20 22 62 72 65 61 6b 70 6f 69 6e rn [_ "breakpoin
10c30 74 20 25 73 20 65 6e 61 62 6c 65 2f 64 69 73 61 t %s enable/disa
10c40 62 6c 65 3a 20 25 73 22 20 24 6f 70 74 73 28 62 ble: %s" $opts(b
10c50 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 24 65 reakpointnum) $e
10c60 6e 61 62 6c 65 64 69 73 61 62 6c 65 5d 0a 20 20 nabledisable].
10c70 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
10c80 65 62 75 67 67 65 72 3a 3a 72 62 72 65 61 6b 74 ebugger::rbreakt
10c90 6f 74 72 61 63 65 20 7b 20 61 72 67 73 20 7d 20 otrace { args }
10ca0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 62 {. variable b
10cb0 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20 20 76 reakpoints. v
10cc0 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 ariable debugger
10cd0 73 74 61 74 65 0a 0a 20 20 20 20 69 66 20 7b 20 state.. if {
10ce0 24 64 65 62 75 67 67 65 72 73 74 61 74 65 20 3d $debuggerstate =
10cf0 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a 09 65 72 = "time" } {..er
10d00 72 6f 72 20 5b 5f 20 22 43 6f 6d 6d 61 6e 64 20 ror [_ "Command
10d10 72 62 72 65 61 6b 74 6f 74 72 61 63 65 20 63 61 rbreaktotrace ca
10d20 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 nnot be used in
10d30 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 68 65 'time' mode. Che
10d40 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 20 7d ck rtime"]. }
10d50 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 65 73 .. set usages
10d60 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 72 62 tring {usage: rb
10d70 72 65 61 6b 74 6f 74 72 61 63 65 20 3f 73 77 69 reaktotrace ?swi
10d80 74 63 68 65 73 3f 20 62 72 65 61 6b 70 6f 69 6e tches? breakpoin
10d90 74 6e 75 6d 0a 09 2d 68 3a 20 20 20 20 20 20 20 tnum..-h:
10da0 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a 09 displays usage..
10db0 2d 71 75 69 65 74 3a 20 64 6f 20 6e 6f 74 20 70 -quiet: do not p
10dc0 72 69 6e 74 20 61 6e 79 74 68 69 6e 67 0a 09 2d rint anything..-
10dd0 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 20 6f 70 -: end of op
10de0 74 69 6f 6e 73 0a 20 20 20 20 7d 0a 20 20 20 20 tions. }.
10df0 50 61 72 73 65 41 72 67 73 20 24 61 72 67 73 20 ParseArgs $args
10e00 24 75 73 61 67 65 73 74 72 69 6e 67 20 6f 70 74 $usagestring opt
10e10 73 0a 0a 20 20 20 20 73 65 74 20 66 6f 75 6e 64 s.. set found
10e20 20 30 0a 20 20 20 20 73 65 74 20 69 70 6f 73 20 0. set ipos
10e30 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 0. foreach i
10e40 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 $breakpoints {..
10e50 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 69 20 if { [lindex $i
10e60 30 5d 20 3d 3d 20 24 6f 70 74 73 28 62 72 65 61 0] == $opts(brea
10e70 6b 70 6f 69 6e 74 6e 75 6d 29 20 7d 20 7b 0a 09 kpointnum) } {..
10e80 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a set found 1.
10e90 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 09 69 . break..}..i
10ea0 6e 63 72 20 69 70 6f 73 0a 20 20 20 20 7d 0a 20 ncr ipos. }.
10eb0 20 20 20 69 66 20 7b 20 21 24 66 6f 75 6e 64 20 if { !$found
10ec0 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 22 42 } {..error [_ "B
10ed0 72 65 61 6b 70 6f 69 6e 74 20 25 73 20 64 6f 65 reakpoint %s doe
10ee0 73 20 6e 6f 74 20 65 78 69 73 74 5c 6e 25 73 22 s not exist\n%s"
10ef0 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e $opts(breakpoin
10f00 74 6e 75 6d 29 20 24 75 73 61 67 65 73 74 72 69 tnum) $usagestri
10f10 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 ng]. }. se
10f20 74 20 62 72 20 5b 6c 69 6e 64 65 78 20 24 62 72 t br [lindex $br
10f30 65 61 6b 70 6f 69 6e 74 73 20 24 69 70 6f 73 5d eakpoints $ipos]
10f40 0a 20 20 20 20 6c 73 65 74 20 62 72 20 32 20 22 . lset br 2 "
10f50 22 0a 20 20 20 20 6c 73 65 74 20 62 72 20 33 20 ". lset br 3
10f60 22 22 0a 20 20 20 20 73 65 74 20 62 72 65 61 6b "". set break
10f70 70 6f 69 6e 74 73 20 5b 6c 72 65 70 6c 61 63 65 points [lreplace
10f80 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 24 69 $breakpoints $i
10f90 70 6f 73 20 24 69 70 6f 73 20 24 62 72 5d 0a 0a pos $ipos $br]..
10fa0 20 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74 65 UpdateRemote
10fb0 42 72 65 61 6b 73 0a 0a 20 20 20 20 69 66 20 7b Breaks.. if {
10fc0 20 21 24 6f 70 74 73 28 2d 71 75 69 65 74 29 20 !$opts(-quiet)
10fd0 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 5f 20 22 } {..return [_ "
10fe0 62 72 65 61 6b 70 6f 69 6e 74 20 25 73 20 63 6f breakpoint %s co
10ff0 6e 76 65 72 74 65 64 20 74 6f 20 74 72 61 63 65 nverted to trace
11000 22 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 " $opts(breakpoi
11010 6e 74 6e 75 6d 29 5d 0a 20 20 20 20 7d 0a 7d 0a ntnum)]. }.}.
11020 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
11030 65 72 3a 3a 72 62 72 65 61 6b 20 7b 20 61 72 67 er::rbreak { arg
11040 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 s } {. variab
11050 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a le remoteserver.
11060 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
11070 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 rentfile. var
11080 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
11090 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 e_endline. va
110a0 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 6c 69 riable currentli
110b0 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ne. variable
110c0 66 69 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62 files. variab
110d0 6c 65 20 66 69 6c 65 73 6c 69 73 74 0a 20 20 20 le fileslist.
110e0 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 variable instru
110f0 6d 65 6e 74 65 64 66 69 6c 65 73 50 0a 20 20 20 mentedfilesP.
11100 20 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 variable instru
11110 6d 65 6e 74 65 64 66 69 6c 65 73 52 0a 20 20 20 mentedfilesR.
11120 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 variable remote
11130 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 serverType. v
11140 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 ariable breakpoi
11150 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 nts. variable
11160 20 64 65 62 75 67 67 65 72 73 74 61 74 65 0a 0a debuggerstate..
11170 20 20 20 20 69 66 20 7b 20 24 64 65 62 75 67 67 if { $debugg
11180 65 72 73 74 61 74 65 20 3d 3d 20 22 74 69 6d 65 erstate == "time
11190 22 20 7d 20 7b 0a 09 65 72 72 6f 72 20 5b 5f 20 " } {..error [_
111a0 22 43 6f 6d 6d 61 6e 64 20 72 62 72 65 61 6b 20 "Command rbreak
111b0 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69 cannot be used i
111c0 6e 20 27 74 69 6d 65 27 20 6d 6f 64 65 2e 20 43 n 'time' mode. C
111d0 68 65 63 6b 20 72 74 69 6d 65 22 5d 0a 20 20 20 heck rtime"].
111e0 20 7d 0a 0a 20 20 20 20 73 65 74 20 75 73 61 67 }.. set usag
111f0 65 73 74 72 69 6e 67 20 7b 75 73 61 67 65 3a 20 estring {usage:
11200 72 62 72 65 61 6b 20 3f 73 77 69 74 63 68 65 73 rbreak ?switches
11210 3f 20 3f 66 69 6c 65 3f 20 6c 69 6e 65 0a 09 2d ? ?file? line..-
11220 68 3a 20 20 20 20 20 64 69 73 70 6c 61 79 73 20 h: displays
11230 75 73 61 67 65 0a 09 2d 71 75 69 65 74 3a 20 64 usage..-quiet: d
11240 6f 20 6e 6f 74 20 70 72 69 6e 74 20 61 6e 79 74 o not print anyt
11250 68 69 6e 67 0a 09 2d 66 6f 72 63 65 3a 20 66 6f hing..-force: fo
11260 72 63 65 20 74 6f 20 72 65 6c 6f 61 64 20 66 69 rce to reload fi
11270 6c 65 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 le..--: end
11280 6f 66 20 6f 70 74 69 6f 6e 73 0a 0a 09 54 68 69 of options...Thi
11290 73 20 63 6f 6d 6d 61 6e 64 20 73 65 74 73 20 61 s command sets a
112a0 20 62 72 65 61 6b 70 6f 69 6e 74 20 69 6e 20 74 breakpoint in t
112b0 68 65 20 67 69 76 65 6e 20 6c 69 6e 65 2e 0a 20 he given line..
112c0 20 20 20 7d 0a 20 20 20 20 50 61 72 73 65 41 72 }. ParseAr
112d0 67 73 20 24 61 72 67 73 20 24 75 73 61 67 65 73 gs $args $usages
112e0 74 72 69 6e 67 20 6f 70 74 73 0a 0a 20 20 20 20 tring opts..
112f0 69 66 20 7b 20 24 6f 70 74 73 28 6c 69 6e 65 29 if { $opts(line)
11300 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 72 6f == "" } {..erro
11310 72 20 5b 5f 20 22 49 74 20 69 73 20 6e 65 63 65 r [_ "It is nece
11320 73 73 61 72 79 20 74 6f 20 65 6e 74 65 72 20 61 ssary to enter a
11330 20 6c 69 6e 65 20 6e 75 6d 62 65 72 5c 6e 25 73 line number\n%s
11340 22 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d 0a " $usagestring].
11350 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 75 }. set cu
11360 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65 20 24 rrentfile_save $
11370 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
11380 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f set currentfile_
11390 65 6e 64 6c 69 6e 65 5f 73 61 76 65 20 24 63 75 endline_save $cu
113a0 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e rrentfile_endlin
113b0 65 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 e. if { [catc
113c0 68 20 7b 0a 09 72 6c 69 73 74 20 2d 71 75 69 65 h {..rlist -quie
113d0 74 20 24 6f 70 74 73 28 66 69 6c 65 29 20 24 6f t $opts(file) $o
113e0 70 74 73 28 6c 69 6e 65 29 0a 20 20 20 20 7d 20 pts(line). }
113f0 65 72 72 63 61 74 63 68 5d 20 7d 20 7b 0a 09 73 errcatch] } {..s
11400 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 20 24 et currentfile $
11410 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65 currentfile_save
11420 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c ..set currentfil
11430 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72 72 65 e_endline $curre
11440 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 ntfile_endline_s
11450 61 76 65 0a 09 65 72 72 6f 72 20 22 5b 6c 69 6e ave..error "[lin
11460 64 65 78 20 5b 73 70 6c 69 74 20 24 65 72 72 63 dex [split $errc
11470 61 74 63 68 20 5c 6e 5d 20 30 5d 5c 6e 24 75 73 atch \n] 0]\n$us
11480 61 67 65 73 74 72 69 6e 67 22 0a 20 20 20 20 7d agestring". }
11490 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 6e 75 .. set filenu
114a0 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 m [lsearch -exac
114b0 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24 63 75 t $fileslist $cu
114c0 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20 20 20 0a rrentfile]. .
114d0 20 20 20 20 73 65 74 20 66 69 6c 65 74 79 70 65 set filetype
114e0 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65 20 24 [GiveFileType $
114f0 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 20 20 currentfile].
11500 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 if { $filetype
11510 3d 3d 20 22 54 43 4c 22 20 7d 20 7b 0a 09 73 65 == "TCL" } {..se
11520 74 20 69 70 6f 73 20 5b 73 74 72 69 6e 67 20 66 t ipos [string f
11530 69 72 73 74 20 22 52 44 43 3a 3a 46 20 24 66 69 irst "RDC::F $fi
11540 6c 65 6e 75 6d 20 24 63 75 72 72 65 6e 74 6c 69 lenum $currentli
11550 6e 65 20 3b 22 20 24 69 6e 73 74 72 75 6d 65 6e ne ;" $instrumen
11560 74 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 tedfilesP($curre
11570 6e 74 66 69 6c 65 29 5d 0a 09 69 66 20 7b 20 24 ntfile)]..if { $
11580 69 70 6f 73 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 ipos == -1 } {..
11590 20 20 20 20 73 65 74 20 69 70 6f 73 20 5b 73 74 set ipos [st
115a0 72 69 6e 67 20 66 69 72 73 74 20 22 52 44 43 3a ring first "RDC:
115b0 3a 46 20 24 66 69 6c 65 6e 75 6d 20 24 63 75 72 :F $filenum $cur
115c0 72 65 6e 74 6c 69 6e 65 20 3b 22 20 24 69 6e 73 rentline ;" $ins
115d0 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 52 28 trumentedfilesR(
115e0 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 0a 09 $currentfile)]..
115f0 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 3d if { $ipos =
11600 3d 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 65 = -1 } {...set e
11610 72 72 6f 72 6d 65 73 73 61 67 65 20 5b 5f 20 22 rrormessage [_ "
11620 45 72 72 6f 72 3a 20 6c 69 6e 65 20 25 73 20 69 Error: line %s i
11630 73 20 6e 6f 74 20 69 6e 73 74 72 75 6d 65 6e 74 s not instrument
11640 65 64 22 20 24 63 75 72 72 65 6e 74 6c 69 6e 65 ed" $currentline
11650 5d 0a 09 09 73 65 74 20 6c 69 6e 65 74 78 74 20 ]...set linetxt
11660 5b 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 [lindex [split $
11670 66 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 files($currentfi
11680 6c 65 29 20 5c 6e 5d 20 5b 65 78 70 72 20 7b 24 le) \n] [expr {$
11690 63 75 72 72 65 6e 74 6c 69 6e 65 2d 31 7d 5d 5d currentline-1}]]
116a0 0a 09 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 ...if { [string
116b0 74 72 69 6d 20 24 6c 69 6e 65 74 78 74 5d 20 3d trim $linetxt] =
116c0 3d 20 22 5c 7d 22 20 7d 20 7b 0a 09 09 20 20 20 = "\}" } {...
116d0 20 61 70 70 65 6e 64 20 65 72 72 6f 72 6d 65 73 append errormes
116e0 73 61 67 65 20 5b 5f 20 22 2e 20 43 6f 6e 73 69 sage [_ ". Consi
116f0 64 65 72 20 6f 70 74 69 6f 6e 20 27 49 6e 73 74 der option 'Inst
11700 72 75 6d 65 6e 74 20 70 72 6f 63 20 6c 61 73 74 rument proc last
11710 20 6c 69 6e 65 27 20 69 6e 20 50 72 65 66 65 72 line' in Prefer
11720 65 6e 63 65 73 22 5d 0a 09 09 7d 0a 09 09 73 65 ences"]...}...se
11730 74 20 63 75 72 72 65 6e 74 66 69 6c 65 20 24 63 t currentfile $c
11740 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 76 65 0a urrentfile_save.
11750 09 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c ..set currentfil
11760 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72 72 65 e_endline $curre
11770 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 ntfile_endline_s
11780 61 76 65 0a 09 09 65 72 72 6f 72 20 24 65 72 72 ave...error $err
11790 6f 72 6d 65 73 73 61 67 65 0a 09 20 20 20 20 7d ormessage.. }
117a0 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 ..}. } elseif
117b0 20 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 { $filetype ==
117c0 22 43 2f 43 2b 2b 22 20 7d 20 7b 0a 09 23 20 6e "C/C++" } {..# n
117d0 6f 74 68 69 6e 67 0a 20 20 20 20 7d 20 65 6c 73 othing. } els
117e0 65 20 7b 0a 09 73 65 74 20 65 72 72 6f 72 6d 65 e {..set errorme
117f0 73 73 61 67 65 20 5b 5f 20 22 45 72 72 6f 72 3a ssage [_ "Error:
11800 20 74 68 69 73 20 74 79 70 65 20 6f 66 20 66 69 this type of fi
11810 6c 65 20 64 6f 65 73 20 6e 6f 74 20 70 65 72 6d le does not perm
11820 6d 69 74 20 64 65 62 75 67 67 69 6e 67 22 5d 0a mit debugging"].
11830 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 .set currentfile
11840 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 $currentfile_sa
11850 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 ve..set currentf
11860 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 72 ile_endline $cur
11870 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 rentfile_endline
11880 5f 73 61 76 65 0a 09 65 72 72 6f 72 20 24 65 72 _save..error $er
11890 72 6f 72 6d 65 73 73 61 67 65 0a 20 20 20 20 7d rormessage. }
118a0 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 4e 75 . . set Nu
118b0 6d 42 72 65 61 6b 50 6f 69 6e 74 20 31 0a 20 20 mBreakPoint 1.
118c0 20 20 66 6f 72 65 61 63 68 20 69 20 24 62 72 65 foreach i $bre
118d0 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 69 66 20 7b akpoints {..if {
118e0 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 20 3e [lindex $i 0] >
118f0 3d 20 24 4e 75 6d 42 72 65 61 6b 50 6f 69 6e 74 = $NumBreakPoint
11900 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 4e 75 } {.. set Nu
11910 6d 42 72 65 61 6b 50 6f 69 6e 74 20 5b 65 78 70 mBreakPoint [exp
11920 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 2b r [lindex $i 0]+
11930 31 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 1]..}. }.
11940 6c 61 70 70 65 6e 64 20 62 72 65 61 6b 70 6f 69 lappend breakpoi
11950 6e 74 73 20 5b 6c 69 73 74 20 24 4e 75 6d 42 72 nts [list $NumBr
11960 65 61 6b 50 6f 69 6e 74 20 31 20 24 63 75 72 72 eakPoint 1 $curr
11970 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e 74 entfile $current
11980 6c 69 6e 65 20 22 22 5d 0a 20 20 20 20 55 70 64 line ""]. Upd
11990 61 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 0a ateRemoteBreaks.
119a0 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 . set current
119b0 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c file $currentfil
119c0 65 5f 73 61 76 65 0a 20 20 20 20 73 65 74 20 63 e_save. set c
119d0 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 urrentfile_endli
119e0 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f ne $currentfile_
119f0 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 20 20 20 endline_save.
11a00 20 69 66 20 7b 20 21 24 6f 70 74 73 28 2d 71 75 if { !$opts(-qu
11a10 69 65 74 29 20 7d 20 7b 0a 09 72 65 74 75 72 6e iet) } {..return
11a20 20 5b 5f 20 22 73 65 74 20 62 72 65 61 6b 70 6f [_ "set breakpo
11a30 69 6e 74 20 25 73 20 61 74 20 25 73 20 25 73 22 int %s at %s %s"
11a40 20 24 4e 75 6d 42 72 65 61 6b 50 6f 69 6e 74 20 $NumBreakPoint
11a50 24 6f 70 74 73 28 66 69 6c 65 29 20 24 63 75 72 $opts(file) $cur
11a60 72 65 6e 74 6c 69 6e 65 5d 0a 20 20 20 20 7d 0a rentline]. }.
11a70 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
11a80 67 65 72 3a 3a 72 69 6e 66 6f 20 7b 20 61 72 67 ger::rinfo { arg
11a90 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 s } {. variab
11aa0 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 le breakpoints.
11ab0 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
11ac0 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 73 65 74 entfile.. set
11ad0 20 75 73 61 67 65 73 74 72 69 6e 67 20 7b 75 73 usagestring {us
11ae0 61 67 65 3a 20 72 69 6e 66 6f 20 3f 73 77 69 74 age: rinfo ?swit
11af0 63 68 65 73 3f 20 3f 6c 69 6e 65 3f 0a 09 2d 66 ches? ?line?..-f
11b00 75 6c 6c 3a 20 20 20 20 72 65 74 75 72 6e 73 20 ull: returns
11b10 61 6c 6c 20 62 72 65 61 6b 70 6f 69 6e 74 20 69 all breakpoint i
11b20 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 6c nformation for l
11b30 69 6e 65 0a 09 2d 68 3a 20 20 20 20 20 20 20 64 ine..-h: d
11b40 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a 09 2d isplays usage..-
11b50 2d 3a 20 20 20 20 20 20 20 65 6e 64 20 6f 66 20 -: end of
11b60 6f 70 74 69 6f 6e 73 0a 0a 09 44 69 73 70 6c 61 options...Displa
11b70 79 20 61 63 74 69 76 65 20 62 72 65 61 6b 70 6f y active breakpo
11b80 69 6e 74 73 2e 20 49 66 20 6c 69 6e 65 20 69 73 ints. If line is
11b90 20 65 6e 74 65 72 65 64 2c 20 69 74 20 72 65 66 entered, it ref
11ba0 65 72 73 20 74 6f 20 74 68 65 0a 09 63 75 72 72 ers to the..curr
11bb0 65 6e 74 66 69 6c 65 2e 0a 20 20 20 20 7d 0a 20 entfile.. }.
11bc0 20 20 20 50 61 72 73 65 41 72 67 73 20 24 61 72 ParseArgs $ar
11bd0 67 73 20 24 75 73 61 67 65 73 74 72 69 6e 67 20 gs $usagestring
11be0 6f 70 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 opts.. if { $
11bf0 6f 70 74 73 28 6c 69 6e 65 29 20 21 3d 20 22 22 opts(line) != ""
11c00 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 73 74 72 } {..if { ![str
11c10 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20 24 ing is integer $
11c20 6f 70 74 73 28 6c 69 6e 65 29 5d 20 7d 20 7b 0a opts(line)] } {.
11c30 09 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 22 6c . error [_ "l
11c40 69 6e 65 20 27 25 73 27 20 6d 75 73 74 20 62 65 ine '%s' must be
11c50 20 61 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20 24 a number\n%s" $
11c60 6c 69 6e 65 20 24 75 73 61 67 65 73 74 72 69 6e line $usagestrin
11c70 67 5d 0a 09 7d 0a 09 73 65 74 20 72 65 74 76 61 g]..}..set retva
11c80 6c 20 22 22 0a 09 66 6f 72 65 61 63 68 20 69 20 l ""..foreach i
11c90 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 $breakpoints {..
11ca0 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78 if { [lindex
11cb0 20 24 69 20 32 5d 20 3d 3d 20 24 63 75 72 72 65 $i 2] == $curre
11cc0 6e 74 66 69 6c 65 20 26 26 20 5b 6c 69 6e 64 65 ntfile && [linde
11cd0 78 20 24 69 20 33 5d 20 3d 3d 20 24 6f 70 74 73 x $i 3] == $opts
11ce0 28 6c 69 6e 65 29 20 7d 20 7b 0a 09 09 69 66 20 (line) } {...if
11cf0 7b 20 24 6f 70 74 73 28 2d 66 75 6c 6c 29 20 7d { $opts(-full) }
11d00 20 7b 0a 09 09 20 20 20 20 6c 61 70 70 65 6e 64 {... lappend
11d10 20 72 65 74 76 61 6c 20 24 69 0a 09 09 7d 20 65 retval $i...} e
11d20 6c 73 65 20 7b 0a 09 09 20 20 20 20 6c 61 70 70 lse {... lapp
11d30 65 6e 64 20 72 65 74 76 61 6c 20 5b 6c 69 6e 64 end retval [lind
11d40 65 78 20 24 69 20 30 5d 0a 09 09 7d 0a 09 20 20 ex $i 0]...}..
11d50 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 }..}..return $
11d60 72 65 74 76 61 6c 0a 20 20 20 20 7d 0a 0a 20 20 retval. }..
11d70 20 20 73 65 74 20 72 65 74 76 61 6c 20 22 22 0a set retval "".
11d80 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 62 foreach i $b
11d90 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 61 70 reakpoints {..ap
11da0 70 65 6e 64 20 72 65 74 76 61 6c 20 24 69 5c 6e pend retval $i\n
11db0 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 . }. retur
11dc0 6e 20 24 72 65 74 76 61 6c 0a 7d 0a 0a 70 72 6f n $retval.}..pro
11dd0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 c RamDebugger::r
11de0 64 65 6c 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 del { args } {.
11df0 20 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 variable file
11e00 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 62 s. variable b
11e10 72 65 61 6b 70 6f 69 6e 74 73 0a 0a 20 20 20 20 reakpoints..
11e20 73 65 74 20 75 73 61 67 65 73 74 72 69 6e 67 20 set usagestring
11e30 7b 75 73 61 67 65 3a 20 72 64 65 6c 20 3f 73 77 {usage: rdel ?sw
11e40 69 74 63 68 65 73 3f 20 3f 62 72 65 61 6b 70 6f itches? ?breakpo
11e50 69 6e 74 6e 75 6d 3f 0a 09 2d 68 3a 20 20 20 20 intnum?..-h:
11e60 20 64 69 73 70 6c 61 79 73 20 75 73 61 67 65 0a displays usage.
11e70 09 2d 61 6c 6c 3a 20 20 20 64 65 6c 65 74 65 20 .-all: delete
11e80 61 6c 6c 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 all breakpoints
11e90 0a 09 2d 2d 3a 20 20 20 20 20 65 6e 64 20 6f 66 ..--: end of
11ea0 20 6f 70 74 69 6f 6e 73 0a 0a 09 44 65 6c 65 74 options...Delet
11eb0 65 20 6f 6e 65 20 70 72 65 76 69 6f 75 73 6c 79 e one previously
11ec0 20 64 65 66 69 6e 65 64 20 62 72 65 61 6b 70 6f defined breakpo
11ed0 69 6e 74 73 0a 20 20 20 20 7d 0a 20 20 20 20 50 ints. }. P
11ee0 61 72 73 65 41 72 67 73 20 24 61 72 67 73 20 24 arseArgs $args $
11ef0 75 73 61 67 65 73 74 72 69 6e 67 20 6f 70 74 73 usagestring opts
11f00 0a 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 73 .. if { $opts
11f10 28 2d 61 6c 6c 29 20 7d 20 7b 0a 09 69 66 20 7b (-all) } {..if {
11f20 20 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e $opts(breakpoin
11f30 74 6e 75 6d 29 20 21 3d 20 22 22 20 7d 20 7b 0a tnum) != "" } {.
11f40 09 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 22 77 . error [_ "w
11f50 68 65 6e 20 75 73 69 6e 67 20 2d 61 6c 6c 2c 20 hen using -all,
11f60 6e 6f 20 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d no breakpointnum
11f70 20 6d 75 73 74 20 62 65 20 77 72 69 74 74 65 6e must be written
11f80 5c 6e 25 73 22 20 24 75 73 61 67 65 73 74 72 69 \n%s" $usagestri
11f90 6e 67 5d 0a 09 7d 0a 09 73 65 74 20 62 72 65 61 ng]..}..set brea
11fa0 6b 70 6f 69 6e 74 73 20 22 22 0a 09 55 70 64 61 kpoints ""..Upda
11fb0 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 0a 09 teRemoteBreaks..
11fc0 72 65 74 75 72 6e 20 5b 5f 20 22 64 65 6c 65 74 return [_ "delet
11fd0 65 64 20 61 6c 6c 20 62 72 65 61 6b 70 6f 69 6e ed all breakpoin
11fe0 74 73 22 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 ts"]. }. i
11ff0 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 69 73 20 f { ![string is
12000 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 integer -strict
12010 24 6f 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 $opts(breakpoint
12020 6e 75 6d 29 5d 20 7d 20 7b 0a 09 65 72 72 6f 72 num)] } {..error
12030 20 5b 5f 20 22 62 72 65 61 6b 70 6f 69 6e 74 6e [_ "breakpointn
12040 75 6d 20 27 25 73 27 20 6d 75 73 74 20 62 65 20 um '%s' must be
12050 61 20 6e 75 6d 62 65 72 5c 6e 25 73 22 20 24 6f a number\n%s" $o
12060 70 74 73 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 pts(breakpointnu
12070 6d 29 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d m) $usagestring]
12080 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 69 . }. set i
12090 70 6f 73 20 30 0a 20 20 20 20 66 6f 72 65 61 63 pos 0. foreac
120a0 68 20 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 h i $breakpoints
120b0 20 7b 0a 09 69 66 20 7b 20 5b 6c 69 6e 64 65 78 {..if { [lindex
120c0 20 24 69 20 30 5d 20 3d 3d 20 24 6f 70 74 73 28 $i 0] == $opts(
120d0 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 20 7d breakpointnum) }
120e0 20 7b 0a 09 20 20 20 20 73 65 74 20 62 72 65 61 {.. set brea
120f0 6b 70 6f 69 6e 74 73 20 5b 6c 72 65 70 6c 61 63 kpoints [lreplac
12100 65 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 24 e $breakpoints $
12110 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 20 20 20 ipos $ipos]..
12120 20 55 70 64 61 74 65 52 65 6d 6f 74 65 42 72 65 UpdateRemoteBre
12130 61 6b 73 0a 09 20 20 20 20 72 65 74 75 72 6e 20 aks.. return
12140 5b 5f 20 22 64 65 6c 65 74 65 64 20 62 72 65 61 [_ "deleted brea
12150 6b 70 6f 69 6e 74 20 25 73 22 20 24 6f 70 74 73 kpoint %s" $opts
12160 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 5d (breakpointnum)]
12170 0a 09 7d 0a 09 69 6e 63 72 20 69 70 6f 73 0a 20 ..}..incr ipos.
12180 20 20 20 7d 0a 20 20 20 20 65 72 72 6f 72 20 5b }. error [
12190 5f 20 22 62 72 65 61 6b 70 6f 69 6e 74 20 25 73 _ "breakpoint %s
121a0 20 6e 6f 74 20 66 6f 75 6e 64 22 20 6f 70 74 73 not found" opts
121b0 28 62 72 65 61 6b 70 6f 69 6e 74 6e 75 6d 29 5d (breakpointnum)]
121c0 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 .}..############
121d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
121e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
121f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12200 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12210 23 23 23 23 0a 23 20 20 20 20 48 65 6c 70 65 72 ####.# Helper
12220 20 62 61 73 69 63 20 66 75 6e 63 74 69 6f 6e 73 basic functions
12230 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 .###############
12240 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12250 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12260 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12270 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
12280 23 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 #..proc RamDebug
12290 67 65 72 3a 3a 66 69 6c 65 6e 6f 72 6d 61 6c 69 ger::filenormali
122a0 7a 65 20 7b 20 66 69 6c 65 20 7d 20 7b 0a 0a 20 ze { file } {..
122b0 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 if { [string
122c0 69 6e 64 65 78 20 24 66 69 6c 65 20 30 5d 20 3d index $file 0] =
122d0 3d 20 22 2a 22 20 7d 20 7b 20 72 65 74 75 72 6e = "*" } { return
122e0 20 24 66 69 6c 65 20 7d 0a 20 20 20 20 69 66 20 $file }. if
122f0 7b 20 24 66 69 6c 65 20 65 71 20 22 22 20 7d 20 { $file eq "" }
12300 7b 20 72 65 74 75 72 6e 20 22 22 20 7d 0a 20 20 { return "" }.
12310 20 20 0a 20 20 20 20 73 65 74 20 66 69 6c 65 20 . set file
12320 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 [file normalize
12330 24 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 70 $file]. set p
12340 77 64 20 5b 70 77 64 5d 0a 20 20 20 20 63 61 74 wd [pwd]. cat
12350 63 68 20 7b 0a 09 63 64 20 5b 66 69 6c 65 20 64 ch {..cd [file d
12360 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a 09 73 irname $file]..s
12370 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f et file [file jo
12380 69 6e 20 5b 70 77 64 5d 20 5b 66 69 6c 65 20 74 in [pwd] [file t
12390 61 69 6c 20 24 66 69 6c 65 5d 5d 0a 20 20 20 20 ail $file]].
123a0 7d 0a 20 20 20 20 63 64 20 24 70 77 64 0a 0a 20 }. cd $pwd..
123b0 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 if { $::tcl_p
123c0 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d latform(platform
123d0 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 7d ) eq "windows" }
123e0 20 7b 0a 09 63 61 74 63 68 20 7b 20 73 65 74 20 {..catch { set
123f0 66 69 6c 65 20 5b 66 69 6c 65 20 61 74 74 72 69 file [file attri
12400 62 75 74 65 73 20 24 66 69 6c 65 20 2d 6c 6f 6e butes $file -lon
12410 67 6e 61 6d 65 5d 20 7d 0a 20 20 20 20 7d 0a 20 gname] }. }.
12420 20 20 20 72 65 74 75 72 6e 20 24 66 69 6c 65 0a return $file.
12430 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
12440 67 65 72 3a 3a 47 69 76 65 46 69 6c 65 54 79 70 ger::GiveFileTyp
12450 65 46 6f 72 46 69 6c 65 42 72 6f 77 73 65 72 20 eForFileBrowser
12460 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c {} {. variabl
12470 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 e options.. s
12480 65 74 20 74 79 70 65 73 20 22 22 0a 20 20 20 20 et types "".
12490 73 65 74 20 65 78 74 73 20 5b 61 72 72 61 79 20 set exts [array
124a0 6e 61 6d 65 73 20 6f 70 74 69 6f 6e 73 20 65 78 names options ex
124b0 74 65 6e 73 69 6f 6e 73 2c 2a 5d 0a 20 20 20 20 tensions,*].
124c0 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 set ipos [lsearc
124d0 68 20 24 65 78 74 73 20 65 78 74 65 6e 73 69 6f h $exts extensio
124e0 6e 73 2c 54 43 4c 5d 0a 20 20 20 20 73 65 74 20 ns,TCL]. set
124f0 65 6c 6d 20 5b 6c 69 6e 64 65 78 20 24 65 78 74 elm [lindex $ext
12500 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 73 65 74 s $ipos]. set
12510 20 65 78 74 73 20 5b 6c 72 65 70 6c 61 63 65 20 exts [lreplace
12520 24 65 78 74 73 20 24 69 70 6f 73 20 24 69 70 6f $exts $ipos $ipo
12530 73 5d 0a 20 20 20 20 73 65 74 20 65 78 74 73 20 s]. set exts
12540 5b 6c 69 6e 73 65 72 74 20 24 65 78 74 73 20 30 [linsert $exts 0
12550 20 24 65 6c 6d 5d 0a 20 20 20 20 66 6f 72 65 61 $elm]. forea
12560 63 68 20 69 20 24 65 78 74 73 20 7b 0a 09 72 65 ch i $exts {..re
12570 67 65 78 70 20 7b 2c 28 2e 2a 29 7d 20 24 69 20 gexp {,(.*)} $i
12580 7b 7d 20 74 79 70 65 0a 09 6c 61 70 70 65 6e 64 {} type..lappend
12590 20 74 79 70 65 73 20 5b 6c 69 73 74 20 24 74 79 types [list $ty
125a0 70 65 20 24 6f 70 74 69 6f 6e 73 28 24 69 29 5d pe $options($i)]
125b0 0a 20 20 20 20 7d 0a 20 20 20 20 6c 61 70 70 65 . }. lappe
125c0 6e 64 20 74 79 70 65 73 20 5b 6c 69 73 74 20 5b nd types [list [
125d0 5f 20 22 41 6c 6c 20 46 69 6c 65 73 22 5d 20 22 _ "All Files"] "
125e0 2a 22 5d 0a 20 20 20 20 72 65 74 75 72 6e 20 24 *"]. return $
125f0 74 79 70 65 73 0a 7d 0a 0a 70 72 6f 63 20 52 61 types.}..proc Ra
12600 6d 44 65 62 75 67 67 65 72 3a 3a 47 69 76 65 46 mDebugger::GiveF
12610 69 6c 65 54 79 70 65 20 7b 20 66 69 6c 65 6e 61 ileType { filena
12620 6d 65 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 me } {. varia
12630 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 ble options.
12640 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
12650 5f 64 65 66 0a 20 20 20 20 0a 20 20 20 20 69 66 _def. . if
12660 20 7b 20 24 6f 70 74 69 6f 6e 73 28 66 69 6c 65 { $options(file
12670 74 79 70 65 29 20 6e 65 20 22 61 75 74 6f 22 20 type) ne "auto"
12680 7d 20 7b 0a 09 72 65 74 75 72 6e 20 24 6f 70 74 } {..return $opt
12690 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 0a 20 ions(filetype).
126a0 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b }.. if { [
126b0 61 72 72 61 79 20 6e 61 6d 65 73 20 6f 70 74 69 array names opti
126c0 6f 6e 73 20 65 78 74 65 6e 73 69 6f 6e 73 2c 2a ons extensions,*
126d0 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 66 6f 72 ] == "" } {..for
126e0 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 6e 61 each i [array na
126f0 6d 65 73 20 6f 70 74 69 6f 6e 73 5f 64 65 66 20 mes options_def
12700 65 78 74 65 6e 73 69 6f 6e 73 2c 2a 5d 20 7b 0a extensions,*] {.
12710 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 . set options
12720 28 24 69 29 20 24 6f 70 74 69 6f 6e 73 5f 64 65 ($i) $options_de
12730 66 28 24 69 29 0a 09 7d 0a 20 20 20 20 7d 0a 20 f($i)..}. }.
12740 20 20 20 73 65 74 20 74 79 70 65 73 20 22 22 0a set types "".
12750 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 foreach i [a
12760 72 72 61 79 20 6e 61 6d 65 73 20 6f 70 74 69 6f rray names optio
12770 6e 73 20 65 78 74 65 6e 73 69 6f 6e 73 2c 2a 5d ns extensions,*]
12780 20 7b 0a 09 66 6f 72 65 61 63 68 20 65 78 74 20 {..foreach ext
12790 24 6f 70 74 69 6f 6e 73 28 24 69 29 20 7b 0a 09 $options($i) {..
127a0 20 20 20 20 69 66 20 7b 20 24 65 78 74 20 3d 3d if { $ext ==
127b0 20 22 2a 22 20 7d 20 7b 0a 09 09 69 66 20 7b 20 "*" } {...if {
127c0 21 5b 72 65 67 65 78 70 20 7b 5e 5c 2a 2e 2a 5c ![regexp {^\*.*\
127d0 2a 24 7d 20 24 66 69 6c 65 6e 61 6d 65 5d 20 26 *$} $filename] &
127e0 26 20 5b 66 69 6c 65 20 65 78 74 65 6e 73 69 6f & [file extensio
127f0 6e 20 24 66 69 6c 65 6e 61 6d 65 5d 20 21 3d 20 n $filename] !=
12800 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 63 6f 6e "" } {... con
12810 74 69 6e 75 65 0a 09 09 7d 0a 09 09 72 65 67 65 tinue...}...rege
12820 78 70 20 7b 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d xp {,(.*)} $i {}
12830 20 74 79 70 65 0a 09 09 6c 61 70 70 65 6e 64 20 type...lappend
12840 74 79 70 65 73 20 5b 6c 69 73 74 20 32 20 24 74 types [list 2 $t
12850 79 70 65 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 ype].. } else
12860 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20 5b 73 if { [set pos [s
12870 74 72 69 6e 67 20 6c 61 73 74 20 24 65 78 74 20 tring last $ext
12880 24 66 69 6c 65 6e 61 6d 65 5d 5d 20 21 3d 20 2d $filename]] != -
12890 31 20 26 26 20 5c 0a 09 09 24 70 6f 73 2b 5b 73 1 && \...$pos+[s
128a0 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 65 78 tring length $ex
128b0 74 5d 20 3d 3d 20 5b 73 74 72 69 6e 67 20 6c 65 t] == [string le
128c0 6e 67 74 68 20 24 66 69 6c 65 6e 61 6d 65 5d 20 ngth $filename]
128d0 7d 20 7b 0a 09 09 72 65 67 65 78 70 20 7b 2c 28 } {...regexp {,(
128e0 2e 2a 29 7d 20 24 69 20 7b 7d 20 74 79 70 65 0a .*)} $i {} type.
128f0 09 09 6c 61 70 70 65 6e 64 20 74 79 70 65 73 20 ..lappend types
12900 5b 6c 69 73 74 20 31 20 24 74 79 70 65 5d 0a 09 [list 1 $type]..
12910 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 }..}. }.
12920 20 20 20 73 65 74 20 74 79 70 65 73 20 5b 6c 73 set types [ls
12930 6f 72 74 20 2d 69 6e 74 65 67 65 72 20 2d 69 6e ort -integer -in
12940 64 65 78 20 30 20 24 74 79 70 65 73 5d 0a 20 20 dex 0 $types].
12950 20 20 72 65 74 75 72 6e 20 5b 6c 69 6e 64 65 78 return [lindex
12960 20 24 74 79 70 65 73 20 30 20 31 5d 0a 7d 0a 0a $types 0 1].}..
12970 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
12980 3a 3a 50 61 72 73 65 41 72 67 73 20 7b 20 61 72 ::ParseArgs { ar
12990 67 73 20 75 73 61 67 65 73 74 72 69 6e 67 20 4f gs usagestring O
129a0 70 74 73 4e 61 6d 65 20 7d 20 7b 0a 20 20 20 20 ptsName } {.
129b0 75 70 76 61 72 20 31 20 24 4f 70 74 73 4e 61 6d upvar 1 $OptsNam
129c0 65 20 6f 70 74 73 0a 0a 20 20 20 20 73 65 74 20 e opts.. set
129d0 73 77 69 74 63 68 65 73 20 22 22 0a 20 20 20 20 switches "".
129e0 66 6f 72 65 61 63 68 20 69 20 5b 6c 72 61 6e 67 foreach i [lrang
129f0 65 20 5b 73 70 6c 69 74 20 24 75 73 61 67 65 73 e [split $usages
12a00 74 72 69 6e 67 20 5c 6e 5d 20 31 20 65 6e 64 5d tring \n] 1 end]
12a10 20 7b 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 {..if { [string
12a20 20 74 72 69 6d 20 24 69 5d 20 3d 3d 20 22 22 20 trim $i] == ""
12a30 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 72 65 67 } { break }..reg
12a40 65 78 70 20 7b 28 2e 2a 29 3a 7d 20 24 69 20 7b exp {(.*):} $i {
12a50 7d 20 73 77 0a 09 69 66 20 7b 20 5b 72 65 67 65 } sw..if { [rege
12a60 78 70 20 7b 28 2d 5c 53 2b 29 5c 73 2b 28 5c 53 xp {(-\S+)\s+(\S
12a70 2b 29 7d 20 24 73 77 20 7b 7d 20 73 77 20 61 72 +)} $sw {} sw ar
12a80 67 73 77 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 61 gsw] } {.. la
12a90 70 70 65 6e 64 20 73 77 69 74 63 68 65 73 20 24 ppend switches $
12aa0 73 77 0a 09 20 20 20 20 73 65 74 20 73 77 69 74 sw.. set swit
12ab0 63 68 65 73 61 72 67 28 24 73 77 29 20 31 0a 09 chesarg($sw) 1..
12ac0 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 6c 61 } else {.. la
12ad0 70 70 65 6e 64 20 73 77 69 74 63 68 65 73 20 5b ppend switches [
12ae0 73 74 72 69 6e 67 20 74 72 69 6d 20 24 73 77 5d string trim $sw]
12af0 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 ..}. }. se
12b00 74 20 6e 6f 72 6d 61 6c 61 72 67 73 20 5b 6c 72 t normalargs [lr
12b10 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 5b 73 70 ange [lindex [sp
12b20 6c 69 74 20 24 75 73 61 67 65 73 74 72 69 6e 67 lit $usagestring
12b30 20 5c 6e 5d 20 30 5d 20 33 20 65 6e 64 5d 0a 0a \n] 0] 3 end]..
12b40 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 73 foreach i $s
12b50 77 69 74 63 68 65 73 20 7b 20 73 65 74 20 6f 70 witches { set op
12b60 74 73 28 24 69 29 20 30 20 7d 0a 20 20 20 20 66 ts($i) 0 }. f
12b70 6f 72 65 61 63 68 20 69 20 24 6e 6f 72 6d 61 6c oreach i $normal
12b80 61 72 67 73 20 7b 20 73 65 74 20 6f 70 74 73 28 args { set opts(
12b90 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 69 20 [string trim $i
12ba0 3f 5d 29 20 22 22 20 7d 0a 0a 20 20 20 20 73 65 ?]) "" }.. se
12bb0 74 20 63 61 6e 68 61 76 65 66 6c 61 67 73 20 31 t canhaveflags 1
12bc0 0a 20 20 20 20 73 65 74 20 69 61 72 67 73 20 30 . set iargs 0
12bd0 0a 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 .. for { set
12be0 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c i 0 } { $i < [ll
12bf0 65 6e 67 74 68 20 24 61 72 67 73 5d 20 7d 20 7b ength $args] } {
12c00 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 73 65 74 incr i } {..set
12c10 20 61 72 67 20 5b 6c 69 6e 64 65 78 20 24 61 72 arg [lindex $ar
12c20 67 73 20 24 69 5d 0a 0a 09 69 66 20 7b 20 24 63 gs $i]...if { $c
12c30 61 6e 68 61 76 65 66 6c 61 67 73 20 26 26 20 24 anhaveflags && $
12c40 61 72 67 20 3d 3d 20 22 2d 2d 22 20 7d 20 7b 0a arg == "--" } {.
12c50 09 20 20 20 20 73 65 74 20 63 61 6e 68 61 76 65 . set canhave
12c60 66 6c 61 67 73 20 30 0a 09 7d 20 65 6c 73 65 69 flags 0..} elsei
12c70 66 20 7b 20 24 63 61 6e 68 61 76 65 66 6c 61 67 f { $canhaveflag
12c80 73 20 26 26 20 24 61 72 67 20 3d 3d 20 22 2d 68 s && $arg == "-h
12c90 22 20 7d 20 7b 0a 09 20 20 20 20 72 65 74 75 72 " } {.. retur
12ca0 6e 20 2d 63 6f 64 65 20 72 65 74 75 72 6e 20 5b n -code return [
12cb0 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 string map [list
12cc0 20 5c 74 20 5b 73 74 72 69 6e 67 20 72 65 70 65 \t [string repe
12cd0 61 74 20 22 20 22 20 38 5d 5d 20 24 75 73 61 67 at " " 8]] $usag
12ce0 65 73 74 72 69 6e 67 5d 0a 09 7d 20 65 6c 73 65 estring]..} else
12cf0 69 66 20 7b 20 24 63 61 6e 68 61 76 65 66 6c 61 if { $canhavefla
12d00 67 73 20 26 26 20 5b 6c 73 65 61 72 63 68 20 24 gs && [lsearch $
12d10 73 77 69 74 63 68 65 73 20 24 61 72 67 5d 20 21 switches $arg] !
12d20 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 = -1 } {.. if
12d30 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
12d40 73 77 69 74 63 68 65 73 61 72 67 28 24 61 72 67 switchesarg($arg
12d50 29 5d 20 7d 20 7b 0a 09 09 69 6e 63 72 20 69 0a )] } {...incr i.
12d60 09 09 73 65 74 20 6f 70 74 73 28 24 61 72 67 29 ..set opts($arg)
12d70 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 24 [lindex $args $
12d80 69 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b i].. } else {
12d90 0a 09 09 73 65 74 20 6f 70 74 73 28 24 61 72 67 ...set opts($arg
12da0 29 20 31 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c ) 1.. }..} el
12db0 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b seif { [regexp {
12dc0 5e 5b 3f 5d 2e 2a 5b 2e 5d 7b 33 7d 5b 3f 5d 24 ^[?].*[.]{3}[?]$
12dd0 7d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61 } [lindex $norma
12de0 6c 61 72 67 73 20 24 69 61 72 67 73 5d 5d 20 7d largs $iargs]] }
12df0 20 7b 0a 09 20 20 20 20 73 65 74 20 61 72 67 6e {.. set argn
12e00 61 6d 65 20 5b 73 74 72 69 6e 67 20 74 72 69 6d ame [string trim
12e10 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61 6c [lindex $normal
12e20 61 72 67 73 20 5b 65 78 70 72 20 24 69 61 72 67 args [expr $iarg
12e30 73 2d 31 5d 5d 20 22 3f 2e 22 5d 0a 09 20 20 20 s-1]] "?."]..
12e40 20 73 65 74 20 6f 70 74 73 28 24 61 72 67 6e 61 set opts($argna
12e50 6d 65 29 20 5b 63 6f 6e 63 61 74 20 24 6f 70 74 me) [concat $opt
12e60 73 28 24 61 72 67 6e 61 6d 65 29 20 24 61 72 67 s($argname) $arg
12e70 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 ]..} else {..
12e80 20 73 65 74 20 63 61 6e 68 61 76 65 66 6c 61 67 set canhaveflag
12e90 73 20 30 0a 09 20 20 20 20 77 68 69 6c 65 20 7b s 0.. while {
12ea0 20 5b 72 65 67 65 78 70 20 7b 5e 5b 3f 5d 2e 2a [regexp {^[?].*
12eb0 5b 3f 5d 24 7d 20 5b 6c 69 6e 64 65 78 20 24 6e [?]$} [lindex $n
12ec0 6f 72 6d 61 6c 61 72 67 73 20 24 69 5d 5d 20 26 ormalargs $i]] &
12ed0 26 20 5c 0a 09 09 20 20 20 20 20 20 20 20 5b 6c & \... [l
12ee0 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 2d 24 69 length $args]-$i
12ef0 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 6e 6f 72 < [llength $nor
12f00 6d 61 6c 61 72 67 73 5d 2d 24 69 61 72 67 73 20 malargs]-$iargs
12f10 26 26 20 5c 0a 09 09 20 20 20 20 20 20 20 20 21 && \... !
12f20 5b 72 65 67 65 78 70 20 7b 5e 5b 3f 5d 2e 2a 5b [regexp {^[?].*[
12f30 3f 5d 24 7d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f ?]$} [lindex $no
12f40 72 6d 61 6c 61 72 67 73 20 65 6e 64 5d 5d 20 7d rmalargs end]] }
12f50 20 7b 0a 09 09 69 66 20 7b 20 24 69 61 72 67 73 {...if { $iargs
12f60 20 3e 3d 20 5b 6c 6c 65 6e 67 74 68 20 24 6e 6f >= [llength $no
12f70 72 6d 61 6c 61 72 67 73 5d 20 7d 20 7b 20 65 72 rmalargs] } { er
12f80 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e 20 25 ror [_ "Error. %
12f90 73 22 20 24 75 73 61 67 65 73 74 72 69 6e 67 5d s" $usagestring]
12fa0 20 7d 0a 09 09 73 65 74 20 6f 70 74 73 28 5b 73 }...set opts([s
12fb0 74 72 69 6e 67 20 74 72 69 6d 20 5b 6c 69 6e 64 tring trim [lind
12fc0 65 78 20 24 6e 6f 72 6d 61 6c 61 72 67 73 20 24 ex $normalargs $
12fd0 69 61 72 67 73 5d 20 3f 5d 29 20 22 22 0a 09 09 iargs] ?]) ""...
12fe0 69 6e 63 72 20 69 61 72 67 73 0a 09 20 20 20 20 incr iargs..
12ff0 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 69 61 72 }.. if { $iar
13000 67 73 20 3e 3d 20 5b 6c 6c 65 6e 67 74 68 20 24 gs >= [llength $
13010 6e 6f 72 6d 61 6c 61 72 67 73 5d 20 7d 20 7b 20 normalargs] } {
13020 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 2e error [_ "Error.
13030 20 25 73 22 20 24 75 73 61 67 65 73 74 72 69 6e %s" $usagestrin
13040 67 5d 20 7d 0a 09 20 20 20 20 73 65 74 20 6f 70 g] }.. set op
13050 74 73 28 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 ts([string trim
13060 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61 6c 61 [lindex $normala
13070 72 67 73 20 24 69 61 72 67 73 5d 20 3f 5d 29 20 rgs $iargs] ?])
13080 24 61 72 67 0a 09 20 20 20 20 69 6e 63 72 20 69 $arg.. incr i
13090 61 72 67 73 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 args..}. }.
130a0 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24 69 for { set i $i
130b0 61 72 67 73 20 7d 20 7b 20 24 69 20 3c 20 5b 6c args } { $i < [l
130c0 6c 65 6e 67 74 68 20 24 6e 6f 72 6d 61 6c 61 72 length $normalar
130d0 67 73 5d 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d gs] } { incr i }
130e0 20 7b 0a 09 69 66 20 7b 20 21 5b 72 65 67 65 78 {..if { ![regex
130f0 70 20 7b 5e 5b 3f 5d 2e 2a 5b 3f 5d 24 7d 20 5b p {^[?].*[?]$} [
13100 6c 69 6e 64 65 78 20 24 6e 6f 72 6d 61 6c 61 72 lindex $normalar
13110 67 73 20 24 69 5d 5d 20 7d 20 7b 0a 09 20 20 20 gs $i]] } {..
13120 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 72 6f 72 error [_ "Error
13130 2e 20 25 73 22 20 24 75 73 61 67 65 73 74 72 69 . %s" $usagestri
13140 6e 67 5d 0a 09 7d 20 65 6c 73 65 20 7b 20 73 65 ng]..} else { se
13150 74 20 6f 70 74 73 28 5b 73 74 72 69 6e 67 20 74 t opts([string t
13160 72 69 6d 20 5b 6c 69 6e 64 65 78 20 24 6e 6f 72 rim [lindex $nor
13170 6d 61 6c 61 72 67 73 20 24 69 5d 20 3f 5d 29 20 malargs $i] ?])
13180 22 22 20 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 "" }. }.}..pr
13190 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
131a0 4d 79 4e 61 6d 65 49 73 20 7b 20 6e 61 6d 65 20 MyNameIs { name
131b0 69 64 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 id } {. varia
131c0 62 6c 65 20 73 65 72 76 69 63 65 73 0a 20 20 20 ble services.
131d0 20 53 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 SetMessage [_ "
131e0 52 65 6d 6f 74 65 20 70 72 6f 67 72 61 6d 3a 20 Remote program:
131f0 25 73 22 20 24 6e 61 6d 65 5d 0a 20 20 20 20 73 %s" $name]. s
13200 65 74 20 73 65 72 76 69 63 65 73 28 24 6e 61 6d et services($nam
13210 65 29 20 24 69 64 0a 7d 0a 0a 70 72 6f 63 20 52 e) $id.}..proc R
13220 61 6d 44 65 62 75 67 67 65 72 3a 3a 46 69 6e 64 amDebugger::Find
13230 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 20 7b ActivePrograms {
13240 20 66 6f 72 63 65 20 7d 20 7b 0a 20 20 20 20 76 force } {. v
13250 61 72 69 61 62 6c 65 20 73 65 72 76 69 63 65 73 ariable services
13260 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 . variable de
13270 62 75 67 67 65 72 73 65 72 76 65 72 0a 20 20 20 buggerserver.
13280 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 variable debugg
13290 65 72 73 65 72 76 65 72 4e 75 6d 0a 20 20 20 20 erserverNum.
132a0 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
132b0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 . variable is
132c0 77 69 6e 63 65 0a 20 20 20 20 76 61 72 69 61 62 wince. variab
132d0 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 0a 20 20 20 le usecommR..
132e0 20 69 66 20 7b 20 24 75 73 65 63 6f 6d 6d 52 20 if { $usecommR
132f0 7d 20 7b 0a 09 69 66 20 7b 20 21 24 6f 70 74 69 } {..if { !$opti
13300 6f 6e 73 28 43 68 65 63 6b 52 65 6d 6f 74 65 73 ons(CheckRemotes
13310 29 20 26 26 20 21 24 66 6f 72 63 65 20 7d 20 7b ) && !$force } {
13320 0a 09 20 20 20 20 23 20 64 69 72 74 79 20 74 72 .. # dirty tr
13330 69 63 6b 20 74 6f 20 6d 61 6b 65 20 61 72 72 61 ick to make arra
13340 79 20 65 78 69 73 74 0a 09 20 20 20 20 73 65 74 y exist.. set
13350 20 73 65 72 76 69 63 65 73 28 31 31 29 20 22 22 services(11) ""
13360 0a 09 20 20 20 20 75 6e 73 65 74 20 73 65 72 76 .. unset serv
13370 69 63 65 73 28 31 31 29 0a 09 20 20 20 20 72 65 ices(11).. re
13380 74 75 72 6e 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 turn..}..if { [i
13390 6e 66 6f 20 65 78 69 73 74 73 20 73 65 72 76 69 nfo exists servi
133a0 63 65 73 5d 20 26 26 20 21 24 66 6f 72 63 65 20 ces] && !$force
133b0 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 63 61 } { return }..ca
133c0 74 63 68 20 7b 20 75 6e 73 65 74 20 73 65 72 76 tch { unset serv
133d0 69 63 65 73 20 7d 0a 0a 09 53 65 74 4d 65 73 73 ices }...SetMess
133e0 61 67 65 20 5b 5f 20 22 53 65 61 72 63 68 69 6e age [_ "Searchin
133f0 67 20 65 78 74 65 72 6e 61 6c 20 70 72 6f 67 72 g external progr
13400 61 6d 73 22 5d 2e 2e 2e 0a 09 50 72 6f 67 72 65 ams"].....Progre
13410 73 73 56 61 72 20 30 0a 09 57 61 69 74 53 74 61 ssVar 0..WaitSta
13420 74 65 20 31 0a 0a 09 69 66 20 7b 20 24 64 65 62 te 1...if { $deb
13430 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d 20 3d uggerserverNum =
13440 3d 20 22 22 20 26 26 20 21 24 69 73 77 69 6e 63 = "" && !$iswinc
13450 65 20 7d 20 7b 0a 09 20 20 20 20 75 70 6c 65 76 e } {.. uplev
13460 65 6c 20 5c 23 30 20 70 61 63 6b 61 67 65 20 72 el \#0 package r
13470 65 71 75 69 72 65 20 63 6f 6d 6d 52 20 3b 23 6d equire commR ;#m
13480 6f 64 69 66 69 63 61 74 69 6f 6e 20 28 63 6f 6d odification (com
13490 6d 52 29 20 6f 66 20 74 63 6c 6c 69 62 20 63 6f mR) of tcllib co
134a0 6d 6d 20 70 61 63 6b 61 67 65 0a 09 20 20 20 20 mm package..
134b0 73 65 74 20 64 65 62 75 67 67 65 72 73 65 72 76 set debuggerserv
134c0 65 72 4e 75 6d 20 5b 63 6f 6d 6d 52 3a 3a 72 65 erNum [commR::re
134d0 67 69 73 74 65 72 20 52 61 6d 44 65 62 75 67 67 gister RamDebugg
134e0 65 72 20 31 5d 0a 09 7d 0a 09 52 61 6d 44 65 62 er 1]..}..RamDeb
134f0 75 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 ugger::ProgressV
13500 61 72 20 32 30 0a 09 73 65 74 20 69 70 72 6f 67 ar 20..set iprog
13510 72 65 73 73 20 32 30 0a 0a 09 66 6f 72 20 7b 20 ress 20...for {
13520 73 65 74 20 69 20 31 32 33 35 30 20 7d 20 7b 20 set i 12350 } {
13530 24 69 20 3c 20 31 32 33 36 30 20 7d 20 7b 20 69 $i < 12360 } { i
13540 6e 63 72 20 69 20 7d 20 7b 0a 09 20 20 20 20 69 ncr i } {.. i
13550 66 20 7b 20 24 69 20 3d 3d 20 24 64 65 62 75 67 f { $i == $debug
13560 67 65 72 73 65 72 76 65 72 4e 75 6d 20 7d 20 7b gerserverNum } {
13570 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20 20 20 continue }..
13580 20 69 6e 63 72 20 69 70 72 6f 67 72 65 73 73 20 incr iprogress
13590 34 30 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 40.. if { $ip
135a0 72 6f 67 72 65 73 73 20 3e 20 39 30 20 7d 20 7b rogress > 90 } {
135b0 20 73 65 74 20 69 70 72 6f 67 72 65 73 73 20 39 set iprogress 9
135c0 30 20 7d 0a 09 20 20 20 20 52 61 6d 44 65 62 75 0 }.. RamDebu
135d0 67 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 gger::ProgressVa
135e0 72 20 24 69 70 72 6f 67 72 65 73 73 0a 09 20 20 r $iprogress..
135f0 20 20 73 65 74 20 63 6f 6d 6d 20 5b 6c 69 73 74 set comm [list
13600 20 63 6f 6d 6d 52 3a 3a 63 6f 6d 6d 20 73 65 6e commR::comm sen
13610 64 20 2d 61 73 79 6e 63 20 24 69 20 5c 0a 09 09 d -async $i \...
13620 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 [list
13630 63 61 74 63 68 20 5b 6c 69 73 74 20 63 6f 6d 6d catch [list comm
13640 52 3a 3a 67 69 76 65 6e 61 6d 65 20 24 64 65 62 R::givename $deb
13650 75 67 67 65 72 73 65 72 76 65 72 4e 75 6d 5d 5d uggerserverNum]]
13660 5d 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b ].. set err [
13670 63 61 74 63 68 20 24 63 6f 6d 6d 20 65 72 72 73 catch $comm errs
13680 74 72 69 6e 67 5d 0a 09 7d 0a 09 23 20 64 69 72 tring]..}..# dir
13690 74 79 20 74 72 69 63 6b 20 74 6f 20 6d 61 6b 65 ty trick to make
136a0 20 61 72 72 61 79 20 65 78 69 73 74 0a 09 73 65 array exist..se
136b0 74 20 73 65 72 76 69 63 65 73 28 31 31 29 20 22 t services(11) "
136c0 22 0a 09 75 6e 73 65 74 20 73 65 72 76 69 63 65 "..unset service
136d0 73 28 31 31 29 0a 09 57 61 69 74 53 74 61 74 65 s(11)..WaitState
136e0 20 30 0a 09 52 61 6d 44 65 62 75 67 67 65 72 3a 0..RamDebugger:
136f0 3a 50 72 6f 67 72 65 73 73 56 61 72 20 31 30 30 :ProgressVar 100
13700 0a 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 ..RamDebugger::S
13710 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 53 65 etMessage [_ "Se
13720 61 72 63 68 69 6e 67 20 65 78 74 65 72 6e 61 6c arching external
13730 20 70 72 6f 67 72 61 6d 73 2e 2e 2e 64 6f 6e 65 programs...done
13740 22 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a "]. } else {.
13750 09 63 61 74 63 68 20 7b 20 75 6e 73 65 74 20 73 .catch { unset s
13760 65 72 76 69 63 65 73 20 7d 0a 09 66 6f 72 65 61 ervices }..forea
13770 63 68 20 69 20 5b 77 69 6e 66 6f 20 69 6e 74 65 ch i [winfo inte
13780 72 70 73 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b rps] {.. if {
13790 20 24 69 20 3d 3d 20 24 64 65 62 75 67 67 65 72 $i == $debugger
137a0 73 65 72 76 65 72 20 7d 20 7b 20 63 6f 6e 74 69 server } { conti
137b0 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74 20 73 nue }.. set s
137c0 65 72 76 69 63 65 73 28 24 69 29 20 24 69 0a 09 ervices($i) $i..
137d0 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 }. }.}..proc
137e0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 63 RamDebugger::Rec
137f0 65 69 76 65 54 69 6d 65 46 72 6f 6d 50 72 6f 67 eiveTimeFromProg
13800 72 61 6d 20 7b 20 6e 61 6d 65 20 6c 65 76 65 6c ram { name level
13810 20 74 69 6d 65 20 7d 20 7b 0a 20 20 20 20 76 61 time } {. va
13820 72 69 61 62 6c 65 20 54 69 6d 65 4d 65 61 73 75 riable TimeMeasu
13830 72 65 44 61 74 61 0a 0a 20 20 20 20 73 65 74 20 reData.. set
13840 69 70 6f 73 20 30 0a 20 20 20 20 66 6f 72 65 61 ipos 0. forea
13850 63 68 20 69 20 24 54 69 6d 65 4d 65 61 73 75 72 ch i $TimeMeasur
13860 65 44 61 74 61 20 7b 0a 09 66 6f 72 65 61 63 68 eData {..foreach
13870 20 22 6e 61 6d 65 5f 69 6e 20 66 69 6c 65 20 6c "name_in file l
13880 69 6e 65 69 6e 69 20 6c 69 6e 65 65 6e 64 20 6c ineini lineend l
13890 61 73 74 74 69 6d 65 22 20 24 69 20 7b 0a 09 20 asttime" $i {..
138a0 20 20 20 69 66 20 7b 20 24 6e 61 6d 65 20 3d 3d if { $name ==
138b0 20 24 6e 61 6d 65 5f 69 6e 20 7d 20 7b 0a 09 09 $name_in } {...
138c0 73 65 74 20 66 6f 75 6e 64 20 30 0a 09 09 73 65 set found 0...se
138d0 74 20 69 63 20 30 0a 09 09 66 6f 72 65 61 63 68 t ic 0...foreach
138e0 20 6a 20 24 6c 61 73 74 74 69 6d 65 20 7b 0a 09 j $lasttime {..
138f0 09 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 . if { [linde
13900 78 20 24 6a 20 30 5d 20 3d 3d 20 24 6c 65 76 65 x $j 0] == $leve
13910 6c 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 l } {...
13920 6c 73 65 74 20 6c 61 73 74 74 69 6d 65 20 24 69 lset lasttime $i
13930 63 20 5b 6c 69 73 74 20 24 6c 65 76 65 6c 20 5b c [list $level [
13940 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 6a expr {[lindex $j
13950 20 31 5d 2b 24 74 69 6d 65 7d 5d 5d 0a 09 09 20 1]+$time}]]...
13960 20 20 20 20 20 20 20 73 65 74 20 66 6f 75 6e 64 set found
13970 20 31 0a 09 09 20 20 20 20 20 20 20 20 62 72 65 1... bre
13980 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 20 20 20 ak... }...
13990 20 69 6e 63 72 20 69 63 0a 09 09 7d 0a 09 09 69 incr ic...}...i
139a0 66 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20 7b 20 f { !$found } {
139b0 6c 61 70 70 65 6e 64 20 6c 61 73 74 74 69 6d 65 lappend lasttime
139c0 20 5b 6c 69 73 74 20 24 6c 65 76 65 6c 20 24 74 [list $level $t
139d0 69 6d 65 5d 20 7d 0a 09 09 73 65 74 20 69 20 5b ime] }...set i [
139e0 6c 72 65 70 6c 61 63 65 20 24 69 20 34 20 34 20 lreplace $i 4 4
139f0 24 6c 61 73 74 74 69 6d 65 5d 0a 09 09 73 65 74 $lasttime]...set
13a00 20 54 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 TimeMeasureData
13a10 20 5b 6c 72 65 70 6c 61 63 65 20 24 54 69 6d 65 [lreplace $Time
13a20 4d 65 61 73 75 72 65 44 61 74 61 20 24 69 70 6f MeasureData $ipo
13a30 73 20 24 69 70 6f 73 20 24 69 5d 0a 09 09 72 65 s $ipos $i]...re
13a40 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 turn.. }..}..
13a50 69 6e 63 72 20 69 70 6f 73 0a 20 20 20 20 7d 0a incr ipos. }.
13a60 20 20 20 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 error [_ "Er
13a70 72 6f 72 20 72 65 63 65 69 76 69 6e 67 20 66 72 ror receiving fr
13a80 6f 6d 20 70 72 6f 67 72 61 6d 2e 20 54 69 6d 65 om program. Time
13a90 20 6d 65 61 73 75 72 65 20 62 6c 6f 63 6b 20 27 measure block '
13aa0 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 %s' does not exi
13ab0 73 74 73 22 20 24 6e 61 6d 65 5d 20 0a 7d 0a 0a sts" $name] .}..
13ac0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
13ad0 3a 3a 52 65 63 65 69 76 65 46 72 6f 6d 50 72 6f ::ReceiveFromPro
13ae0 67 72 61 6d 45 78 70 72 20 7b 20 65 72 72 20 76 gramExpr { err v
13af0 61 6c 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 al } {. varia
13b00 62 6c 65 20 45 78 70 72 65 73 73 69 6f 6e 52 65 ble ExpressionRe
13b10 73 75 6c 74 0a 0a 20 20 20 20 61 66 74 65 72 20 sult.. after
13b20 30 20 5b 6c 69 73 74 20 73 65 74 20 52 61 6d 44 0 [list set RamD
13b30 65 62 75 67 67 65 72 3a 3a 45 78 70 72 65 73 73 ebugger::Express
13b40 69 6f 6e 52 65 73 75 6c 74 20 5b 6c 69 73 74 20 ionResult [list
13b50 24 65 72 72 20 24 76 61 6c 5d 5d 0a 20 20 20 20 $err $val]].
13b60 72 65 74 75 72 6e 20 22 22 0a 7d 0a 0a 70 72 6f return "".}..pro
13b70 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 41 c RamDebugger::A
13b80 72 65 46 69 6c 65 73 45 71 75 61 6c 20 7b 20 66 reFilesEqual { f
13b90 69 6c 65 31 20 66 69 6c 65 32 20 7d 20 7b 0a 0a ile1 file2 } {..
13ba0 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f if { $::tcl_
13bb0 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 platform(platfor
13bc0 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22 20 m) == "windows"
13bd0 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 73 74 72 } {..return [str
13be0 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63 61 73 ing equal -nocas
13bf0 65 20 24 66 69 6c 65 31 20 24 66 69 6c 65 32 5d e $file1 $file2]
13c00 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72 . } else {..r
13c10 65 74 75 72 6e 20 5b 73 74 72 69 6e 67 20 65 71 eturn [string eq
13c20 75 61 6c 20 24 66 69 6c 65 31 20 24 66 69 6c 65 ual $file1 $file
13c30 32 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 2]. }.}..proc
13c40 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6c 73 RamDebugger::ls
13c50 65 61 72 63 68 66 69 6c 65 20 7b 20 6c 69 73 74 earchfile { list
13c60 20 66 69 6c 65 20 7d 20 7b 0a 20 20 20 20 69 66 file } {. if
13c70 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f { $::tcl_platfo
13c80 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d 20 rm(platform) ==
13c90 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 72 "windows" } {..r
13ca0 65 74 75 72 6e 20 5b 6c 73 65 61 72 63 68 20 2d eturn [lsearch -
13cb0 65 78 61 63 74 20 5b 73 74 72 69 6e 67 20 74 6f exact [string to
13cc0 6c 6f 77 65 72 20 24 6c 69 73 74 5d 20 5b 73 74 lower $list] [st
13cd0 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 66 69 ring tolower $fi
13ce0 6c 65 5d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 le]]. } else
13cf0 7b 0a 09 72 65 74 75 72 6e 20 5b 6c 73 65 61 72 {..return [lsear
13d00 63 68 20 2d 65 78 61 63 74 20 24 6c 69 73 74 20 ch -exact $list
13d10 24 66 69 6c 65 5d 0a 20 20 20 20 7d 0a 7d 0a 0a $file]. }.}..
13d20 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
13d30 3a 3a 6c 73 65 61 72 63 68 66 69 6c 65 49 20 7b ::lsearchfileI {
13d40 20 6c 69 73 74 20 69 6e 64 65 78 20 66 69 6c 65 list index file
13d50 20 7d 20 7b 0a 20 20 20 20 69 66 20 7b 20 24 3a } {. if { $:
13d60 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c :tcl_platform(pl
13d70 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 atform) == "wind
13d80 6f 77 73 22 20 7d 20 7b 0a 09 72 65 74 75 72 6e ows" } {..return
13d90 20 5b 6c 73 65 61 72 63 68 20 2d 69 6e 64 65 78 [lsearch -index
13da0 20 24 69 6e 64 65 78 20 2d 65 78 61 63 74 20 5b $index -exact [
13db0 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 string tolower $
13dc0 6c 69 73 74 5d 20 5b 73 74 72 69 6e 67 20 74 6f list] [string to
13dd0 6c 6f 77 65 72 20 24 66 69 6c 65 5d 5d 0a 20 20 lower $file]].
13de0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72 65 74 75 } else {..retu
13df0 72 6e 20 5b 6c 73 65 61 72 63 68 20 2d 69 6e 64 rn [lsearch -ind
13e00 65 78 20 24 69 6e 64 65 78 20 2d 65 78 61 63 74 ex $index -exact
13e10 20 24 6c 69 73 74 20 24 66 69 6c 65 5d 0a 20 20 $list $file].
13e20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
13e30 65 62 75 67 67 65 72 3a 3a 52 65 63 65 69 76 65 ebugger::Receive
13e40 46 72 6f 6d 50 72 6f 67 72 61 6d 20 7b 20 62 72 FromProgram { br
13e50 65 61 6b 6e 75 6d 20 66 69 6c 65 6e 75 6d 20 6c eaknum filenum l
13e60 69 6e 65 20 70 72 6f 63 6e 61 6d 65 20 74 65 78 ine procname tex
13e70 74 6c 69 6e 65 20 63 6f 6e 64 69 6e 66 6f 20 7d tline condinfo }
13e80 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
13e90 66 69 6c 65 73 6c 69 73 74 0a 20 20 20 20 76 61 fileslist. va
13ea0 72 69 61 62 6c 65 20 74 65 78 74 0a 0a 20 20 20 riable text..
13eb0 20 73 65 74 20 66 69 6c 65 20 5b 6c 69 6e 64 65 set file [linde
13ec0 78 20 24 66 69 6c 65 73 6c 69 73 74 20 24 66 69 x $fileslist $fi
13ed0 6c 65 6e 75 6d 5d 0a 20 20 20 20 0a 20 20 20 20 lenum]. .
13ee0 69 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 78 69 if { ![winfo exi
13ef0 73 74 73 20 24 74 65 78 74 5d 20 7d 20 7b 0a 09 sts $text] } {..
13f00 23 20 6e 6f 6e 20 47 55 49 20 6d 6f 64 65 0a 09 # non GUI mode..
13f10 69 66 20 7b 20 24 62 72 65 61 6b 6e 75 6d 20 3d if { $breaknum =
13f20 3d 20 22 6f 75 74 70 75 74 22 20 7d 20 7b 0a 09 = "output" } {..
13f30 20 20 20 20 70 75 74 73 20 5b 5f 20 22 6f 75 74 puts [_ "out
13f40 70 75 74 20 6c 69 6e 65 20 25 73 20 25 73 20 25 put line %s %s %
13f50 73 22 20 24 62 72 65 61 6b 6e 75 6d 20 24 66 69 s" $breaknum $fi
13f60 6c 65 20 24 6c 69 6e 65 5d 0a 09 7d 20 65 6c 73 le $line]..} els
13f70 65 69 66 20 7b 20 24 62 72 65 61 6b 6e 75 6d 20 eif { $breaknum
13f80 7d 20 7b 0a 09 20 20 20 20 70 75 74 73 20 5b 5f } {.. puts [_
13f90 20 22 62 72 65 61 6b 20 25 73 20 61 74 20 25 73 "break %s at %s
13fa0 20 25 73 20 25 73 22 20 24 62 72 65 61 6b 6e 75 %s %s" $breaknu
13fb0 6d 20 24 70 72 6f 63 6e 61 6d 65 20 24 66 69 6c m $procname $fil
13fc0 65 20 24 6c 69 6e 65 5d 20 0a 09 20 20 20 20 69 e $line] .. i
13fd0 66 20 7b 20 24 74 65 78 74 6c 69 6e 65 20 21 3d f { $textline !=
13fe0 20 22 22 20 7d 20 7b 20 70 75 74 73 20 22 2d 2d "" } { puts "--
13ff0 2d 3e 20 24 74 65 78 74 6c 69 6e 65 22 20 7d 0a -> $textline" }.
14000 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 66 69 6c .} elseif { $fil
14010 65 6e 75 6d 20 3e 3d 20 30 20 7d 20 7b 0a 09 20 enum >= 0 } {..
14020 20 20 20 70 75 74 73 20 5b 5f 20 22 62 72 65 61 puts [_ "brea
14030 6b 20 61 74 20 25 73 20 25 73 20 25 73 20 22 20 k at %s %s %s "
14040 24 70 72 6f 63 6e 61 6d 65 20 24 66 69 6c 65 20 $procname $file
14050 24 6c 69 6e 65 5d 0a 09 20 20 20 20 69 66 20 7b $line].. if {
14060 20 24 74 65 78 74 6c 69 6e 65 20 21 3d 20 22 22 $textline != ""
14070 20 7d 20 7b 20 70 75 74 73 20 22 2d 2d 2d 3e 20 } { puts "--->
14080 24 74 65 78 74 6c 69 6e 65 22 20 7d 0a 09 7d 20 $textline" }..}
14090 65 6c 73 65 20 7b 0a 09 20 20 20 20 70 75 74 73 else {.. puts
140a0 20 5b 5f 20 22 62 72 65 61 6b 20 61 74 20 25 73 [_ "break at %s
140b0 20 6c 6f 63 61 6c 20 66 75 6e 63 20 6c 69 6e 65 local func line
140c0 3a 20 25 73 22 20 24 70 72 6f 63 6e 61 6d 65 20 : %s" $procname
140d0 24 6c 69 6e 65 5d 0a 09 20 20 20 20 69 66 20 7b $line].. if {
140e0 20 24 74 65 78 74 6c 69 6e 65 20 21 3d 20 22 22 $textline != ""
140f0 20 7d 20 7b 20 70 75 74 73 20 22 2d 2d 2d 3e 20 } { puts "--->
14100 24 74 65 78 74 6c 69 6e 65 22 20 7d 0a 09 7d 0a $textline" }..}.
14110 09 69 66 20 7b 20 24 63 6f 6e 64 69 6e 66 6f 20 .if { $condinfo
14120 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 70 != "" } {.. p
14130 75 74 73 20 5b 5f 20 22 43 6f 6e 64 69 74 69 6f uts [_ "Conditio
14140 6e 20 72 65 73 75 6c 74 73 3a 20 25 73 22 20 24 n results: %s" $
14150 63 6f 6e 64 69 6e 66 6f 5d 0a 09 7d 0a 20 20 20 condinfo]..}.
14160 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 66 69 6c } elseif { $fil
14170 65 20 21 3d 20 22 22 20 26 26 20 24 6c 69 6e 65 e != "" && $line
14180 20 21 3d 20 22 22 20 20 7d 20 7b 0a 09 23 20 47 != "" } {..# G
14190 55 49 20 6d 6f 64 65 0a 09 61 66 74 65 72 20 30 UI mode..after 0
141a0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
141b0 65 72 3a 3a 53 74 6f 70 41 74 47 55 49 20 24 66 er::StopAtGUI $f
141c0 69 6c 65 20 24 6c 69 6e 65 20 24 63 6f 6e 64 69 ile $line $condi
141d0 6e 66 6f 5d 0a 20 20 20 20 7d 0a 20 20 20 20 72 nfo]. }. r
141e0 65 74 75 72 6e 20 22 22 0a 7d 0a 0a 70 72 6f 63 eturn "".}..proc
141f0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 RamDebugger::Re
14200 63 65 69 76 65 45 72 72 6f 72 46 72 6f 6d 50 72 ceiveErrorFromPr
14210 6f 67 72 61 6d 20 7b 20 65 72 72 20 65 72 72 49 ogram { err errI
14220 6e 66 6f 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 nfo args } {.
14230 20 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 65 TextOutInsertRe
14240 64 20 22 2d 2d 2d 2d 2d 2d 52 45 43 45 49 56 45 d "------RECEIVE
14250 44 20 45 52 52 4f 52 20 46 52 4f 4d 20 44 45 42 D ERROR FROM DEB
14260 55 47 47 45 44 20 50 52 4f 47 52 41 4d 2d 2d 2d UGGED PROGRAM---
14270 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 22 0a 20 20 ----------\n".
14280 20 20 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 TextOutInsertR
14290 65 64 20 24 65 72 72 49 6e 66 6f 5c 6e 0a 20 20 ed $errInfo\n.
142a0 20 20 54 65 78 74 4f 75 74 49 6e 73 65 72 74 52 TextOutInsertR
142b0 65 64 20 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ed "------------
142c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
142d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
142e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 5c 6e 22 0a 20 -----------\n".
142f0 20 20 20 54 65 78 74 4f 75 74 52 61 69 73 65 0a TextOutRaise.
14300 20 20 20 20 61 66 74 65 72 20 69 64 6c 65 20 5b after idle [
14310 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 string map [list
14320 20 25 65 20 5b 6c 69 73 74 20 24 65 72 72 5d 20 %e [list $err]
14330 25 6e 20 5c 6e 5d 20 7b 0a 09 57 61 72 6e 57 69 %n \n] {..WarnWi
14340 6e 20 7b 52 65 63 65 69 76 65 64 20 45 72 72 6f n {Received Erro
14350 72 20 66 72 6f 6d 20 44 65 62 75 67 67 65 64 20 r from Debugged
14360 70 72 6f 67 72 61 6d 3a 25 6e 25 65 25 6e 43 68 program:%n%e%nCh
14370 65 63 6b 20 4f 75 74 70 75 74 20 66 6f 72 20 64 eck Output for d
14380 65 74 61 69 6c 73 7d 0a 09 23 52 61 6d 44 65 62 etails}..#RamDeb
14390 75 67 67 65 72 3a 3a 53 74 6f 70 41 74 47 55 49 ugger::StopAtGUI
143a0 20 22 22 20 2d 31 0a 20 20 20 20 7d 5d 0a 7d 0a "" -1. }].}.
143b0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
143c0 72 3a 3a 52 65 63 65 69 76 65 4f 75 74 70 75 74 r::ReceiveOutput
143d0 46 72 6f 6d 50 72 6f 67 72 61 6d 20 7b 20 63 68 FromProgram { ch
143e0 61 6e 6e 65 6c 49 64 20 73 74 72 69 6e 67 20 68 annelId string h
143f0 61 73 6e 65 77 6c 69 6e 65 20 7d 20 7b 0a 20 20 asnewline } {.
14400 20 20 69 66 20 7b 20 24 68 61 73 6e 65 77 6c 69 if { $hasnewli
14410 6e 65 20 7d 20 7b 20 61 70 70 65 6e 64 20 73 74 ne } { append st
14420 72 69 6e 67 20 5c 6e 20 7d 0a 20 20 20 20 73 77 ring \n }. sw
14430 69 74 63 68 20 24 63 68 61 6e 6e 65 6c 49 64 20 itch $channelId
14440 7b 0a 09 73 74 64 6f 75 74 20 7b 0a 09 20 20 20 {..stdout {..
14450 20 54 65 78 74 4f 75 74 49 6e 73 65 72 74 20 24 TextOutInsert $
14460 73 74 72 69 6e 67 0a 09 20 20 20 20 69 66 20 7b string.. if {
14470 20 21 5b 72 65 67 65 78 70 20 7b 28 3f 69 29 5e ![regexp {(?i)^
14480 63 6f 6e 74 69 6e 75 69 6e 67 5b 2e 5c 73 5d 2a continuing[.\s]*
14490 24 7d 20 24 73 74 72 69 6e 67 5d 20 7d 20 7b 0a $} $string] } {.
144a0 09 09 54 65 78 74 4f 75 74 52 61 69 73 65 20 20 ..TextOutRaise
144b0 20 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 73 74 64 .. }..}..std
144c0 65 72 72 20 7b 0a 09 20 20 20 20 54 65 78 74 4f err {.. TextO
144d0 75 74 49 6e 73 65 72 74 52 65 64 20 24 73 74 72 utInsertRed $str
144e0 69 6e 67 0a 09 20 20 20 20 54 65 78 74 4f 75 74 ing.. TextOut
144f0 52 61 69 73 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 Raise..}. }.
14500 20 20 20 75 70 64 61 74 65 0a 7d 0a 0a 70 72 6f update.}..pro
14510 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 c RamDebugger::R
14520 65 63 65 69 76 65 46 72 6f 6d 50 72 6f 67 72 61 eceiveFromProgra
14530 6d 53 6f 75 72 63 65 20 7b 20 61 72 67 73 20 7d mSource { args }
14540 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
14550 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
14560 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 variable current
14570 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 0a 20 20 file_endline..
14580 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 if { [lindex $
14590 61 72 67 73 20 30 5d 20 65 71 20 22 2d 65 6e 63 args 0] eq "-enc
145a0 6f 64 69 6e 67 22 20 7d 20 7b 0a 09 73 65 74 20 oding" } {..set
145b0 65 6e 63 6f 64 69 6e 67 20 5b 6c 69 6e 64 65 78 encoding [lindex
145c0 20 24 61 72 67 73 20 31 5d 0a 20 20 20 20 7d 20 $args 1]. }
145d0 65 6c 73 65 20 7b 0a 09 73 65 74 20 65 6e 63 6f else {..set enco
145e0 64 69 6e 67 20 22 22 0a 20 20 20 20 7d 0a 20 20 ding "". }.
145f0 20 20 73 65 74 20 66 69 6c 65 20 5b 6c 69 6e 64 set file [lind
14600 65 78 20 24 61 72 67 73 20 65 6e 64 5d 0a 20 20 ex $args end].
14610 20 20 73 65 74 20 72 65 74 76 61 6c 20 5b 44 6f set retval [Do
14620 69 6e 73 74 72 75 6d 65 6e 74 54 68 69 73 66 69 instrumentThisfi
14630 6c 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 69 66 le $file]. if
14640 20 7b 20 24 72 65 74 76 61 6c 20 3d 3d 20 31 20 { $retval == 1
14650 7d 20 7b 0a 09 54 65 78 74 4f 75 74 52 61 69 73 } {..TextOutRais
14660 65 0a 09 54 65 78 74 4f 75 74 49 6e 73 65 72 74 e..TextOutInsert
14670 42 6c 75 65 20 5b 5f 20 22 53 65 6e 64 69 6e 67 Blue [_ "Sending
14680 20 49 6e 73 74 72 75 6d 65 6e 74 65 64 20 66 69 Instrumented fi
14690 6c 65 20 27 25 73 27 22 20 24 66 69 6c 65 5d 5c le '%s'" $file]\
146a0 6e 0a 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 n...set currentf
146b0 69 6c 65 5f 73 61 76 65 20 24 63 75 72 72 65 6e ile_save $curren
146c0 74 66 69 6c 65 0a 09 73 65 74 20 63 75 72 72 65 tfile..set curre
146d0 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 ntfile_endline_s
146e0 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ave $currentfile
146f0 5f 65 6e 64 6c 69 6e 65 0a 09 73 65 74 20 65 72 _endline..set er
14700 72 20 5b 63 61 74 63 68 20 7b 0a 09 20 20 20 20 r [catch {..
14710 73 65 74 20 72 65 74 76 61 6c 20 5b 72 6c 69 73 set retval [rlis
14720 74 20 2d 72 65 74 75 72 6e 64 61 74 61 20 2d 65 t -returndata -e
14730 6e 63 6f 64 69 6e 67 20 24 65 6e 63 6f 64 69 6e ncoding $encodin
14740 67 20 2d 61 73 6d 61 69 6e 66 69 6c 65 20 24 66 g -asmainfile $f
14750 69 6c 65 5d 0a 09 7d 20 65 72 72 73 74 72 69 6e ile]..} errstrin
14760 67 5d 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 g]..set currentf
14770 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ile $currentfile
14780 5f 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65 _save..set curre
14790 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 ntfile_endline $
147a0 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c currentfile_endl
147b0 69 6e 65 5f 73 61 76 65 0a 09 69 66 20 7b 20 24 ine_save..if { $
147c0 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 err } {.. err
147d0 6f 72 20 24 65 72 72 73 74 72 69 6e 67 0a 09 7d or $errstring..}
147e0 0a 09 72 65 74 75 72 6e 20 24 72 65 74 76 61 6c ..return $retval
147f0 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 . } elseif {
14800 24 72 65 74 76 61 6c 20 3d 3d 20 32 20 7d 20 7b $retval == 2 } {
14810 0a 09 54 65 78 74 4f 75 74 52 61 69 73 65 0a 09 ..TextOutRaise..
14820 54 65 78 74 4f 75 74 49 6e 73 65 72 74 42 6c 75 TextOutInsertBlu
14830 65 20 5b 5f 20 22 53 6f 75 72 63 69 6e 67 20 66 e [_ "Sourcing f
14840 69 6c 65 20 27 25 73 27 22 20 24 66 69 6c 65 5d ile '%s'" $file]
14850 5c 6e 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 \n. }. ret
14860 75 72 6e 20 22 3a 3a 52 44 43 3a 3a 73 6f 75 72 urn "::RDC::sour
14870 63 65 70 72 6f 63 20 24 61 72 67 73 22 0a 7d 0a ceproc $args".}.
14880 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
14890 72 3a 3a 45 76 61 6c 52 65 6d 6f 74 65 20 7b 20 r::EvalRemote {
148a0 63 6f 6d 6d 20 7d 20 7b 0a 20 20 20 20 76 61 72 comm } {. var
148b0 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 iable remoteserv
148c0 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 er. variable
148d0 72 65 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d 0a remoteserverNum.
148e0 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d variable rem
148f0 6f 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 oteserverType.
14900 20 20 76 61 72 69 61 62 6c 65 20 67 64 62 6c 6f variable gdblo
14910 67 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 75 g. variable u
14920 73 65 63 6f 6d 6d 52 0a 0a 20 20 20 20 69 66 20 secommR.. if
14930 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 { $remoteserver
14940 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 72 6f 72 == "" } {..error
14950 20 5b 5f 20 22 45 72 72 6f 72 3a 20 61 20 70 72 [_ "Error: a pr
14960 6f 67 72 61 6d 20 74 6f 20 64 65 62 75 67 20 6d ogram to debug m
14970 75 73 74 20 62 65 20 73 65 6c 65 63 74 65 64 20 ust be selected
14980 75 73 69 6e 67 20 72 64 65 62 75 67 22 5d 0a 20 using rdebug"].
14990 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 65 72 }.. set er
149a0 72 20 30 0a 20 20 20 20 69 66 20 7b 20 24 72 65 r 0. if { $re
149b0 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 3d moteserverType =
149c0 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 7b 0a 09 69 = "local" } {..i
149d0 6e 74 65 72 70 20 65 76 61 6c 20 6c 6f 63 61 6c nterp eval local
149e0 20 61 66 74 65 72 20 69 64 6c 65 20 5b 6c 69 73 after idle [lis
149f0 74 20 24 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 65 t $comm]. } e
14a00 6c 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 lseif { $remotes
14a10 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6d 61 erverType == "ma
14a20 73 74 65 72 22 20 7d 20 7b 0a 09 6d 61 73 74 65 ster" } {..maste
14a30 72 20 61 66 74 65 72 20 69 64 6c 65 20 5b 6c 69 r after idle [li
14a40 73 74 20 24 63 6f 6d 6d 5d 0a 20 20 20 20 7d 20 st $comm]. }
14a50 65 6c 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 65 elseif { $remote
14a60 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 serverType == "g
14a70 64 62 22 20 7d 20 7b 0a 09 6c 61 73 73 69 67 6e db" } {..lassign
14a80 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 66 $remoteserver f
14a90 69 64 20 70 69 64 20 70 72 6f 67 72 61 6d 20 73 id pid program s
14aa0 74 61 74 65 0a 09 72 65 67 73 75 62 20 2d 61 6c tate..regsub -al
14ab0 6c 20 7b 28 5e 7c 5c 6e 29 28 2e 29 7d 20 24 63 l {(^|\n)(.)} $c
14ac0 6f 6d 6d 5c 6e 20 7b 5c 31 2d 2d 3e 5c 32 7d 20 omm\n {\1-->\2}
14ad0 63 6f 6d 6d 6c 6f 67 0a 09 61 70 70 65 6e 64 20 commlog..append
14ae0 67 64 62 6c 6f 67 20 24 63 6f 6d 6d 6c 6f 67 0a gdblog $commlog.
14af0 09 70 75 74 73 20 24 66 69 64 20 24 63 6f 6d 6d .puts $fid $comm
14b00 0a 09 66 6c 75 73 68 20 24 66 69 64 0a 20 20 20 ..flush $fid.
14b10 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 75 73 65 } elseif { $use
14b20 63 6f 6d 6d 52 20 7d 20 7b 0a 09 73 65 74 20 65 commR } {..set e
14b30 72 72 20 5b 63 61 74 63 68 20 7b 20 63 6f 6d 6d rr [catch { comm
14b40 52 3a 3a 63 6f 6d 6d 20 73 65 6e 64 20 24 72 65 R::comm send $re
14b50 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d 20 24 63 moteserverNum $c
14b60 6f 6d 6d 20 7d 20 65 72 72 73 74 72 69 6e 67 5d omm } errstring]
14b70 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
14b80 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 et err [catch {
14b90 73 65 6e 64 20 24 72 65 6d 6f 74 65 73 65 72 76 send $remoteserv
14ba0 65 72 20 24 63 6f 6d 6d 20 7d 20 65 72 72 73 74 er $comm } errst
14bb0 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 20 20 ring]. }.
14bc0 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 57 if { $err } {..W
14bd0 61 72 6e 57 69 6e 20 5b 5f 20 22 44 65 62 75 67 arnWin [_ "Debug
14be0 67 65 64 20 70 72 6f 67 72 61 6d 20 69 73 20 6e ged program is n
14bf0 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 61 6e 79 ot available any
14c00 6d 6f 72 65 2e 20 44 69 73 63 6f 6e 6e 65 63 74 more. Disconnect
14c10 69 6e 67 20 28 25 73 29 22 20 5c 0a 09 09 24 65 ing (%s)" \...$e
14c20 72 72 73 74 72 69 6e 67 5d 0a 09 44 69 73 63 6f rrstring]..Disco
14c30 6e 6e 65 63 74 53 74 6f 70 0a 09 72 65 74 75 72 nnectStop..retur
14c40 6e 20 2d 63 6f 64 65 20 72 65 74 75 72 6e 0a 20 n -code return.
14c50 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
14c60 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 52 65 Debugger::EvalRe
14c70 6d 6f 74 65 41 6e 64 52 65 74 75 72 6e 20 7b 20 moteAndReturn {
14c80 63 6f 6d 6d 20 7d 20 7b 0a 20 20 20 20 76 61 72 comm } {. var
14c90 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 iable remoteserv
14ca0 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 er. variable
14cb0 72 65 6d 6f 74 65 73 65 72 76 65 72 4e 75 6d 0a remoteserverNum.
14cc0 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d variable rem
14cd0 6f 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 oteserverType.
14ce0 20 20 76 61 72 69 61 62 6c 65 20 67 64 62 6c 6f variable gdblo
14cf0 67 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 75 g. variable u
14d00 73 65 63 6f 6d 6d 52 0a 0a 20 20 20 20 69 66 20 secommR.. if
14d10 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 { $remoteserver
14d20 3d 3d 20 22 22 20 7d 20 7b 0a 09 65 72 72 6f 72 == "" } {..error
14d30 20 5b 5f 20 22 45 72 72 6f 72 3a 20 61 20 70 72 [_ "Error: a pr
14d40 6f 67 72 61 6d 20 74 6f 20 64 65 62 75 67 20 6d ogram to debug m
14d50 75 73 74 20 62 65 20 73 65 6c 65 63 74 65 64 20 ust be selected
14d60 75 73 69 6e 67 20 72 64 65 62 75 67 22 5d 0a 20 using rdebug"].
14d70 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 72 }. if { $r
14d80 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 emoteserverType
14d90 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 7b 0a 09 == "local" } {..
14da0 73 65 74 20 72 65 74 20 5b 6c 6f 63 61 6c 20 65 set ret [local e
14db0 76 61 6c 20 24 63 6f 6d 6d 5d 0a 20 20 20 20 7d val $comm]. }
14dc0 20 65 6c 73 65 69 66 20 7b 20 24 72 65 6d 6f 74 elseif { $remot
14dd0 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 eserverType == "
14de0 6d 61 73 74 65 72 22 20 7d 20 7b 0a 09 73 65 74 master" } {..set
14df0 20 72 65 74 20 5b 6d 61 73 74 65 72 20 24 63 6f ret [master $co
14e00 6d 6d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 mm]. } elseif
14e10 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 { $remoteserver
14e20 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 Type == "gdb" }
14e30 7b 0a 09 6c 61 73 73 69 67 6e 20 24 72 65 6d 6f {..lassign $remo
14e40 74 65 73 65 72 76 65 72 20 66 69 64 20 70 69 64 teserver fid pid
14e50 20 70 72 6f 67 72 61 6d 20 73 74 61 74 65 0a 09 program state..
14e60 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 28 5e 7c regsub -all {(^|
14e70 5c 6e 29 28 2e 29 7d 20 24 63 6f 6d 6d 5c 6e 20 \n)(.)} $comm\n
14e80 7b 5c 31 2d 2d 3e 5c 32 7d 20 63 6f 6d 6d 6c 6f {\1-->\2} commlo
14e90 67 0a 09 61 70 70 65 6e 64 20 67 64 62 6c 6f 67 g..append gdblog
14ea0 20 24 63 6f 6d 6d 6c 6f 67 0a 09 70 75 74 73 20 $commlog..puts
14eb0 24 66 69 64 20 24 63 6f 6d 6d 0a 09 66 6c 75 73 $fid $comm..flus
14ec0 68 20 24 66 69 64 0a 09 73 65 74 20 72 65 74 20 h $fid..set ret
14ed0 22 22 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 "". } elseif
14ee0 7b 20 24 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a { $usecommR } {.
14ef0 09 73 65 74 20 72 65 74 20 5b 63 6f 6d 6d 52 3a .set ret [commR:
14f00 3a 63 6f 6d 6d 20 73 65 6e 64 20 24 72 65 6d 6f :comm send $remo
14f10 74 65 73 65 72 76 65 72 4e 75 6d 20 24 63 6f 6d teserverNum $com
14f20 6d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a m]. } else {.
14f30 09 73 65 74 20 72 65 74 20 5b 73 65 6e 64 20 24 .set ret [send $
14f40 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24 63 6f remoteserver $co
14f50 6d 6d 5d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 mm]. }. re
14f60 74 75 72 6e 20 24 72 65 74 0a 7d 0a 0a 70 72 6f turn $ret.}..pro
14f70 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 c RamDebugger::G
14f80 69 76 65 49 6e 73 74 46 69 6c 65 20 7b 20 66 69 iveInstFile { fi
14f90 6c 65 20 6f 6e 6c 79 69 66 6e 65 77 65 72 20 66 le onlyifnewer f
14fa0 69 6c 65 74 79 70 65 20 7d 20 7b 0a 20 20 20 20 iletype } {.
14fb0 76 61 72 69 61 62 6c 65 20 43 61 63 68 65 44 69 variable CacheDi
14fc0 72 0a 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72 r.. if { [str
14fd0 69 6e 67 20 69 6e 64 65 78 20 24 66 69 6c 65 20 ing index $file
14fe0 30 5d 20 3d 3d 20 22 2a 22 20 7d 20 7b 20 72 65 0] == "*" } { re
14ff0 74 75 72 6e 20 7d 0a 0a 20 20 20 20 69 66 20 7b turn }.. if {
15000 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 43 61 [info exists Ca
15010 63 68 65 44 69 72 5d 20 7d 20 7b 0a 09 72 65 67 cheDir] } {..reg
15020 73 75 62 20 2d 61 6c 6c 20 7b 28 2f 7c 3a 29 7d sub -all {(/|:)}
15030 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 70 77 64 [file join [pwd
15040 5d 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 ] [file dirname
15050 24 66 69 6c 65 5d 5d 20 5c 23 20 6d 6f 64 70 61 $file]] \# modpa
15060 74 68 0a 09 73 65 74 20 6d 6f 64 70 61 74 68 20 th..set modpath
15070 5b 73 74 72 69 6e 67 20 74 72 69 6d 72 69 67 68 [string trimrigh
15080 74 20 24 6d 6f 64 70 61 74 68 20 22 2e 5c 23 22 t $modpath ".\#"
15090 5d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 79 70 ]..if { $filetyp
150a0 65 20 3d 3d 20 22 49 22 20 7d 20 7b 0a 09 20 20 e == "I" } {..
150b0 20 20 73 65 74 20 69 6e 73 74 66 69 6c 65 20 5b set instfile [
150c0 66 69 6c 65 20 6a 6f 69 6e 20 24 43 61 63 68 65 file join $Cache
150d0 44 69 72 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 Dir [file tail $
150e0 66 69 6c 65 5d 5f 24 6d 6f 64 70 61 74 68 2e 69 file]_$modpath.i
150f0 6e 66 6f 5d 0a 09 7d 20 65 6c 73 65 69 66 20 7b nfo]..} elseif {
15100 20 24 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 50 $filetype == "P
15110 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 " } {.. set i
15120 6e 73 74 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f nstfile [file jo
15130 69 6e 20 24 43 61 63 68 65 44 69 72 20 5b 66 69 in $CacheDir [fi
15140 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d 5f 24 le tail $file]_$
15150 6d 6f 64 70 61 74 68 2e 69 6e 73 74 72 50 5d 0a modpath.instrP].
15160 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 .} else {.. s
15170 65 74 20 69 6e 73 74 66 69 6c 65 20 5b 66 69 6c et instfile [fil
15180 65 20 6a 6f 69 6e 20 24 43 61 63 68 65 44 69 72 e join $CacheDir
15190 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c [file tail $fil
151a0 65 5d 5f 24 6d 6f 64 70 61 74 68 2e 69 6e 73 74 e]_$modpath.inst
151b0 72 52 5d 0a 09 7d 0a 09 69 66 20 7b 20 24 6f 6e rR]..}..if { $on
151c0 6c 79 69 66 6e 65 77 65 72 20 7d 20 7b 0a 09 20 lyifnewer } {..
151d0 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 if { [file ex
151e0 69 73 74 73 20 24 69 6e 73 74 66 69 6c 65 5d 20 ists $instfile]
151f0 26 26 20 5b 66 69 6c 65 20 6d 74 69 6d 65 20 24 && [file mtime $
15200 69 6e 73 74 66 69 6c 65 5d 20 3e 20 5b 66 69 6c instfile] > [fil
15210 65 20 6d 74 69 6d 65 20 24 66 69 6c 65 5d 20 7d e mtime $file] }
15220 20 7b 0a 09 09 72 65 74 75 72 6e 20 24 69 6e 73 {...return $ins
15230 74 66 69 6c 65 0a 09 20 20 20 20 7d 20 65 6c 73 tfile.. } els
15240 65 20 7b 20 72 65 74 75 72 6e 20 22 22 20 7d 0a e { return "" }.
15250 09 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 72 6e .} else { return
15260 20 24 69 6e 73 74 66 69 6c 65 20 7d 0a 20 20 20 $instfile }.
15270 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 22 22 }. return ""
15280 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
15290 67 67 65 72 3a 3a 55 70 64 61 74 65 52 65 6d 6f gger::UpdateRemo
152a0 74 65 42 72 65 61 6b 73 20 7b 7d 20 7b 0a 20 20 teBreaks {} {.
152b0 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b variable break
152c0 70 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61 points. varia
152d0 62 6c 65 20 66 69 6c 65 73 6c 69 73 74 0a 20 20 ble fileslist.
152e0 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 variable debug
152f0 67 65 72 73 74 61 74 65 0a 20 20 20 20 76 61 72 gerstate. var
15300 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 iable remoteserv
15310 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 er. variable
15320 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 remoteserverType
15330 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
15340 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 69 rrentfile.. i
15350 66 20 7b 20 24 64 65 62 75 67 67 65 72 73 74 61 f { $debuggersta
15360 74 65 20 21 3d 20 22 64 65 62 75 67 22 20 7d 20 te != "debug" }
15370 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 0a 20 20 20 { return }...
15380 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 if { $remoteser
15390 76 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 verType == "gdb"
153a0 20 7d 20 7b 0a 09 73 65 74 20 72 65 6d 6f 74 65 } {..set remote
153b0 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 server [lreplace
153c0 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 $remoteserver 3
153d0 20 33 20 73 65 74 62 72 65 61 6b 70 6f 69 6e 74 3 setbreakpoint
153e0 73 5d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 22 s]..EvalRemote "
153f0 64 65 6c 65 74 65 22 0a 09 66 6f 72 65 61 63 68 delete"..foreach
15400 20 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 i $breakpoints
15410 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 24 {.. lassign $
15420 69 20 6e 75 6d 20 65 6e 61 62 6c 65 5f 64 69 73 i num enable_dis
15430 61 62 6c 65 20 66 69 6c 65 20 6c 69 6e 65 20 63 able file line c
15440 6f 6e 64 0a 09 20 20 20 20 69 66 20 7b 20 21 24 ond.. if { !$
15450 65 6e 61 62 6c 65 5f 64 69 73 61 62 6c 65 20 7d enable_disable }
15460 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 20 { continue }..
15470 20 20 20 73 65 74 20 66 69 6c 65 6e 75 6d 20 5b set filenum [
15480 6c 73 65 61 72 63 68 66 69 6c 65 20 24 66 69 6c lsearchfile $fil
15490 65 73 6c 69 73 74 20 24 66 69 6c 65 5d 0a 09 20 eslist $file]..
154a0 20 20 20 69 66 20 7b 20 24 66 69 6c 65 6e 75 6d if { $filenum
154b0 20 3d 3d 20 2d 31 20 7d 20 7b 20 63 6f 6e 74 69 == -1 } { conti
154c0 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74 20 66 nue }.. set f
154d0 69 6c 65 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b ile [file tail [
154e0 6c 69 6e 64 65 78 20 24 66 69 6c 65 73 6c 69 73 lindex $fileslis
154f0 74 20 24 66 69 6c 65 6e 75 6d 5d 5d 0a 09 20 20 t $filenum]]..
15500 20 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b set filetype [
15510 47 69 76 65 46 69 6c 65 54 79 70 65 20 24 63 75 GiveFileType $cu
15520 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 rrentfile]..
15530 69 66 20 7b 20 24 63 6f 6e 64 20 6e 65 20 22 22 if { $cond ne ""
15540 20 7d 20 7b 0a 09 09 73 65 74 20 63 6e 64 4c 69 } {...set cndLi
15550 73 74 20 22 20 69 66 20 24 63 6f 6e 64 22 0a 09 st " if $cond"..
15560 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 } else {...s
15570 65 74 20 63 6e 64 4c 69 73 74 20 22 22 0a 09 20 et cndList ""..
15580 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 }.. if { $
15590 66 69 6c 65 74 79 70 65 20 65 71 20 22 43 2f 43 filetype eq "C/C
155a0 2b 2b 22 20 7d 20 7b 0a 09 09 45 76 61 6c 52 65 ++" } {...EvalRe
155b0 6d 6f 74 65 20 22 62 72 65 61 6b 20 24 66 69 6c mote "break $fil
155c0 65 3a 24 6c 69 6e 65 24 63 6e 64 4c 69 73 74 22 e:$line$cndList"
155d0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 23 20 43 .. }.. # C
155e0 4f 4e 44 49 54 49 4f 4e 20 69 73 20 66 6f 72 67 ONDITION is forg
155f0 6f 74 74 65 6e 20 62 79 20 6e 6f 77 0a 09 20 20 otten by now..
15600 20 20 23 20 54 52 41 43 45 53 20 61 72 65 20 66 # TRACES are f
15610 6f 72 67 6f 74 74 65 6e 20 62 79 20 6e 6f 77 0a orgotten by now.
15620 09 7d 0a 09 45 76 61 6c 52 65 6d 6f 74 65 20 22 .}..EvalRemote "
15630 70 72 69 6e 74 66 20 5c 22 46 49 4e 49 53 48 45 printf \"FINISHE
15640 44 20 53 45 54 20 42 52 45 41 4b 50 4f 49 4e 54 D SET BREAKPOINT
15650 53 5c 5c 6e 5c 22 22 0a 20 20 20 20 7d 20 65 6c S\\n\"". } el
15660 73 65 20 7b 0a 09 45 76 61 6c 52 65 6d 6f 74 65 se {..EvalRemote
15670 20 7b 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 { if { [info ex
15680 69 73 74 73 20 52 44 43 3a 3a 62 72 65 61 6b 73 ists RDC::breaks
15690 5d 20 7d 20 7b 20 75 6e 73 65 74 20 52 44 43 3a ] } { unset RDC:
156a0 3a 62 72 65 61 6b 73 20 7d 20 7d 0a 09 45 76 61 :breaks } }..Eva
156b0 6c 52 65 6d 6f 74 65 20 7b 20 69 66 20 7b 20 5b lRemote { if { [
156c0 69 6e 66 6f 20 65 78 69 73 74 73 20 52 44 43 3a info exists RDC:
156d0 3a 74 72 61 63 65 73 5d 20 7d 20 7b 20 73 65 74 :traces] } { set
156e0 20 52 44 43 3a 3a 74 72 61 63 65 73 20 22 22 20 RDC::traces ""
156f0 7d 20 7d 0a 09 66 6f 72 65 61 63 68 20 69 20 24 } }..foreach i $
15700 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 20 breakpoints {..
15710 20 20 20 69 66 20 7b 20 21 5b 6c 69 6e 64 65 78 if { ![lindex
15720 20 24 69 20 31 5d 20 7d 20 7b 20 63 6f 6e 74 69 $i 1] } { conti
15730 6e 75 65 20 7d 0a 09 20 20 20 20 73 65 74 20 6c nue }.. set l
15740 69 6e 65 20 5b 6c 69 6e 64 65 78 20 24 69 20 33 ine [lindex $i 3
15750 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 6c 69 6e ].. if { $lin
15760 65 20 65 71 20 22 22 20 7d 20 7b 0a 09 09 45 76 e eq "" } {...Ev
15770 61 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 6c alRemote [list l
15780 61 70 70 65 6e 64 20 52 44 43 3a 3a 74 72 61 63 append RDC::trac
15790 65 73 20 5b 6c 69 73 74 20 5b 6c 69 6e 64 65 78 es [list [lindex
157a0 20 24 69 20 30 5d 20 5b 6c 69 6e 64 65 78 20 24 $i 0] [lindex $
157b0 69 20 34 5d 5d 5d 0a 09 20 20 20 20 7d 20 65 6c i 4]]].. } el
157c0 73 65 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 6e se {...set filen
157d0 75 6d 20 5b 6c 73 65 61 72 63 68 20 24 66 69 6c um [lsearch $fil
157e0 65 73 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 24 eslist [lindex $
157f0 69 20 32 5d 5d 0a 09 09 69 66 20 7b 20 24 66 69 i 2]]...if { $fi
15800 6c 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b 20 lenum == -1 } {
15810 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 45 76 61 continue }...Eva
15820 6c 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 73 65 lRemote [list se
15830 74 20 52 44 43 3a 3a 62 72 65 61 6b 73 28 24 66 t RDC::breaks($f
15840 69 6c 65 6e 75 6d 2c 24 6c 69 6e 65 29 20 5b 6c ilenum,$line) [l
15850 69 73 74 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 ist [lindex $i 0
15860 5d 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d 5d ] [lindex $i 4]]
15870 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 ].. }..}.
15880 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
15890 75 67 67 65 72 3a 3a 52 65 63 65 69 76 65 46 72 ugger::ReceiveFr
158a0 6f 6d 47 64 62 20 7b 7d 20 7b 0a 20 20 20 20 76 omGdb {} {. v
158b0 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 ariable debugger
158c0 73 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62 state. variab
158d0 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 54 le remoteserverT
158e0 79 70 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ype. variable
158f0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 remoteserver.
15900 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
15910 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 ntfile. varia
15920 62 6c 65 20 67 64 62 6c 6f 67 0a 20 20 20 20 76 ble gdblog. v
15930 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 ariable breakpoi
15940 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 nts. variable
15950 20 66 69 6c 65 73 6c 69 73 74 0a 20 20 20 20 76 fileslist. v
15960 61 72 69 61 62 6c 65 20 45 78 70 72 65 73 73 69 ariable Expressi
15970 6f 6e 52 65 73 75 6c 74 0a 20 20 20 20 76 61 72 onResult. var
15980 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 iable options.
15990 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f variable Windo
159a0 77 46 69 6c 65 73 4c 69 73 74 0a 0a 20 20 20 20 wFilesList..
159b0 6c 61 73 73 69 67 6e 20 24 72 65 6d 6f 74 65 73 lassign $remotes
159c0 65 72 76 65 72 20 66 69 64 20 70 69 64 20 70 72 erver fid pid pr
159d0 6f 67 72 61 6d 20 73 74 61 74 65 0a 0a 20 20 20 ogram state..
159e0 20 69 66 20 7b 20 5b 65 6f 66 20 24 66 69 64 5d if { [eof $fid]
159f0 20 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 } {..set err [c
15a00 61 74 63 68 20 7b 20 63 6c 6f 73 65 20 24 66 69 atch { close $fi
15a10 64 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 d } errstring]..
15a20 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 set remoteserver
15a30 54 79 70 65 20 22 22 0a 09 73 65 74 20 72 65 6d Type ""..set rem
15a40 6f 74 65 73 65 72 76 65 72 20 22 22 0a 09 73 65 oteserver ""..se
15a50 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 20 t debuggerstate
15a60 22 22 0a 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22 ""..WarnWin [_ "
15a70 50 72 6f 67 72 61 6d 20 65 78 69 74 65 64 20 28 Program exited (
15a80 25 73 29 22 20 24 65 72 72 73 74 72 69 6e 67 5d %s)" $errstring]
15a90 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 ..return. }.
15aa0 20 20 20 73 65 74 20 61 61 20 5b 72 65 61 64 20 set aa [read
15ab0 24 66 69 64 5d 0a 0a 20 20 20 20 72 65 67 73 75 $fid].. regsu
15ac0 62 20 2d 61 6c 6c 20 7b 5b 20 5c 74 5d 2a 5c 28 b -all {[ \t]*\(
15ad0 67 64 62 5c 29 5b 20 5c 74 5d 2a 7d 20 24 61 61 gdb\)[ \t]*} $aa
15ae0 20 7b 7d 20 61 61 0a 0a 20 20 20 20 72 65 67 73 {} aa.. regs
15af0 75 62 20 2d 61 6c 6c 20 7b 28 5e 7c 5c 6e 29 28 ub -all {(^|\n)(
15b00 2e 29 7d 20 24 61 61 20 7b 5c 31 3c 2d 2d 5c 32 .)} $aa {\1<--\2
15b10 7d 20 61 61 6c 6f 67 0a 20 20 20 20 61 70 70 65 } aalog. appe
15b20 6e 64 20 67 64 62 6c 6f 67 20 24 61 61 6c 6f 67 nd gdblog $aalog
15b30 0a 0a 20 20 20 20 23 69 66 20 7b 20 5b 73 74 72 .. #if { [str
15b40 69 6e 67 20 74 72 69 6d 20 24 61 61 5d 20 3d 3d ing trim $aa] ==
15b50 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d "" } { return }
15b60 0a 0a 20 20 20 20 73 77 69 74 63 68 20 2d 67 6c .. switch -gl
15b70 6f 62 20 2d 2d 20 24 73 74 61 74 65 20 7b 0a 09 ob -- $state {..
15b80 73 74 61 72 74 20 7b 0a 09 20 20 20 20 69 66 20 start {.. if
15b90 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 { [string match
15ba0 22 2a 4e 6f 20 73 79 6d 62 6f 6c 20 74 61 62 6c "*No symbol tabl
15bb0 65 20 69 73 20 6c 6f 61 64 65 64 2a 22 20 24 61 e is loaded*" $a
15bc0 61 5d 20 7c 7c 20 5c 0a 09 09 20 20 20 20 20 5b a] || \... [
15bd0 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 2a 4e string match "*N
15be0 6f 20 73 75 63 68 20 66 69 6c 65 20 6f 72 20 64 o such file or d
15bf0 69 72 65 63 74 6f 72 79 2a 22 20 24 61 61 5d 20 irectory*" $aa]
15c00 7c 7c 20 5c 0a 09 09 20 20 20 20 20 5b 73 74 72 || \... [str
15c10 69 6e 67 20 6d 61 74 63 68 20 22 2a 4e 6f 20 65 ing match "*No e
15c20 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 73 xecutable file s
15c30 70 65 63 69 66 69 65 64 2a 22 20 24 61 61 5d 20 pecified*" $aa]
15c40 7d 20 7b 0a 09 09 73 65 74 20 65 72 72 20 5b 63 } {...set err [c
15c50 61 74 63 68 20 7b 20 63 6c 6f 73 65 20 24 66 69 atch { close $fi
15c60 64 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 d } errstring]..
15c70 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 .set remoteserve
15c80 72 54 79 70 65 20 22 22 0a 09 09 73 65 74 20 72 rType ""...set r
15c90 65 6d 6f 74 65 73 65 72 76 65 72 20 22 22 0a 09 emoteserver ""..
15ca0 09 73 65 74 20 64 65 62 75 67 67 65 72 73 74 61 .set debuggersta
15cb0 74 65 20 22 22 0a 09 09 57 61 72 6e 57 69 6e 20 te ""...WarnWin
15cc0 5b 5f 20 22 50 72 6f 67 72 61 6d 20 65 78 69 74 [_ "Program exit
15cd0 65 64 20 28 25 73 29 22 20 24 61 61 5d 0a 09 09 ed (%s)" $aa]...
15ce0 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 20 0a 09 return.. } ..
15cf0 20 20 20 20 73 65 74 20 72 65 6d 6f 74 65 73 65 set remotese
15d00 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 rver [lreplace $
15d10 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 remoteserver 3 3
15d20 20 22 22 5d 0a 09 7d 0a 09 67 65 74 64 61 74 61 ""]..}..getdata
15d30 2a 20 7b 0a 09 20 20 20 20 73 65 74 20 68 61 6e * {.. set han
15d40 64 6c 65 72 20 5b 6c 69 6e 64 65 78 20 24 73 74 dler [lindex $st
15d50 61 74 65 20 31 5d 0a 09 20 20 20 20 73 65 74 20 ate 1].. set
15d60 61 61 20 5b 6c 69 6e 64 65 78 20 24 73 74 61 74 aa [lindex $stat
15d70 65 20 32 5d 5c 6e 24 61 61 0a 09 20 20 20 20 69 e 2]\n$aa.. i
15d80 66 20 7b 20 21 5b 72 65 67 65 78 70 20 7b 46 49 f { ![regexp {FI
15d90 4e 49 53 48 45 44 20 47 45 54 44 41 54 41 5c 73 NISHED GETDATA\s
15da0 2a 24 7d 20 24 61 61 5d 20 7d 20 7b 0a 09 09 73 *$} $aa] } {...s
15db0 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 et remoteserver
15dc0 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 [lreplace $remot
15dd0 65 73 65 72 76 65 72 20 33 20 33 20 5b 6c 69 73 eserver 3 3 [lis
15de0 74 20 67 65 74 64 61 74 61 20 24 68 61 6e 64 6c t getdata $handl
15df0 65 72 20 24 61 61 5d 5d 0a 09 20 20 20 20 7d 20 er $aa]].. }
15e00 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65 6d else {...set rem
15e10 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c oteserver [lrepl
15e20 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 ace $remoteserve
15e30 72 20 33 20 33 20 22 22 5d 0a 09 09 72 65 67 65 r 3 3 ""]...rege
15e40 78 70 20 7b 28 2e 2a 29 46 49 4e 49 53 48 45 44 xp {(.*)FINISHED
15e50 20 47 45 54 44 41 54 41 5c 73 2a 24 7d 20 24 61 GETDATA\s*$} $a
15e60 61 20 7b 7d 20 62 6c 6f 63 6b 0a 09 09 75 70 6c a {} block...upl
15e70 65 76 65 6c 20 5c 23 30 20 24 68 61 6e 64 6c 65 evel \#0 $handle
15e80 72 20 5b 6c 69 73 74 20 5b 73 74 72 69 6e 67 20 r [list [string
15e90 74 72 69 6d 6c 65 66 74 20 24 62 6c 6f 63 6b 20 trimleft $block
15ea0 5c 6e 5d 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 \n]].. }..
15eb0 20 72 65 74 75 72 6e 0a 09 7d 0a 09 70 72 69 6e return..}..prin
15ec0 74 2a 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b t* {.. if { [
15ed0 72 65 67 65 78 70 20 7b 5e 5c 24 5b 30 2d 39 5d regexp {^\$[0-9]
15ee0 2b 5c 73 2b 3d 5c 73 2b 28 2e 2a 29 7d 20 24 61 +\s+=\s+(.*)} $a
15ef0 61 20 7b 7d 20 72 65 73 5d 20 7d 20 7b 0a 09 09 a {} res] } {...
15f00 73 65 74 20 45 78 70 72 65 73 73 69 6f 6e 52 65 set ExpressionRe
15f10 73 75 6c 74 20 5b 6c 69 73 74 20 30 20 24 72 65 sult [list 0 $re
15f20 73 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 69 66 s].. } elseif
15f30 20 7b 20 5b 72 65 67 65 78 70 20 7b 4e 6f 20 73 { [regexp {No s
15f40 79 6d 62 6f 6c 20 2e 2a 20 69 6e 20 63 75 72 72 ymbol .* in curr
15f50 65 6e 74 20 63 6f 6e 74 65 78 74 7d 20 24 61 61 ent context} $aa
15f60 5d 20 7d 20 7b 0a 09 09 73 65 74 20 45 78 70 72 ] } {...set Expr
15f70 65 73 73 69 6f 6e 52 65 73 75 6c 74 20 5b 6c 69 essionResult [li
15f80 73 74 20 31 20 24 61 61 5d 0a 09 20 20 20 20 7d st 1 $aa].. }
15f90 20 65 6c 73 65 20 7b 0a 09 09 6c 61 73 73 69 67 else {...lassig
15fa0 6e 20 24 45 78 70 72 65 73 73 69 6f 6e 52 65 73 n $ExpressionRes
15fb0 75 6c 74 20 76 61 6c 20 74 78 74 0a 09 09 61 70 ult val txt...ap
15fc0 70 65 6e 64 20 74 78 74 20 24 61 61 0a 09 09 73 pend txt $aa...s
15fd0 65 74 20 45 78 70 72 65 73 73 69 6f 6e 52 65 73 et ExpressionRes
15fe0 75 6c 74 20 5b 6c 69 73 74 20 30 20 24 74 78 74 ult [list 0 $txt
15ff0 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 0a 09 ].. }.. ..
16000 20 20 20 20 6c 61 73 73 69 67 6e 20 24 45 78 70 lassign $Exp
16010 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 20 76 61 ressionResult va
16020 6c 20 74 78 74 0a 09 20 20 20 20 69 66 20 7b 20 l txt.. if {
16030 24 76 61 6c 20 3d 3d 20 30 20 7d 20 7b 0a 09 09 $val == 0 } {...
16040 73 65 74 20 6e 75 6d 20 30 0a 09 09 66 6f 72 20 set num 0...for
16050 20 7b 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24 { set i 0 } { $
16060 69 20 3c 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 i < [string leng
16070 74 68 20 24 74 78 74 5d 20 7d 20 7b 20 69 6e 63 th $txt] } { inc
16080 72 20 69 20 7d 20 7b 0a 09 09 20 20 20 20 73 77 r i } {... sw
16090 69 74 63 68 20 2d 2d 20 5b 73 74 72 69 6e 67 20 itch -- [string
160a0 69 6e 64 65 78 20 24 74 78 74 20 24 69 5d 20 7b index $txt $i] {
160b0 0a 09 09 20 20 20 20 20 20 20 20 5c 7b 20 7b 0a ... \{ {.
160c0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 69 6e .. in
160d0 63 72 20 6e 75 6d 0a 09 09 20 20 20 20 20 20 20 cr num...
160e0 20 7d 0a 09 09 20 20 20 20 20 20 20 20 5c 7d 20 }... \}
160f0 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 {...
16100 69 6e 63 72 20 6e 75 6d 20 2d 31 0a 09 09 20 20 incr num -1...
16110 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 0a }... }.
16120 09 09 7d 0a 09 09 69 66 20 7b 20 24 6e 75 6d 21 ..}...if { $num!
16130 3d 20 30 20 7d 20 7b 0a 09 09 20 20 20 20 72 65 = 0 } {... re
16140 74 75 72 6e 0a 09 09 7d 0a 09 20 20 20 20 7d 0a turn...}.. }.
16150 09 20 20 20 20 73 65 74 20 68 61 6e 64 6c 65 72 . set handler
16160 20 5b 6c 69 6e 64 65 78 20 24 73 74 61 74 65 20 [lindex $state
16170 31 5d 0a 09 20 20 20 20 73 65 74 20 72 65 6d 6f 1].. set remo
16180 74 65 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 teserver [lrepla
16190 63 65 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 ce $remoteserver
161a0 20 33 20 33 20 22 22 5d 0a 0a 09 20 20 20 20 69 3 3 ""]... i
161b0 66 20 7b 20 24 68 61 6e 64 6c 65 72 20 21 3d 20 f { $handler !=
161c0 22 22 20 7d 20 7b 0a 09 09 75 70 6c 65 76 65 6c "" } {...uplevel
161d0 20 5c 23 30 20 24 68 61 6e 64 6c 65 72 20 5b 6c \#0 $handler [l
161e0 69 73 74 20 24 45 78 70 72 65 73 73 69 6f 6e 52 ist $ExpressionR
161f0 65 73 75 6c 74 5d 0a 09 20 20 20 20 7d 0a 09 20 esult].. }..
16200 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09 62 61 return..}..ba
16210 63 6b 74 72 61 63 65 2a 20 7b 0a 09 20 20 20 20 cktrace* {..
16220 73 65 74 20 61 61 20 5b 6c 69 6e 64 65 78 20 24 set aa [lindex $
16230 73 74 61 74 65 20 31 5d 24 61 61 0a 09 20 20 20 state 1]$aa..
16240 20 69 66 20 7b 20 21 5b 72 65 67 65 78 70 20 7b if { ![regexp {
16250 46 49 4e 49 53 48 45 44 20 42 41 43 4b 54 52 41 FINISHED BACKTRA
16260 43 45 5c 73 2a 24 7d 20 24 61 61 5d 20 7d 20 7b CE\s*$} $aa] } {
16270 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 ...set remoteser
16280 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 ver [lreplace $r
16290 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 20 emoteserver 3 3
162a0 5b 6c 69 73 74 20 62 61 63 6b 74 72 61 63 65 20 [list backtrace
162b0 24 61 61 5d 5d 0a 09 20 20 20 20 7d 20 65 6c 73 $aa]].. } els
162c0 65 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 e {...set remote
162d0 73 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 server [lreplace
162e0 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 $remoteserver 3
162f0 20 33 20 22 22 5d 0a 09 09 72 65 67 65 78 70 20 3 ""]...regexp
16300 7b 28 2e 2a 29 46 49 4e 49 53 48 45 44 20 42 41 {(.*)FINISHED BA
16310 43 4b 54 52 41 43 45 5c 73 2a 24 7d 20 24 61 61 CKTRACE\s*$} $aa
16320 20 7b 7d 20 62 6c 6f 63 6b 0a 09 09 73 65 74 20 {} block...set
16330 45 78 70 72 65 73 73 69 6f 6e 52 65 73 75 6c 74 ExpressionResult
16340 20 5b 6c 69 73 74 20 30 20 22 53 54 41 43 4b 20 [list 0 "STACK
16350 54 52 41 43 45 5c 6e 24 62 6c 6f 63 6b 22 5d 0a TRACE\n$block"].
16360 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65 74 75 . }.. retu
16370 72 6e 0a 09 7d 0a 09 6e 65 78 74 20 2d 20 73 74 rn..}..next - st
16380 65 70 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 21 ep {.. if { !
16390 5b 72 65 67 65 78 70 20 7b 61 74 5c 73 2b 28 5b [regexp {at\s+([
163a0 5e 3a 5d 2b 29 3a 28 5b 30 2d 39 5d 2b 29 7d 20 ^:]+):([0-9]+)}
163b0 24 61 61 20 7b 7d 20 66 69 6c 65 20 6c 69 6e 65 $aa {} file line
163c0 5d 20 7d 20 7b 0a 09 09 69 66 20 7b 20 5b 72 65 ] } {...if { [re
163d0 67 65 78 70 20 7b 5e 5c 73 2a 28 5b 30 2d 39 5d gexp {^\s*([0-9]
163e0 2b 29 5c 73 7d 20 24 61 61 20 7b 7d 20 6c 69 6e +)\s} $aa {} lin
163f0 65 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 e] } {... set
16400 20 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 file $currentfi
16410 6c 65 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 le...} else {...
16420 20 20 20 20 73 65 74 20 6c 69 6e 65 20 22 22 0a set line "".
16430 09 09 20 20 20 20 23 70 75 74 73 20 2d 2d 2d 24 .. #puts ---$
16440 61 61 2d 2d 2d 0a 09 09 20 20 20 20 23 57 61 72 aa---... #War
16450 6e 57 69 6e 20 22 43 6f 75 6c 64 20 6e 6f 74 20 nWin "Could not
16460 64 6f 20 61 20 27 24 73 74 61 74 65 27 22 0a 09 do a '$state'"..
16470 09 7d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b .}.. } else {
16480 0a 09 09 69 66 20 7b 20 21 5b 66 69 6c 65 20 65 ...if { ![file e
16490 78 69 73 74 73 20 24 66 69 6c 65 5d 20 7d 20 7b xists $file] } {
164a0 0a 09 09 20 20 20 20 73 65 74 20 66 75 6c 6c 66 ... set fullf
164b0 69 6c 65 20 5b 63 70 72 6f 6a 65 63 74 3a 3a 54 ile [cproject::T
164c0 72 79 54 6f 46 69 6e 64 50 61 74 68 20 24 66 69 ryToFindPath $fi
164d0 6c 65 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 24 le]... if { $
164e0 66 75 6c 6c 66 69 6c 65 20 21 3d 20 22 22 20 7d fullfile != "" }
164f0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 {... set
16500 20 66 69 6c 65 20 24 66 75 6c 6c 66 69 6c 65 0a file $fullfile.
16510 09 09 20 20 20 20 20 20 20 20 0a 09 09 20 20 20 .. ...
16520 20 7d 0a 09 09 7d 0a 09 09 69 66 20 7b 20 5b 66 }...}...if { [f
16530 69 6c 65 20 70 61 74 68 74 79 70 65 20 24 66 69 ile pathtype $fi
16540 6c 65 5d 20 65 71 20 22 72 65 6c 61 74 69 76 65 le] eq "relative
16550 22 20 7d 20 7b 0a 09 09 20 20 20 20 66 6f 72 65 " } {... fore
16560 61 63 68 20 69 20 24 57 69 6e 64 6f 77 46 69 6c ach i $WindowFil
16570 65 73 4c 69 73 74 20 7b 0a 09 09 20 20 20 20 20 esList {...
16580 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 74 61 if { [file ta
16590 69 6c 20 24 69 5d 20 65 71 20 24 66 69 6c 65 20 il $i] eq $file
165a0 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 } {...
165b0 20 20 73 65 74 20 66 69 6c 65 20 24 69 0a 09 09 set file $i...
165c0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
165d0 6b 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 k... }...
165e0 20 20 20 20 7d 0a 09 09 7d 0a 09 09 69 66 20 7b }...}...if {
165f0 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 [file exists $f
16600 69 6c 65 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 ile] } {... s
16610 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 et file [filenor
16620 6d 61 6c 69 7a 65 20 24 66 69 6c 65 5d 0a 09 09 malize $file]...
16630 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 }.. }.. if
16640 20 7b 20 24 6c 69 6e 65 20 6e 65 20 22 22 20 7d { $line ne "" }
16650 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 {...set remotes
16660 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 erver [lreplace
16670 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 $remoteserver 3
16680 33 20 22 22 5d 0a 09 09 73 65 74 20 66 69 6c 65 3 ""]...set file
16690 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 num [lsearch -ex
166a0 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24 act $fileslist $
166b0 66 69 6c 65 5d 0a 09 09 69 66 20 7b 20 24 66 69 file]...if { $fi
166c0 6c 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b 0a lenum == -1 } {.
166d0 09 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 .. set err [c
166e0 61 74 63 68 20 7b 4f 70 65 6e 46 69 6c 65 46 20 atch {OpenFileF
166f0 2d 72 61 69 73 65 5f 65 72 72 6f 72 20 31 20 24 -raise_error 1 $
16700 66 69 6c 65 7d 20 65 72 72 73 74 72 69 6e 67 5d file} errstring]
16710 0a 09 09 20 20 20 20 69 66 20 7b 20 24 65 72 72 ... if { $err
16720 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 57 } {... W
16730 61 72 6e 57 69 6e 20 5b 5f 20 22 43 6f 75 6c 64 arnWin [_ "Could
16740 20 6e 6f 74 20 6f 70 65 6e 20 66 69 6c 65 20 27 not open file '
16750 25 73 27 20 66 6f 72 20 73 74 6f 70 70 69 6e 67 %s' for stopping
16760 20 70 72 6f 67 72 61 6d 22 20 24 66 69 6c 65 5d program" $file]
16770 0a 09 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ... retur
16780 6e 0a 09 09 20 20 20 20 7d 0a 09 09 20 20 20 20 n... }...
16790 73 65 74 20 66 69 6c 65 6e 75 6d 20 5b 6c 73 65 set filenum [lse
167a0 61 72 63 68 20 2d 65 78 61 63 74 20 24 66 69 6c arch -exact $fil
167b0 65 73 6c 69 73 74 20 24 66 69 6c 65 5d 0a 09 09 eslist $file]...
167c0 7d 0a 09 09 52 65 63 65 69 76 65 46 72 6f 6d 50 }...ReceiveFromP
167d0 72 6f 67 72 61 6d 20 22 22 20 24 66 69 6c 65 6e rogram "" $filen
167e0 75 6d 20 24 6c 69 6e 65 20 22 22 20 22 22 20 22 um $line "" "" "
167f0 22 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 "...return..
16800 7d 0a 09 7d 0a 09 69 6e 66 6f 6c 6f 63 61 6c 73 }..}..infolocals
16810 2a 20 7b 0a 09 20 20 20 20 73 65 74 20 61 61 20 * {.. set aa
16820 5b 6c 69 6e 64 65 78 20 24 73 74 61 74 65 20 31 [lindex $state 1
16830 5d 24 61 61 0a 09 20 20 20 20 69 66 20 7b 20 21 ]$aa.. if { !
16840 5b 72 65 67 65 78 70 20 7b 46 49 4e 49 53 48 45 [regexp {FINISHE
16850 44 20 49 4e 46 4f 20 4c 4f 43 41 4c 53 5c 73 2a D INFO LOCALS\s*
16860 24 7d 20 24 61 61 5d 20 7d 20 7b 0a 09 09 73 65 $} $aa] } {...se
16870 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b t remoteserver [
16880 6c 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 lreplace $remote
16890 73 65 72 76 65 72 20 33 20 33 20 5b 6c 69 73 74 server 3 3 [list
168a0 20 69 6e 66 6f 6c 6f 63 61 6c 73 20 24 61 61 5d infolocals $aa]
168b0 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ].. } else {.
168c0 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 ..set remoteserv
168d0 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 er [lreplace $re
168e0 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 20 22 moteserver 3 3 "
168f0 22 5d 0a 09 09 72 65 67 65 78 70 20 7b 28 2e 2a "]...regexp {(.*
16900 29 46 49 4e 49 53 48 45 44 20 49 4e 46 4f 20 4c )FINISHED INFO L
16910 4f 43 41 4c 53 5c 73 2a 24 7d 20 24 61 61 20 7b OCALS\s*$} $aa {
16920 7d 20 62 6c 6f 63 6b 0a 09 09 73 65 74 20 6c 69 } block...set li
16930 73 74 20 22 22 0a 09 09 73 65 74 20 6c 69 6e 65 st ""...set line
16940 20 22 22 0a 09 09 66 6f 72 65 61 63 68 20 69 20 ""...foreach i
16950 5b 73 70 6c 69 74 20 24 62 6c 6f 63 6b 20 5c 6e [split $block \n
16960 5d 20 7b 0a 09 09 20 20 20 20 61 70 70 65 6e 64 ] {... append
16970 20 6c 69 6e 65 20 24 69 0a 09 09 20 20 20 20 69 line $i... i
16980 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 70 6c 65 f { [info comple
16990 74 65 20 24 6c 69 6e 65 5d 20 7d 20 7b 0a 09 09 te $line] } {...
169a0 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b 72 65 if { [re
169b0 67 65 78 70 20 7b 5e 28 5b 5e 3d 5d 2b 29 3d 28 gexp {^([^=]+)=(
169c0 2e 2a 29 7d 20 24 6c 69 6e 65 20 7b 7d 20 6e 61 .*)} $line {} na
169d0 6d 65 20 76 61 6c 75 65 5d 20 7d 20 7b 0a 09 09 me value] } {...
169e0 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 70 70 lapp
169f0 65 6e 64 20 6c 69 73 74 20 24 6e 61 6d 65 20 22 end list $name "
16a00 22 20 24 76 61 6c 75 65 0a 09 09 20 20 20 20 20 " $value...
16a10 20 20 20 7d 0a 09 09 20 20 20 20 20 20 20 20 73 }... s
16a20 65 74 20 6c 69 6e 65 20 22 22 0a 09 09 20 20 20 et line ""...
16a30 20 7d 0a 09 09 7d 0a 09 09 43 68 65 63 6b 45 76 }...}...CheckEv
16a40 61 6c 45 6e 74 72 69 65 73 4c 20 72 65 73 20 22 alEntriesL res "
16a50 22 20 5b 6c 69 73 74 20 30 20 24 6c 69 73 74 5d " [list 0 $list]
16a60 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65 74 .. }.. ret
16a70 75 72 6e 0a 09 7d 0a 09 6d 75 6c 74 69 70 6c 65 urn..}..multiple
16a80 70 72 69 6e 74 2a 20 7b 0a 09 20 20 20 20 73 65 print* {.. se
16a90 74 20 61 61 20 5b 6c 69 6e 64 65 78 20 24 73 74 t aa [lindex $st
16aa0 61 74 65 20 31 5d 24 61 61 0a 09 20 20 20 20 69 ate 1]$aa.. i
16ab0 66 20 7b 20 21 5b 72 65 67 65 78 70 20 7b 46 49 f { ![regexp {FI
16ac0 4e 49 53 48 45 44 20 4d 55 4c 54 49 50 4c 45 50 NISHED MULTIPLEP
16ad0 52 49 4e 54 5c 73 2a 24 7d 20 24 61 61 5d 20 7d RINT\s*$} $aa] }
16ae0 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 {...set remotes
16af0 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 erver [lreplace
16b00 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 $remoteserver 3
16b10 33 20 5b 6c 69 73 74 20 6d 75 6c 74 69 70 6c 65 3 [list multiple
16b20 70 72 69 6e 74 20 24 61 61 5d 5d 0a 09 20 20 20 print $aa]]..
16b30 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 } else {...set
16b40 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 remoteserver [lr
16b50 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 eplace $remotese
16b60 72 76 65 72 20 33 20 33 20 22 22 5d 0a 09 09 72 rver 3 3 ""]...r
16b70 65 67 65 78 70 20 7b 28 2e 2a 29 46 49 4e 49 53 egexp {(.*)FINIS
16b80 48 45 44 20 4d 55 4c 54 49 50 4c 45 50 52 49 4e HED MULTIPLEPRIN
16b90 54 5c 73 2a 24 7d 20 24 61 61 20 7b 7d 20 62 6c T\s*$} $aa {} bl
16ba0 6f 63 6b 0a 09 09 73 65 74 20 6c 69 73 74 20 22 ock...set list "
16bb0 22 0a 09 09 73 65 74 20 6c 69 6e 65 20 22 22 0a "...set line "".
16bc0 09 09 66 6f 72 65 61 63 68 20 69 20 5b 73 70 6c ..foreach i [spl
16bd0 69 74 20 24 62 6c 6f 63 6b 20 5c 6e 5d 20 7b 0a it $block \n] {.
16be0 09 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 .. if { [stri
16bf0 6e 67 20 74 72 69 6d 20 24 69 5d 20 3d 3d 20 22 ng trim $i] == "
16c00 22 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d " } { continue }
16c10 0a 09 09 20 20 20 20 61 70 70 65 6e 64 20 6c 69 ... append li
16c20 6e 65 20 24 69 0a 09 09 20 20 20 20 69 66 20 7b ne $i... if {
16c30 20 5b 69 6e 66 6f 20 63 6f 6d 70 6c 65 74 65 20 [info complete
16c40 24 6c 69 6e 65 5d 20 7d 20 7b 0a 09 09 20 20 20 $line] } {...
16c50 20 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 if { [regex
16c60 70 20 7b 5e 5c 73 2a 5c 24 5b 30 2d 39 5d 2b 5c p {^\s*\$[0-9]+\
16c70 73 2a 3d 5c 73 2b 28 2e 2a 29 7d 20 24 6c 69 6e s*=\s+(.*)} $lin
16c80 65 20 7b 7d 20 72 65 73 74 5d 20 7d 20 7b 0a 09 e {} rest] } {..
16c90 09 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 70 . lap
16ca0 70 65 6e 64 20 6c 69 73 74 20 22 22 20 24 72 65 pend list "" $re
16cb0 73 74 0a 09 09 20 20 20 20 20 20 20 20 7d 20 65 st... } e
16cc0 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 20 lse {...
16cd0 20 20 20 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 lappend list
16ce0 20 65 72 72 6f 72 20 24 6c 69 6e 65 0a 09 09 20 error $line...
16cf0 20 20 20 20 20 20 20 7d 0a 09 09 20 20 20 20 20 }...
16d00 20 20 20 73 65 74 20 6c 69 6e 65 20 22 22 0a 09 set line ""..
16d10 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 43 68 65 . }...}...Che
16d20 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 20 72 65 ckEvalEntries re
16d30 73 20 22 22 20 5b 6c 69 73 74 20 30 20 24 6c 69 s "" [list 0 $li
16d40 73 74 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 st].. }..
16d50 72 65 74 75 72 6e 0a 09 7d 0a 09 73 65 74 62 72 return..}..setbr
16d60 65 61 6b 70 6f 69 6e 74 73 20 7b 0a 09 20 20 20 eakpoints {..
16d70 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 46 if { [regexp {F
16d80 49 4e 49 53 48 45 44 20 53 45 54 20 42 52 45 41 INISHED SET BREA
16d90 4b 50 4f 49 4e 54 53 5c 73 2a 28 2e 2a 29 24 7d KPOINTS\s*(.*)$}
16da0 20 24 61 61 20 7b 7d 20 72 65 73 74 5d 20 7d 20 $aa {} rest] }
16db0 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 {...set remotese
16dc0 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 rver [lreplace $
16dd0 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 remoteserver 3 3
16de0 20 22 22 5d 0a 09 09 69 66 20 7b 20 5b 73 74 72 ""]...if { [str
16df0 69 6e 67 20 74 72 69 6d 20 24 72 65 73 74 5d 20 ing trim $rest]
16e00 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e == "" } { return
16e10 20 7d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b }.. } else {
16e20 20 72 65 74 75 72 6e 20 7d 0a 09 7d 0a 20 20 20 return }..}.
16e30 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 }.. if { [re
16e40 67 65 78 70 20 7b 28 42 72 65 61 6b 70 6f 69 6e gexp {(Breakpoin
16e50 74 5c 73 5b 30 2d 39 5d 2b 2c 5c 73 2b 29 3f 28 t\s[0-9]+,\s+)?(
16e60 5c 53 2b 5c 73 2b 5c 28 5b 5e 5c 29 5d 2a 5c 29 \S+\s+\([^\)]*\)
16e70 29 5c 73 2b 61 74 5c 73 2b 28 5b 5e 3a 5d 2b 29 )\s+at\s+([^:]+)
16e80 3a 28 5b 30 2d 39 5d 2b 29 7d 20 5c 0a 09 20 20 :([0-9]+)} \..
16e90 20 20 20 20 24 61 61 20 7b 7d 20 7b 7d 20 70 72 $aa {} {} pr
16ea0 6f 63 6e 61 6d 65 20 66 69 6c 65 20 6c 69 6e 65 ocname file line
16eb0 5d 20 7d 20 7b 0a 0a 09 69 66 20 7b 20 21 5b 66 ] } {...if { ![f
16ec0 69 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c 65 ile exists $file
16ed0 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 ] } {.. set f
16ee0 75 6c 6c 66 69 6c 65 20 5b 63 70 72 6f 6a 65 63 ullfile [cprojec
16ef0 74 3a 3a 54 72 79 54 6f 46 69 6e 64 50 61 74 68 t::TryToFindPath
16f00 20 24 66 69 6c 65 5d 0a 09 20 20 20 20 69 66 20 $file].. if
16f10 7b 20 24 66 75 6c 6c 66 69 6c 65 20 21 3d 20 22 { $fullfile != "
16f20 22 20 7d 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 " } {...set file
16f30 20 24 66 75 6c 6c 66 69 6c 65 0a 09 20 20 20 20 $fullfile..
16f40 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 66 69 6c 65 }..}..if { [file
16f50 20 70 61 74 68 74 79 70 65 20 24 66 69 6c 65 5d pathtype $file]
16f60 20 65 71 20 22 72 65 6c 61 74 69 76 65 22 20 7d eq "relative" }
16f70 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 69 6e {.. if { [in
16f80 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e fo exists option
16f90 73 28 64 65 62 75 67 63 70 6c 75 73 70 6c 75 73 s(debugcplusplus
16fa0 29 5d 20 7d 20 7b 0a 09 09 73 65 74 20 65 78 65 )] } {...set exe
16fb0 63 75 74 61 62 6c 65 20 5b 6c 69 6e 64 65 78 20 cutable [lindex
16fc0 24 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 63 70 $options(debugcp
16fd0 6c 75 73 70 6c 75 73 29 20 30 5d 0a 09 09 73 65 lusplus) 0]...se
16fe0 74 20 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e t dir [file dirn
16ff0 61 6d 65 20 24 65 78 65 63 75 74 61 62 6c 65 5d ame $executable]
17000 0a 09 09 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 ...if { [file ex
17010 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 ists [file join
17020 24 64 69 72 20 24 66 69 6c 65 5d 5d 20 7d 20 7b $dir $file]] } {
17030 0a 09 09 20 20 20 20 73 65 74 20 66 69 6c 65 20 ... set file
17040 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir
17050 24 66 69 6c 65 5d 0a 09 09 7d 0a 09 20 20 20 20 $file]...}..
17060 7d 0a 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 }.. if { [inf
17070 6f 20 65 78 69 73 74 73 20 63 70 72 6f 6a 65 63 o exists cprojec
17080 74 3a 3a 70 72 6f 6a 65 63 74 5d 20 26 26 20 5c t::project] && \
17090 0a 09 09 20 20 20 20 20 5b 66 69 6c 65 20 65 78 ... [file ex
170a0 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 ists [file join
170b0 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 63 [file dirname $c
170c0 70 72 6f 6a 65 63 74 3a 3a 70 72 6f 6a 65 63 74 project::project
170d0 5d 20 24 66 69 6c 65 5d 5d 20 7d 20 7b 0a 09 09 ] $file]] } {...
170e0 73 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a set file [file j
170f0 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d oin [file dirnam
17100 65 20 24 63 70 72 6f 6a 65 63 74 3a 3a 70 72 6f e $cproject::pro
17110 6a 65 63 74 5d 20 24 66 69 6c 65 5d 0a 09 20 20 ject] $file]..
17120 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 66 69 }..}..if { [fi
17130 6c 65 20 70 61 74 68 74 79 70 65 20 24 66 69 6c le pathtype $fil
17140 65 5d 20 65 71 20 22 72 65 6c 61 74 69 76 65 22 e] eq "relative"
17150 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 } {.. foreac
17160 68 20 69 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 h i $WindowFiles
17170 4c 69 73 74 20 7b 0a 09 09 69 66 20 7b 20 5b 66 List {...if { [f
17180 69 6c 65 20 74 61 69 6c 20 24 69 5d 20 65 71 20 ile tail $i] eq
17190 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 20 20 $file } {...
171a0 73 65 74 20 66 69 6c 65 20 24 69 0a 09 09 20 20 set file $i...
171b0 20 20 62 72 65 61 6b 0a 09 09 7d 0a 09 20 20 20 break...}..
171c0 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 66 69 6c }..}..if { [fil
171d0 65 20 70 61 74 68 74 79 70 65 20 24 66 69 6c 65 e pathtype $file
171e0 5d 20 3d 3d 20 22 76 6f 6c 75 6d 65 72 65 6c 61 ] == "volumerela
171f0 74 69 76 65 22 20 7d 20 7b 0a 09 20 20 20 20 73 tive" } {.. s
17200 65 74 20 64 72 69 76 65 20 5b 73 74 72 69 6e 67 et drive [string
17210 20 74 72 69 6d 20 5b 6c 69 6e 64 65 78 20 5b 66 trim [lindex [f
17220 69 6c 65 20 73 70 6c 69 74 20 5b 70 77 64 5d 5d ile split [pwd]]
17230 20 30 5d 20 2f 5d 0a 09 20 20 20 20 73 65 74 20 0] /].. set
17240 66 69 6c 65 20 24 64 72 69 76 65 24 66 69 6c 65 file $drive$file
17250 0a 09 7d 0a 09 73 65 74 20 66 69 6c 65 20 5b 66 ..}..set file [f
17260 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 24 66 69 ilenormalize $fi
17270 6c 65 5d 0a 09 73 65 74 20 66 69 6c 65 6e 75 6d le]..set filenum
17280 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 [lsearch -exact
17290 20 24 66 69 6c 65 73 6c 69 73 74 20 24 66 69 6c $fileslist $fil
172a0 65 5d 0a 09 69 66 20 7b 20 24 66 69 6c 65 6e 75 e]..if { $filenu
172b0 6d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 m == -1 } {..
172c0 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 set err [catch
172d0 7b 4f 70 65 6e 46 69 6c 65 46 20 2d 72 61 69 73 {OpenFileF -rais
172e0 65 5f 65 72 72 6f 72 20 31 20 24 66 69 6c 65 7d e_error 1 $file}
172f0 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 errstring]..
17300 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
17310 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22 43 6f 75 .WarnWin [_ "Cou
17320 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 66 69 6c 65 ld not open file
17330 20 27 25 73 27 20 66 6f 72 20 73 74 6f 70 70 69 '%s' for stoppi
17340 6e 67 20 70 72 6f 67 72 61 6d 22 20 24 66 69 6c ng program" $fil
17350 65 5d 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 e]...return..
17360 20 7d 0a 09 20 20 20 20 73 65 74 20 66 69 6c 65 }.. set file
17370 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 num [lsearch -ex
17380 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24 act $fileslist $
17390 66 69 6c 65 5d 0a 09 7d 0a 09 52 65 63 65 69 76 file]..}..Receiv
173a0 65 46 72 6f 6d 50 72 6f 67 72 61 6d 20 22 22 20 eFromProgram ""
173b0 24 66 69 6c 65 6e 75 6d 20 24 6c 69 6e 65 20 24 $filenum $line $
173c0 70 72 6f 63 6e 61 6d 65 20 22 22 20 22 22 0a 09 procname "" ""..
173d0 72 65 74 75 72 6e 0a 0a 09 23 20 20 20 20 20 20 return...#
173e0 20 20 20 73 65 74 20 66 6f 75 6e 64 20 30 0a 09 set found 0..
173f0 23 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 # foreac
17400 68 20 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 h i $breakpoints
17410 20 7b 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 {..#
17420 20 20 73 65 74 20 62 72 65 61 6b 6e 75 6d 20 5b set breaknum [
17430 6c 69 6e 64 65 78 20 24 69 20 30 5d 0a 09 23 20 lindex $i 0]..#
17440 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
17450 6c 69 6e 65 5f 69 6e 20 5b 6c 69 6e 64 65 78 20 line_in [lindex
17460 24 69 20 32 5d 0a 09 23 20 20 20 20 20 20 20 20 $i 2]..#
17470 20 20 20 20 20 73 65 74 20 66 69 6c 65 5f 69 6e set file_in
17480 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d 0a 09 [lindex $i 1]..
17490 23 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 # if
174a0 20 7b 20 24 6c 69 6e 65 20 3d 3d 20 24 6c 69 6e { $line == $lin
174b0 65 5f 69 6e 20 26 26 20 5b 41 72 65 46 69 6c 65 e_in && [AreFile
174c0 73 45 71 75 61 6c 20 24 66 69 6c 65 20 24 66 69 sEqual $file $fi
174d0 6c 65 5f 69 6e 5d 20 7d 20 7b 0a 09 23 20 20 20 le_in] } {..#
174e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 se
174f0 74 20 66 6f 75 6e 64 20 31 0a 09 23 20 20 20 20 t found 1..#
17500 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
17510 61 6b 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 ak..#
17520 20 20 7d 0a 09 23 20 20 20 20 20 20 20 20 20 20 }..#
17530 20 20 20 23 20 43 4f 4e 44 49 54 49 4f 4e 20 69 # CONDITION i
17540 73 20 66 6f 72 67 6f 74 74 65 6e 20 62 79 20 6e s forgotten by n
17550 6f 77 0a 09 23 20 20 20 20 20 20 20 20 20 7d 0a ow..# }.
17560 09 23 20 20 20 20 20 20 20 20 20 69 66 20 7b 20 .# if {
17570 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 23 20 20 20 $found } {..#
17580 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 69 set fi
17590 6c 65 6e 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d lenum [lsearch -
175a0 65 78 61 63 74 20 24 66 69 6c 65 73 6c 69 73 74 exact $fileslist
175b0 20 24 66 69 6c 65 5d 0a 09 23 20 20 20 20 20 20 $file]..#
175c0 20 20 20 20 20 20 20 69 66 20 7b 20 24 66 69 6c if { $fil
175d0 65 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 enum == -1 } {..
175e0 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
175f0 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 set err [catch
17600 20 7b 4f 70 65 6e 46 69 6c 65 46 20 24 66 69 6c {OpenFileF $fil
17610 65 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 23 e} errstring]..#
17620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17630 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
17640 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
17650 20 20 20 20 20 20 57 61 72 6e 57 69 6e 20 22 43 WarnWin "C
17660 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 66 69 ould not open fi
17670 6c 65 20 27 24 66 69 6c 65 27 20 66 6f 72 20 73 le '$file' for s
17680 74 6f 70 70 69 6e 67 20 70 72 6f 67 72 61 6d 22 topping program"
17690 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20 20 ..#
176a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 09 return..
176b0 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
176c0 20 20 7d 0a 09 23 20 20 20 20 20 20 20 20 20 20 }..#
176d0 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65 6e set filen
176e0 75 6d 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 um [lsearch -exa
176f0 63 74 20 24 66 69 6c 65 73 6c 69 73 74 20 24 66 ct $fileslist $f
17700 69 6c 65 5d 0a 09 23 20 20 20 20 20 20 20 20 20 ile]..#
17710 20 20 20 20 7d 0a 09 23 20 20 20 20 20 20 20 20 }..#
17720 20 20 20 20 20 52 65 63 65 69 76 65 46 72 6f 6d ReceiveFrom
17730 50 72 6f 67 72 61 6d 20 24 62 72 65 61 6b 6e 75 Program $breaknu
17740 6d 20 24 66 69 6c 65 6e 75 6d 20 24 6c 69 6e 65 m $filenum $line
17750 20 24 70 72 6f 63 6e 61 6d 65 20 22 22 20 22 22 $procname "" ""
17760 0a 09 23 20 20 20 20 20 20 20 20 20 20 20 20 20 ..#
17770 72 65 74 75 72 6e 0a 09 23 20 20 20 20 20 20 20 return..#
17780 20 20 7d 20 65 6c 73 65 20 7b 0a 09 23 20 20 20 } else {..#
17790 20 20 20 20 20 20 20 20 20 20 57 61 72 6e 57 69 WarnWi
177a0 6e 20 22 50 72 6f 62 6c 65 6d 73 20 66 69 6e 64 n "Problems find
177b0 69 6e 67 20 62 72 65 61 6b 70 6f 69 6e 74 20 69 ing breakpoint i
177c0 6e 20 66 69 6c 65 20 24 66 69 6c 65 20 28 24 61 n file $file ($a
177d0 61 29 22 0a 09 23 20 20 20 20 20 20 20 20 20 7d a)"..# }
177e0 0a 09 23 20 20 20 20 20 20 20 20 20 72 65 74 75 ..# retu
177f0 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 rn. }.. if
17800 20 7b 20 5b 72 65 67 65 78 70 20 7b 5c 5b 4e 65 { [regexp {\[Ne
17810 77 20 54 68 72 65 61 64 20 5c 53 2b 20 5c 28 4c w Thread \S+ \(L
17820 57 50 20 28 5c 64 2b 29 5c 29 5c 5d 7d 20 24 61 WP (\d+)\)\]} $a
17830 61 20 7b 7d 20 70 69 64 5d 20 7d 20 7b 0a 09 6c a {} pid] } {..l
17840 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 set remoteserver
17850 20 31 20 24 70 69 64 0a 20 20 20 20 7d 0a 20 20 1 $pid. }.
17860 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b if { [regexp {
17870 50 72 6f 67 72 61 6d 20 65 78 69 74 65 64 5b 5e Program exited[^
17880 5c 6e 5d 2a 7d 20 24 61 61 20 6d 65 73 73 5d 20 \n]*} $aa mess]
17890 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 61 } {..set err [ca
178a0 74 63 68 20 7b 20 63 6c 6f 73 65 20 24 66 69 64 tch { close $fid
178b0 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 73 } errstring]..s
178c0 65 74 20 64 65 62 75 67 67 65 72 73 74 61 74 65 et debuggerstate
178d0 20 22 22 0a 09 73 65 74 20 72 65 6d 6f 74 65 73 ""..set remotes
178e0 65 72 76 65 72 54 79 70 65 20 22 22 0a 09 73 65 erverType ""..se
178f0 74 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 22 t remoteserver "
17900 22 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 7b "..if { $err } {
17910 0a 09 20 20 20 20 61 70 70 65 6e 64 20 6d 65 73 .. append mes
17920 73 20 22 20 28 24 65 72 72 73 74 72 69 6e 67 29 s " ($errstring)
17930 22 0a 09 7d 0a 09 57 61 72 6e 57 69 6e 20 24 6d "..}..WarnWin $m
17940 65 73 73 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 ess. }. if
17950 20 7b 20 5b 72 65 67 65 78 70 20 7b 50 72 6f 67 { [regexp {Prog
17960 72 61 6d 20 72 65 63 65 69 76 65 64 20 73 69 67 ram received sig
17970 6e 61 6c 7d 20 24 61 61 5d 20 7d 20 7b 0a 09 57 nal} $aa] } {..W
17980 61 72 6e 57 69 6e 20 24 61 61 0a 09 54 65 78 74 arnWin $aa..Text
17990 4f 75 74 49 6e 73 65 72 74 20 24 61 61 0a 09 72 OutInsert $aa..r
179a0 73 74 61 63 6b 20 2d 68 61 6e 64 6c 65 72 20 52 stack -handler R
179b0 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 amDebugger::Upda
179c0 74 65 47 55 49 53 74 61 63 6b 0a 09 56 69 65 77 teGUIStack..View
179d0 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 2d 66 OnlyTextOrAll -f
179e0 6f 72 63 65 5f 61 6c 6c 0a 09 72 65 74 75 72 6e orce_all..return
179f0 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
17a00 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 2a [string match "*
17a10 4e 6f 20 65 78 65 63 75 74 61 62 6c 65 20 73 70 No executable sp
17a20 65 63 69 66 69 65 64 2c 20 75 73 65 20 27 74 61 ecified, use 'ta
17a30 72 67 65 74 20 65 78 65 63 27 2e 2a 22 20 24 61 rget exec'.*" $a
17a40 61 5d 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 a] } {..WarnWin
17a50 5b 5f 20 22 45 72 72 6f 72 20 64 65 66 69 6e 69 [_ "Error defini
17a60 6e 67 20 74 68 65 20 64 65 62 75 67 67 65 64 20 ng the debugged
17a70 65 78 65 63 75 74 61 62 6c 65 2e 20 55 73 65 20 executable. Use
17a80 27 55 74 69 6c 69 74 69 65 73 2d 3e 67 64 62 20 'Utilities->gdb
17a90 6c 6f 67 27 20 66 6f 72 20 64 65 74 61 69 6c 73 log' for details
17aa0 22 5d 0a 20 20 20 20 7d 0a 20 20 20 20 54 65 78 "]. }. Tex
17ab0 74 4f 75 74 49 6e 73 65 72 74 20 24 61 61 0a 20 tOutInsert $aa.
17ac0 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 78 70 if { ![regexp
17ad0 20 7b 28 3f 69 29 5e 28 63 6f 6e 74 69 6e 75 69 {(?i)^(continui
17ae0 6e 67 29 3f 5b 2e 5c 73 5d 2a 24 7d 20 24 61 61 ng)?[.\s]*$} $aa
17af0 5d 20 7d 20 7b 0a 09 54 65 78 74 4f 75 74 52 61 ] } {..TextOutRa
17b00 69 73 65 0a 20 20 20 20 7d 0a 7d 0a 0a 23 23 23 ise. }.}..###
17b10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17b50 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 #############.#
17b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17b70 20 20 52 61 6d 44 65 62 75 67 67 65 72 20 47 55 RamDebugger GU
17b80 49 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 I.##############
17b90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17ba0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17bb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17bc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17bd0 23 23 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 ##..proc RamDebu
17be0 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 72 79 54 gger::SecondaryT
17bf0 65 78 74 48 65 6c 70 20 7b 20 77 68 61 74 20 7d extHelp { what }
17c00 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
17c10 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 text_secondary.
17c20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
17c30 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 entfile_secondar
17c40 79 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 5f y. variable _
17c50 73 65 63 6f 6e 64 74 65 78 74 68 65 6c 70 5f 61 secondtexthelp_a
17c60 66 74 65 72 0a 0a 20 20 20 20 73 77 69 74 63 68 fter.. switch
17c70 20 24 77 68 61 74 20 7b 0a 09 62 65 67 69 6e 20 $what {..begin
17c80 7b 0a 09 20 20 20 20 73 65 74 20 5f 73 65 63 6f {.. set _seco
17c90 6e 64 74 65 78 74 68 65 6c 70 5f 61 66 74 65 72 ndtexthelp_after
17ca0 20 5b 61 66 74 65 72 20 35 30 30 20 52 61 6d 44 [after 500 RamD
17cb0 65 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 ebugger::Seconda
17cc0 72 79 54 65 78 74 48 65 6c 70 20 73 68 6f 77 5d ryTextHelp show]
17cd0 0a 09 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 .. bind $text
17ce0 5f 73 65 63 6f 6e 64 61 72 79 20 3c 4c 65 61 76 _secondary <Leav
17cf0 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 e> [list RamDebu
17d00 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 72 79 54 gger::SecondaryT
17d10 65 78 74 48 65 6c 70 20 68 69 64 65 5d 0a 09 7d extHelp hide]..}
17d20 0a 09 73 68 6f 77 20 7b 0a 09 20 20 20 20 69 66 ..show {.. if
17d30 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 { ![info exists
17d40 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d text_secondary]
17d50 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 20 } { return }..
17d60 20 20 20 73 65 74 20 74 78 74 20 22 24 63 75 72 set txt "$cur
17d70 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 rentfile_seconda
17d80 72 79 5c 6e 50 72 65 73 73 20 63 65 6e 74 72 61 ry\nPress centra
17d90 6c 20 6d 6f 75 73 65 20 62 75 74 74 6f 6e 20 74 l mouse button t
17da0 6f 20 64 72 61 67 22 0a 09 20 20 20 20 69 66 20 o drag".. if
17db0 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 { [winfo exists
17dc0 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 2e $text_secondary.
17dd0 6c 5d 20 7d 20 7b 0a 09 09 24 74 65 78 74 5f 73 l] } {...$text_s
17de0 65 63 6f 6e 64 61 72 79 2e 6c 20 63 6f 6e 66 69 econdary.l confi
17df0 67 75 72 65 20 2d 74 65 78 74 20 24 74 78 74 0a gure -text $txt.
17e00 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a ..return.. }.
17e10 09 20 20 20 20 6c 61 62 65 6c 20 24 74 65 78 74 . label $text
17e20 5f 73 65 63 6f 6e 64 61 72 79 2e 6c 20 2d 74 65 _secondary.l -te
17e30 78 74 20 24 74 78 74 20 2d 6a 75 73 74 69 66 79 xt $txt -justify
17e40 20 6c 65 66 74 20 2d 62 64 20 31 20 2d 72 65 6c left -bd 1 -rel
17e50 69 65 66 20 72 69 64 67 65 20 5c 0a 09 09 2d 62 ief ridge \...-b
17e60 67 20 5b 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 g [$text_seconda
17e70 72 79 20 63 67 65 74 20 2d 62 67 5d 0a 09 20 20 ry cget -bg]..
17e80 20 20 70 6c 61 63 65 20 24 74 65 78 74 5f 73 65 place $text_se
17e90 63 6f 6e 64 61 72 79 2e 6c 20 2d 61 6e 63 68 6f condary.l -ancho
17ea0 72 20 6e 65 20 2d 72 65 6c 78 20 31 20 2d 72 65 r ne -relx 1 -re
17eb0 6c 79 20 30 0a 09 20 20 20 20 61 66 74 65 72 20 ly 0.. after
17ec0 31 30 30 30 20 5b 6c 69 73 74 20 52 61 6d 44 65 1000 [list RamDe
17ed0 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 72 bugger::Secondar
17ee0 79 54 65 78 74 48 65 6c 70 20 68 69 64 65 5d 0a yTextHelp hide].
17ef0 09 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 5f . bind $text_
17f00 73 65 63 6f 6e 64 61 72 79 20 3c 46 6f 63 75 73 secondary <Focus
17f10 4f 75 74 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 Out> [list RamDe
17f20 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 72 bugger::Secondar
17f30 79 54 65 78 74 48 65 6c 70 20 68 69 64 65 5d 0a yTextHelp hide].
17f40 09 7d 0a 09 68 69 64 65 20 7b 0a 09 20 20 20 20 .}..hide {..
17f50 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 if { [info exist
17f60 73 20 5f 73 65 63 6f 6e 64 74 65 78 74 68 65 6c s _secondtexthel
17f70 70 5f 61 66 74 65 72 5d 20 7d 20 7b 0a 09 09 61 p_after] } {...a
17f80 66 74 65 72 20 63 61 6e 63 65 6c 20 24 5f 73 65 fter cancel $_se
17f90 63 6f 6e 64 74 65 78 74 68 65 6c 70 5f 61 66 74 condtexthelp_aft
17fa0 65 72 0a 09 09 75 6e 73 65 74 20 5f 73 65 63 6f er...unset _seco
17fb0 6e 64 74 65 78 74 68 65 6c 70 5f 61 66 74 65 72 ndtexthelp_after
17fc0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 .. }.. if
17fd0 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 { [info exists t
17fe0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d ext_secondary] }
17ff0 20 7b 0a 09 09 64 65 73 74 72 6f 79 20 24 74 65 {...destroy $te
18000 78 74 5f 73 65 63 6f 6e 64 61 72 79 2e 6c 0a 09 xt_secondary.l..
18010 20 20 20 20 7d 0a 09 7d 0a 0a 20 20 20 20 7d 0a }..}.. }.
18020 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
18030 67 65 72 3a 3a 5f 73 65 63 6f 6e 64 74 65 78 74 ger::_secondtext
18040 73 61 76 65 70 6f 73 20 7b 7d 20 7b 0a 20 20 20 savepos {} {.
18050 20 76 61 72 69 61 62 6c 65 20 6d 61 69 6e 66 72 variable mainfr
18060 61 6d 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ame. variable
18070 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 65 options.. se
18080 74 20 6f 70 74 69 6f 6e 73 28 73 65 63 6f 6e 64 t options(second
18090 61 72 79 70 61 6e 65 73 29 20 22 22 0a 20 20 20 arypanes) "".
180a0 20 73 65 74 20 66 20 5b 24 6d 61 69 6e 66 72 61 set f [$mainfra
180b0 6d 65 20 67 65 74 66 72 61 6d 65 5d 0a 20 20 20 me getframe].
180c0 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 if { [winfo exi
180d0 73 74 73 20 24 66 2e 74 65 78 74 70 61 6e 65 5d sts $f.textpane]
180e0 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 69 20 } {..foreach i
180f0 5b 24 66 2e 74 65 78 74 70 61 6e 65 20 70 61 6e [$f.textpane pan
18100 65 73 5d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 es] {.. lappe
18110 6e 64 20 6f 70 74 69 6f 6e 73 28 73 65 63 6f 6e nd options(secon
18120 64 61 72 79 70 61 6e 65 73 29 20 5b 77 69 6e 66 darypanes) [winf
18130 6f 20 68 65 69 67 68 74 20 24 69 5d 0a 09 7d 0a o height $i]..}.
18140 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 }.}..proc Ra
18150 6d 44 65 62 75 67 67 65 72 3a 3a 54 6f 67 67 6c mDebugger::Toggl
18160 65 56 69 65 77 73 20 7b 7d 20 7b 0a 20 20 20 20 eViews {} {.
18170 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 variable text.
18180 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f variable text_
18190 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 secondary. va
181a0 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 riable currentfi
181b0 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 le. variable
181c0 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f currentfile_seco
181d0 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 7b 20 ndary.. if {
181e0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 ![info exists te
181f0 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d 20 xt_secondary] }
18200 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 { return }..
18210 66 6f 63 75 73 20 24 74 65 78 74 0a 20 20 20 20 focus $text.
18220 0a 20 20 20 20 73 65 74 20 6e 65 77 5f 63 75 72 . set new_cur
18230 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 rentfile_seconda
18240 72 79 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a ry $currentfile.
18250 20 20 20 20 4f 70 65 6e 46 69 6c 65 46 20 24 63 OpenFileF $c
18260 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e urrentfile_secon
18270 64 61 72 79 0a 20 20 20 20 4f 70 65 6e 46 69 6c dary. OpenFil
18280 65 53 65 63 6f 6e 64 61 72 79 20 24 6e 65 77 5f eSecondary $new_
18290 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f currentfile_seco
182a0 6e 64 61 72 79 0a 7d 0a 0a 70 72 6f 63 20 52 61 ndary.}..proc Ra
182b0 6d 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77 53 mDebugger::ViewS
182c0 65 63 6f 6e 64 54 65 78 74 20 7b 7d 20 7b 0a 20 econdText {} {.
182d0 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 69 6e variable main
182e0 66 72 61 6d 65 0a 20 20 20 20 76 61 72 69 61 62 frame. variab
182f0 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 le text. vari
18300 61 62 6c 65 20 74 65 78 74 5f 73 65 63 6f 6e 64 able text_second
18310 61 72 79 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ary. variable
18320 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 currentfile.
18330 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e variable curren
18340 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 0a tfile_secondary.
18350 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 variable opt
18360 69 6f 6e 73 0a 0a 20 20 20 20 73 65 74 20 66 20 ions.. set f
18370 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 66 [$mainframe getf
18380 72 61 6d 65 5d 0a 20 20 20 20 69 66 20 7b 20 21 rame]. if { !
18390 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 66 [winfo exists $f
183a0 2e 74 65 78 74 70 61 6e 65 5d 20 7d 20 7b 0a 0a .textpane] } {..
183b0 09 24 66 2e 66 75 6c 6c 74 65 78 74 20 63 6f 6e .$f.fulltext con
183c0 66 69 67 75 72 65 20 2d 68 65 69 67 68 74 20 35 figure -height 5
183d0 0a 09 67 72 69 64 20 70 72 6f 70 61 67 61 74 65 ..grid propagate
183e0 20 24 66 2e 66 75 6c 6c 74 65 78 74 20 30 0a 0a $f.fulltext 0..
183f0 09 70 61 6e 65 64 77 69 6e 64 6f 77 20 24 66 2e .panedwindow $f.
18400 74 65 78 74 70 61 6e 65 20 2d 6f 72 69 65 6e 74 textpane -orient
18410 20 76 65 72 74 69 63 61 6c 20 2d 62 64 20 30 0a vertical -bd 0.
18420 09 66 72 61 6d 65 20 24 66 2e 74 65 78 74 70 61 .frame $f.textpa
18430 6e 65 2e 66 0a 09 73 65 74 20 74 65 78 74 5f 73 ne.f..set text_s
18440 65 63 6f 6e 64 61 72 79 20 5b 74 65 78 74 20 24 econdary [text $
18450 66 2e 74 65 78 74 70 61 6e 65 2e 66 2e 66 75 6c f.textpane.f.ful
18460 6c 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 ltext_secondary
18470 2d 62 67 20 67 72 65 79 39 30 20 2d 73 74 61 74 -bg grey90 -stat
18480 65 20 64 69 73 61 62 6c 65 64 20 5c 0a 09 09 20 e disabled \...
18490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d -
184a0 66 6f 6e 74 20 46 69 78 65 64 46 6f 6e 74 20 2d font FixedFont -
184b0 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 highlightthickne
184c0 73 73 20 31 20 2d 62 64 20 30 20 2d 77 72 61 70 ss 1 -bd 0 -wrap
184d0 20 6e 6f 6e 65 5c 0a 09 09 20 20 20 20 20 20 20 none\...
184e0 20 20 20 20 20 20 20 20 20 2d 79 73 63 72 6f 6c -yscrol
184f0 6c 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 24 lcommand [list $
18500 66 2e 74 65 78 74 70 61 6e 65 2e 66 2e 79 73 63 f.textpane.f.ysc
18510 72 6f 6c 6c 20 73 65 74 5d 5d 0a 09 73 63 72 6f roll set]]..scro
18520 6c 6c 62 61 72 20 24 66 2e 74 65 78 74 70 61 6e llbar $f.textpan
18530 65 2e 66 2e 79 73 63 72 6f 6c 6c 20 2d 6f 72 69 e.f.yscroll -ori
18540 65 6e 74 20 76 65 72 74 69 63 61 6c 20 2d 63 6f ent vertical -co
18550 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 24 74 65 78 mmand [list $tex
18560 74 5f 73 65 63 6f 6e 64 61 72 79 20 79 76 69 65 t_secondary yvie
18570 77 5d 0a 09 62 69 6e 64 20 24 74 65 78 74 5f 73 w]..bind $text_s
18580 65 63 6f 6e 64 61 72 79 20 3c 31 3e 20 5b 6c 69 econdary <1> [li
18590 73 74 20 66 6f 63 75 73 20 25 57 5d 0a 09 62 69 st focus %W]..bi
185a0 6e 64 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 nd $text_seconda
185b0 72 79 20 3c 46 6f 63 75 73 49 6e 3e 20 5b 6c 69 ry <FocusIn> [li
185c0 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
185d0 53 65 63 6f 6e 64 61 72 79 54 65 78 74 48 65 6c SecondaryTextHel
185e0 70 20 73 68 6f 77 5d 0a 09 62 69 6e 64 20 24 74 p show]..bind $t
185f0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c 45 ext_secondary <E
18600 6e 74 65 72 3e 20 5b 6c 69 73 74 20 52 61 6d 44 nter> [list RamD
18610 65 62 75 67 67 65 72 3a 3a 53 65 63 6f 6e 64 61 ebugger::Seconda
18620 72 79 54 65 78 74 48 65 6c 70 20 62 65 67 69 6e ryTextHelp begin
18630 5d 0a 09 67 72 69 64 20 24 74 65 78 74 5f 73 65 ]..grid $text_se
18640 63 6f 6e 64 61 72 79 20 24 66 2e 74 65 78 74 70 condary $f.textp
18650 61 6e 65 2e 66 2e 79 73 63 72 6f 6c 6c 20 2d 73 ane.f.yscroll -s
18660 74 69 63 6b 79 20 6e 73 65 77 0a 0a 09 62 69 6e ticky nsew...bin
18670 64 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 d $text_secondar
18680 79 20 3c 24 3a 3a 61 6c 74 2d 4c 65 66 74 3e 20 y <$::alt-Left>
18690 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 47 6f "RamDebugger::Go
186a0 74 6f 50 72 65 76 69 6f 75 73 4e 65 78 74 49 6e toPreviousNextIn
186b0 57 69 6e 4c 69 73 74 20 70 72 65 76 20 3b 20 62 WinList prev ; b
186c0 72 65 61 6b 22 0a 09 62 69 6e 64 20 24 74 65 78 reak"..bind $tex
186d0 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c 24 3a 3a t_secondary <$::
186e0 61 6c 74 2d 52 69 67 68 74 3e 20 22 52 61 6d 44 alt-Right> "RamD
186f0 65 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 ebugger::GotoPre
18700 76 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 viousNextInWinLi
18710 73 74 20 6e 65 78 74 20 3b 20 62 72 65 61 6b 22 st next ; break"
18720 0a 09 62 69 6e 64 20 24 74 65 78 74 5f 73 65 63 ..bind $text_sec
18730 6f 6e 64 61 72 79 20 3c 43 6f 6e 74 72 6f 6c 2d ondary <Control-
18740 54 61 62 3e 20 5b 62 69 6e 64 20 24 74 65 78 74 Tab> [bind $text
18750 20 3c 43 6f 6e 74 72 6f 6c 2d 4b 65 79 50 72 65 <Control-KeyPre
18760 73 73 2d 54 61 62 3e 5d 0a 09 62 69 6e 64 20 24 ss-Tab>]..bind $
18770 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 3c text_secondary <
18780 54 61 62 3e 20 22 52 61 6d 44 65 62 75 67 67 65 Tab> "RamDebugge
18790 72 3a 3a 49 6e 64 65 6e 74 20 3b 20 62 72 65 61 r::Indent ; brea
187a0 6b 22 0a 0a 09 41 70 70 6c 79 43 6f 6c 6f 72 50 k"...ApplyColorP
187b0 72 65 66 73 20 24 74 65 78 74 5f 73 65 63 6f 6e refs $text_secon
187c0 64 61 72 79 0a 09 0a 09 67 72 69 64 20 63 6f 6c dary....grid col
187d0 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 2e umnconfigure $f.
187e0 74 65 78 74 70 61 6e 65 2e 66 20 30 20 2d 77 65 textpane.f 0 -we
187f0 69 67 68 74 20 31 0a 09 67 72 69 64 20 72 6f 77 ight 1..grid row
18800 63 6f 6e 66 69 67 75 72 65 20 24 66 2e 74 65 78 configure $f.tex
18810 74 70 61 6e 65 2e 66 20 30 20 2d 77 65 69 67 68 tpane.f 0 -weigh
18820 74 20 31 0a 0a 09 24 66 2e 74 65 78 74 70 61 6e t 1...$f.textpan
18830 65 20 61 64 64 20 24 66 2e 74 65 78 74 70 61 6e e add $f.textpan
18840 65 2e 66 0a 09 73 65 74 20 70 61 72 65 6e 74 20 e.f..set parent
18850 5b 6c 69 6e 64 65 78 20 5b 67 72 69 64 20 69 6e [lindex [grid in
18860 66 6f 20 24 66 2e 66 75 6c 6c 74 65 78 74 5d 20 fo $f.fulltext]
18870 31 5d 0a 09 67 72 69 64 20 72 65 6d 6f 76 65 20 1]..grid remove
18880 24 66 2e 66 75 6c 6c 74 65 78 74 0a 09 24 66 2e $f.fulltext..$f.
18890 74 65 78 74 70 61 6e 65 20 61 64 64 20 24 66 2e textpane add $f.
188a0 66 75 6c 6c 74 65 78 74 0a 0a 09 67 72 69 64 20 fulltext...grid
188b0 24 66 2e 74 65 78 74 70 61 6e 65 20 2d 69 6e 20 $f.textpane -in
188c0 24 70 61 72 65 6e 74 20 2d 73 74 69 63 6b 79 20 $parent -sticky
188d0 6e 73 65 77 0a 0a 09 66 6f 72 65 61 63 68 20 22 nsew...foreach "
188e0 77 65 69 67 68 74 31 20 77 65 69 67 68 74 32 22 weight1 weight2"
188f0 20 5b 6c 69 73 74 20 31 20 31 5d 20 62 72 65 61 [list 1 1] brea
18900 6b 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 k..if { [info ex
18910 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 73 65 63 ists options(sec
18920 6f 6e 64 61 72 79 70 61 6e 65 73 29 5d 20 7d 20 ondarypanes)] }
18930 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 {.. foreach "
18940 77 65 69 67 68 74 31 20 77 65 69 67 68 74 32 22 weight1 weight2"
18950 20 24 6f 70 74 69 6f 6e 73 28 73 65 63 6f 6e 64 $options(second
18960 61 72 79 70 61 6e 65 73 29 20 62 72 65 61 6b 0a arypanes) break.
18970 09 7d 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 .}..if { ![info
18980 65 78 69 73 74 73 20 63 75 72 72 65 6e 74 66 69 exists currentfi
18990 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d 20 le_secondary] }
189a0 7b 0a 09 20 20 20 20 73 65 74 20 63 75 72 72 65 {.. set curre
189b0 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
189c0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 09 7d $currentfile..}
189d0 0a 09 75 70 64 61 74 65 20 69 64 6c 65 74 61 73 ..update idletas
189e0 6b 73 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20 ks..if { [winfo
189f0 65 78 69 73 74 73 20 24 66 2e 74 65 78 74 70 61 exists $f.textpa
18a00 6e 65 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 ne] } {.. set
18a10 20 77 73 75 6d 20 5b 65 78 70 72 20 7b 64 6f 75 wsum [expr {dou
18a20 62 6c 65 28 24 77 65 69 67 68 74 31 2b 24 77 65 ble($weight1+$we
18a30 69 67 68 74 32 29 7d 5d 0a 09 20 20 20 20 73 65 ight2)}].. se
18a40 74 20 68 31 20 5b 65 78 70 72 20 7b 69 6e 74 28 t h1 [expr {int(
18a50 24 77 65 69 67 68 74 31 2a 5b 77 69 6e 66 6f 20 $weight1*[winfo
18a60 68 65 69 67 68 74 20 24 70 61 72 65 6e 74 5d 2f height $parent]/
18a70 24 77 73 75 6d 29 7d 5d 0a 09 20 20 20 20 24 66 $wsum)}].. $f
18a80 2e 74 65 78 74 70 61 6e 65 20 73 61 73 68 20 70 .textpane sash p
18a90 6c 61 63 65 20 30 20 30 20 24 68 31 0a 09 7d 0a lace 0 0 $h1..}.
18aa0 09 4f 70 65 6e 46 69 6c 65 53 65 63 6f 6e 64 61 .OpenFileSeconda
18ab0 72 79 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f ry $currentfile_
18ac0 73 65 63 6f 6e 64 61 72 79 0a 09 72 61 69 73 65 secondary..raise
18ad0 20 24 66 2e 66 75 6c 6c 74 65 78 74 0a 20 20 20 $f.fulltext.
18ae0 20 7d 20 65 6c 73 65 20 7b 0a 09 5f 73 65 63 6f } else {.._seco
18af0 6e 64 74 65 78 74 73 61 76 65 70 6f 73 0a 09 69 ndtextsavepos..i
18b00 66 20 7b 20 5b 24 74 65 78 74 20 63 67 65 74 20 f { [$text cget
18b10 2d 73 79 6e 63 74 65 78 74 77 69 64 67 65 74 5d -synctextwidget]
18b20 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 ne "" } {..
18b30 24 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 $text configure
18b40 2d 73 79 6e 63 74 65 78 74 77 69 64 67 65 74 20 -synctextwidget
18b50 22 22 0a 09 7d 0a 09 73 65 74 20 70 61 72 65 6e ""..}..set paren
18b60 74 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69 64 20 t [lindex [grid
18b70 69 6e 66 6f 20 24 66 2e 74 65 78 74 70 61 6e 65 info $f.textpane
18b80 5d 20 31 5d 0a 09 64 65 73 74 72 6f 79 20 24 66 ] 1]..destroy $f
18b90 2e 74 65 78 74 70 61 6e 65 0a 09 67 72 69 64 20 .textpane..grid
18ba0 24 66 2e 66 75 6c 6c 74 65 78 74 20 2d 69 6e 20 $f.fulltext -in
18bb0 24 70 61 72 65 6e 74 20 2d 73 74 69 63 6b 79 20 $parent -sticky
18bc0 6e 73 65 77 0a 09 67 72 69 64 20 70 72 6f 70 61 nsew..grid propa
18bd0 67 61 74 65 20 24 66 2e 66 75 6c 6c 74 65 78 74 gate $f.fulltext
18be0 20 31 0a 09 75 6e 73 65 74 20 74 65 78 74 5f 73 1..unset text_s
18bf0 65 63 6f 6e 64 61 72 79 0a 09 75 6e 73 65 74 20 econdary..unset
18c00 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f currentfile_seco
18c10 6e 64 61 72 79 0a 09 66 6f 63 75 73 20 24 74 65 ndary..focus $te
18c20 78 74 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 xt. }.}..proc
18c30 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 46 6f RamDebugger::Fo
18c40 63 75 73 53 65 63 6f 6e 64 54 65 78 74 54 6f 67 cusSecondTextTog
18c50 67 6c 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 gle {} {. var
18c60 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 iable text. v
18c70 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 63 ariable text_sec
18c80 6f 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 7b ondary.. if {
18c90 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 [info exists te
18ca0 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d 20 xt_secondary] }
18cb0 7b 0a 09 69 66 20 7b 20 5b 66 6f 63 75 73 5d 20 {..if { [focus]
18cc0 65 71 20 24 74 65 78 74 20 7d 20 7b 0a 09 20 20 eq $text } {..
18cd0 20 20 66 6f 63 75 73 20 24 74 65 78 74 5f 73 65 focus $text_se
18ce0 63 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73 65 20 condary..} else
18cf0 7b 20 66 6f 63 75 73 20 24 74 65 78 74 20 7d 0a { focus $text }.
18d00 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 66 6f 63 } else { foc
18d10 75 73 20 24 74 65 78 74 20 7d 0a 0a 7d 0a 0a 70 us $text }..}..p
18d20 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
18d30 3a 43 68 65 63 6b 4c 69 73 74 46 69 6c 65 73 50 :CheckListFilesP
18d40 61 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 ane {} {. var
18d50 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 iable options.
18d60 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 31 variable pane1
18d70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 . variable pa
18d80 6e 65 32 0a 20 20 20 20 0a 20 20 20 20 73 65 74 ne2. . set
18d90 20 70 77 20 5b 46 69 6e 64 50 61 6e 65 64 57 69 pw [FindPanedWi
18da0 6e 64 6f 77 46 72 6f 6d 50 61 6e 65 20 24 70 61 ndowFromPane $pa
18db0 6e 65 32 5d 0a 0a 20 20 20 20 69 66 20 7b 20 24 ne2].. if { $
18dc0 6f 70 74 69 6f 6e 73 28 6c 69 73 74 66 69 6c 65 options(listfile
18dd0 73 70 61 6e 65 29 20 7d 20 7b 0a 09 69 66 20 7b spane) } {..if {
18de0 20 5b 6c 73 65 61 72 63 68 20 5b 24 70 77 20 70 [lsearch [$pw p
18df0 61 6e 65 73 5d 20 24 70 61 6e 65 31 5d 20 3d 3d anes] $pane1] ==
18e00 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 24 70 77 -1 } {.. $pw
18e10 20 61 64 64 20 24 70 61 6e 65 31 20 2d 73 74 69 add $pane1 -sti
18e20 63 6b 79 20 6e 73 65 77 20 2d 62 65 66 6f 72 65 cky nsew -before
18e30 20 24 70 61 6e 65 32 20 2d 77 69 64 74 68 20 31 $pane2 -width 1
18e40 30 30 20 2d 6d 69 6e 73 69 7a 65 20 31 30 30 0a 00 -minsize 100.
18e50 09 20 20 20 20 56 69 65 77 4f 6e 6c 79 54 65 78 . ViewOnlyTex
18e60 74 4f 72 41 6c 6c 20 2d 66 6f 72 63 65 5f 61 6c tOrAll -force_al
18e70 6c 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 l..}. } elsei
18e80 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b 24 70 f { [lsearch [$p
18e90 77 20 70 61 6e 65 73 5d 20 24 70 61 6e 65 31 5d w panes] $pane1]
18ea0 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 24 70 77 20 != -1 } {..$pw
18eb0 66 6f 72 67 65 74 20 24 70 61 6e 65 31 0a 20 20 forget $pane1.
18ec0 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
18ed0 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b 56 69 ebugger::CheckVi
18ee0 65 77 56 61 72 69 61 62 6c 65 73 50 61 6e 65 20 ewVariablesPane
18ef0 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c {} {. variabl
18f00 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 e options. va
18f10 72 69 61 62 6c 65 20 70 61 6e 65 31 0a 20 20 20 riable pane1.
18f20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 32 0a variable pane2.
18f30 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e variable pan
18f40 65 33 0a 0a 20 20 20 20 73 65 74 20 70 77 20 5b e3.. set pw [
18f50 46 69 6e 64 50 61 6e 65 64 57 69 6e 64 6f 77 46 FindPanedWindowF
18f60 72 6f 6d 50 61 6e 65 20 24 70 61 6e 65 33 5d 0a romPane $pane3].
18f70 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f . if { $optio
18f80 6e 73 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 ns(viewvariables
18f90 70 61 6e 65 56 32 29 20 7d 20 7b 0a 09 69 66 20 paneV2) } {..if
18fa0 7b 20 5b 6c 73 65 61 72 63 68 20 5b 24 70 77 20 { [lsearch [$pw
18fb0 70 61 6e 65 73 5d 20 24 70 61 6e 65 33 5d 20 3d panes] $pane3] =
18fc0 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 24 70 = -1 } {.. $p
18fd0 77 20 61 64 64 20 24 70 61 6e 65 33 20 2d 73 74 w add $pane3 -st
18fe0 69 63 6b 79 20 6e 73 65 77 20 2d 61 66 74 65 72 icky nsew -after
18ff0 20 24 70 61 6e 65 32 20 2d 77 69 64 74 68 20 31 $pane2 -width 1
19000 30 30 20 2d 6d 69 6e 73 69 7a 65 20 31 30 30 0a 00 -minsize 100.
19010 09 20 20 20 20 56 69 65 77 4f 6e 6c 79 54 65 78 . ViewOnlyTex
19020 74 4f 72 41 6c 6c 20 2d 66 6f 72 63 65 5f 61 6c tOrAll -force_al
19030 6c 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 l..}. } elsei
19040 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 5b 24 70 f { [lsearch [$p
19050 77 20 70 61 6e 65 73 5d 20 24 70 61 6e 65 33 5d w panes] $pane3]
19060 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 24 70 77 20 != -1 } {..$pw
19070 66 6f 72 67 65 74 20 24 70 61 6e 65 33 0a 20 20 forget $pane3.
19080 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
19090 65 62 75 67 67 65 72 3a 3a 56 69 65 77 4f 6e 6c ebugger::ViewOnl
190a0 79 54 65 78 74 4f 72 41 6c 6c 20 7b 20 61 72 67 yTextOrAll { arg
190b0 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 s } {. variab
190c0 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a 20 20 20 le mainframe.
190d0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 variable text.
190e0 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 variable pane
190f0 32 69 6e 31 0a 20 20 20 20 76 61 72 69 61 62 6c 2in1. variabl
19100 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 e options. va
19110 72 69 61 62 6c 65 20 70 61 6e 65 31 0a 20 20 20 riable pane1.
19120 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 32 0a variable pane2.
19130 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e variable pan
19140 65 33 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 e3. variable
19150 6c 69 73 74 62 6f 78 6c 61 62 65 6c 66 72 61 6d listboxlabelfram
19160 65 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 6f e. . set o
19170 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20 2d 66 6f ptional {..{ -fo
19180 72 63 65 5f 61 6c 6c 20 22 22 20 30 20 7d 0a 09 rce_all "" 0 }..
19190 7b 20 2d 66 6f 72 63 65 5f 6f 6e 6c 79 5f 74 65 { -force_only_te
191a0 78 74 20 22 22 20 30 20 7d 0a 09 7b 20 2d 72 65 xt "" 0 }..{ -re
191b0 74 75 72 6e 5f 73 74 61 74 65 20 22 22 20 30 20 turn_state "" 0
191c0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 }. }. set
191d0 63 6f 6d 70 75 6c 73 6f 72 79 20 22 22 0a 20 20 compulsory "".
191e0 20 20 70 61 72 73 65 5f 61 72 67 73 20 24 6f 70 parse_args $op
191f0 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 6f tional $compulso
19200 72 79 20 24 61 72 67 73 0a 20 20 20 20 0a 20 20 ry $args. .
19210 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 if { $options(
19220 6c 69 73 74 66 69 6c 65 73 70 61 6e 65 29 20 7c listfilespane) |
19230 7c 20 24 6f 70 74 69 6f 6e 73 28 76 69 65 77 76 | $options(viewv
19240 61 72 69 61 62 6c 65 73 70 61 6e 65 56 32 29 20 ariablespaneV2)
19250 7d 20 7b 0a 09 73 65 74 20 76 69 65 77 5f 61 6c } {..set view_al
19260 6c 5f 73 69 6d 70 6c 65 20 30 0a 20 20 20 20 7d l_simple 0. }
19270 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 76 69 65 else {..set vie
19280 77 5f 61 6c 6c 5f 73 69 6d 70 6c 65 20 31 0a 20 w_all_simple 1.
19290 20 20 20 7d 0a 20 20 20 20 73 65 74 20 66 20 5b }. set f [
192a0 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 66 72 $mainframe getfr
192b0 61 6d 65 5d 0a 20 20 20 20 73 65 74 20 74 20 5b ame]. set t [
192c0 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 winfo toplevel $
192d0 6d 61 69 6e 66 72 61 6d 65 5d 0a 20 20 20 20 73 mainframe]. s
192e0 65 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f 70 6c et w [winfo topl
192f0 65 76 65 6c 20 24 74 65 78 74 5d 0a 20 20 20 20 evel $text].
19300 0a 20 20 20 20 69 66 20 7b 20 5b 77 69 6e 66 6f . if { [winfo
19310 20 65 78 69 73 74 73 20 24 66 2e 74 65 78 74 70 exists $f.textp
19320 61 6e 65 5d 20 7d 20 7b 0a 09 73 65 74 20 66 75 ane] } {..set fu
19330 6c 6c 74 65 78 74 20 24 66 2e 74 65 78 74 70 61 lltext $f.textpa
19340 6e 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ne. } else {.
19350 09 73 65 74 20 66 75 6c 6c 74 65 78 74 20 24 66 .set fulltext $f
19360 2e 66 75 6c 6c 74 65 78 74 0a 20 20 20 20 7d 0a .fulltext. }.
19370 0a 20 20 20 20 69 66 20 7b 20 24 72 65 74 75 72 . if { $retur
19380 6e 5f 73 74 61 74 65 20 7d 20 7b 0a 09 69 66 20 n_state } {..if
19390 7b 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69 64 20 { [lindex [grid
193a0 69 6e 66 6f 20 24 66 75 6c 6c 74 65 78 74 5d 20 info $fulltext]
193b0 31 5d 20 21 3d 20 24 66 20 7d 20 7b 0a 09 20 20 1] != $f } {..
193c0 20 20 72 65 74 75 72 6e 20 61 6c 6c 0a 09 7d 20 return all..}
193d0 65 6c 73 65 20 7b 0a 09 20 20 20 20 72 65 74 75 else {.. retu
193e0 72 6e 20 6f 6e 6c 79 5f 74 65 78 74 0a 09 7d 0a rn only_text..}.
193f0 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 }. if { $
19400 66 6f 72 63 65 5f 61 6c 6c 20 26 26 20 5b 6c 69 force_all && [li
19410 6e 64 65 78 20 5b 67 72 69 64 20 69 6e 66 6f 20 ndex [grid info
19420 24 66 75 6c 6c 74 65 78 74 5d 20 31 5d 20 21 3d $fulltext] 1] !=
19430 20 24 66 20 7d 20 7b 0a 09 72 65 74 75 72 6e 0a $f } {..return.
19440 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 }. if { $
19450 66 6f 72 63 65 5f 6f 6e 6c 79 5f 74 65 78 74 20 force_only_text
19460 26 26 20 5b 6c 69 6e 64 65 78 20 5b 67 72 69 64 && [lindex [grid
19470 20 69 6e 66 6f 20 24 66 75 6c 6c 74 65 78 74 5d info $fulltext]
19480 20 31 5d 20 3d 3d 20 24 66 20 7d 20 7b 0a 09 72 1] == $f } {..r
19490 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 eturn. }.
194a0 73 65 74 20 64 65 6c 74 61 20 5b 65 78 70 72 20 set delta [expr
194b0 7b 5b 24 66 2e 70 77 20 63 67 65 74 20 2d 73 61 {[$f.pw cget -sa
194c0 73 68 77 69 64 74 68 5d 2b 32 2a 5b 24 66 2e 70 shwidth]+2*[$f.p
194d0 77 20 63 67 65 74 20 2d 73 61 73 68 70 61 64 5d w cget -sashpad]
194e0 7d 5d 0a 20 20 20 20 73 65 74 20 64 65 6c 74 61 }]. set delta
194f0 5f 65 78 74 20 5b 65 78 70 72 20 7b 32 2a 5b 24 _ext [expr {2*[$
19500 66 2e 70 77 20 63 67 65 74 20 2d 62 6f 72 64 65 f.pw cget -borde
19510 72 77 69 64 74 68 5d 2b 34 7d 5d 0a 0a 20 20 20 rwidth]+4}]..
19520 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d 61 69 set geomkey mai
19530 6e 67 65 6f 6d 65 74 72 79 5f 24 6f 70 74 69 6f ngeometry_$optio
19540 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f ns(ViewOnlyTextO
19550 72 41 6c 6c 29 0a 20 20 20 20 69 66 20 7b 20 24 rAll). if { $
19560 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 ::tcl_platform(p
19570 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 6e latform) eq "win
19580 64 6f 77 73 22 20 26 26 20 5b 77 6d 20 73 74 61 dows" && [wm sta
19590 74 65 20 24 77 5d 20 65 71 20 22 7a 6f 6f 6d 65 te $w] eq "zoome
195a0 64 22 20 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d d" } {..set zoom
195b0 65 64 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 69 ed 1. } elsei
195c0 66 20 7b 20 21 5b 63 61 74 63 68 20 7b 20 77 6d f { ![catch { wm
195d0 20 61 74 74 72 69 62 75 74 65 73 20 24 77 20 2d attributes $w -
195e0 7a 6f 6f 6d 65 64 20 7d 20 72 65 74 5d 20 26 26 zoomed } ret] &&
195f0 20 24 72 65 74 20 7d 20 7b 0a 09 73 65 74 20 7a $ret } {..set z
19600 6f 6f 6d 65 64 20 31 0a 20 20 20 20 7d 20 65 6c oomed 1. } el
19610 73 65 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65 64 se {..set zoomed
19620 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 0. }. if
19630 7b 20 24 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09 73 { $zoomed } {..s
19640 65 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d et options($geom
19650 6b 65 79 29 20 7a 6f 6f 6d 65 64 0a 20 20 20 20 key) zoomed.
19660 7d 20 65 6c 73 65 69 66 20 7b 20 5b 77 6d 20 73 } elseif { [wm s
19670 74 61 74 65 20 24 77 5d 20 65 71 20 22 6e 6f 72 tate $w] eq "nor
19680 6d 61 6c 22 20 26 26 20 5b 77 69 6e 66 6f 20 77 mal" && [winfo w
19690 69 64 74 68 20 24 77 5d 20 3e 20 31 20 7d 20 7b idth $w] > 1 } {
196a0 0a 09 72 65 67 65 78 70 20 7b 28 5c 64 2b 29 78 ..regexp {(\d+)x
196b0 28 5c 64 2b 29 28 5b 2d 2b 5d 29 28 5b 2d 5c 64 (\d+)([-+])([-\d
196c0 5d 5b 5c 64 5d 2a 29 28 5b 2d 2b 5d 29 3f 28 5b ][\d]*)([-+])?([
196d0 2d 5c 64 5d 2b 29 7d 20 5b 63 75 3a 3a 67 69 76 -\d]+)} [cu::giv
196e0 65 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 e_window_geometr
196f0 79 20 24 77 5d 20 5c 0a 09 20 20 20 20 7b 7d 20 y $w] \.. {}
19700 77 69 64 74 68 20 68 65 69 67 68 74 20 73 69 67 width height sig
19710 6e 5f 78 20 78 20 73 69 67 6e 5f 79 20 79 0a 09 n_x x sign_y y..
19720 69 66 20 7b 20 24 73 69 67 6e 5f 78 20 65 71 20 if { $sign_x eq
19730 22 2d 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 "-" } {.. set
19740 20 78 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f x [expr {[winfo
19750 20 73 63 72 65 65 6e 77 69 64 74 68 20 24 74 65 screenwidth $te
19760 78 74 5d 2d 24 78 7d 5d 0a 09 7d 0a 09 69 66 20 xt]-$x}]..}..if
19770 7b 20 24 73 69 67 6e 5f 79 20 65 71 20 22 2d 22 { $sign_y eq "-"
19780 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 79 20 } {.. set y
19790 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 73 63 [expr {[winfo sc
197a0 72 65 65 6e 68 65 69 67 68 74 20 24 74 65 78 74 reenheight $text
197b0 5d 2d 24 79 7d 5d 0a 09 7d 0a 09 69 66 20 7b 20 ]-$y}]..}..if {
197c0 24 78 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74 $x < -20 } { set
197d0 20 78 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24 x -20 }..if { $
197e0 79 20 3c 20 2d 32 30 20 7d 20 7b 20 73 65 74 20 y < -20 } { set
197f0 79 20 2d 32 30 20 7d 0a 09 69 66 20 7b 20 24 78 y -20 }..if { $x
19800 20 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e > [winfo screen
19810 77 69 64 74 68 20 24 74 65 78 74 5d 2d 32 30 20 width $text]-20
19820 7d 20 7b 20 73 65 74 20 78 20 5b 65 78 70 72 20 } { set x [expr
19830 7b 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 {[winfo screenwi
19840 64 74 68 20 24 74 65 78 74 5d 2d 32 30 7d 5d 20 dth $text]-20}]
19850 7d 0a 09 69 66 20 7b 20 24 79 20 3e 20 5b 77 69 }..if { $y > [wi
19860 6e 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 nfo screenheight
19870 20 24 74 65 78 74 5d 2d 32 30 20 7d 20 7b 20 73 $text]-20 } { s
19880 65 74 20 79 20 5b 65 78 70 72 20 7b 5b 77 69 6e et y [expr {[win
19890 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 20 fo screenheight
198a0 24 74 65 78 74 5d 2d 32 30 7d 5d 20 7d 0a 09 73 $text]-20}] }..s
198b0 65 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d et options($geom
198c0 6b 65 79 29 20 24 7b 77 69 64 74 68 7d 78 24 68 key) ${width}x$h
198d0 65 69 67 68 74 2b 24 78 2b 24 79 0a 20 20 20 20 eight+$x+$y.
198e0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e }.. if { [lin
198f0 64 65 78 20 5b 67 72 69 64 20 69 6e 66 6f 20 24 dex [grid info $
19900 66 75 6c 6c 74 65 78 74 5d 20 31 5d 20 21 3d 20 fulltext] 1] !=
19910 24 66 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 $f } {..foreach
19920 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 6f i [array names o
19930 70 74 69 6f 6e 73 20 70 61 6e 65 77 65 69 67 68 ptions paneweigh
19940 74 73 2c 2a 5d 20 7b 0a 09 20 20 20 20 72 65 67 ts,*] {.. reg
19950 65 78 70 20 7b 70 61 6e 65 77 65 69 67 68 74 73 exp {paneweights
19960 2c 28 2e 2a 29 2c 28 2e 2a 29 7d 20 24 69 20 7b ,(.*),(.*)} $i {
19970 7d 20 6f 72 69 65 6e 74 20 70 61 6e 65 64 77 0a } orient panedw.
19980 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 . set options
19990 28 24 69 29 20 22 22 0a 09 20 20 20 20 69 66 20 ($i) "".. if
199a0 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 { [winfo exists
199b0 24 70 61 6e 65 64 77 5d 20 7d 20 7b 0a 09 09 73 $panedw] } {...s
199c0 65 74 20 69 64 78 20 30 0a 09 09 73 65 74 20 73 et idx 0...set s
199d0 75 6d 20 30 0a 09 09 73 65 74 20 72 65 73 20 22 um 0...set res "
199e0 22 0a 09 09 66 6f 72 65 61 63 68 20 70 61 6e 65 "...foreach pane
199f0 20 5b 24 70 61 6e 65 64 77 20 70 61 6e 65 73 5d [$panedw panes]
19a00 20 7b 0a 09 09 20 20 20 20 73 77 69 74 63 68 20 {... switch
19a10 24 6f 72 69 65 6e 74 20 7b 0a 09 09 20 20 20 20 $orient {...
19a20 20 20 20 20 68 20 7b 20 6c 61 70 70 65 6e 64 20 h { lappend
19a30 72 65 73 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 res [winfo width
19a40 20 24 70 61 6e 65 5d 20 7d 0a 09 09 20 20 20 20 $pane] }...
19a50 20 20 20 20 76 20 7b 20 6c 61 70 70 65 6e 64 20 v { lappend
19a60 72 65 73 20 5b 77 69 6e 66 6f 20 68 65 69 67 68 res [winfo heigh
19a70 74 20 24 70 61 6e 65 5d 20 7d 0a 09 09 20 20 20 t $pane] }...
19a80 20 7d 0a 09 09 20 20 20 20 69 6e 63 72 20 69 64 }... incr id
19a90 78 0a 09 09 20 20 20 20 73 65 74 20 73 75 6d 20 x... set sum
19aa0 5b 65 78 70 72 20 7b 24 73 75 6d 2b 5b 6c 69 6e [expr {$sum+[lin
19ab0 64 65 78 20 24 72 65 73 20 65 6e 64 5d 7d 5d 0a dex $res end]}].
19ac0 09 09 7d 0a 09 09 69 66 20 7b 20 24 73 75 6d 20 ..}...if { $sum
19ad0 3e 20 24 69 64 78 20 7d 20 7b 20 73 65 74 20 6f > $idx } { set o
19ae0 70 74 69 6f 6e 73 28 24 69 29 20 24 72 65 73 20 ptions($i) $res
19af0 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 67 72 69 }.. }..}..gri
19b00 64 20 72 65 6d 6f 76 65 20 24 66 2e 70 77 0a 09 d remove $f.pw..
19b10 67 72 69 64 20 24 66 75 6c 6c 74 65 78 74 20 2d grid $fulltext -
19b20 69 6e 20 24 66 20 2d 73 74 69 63 6b 79 20 6e 73 in $f -sticky ns
19b30 65 77 0a 0a 09 67 72 69 64 20 72 6f 77 63 6f 6e ew...grid rowcon
19b40 66 20 24 66 20 30 20 2d 77 65 69 67 68 74 20 31 f $f 0 -weight 1
19b50 0a 09 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e ..grid columncon
19b60 66 20 24 66 20 30 20 2d 77 65 69 67 68 74 20 31 f $f 0 -weight 1
19b70 0a 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 ...if { [lsearch
19b80 20 5b 24 66 2e 70 77 20 70 61 6e 65 73 5d 20 24 [$f.pw panes] $
19b90 70 61 6e 65 31 5d 20 21 3d 20 2d 31 20 7d 20 7b pane1] != -1 } {
19ba0 0a 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31 .. set wpane1
19bb0 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70 [winfo width $p
19bc0 61 6e 65 31 5d 0a 09 20 20 20 20 73 65 74 20 78 ane1].. set x
19bd0 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 78 [expr {[winfo x
19be0 20 24 74 5d 2b 24 77 70 61 6e 65 31 2b 24 64 65 $t]+$wpane1+$de
19bf0 6c 74 61 7d 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a lta}]..} else {.
19c00 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31 20 . set wpane1
19c10 30 0a 09 20 20 20 20 73 65 74 20 78 20 5b 77 69 0.. set x [wi
19c20 6e 66 6f 20 78 20 24 74 5d 0a 09 7d 0a 09 69 66 nfo x $t]..}..if
19c30 20 7b 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73 69 { !$view_all_si
19c40 6d 70 6c 65 20 7d 20 7b 0a 09 20 20 20 20 63 75 mple } {.. cu
19c50 3a 3a 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f ::set_window_geo
19c60 6d 65 74 72 79 20 24 74 20 5b 77 69 6e 66 6f 20 metry $t [winfo
19c70 77 69 64 74 68 20 24 66 75 6c 6c 74 65 78 74 5d width $fulltext]
19c80 78 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 x[winfo height $
19c90 74 5d 2b 24 78 2b 5b 77 69 6e 66 6f 20 79 20 24 t]+$x+[winfo y $
19ca0 74 5d 0a 09 7d 0a 09 73 65 74 20 6f 70 74 69 6f t]..}..set optio
19cb0 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f ns(ViewOnlyTextO
19cc0 72 41 6c 6c 29 20 4f 6e 6c 79 54 65 78 74 0a 20 rAll) OnlyText.
19cd0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 } else {..set
19ce0 20 77 69 64 74 68 20 5b 77 69 6e 66 6f 20 77 69 width [winfo wi
19cf0 64 74 68 20 24 66 75 6c 6c 74 65 78 74 5d 0a 09 dth $fulltext]..
19d00 0a 09 67 72 69 64 20 24 66 2e 70 77 0a 09 67 72 ..grid $f.pw..gr
19d10 69 64 20 24 66 75 6c 6c 74 65 78 74 20 2d 69 6e id $fulltext -in
19d20 20 24 70 61 6e 65 32 69 6e 31 20 2d 73 74 69 63 $pane2in1 -stic
19d30 6b 79 20 6e 73 65 77 0a 09 0a 09 73 65 74 20 77 ky nsew....set w
19d40 70 61 6e 65 33 20 5b 77 69 6e 66 6f 20 77 69 64 pane3 [winfo wid
19d50 74 68 20 24 70 61 6e 65 33 5d 0a 09 69 66 20 7b th $pane3]..if {
19d60 20 24 77 70 61 6e 65 33 20 3c 3d 20 31 20 7d 20 $wpane3 <= 1 }
19d70 7b 0a 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 {.. set wpane
19d80 33 20 5b 77 69 6e 66 6f 20 72 65 71 77 69 64 74 3 [winfo reqwidt
19d90 68 20 24 70 61 6e 65 33 5d 0a 09 7d 0a 09 69 6e h $pane3]..}..in
19da0 63 72 20 77 69 64 74 68 20 24 77 70 61 6e 65 33 cr width $wpane3
19db0 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 ..if { [lsearch
19dc0 5b 24 66 2e 70 77 20 70 61 6e 65 73 5d 20 24 70 [$f.pw panes] $p
19dd0 61 6e 65 31 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a ane1] != -1 } {.
19de0 09 20 20 20 20 73 65 74 20 77 70 61 6e 65 31 20 . set wpane1
19df0 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70 61 [winfo width $pa
19e00 6e 65 31 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 ne1].. if { $
19e10 77 70 61 6e 65 31 20 3c 3d 20 31 20 7d 20 7b 0a wpane1 <= 1 } {.
19e20 09 09 73 65 74 20 77 70 61 6e 65 31 20 5b 77 69 ..set wpane1 [wi
19e30 6e 66 6f 20 72 65 71 77 69 64 74 68 20 24 70 61 nfo reqwidth $pa
19e40 6e 65 31 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 ne1].. }..
19e50 20 69 6e 63 72 20 77 69 64 74 68 20 24 77 70 61 incr width $wpa
19e60 6e 65 31 0a 09 20 20 20 20 69 6e 63 72 20 77 69 ne1.. incr wi
19e70 64 74 68 20 24 64 65 6c 74 61 0a 09 20 20 20 20 dth $delta..
19e80 73 65 74 20 78 20 5b 65 78 70 72 20 7b 5b 77 69 set x [expr {[wi
19e90 6e 66 6f 20 78 20 24 74 5d 2d 24 64 65 6c 74 61 nfo x $t]-$delta
19ea0 2d 24 77 70 61 6e 65 31 7d 5d 0a 09 7d 20 65 6c -$wpane1}]..} el
19eb0 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 77 70 se {.. set wp
19ec0 61 6e 65 31 20 30 0a 09 20 20 20 20 73 65 74 20 ane1 0.. set
19ed0 78 20 5b 77 69 6e 66 6f 20 78 20 24 74 5d 0a 09 x [winfo x $t]..
19ee0 7d 0a 09 0a 09 69 6e 63 72 20 77 69 64 74 68 20 }....incr width
19ef0 5b 65 78 70 72 20 7b 24 64 65 6c 74 61 2b 24 64 [expr {$delta+$d
19f00 65 6c 74 61 5f 65 78 74 7d 5d 0a 09 69 66 20 7b elta_ext}]..if {
19f10 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73 69 6d 70 !$view_all_simp
19f20 6c 65 20 7d 20 7b 0a 09 20 20 20 20 63 75 3a 3a le } {.. cu::
19f30 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 set_window_geome
19f40 74 72 79 20 24 74 20 24 7b 77 69 64 74 68 7d 78 try $t ${width}x
19f50 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 74 [winfo height $t
19f60 5d 2b 24 78 2b 5b 77 69 6e 66 6f 20 79 20 24 74 ]+$x+[winfo y $t
19f70 5d 0a 09 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e ]..}..set option
19f80 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 s(ViewOnlyTextOr
19f90 41 6c 6c 29 20 41 6c 6c 0a 20 20 20 20 7d 0a 20 All) All. }.
19fa0 20 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 20 6d set geomkey m
19fb0 61 69 6e 67 65 6f 6d 65 74 72 79 5f 24 6f 70 74 aingeometry_$opt
19fc0 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 ions(ViewOnlyTex
19fd0 74 4f 72 41 6c 6c 29 0a 20 20 20 20 69 66 20 7b tOrAll). if {
19fe0 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 [info exists op
19ff0 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 5d tions($geomkey)]
1a000 20 26 26 20 21 24 76 69 65 77 5f 61 6c 6c 5f 73 && !$view_all_s
1a010 69 6d 70 6c 65 20 7d 20 7b 0a 09 69 66 20 7b 20 imple } {..if {
1a020 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 $options($geomke
1a030 79 29 20 65 71 20 22 7a 6f 6f 6d 65 64 22 20 7d y) eq "zoomed" }
1a040 20 7b 0a 09 20 20 20 20 63 75 3a 3a 73 65 74 5f {.. cu::set_
1a050 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 20 window_geometry
1a060 24 77 20 38 30 30 78 36 30 30 2b 30 2b 30 0a 09 $w 800x600+0+0..
1a070 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f if { $::tcl_
1a080 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 platform(platfor
1a090 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 m) eq "windows"
1a0a0 7d 20 7b 0a 09 09 77 6d 20 73 74 61 74 65 20 24 } {...wm state $
1a0b0 77 20 7a 6f 6f 6d 65 64 0a 09 20 20 20 20 7d 20 w zoomed.. }
1a0c0 65 6c 73 65 20 7b 0a 09 09 63 61 74 63 68 20 7b else {...catch {
1a0d0 20 77 6d 20 61 74 74 72 69 62 75 74 65 73 20 24 wm attributes $
1a0e0 77 20 2d 7a 6f 6f 6d 65 64 20 31 20 7d 0a 09 20 w -zoomed 1 }..
1a0f0 20 20 20 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 }..} else {..
1a100 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 79 20 wm geometry
1a110 24 77 20 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f $w $options($geo
1a120 6d 6b 65 79 29 0a 09 20 20 20 20 69 66 20 7b 20 mkey).. if {
1a130 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
1a140 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 platform) eq "wi
1a150 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 09 77 6d 20 ndows" } {...wm
1a160 73 74 61 74 65 20 24 77 20 6e 6f 72 6d 61 6c 0a state $w normal.
1a170 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
1a180 63 61 74 63 68 20 7b 20 77 6d 20 61 74 74 72 69 catch { wm attri
1a190 62 75 74 65 73 20 24 77 20 2d 7a 6f 6f 6d 65 64 butes $w -zoomed
1a1a0 20 30 20 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 0 }.. }..}.
1a1b0 20 20 20 7d 0a 23 20 20 20 20 20 69 66 20 7b 20 }.# if {
1a1c0 5b 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c [[winfo toplevel
1a1d0 20 24 74 5d 20 63 67 65 74 20 2d 75 73 65 5d 20 $t] cget -use]
1a1e0 3d 3d 20 22 22 20 7d 20 7b 0a 23 20 20 20 20 20 == "" } {.#
1a1f0 20 20 20 20 77 6d 20 77 69 74 68 64 72 61 77 20 wm withdraw
1a200 24 74 0a 23 20 20 20 20 20 20 20 20 20 75 70 64 $t.# upd
1a210 61 74 65 0a 23 20 20 20 20 20 20 20 20 20 61 66 ate.# af
1a220 74 65 72 20 30 20 77 6d 20 64 65 69 63 6f 6e 69 ter 0 wm deiconi
1a230 66 79 20 24 74 0a 23 20 20 20 20 20 20 20 20 20 fy $t.#
1a240 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 if { [info exist
1a250 73 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b s options($geomk
1a260 65 79 29 5d 20 26 26 20 24 6f 70 74 69 6f 6e 73 ey)] && $options
1a270 28 24 67 65 6f 6d 6b 65 79 29 20 3d 3d 20 22 7a ($geomkey) == "z
1a280 6f 6f 6d 65 64 22 20 7d 20 7b 0a 23 20 20 20 20 oomed" } {.#
1a290 20 20 20 20 20 20 20 20 20 77 6d 20 73 74 61 74 wm stat
1a2a0 65 20 24 77 20 7a 6f 6f 6d 65 64 0a 23 20 20 20 e $w zoomed.#
1a2b0 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 7d 0a }.# }.
1a2c0 7d 0a 0a 23 6f 70 74 69 6f 6e 20 61 64 64 20 2a }..#option add *
1a2d0 50 61 6e 65 64 77 69 6e 64 6f 77 2e 53 74 72 65 Panedwindow.Stre
1a2e0 74 63 68 20 61 6c 77 61 79 73 0a 0a 70 72 6f 63 tch always..proc
1a2f0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 RamDebugger::Re
1a300 73 69 7a 65 50 61 6e 65 64 57 69 6e 64 6f 77 20 sizePanedWindow
1a310 7b 20 77 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 { w } {. vari
1a320 61 62 6c 65 20 72 65 73 69 7a 65 5f 70 61 6e 65 able resize_pane
1a330 64 77 69 6e 64 6f 77 5f 69 64 0a 20 20 20 20 69 dwindow_id. i
1a340 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
1a350 20 72 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e resize_panedwin
1a360 64 6f 77 5f 69 64 5d 20 7d 20 7b 0a 09 61 66 74 dow_id] } {..aft
1a370 65 72 20 63 61 6e 63 65 6c 20 24 72 65 73 69 7a er cancel $resiz
1a380 65 5f 70 61 6e 65 64 77 69 6e 64 6f 77 5f 69 64 e_panedwindow_id
1a390 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 72 . }. set r
1a3a0 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e 64 6f esize_panedwindo
1a3b0 77 5f 69 64 20 5b 61 66 74 65 72 20 69 64 6c 65 w_id [after idle
1a3c0 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 61 \.. [list Ra
1a3d0 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 73 69 7a mDebugger::Resiz
1a3e0 65 50 61 6e 65 64 57 69 6e 64 6f 77 44 6f 20 24 ePanedWindowDo $
1a3f0 77 5d 5d 0a 7d 0a 70 72 6f 63 20 52 61 6d 44 65 w]].}.proc RamDe
1a400 62 75 67 67 65 72 3a 3a 52 65 73 69 7a 65 50 61 bugger::ResizePa
1a410 6e 65 64 57 69 6e 64 6f 77 44 6f 20 7b 20 77 20 nedWindowDo { w
1a420 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
1a430 20 72 65 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e resize_panedwin
1a440 64 6f 77 5f 69 64 0a 0a 20 20 20 20 75 6e 73 65 dow_id.. unse
1a450 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 t -nocomplain re
1a460 73 69 7a 65 5f 70 61 6e 65 64 77 69 6e 64 6f 77 size_panedwindow
1a470 5f 69 64 0a 0a 20 20 20 20 73 77 69 74 63 68 20 _id.. switch
1a480 5b 24 77 20 63 67 65 74 20 2d 6f 72 69 65 6e 74 [$w cget -orient
1a490 5d 20 7b 0a 09 68 6f 72 69 7a 6f 6e 74 61 6c 20 ] {..horizontal
1a4a0 7b 20 73 65 74 20 4c 45 4e 20 77 69 64 74 68 20 { set LEN width
1a4b0 7d 0a 09 76 65 72 74 69 63 61 6c 20 7b 20 73 65 }..vertical { se
1a4c0 74 20 4c 45 4e 20 68 65 69 67 68 74 20 7d 0a 20 t LEN height }.
1a4d0 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6c 65 6e }. set len
1a4e0 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 0. foreach i
1a4f0 20 5b 24 77 20 70 61 6e 65 73 5d 20 7b 0a 09 69 [$w panes] {..i
1a500 66 20 7b 20 5b 24 77 20 70 61 6e 65 63 67 65 74 f { [$w panecget
1a510 20 24 69 20 2d 24 4c 45 4e 5d 20 6e 65 20 22 22 $i -$LEN] ne ""
1a520 20 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 20 6c } {.. incr l
1a530 65 6e 20 5b 24 77 20 70 61 6e 65 63 67 65 74 20 en [$w panecget
1a540 24 69 20 2d 24 4c 45 4e 5d 0a 09 7d 20 65 6c 73 $i -$LEN]..} els
1a550 65 20 7b 20 69 6e 63 72 20 6c 65 6e 20 5b 77 69 e { incr len [wi
1a560 6e 66 6f 20 72 65 71 24 4c 45 4e 20 24 69 5d 20 nfo req$LEN $i]
1a570 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 }. }. set
1a580 64 65 6c 74 61 20 5b 65 78 70 72 20 7b 5b 77 69 delta [expr {[wi
1a590 6e 66 6f 20 24 4c 45 4e 20 24 77 5d 2d 24 6c 65 nfo $LEN $w]-$le
1a5a0 6e 7d 5d 0a 0a 20 20 20 20 73 65 74 20 73 70 61 n}].. set spa
1a5b0 64 20 5b 24 77 20 63 67 65 74 20 2d 73 61 73 68 d [$w cget -sash
1a5c0 70 61 64 5d 0a 20 20 20 20 73 65 74 20 73 77 69 pad]. set swi
1a5d0 64 74 68 20 5b 24 77 20 63 67 65 74 20 2d 73 61 dth [$w cget -sa
1a5e0 73 68 77 69 64 74 68 5d 0a 20 20 20 20 73 65 74 shwidth]. set
1a5f0 20 74 6c 65 6e 20 30 0a 20 20 20 20 66 6f 72 20 tlen 0. for
1a600 7b 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24 69 { set i 0 } { $i
1a610 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 5b 24 77 20 < [llength [$w
1a620 70 61 6e 65 73 5d 5d 20 7d 20 7b 20 69 6e 63 72 panes]] } { incr
1a630 20 69 20 7d 20 7b 0a 09 73 65 74 20 70 61 6e 65 i } {..set pane
1a640 20 5b 6c 69 6e 64 65 78 20 5b 24 77 20 70 61 6e [lindex [$w pan
1a650 65 73 5d 20 24 69 5d 0a 09 69 66 20 7b 20 5b 24 es] $i]..if { [$
1a660 77 20 70 61 6e 65 63 67 65 74 20 24 70 61 6e 65 w panecget $pane
1a670 20 2d 24 4c 45 4e 5d 20 6e 65 20 22 22 20 7d 20 -$LEN] ne "" }
1a680 7b 0a 09 20 20 20 20 73 65 74 20 6c 20 5b 24 77 {.. set l [$w
1a690 20 70 61 6e 65 63 67 65 74 20 24 70 61 6e 65 20 panecget $pane
1a6a0 2d 24 4c 45 4e 5d 0a 09 7d 20 65 6c 73 65 20 7b -$LEN]..} else {
1a6b0 20 73 65 74 20 6c 20 5b 77 69 6e 66 6f 20 72 65 set l [winfo re
1a6c0 71 24 4c 45 4e 20 24 70 61 6e 65 5d 20 7d 0a 09 q$LEN $pane] }..
1a6d0 69 6e 63 72 20 74 6c 65 6e 20 5b 65 78 70 72 20 incr tlen [expr
1a6e0 7b 24 6c 2b 24 73 70 61 64 2b 69 6e 74 28 24 64 {$l+$spad+int($d
1a6f0 65 6c 74 61 2a 24 6c 2f 24 6c 65 6e 2b 2e 35 29 elta*$l/$len+.5)
1a700 7d 5d 0a 09 69 66 20 7b 20 24 69 20 3c 20 5b 6c }]..if { $i < [l
1a710 6c 65 6e 67 74 68 20 5b 24 77 20 70 61 6e 65 73 length [$w panes
1a720 5d 5d 2d 31 20 7d 20 7b 0a 09 20 20 20 20 24 77 ]]-1 } {.. $w
1a730 20 73 61 73 68 20 70 6c 61 63 65 20 24 69 20 24 sash place $i $
1a740 74 6c 65 6e 20 24 74 6c 65 6e 0a 09 7d 0a 09 69 tlen $tlen..}..i
1a750 6e 63 72 20 74 6c 65 6e 20 5b 65 78 70 72 20 7b ncr tlen [expr {
1a760 24 73 77 69 64 74 68 2b 24 73 70 61 64 7d 5d 0a $swidth+$spad}].
1a770 20 20 20 20 7d 0a 7d 0a 0a 23 20 6f 72 69 65 6e }.}..# orien
1a780 74 20 6d 75 73 74 20 62 65 3a 20 68 20 6f 72 20 t must be: h or
1a790 76 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 v.proc RamDebugg
1a7a0 65 72 3a 3a 4d 61 6e 61 67 65 50 61 6e 65 73 20 er::ManagePanes
1a7b0 7b 20 70 61 6e 65 64 77 20 6f 72 69 65 6e 74 20 { panedw orient
1a7c0 64 65 66 61 75 6c 74 20 7d 20 7b 0a 20 20 20 20 default } {.
1a7d0 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
1a7e0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 . variable op
1a7f0 74 69 6f 6e 73 69 6e 69 74 69 61 6c 0a 0a 20 20 tionsinitial..
1a800 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 69 6e 69 set optionsini
1a810 74 69 61 6c 28 24 6f 72 69 65 6e 74 2c 24 70 61 tial($orient,$pa
1a820 6e 65 64 77 29 20 24 64 65 66 61 75 6c 74 0a 0a nedw) $default..
1a830 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 if { [info e
1a840 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 70 61 xists options(pa
1a850 6e 65 77 65 69 67 68 74 73 2c 24 6f 72 69 65 6e neweights,$orien
1a860 74 2c 24 70 61 6e 65 64 77 29 5d 20 26 26 20 5c t,$panedw)] && \
1a870 0a 09 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 .. $options(
1a880 70 61 6e 65 77 65 69 67 68 74 73 2c 24 6f 72 69 paneweights,$ori
1a890 65 6e 74 2c 24 70 61 6e 65 64 77 29 20 21 3d 20 ent,$panedw) !=
1a8a0 22 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 74 20 "" } {..set ret
1a8b0 24 6f 70 74 69 6f 6e 73 28 70 61 6e 65 77 65 69 $options(panewei
1a8c0 67 68 74 73 2c 24 6f 72 69 65 6e 74 2c 24 70 61 ghts,$orient,$pa
1a8d0 6e 65 64 77 29 0a 20 20 20 20 7d 20 65 6c 73 65 nedw). } else
1a8e0 20 7b 0a 09 73 65 74 20 72 65 74 20 5b 73 65 74 {..set ret [set
1a8f0 20 6f 70 74 69 6f 6e 73 28 70 61 6e 65 77 65 69 options(panewei
1a900 67 68 74 73 2c 24 6f 72 69 65 6e 74 2c 24 70 61 ghts,$orient,$pa
1a910 6e 65 64 77 29 20 24 64 65 66 61 75 6c 74 5d 0a nedw) $default].
1a920 20 20 20 20 7d 0a 23 20 20 20 20 20 73 65 74 20 }.# set
1a930 6e 65 77 72 65 74 20 22 22 0a 23 20 20 20 20 20 newret "".#
1a940 66 6f 72 65 61 63 68 20 69 20 24 72 65 74 20 7b foreach i $ret {
1a950 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 7b 20 .# if {
1a960 24 69 20 3d 3d 20 31 20 7d 20 7b 0a 23 20 20 20 $i == 1 } {.#
1a970 20 20 20 20 20 20 20 20 20 20 73 65 74 20 69 20 set i
1a980 32 30 0a 23 20 20 20 20 20 20 20 20 20 7d 0a 23 20.# }.#
1a990 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 lappend
1a9a0 20 6e 65 77 72 65 74 20 24 69 0a 23 20 20 20 20 newret $i.#
1a9b0 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 24 72 }. return $r
1a9c0 65 74 0a 20 20 20 20 0a 7d 0a 0a 70 72 6f 63 20 et. .}..proc
1a9d0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 78 69 RamDebugger::Exi
1a9e0 74 47 55 49 20 7b 7d 20 7b 0a 20 20 20 20 76 61 tGUI {} {. va
1a9f0 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 riable options.
1aa00 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
1aa10 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 . variable re
1aa20 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 76 moteserver. v
1aa30 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 ariable remotese
1aa40 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 rverType. var
1aa50 69 61 62 6c 65 20 45 76 61 6c 45 6e 74 72 69 65 iable EvalEntrie
1aa60 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 s. variable c
1aa70 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 urrentfile. v
1aa80 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 6c ariable currentl
1aa90 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ine. variable
1aaa0 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20 breakpoints.
1aab0 20 76 61 72 69 61 62 6c 65 20 54 69 6d 65 4d 65 variable TimeMe
1aac0 61 73 75 72 65 44 61 74 61 0a 20 20 20 20 76 61 asureData. va
1aad0 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 73 riable debuggers
1aae0 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62 6c tate. variabl
1aaf0 65 20 72 65 61 64 77 72 69 74 65 70 72 65 66 73 e readwriteprefs
1ab00 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 53 65 . variable Se
1ab10 61 72 63 68 54 6f 6f 6c 62 61 72 0a 0a 20 20 20 archToolbar..
1ab20 20 69 66 20 7b 20 5b 53 61 76 65 46 69 6c 65 20 if { [SaveFile
1ab30 61 73 6b 5d 20 3d 3d 20 2d 31 20 7d 20 7b 20 72 ask] == -1 } { r
1ab40 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 69 66 20 eturn }.. if
1ab50 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 { $remoteserver
1ab60 21 3d 20 22 22 20 26 26 20 24 72 65 6d 6f 74 65 != "" && $remote
1ab70 73 65 72 76 65 72 54 79 70 65 20 21 3d 20 22 6d serverType != "m
1ab80 61 73 74 65 72 22 20 7d 20 7b 0a 09 72 64 65 62 aster" } {..rdeb
1ab90 75 67 20 2d 64 69 73 63 6f 6e 6e 65 63 74 0a 20 ug -disconnect.
1aba0 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70 }.. set op
1abb0 74 69 6f 6e 73 28 4e 6f 72 6d 61 6c 46 6f 6e 74 tions(NormalFont
1abc0 29 20 5b 66 6f 6e 74 20 63 6f 6e 66 69 67 75 72 ) [font configur
1abd0 65 20 4e 6f 72 6d 61 6c 46 6f 6e 74 5d 0a 20 20 e NormalFont].
1abe0 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 46 69 set options(Fi
1abf0 78 65 64 46 6f 6e 74 29 20 5b 66 6f 6e 74 20 63 xedFont) [font c
1ac00 6f 6e 66 69 67 75 72 65 20 46 69 78 65 64 46 6f onfigure FixedFo
1ac10 6e 74 5d 0a 20 20 20 20 73 65 74 20 6f 70 74 69 nt]. set opti
1ac20 6f 6e 73 28 48 65 6c 70 46 6f 6e 74 29 20 5b 66 ons(HelpFont) [f
1ac30 6f 6e 74 20 63 6f 6e 66 69 67 75 72 65 20 48 65 ont configure He
1ac40 6c 70 46 6f 6e 74 5d 0a 0a 20 20 20 20 69 66 20 lpFont].. if
1ac50 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 72 { [info exists r
1ac60 65 6d 6f 74 65 73 65 72 76 65 72 5d 20 26 26 20 emoteserver] &&
1ac70 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 6d 61 [string match ma
1ac80 73 74 65 72 2a 20 24 72 65 6d 6f 74 65 73 65 72 ster* $remoteser
1ac90 76 65 72 5d 20 7d 20 7b 0a 09 73 65 74 20 6f 70 ver] } {..set op
1aca0 74 69 6f 6e 73 28 6d 61 73 74 65 72 5f 74 79 70 tions(master_typ
1acb0 65 29 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 e) $remoteserver
1acc0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b . }.. if {
1acd0 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 53 65 [info exists Se
1ace0 61 72 63 68 54 6f 6f 6c 62 61 72 5d 20 7d 20 7b archToolbar] } {
1acf0 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 53 65 ..set options(Se
1ad00 61 72 63 68 54 6f 6f 6c 62 61 72 29 20 24 53 65 archToolbar) $Se
1ad10 61 72 63 68 54 6f 6f 6c 62 61 72 0a 20 20 20 20 archToolbar.
1ad20 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f }.. set optio
1ad30 6e 73 28 64 65 62 75 67 67 65 72 73 74 61 74 65 ns(debuggerstate
1ad40 29 20 24 64 65 62 75 67 67 65 72 73 74 61 74 65 ) $debuggerstate
1ad50 0a 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e .. set option
1ad60 73 28 77 61 74 63 68 65 64 76 61 72 73 29 20 22 s(watchedvars) "
1ad70 22 0a 20 20 20 20 73 65 74 20 69 20 30 0a 20 20 ". set i 0.
1ad80 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 69 66 20 while 1 {..if
1ad90 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
1ada0 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c EvalEntries($i,l
1adb0 65 66 74 29 5d 20 7d 20 7b 20 62 72 65 61 6b 20 eft)] } { break
1adc0 7d 0a 09 6c 61 70 70 65 6e 64 20 6f 70 74 69 6f }..lappend optio
1add0 6e 73 28 77 61 74 63 68 65 64 76 61 72 73 29 20 ns(watchedvars)
1ade0 24 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c $EvalEntries($i,
1adf0 6c 65 66 74 29 0a 09 69 6e 63 72 20 69 0a 20 20 left)..incr i.
1ae00 20 20 7d 0a 23 20 20 20 20 20 69 66 20 7b 20 21 }.# if { !
1ae10 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 [info exists opt
1ae20 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 ions(ViewOnlyTex
1ae30 74 4f 72 41 6c 6c 29 5d 20 7c 7c 20 24 6f 70 74 tOrAll)] || $opt
1ae40 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 ions(ViewOnlyTex
1ae50 74 4f 72 41 6c 6c 29 20 21 3d 20 22 4f 6e 6c 79 tOrAll) != "Only
1ae60 54 65 78 74 22 20 7d 20 7b 0a 23 20 20 20 20 20 Text" } {.#
1ae70 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 foreach i [a
1ae80 72 72 61 79 20 6e 61 6d 65 73 20 6f 70 74 69 6f rray names optio
1ae90 6e 73 20 70 61 6e 65 77 65 69 67 68 74 73 2c 2a ns paneweights,*
1aea0 5d 20 7b 0a 23 20 20 20 20 20 20 20 20 20 20 20 ] {.#
1aeb0 20 20 72 65 67 65 78 70 20 7b 70 61 6e 65 77 65 regexp {panewe
1aec0 69 67 68 74 73 2c 28 2e 2a 29 2c 28 2e 2a 29 7d ights,(.*),(.*)}
1aed0 20 24 69 20 7b 7d 20 6f 72 69 65 6e 74 20 70 61 $i {} orient pa
1aee0 6e 65 64 77 0a 23 20 20 20 20 20 20 20 20 20 20 nedw.#
1aef0 20 20 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 if { [winfo e
1af00 78 69 73 74 73 20 24 70 61 6e 65 64 77 5d 20 7d xists $panedw] }
1af10 20 7b 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 {.#
1af20 20 20 20 20 20 73 65 74 20 69 64 78 20 30 0a 23 set idx 0.#
1af30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1af40 20 73 65 74 20 73 75 6d 20 30 0a 23 20 20 20 20 set sum 0.#
1af50 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
1af60 20 72 65 73 20 22 22 0a 23 20 20 20 20 20 20 20 res "".#
1af70 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 foreac
1af80 68 20 70 61 6e 65 20 5b 24 70 61 6e 65 64 77 20 h pane [$panedw
1af90 70 61 6e 65 73 5d 20 7b 0a 23 20 20 20 20 20 20 panes] {.#
1afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
1afb0 77 69 74 63 68 20 24 6f 72 69 65 6e 74 20 7b 0a witch $orient {.
1afc0 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
1afd0 20 20 20 20 20 20 20 20 20 20 68 20 7b 20 6c 61 h { la
1afe0 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e 66 6f ppend res [winfo
1aff0 20 77 69 64 74 68 20 24 70 61 6e 65 5d 20 7d 0a width $pane] }.
1b000 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
1b010 20 20 20 20 20 20 20 20 20 20 76 20 7b 20 6c 61 v { la
1b020 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e 66 6f ppend res [winfo
1b030 20 68 65 69 67 68 74 20 24 70 61 6e 65 5d 20 7d height $pane] }
1b040 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .#
1b050 20 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20 }.#
1b060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
1b070 6e 63 72 20 69 64 78 0a 23 20 20 20 20 20 20 20 ncr idx.#
1b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 se
1b090 74 20 73 75 6d 20 5b 65 78 70 72 20 7b 24 73 75 t sum [expr {$su
1b0a0 6d 2b 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 65 m+[lindex $res e
1b0b0 6e 64 5d 7d 5d 0a 23 20 20 20 20 20 20 20 20 20 nd]}].#
1b0c0 20 20 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 }.#
1b0d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
1b0e0 20 24 73 75 6d 20 3e 20 24 69 64 78 20 7d 20 7b $sum > $idx } {
1b0f0 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 24 69 29 set options($i)
1b100 20 24 72 65 73 20 7d 0a 23 20 20 20 20 20 20 20 $res }.#
1b110 20 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 }.#
1b120 20 20 7d 0a 23 20 20 20 20 20 7d 0a 20 20 20 20 }.# }.
1b130 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 foreach i [array
1b140 20 6e 61 6d 65 73 20 6f 70 74 69 6f 6e 73 20 70 names options p
1b150 61 6e 65 77 65 69 67 68 74 73 2c 2a 5d 20 7b 0a aneweights,*] {.
1b160 09 72 65 67 65 78 70 20 7b 70 61 6e 65 77 65 69 .regexp {panewei
1b170 67 68 74 73 2c 28 2e 2a 29 2c 28 2e 2a 29 7d 20 ghts,(.*),(.*)}
1b180 24 69 20 7b 7d 20 6f 72 69 65 6e 74 20 70 61 6e $i {} orient pan
1b190 65 64 77 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f edw..if { [winfo
1b1a0 20 65 78 69 73 74 73 20 24 70 61 6e 65 64 77 5d exists $panedw]
1b1b0 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 } {.. set id
1b1c0 78 20 30 0a 09 20 20 20 20 73 65 74 20 73 75 6d x 0.. set sum
1b1d0 20 30 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 0.. set res
1b1e0 22 22 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 "".. foreach
1b1f0 70 61 6e 65 20 5b 24 70 61 6e 65 64 77 20 70 61 pane [$panedw pa
1b200 6e 65 73 5d 20 7b 0a 09 09 73 77 69 74 63 68 20 nes] {...switch
1b210 24 6f 72 69 65 6e 74 20 7b 0a 09 09 20 20 20 20 $orient {...
1b220 68 20 7b 20 6c 61 70 70 65 6e 64 20 72 65 73 20 h { lappend res
1b230 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 70 61 [winfo width $pa
1b240 6e 65 5d 20 7d 0a 09 09 20 20 20 20 76 20 7b 20 ne] }... v {
1b250 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 77 69 6e lappend res [win
1b260 66 6f 20 68 65 69 67 68 74 20 24 70 61 6e 65 5d fo height $pane]
1b270 20 7d 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69 64 }...}...incr id
1b280 78 0a 09 09 73 65 74 20 73 75 6d 20 5b 65 78 70 x...set sum [exp
1b290 72 20 7b 24 73 75 6d 2b 5b 6c 69 6e 64 65 78 20 r {$sum+[lindex
1b2a0 24 72 65 73 20 65 6e 64 5d 7d 5d 0a 09 20 20 20 $res end]}]..
1b2b0 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 73 75 }.. if { $su
1b2c0 6d 20 3e 20 24 69 64 78 20 7d 20 7b 20 73 65 74 m > $idx } { set
1b2d0 20 6f 70 74 69 6f 6e 73 28 24 69 29 20 24 72 65 options($i) $re
1b2e0 73 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 s }..}. }..
1b2f0 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 63 75 set options(cu
1b300 72 72 65 6e 74 66 69 6c 65 29 20 24 63 75 72 72 rrentfile) $curr
1b310 65 6e 74 66 69 6c 65 0a 20 20 20 20 73 65 74 20 entfile. set
1b320 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 69 options(currenti
1b330 64 78 29 20 5b 24 74 65 78 74 20 69 6e 64 65 78 dx) [$text index
1b340 20 69 6e 73 65 72 74 5d 0a 0a 20 20 20 20 73 65 insert].. se
1b350 74 20 6f 70 74 69 6f 6e 73 28 62 72 65 61 6b 70 t options(breakp
1b360 6f 69 6e 74 73 29 20 22 22 0a 20 20 20 20 66 6f oints) "". fo
1b370 72 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 6f reach i $breakpo
1b380 69 6e 74 73 20 7b 0a 09 73 65 74 20 66 69 6c 65 ints {..set file
1b390 20 5b 6c 69 6e 64 65 78 20 24 69 20 32 5d 0a 09 [lindex $i 2]..
1b3a0 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64 if { [string ind
1b3b0 65 78 20 24 66 69 6c 65 20 30 5d 20 21 3d 20 22 ex $file 0] != "
1b3c0 2a 22 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 *" } {.. lapp
1b3d0 65 6e 64 20 6f 70 74 69 6f 6e 73 28 62 72 65 61 end options(brea
1b3e0 6b 70 6f 69 6e 74 73 29 20 24 69 0a 09 7d 0a 20 kpoints) $i..}.
1b3f0 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6f 70 74 }. set opt
1b400 69 6f 6e 73 28 54 69 6d 65 4d 65 61 73 75 72 65 ions(TimeMeasure
1b410 44 61 74 61 29 20 24 54 69 6d 65 4d 65 61 73 75 Data) $TimeMeasu
1b420 72 65 44 61 74 61 0a 20 20 20 20 73 65 74 20 6f reData. set o
1b430 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 73 65 72 ptions(remoteser
1b440 76 65 72 54 79 70 65 29 20 24 72 65 6d 6f 74 65 verType) $remote
1b450 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 73 serverType. s
1b460 65 74 20 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74 et options(remot
1b470 65 73 65 72 76 65 72 29 20 24 72 65 6d 6f 74 65 eserver) $remote
1b480 73 65 72 76 65 72 0a 0a 20 20 20 20 73 65 74 20 server.. set
1b490 67 65 6f 6d 6b 65 79 20 6d 61 69 6e 67 65 6f 6d geomkey maingeom
1b4a0 65 74 72 79 5f 24 6f 70 74 69 6f 6e 73 28 56 69 etry_$options(Vi
1b4b0 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29 ewOnlyTextOrAll)
1b4c0 0a 20 20 20 20 73 65 74 20 77 20 20 5b 77 69 6e . set w [win
1b4d0 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 fo toplevel $tex
1b4e0 74 5d 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 t]. if { $::t
1b4f0 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 cl_platform(plat
1b500 66 6f 72 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 form) eq "window
1b510 73 22 20 26 26 20 5b 77 6d 20 73 74 61 74 65 20 s" && [wm state
1b520 24 77 5d 20 65 71 20 22 7a 6f 6f 6d 65 64 22 20 $w] eq "zoomed"
1b530 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65 64 20 } {..set zoomed
1b540 31 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 1. } elseif {
1b550 20 21 5b 63 61 74 63 68 20 7b 20 77 6d 20 61 74 ![catch { wm at
1b560 74 72 69 62 75 74 65 73 20 24 77 20 2d 7a 6f 6f tributes $w -zoo
1b570 6d 65 64 20 7d 20 72 65 74 5d 20 26 26 20 24 72 med } ret] && $r
1b580 65 74 20 7d 20 7b 0a 09 73 65 74 20 7a 6f 6f 6d et } {..set zoom
1b590 65 64 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 20 ed 1. } else
1b5a0 7b 0a 09 73 65 74 20 7a 6f 6f 6d 65 64 20 30 0a {..set zoomed 0.
1b5b0 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 }. if { $
1b5c0 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09 73 65 74 20 zoomed } {..set
1b5d0 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 options($geomkey
1b5e0 29 20 7a 6f 6f 6d 65 64 0a 20 20 20 20 7d 20 65 ) zoomed. } e
1b5f0 6c 73 65 20 7b 0a 09 72 65 67 65 78 70 20 7b 28 lse {..regexp {(
1b600 5c 64 2b 29 78 28 5c 64 2b 29 28 5b 2b 2d 5d 29 \d+)x(\d+)([+-])
1b610 28 5b 2d 5c 64 5d 2b 29 28 5b 2b 2d 5d 29 28 5b ([-\d]+)([+-])([
1b620 2d 5c 64 5d 2b 29 7d 20 5b 63 75 3a 3a 67 69 76 -\d]+)} [cu::giv
1b630 65 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 e_window_geometr
1b640 79 20 24 77 5d 20 5c 0a 09 20 20 20 20 7b 7d 20 y $w] \.. {}
1b650 77 69 64 74 68 20 68 65 69 67 68 74 20 78 72 65 width height xre
1b660 6c 20 78 20 79 72 65 6c 20 79 0a 09 69 66 20 7b l x yrel y..if {
1b670 24 78 72 65 6c 20 65 71 20 22 2d 22 20 7d 20 7b $xrel eq "-" } {
1b680 0a 09 20 20 20 20 73 65 74 20 78 20 5b 65 78 70 .. set x [exp
1b690 72 20 7b 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e r {[winfo screen
1b6a0 77 69 64 74 68 20 24 74 65 78 74 5d 2d 24 78 7d width $text]-$x}
1b6b0 5d 0a 09 7d 0a 09 69 66 20 7b 24 79 72 65 6c 20 ]..}..if {$yrel
1b6c0 65 71 20 22 2d 22 20 7d 20 7b 0a 09 20 20 20 20 eq "-" } {..
1b6d0 73 65 74 20 79 20 5b 65 78 70 72 20 7b 5b 77 69 set y [expr {[wi
1b6e0 6e 66 6f 20 73 63 72 65 65 6e 68 65 69 67 68 74 nfo screenheight
1b6f0 20 24 74 65 78 74 5d 2d 24 79 7d 5d 0a 09 7d 0a $text]-$y}]..}.
1b700 09 69 66 20 7b 20 24 78 20 3c 20 2d 32 30 20 7d .if { $x < -20 }
1b710 20 7b 20 73 65 74 20 78 20 2d 32 30 20 7d 0a 09 { set x -20 }..
1b720 69 66 20 7b 20 24 79 20 3c 20 2d 32 30 20 7d 20 if { $y < -20 }
1b730 7b 20 73 65 74 20 79 20 2d 32 30 20 7d 0a 09 69 { set y -20 }..i
1b740 66 20 7b 20 24 78 20 3e 20 5b 77 69 6e 66 6f 20 f { $x > [winfo
1b750 73 63 72 65 65 6e 77 69 64 74 68 20 24 74 65 78 screenwidth $tex
1b760 74 5d 2d 32 30 20 7d 20 7b 20 73 65 74 20 78 20 t]-20 } { set x
1b770 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 73 63 [expr {[winfo sc
1b780 72 65 65 6e 77 69 64 74 68 20 24 74 65 78 74 5d reenwidth $text]
1b790 2d 32 30 7d 5d 20 7d 0a 09 69 66 20 7b 20 24 79 -20}] }..if { $y
1b7a0 20 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e > [winfo screen
1b7b0 68 65 69 67 68 74 20 24 74 65 78 74 5d 2d 32 30 height $text]-20
1b7c0 20 7d 20 7b 20 73 65 74 20 79 20 5b 65 78 70 72 } { set y [expr
1b7d0 20 7b 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 68 {[winfo screenh
1b7e0 65 69 67 68 74 20 24 74 65 78 74 5d 2d 32 30 7d eight $text]-20}
1b7f0 5d 20 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 ] }..set options
1b800 28 24 67 65 6f 6d 6b 65 79 29 20 24 7b 77 69 64 ($geomkey) ${wid
1b810 74 68 7d 78 24 68 65 69 67 68 74 2b 24 78 2b 24 th}x$height+$x+$
1b820 79 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 73 65 y. }.. _se
1b830 63 6f 6e 64 74 65 78 74 73 61 76 65 70 6f 73 0a condtextsavepos.
1b840 0a 20 20 20 20 69 66 20 7b 20 24 72 65 61 64 77 . if { $readw
1b850 72 69 74 65 70 72 65 66 73 20 65 71 20 22 79 65 riteprefs eq "ye
1b860 73 22 20 7d 20 7b 0a 09 53 61 76 65 50 72 65 66 s" } {..SavePref
1b870 65 72 65 6e 63 65 73 20 30 0a 20 20 20 20 7d 0a erences 0. }.
1b880 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 if { $remote
1b890 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6d serverType == "m
1b8a0 61 73 74 65 72 22 20 7d 20 7b 0a 09 45 76 61 6c aster" } {..Eval
1b8b0 52 65 6d 6f 74 65 20 5b 6c 69 73 74 20 70 61 63 Remote [list pac
1b8c0 6b 61 67 65 20 66 6f 72 67 65 74 20 52 61 6d 44 kage forget RamD
1b8d0 65 62 75 67 67 65 72 5d 0a 09 76 61 72 69 61 62 ebugger]..variab
1b8e0 6c 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 22 le breakpoints "
1b8f0 22 0a 09 55 70 64 61 74 65 52 65 6d 6f 74 65 42 "..UpdateRemoteB
1b900 72 65 61 6b 73 0a 09 64 65 73 74 72 6f 79 20 5b reaks..destroy [
1b910 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 winfo toplevel $
1b920 74 65 78 74 5d 0a 20 20 20 20 7d 20 65 6c 73 65 text]. } else
1b930 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 if { [info comma
1b940 6e 64 73 20 65 78 69 74 5f 66 69 6e 61 6c 5d 20 nds exit_final]
1b950 21 3d 20 22 22 20 7d 20 7b 0a 09 65 78 69 74 5f != "" } {..exit_
1b960 66 69 6e 61 6c 0a 20 20 20 20 7d 20 65 6c 73 65 final. } else
1b970 20 7b 20 65 78 69 74 20 7d 0a 7d 0a 0a 70 72 6f { exit }.}..pro
1b980 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 c RamDebugger::R
1b990 65 61 64 50 72 65 66 65 72 65 6e 63 65 73 20 7b eadPreferences {
1b9a0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
1b9b0 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 options. var
1b9c0 69 61 62 6c 65 20 41 70 70 44 61 74 61 44 69 72 iable AppDataDir
1b9d0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 . variable is
1b9e0 77 69 6e 63 65 0a 20 20 20 20 76 61 72 69 61 62 wince. variab
1b9f0 6c 65 20 70 72 65 66 73 5f 67 72 6f 75 70 0a 20 le prefs_group.
1ba00 20 20 20 0a 20 20 20 20 63 61 74 63 68 20 7b 0a . catch {.
1ba10 09 69 66 20 7b 20 24 69 73 77 69 6e 63 65 20 7d .if { $iswince }
1ba20 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6e 20 {.. set fin
1ba30 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e [open [file join
1ba40 20 24 41 70 70 44 61 74 61 44 69 72 20 72 61 6d $AppDataDir ram
1ba50 64 65 62 75 67 67 65 72 5f 70 72 65 66 73 5d 20 debugger_prefs]
1ba60 72 5d 0a 09 20 20 20 20 73 65 74 20 64 61 74 61 r].. set data
1ba70 20 5b 72 65 61 64 20 24 66 69 6e 5d 0a 09 20 20 [read $fin]..
1ba80 20 20 63 6c 6f 73 65 20 24 66 69 6e 0a 09 7d 20 close $fin..}
1ba90 65 6c 73 65 69 66 20 7b 20 24 3a 3a 74 63 6c 5f elseif { $::tcl_
1baa0 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 platform(platfor
1bab0 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 m) eq "windows"
1bac0 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6b 65 79 } {.. set key
1bad0 20 7b 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 {HKEY_CURRENT_U
1bae0 53 45 52 5c 53 6f 66 74 77 61 72 65 5c 52 61 6d SER\Software\Ram
1baf0 44 65 62 75 67 67 65 72 7d 0a 09 20 20 20 20 69 Debugger}.. i
1bb00 66 20 7b 20 24 70 72 65 66 73 5f 67 72 6f 75 70 f { $prefs_group
1bb10 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 61 70 70 ne "" } {...app
1bb20 65 6e 64 20 6b 65 79 20 22 5f 24 70 72 65 66 73 end key "_$prefs
1bb30 5f 67 72 6f 75 70 22 0a 09 20 20 20 20 7d 0a 09 _group".. }..
1bb40 20 20 20 20 73 65 74 20 64 61 74 61 20 5b 72 65 set data [re
1bb50 67 69 73 74 72 79 20 67 65 74 20 24 6b 65 79 20 gistry get $key
1bb60 49 6e 69 44 61 74 61 5d 0a 09 7d 20 65 6c 73 65 IniData]..} else
1bb70 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 70 72 {.. if { $pr
1bb80 65 66 73 5f 67 72 6f 75 70 20 6e 65 20 22 22 20 efs_group ne ""
1bb90 7d 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 20 7e } {...set file ~
1bba0 2f 2e 72 61 6d 64 65 62 75 67 67 65 72 5f 24 7b /.ramdebugger_${
1bbb0 70 72 65 66 73 5f 67 72 6f 75 70 7d 5f 70 72 65 prefs_group}_pre
1bbc0 66 73 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b fs.. } else {
1bbd0 0a 09 09 73 65 74 20 66 69 6c 65 20 7e 2f 2e 72 ...set file ~/.r
1bbe0 61 6d 64 65 62 75 67 67 65 72 5f 70 72 65 66 73 amdebugger_prefs
1bbf0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 .. }.. set
1bc00 20 66 69 6e 20 5b 6f 70 65 6e 20 24 66 69 6c 65 fin [open $file
1bc10 20 72 5d 0a 09 20 20 20 20 73 65 74 20 64 61 74 r].. set dat
1bc20 61 20 5b 72 65 61 64 20 24 66 69 6e 5d 0a 09 20 a [read $fin]..
1bc30 20 20 20 63 6c 6f 73 65 20 24 66 69 6e 0a 09 7d close $fin..}
1bc40 0a 09 61 72 72 61 79 20 73 65 74 20 6f 70 74 69 ..array set opti
1bc50 6f 6e 73 20 24 64 61 74 61 0a 20 20 20 20 7d 0a ons $data. }.
1bc60 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
1bc70 67 65 72 3a 3a 53 61 76 65 50 72 65 66 65 72 65 ger::SavePrefere
1bc80 6e 63 65 73 20 7b 20 7b 20 72 61 69 73 65 5f 65 nces { { raise_e
1bc90 72 72 6f 72 20 30 20 7d 20 7d 20 7b 0a 20 20 20 rror 0 } } {.
1bca0 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
1bcb0 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 41 s. variable A
1bcc0 70 70 44 61 74 61 44 69 72 0a 20 20 20 20 76 61 ppDataDir. va
1bcd0 72 69 61 62 6c 65 20 69 73 77 69 6e 63 65 0a 20 riable iswince.
1bce0 20 20 20 76 61 72 69 61 62 6c 65 20 70 72 65 66 variable pref
1bcf0 73 5f 67 72 6f 75 70 0a 20 20 20 20 0a 20 20 20 s_group. .
1bd00 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 set err [catch
1bd10 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 69 73 77 {.. if { $isw
1bd20 69 6e 63 65 20 7d 20 7b 0a 09 09 73 65 74 20 66 ince } {...set f
1bd30 6f 75 74 20 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 out [open [file
1bd40 6a 6f 69 6e 20 24 41 70 70 44 61 74 61 44 69 72 join $AppDataDir
1bd50 20 72 61 6d 64 65 62 75 67 67 65 72 5f 70 72 65 ramdebugger_pre
1bd60 66 73 5d 20 77 5d 0a 09 09 70 75 74 73 20 2d 6e fs] w]...puts -n
1bd70 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 5b onewline $fout [
1bd80 61 72 72 61 79 20 67 65 74 20 6f 70 74 69 6f 6e array get option
1bd90 73 5d 0a 09 09 63 6c 6f 73 65 20 24 66 6f 75 74 s]...close $fout
1bda0 0a 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b .. } elseif {
1bdb0 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d $::tcl_platform
1bdc0 28 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 (platform) eq "w
1bdd0 69 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 09 73 65 indows" } {...se
1bde0 74 20 6b 65 79 20 7b 48 4b 45 59 5f 43 55 52 52 t key {HKEY_CURR
1bdf0 45 4e 54 5f 55 53 45 52 5c 53 6f 66 74 77 61 72 ENT_USER\Softwar
1be00 65 5c 52 61 6d 44 65 62 75 67 67 65 72 7d 0a 09 e\RamDebugger}..
1be10 09 69 66 20 7b 20 24 70 72 65 66 73 5f 67 72 6f .if { $prefs_gro
1be20 75 70 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 20 up ne "" } {...
1be30 20 20 20 61 70 70 65 6e 64 20 6b 65 79 20 22 5f append key "_
1be40 24 70 72 65 66 73 5f 67 72 6f 75 70 22 0a 09 09 $prefs_group"...
1be50 7d 0a 09 09 72 65 67 69 73 74 72 79 20 73 65 74 }...registry set
1be60 20 24 6b 65 79 20 49 6e 69 44 61 74 61 20 5b 61 $key IniData [a
1be70 72 72 61 79 20 67 65 74 20 6f 70 74 69 6f 6e 73 rray get options
1be80 5d 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ].. } else {.
1be90 09 09 69 66 20 7b 20 24 70 72 65 66 73 5f 67 72 ..if { $prefs_gr
1bea0 6f 75 70 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 oup ne "" } {...
1beb0 20 20 20 20 73 65 74 20 66 69 6c 65 20 7e 2f 2e set file ~/.
1bec0 72 61 6d 64 65 62 75 67 67 65 72 5f 24 7b 70 72 ramdebugger_${pr
1bed0 65 66 73 5f 67 72 6f 75 70 7d 5f 70 72 65 66 73 efs_group}_prefs
1bee0 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 ...} else {...
1bef0 20 20 73 65 74 20 66 69 6c 65 20 7e 2f 2e 72 61 set file ~/.ra
1bf00 6d 64 65 62 75 67 67 65 72 5f 70 72 65 66 73 0a mdebugger_prefs.
1bf10 09 09 7d 0a 09 09 73 65 74 20 66 6f 75 74 20 5b ..}...set fout [
1bf20 6f 70 65 6e 20 24 66 69 6c 65 20 77 5d 0a 09 09 open $file w]...
1bf30 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 puts -nonewline
1bf40 24 66 6f 75 74 20 5b 61 72 72 61 79 20 67 65 74 $fout [array get
1bf50 20 6f 70 74 69 6f 6e 73 5d 0a 09 09 63 6c 6f 73 options]...clos
1bf60 65 20 24 66 6f 75 74 0a 09 20 20 20 20 7d 0a 09 e $fout.. }..
1bf70 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 20 20 20 } errstring].
1bf80 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
1bf90 69 66 20 7b 20 24 72 61 69 73 65 5f 65 72 72 6f if { $raise_erro
1bfa0 72 20 7d 20 7b 0a 09 20 20 20 20 65 72 72 6f 72 r } {.. error
1bfb0 20 24 65 72 72 73 74 72 69 6e 67 20 24 3a 3a 65 $errstring $::e
1bfc0 72 72 6f 72 49 6e 66 6f 0a 09 7d 20 65 6c 73 65 rrorInfo..} else
1bfd0 20 7b 0a 09 20 20 20 20 57 61 72 6e 57 69 6e 20 {.. WarnWin
1bfe0 5b 5f 20 22 43 6f 75 6c 64 20 6e 6f 74 20 73 61 [_ "Could not sa
1bff0 76 65 20 70 72 65 66 65 72 65 6e 63 65 73 3a 20 ve preferences:
1c000 25 73 22 20 24 65 72 72 73 74 72 69 6e 67 5d 0a %s" $errstring].
1c010 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 .}. }.}..proc
1c020 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 RamDebugger::Se
1c030 74 50 72 65 66 65 72 65 6e 63 65 20 7b 20 6e 61 tPreference { na
1c040 6d 65 20 76 61 6c 75 65 20 7d 20 7b 0a 20 20 20 me value } {.
1c050 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
1c060 73 0a 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e s. set option
1c070 73 28 24 6e 61 6d 65 29 20 24 76 61 6c 75 65 0a s($name) $value.
1c080 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
1c090 67 65 72 3a 3a 47 65 74 50 72 65 66 65 72 65 6e ger::GetPreferen
1c0a0 63 65 20 7b 20 6e 61 6d 65 20 7b 20 64 65 66 61 ce { name { defa
1c0b0 75 6c 74 20 22 22 20 7d 20 7d 20 7b 0a 20 20 20 ult "" } } {.
1c0c0 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
1c0d0 73 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f s. if { [info
1c0e0 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 exists options(
1c0f0 24 6e 61 6d 65 29 5d 20 7d 20 7b 0a 09 72 65 74 $name)] } {..ret
1c100 75 72 6e 20 24 6f 70 74 69 6f 6e 73 28 24 6e 61 urn $options($na
1c110 6d 65 29 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 me). }. re
1c120 74 75 72 6e 20 24 64 65 66 61 75 6c 74 0a 7d 0a turn $default.}.
1c130 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
1c140 72 3a 3a 41 70 70 6c 79 43 6f 6c 6f 72 50 72 65 r::ApplyColorPre
1c150 66 73 20 7b 20 74 20 7d 20 7b 0a 20 20 20 20 76 fs { t } {. v
1c160 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a ariable options.
1c170 20 20 20 20 0a 20 20 20 20 24 74 20 63 6f 6e 66 . $t conf
1c180 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1c190 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 66 6f 72 tions(colors,for
1c1a0 65 67 72 6f 75 6e 64 29 20 5c 0a 09 2d 62 61 63 eground) \..-bac
1c1b0 6b 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 kground $options
1c1c0 28 63 6f 6c 6f 72 73 2c 62 61 63 6b 67 72 6f 75 (colors,backgrou
1c1d0 6e 64 29 0a 20 20 20 20 24 74 20 74 61 67 20 63 nd). $t tag c
1c1e0 6f 6e 66 20 6d 61 67 65 6e 74 61 20 2d 66 6f 72 onf magenta -for
1c1f0 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 eground $options
1c200 28 63 6f 6c 6f 72 73 2c 63 6f 6d 6d 61 6e 64 73 (colors,commands
1c210 29 0a 20 20 20 20 24 74 20 74 61 67 20 63 6f 6e ). $t tag con
1c220 66 20 6d 61 67 65 6e 74 61 32 20 2d 66 6f 72 65 f magenta2 -fore
1c230 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 ground $options(
1c240 63 6f 6c 6f 72 73 2c 64 65 66 69 6e 65 73 29 0a colors,defines).
1c250 20 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 $t tag conf
1c260 62 6c 75 65 20 2d 66 6f 72 65 67 72 6f 75 6e 64 blue -foreground
1c270 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 $options(colors
1c280 2c 70 72 6f 63 6e 61 6d 65 73 29 0a 20 20 20 20 ,procnames).
1c290 24 74 20 74 61 67 20 63 6f 6e 66 20 67 72 65 79 $t tag conf grey
1c2a0 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1c2b0 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 71 75 6f tions(colors,quo
1c2c0 74 65 73 74 72 69 6e 67 73 29 0a 20 20 20 20 24 testrings). $
1c2d0 74 20 74 61 67 20 63 6f 6e 66 20 67 72 65 65 6e t tag conf green
1c2e0 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1c2f0 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 73 65 74 tions(colors,set
1c300 29 0a 20 20 20 20 24 74 20 74 61 67 20 63 6f 6e ). $t tag con
1c310 66 20 72 65 64 20 2d 66 6f 72 65 67 72 6f 75 6e f red -foregroun
1c320 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 d $options(color
1c330 73 2c 63 6f 6d 6d 65 6e 74 73 29 0a 20 20 20 20 s,comments).
1c340 24 74 20 74 61 67 20 63 6f 6e 66 20 63 79 61 6e $t tag conf cyan
1c350 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1c360 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 76 61 72 tions(colors,var
1c370 6e 61 6d 65 73 29 0a 7d 0a 0a 23 20 77 68 61 74 names).}..# what
1c380 20 63 61 6e 20 62 65 20 74 65 78 74 20 6f 72 20 can be text or
1c390 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 70 text_secondary.p
1c3a0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
1c3b0 3a 43 6f 6c 6f 72 69 7a 65 20 7b 20 7b 20 77 68 :Colorize { { wh
1c3c0 61 74 20 74 65 78 74 20 7d 20 7d 20 7b 0a 20 20 at text } } {.
1c3d0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
1c3e0 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 variable tex
1c3f0 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 t_secondary.
1c400 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d variable instrum
1c410 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20 entedfilesInfo.
1c420 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
1c430 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 entfile. vari
1c440 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 able currentfile
1c450 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 _secondary. v
1c460 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a ariable options.
1c470 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 . if { $what
1c480 65 71 20 22 74 65 78 74 5f 73 65 63 6f 6e 64 61 eq "text_seconda
1c490 72 79 22 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c ry" } {..set fil
1c4a0 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 e $currentfile_s
1c4b0 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65 econdary. } e
1c4c0 6c 73 65 20 7b 20 20 73 65 74 20 66 69 6c 65 20 lse { set file
1c4d0 24 63 75 72 72 65 6e 74 66 69 6c 65 20 7d 0a 0a $currentfile }..
1c4e0 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 if { ![info
1c4f0 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e exists instrumen
1c500 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 66 69 tedfilesInfo($fi
1c510 6c 65 29 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 le)] } { return
1c520 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 }.. if { $wha
1c530 74 20 65 71 20 22 74 65 78 74 22 20 7d 20 7b 0a t eq "text" } {.
1c540 09 73 65 74 20 65 64 20 5b 24 74 65 78 74 20 63 .set ed [$text c
1c550 67 65 74 20 2d 65 64 69 74 61 62 6c 65 5d 0a 09 get -editable]..
1c560 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 $text conf -edit
1c570 61 62 6c 65 20 31 0a 09 73 65 74 20 74 20 5b 24 able 1..set t [$
1c580 74 65 78 74 20 6f 72 69 67 69 6e 61 6c 5d 0a 20 text original].
1c590 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24 74 65 } else {..$te
1c5a0 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 63 6f 6e xt_secondary con
1c5b0 66 69 67 75 72 65 20 2d 73 74 61 74 65 20 6e 6f figure -state no
1c5c0 72 6d 61 6c 0a 09 73 65 74 20 74 20 24 74 65 78 rmal..set t $tex
1c5d0 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 t_secondary.
1c5e0 7d 0a 0a 23 20 20 20 20 20 24 74 20 63 6f 6e 66 }..# $t conf
1c5f0 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1c600 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 66 6f 72 tions(colors,for
1c610 65 67 72 6f 75 6e 64 29 20 5c 0a 23 20 20 20 20 eground) \.#
1c620 20 20 20 20 20 2d 62 61 63 6b 67 72 6f 75 6e 64 -background
1c630 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 $options(colors
1c640 2c 62 61 63 6b 67 72 6f 75 6e 64 29 0a 23 20 20 ,background).#
1c650 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 6d $t tag conf m
1c660 61 67 65 6e 74 61 20 2d 66 6f 72 65 67 72 6f 75 agenta -foregrou
1c670 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f nd $options(colo
1c680 72 73 2c 63 6f 6d 6d 61 6e 64 73 29 0a 23 20 20 rs,commands).#
1c690 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 6d $t tag conf m
1c6a0 61 67 65 6e 74 61 32 20 2d 66 6f 72 65 67 72 6f agenta2 -foregro
1c6b0 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c und $options(col
1c6c0 6f 72 73 2c 64 65 66 69 6e 65 73 29 0a 23 20 20 ors,defines).#
1c6d0 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 62 $t tag conf b
1c6e0 6c 75 65 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 lue -foreground
1c6f0 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c $options(colors,
1c700 70 72 6f 63 6e 61 6d 65 73 29 0a 23 20 20 20 20 procnames).#
1c710 20 24 74 20 74 61 67 20 63 6f 6e 66 20 67 72 65 $t tag conf gre
1c720 79 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f y -foreground $o
1c730 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 71 75 ptions(colors,qu
1c740 6f 74 65 73 74 72 69 6e 67 73 29 0a 23 20 20 20 otestrings).#
1c750 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 67 72 $t tag conf gr
1c760 65 65 6e 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 een -foreground
1c770 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c $options(colors,
1c780 73 65 74 29 0a 23 20 20 20 20 20 24 74 20 74 61 set).# $t ta
1c790 67 20 63 6f 6e 66 20 72 65 64 20 2d 66 6f 72 65 g conf red -fore
1c7a0 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 ground $options(
1c7b0 63 6f 6c 6f 72 73 2c 63 6f 6d 6d 65 6e 74 73 29 colors,comments)
1c7c0 0a 23 20 20 20 20 20 24 74 20 74 61 67 20 63 6f .# $t tag co
1c7d0 6e 66 20 63 79 61 6e 20 2d 66 6f 72 65 67 72 6f nf cyan -foregro
1c7e0 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c und $options(col
1c7f0 6f 72 73 2c 76 61 72 6e 61 6d 65 73 29 0a 0a 20 ors,varnames)..
1c800 20 20 20 73 65 74 20 69 6c 69 6e 65 20 31 0a 20 set iline 1.
1c810 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 69 6e foreach i $in
1c820 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 strumentedfilesI
1c830 6e 66 6f 28 24 66 69 6c 65 29 20 7b 0a 09 66 6f nfo($file) {..fo
1c840 72 65 61 63 68 20 22 74 61 67 20 6c 69 20 6c 65 reach "tag li le
1c850 22 20 5b 6c 72 61 6e 67 65 20 24 69 20 32 20 65 " [lrange $i 2 e
1c860 6e 64 5d 20 7b 0a 09 20 20 20 20 24 74 20 74 61 nd] {.. $t ta
1c870 67 20 61 64 64 20 24 74 61 67 20 24 69 6c 69 6e g add $tag $ilin
1c880 65 2e 24 6c 69 20 24 69 6c 69 6e 65 2e 24 6c 65 e.$li $iline.$le
1c890 0a 09 7d 0a 20 20 20 20 20 20 20 0a 09 69 6e 63 ..}. ..inc
1c8a0 72 20 69 6c 69 6e 65 0a 20 20 20 20 7d 0a 20 20 r iline. }.
1c8b0 20 20 24 74 20 74 61 67 20 72 61 69 73 65 20 73 $t tag raise s
1c8c0 65 6c 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 el. if { $wha
1c8d0 74 20 65 71 20 22 74 65 78 74 22 20 7d 20 7b 0a t eq "text" } {.
1c8e0 09 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 .$text conf -edi
1c8f0 74 61 62 6c 65 20 24 65 64 0a 20 20 20 20 7d 20 table $ed. }
1c900 65 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f 73 65 else {..$text_se
1c910 63 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72 condary configur
1c920 65 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 e -state disable
1c930 64 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20 77 68 61 d. }.}..# wha
1c940 74 20 63 61 6e 20 62 65 20 74 65 78 74 20 6f 72 t can be text or
1c950 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a text_secondary.
1c960 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
1c970 3a 3a 43 6f 6c 6f 72 69 7a 65 4c 69 6e 65 73 20 ::ColorizeLines
1c980 7b 20 6c 31 20 6c 32 20 7b 20 77 68 61 74 20 74 { l1 l2 { what t
1c990 65 78 74 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61 ext } } {. va
1c9a0 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 riable text.
1c9b0 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 variable text_se
1c9c0 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 72 69 condary. vari
1c9d0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 able instrumente
1c9e0 64 66 69 6c 65 73 49 6e 66 6f 0a 20 20 20 20 76 dfilesInfo. v
1c9f0 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 ariable currentf
1ca00 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ile. variable
1ca10 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 currentfile_sec
1ca20 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 72 69 61 ondary. varia
1ca30 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 ble options..
1ca40 20 69 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 if { $what eq "
1ca50 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 22 20 text_secondary"
1ca60 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 63 } {..set file $c
1ca70 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e urrentfile_secon
1ca80 64 61 72 79 0a 20 20 20 20 7d 20 65 6c 73 65 20 dary. } else
1ca90 7b 20 20 73 65 74 20 66 69 6c 65 20 24 63 75 72 { set file $cur
1caa0 72 65 6e 74 66 69 6c 65 20 7d 0a 0a 0a 20 20 20 rentfile }...
1cab0 20 69 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 if { $what eq "
1cac0 74 65 78 74 22 20 7d 20 7b 0a 09 73 65 74 20 65 text" } {..set e
1cad0 64 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d 65 d [$text cget -e
1cae0 64 69 74 61 62 6c 65 5d 0a 09 24 74 65 78 74 20 ditable]..$text
1caf0 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 31 conf -editable 1
1cb00 0a 09 73 65 74 20 74 20 5b 24 74 65 78 74 20 6f ..set t [$text o
1cb10 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20 7d 20 65 riginal]. } e
1cb20 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f 73 65 63 lse {..$text_sec
1cb30 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72 65 ondary configure
1cb40 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 09 -state normal..
1cb50 73 65 74 20 74 20 24 74 65 78 74 5f 73 65 63 6f set t $text_seco
1cb60 6e 64 61 72 79 0a 20 20 20 20 7d 0a 23 20 20 20 ndary. }.#
1cb70 20 20 24 74 20 63 6f 6e 66 20 2d 66 6f 72 65 67 $t conf -foreg
1cb80 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 63 round $options(c
1cb90 6f 6c 6f 72 73 2c 66 6f 72 65 67 72 6f 75 6e 64 olors,foreground
1cba0 29 20 5c 0a 23 20 20 20 20 20 20 20 20 20 2d 62 ) \.# -b
1cbb0 61 63 6b 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f ackground $optio
1cbc0 6e 73 28 63 6f 6c 6f 72 73 2c 62 61 63 6b 67 72 ns(colors,backgr
1cbd0 6f 75 6e 64 29 0a 23 20 20 20 20 20 24 74 20 74 ound).# $t t
1cbe0 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74 61 20 ag conf magenta
1cbf0 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 -foreground $opt
1cc00 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63 6f 6d 6d ions(colors,comm
1cc10 61 6e 64 73 29 0a 23 20 20 20 20 20 24 74 20 74 ands).# $t t
1cc20 61 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74 61 32 ag conf magenta2
1cc30 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1cc40 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 64 65 66 tions(colors,def
1cc50 69 6e 65 73 29 0a 23 20 20 20 20 20 24 74 20 74 ines).# $t t
1cc60 61 67 20 63 6f 6e 66 20 62 6c 75 65 20 2d 66 6f ag conf blue -fo
1cc70 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e reground $option
1cc80 73 28 63 6f 6c 6f 72 73 2c 70 72 6f 63 6e 61 6d s(colors,procnam
1cc90 65 73 29 0a 23 20 20 20 20 20 24 74 20 74 61 67 es).# $t tag
1cca0 20 63 6f 6e 66 20 67 72 65 79 20 2d 66 6f 72 65 conf grey -fore
1ccb0 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e 73 28 ground $options(
1ccc0 63 6f 6c 6f 72 73 2c 71 75 6f 74 65 73 74 72 69 colors,quotestri
1ccd0 6e 67 73 29 0a 23 20 20 20 20 20 24 74 20 74 61 ngs).# $t ta
1cce0 67 20 63 6f 6e 66 20 67 72 65 65 6e 20 2d 66 6f g conf green -fo
1ccf0 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e reground $option
1cd00 73 28 63 6f 6c 6f 72 73 2c 73 65 74 29 0a 23 20 s(colors,set).#
1cd10 20 20 20 20 24 74 20 74 61 67 20 63 6f 6e 66 20 $t tag conf
1cd20 72 65 64 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 red -foreground
1cd30 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c $options(colors,
1cd40 63 6f 6d 6d 65 6e 74 73 29 0a 23 20 20 20 20 20 comments).#
1cd50 24 74 20 74 61 67 20 63 6f 6e 66 20 63 79 61 6e $t tag conf cyan
1cd60 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1cd70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 76 61 72 tions(colors,var
1cd80 6e 61 6d 65 73 29 0a 0a 20 20 20 20 66 6f 72 65 names).. fore
1cd90 61 63 68 20 69 20 5b 6c 69 73 74 20 6d 61 67 65 ach i [list mage
1cda0 6e 74 61 20 62 6c 75 65 20 67 72 65 79 20 67 72 nta blue grey gr
1cdb0 65 65 6e 20 72 65 64 5d 20 7b 0a 09 24 74 20 74 een red] {..$t t
1cdc0 61 67 20 72 65 6d 6f 76 65 20 24 69 20 24 6c 31 ag remove $i $l1
1cdd0 2e 30 20 22 24 6c 32 2e 30 20 6c 69 6e 65 65 6e .0 "$l2.0 lineen
1cde0 64 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 6f d". }.. fo
1cdf0 72 20 7b 20 73 65 74 20 69 20 24 6c 31 20 7d 20 r { set i $l1 }
1ce00 7b 20 24 69 20 3c 3d 20 24 6c 32 20 7d 20 7b 20 { $i <= $l2 } {
1ce10 69 6e 63 72 20 69 20 7d 20 7b 0a 09 66 6f 72 65 incr i } {..fore
1ce20 61 63 68 20 22 74 61 67 20 6c 69 20 6c 65 22 20 ach "tag li le"
1ce30 5b 6c 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 [lrange [lindex
1ce40 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c $instrumentedfil
1ce50 65 73 49 6e 66 6f 28 24 66 69 6c 65 29 20 5c 0a esInfo($file) \.
1ce60 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1ce70 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 [expr
1ce80 20 24 69 2d 31 5d 5d 20 32 20 65 6e 64 5d 20 7b $i-1]] 2 end] {
1ce90 0a 09 20 20 20 20 24 74 20 74 61 67 20 61 64 64 .. $t tag add
1cea0 20 24 74 61 67 20 24 69 2e 24 6c 69 20 24 69 2e $tag $i.$li $i.
1ceb0 24 6c 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 $le..}. }.
1cec0 20 24 74 20 74 61 67 20 72 61 69 73 65 20 73 65 $t tag raise se
1ced0 6c 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 l. if { $what
1cee0 20 65 71 20 22 74 65 78 74 22 20 7d 20 7b 0a 09 eq "text" } {..
1cef0 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 $text conf -edit
1cf00 61 62 6c 65 20 24 65 64 0a 20 20 20 20 7d 20 65 able $ed. } e
1cf10 6c 73 65 20 7b 0a 09 24 74 65 78 74 5f 73 65 63 lse {..$text_sec
1cf20 6f 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72 65 ondary configure
1cf30 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 -state disabled
1cf40 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
1cf50 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6c 6f amDebugger::Colo
1cf60 72 69 7a 65 53 6c 6f 77 20 7b 20 74 78 74 20 7d rizeSlow { txt }
1cf70 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
1cf80 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 options. vari
1cf90 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 0a 20 able text. .
1cfa0 20 20 20 73 65 74 20 65 64 20 5b 24 74 78 74 20 set ed [$txt
1cfb0 63 67 65 74 20 2d 65 64 69 74 61 62 6c 65 5d 0a cget -editable].
1cfc0 20 20 20 20 24 74 78 74 20 63 6f 6e 66 20 2d 65 $txt conf -e
1cfd0 64 69 74 61 62 6c 65 20 31 0a 0a 20 20 20 20 69 ditable 1.. i
1cfe0 66 20 7b 20 24 74 78 74 20 6e 65 20 24 74 65 78 f { $txt ne $tex
1cff0 74 20 7d 20 7b 0a 09 24 74 78 74 20 63 6f 6e 66 t } {..$txt conf
1d000 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1d010 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 66 6f 72 tions(colors,for
1d020 65 67 72 6f 75 6e 64 29 20 5c 0a 09 20 20 20 20 eground) \..
1d030 2d 62 61 63 6b 67 72 6f 75 6e 64 20 24 6f 70 74 -background $opt
1d040 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 62 61 63 6b ions(colors,back
1d050 67 72 6f 75 6e 64 29 0a 09 24 74 78 74 20 74 61 ground)..$txt ta
1d060 67 20 63 6f 6e 66 20 6d 61 67 65 6e 74 61 20 2d g conf magenta -
1d070 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 foreground $opti
1d080 6f 6e 73 28 63 6f 6c 6f 72 73 2c 63 6f 6d 6d 61 ons(colors,comma
1d090 6e 64 73 29 0a 09 24 74 78 74 20 74 61 67 20 63 nds)..$txt tag c
1d0a0 6f 6e 66 20 6d 61 67 65 6e 74 61 32 20 2d 66 6f onf magenta2 -fo
1d0b0 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f 6e reground $option
1d0c0 73 28 63 6f 6c 6f 72 73 2c 64 65 66 69 6e 65 73 s(colors,defines
1d0d0 29 0a 09 24 74 78 74 20 74 61 67 20 63 6f 6e 66 )..$txt tag conf
1d0e0 20 62 6c 75 65 20 2d 66 6f 72 65 67 72 6f 75 6e blue -foregroun
1d0f0 64 20 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 d $options(color
1d100 73 2c 70 72 6f 63 6e 61 6d 65 73 29 0a 09 24 74 s,procnames)..$t
1d110 78 74 20 74 61 67 20 63 6f 6e 66 20 67 72 65 79 xt tag conf grey
1d120 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 -foreground $op
1d130 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 71 75 6f tions(colors,quo
1d140 74 65 73 74 72 69 6e 67 73 29 0a 09 24 74 78 74 testrings)..$txt
1d150 20 74 61 67 20 63 6f 6e 66 20 67 72 65 65 6e 20 tag conf green
1d160 2d 66 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 -foreground $opt
1d170 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c 73 65 74 29 ions(colors,set)
1d180 0a 09 24 74 78 74 20 74 61 67 20 63 6f 6e 66 20 ..$txt tag conf
1d190 72 65 64 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 red -foreground
1d1a0 24 6f 70 74 69 6f 6e 73 28 63 6f 6c 6f 72 73 2c $options(colors,
1d1b0 63 6f 6d 6d 65 6e 74 73 29 0a 09 24 74 78 74 20 comments)..$txt
1d1c0 74 61 67 20 63 6f 6e 66 20 63 79 61 6e 20 2d 66 tag conf cyan -f
1d1d0 6f 72 65 67 72 6f 75 6e 64 20 24 6f 70 74 69 6f oreground $optio
1d1e0 6e 73 28 63 6f 6c 6f 72 73 2c 76 61 72 6e 61 6d ns(colors,varnam
1d1f0 65 73 29 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 es). }. se
1d200 74 20 69 64 78 20 31 2e 30 0a 20 20 20 20 77 68 t idx 1.0. wh
1d210 69 6c 65 20 31 20 7b 0a 09 73 65 74 20 69 64 78 ile 1 {..set idx
1d220 32 20 5b 24 74 78 74 20 73 65 61 72 63 68 20 2d 2 [$txt search -
1d230 63 6f 75 6e 74 20 52 61 6d 44 65 62 75 67 67 65 count RamDebugge
1d240 72 3a 3a 63 6f 75 6e 74 20 2d 72 65 67 65 78 70 r::count -regexp
1d250 20 7b 70 72 6f 63 5c 73 2b 5c 53 2b 7d 20 24 69 {proc\s+\S+} $i
1d260 64 78 20 65 6e 64 5d 0a 09 69 66 20 7b 20 24 69 dx end]..if { $i
1d270 64 78 32 20 3d 3d 20 22 22 20 7d 20 7b 20 62 72 dx2 == "" } { br
1d280 65 61 6b 20 7d 0a 09 24 74 78 74 20 74 61 67 20 eak }..$txt tag
1d290 61 64 64 20 6d 61 67 65 6e 74 61 20 24 69 64 78 add magenta $idx
1d2a0 32 20 24 69 64 78 32 2b 34 63 0a 09 24 74 78 74 2 $idx2+4c..$txt
1d2b0 20 74 61 67 20 61 64 64 20 62 6c 75 65 20 24 69 tag add blue $i
1d2c0 64 78 32 2b 35 63 20 24 69 64 78 32 2b 24 7b 52 dx2+5c $idx2+${R
1d2d0 61 6d 44 65 62 75 67 67 65 72 3a 3a 63 6f 75 6e amDebugger::coun
1d2e0 74 7d 63 0a 09 73 65 74 20 69 64 78 20 5b 24 74 t}c..set idx [$t
1d2f0 78 74 20 69 6e 64 65 78 20 24 69 64 78 32 2b 24 xt index $idx2+$
1d300 7b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 63 6f {RamDebugger::co
1d310 75 6e 74 7d 63 5d 0a 20 20 20 20 7d 0a 0a 20 20 unt}c]. }..
1d320 20 20 73 65 74 20 73 74 72 69 6e 67 20 7b 5b 5e set string {[^
1d330 5c 5c 5d 5c 22 28 5b 5e 5c 22 5d 2b 5b 5e 5c 5c \\]\"([^\"]+[^\\
1d340 5c 22 5d 29 3f 5c 22 7d 0a 20 20 20 20 73 65 74 \"])?\"}. set
1d350 20 6d 61 67 65 6e 74 61 73 20 7b 5c 6d 28 72 65 magentas {\m(re
1d360 74 75 72 6e 7c 62 72 65 61 6b 7c 77 68 69 6c 65 turn|break|while
1d370 7c 65 76 61 6c 7c 66 6f 72 65 61 63 68 7c 66 6f |eval|foreach|fo
1d380 72 7c 69 66 7c 65 6c 73 65 7c 65 6c 73 65 69 66 r|if|else|elseif
1d390 7c 65 72 72 6f 72 7c 73 77 69 74 63 68 7c 64 65 |error|switch|de
1d3a0 66 61 75 6c 74 29 5c 4d 7d 0a 20 20 20 20 73 65 fault)\M}. se
1d3b0 74 20 67 72 65 65 6e 73 20 7b 5c 6d 28 76 61 72 t greens {\m(var
1d3c0 69 61 62 6c 65 7c 73 65 74 29 5c 4d 7d 0a 20 20 iable|set)\M}.
1d3d0 20 20 73 65 74 20 63 6f 6d 6d 65 6e 74 73 20 7b set comments {
1d3e0 5c 23 2e 2a 24 7d 0a 0a 20 20 20 20 73 65 74 20 \#.*$}.. set
1d3f0 69 64 78 20 31 2e 30 0a 20 20 20 20 77 68 69 6c idx 1.0. whil
1d400 65 20 31 20 7b 0a 09 73 65 74 20 69 64 78 32 20 e 1 {..set idx2
1d410 5b 24 74 78 74 20 73 65 61 72 63 68 20 2d 63 6f [$txt search -co
1d420 75 6e 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a unt RamDebugger:
1d430 3a 63 6f 75 6e 74 20 2d 72 65 67 65 78 70 20 5c :count -regexp \
1d440 0a 09 09 20 20 20 20 20 20 24 73 74 72 69 6e 67 ... $string
1d450 7c 24 6d 61 67 65 6e 74 61 73 7c 24 67 72 65 65 |$magentas|$gree
1d460 6e 73 7c 24 63 6f 6d 6d 65 6e 74 73 20 24 69 64 ns|$comments $id
1d470 78 20 65 6e 64 5d 0a 09 69 66 20 7b 20 24 69 64 x end]..if { $id
1d480 78 32 20 3d 3d 20 22 22 20 7d 20 7b 20 62 72 65 x2 == "" } { bre
1d490 61 6b 20 7d 0a 09 66 6f 72 65 61 63 68 20 22 72 ak }..foreach "r
1d4a0 65 78 20 74 61 67 20 69 63 72 22 20 5b 6c 69 73 ex tag icr" [lis
1d4b0 74 20 24 73 74 72 69 6e 67 20 67 72 65 79 20 31 t $string grey 1
1d4c0 20 24 6d 61 67 65 6e 74 61 73 20 6d 61 67 65 6e $magentas magen
1d4d0 74 61 20 30 20 24 67 72 65 65 6e 73 20 67 72 65 ta 0 $greens gre
1d4e0 65 6e 20 30 20 5c 0a 09 09 20 20 20 20 20 20 20 en 0 \...
1d4f0 20 20 20 20 20 20 20 20 20 20 20 20 24 63 6f 6d $com
1d500 6d 65 6e 74 73 20 72 65 64 20 30 5d 20 7b 0a 09 ments red 0] {..
1d510 20 20 20 20 73 65 74 20 69 64 78 33 20 5b 24 74 set idx3 [$t
1d520 78 74 20 73 65 61 72 63 68 20 2d 72 65 67 65 78 xt search -regex
1d530 70 20 24 72 65 78 20 24 69 64 78 32 20 24 69 64 p $rex $idx2 $id
1d540 78 32 2b 24 7b 52 61 6d 44 65 62 75 67 67 65 72 x2+${RamDebugger
1d550 3a 3a 63 6f 75 6e 74 7d 63 5d 0a 09 20 20 20 20 ::count}c]..
1d560 69 66 20 7b 20 24 69 64 78 33 20 3d 3d 20 24 69 if { $idx3 == $i
1d570 64 78 32 20 7d 20 7b 0a 09 09 24 74 78 74 20 74 dx2 } {...$txt t
1d580 61 67 20 61 64 64 20 24 74 61 67 20 24 69 64 78 ag add $tag $idx
1d590 32 2b 24 7b 69 63 72 7d 63 20 24 69 64 78 32 2b 2+${icr}c $idx2+
1d5a0 24 7b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 63 ${RamDebugger::c
1d5b0 6f 75 6e 74 7d 63 0a 09 09 62 72 65 61 6b 0a 09 ount}c...break..
1d5c0 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 69 64 }..}..set id
1d5d0 78 20 5b 24 74 78 74 20 69 6e 64 65 78 20 24 69 x [$txt index $i
1d5e0 64 78 32 2b 24 7b 52 61 6d 44 65 62 75 67 67 65 dx2+${RamDebugge
1d5f0 72 3a 3a 63 6f 75 6e 74 7d 63 5d 0a 20 20 20 20 r::count}c].
1d600 7d 0a 20 20 20 20 24 74 78 74 20 74 61 67 20 72 }. $txt tag r
1d610 61 69 73 65 20 73 65 6c 0a 20 20 20 20 24 74 78 aise sel. $tx
1d620 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 t conf -editable
1d630 20 24 65 64 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d $ed.}..proc Ram
1d640 44 65 62 75 67 67 65 72 3a 3a 53 61 76 65 46 69 Debugger::SaveFi
1d650 6c 65 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 le { args } {.
1d660 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
1d670 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 variable opt
1d680 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c ions. variabl
1d690 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 e currentfile.
1d6a0 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
1d6b0 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 20 ntfile_endline.
1d6c0 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
1d6d0 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 entfileIsModifie
1d6e0 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 d. variable f
1d6f0 69 6c 65 73 6d 74 69 6d 65 0a 20 20 20 20 76 61 ilesmtime. va
1d700 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 48 riable FileSaveH
1d710 61 6e 64 6c 65 72 73 0a 20 20 20 20 0a 20 20 20 andlers. .
1d720 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a set optional {.
1d730 09 7b 20 2d 66 6f 72 63 65 5f 62 72 6f 77 73 65 .{ -force_browse
1d740 72 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a 09 7b r boolean 0 }..{
1d750 20 2d 6f 6e 6c 79 5f 69 66 5f 6d 6f 64 69 66 69 -only_if_modifi
1d760 65 64 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a 20 ed boolean 0 }.
1d770 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 6f 6d }. set com
1d780 70 75 6c 73 6f 72 79 20 22 77 68 61 74 22 0a 20 pulsory "what".
1d790 20 20 20 70 61 72 73 65 5f 61 72 67 73 20 24 6f parse_args $o
1d7a0 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 ptional $compuls
1d7b0 6f 72 79 20 24 61 72 67 73 0a 20 20 20 20 0a 20 ory $args. .
1d7c0 20 20 20 69 66 20 7b 20 24 6f 6e 6c 79 5f 69 66 if { $only_if
1d7d0 5f 6d 6f 64 69 66 69 65 64 20 26 26 20 21 24 63 _modified && !$c
1d7e0 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 urrentfileIsModi
1d7f0 66 69 65 64 20 7d 20 7b 0a 09 72 65 74 75 72 6e fied } {..return
1d800 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
1d810 24 77 68 61 74 20 65 71 20 22 61 73 6b 22 20 7d $what eq "ask" }
1d820 20 7b 0a 09 69 66 20 7b 20 21 24 63 75 72 72 65 {..if { !$curre
1d830 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 ntfileIsModified
1d840 20 7d 20 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a } { return 0 }.
1d850 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 ..if { [string i
1d860 6e 64 65 78 20 24 63 75 72 72 65 6e 74 66 69 6c ndex $currentfil
1d870 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d 20 7b 0a e 0] != "*" } {.
1d880 09 20 20 20 20 73 65 74 20 6d 65 73 73 61 67 65 . set message
1d890 20 5b 5f 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 [_ "Do you want
1d8a0 20 74 6f 20 73 61 76 65 20 66 69 6c 65 20 27 25 to save file '%
1d8b0 73 27 3f 22 20 24 63 75 72 72 65 6e 74 66 69 6c s'?" $currentfil
1d8c0 65 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 e]..} else {..
1d8d0 20 20 73 65 74 20 6d 65 73 73 61 67 65 20 5b 5f set message [_
1d8e0 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 20 74 6f "Do you want to
1d8f0 20 73 61 76 65 20 27 25 73 27 3f 22 20 24 63 75 save '%s'?" $cu
1d900 72 72 65 6e 74 66 69 6c 65 5d 0a 09 7d 0a 0a 09 rrentfile]..}...
1d910 73 65 74 20 72 65 74 20 5b 73 6e 69 74 5f 6d 65 set ret [snit_me
1d920 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 6c ssageBox -defaul
1d930 74 20 79 65 73 20 2d 69 63 6f 6e 20 71 75 65 73 t yes -icon ques
1d940 74 69 6f 6e 20 2d 6d 65 73 73 61 67 65 20 5c 0a tion -message \.
1d950 09 09 20 20 20 20 20 24 6d 65 73 73 61 67 65 20 .. $message
1d960 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 5c 0a -parent $text \.
1d970 09 09 20 20 20 20 20 2d 74 69 74 6c 65 20 5b 5f .. -title [_
1d980 20 22 53 61 76 65 22 5d 20 2d 74 79 70 65 20 79 "Save"] -type y
1d990 65 73 6e 6f 63 61 6e 63 65 6c 5d 0a 09 69 66 20 esnocancel]..if
1d9a0 7b 20 24 72 65 74 20 65 71 20 22 63 61 6e 63 65 { $ret eq "cance
1d9b0 6c 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 2d 31 l" } { return -1
1d9c0 20 7d 0a 09 69 66 20 7b 20 24 72 65 74 20 65 71 }..if { $ret eq
1d9d0 20 22 6e 6f 22 20 7d 20 7b 0a 09 20 20 20 20 73 "no" } {.. s
1d9e0 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 et currentfileIs
1d9f0 4d 6f 64 69 66 69 65 64 20 30 0a 09 20 20 20 20 Modified 0..
1da00 72 65 74 75 72 6e 20 30 0a 09 7d 0a 20 20 20 20 return 0..}.
1da10 7d 0a 20 20 20 20 73 65 74 20 66 69 6c 65 5f 68 }. set file_h
1da20 61 73 5f 62 65 65 6e 5f 72 65 61 64 20 31 0a 20 as_been_read 1.
1da30 20 20 20 73 65 74 20 4e 65 65 64 73 52 65 69 6e set NeedsRein
1da40 73 74 72 75 6d 65 6e 74 20 30 0a 20 20 20 20 69 strument 0. i
1da50 66 20 7b 20 24 77 68 61 74 20 6e 65 20 22 73 61 f { $what ne "sa
1da60 76 65 61 73 22 20 26 26 20 28 24 63 75 72 72 65 veas" && ($curre
1da70 6e 74 66 69 6c 65 20 3d 3d 20 22 2a 4d 61 63 72 ntfile == "*Macr
1da80 6f 73 2a 22 20 7c 7c 20 5c 0a 09 09 20 20 20 20 os*" || \...
1da90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b [
1daa0 69 6e 66 6f 20 65 78 69 73 74 73 20 46 69 6c 65 info exists File
1dab0 53 61 76 65 48 61 6e 64 6c 65 72 73 28 24 63 75 SaveHandlers($cu
1dac0 72 72 65 6e 74 66 69 6c 65 29 5d 29 20 7d 20 7b rrentfile)]) } {
1dad0 0a 09 73 65 74 20 66 69 6c 65 20 24 63 75 72 72 ..set file $curr
1dae0 65 6e 74 66 69 6c 65 0a 20 20 20 20 7d 20 65 6c entfile. } el
1daf0 73 65 69 66 20 7b 20 24 77 68 61 74 20 3d 3d 20 seif { $what ==
1db00 22 73 61 76 65 61 73 22 20 7c 7c 20 24 63 75 72 "saveas" || $cur
1db10 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 2a 4e 65 rentfile == "*Ne
1db20 77 20 66 69 6c 65 2a 22 20 7c 7c 20 24 63 75 72 w file*" || $cur
1db30 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 22 20 7c rentfile == "" |
1db40 7c 20 5c 0a 09 09 20 20 20 5b 72 65 67 65 78 70 | \... [regexp
1db50 20 7b 5e 5c 2a 2e 2a 5c 2a 24 7d 20 24 63 75 72 {^\*.*\*$} $cur
1db60 72 65 6e 74 66 69 6c 65 5d 20 7d 20 7b 0a 09 69 rentfile] } {..i
1db70 66 20 7b 20 24 77 68 61 74 20 65 71 20 22 61 75 f { $what eq "au
1db80 74 6f 5f 73 61 76 65 22 20 7d 20 7b 20 72 65 74 to_save" } { ret
1db90 75 72 6e 20 7d 0a 09 73 65 74 20 4e 65 65 64 73 urn }..set Needs
1dba0 52 65 69 6e 73 74 72 75 6d 65 6e 74 20 31 0a 09 Reinstrument 1..
1dbb0 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f 70 set w [winfo top
1dbc0 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a 09 73 65 level $text]..se
1dbd0 74 20 74 79 70 65 73 20 5b 47 69 76 65 46 69 6c t types [GiveFil
1dbe0 65 54 79 70 65 46 6f 72 46 69 6c 65 42 72 6f 77 eTypeForFileBrow
1dbf0 73 65 72 5d 0a 09 69 66 20 7b 20 21 5b 69 6e 66 ser]..if { ![inf
1dc00 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 o exists options
1dc10 28 64 65 66 61 75 6c 74 64 69 72 29 5d 20 7d 20 (defaultdir)] }
1dc20 7b 20 73 65 74 20 6f 70 74 69 6f 6e 73 28 64 65 { set options(de
1dc30 66 61 75 6c 74 64 69 72 29 20 5b 70 77 64 5d 20 faultdir) [pwd]
1dc40 7d 0a 09 73 65 74 20 74 69 74 6c 65 20 5b 5f 20 }..set title [_
1dc50 22 53 61 76 65 20 66 69 6c 65 22 5d 0a 09 69 66 "Save file"]..if
1dc60 20 7b 20 24 6f 70 74 69 6f 6e 73 28 6f 70 65 6e { $options(open
1dc70 66 69 6c 65 5f 62 72 6f 77 73 65 72 29 20 7c 7c file_browser) ||
1dc80 20 24 66 6f 72 63 65 5f 62 72 6f 77 73 65 72 20 $force_browser
1dc90 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 69 6c } {.. set fil
1dca0 65 20 5b 74 6b 5f 67 65 74 53 61 76 65 46 69 6c e [tk_getSaveFil
1dcb0 65 20 2d 66 69 6c 65 74 79 70 65 73 20 24 74 79 e -filetypes $ty
1dcc0 70 65 73 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 pes -initialdir
1dcd0 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 $options(default
1dce0 64 69 72 29 20 2d 70 61 72 65 6e 74 20 24 77 20 dir) -parent $w
1dcf0 5c 0a 09 09 20 20 20 20 2d 74 69 74 6c 65 20 24 \... -title $
1dd00 74 69 74 6c 65 5d 0a 09 7d 20 65 6c 73 65 20 7b title]..} else {
1dd10 0a 09 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b .. set file [
1dd20 47 65 74 46 69 6c 65 20 73 61 76 65 20 24 74 79 GetFile save $ty
1dd30 70 65 73 20 24 74 69 74 6c 65 5d 0a 09 7d 0a 09 pes $title]..}..
1dd40 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20 22 22 if { $file == ""
1dd50 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 73 } { return }..s
1dd60 65 74 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 et options(defau
1dd70 6c 74 64 69 72 29 20 5b 66 69 6c 65 20 64 69 72 ltdir) [file dir
1dd80 6e 61 6d 65 20 24 66 69 6c 65 5d 0a 09 73 65 74 name $file]..set
1dd90 20 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f 72 file_has_been_r
1dda0 65 61 64 20 30 0a 20 20 20 20 7d 20 65 6c 73 65 ead 0. } else
1ddb0 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c if { $currentfil
1ddc0 65 20 3d 3d 20 22 2a 4d 61 63 72 6f 73 2a 22 20 e == "*Macros*"
1ddd0 7c 7c 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 || [info exists
1dde0 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 73 FileSaveHandlers
1ddf0 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 ($currentfile)]
1de00 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 63 } {..set file $c
1de10 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 7d urrentfile. }
1de20 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 66 69 6c else {..set fil
1de30 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a e $currentfile..
1de40 09 69 66 20 7b 20 5b 66 69 6c 65 20 6d 74 69 6d .if { [file mtim
1de50 65 20 24 66 69 6c 65 5d 20 3e 20 24 66 69 6c 65 e $file] > $file
1de60 73 6d 74 69 6d 65 28 24 66 69 6c 65 29 20 7d 20 smtime($file) }
1de70 7b 0a 09 20 20 20 20 73 65 74 20 72 65 74 20 5b {.. set ret [
1de80 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 DialogWin::messa
1de90 67 65 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f geBox -default o
1dea0 6b 20 2d 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e k -icon question
1deb0 20 2d 6d 65 73 73 61 67 65 20 5c 0a 09 09 20 20 -message \...
1dec0 20 20 20 20 20 20 20 5b 5f 20 22 46 69 6c 65 20 [_ "File
1ded0 27 25 73 27 20 68 61 73 20 62 65 65 6e 20 6d 6f '%s' has been mo
1dee0 64 69 66 69 65 64 20 6f 75 74 73 69 64 65 20 52 dified outside R
1def0 61 6d 44 65 62 75 67 67 65 72 2e 20 4c 6f 6f 73 amDebugger. Loos
1df00 65 20 65 78 74 65 72 6e 61 6c 20 63 68 61 6e 67 e external chang
1df10 65 73 3f 22 20 24 63 75 72 72 65 6e 74 66 69 6c es?" $currentfil
1df20 65 5d 5c 0a 09 09 20 20 20 20 20 20 20 20 20 2d e]\... -
1df30 70 61 72 65 6e 74 20 24 74 65 78 74 20 2d 74 69 parent $text -ti
1df40 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69 6e 67 22 tle [_ "Warning"
1df50 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63 65 6c ] -type okcancel
1df60 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 74 ].. if { $ret
1df70 20 3d 3d 20 22 63 61 6e 63 65 6c 22 20 7d 20 7b == "cancel" } {
1df80 20 72 65 74 75 72 6e 20 2d 31 20 7d 0a 09 7d 0a return -1 }..}.
1df90 20 20 20 20 7d 0a 20 20 20 20 53 61 76 65 46 69 }. SaveFi
1dfa0 6c 65 46 20 2d 66 69 6c 65 5f 68 61 73 5f 62 65 leF -file_has_be
1dfb0 65 6e 5f 72 65 61 64 20 24 66 69 6c 65 5f 68 61 en_read $file_ha
1dfc0 73 5f 62 65 65 6e 5f 72 65 61 64 20 5c 0a 09 2d s_been_read \..-
1dfd0 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 75 file_endline $cu
1dfe0 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e rrentfile_endlin
1dff0 65 20 24 66 69 6c 65 0a 0a 20 20 20 20 69 66 20 e $file.. if
1e000 7b 20 24 4e 65 65 64 73 52 65 69 6e 73 74 72 75 { $NeedsReinstru
1e010 6d 65 6e 74 20 7d 20 7b 20 72 6c 69 73 74 20 2d ment } { rlist -
1e020 71 75 69 65 74 20 7d 0a 20 20 20 20 72 65 74 75 quiet }. retu
1e030 72 6e 20 30 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d rn 0.}..proc Ram
1e040 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 Debugger::OpenFi
1e050 6c 65 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 le { args } {.
1e060 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f variable optio
1e070 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ns. variable
1e080 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
1e090 65 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 e text_secondary
1e0a0 0a 20 20 0a 20 20 20 20 73 65 74 20 6f 70 74 69 . . set opti
1e0b0 6f 6e 61 6c 20 7b 0a 09 7b 20 2d 66 6f 72 63 65 onal {..{ -force
1e0c0 5f 62 72 6f 77 73 65 72 20 62 6f 6f 6c 65 61 6e _browser boolean
1e0d0 20 30 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 0 }. }. s
1e0e0 65 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 22 et compulsory ""
1e0f0 0a 20 20 20 20 70 61 72 73 65 5f 61 72 67 73 20 . parse_args
1e100 24 6f 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 $optional $compu
1e110 6c 73 6f 72 79 20 24 61 72 67 73 20 20 0a 0a 20 lsory $args ..
1e120 20 20 20 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 set w [winfo
1e130 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a toplevel $text].
1e140 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f . if { ![info
1e150 20 65 78 69 73 74 73 20 74 65 78 74 5f 73 65 63 exists text_sec
1e160 6f 6e 64 61 72 79 5d 20 7c 7c 20 5b 66 6f 63 75 ondary] || [focu
1e170 73 20 2d 6c 61 73 74 66 6f 72 20 24 74 65 78 74 s -lastfor $text
1e180 5d 20 6e 65 20 24 74 65 78 74 5f 73 65 63 6f 6e ] ne $text_secon
1e190 64 61 72 79 20 7d 20 7b 0a 09 69 66 20 7b 20 5b dary } {..if { [
1e1a0 53 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d 3d SaveFile ask] ==
1e1b0 20 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d -1 } { return }
1e1c0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 . }.. set
1e1d0 74 79 70 65 73 20 5b 47 69 76 65 46 69 6c 65 54 types [GiveFileT
1e1e0 79 70 65 46 6f 72 46 69 6c 65 42 72 6f 77 73 65 ypeForFileBrowse
1e1f0 72 5d 0a 0a 20 20 20 20 23 20 20 20 20 20 73 65 r].. # se
1e200 74 20 74 79 70 65 73 20 7b 0a 20 20 20 20 23 20 t types {. #
1e210 20 20 20 20 20 20 20 20 7b 7b 54 43 4c 20 53 63 {{TCL Sc
1e220 72 69 70 74 73 7d 20 20 20 20 20 20 7b 2e 74 63 ripts} {.tc
1e230 6c 7d 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 l} }.
1e240 23 20 20 20 20 20 20 20 20 20 7b 7b 43 2c 43 2b # {{C,C+
1e250 2b 20 66 69 6c 65 73 7d 20 20 20 20 20 20 7b 2e + files} {.
1e260 63 63 20 2e 63 20 2e 68 7d 20 20 20 7d 0a 20 20 cc .c .h} }.
1e270 20 20 23 20 20 20 20 20 20 20 20 20 7b 7b 47 69 # {{Gi
1e280 44 20 66 69 6c 65 73 7d 20 20 20 20 20 20 7b 2e D files} {.
1e290 62 61 73 20 2e 70 72 62 20 2e 6d 61 74 20 2e 63 bas .prb .mat .c
1e2a0 6e 64 7d 20 20 20 7d 0a 20 20 20 20 23 20 20 20 nd} }. #
1e2b0 20 20 20 20 20 20 7b 7b 41 6c 6c 20 46 69 6c 65 {{All File
1e2c0 73 7d 20 20 20 20 20 20 20 20 2a 20 20 20 20 20 s} *
1e2d0 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 23 20 }. #
1e2e0 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 74 69 }. set ti
1e2f0 74 6c 65 20 5b 5f 20 22 4f 70 65 6e 20 73 6f 75 tle [_ "Open sou
1e300 72 63 65 20 66 69 6c 65 22 5d 0a 20 20 20 20 69 rce file"]. i
1e310 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 f { ![info exist
1e320 73 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c s options(defaul
1e330 74 64 69 72 29 5d 20 7d 20 7b 20 73 65 74 20 6f tdir)] } { set o
1e340 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 ptions(defaultdi
1e350 72 29 20 5b 70 77 64 5d 20 7d 0a 20 20 20 20 69 r) [pwd] }. i
1e360 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 6f 70 65 f { $options(ope
1e370 6e 66 69 6c 65 5f 62 72 6f 77 73 65 72 29 20 7c nfile_browser) |
1e380 7c 20 24 66 6f 72 63 65 5f 62 72 6f 77 73 65 72 | $force_browser
1e390 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 5b } {..set file [
1e3a0 74 6b 5f 67 65 74 4f 70 65 6e 46 69 6c 65 20 2d tk_getOpenFile -
1e3b0 66 69 6c 65 74 79 70 65 73 20 24 74 79 70 65 73 filetypes $types
1e3c0 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 6f 70 -initialdir $op
1e3d0 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 tions(defaultdir
1e3e0 29 20 2d 70 61 72 65 6e 74 20 24 77 20 5c 0a 09 ) -parent $w \..
1e3f0 09 2d 74 69 74 6c 65 20 24 74 69 74 6c 65 5d 0a .-title $title].
1e400 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
1e410 74 20 66 69 6c 65 20 5b 47 65 74 46 69 6c 65 20 t file [GetFile
1e420 6f 70 65 6e 20 24 74 79 70 65 73 20 24 74 69 74 open $types $tit
1e430 6c 65 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 le]. }.. i
1e440 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20 22 22 20 f { $file == ""
1e450 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 } { return }.
1e460 20 4f 70 65 6e 46 69 6c 65 46 20 2d 66 6f 72 63 OpenFileF -forc
1e470 65 20 2d 31 20 24 66 69 6c 65 0a 20 20 20 20 46 e -1 $file. F
1e480 69 6c 6c 4c 69 73 74 42 6f 78 0a 7d 0a 0a 70 72 illListBox.}..pr
1e490 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
1e4a0 61 64 64 5f 74 6f 5f 72 65 63 65 6e 74 5f 66 69 add_to_recent_fi
1e4b0 6c 65 73 20 7b 20 66 69 6c 65 20 7d 20 7b 0a 20 les { file } {.
1e4c0 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 variable opti
1e4d0 6f 6e 73 0a 20 20 20 20 0a 20 20 20 20 69 66 20 ons. . if
1e4e0 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
1e4f0 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 options(RecentFi
1e500 6c 65 73 4c 29 5d 20 7d 20 7b 0a 09 73 65 74 20 lesL)] } {..set
1e510 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 options(RecentFi
1e520 6c 65 73 4c 29 20 22 22 0a 20 20 20 20 7d 0a 20 lesL) "". }.
1e530 20 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 set ipos [lse
1e540 61 72 63 68 66 69 6c 65 49 20 24 6f 70 74 69 6f archfileI $optio
1e550 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 ns(RecentFilesL)
1e560 20 30 20 24 66 69 6c 65 5d 0a 20 20 20 20 69 66 0 $file]. if
1e570 20 7b 20 24 69 70 6f 73 20 21 3d 20 2d 31 20 7d { $ipos != -1 }
1e580 20 7b 0a 09 73 65 74 20 65 6c 6d 20 5b 6c 69 6e {..set elm [lin
1e590 64 65 78 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 dex $options(Rec
1e5a0 65 6e 74 46 69 6c 65 73 4c 29 20 24 69 70 6f 73 entFilesL) $ipos
1e5b0 5d 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 ]..set options(R
1e5c0 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 5b 6c 72 ecentFilesL) [lr
1e5d0 65 70 6c 61 63 65 20 24 6f 70 74 69 6f 6e 73 28 eplace $options(
1e5e0 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 24 69 RecentFilesL) $i
1e5f0 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 7d pos $ipos]. }
1e600 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 65 6c 6d else {..set elm
1e610 20 5b 6c 69 73 74 20 24 66 69 6c 65 20 30 5d 0a [list $file 0].
1e620 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6f 70 }. set op
1e630 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 tions(RecentFile
1e640 73 4c 29 20 5b 6c 69 6e 73 65 72 74 20 24 6f 70 sL) [linsert $op
1e650 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 tions(RecentFile
1e660 73 4c 29 20 30 20 24 65 6c 6d 5d 0a 20 20 20 20 sL) 0 $elm].
1e670 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 6f if { [llength $o
1e680 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c ptions(RecentFil
1e690 65 73 4c 29 5d 20 3e 20 31 35 20 7d 20 7b 0a 09 esL)] > 15 } {..
1e6a0 66 6f 72 20 7b 20 73 65 74 20 69 20 5b 65 78 70 for { set i [exp
1e6b0 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6f 70 74 r {[llength $opt
1e6c0 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 ions(RecentFiles
1e6d0 4c 29 5d 2d 31 7d 5d 20 7d 20 7b 20 24 69 20 3e L)]-1}] } { $i >
1e6e0 3d 20 30 20 7d 20 7b 20 69 6e 63 72 20 69 20 2d = 0 } { incr i -
1e6f0 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 1 } {.. if {
1e700 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69 6f 6e 73 [lindex $options
1e710 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 24 (RecentFilesL) $
1e720 69 20 31 5d 20 3d 3d 20 30 20 7d 20 7b 0a 09 09 i 1] == 0 } {...
1e730 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 set options(Rece
1e740 6e 74 46 69 6c 65 73 4c 29 20 5b 6c 72 65 70 6c ntFilesL) [lrepl
1e750 61 63 65 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 ace $options(Rec
1e760 65 6e 74 46 69 6c 65 73 4c 29 20 24 69 20 24 69 entFilesL) $i $i
1e770 5d 0a 09 09 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 ]...if { [llengt
1e780 68 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e h $options(Recen
1e790 74 46 69 6c 65 73 4c 29 5d 20 3c 3d 20 31 35 20 tFilesL)] <= 15
1e7a0 7d 20 7b 0a 09 09 20 20 20 20 62 72 65 61 6b 0a } {... break.
1e7b0 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 ..}.. }..}.
1e7c0 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
1e7d0 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c ebugger::OpenFil
1e7e0 65 46 20 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 eF { args } {.
1e7f0 20 20 76 61 72 69 61 62 6c 65 20 6d 61 72 6b 65 variable marke
1e800 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 r. variable t
1e810 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ext. variable
1e820 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a text_secondary.
1e830 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c variable fil
1e840 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 es. variable
1e850 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20 20 breakpoints.
1e860 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 variable current
1e870 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c file. variabl
1e880 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e e currentfile_en
1e890 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 dline. variab
1e8a0 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 le currentfileIs
1e8b0 4d 6f 64 69 66 69 65 64 0a 20 20 20 20 76 61 72 Modified. var
1e8c0 69 61 62 6c 65 20 57 69 6e 64 6f 77 46 69 6c 65 iable WindowFile
1e8d0 73 4c 69 73 74 0a 20 20 20 20 76 61 72 69 61 62 sList. variab
1e8e0 6c 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 le WindowFilesLi
1e8f0 73 74 4c 69 6e 65 4e 75 6d 73 0a 20 20 20 20 76 stLineNums. v
1e900 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 ariable FileSave
1e910 48 61 6e 64 6c 65 72 73 0a 20 20 20 20 76 61 72 Handlers. var
1e920 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 iable options.
1e930 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
1e940 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
1e950 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 6f 70 . . set op
1e960 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20 2d 66 6f 72 tional {..{ -for
1e970 63 65 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a 09 ce boolean 0 }..
1e980 7b 20 2d 75 73 65 72 5f 6e 75 6d 5f 6c 69 6e 65 { -user_num_line
1e990 20 6c 69 6e 65 20 2d 31 20 7d 0a 09 7b 20 2d 6e line -1 }..{ -n
1e9a0 6f 5f 68 69 73 74 6f 72 79 20 62 6f 6f 6c 65 61 o_history boolea
1e9b0 6e 20 30 20 7d 0a 09 7b 20 2d 72 61 69 73 65 5f n 0 }..{ -raise_
1e9c0 65 72 72 6f 72 20 62 6f 6f 6c 65 61 6e 20 30 20 error boolean 0
1e9d0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 }. }. set
1e9e0 63 6f 6d 70 75 6c 73 6f 72 79 20 22 66 69 6c 65 compulsory "file
1e9f0 22 0a 20 20 20 20 70 61 72 73 65 5f 61 72 67 73 ". parse_args
1ea00 20 24 6f 70 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 $optional $comp
1ea10 75 6c 73 6f 72 79 20 24 61 72 67 73 20 20 0a 20 ulsory $args .
1ea20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24 66 69 . if { $fi
1ea30 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 le == "" } { ret
1ea40 75 72 6e 20 31 20 7d 0a 20 20 20 20 73 65 74 20 urn 1 }. set
1ea50 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c file [filenormal
1ea60 69 7a 65 20 24 66 69 6c 65 5d 0a 0a 20 20 20 20 ize $file]..
1ea70 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 if { [info exist
1ea80 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 s text_secondary
1ea90 5d 20 26 26 20 5b 66 6f 63 75 73 20 2d 6c 61 73 ] && [focus -las
1eaa0 74 66 6f 72 20 24 74 65 78 74 5d 20 65 71 20 24 tfor $text] eq $
1eab0 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 7d text_secondary }
1eac0 20 7b 0a 09 72 65 74 75 72 6e 20 5b 4f 70 65 6e {..return [Open
1ead0 46 69 6c 65 53 65 63 6f 6e 64 61 72 79 20 2d 6e FileSecondary -n
1eae0 6f 5f 68 69 73 74 6f 72 79 20 24 6e 6f 5f 68 69 o_history $no_hi
1eaf0 73 74 6f 72 79 20 24 66 69 6c 65 5d 0a 20 20 20 story $file].
1eb00 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 66 6f }.. if { $fo
1eb10 72 63 65 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 73 rce == -1 } {..s
1eb20 65 74 20 66 6f 72 63 65 20 30 0a 20 20 20 20 7d et force 0. }
1eb30 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20 5b 53 else {..if { [S
1eb40 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d 3d 20 aveFile ask] ==
1eb50 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20 31 20 -1 } { return 1
1eb60 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 57 61 69 }. }.. Wai
1eb70 74 53 74 61 74 65 20 31 0a 20 20 20 20 0a 20 20 tState 1. .
1eb80 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 if { $options(
1eb90 66 69 6c 65 74 79 70 65 29 20 6e 65 20 22 61 75 filetype) ne "au
1eba0 74 6f 22 20 26 26 20 24 6f 70 74 69 6f 6e 73 28 to" && $options(
1ebb0 66 69 6c 65 74 79 70 65 5f 6f 6e 6c 79 5f 74 68 filetype_only_th
1ebc0 69 73 5f 66 69 6c 65 29 20 7d 20 7b 0a 09 73 65 is_file) } {..se
1ebd0 74 20 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79 t options(filety
1ebe0 70 65 29 20 61 75 74 6f 0a 20 20 20 20 7d 0a 20 pe) auto. }.
1ebf0 20 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 if { [set pos
1ec00 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 [lsearch -exact
1ec10 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 $WindowFilesLis
1ec20 74 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d t $currentfile]]
1ec30 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 != -1 } {..set
1ec40 6c 69 6e 65 20 5b 73 63 61 6e 20 5b 24 74 65 78 line [scan [$tex
1ec50 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 20 t index insert]
1ec60 25 64 5d 0a 09 73 65 74 20 57 69 6e 64 6f 77 46 %d]..set WindowF
1ec70 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 ilesListLineNums
1ec80 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 6e 64 [lreplace $Wind
1ec90 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e owFilesListLineN
1eca0 75 6d 73 20 24 70 6f 73 20 24 70 6f 73 20 24 6c ums $pos $pos $l
1ecb0 69 6e 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 ine]. }. s
1ecc0 65 74 20 6c 69 6e 65 6e 75 6d 20 31 0a 20 20 20 et linenum 1.
1ecd0 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20 5b if { [set pos [
1ece0 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 lsearch -exact $
1ecf0 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 WindowFilesList
1ed00 24 66 69 6c 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 $file]] != -1 }
1ed10 7b 0a 09 73 65 74 20 6c 69 6e 65 6e 75 6d 20 5b {..set linenum [
1ed20 6c 69 6e 64 65 78 20 24 57 69 6e 64 6f 77 46 69 lindex $WindowFi
1ed30 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 lesListLineNums
1ed40 24 70 6f 73 5d 0a 20 20 20 20 7d 0a 20 20 20 20 $pos]. }.
1ed50 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20 24 63 if { $file == $c
1ed60 75 72 72 65 6e 74 66 69 6c 65 20 7d 20 7b 0a 09 urrentfile } {..
1ed70 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 set idx [$text i
1ed80 6e 64 65 78 20 69 6e 73 65 72 74 5d 0a 20 20 20 ndex insert].
1ed90 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 69 64 } else { set id
1eda0 78 20 24 6c 69 6e 65 6e 75 6d 2e 30 20 7d 0a 0a x $linenum.0 }..
1edb0 20 20 20 20 69 66 20 7b 20 24 75 73 65 72 5f 6e if { $user_n
1edc0 75 6d 5f 6c 69 6e 65 20 21 3d 20 2d 31 20 7d 20 um_line != -1 }
1edd0 7b 20 73 65 74 20 69 64 78 20 24 75 73 65 72 5f { set idx $user_
1ede0 6e 75 6d 5f 6c 69 6e 65 2e 30 20 7d 0a 0a 20 20 num_line.0 }..
1edf0 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c set currentfil
1ee00 65 5f 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 e_save $currentf
1ee10 69 6c 65 0a 20 20 20 20 73 65 74 20 63 75 72 72 ile. set curr
1ee20 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f entfile_endline_
1ee30 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c save $currentfil
1ee40 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 20 69 66 e_endline. if
1ee50 20 7b 20 21 24 66 6f 72 63 65 20 7d 20 7b 0a 09 { !$force } {..
1ee60 73 65 74 20 63 6f 6d 6d 20 5b 6c 69 73 74 20 72 set comm [list r
1ee70 6c 69 73 74 20 2d 71 75 69 65 74 20 24 66 69 6c list -quiet $fil
1ee80 65 20 7b 7d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 e {}]. } else
1ee90 69 66 20 7b 20 24 66 6f 72 63 65 20 3d 3d 20 32 if { $force == 2
1eea0 20 7d 20 7b 20 0a 09 73 65 74 20 63 6f 6d 6d 20 } { ..set comm
1eeb0 5b 6c 69 73 74 20 72 6c 69 73 74 20 2d 71 75 69 [list rlist -qui
1eec0 65 74 20 2d 72 65 69 6e 73 74 72 75 6d 65 6e 74 et -reinstrument
1eed0 20 24 66 69 6c 65 20 7b 7d 5d 0a 20 20 20 20 7d $file {}]. }
1eee0 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 63 6f 6d else {..set com
1eef0 6d 20 5b 6c 69 73 74 20 72 6c 69 73 74 20 2d 71 m [list rlist -q
1ef00 75 69 65 74 20 2d 66 6f 72 63 65 20 24 66 69 6c uiet -force $fil
1ef10 65 20 7b 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 e {}]. }..
1ef20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 24 63 6f if { [catch $co
1ef30 6d 6d 20 65 72 72 73 74 72 69 6e 67 5d 20 7d 20 mm errstring] }
1ef40 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 {..set currentfi
1ef50 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f le $currentfile_
1ef60 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65 6e save..set curren
1ef70 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 63 tfile_endline $c
1ef80 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 urrentfile_endli
1ef90 6e 65 5f 73 61 76 65 0a 09 57 61 69 74 53 74 61 ne_save..WaitSta
1efa0 74 65 20 30 0a 09 0a 09 69 66 20 7b 20 24 72 61 te 0....if { $ra
1efb0 69 73 65 5f 65 72 72 6f 72 20 7d 20 7b 0a 09 20 ise_error } {..
1efc0 20 20 20 65 72 72 6f 72 20 5b 6c 69 6e 64 65 78 error [lindex
1efd0 20 5b 73 70 6c 69 74 20 24 65 72 72 73 74 72 69 [split $errstri
1efe0 6e 67 20 5c 6e 5d 20 30 5d 0a 09 7d 20 65 6c 73 ng \n] 0]..} els
1eff0 65 20 7b 0a 09 20 20 20 20 57 61 72 6e 57 69 6e e {.. WarnWin
1f000 20 5b 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 [lindex [split
1f010 24 65 72 72 73 74 72 69 6e 67 20 5c 6e 5d 20 30 $errstring \n] 0
1f020 5d 0a 09 20 20 20 20 72 65 74 75 72 6e 20 31 0a ].. return 1.
1f030 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24 6d .}. }.. $m
1f040 61 72 6b 65 72 20 64 65 6c 65 74 65 20 61 72 72 arker delete arr
1f050 6f 77 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64 ow. $marker d
1f060 65 6c 65 74 65 20 62 72 65 61 6b 0a 20 20 20 20 elete break.
1f070 24 6d 61 72 6b 65 72 20 64 65 6c 65 74 65 20 61 $marker delete a
1f080 72 72 6f 77 62 72 65 61 6b 0a 20 20 20 20 73 65 rrowbreak. se
1f090 74 20 65 64 20 5b 24 74 65 78 74 20 63 67 65 74 t ed [$text cget
1f0a0 20 2d 65 64 69 74 61 62 6c 65 5d 0a 20 20 20 20 -editable].
1f0b0 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 $text conf -edit
1f0c0 61 62 6c 65 20 31 0a 20 20 20 20 24 74 65 78 74 able 1. $text
1f0d0 20 63 6c 65 61 72 75 6e 64 6f 0a 20 20 20 20 73 clearundo. s
1f0e0 65 74 20 74 65 78 74 4f 20 5b 24 74 65 78 74 20 et textO [$text
1f0f0 6f 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20 24 74 original]. $t
1f100 65 78 74 4f 20 64 65 6c 20 31 2e 30 20 65 6e 64 extO del 1.0 end
1f110 0a 20 20 20 20 24 74 65 78 74 4f 20 69 6e 73 20 . $textO ins
1f120 65 6e 64 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 end [string map
1f130 5b 6c 69 73 74 20 22 5c 74 22 20 22 20 20 20 20 [list "\t" "
1f140 20 20 20 20 22 5d 20 24 66 69 6c 65 73 28 24 66 "] $files($f
1f150 69 6c 65 29 5d 0a 20 20 20 20 24 74 65 78 74 4f ile)]. $textO
1f160 20 74 61 67 20 61 64 64 20 6e 6f 72 6d 61 6c 20 tag add normal
1f170 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 65 78 1.0 end. $tex
1f180 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 t conf -editable
1f190 20 24 65 64 0a 0a 20 20 20 20 43 6f 6c 6f 72 69 $ed.. Colori
1f1a0 7a 65 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 ze.. foreach
1f1b0 69 20 24 62 72 65 61 6b 70 6f 69 6e 74 73 20 7b i $breakpoints {
1f1c0 0a 09 69 66 20 7b 20 21 5b 41 72 65 46 69 6c 65 ..if { ![AreFile
1f1d0 73 45 71 75 61 6c 20 5b 6c 69 6e 64 65 78 20 24 sEqual [lindex $
1f1e0 69 20 32 5d 20 20 24 66 69 6c 65 5d 20 7d 20 7b i 2] $file] } {
1f1f0 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 73 65 74 continue }..set
1f200 20 6c 69 6e 65 20 5b 6c 69 6e 64 65 78 20 24 69 line [lindex $i
1f210 20 33 5d 0a 09 55 70 64 61 74 65 41 72 72 6f 77 3]..UpdateArrow
1f220 41 6e 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 31 AndBreak $line 1
1f230 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20 55 70 "". }. Up
1f240 64 61 74 65 52 65 6d 6f 74 65 42 72 65 61 6b 73 dateRemoteBreaks
1f250 0a 0a 20 20 20 20 73 65 74 20 4e 75 6d 6c 69 6e .. set Numlin
1f260 65 73 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 es [scan [$text
1f270 69 6e 64 65 78 20 65 6e 64 5d 20 25 64 5d 0a 0a index end] %d]..
1f280 20 20 20 20 73 65 74 20 66 6f 6e 74 20 5b 24 74 set font [$t
1f290 65 78 74 20 63 67 65 74 20 2d 66 6f 6e 74 5d 0a ext cget -font].
1f2a0 20 20 20 20 24 6d 61 72 6b 65 72 20 63 6f 6e 66 $marker conf
1f2b0 69 67 75 72 65 20 2d 73 63 72 6f 6c 6c 72 65 67 igure -scrollreg
1f2c0 69 6f 6e 20 5b 6c 69 73 74 20 30 20 30 20 5b 77 ion [list 0 0 [w
1f2d0 69 6e 66 6f 20 72 65 71 77 69 64 74 68 20 24 6d info reqwidth $m
1f2e0 61 72 6b 65 72 5d 20 5c 0a 09 09 20 20 20 20 20 arker] \...
1f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1f300 20 20 20 20 5b 65 78 70 72 20 24 4e 75 6d 6c 69 [expr $Numli
1f310 6e 65 73 2a 5b 66 6f 6e 74 20 6d 65 74 72 69 63 nes*[font metric
1f320 73 20 24 66 6f 6e 74 20 2d 6c 69 6e 65 73 70 61 s $font -linespa
1f330 63 65 5d 5d 5d 0a 0a 20 20 20 20 24 74 65 78 74 ce]]].. $text
1f340 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 mark set insert
1f350 20 24 69 64 78 0a 20 20 20 20 24 74 65 78 74 20 $idx. $text
1f360 73 65 65 20 24 69 64 78 0a 0a 20 20 20 20 73 65 see $idx.. se
1f370 74 5f 74 69 74 6c 65 20 5b 66 69 6c 65 20 74 61 t_title [file ta
1f380 69 6c 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d il $currentfile]
1f390 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 . set current
1f3a0 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 30 fileIsModified 0
1f3b0 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 6e 6f 5f .. if { !$no_
1f3c0 68 69 73 74 6f 72 79 20 7d 20 7b 0a 09 69 66 20 history } {..if
1f3d0 7b 20 5b 73 65 74 20 70 6f 73 20 5b 6c 73 65 61 { [set pos [lsea
1f3e0 72 63 68 20 2d 65 78 61 63 74 20 24 57 69 6e 64 rch -exact $Wind
1f3f0 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 69 6c owFilesList $fil
1f400 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 20 e]] != -1 } {..
1f410 20 20 20 73 65 74 20 57 69 6e 64 6f 77 46 69 6c set WindowFil
1f420 65 73 4c 69 73 74 20 5b 6c 72 65 70 6c 61 63 65 esList [lreplace
1f430 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 $WindowFilesLis
1f440 74 20 24 70 6f 73 20 24 70 6f 73 5d 0a 09 20 20 t $pos $pos]..
1f450 20 20 73 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 set WindowFile
1f460 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 5b 6c sListLineNums [l
1f470 72 65 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 replace $WindowF
1f480 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 ilesListLineNums
1f490 20 24 70 6f 73 20 24 70 6f 73 5d 0a 09 7d 0a 09 $pos $pos]..}..
1f4a0 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64 if { [string ind
1f4b0 65 78 20 24 66 69 6c 65 20 30 5d 20 21 3d 20 22 ex $file 0] != "
1f4c0 2a 22 20 7c 7c 20 5b 69 6e 66 6f 20 65 78 69 73 *" || [info exis
1f4d0 74 73 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c ts FileSaveHandl
1f4e0 65 72 73 28 24 66 69 6c 65 29 5d 20 7d 20 7b 0a ers($file)] } {.
1f4f0 09 20 20 20 20 6c 61 70 70 65 6e 64 20 57 69 6e . lappend Win
1f500 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 69 dowFilesList $fi
1f510 6c 65 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 le.. lappend
1f520 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c WindowFilesListL
1f530 69 6e 65 4e 75 6d 73 20 24 6c 69 6e 65 6e 75 6d ineNums $linenum
1f540 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 24 74 ..}. }. $t
1f550 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 ext conf -editab
1f560 6c 65 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 5b le 1.. if { [
1f570 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 66 69 string index $fi
1f580 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d 20 7b le 0] != "*" } {
1f590 0a 09 69 66 20 7b 20 21 24 6e 6f 5f 68 69 73 74 ..if { !$no_hist
1f5a0 6f 72 79 20 7d 20 7b 0a 09 20 20 20 20 61 64 64 ory } {.. add
1f5b0 5f 74 6f 5f 72 65 63 65 6e 74 5f 66 69 6c 65 73 _to_recent_files
1f5c0 20 24 66 69 6c 65 0a 09 7d 0a 09 73 65 74 20 6f $file..}..set o
1f5d0 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 ptions(defaultdi
1f5e0 72 29 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 r) [file dirname
1f5f0 20 24 66 69 6c 65 5d 0a 09 23 46 69 6c 6c 4c 69 $file]..#FillLi
1f600 73 74 42 6f 78 0a 20 20 20 20 7d 0a 20 20 20 20 stBox. }.
1f610 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 set filetype [Gi
1f620 76 65 46 69 6c 65 54 79 70 65 20 24 66 69 6c 65 veFileType $file
1f630 5d 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 ]. RamDebugge
1f640 72 3a 3a 41 64 64 46 69 6c 65 54 79 70 65 4d 65 r::AddFileTypeMe
1f650 6e 75 20 24 66 69 6c 65 74 79 70 65 0a 0a 20 20 nu $filetype..
1f660 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 if { [info exi
1f670 73 74 73 20 63 75 72 72 65 6e 74 66 69 6c 65 5f sts currentfile_
1f680 73 65 63 6f 6e 64 61 72 79 5d 20 7d 20 7b 0a 09 secondary] } {..
1f690 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c if { $currentfil
1f6a0 65 20 65 71 20 24 63 75 72 72 65 6e 74 66 69 6c e eq $currentfil
1f6b0 65 5f 73 65 63 6f 6e 64 61 72 79 20 7d 20 7b 0a e_secondary } {.
1f6c0 09 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 69 . $text confi
1f6d0 67 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69 gure -synctextwi
1f6e0 64 67 65 74 20 24 74 65 78 74 5f 73 65 63 6f 6e dget $text_secon
1f6f0 64 61 72 79 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 dary..} else {..
1f700 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 69 67 $text config
1f710 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69 64 ure -synctextwid
1f720 67 65 74 20 22 22 0a 09 7d 0a 20 20 20 20 7d 0a get ""..}. }.
1f730 20 20 20 20 4d 61 6e 61 67 65 50 6f 73 69 74 69 ManagePositi
1f740 6f 6e 73 49 6d 61 67 65 73 0a 20 20 20 20 52 61 onsImages. Ra
1f750 6d 44 65 62 75 67 67 65 72 3a 3a 56 43 53 3a 3a mDebugger::VCS::
1f760 69 6e 64 69 63 61 74 6f 72 5f 75 70 64 61 74 65 indicator_update
1f770 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 20 30 . WaitState 0
1f780 0a 20 20 20 20 69 66 20 7b 20 5b 66 6f 63 75 73 . if { [focus
1f790 20 2d 6c 61 73 74 66 6f 72 20 24 74 65 78 74 5d -lastfor $text]
1f7a0 20 65 71 20 24 74 65 78 74 20 7c 7c 20 5c 0a 09 eq $text || \..
1f7b0 20 20 20 20 20 5b 66 6f 63 75 73 20 2d 6c 61 73 [focus -las
1f7c0 74 66 6f 72 20 24 74 65 78 74 5d 20 65 71 20 5b tfor $text] eq [
1f7d0 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 winfo toplevel $
1f7e0 74 65 78 74 5d 20 7d 20 7b 0a 09 66 6f 63 75 73 text] } {..focus
1f7f0 20 2d 66 6f 72 63 65 20 24 74 65 78 74 0a 20 20 -force $text.
1f800 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 30 }. return 0
1f810 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
1f820 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 53 65 gger::OpenFileSe
1f830 63 6f 6e 64 61 72 79 20 7b 20 61 72 67 73 20 7d condary { args }
1f840 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
1f850 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
1f860 65 20 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 e text_secondary
1f870 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 69 . variable fi
1f880 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 les. variable
1f890 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 currentfile.
1f8a0 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e variable curren
1f8b0 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a 20 20 tfile_endline.
1f8c0 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
1f8d0 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
1f8e0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
1f8f0 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 rrentfileIsModif
1f900 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ied. variable
1f910 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 WindowFilesList
1f920 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 . variable Wi
1f930 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e ndowFilesListLin
1f940 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62 eNums. variab
1f950 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 0a le options. .
1f960 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c set optional
1f970 20 7b 0a 09 7b 20 2d 6e 6f 5f 68 69 73 74 6f 72 {..{ -no_histor
1f980 79 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a 20 20 y boolean 0 }.
1f990 20 20 7d 0a 20 20 20 20 73 65 74 20 63 6f 6d 70 }. set comp
1f9a0 75 6c 73 6f 72 79 20 22 66 69 6c 65 22 0a 20 20 ulsory "file".
1f9b0 20 20 70 61 72 73 65 5f 61 72 67 73 20 24 6f 70 parse_args $op
1f9c0 74 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 6f tional $compulso
1f9d0 72 79 20 24 61 72 67 73 20 20 0a 0a 20 20 20 20 ry $args ..
1f9e0 57 61 69 74 53 74 61 74 65 20 31 0a 0a 20 20 20 WaitState 1..
1f9f0 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 66 if { $options(f
1fa00 69 6c 65 74 79 70 65 29 20 6e 65 20 22 61 75 74 iletype) ne "aut
1fa10 6f 22 20 26 26 20 24 6f 70 74 69 6f 6e 73 28 66 o" && $options(f
1fa20 69 6c 65 74 79 70 65 5f 6f 6e 6c 79 5f 74 68 69 iletype_only_thi
1fa30 73 5f 66 69 6c 65 29 20 7d 20 7b 0a 09 73 65 74 s_file) } {..set
1fa40 20 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 options(filetyp
1fa50 65 29 20 61 75 74 6f 0a 20 20 20 20 7d 0a 20 20 e) auto. }.
1fa60 20 20 73 65 74 20 6c 69 6e 65 6e 75 6d 20 31 0a set linenum 1.
1fa70 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20 65 if { $file e
1fa80 71 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 7d q $currentfile }
1fa90 20 7b 0a 09 73 65 74 20 6c 69 6e 65 6e 75 6d 20 {..set linenum
1faa0 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 [scan [$text ind
1fab0 65 78 20 69 6e 73 65 72 74 5d 20 25 64 5d 0a 20 ex insert] %d].
1fac0 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 73 } elseif { [s
1fad0 65 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 et pos [lsearch
1fae0 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69 -exact $WindowFi
1faf0 6c 65 73 4c 69 73 74 20 24 66 69 6c 65 5d 5d 20 lesList $file]]
1fb00 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 6c != -1 } {..set l
1fb10 69 6e 65 6e 75 6d 20 5b 6c 69 6e 64 65 78 20 24 inenum [lindex $
1fb20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c WindowFilesListL
1fb30 69 6e 65 4e 75 6d 73 20 24 70 6f 73 5d 0a 20 20 ineNums $pos].
1fb40 20 20 7d 0a 20 20 20 20 73 65 74 20 69 64 78 20 }. set idx
1fb50 24 6c 69 6e 65 6e 75 6d 2e 30 0a 0a 20 20 20 20 $linenum.0..
1fb60 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f set currentfile_
1fb70 73 61 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c save $currentfil
1fb80 65 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e e. set curren
1fb90 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 tfile_endline_sa
1fba0 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f ve $currentfile_
1fbb0 65 6e 64 6c 69 6e 65 0a 20 20 20 20 73 65 74 20 endline. set
1fbc0 63 6f 6d 6d 20 5b 6c 69 73 74 20 72 6c 69 73 74 comm [list rlist
1fbd0 20 2d 71 75 69 65 74 20 24 66 69 6c 65 20 7b 7d -quiet $file {}
1fbe0 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 ].. if { [cat
1fbf0 63 68 20 24 63 6f 6d 6d 20 65 72 72 73 74 72 69 ch $comm errstri
1fc00 6e 67 5d 20 7d 20 7b 0a 09 73 65 74 20 63 75 72 ng] } {..set cur
1fc10 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e rentfile $curren
1fc20 74 66 69 6c 65 5f 73 61 76 65 0a 09 73 65 74 20 tfile_save..set
1fc30 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c currentfile_endl
1fc40 69 6e 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ine $currentfile
1fc50 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 0a 09 57 _endline_save..W
1fc60 61 69 74 53 74 61 74 65 20 30 0a 09 57 61 72 6e aitState 0..Warn
1fc70 57 69 6e 20 5b 6c 69 6e 64 65 78 20 5b 73 70 6c Win [lindex [spl
1fc80 69 74 20 24 65 72 72 73 74 72 69 6e 67 20 5c 6e it $errstring \n
1fc90 5d 20 30 5d 0a 09 72 65 74 75 72 6e 20 31 0a 20 ] 0]..return 1.
1fca0 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 75 72 }. set cur
1fcb0 72 65 6e 74 66 69 6c 65 20 24 63 75 72 72 65 6e rentfile $curren
1fcc0 74 66 69 6c 65 5f 73 61 76 65 0a 20 20 20 20 73 tfile_save. s
1fcd0 65 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 et currentfile_e
1fce0 6e 64 6c 69 6e 65 20 24 63 75 72 72 65 6e 74 66 ndline $currentf
1fcf0 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 ile_endline_save
1fd00 0a 0a 20 20 20 20 24 74 65 78 74 5f 73 65 63 6f .. $text_seco
1fd10 6e 64 61 72 79 20 63 6f 6e 66 69 67 75 72 65 20 ndary configure
1fd20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 -state normal.
1fd30 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 $text_secondar
1fd40 79 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 y delete 1.0 end
1fd50 0a 20 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e . $text_secon
1fd60 64 61 72 79 20 69 6e 73 20 65 6e 64 20 5b 73 74 dary ins end [st
1fd70 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 ring map [list "
1fd80 5c 74 22 20 22 20 20 20 20 20 20 20 20 22 5d 20 \t" " "]
1fd90 24 66 69 6c 65 73 28 24 66 69 6c 65 29 5d 0a 20 $files($file)].
1fda0 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 $text_seconda
1fdb0 72 79 20 74 61 67 20 61 64 64 20 6e 6f 72 6d 61 ry tag add norma
1fdc0 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 l 1.0 end. $t
1fdd0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 63 6f ext_secondary co
1fde0 6e 66 69 67 75 72 65 20 2d 73 74 61 74 65 20 64 nfigure -state d
1fdf0 69 73 61 62 6c 65 64 0a 0a 20 20 20 20 73 65 74 isabled.. set
1fe00 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 options(default
1fe10 64 69 72 29 20 5b 66 69 6c 65 20 64 69 72 6e 61 dir) [file dirna
1fe20 6d 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 73 65 me $file]. se
1fe30 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 t currentfile_se
1fe40 63 6f 6e 64 61 72 79 20 24 66 69 6c 65 0a 0a 20 condary $file..
1fe50 20 20 20 43 6f 6c 6f 72 69 7a 65 20 74 65 78 74 Colorize text
1fe60 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 _secondary..
1fe70 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 20 $text_secondary
1fe80 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 mark set insert
1fe90 24 69 64 78 0a 20 20 20 20 24 74 65 78 74 5f 73 $idx. $text_s
1fea0 65 63 6f 6e 64 61 72 79 20 73 65 65 20 24 69 64 econdary see $id
1feb0 78 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 x. . if {
1fec0 21 24 6e 6f 5f 68 69 73 74 6f 72 79 20 7d 20 7b !$no_history } {
1fed0 0a 09 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 ..if { [lsearch
1fee0 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69 -exact $WindowFi
1fef0 6c 65 73 4c 69 73 74 20 24 66 69 6c 65 5d 20 3d lesList $file] =
1ff00 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 6c 61 = -1 } {.. la
1ff10 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65 ppend WindowFile
1ff20 73 4c 69 73 74 20 24 66 69 6c 65 0a 09 20 20 20 sList $file..
1ff30 20 6c 61 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 lappend WindowF
1ff40 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 ilesListLineNums
1ff50 20 24 6c 69 6e 65 6e 75 6d 0a 09 7d 0a 20 20 20 $linenum..}.
1ff60 20 7d 0a 20 20 20 20 53 65 63 6f 6e 64 61 72 79 }. Secondary
1ff70 54 65 78 74 48 65 6c 70 20 73 68 6f 77 0a 0a 20 TextHelp show..
1ff80 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 if { $current
1ff90 66 69 6c 65 20 65 71 20 24 63 75 72 72 65 6e 74 file eq $current
1ffa0 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 20 7d file_secondary }
1ffb0 20 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 69 67 {..$text config
1ffc0 75 72 65 20 2d 73 79 6e 63 74 65 78 74 77 69 64 ure -synctextwid
1ffd0 67 65 74 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 get $text_second
1ffe0 61 72 79 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b ary. } else {
1fff0 0a 09 24 74 65 78 74 20 63 6f 6e 66 69 67 75 72 ..$text configur
20000 65 20 2d 73 79 6e 63 74 65 78 74 77 69 64 67 65 e -synctextwidge
20010 74 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20 57 t "". }. W
20020 61 69 74 53 74 61 74 65 20 30 0a 20 20 20 20 72 aitState 0. r
20030 65 74 75 72 6e 20 30 0a 7d 0a 0a 70 72 6f 63 20 eturn 0.}..proc
20040 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 RamDebugger::Upd
20050 61 74 65 48 61 6e 64 6c 65 72 46 6f 72 46 69 6c ateHandlerForFil
20060 65 53 61 76 65 20 7b 20 66 69 6c 65 20 68 61 6e eSave { file han
20070 64 6c 65 72 20 7d 20 7b 0a 20 20 20 20 76 61 72 dler } {. var
20080 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 48 61 iable FileSaveHa
20090 6e 64 6c 65 72 73 0a 0a 20 20 20 20 69 66 20 7b ndlers.. if {
200a0 20 24 68 61 6e 64 6c 65 72 20 6e 65 20 22 22 20 $handler ne ""
200b0 7d 20 7b 0a 09 73 65 74 20 46 69 6c 65 53 61 76 } {..set FileSav
200c0 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 eHandlers($file)
200d0 20 24 68 61 6e 64 6c 65 72 0a 20 20 20 20 7d 20 $handler. }
200e0 65 6c 73 65 20 7b 0a 09 75 6e 73 65 74 20 2d 6e else {..unset -n
200f0 6f 63 6f 6d 70 6c 61 69 6e 20 46 69 6c 65 53 61 ocomplain FileSa
20100 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 veHandlers($file
20110 29 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 ). }.}..proc
20120 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 RamDebugger::Ope
20130 6e 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 nFileSaveHandler
20140 20 7b 20 66 69 6c 65 20 64 61 74 61 20 68 61 6e { file data han
20150 64 6c 65 72 20 7d 20 7b 0a 20 20 20 20 76 61 72 dler } {. var
20160 69 61 62 6c 65 20 6d 61 72 6b 65 72 0a 20 20 20 iable marker.
20170 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 variable text.
20180 20 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 variable file
20190 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 s. variable f
201a0 69 6c 65 73 5f 65 6e 64 6c 69 6e 65 0a 20 20 20 iles_endline.
201b0 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70 variable breakp
201c0 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 61 62 oints. variab
201d0 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 le currentfile.
201e0 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 variable curr
201f0 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 0a entfile_endline.
20200 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
20210 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 rentfileIsModifi
20220 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ed. variable
20230 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a WindowFilesList.
20240 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e variable Win
20250 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 dowFilesListLine
20260 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62 6c Nums. variabl
20270 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 e options. va
20280 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 48 riable FileSaveH
20290 61 6e 64 6c 65 72 73 0a 20 20 20 20 76 61 72 69 andlers. vari
202a0 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 able currentfile
202b0 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 _secondary. v
202c0 61 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 63 ariable text_sec
202d0 6f 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 7b ondary.. if {
202e0 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 [string index $
202f0 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d file 0] != "*" }
20300 20 7b 0a 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22 {..WarnWin [_ "
20310 46 69 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 62 File name must b
20320 65 67 69 6e 20 77 69 74 68 3a 20 27 2a 27 22 5d egin with: '*'"]
20330 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d ..return 1. }
20340 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b . . if { [
20350 53 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d 3d SaveFile ask] ==
20360 20 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d -1 } { return }
20370 0a 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 20 .. WaitState
20380 31 0a 0a 20 20 20 20 69 66 20 7b 20 24 6f 70 74 1.. if { $opt
20390 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 20 6e ions(filetype) n
203a0 65 20 22 61 75 74 6f 22 20 26 26 20 24 6f 70 74 e "auto" && $opt
203b0 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 5f 6f 6e ions(filetype_on
203c0 6c 79 5f 74 68 69 73 5f 66 69 6c 65 29 20 7d 20 ly_this_file) }
203d0 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 66 {..set options(f
203e0 69 6c 65 74 79 70 65 29 20 61 75 74 6f 0a 20 20 iletype) auto.
203f0 20 20 7d 0a 20 20 20 20 73 65 74 20 6c 69 6e 65 }. set line
20400 6e 75 6d 20 31 0a 20 20 20 20 69 66 20 7b 20 24 num 1. if { $
20410 66 69 6c 65 20 3d 3d 20 24 63 75 72 72 65 6e 74 file == $current
20420 66 69 6c 65 20 7d 20 7b 0a 09 73 65 74 20 69 64 file } {..set id
20430 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 x [$text index i
20440 6e 73 65 72 74 5d 0a 20 20 20 20 7d 20 65 6c 73 nsert]. } els
20450 65 20 7b 20 73 65 74 20 69 64 78 20 24 6c 69 6e e { set idx $lin
20460 65 6e 75 6d 2e 30 20 7d 0a 0a 20 20 20 20 73 65 enum.0 }.. se
20470 74 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 61 t currentfile_sa
20480 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 0a ve $currentfile.
20490 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 set currentf
204a0 69 6c 65 5f 65 6e 64 6c 69 6e 65 5f 73 61 76 65 ile_endline_save
204b0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e $currentfile_en
204c0 64 6c 69 6e 65 0a 20 20 20 20 73 65 74 20 66 69 dline. set fi
204d0 6c 65 73 28 24 66 69 6c 65 29 20 24 64 61 74 61 les($file) $data
204e0 0a 20 20 20 20 73 65 74 20 66 69 6c 65 73 5f 65 . set files_e
204f0 6e 64 6c 69 6e 65 28 24 66 69 6c 65 29 20 61 75 ndline($file) au
20500 74 6f 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 to. set comm
20510 5b 6c 69 73 74 20 72 6c 69 73 74 20 2d 71 75 69 [list rlist -qui
20520 65 74 20 24 66 69 6c 65 20 7b 7d 5d 0a 0a 20 20 et $file {}]..
20530 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 24 63 if { [catch $c
20540 6f 6d 6d 20 65 72 72 73 74 72 69 6e 67 5d 20 7d omm errstring] }
20550 20 7b 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 {..set currentf
20560 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ile $currentfile
20570 5f 73 61 76 65 0a 09 73 65 74 20 63 75 72 72 65 _save..set curre
20580 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 ntfile_endline $
20590 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c currentfile_endl
205a0 69 6e 65 5f 73 61 76 65 0a 09 75 6e 73 65 74 20 ine_save..unset
205b0 66 69 6c 65 73 28 24 66 69 6c 65 29 0a 09 75 6e files($file)..un
205c0 73 65 74 20 66 69 6c 65 73 5f 65 6e 64 6c 69 6e set files_endlin
205d0 65 28 24 66 69 6c 65 29 0a 09 57 61 69 74 53 74 e($file)..WaitSt
205e0 61 74 65 20 30 0a 09 57 61 72 6e 57 69 6e 20 5b ate 0..WarnWin [
205f0 6c 69 6e 64 65 78 20 5b 73 70 6c 69 74 20 24 65 lindex [split $e
20600 72 72 73 74 72 69 6e 67 20 5c 6e 5d 20 30 5d 0a rrstring \n] 0].
20610 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a .return 1. }.
20620 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64 65 6c . $marker del
20630 65 74 65 20 61 72 72 6f 77 0a 20 20 20 20 24 6d ete arrow. $m
20640 61 72 6b 65 72 20 64 65 6c 65 74 65 20 62 72 65 arker delete bre
20650 61 6b 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 64 ak. $marker d
20660 65 6c 65 74 65 20 61 72 72 6f 77 62 72 65 61 6b elete arrowbreak
20670 0a 20 20 20 20 73 65 74 20 65 64 20 5b 24 74 65 . set ed [$te
20680 78 74 20 63 67 65 74 20 2d 65 64 69 74 61 62 6c xt cget -editabl
20690 65 5d 0a 20 20 20 20 24 74 65 78 74 20 63 6f 6e e]. $text con
206a0 66 20 2d 65 64 69 74 61 62 6c 65 20 31 0a 20 20 f -editable 1.
206b0 20 20 24 74 65 78 74 20 63 6c 65 61 72 75 6e 64 $text clearund
206c0 6f 0a 20 20 20 20 73 65 74 20 74 65 78 74 4f 20 o. set textO
206d0 5b 24 74 65 78 74 20 6f 72 69 67 69 6e 61 6c 5d [$text original]
206e0 0a 20 20 20 20 24 74 65 78 74 4f 20 64 65 6c 20 . $textO del
206f0 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 65 78 1.0 end. $tex
20700 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 69 tO ins end [stri
20710 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 ng map [list "\t
20720 22 20 22 20 20 20 20 20 20 20 20 22 5d 20 24 66 " " "] $f
20730 69 6c 65 73 28 24 66 69 6c 65 29 5d 0a 20 20 20 iles($file)].
20740 20 24 74 65 78 74 4f 20 74 61 67 20 61 64 64 20 $textO tag add
20750 6e 6f 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a 20 normal 1.0 end.
20760 20 20 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 $text conf -e
20770 64 69 74 61 62 6c 65 20 24 65 64 0a 0a 20 20 20 ditable $ed..
20780 20 43 6f 6c 6f 72 69 7a 65 0a 0a 20 20 20 20 66 Colorize.. f
20790 6f 72 65 61 63 68 20 69 20 24 62 72 65 61 6b 70 oreach i $breakp
207a0 6f 69 6e 74 73 20 7b 0a 09 69 66 20 7b 20 21 5b oints {..if { ![
207b0 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 5b 6c AreFilesEqual [l
207c0 69 6e 64 65 78 20 24 69 20 32 5d 20 20 24 66 69 index $i 2] $fi
207d0 6c 65 5d 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 le] } { continue
207e0 20 7d 0a 09 73 65 74 20 6c 69 6e 65 20 5b 6c 69 }..set line [li
207f0 6e 64 65 78 20 24 69 20 33 5d 0a 09 55 70 64 61 ndex $i 3]..Upda
20800 74 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 teArrowAndBreak
20810 24 6c 69 6e 65 20 31 20 22 22 0a 20 20 20 20 7d $line 1 "". }
20820 0a 20 20 20 20 55 70 64 61 74 65 52 65 6d 6f 74 . UpdateRemot
20830 65 42 72 65 61 6b 73 0a 0a 20 20 20 20 73 65 74 eBreaks.. set
20840 20 4e 75 6d 6c 69 6e 65 73 20 5b 73 63 61 6e 20 Numlines [scan
20850 5b 24 74 65 78 74 20 69 6e 64 65 78 20 65 6e 64 [$text index end
20860 5d 20 25 64 5d 0a 0a 20 20 20 20 73 65 74 20 66 ] %d].. set f
20870 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65 74 20 ont [$text cget
20880 2d 66 6f 6e 74 5d 0a 20 20 20 20 24 6d 61 72 6b -font]. $mark
20890 65 72 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 63 er configure -sc
208a0 72 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c 69 73 74 rollregion [list
208b0 20 30 20 30 20 5b 77 69 6e 66 6f 20 72 65 71 77 0 0 [winfo reqw
208c0 69 64 74 68 20 24 6d 61 72 6b 65 72 5d 20 5c 0a idth $marker] \.
208d0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
208e0 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 [expr
208f0 20 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66 6f 6e 74 $Numlines*[font
20900 20 6d 65 74 72 69 63 73 20 24 66 6f 6e 74 20 2d metrics $font -
20910 6c 69 6e 65 73 70 61 63 65 5d 5d 5d 0a 0a 20 20 linespace]]]..
20920 20 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 $text mark set
20930 20 69 6e 73 65 72 74 20 24 69 64 78 0a 20 20 20 insert $idx.
20940 20 24 74 65 78 74 20 73 65 65 20 24 69 64 78 0a $text see $idx.
20950 0a 20 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b . set_title [
20960 66 69 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 file tail $curre
20970 6e 74 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 ntfile]. set
20980 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 currentfileIsMod
20990 69 66 69 65 64 20 30 0a 0a 20 20 20 20 69 66 20 ified 0.. if
209a0 7b 20 5b 73 65 74 20 70 6f 73 20 5b 6c 73 65 61 { [set pos [lsea
209b0 72 63 68 20 2d 65 78 61 63 74 20 24 57 69 6e 64 rch -exact $Wind
209c0 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 69 6c owFilesList $fil
209d0 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 e]] != -1 } {..s
209e0 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 et WindowFilesLi
209f0 73 74 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 st [lreplace $Wi
20a00 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 70 ndowFilesList $p
20a10 6f 73 20 24 70 6f 73 5d 0a 09 73 65 74 20 57 69 os $pos]..set Wi
20a20 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e ndowFilesListLin
20a30 65 4e 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20 eNums [lreplace
20a40 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 $WindowFilesList
20a50 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70 LineNums $pos $p
20a60 6f 73 5d 0a 20 20 20 20 7d 0a 20 20 20 20 6c 61 os]. }. la
20a70 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65 ppend WindowFile
20a80 73 4c 69 73 74 20 24 66 69 6c 65 0a 20 20 20 20 sList $file.
20a90 6c 61 70 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 lappend WindowFi
20aa0 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 lesListLineNums
20ab0 24 6c 69 6e 65 6e 75 6d 0a 0a 20 20 20 20 24 74 $linenum.. $t
20ac0 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 ext conf -editab
20ad0 6c 65 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 24 le 1.. if { $
20ae0 68 61 6e 64 6c 65 72 20 6e 65 20 22 22 20 7d 20 handler ne "" }
20af0 7b 0a 09 73 65 74 20 46 69 6c 65 53 61 76 65 48 {..set FileSaveH
20b00 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 20 24 andlers($file) $
20b10 68 61 6e 64 6c 65 72 0a 20 20 20 20 7d 20 65 6c handler. } el
20b20 73 65 20 7b 0a 09 75 6e 73 65 74 20 2d 6e 6f 63 se {..unset -noc
20b30 6f 6d 70 6c 61 69 6e 20 46 69 6c 65 53 61 76 65 omplain FileSave
20b40 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 29 0a Handlers($file).
20b50 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b }. if { [
20b60 69 6e 66 6f 20 65 78 69 73 74 73 20 63 75 72 72 info exists curr
20b70 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 entfile_secondar
20b80 79 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 24 63 75 y] } {..if { $cu
20b90 72 72 65 6e 74 66 69 6c 65 20 65 71 20 24 63 75 rrentfile eq $cu
20ba0 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 rrentfile_second
20bb0 61 72 79 20 7d 20 7b 0a 09 20 20 20 20 24 74 65 ary } {.. $te
20bc0 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 xt configure -sy
20bd0 6e 63 74 65 78 74 77 69 64 67 65 74 20 24 74 65 nctextwidget $te
20be0 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20 xt_secondary..}
20bf0 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 74 65 78 else {.. $tex
20c00 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e t configure -syn
20c10 63 74 65 78 74 77 69 64 67 65 74 20 22 22 0a 09 ctextwidget ""..
20c20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 4d 61 6e 61 }. }. Mana
20c30 67 65 50 6f 73 69 74 69 6f 6e 73 49 6d 61 67 65 gePositionsImage
20c40 73 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74 s.. set filet
20c50 79 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 ype [GiveFileTyp
20c60 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a e $currentfile].
20c70 20 20 20 20 41 64 64 46 69 6c 65 54 79 70 65 4d AddFileTypeM
20c80 65 6e 75 20 24 66 69 6c 65 74 79 70 65 0a 0a 20 enu $filetype..
20c90 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a 20 WaitState 0.
20ca0 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 70 return 0.}..p
20cb0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
20cc0 3a 52 65 69 6e 73 74 72 75 6d 65 6e 74 43 75 72 :ReinstrumentCur
20cd0 72 65 6e 74 46 69 6c 65 20 7b 7d 20 7b 0a 20 20 rentFile {} {.
20ce0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
20cf0 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
20d00 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 rentfile. var
20d10 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
20d20 65 5f 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 e_secondary..
20d30 20 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 set idx [$text
20d40 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 0a 20 20 index insert].
20d50 20 20 73 65 74 20 73 65 6c 20 5b 24 74 65 78 74 set sel [$text
20d60 20 74 61 67 20 6e 65 78 74 72 61 6e 67 65 20 73 tag nextrange s
20d70 65 6c 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 el 1.0 end].
20d80 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b set err [catch {
20d90 20 72 6c 69 73 74 20 2d 71 75 69 65 74 20 2d 72 rlist -quiet -r
20da0 65 69 6e 73 74 72 75 6d 65 6e 74 20 2d 72 65 74 einstrument -ret
20db0 75 72 6e 5f 65 72 72 6f 72 20 24 63 75 72 72 65 urn_error $curre
20dc0 6e 74 66 69 6c 65 20 7d 20 65 72 72 73 74 72 69 ntfile } errstri
20dd0 6e 67 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 ng]. . if
20de0 7b 20 24 65 72 72 20 7d 20 7b 0a 09 69 66 20 7b { $err } {..if {
20df0 20 5b 72 65 67 65 78 70 20 7b 6c 69 6e 65 3d 28 [regexp {line=(
20e00 5c 64 2b 29 5c 73 2b 70 6f 73 69 74 69 6f 6e 3d \d+)\s+position=
20e10 28 5c 64 2b 29 7d 20 24 65 72 72 73 74 72 69 6e (\d+)} $errstrin
20e20 67 20 7b 7d 20 6c 69 6e 65 20 70 6f 73 5d 20 7d g {} line pos] }
20e30 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 20 {.. set idx
20e40 22 24 6c 69 6e 65 2e 5b 65 78 70 72 20 7b 24 70 "$line.[expr {$p
20e50 6f 73 2d 31 7d 5d 22 0a 09 20 20 20 20 24 74 65 os-1}]".. $te
20e60 78 74 20 73 65 65 20 24 69 64 78 0a 09 7d 0a 09 xt see $idx..}..
20e70 57 61 72 6e 57 69 6e 20 24 65 72 72 73 74 72 69 WarnWin $errstri
20e80 6e 67 20 20 20 0a 20 20 20 20 7d 0a 20 20 20 20 ng . }.
20e90 43 6f 6c 6f 72 69 7a 65 0a 20 20 20 20 24 74 65 Colorize. $te
20ea0 78 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 xt mark set inse
20eb0 72 74 20 24 69 64 78 0a 20 20 20 20 69 66 20 7b rt $idx. if {
20ec0 20 24 73 65 6c 20 6e 65 20 22 22 20 7d 20 7b 0a $sel ne "" } {.
20ed0 09 65 76 61 6c 20 5b 6c 69 73 74 20 24 74 65 78 .eval [list $tex
20ee0 74 20 74 61 67 20 61 64 64 20 73 65 6c 5d 20 24 t tag add sel] $
20ef0 73 65 6c 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 sel. }. if
20f00 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
20f10 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 6f currentfile_seco
20f20 6e 64 61 72 79 5d 20 26 26 20 24 63 75 72 72 65 ndary] && $curre
20f30 6e 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65 ntfile eq $curre
20f40 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
20f50 20 7d 20 7b 0a 09 43 6f 6c 6f 72 69 7a 65 20 74 } {..Colorize t
20f60 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 ext_secondary.
20f70 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
20f80 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67 65 46 ebugger::ChangeF
20f90 69 6c 65 54 79 70 65 20 7b 7d 20 7b 0a 20 20 20 ileType {} {.
20fa0 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e variable curren
20fb0 74 66 69 6c 65 0a 20 20 20 20 0a 20 20 20 20 73 tfile. . s
20fc0 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 et filetype [Giv
20fd0 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 eFileType $curre
20fe0 6e 74 66 69 6c 65 5d 0a 20 20 20 20 41 64 64 46 ntfile]. AddF
20ff0 69 6c 65 54 79 70 65 4d 65 6e 75 20 24 66 69 6c ileTypeMenu $fil
21000 65 74 79 70 65 0a 20 20 20 20 52 65 69 6e 73 74 etype. Reinst
21010 72 75 6d 65 6e 74 43 75 72 72 65 6e 74 46 69 6c rumentCurrentFil
21020 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 e.}..proc RamDeb
21030 75 67 67 65 72 3a 3a 43 6c 6f 73 65 46 69 6c 65 ugger::CloseFile
21040 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 {} {. variab
21050 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 le currentfile.
21060 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 variable Wind
21070 6f 77 46 69 6c 65 73 4c 69 73 74 0a 20 20 20 20 owFilesList.
21080 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 46 variable WindowF
21090 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 ilesListLineNums
210a0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 . variable op
210b0 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 tions. variab
210c0 6c 65 20 66 69 6c 65 73 0a 0a 20 20 20 20 23 20 le files.. #
210d0 66 69 72 73 74 2c 20 77 65 20 74 61 6b 65 20 69 first, we take i
210e0 74 20 6f 75 74 20 74 6f 20 61 76 6f 69 64 20 72 t out to avoid r
210f0 65 6f 70 65 6e 69 6e 67 20 69 74 0a 20 20 20 20 eopening it.
21100 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20 5b 6c if { [set pos [l
21110 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 57 search -exact $W
21120 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 indowFilesList $
21130 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d 20 21 3d currentfile]] !=
21140 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 57 69 6e -1 } {..set Win
21150 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 5b 6c 72 dowFilesList [lr
21160 65 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 69 eplace $WindowFi
21170 6c 65 73 4c 69 73 74 20 24 70 6f 73 20 24 70 6f lesList $pos $po
21180 73 5d 0a 09 73 65 74 20 57 69 6e 64 6f 77 46 69 s]..set WindowFi
21190 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 lesListLineNums
211a0 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 6e 64 6f [lreplace $Windo
211b0 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 wFilesListLineNu
211c0 6d 73 20 24 70 6f 73 20 24 70 6f 73 5d 0a 20 20 ms $pos $pos].
211d0 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 75 6e 73 }. . uns
211e0 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 66 et -nocomplain f
211f0 69 6c 65 73 28 24 63 75 72 72 65 6e 74 66 69 6c iles($currentfil
21200 65 29 0a 0a 20 20 20 20 73 65 74 20 63 66 20 24 e).. set cf $
21210 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 currentfile..
21220 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 if { [llength $
21230 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 5d WindowFilesList]
21240 20 3e 20 30 20 7d 20 7b 0a 09 4f 70 65 6e 46 69 > 0 } {..OpenFi
21250 6c 65 46 20 5b 6c 69 6e 64 65 78 20 24 57 69 6e leF [lindex $Win
21260 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 30 5d 0a dowFilesList 0].
21270 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 4e 65 77 } else { New
21280 46 69 6c 65 20 7d 0a 0a 20 20 20 20 23 20 73 65 File }.. # se
21290 63 6f 6e 64 2c 20 77 65 20 74 61 6b 65 20 69 74 cond, we take it
212a0 20 6f 75 74 20 74 6f 20 6d 61 6b 65 20 69 74 20 out to make it
212b0 64 69 73 73 61 70 65 61 72 20 66 6f 72 20 65 76 dissapear for ev
212c0 65 72 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 er from the list
212d0 0a 20 20 20 20 69 66 20 7b 20 5b 73 65 74 20 70 . if { [set p
212e0 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 os [lsearch -exa
212f0 63 74 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c ct $WindowFilesL
21300 69 73 74 20 24 63 66 5d 5d 20 21 3d 20 2d 31 20 ist $cf]] != -1
21310 7d 20 7b 0a 09 73 65 74 20 57 69 6e 64 6f 77 46 } {..set WindowF
21320 69 6c 65 73 4c 69 73 74 20 5b 6c 72 65 70 6c 61 ilesList [lrepla
21330 63 65 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c ce $WindowFilesL
21340 69 73 74 20 24 70 6f 73 20 24 70 6f 73 5d 0a 09 ist $pos $pos]..
21350 73 65 74 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c set WindowFilesL
21360 69 73 74 4c 69 6e 65 4e 75 6d 73 20 5b 6c 72 65 istLineNums [lre
21370 70 6c 61 63 65 20 24 57 69 6e 64 6f 77 46 69 6c place $WindowFil
21380 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 24 esListLineNums $
21390 70 6f 73 20 24 70 6f 73 5d 0a 20 20 20 20 7d 0a pos $pos]. }.
213a0 20 20 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 set ipos [ls
213b0 65 61 72 63 68 66 69 6c 65 49 20 24 6f 70 74 69 earchfileI $opti
213c0 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c ons(RecentFilesL
213d0 29 20 30 20 24 63 66 5d 0a 20 20 20 20 69 66 20 ) 0 $cf]. if
213e0 7b 20 24 69 70 6f 73 20 21 3d 20 2d 31 20 26 26 { $ipos != -1 &&
213f0 20 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69 6f 6e [lindex $option
21400 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 s(RecentFilesL)
21410 24 69 70 6f 73 20 31 5d 20 3d 3d 20 30 20 7d 20 $ipos 1] == 0 }
21420 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 52 {..set options(R
21430 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 5b 6c 72 ecentFilesL) [lr
21440 65 70 6c 61 63 65 20 24 6f 70 74 69 6f 6e 73 28 eplace $options(
21450 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 24 69 RecentFilesL) $i
21460 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 7d pos $ipos]. }
21470 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
21480 67 67 65 72 3a 3a 4e 65 77 46 69 6c 65 20 7b 7d gger::NewFile {}
21490 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
214a0 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 marker. varia
214b0 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 ble text. var
214c0 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 iable files.
214d0 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d variable instrum
214e0 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 0a 20 entedfilesInfo.
214f0 20 20 20 76 61 72 69 61 62 6c 65 20 62 72 65 61 variable brea
21500 6b 70 6f 69 6e 74 73 0a 20 20 20 20 76 61 72 69 kpoints. vari
21510 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 able currentfile
21520 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
21530 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c 69 6e rrentfile_endlin
21540 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 e. variable c
21550 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 urrentfileIsModi
21560 66 69 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c fied. variabl
21570 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 e WindowFilesLis
21580 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 t. variable W
21590 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 indowFilesListLi
215a0 6e 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 neNums. varia
215b0 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f ble currentfile_
215c0 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 secondary. va
215d0 72 69 61 62 6c 65 20 74 65 78 74 5f 73 65 63 6f riable text_seco
215e0 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 7b 20 ndary.. if {
215f0 5b 53 61 76 65 46 69 6c 65 20 61 73 6b 5d 20 3d [SaveFile ask] =
21600 3d 20 2d 31 20 7d 20 7b 20 72 65 74 75 72 6e 20 = -1 } { return
21610 7d 0a 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 }.. WaitState
21620 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 5b 73 65 1.. if { [se
21630 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d t pos [lsearch -
21640 65 78 61 63 74 20 24 57 69 6e 64 6f 77 46 69 6c exact $WindowFil
21650 65 73 4c 69 73 74 20 24 63 75 72 72 65 6e 74 66 esList $currentf
21660 69 6c 65 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a ile]] != -1 } {.
21670 09 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 .set line [scan
21680 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 [$text index ins
21690 65 72 74 5d 20 25 64 5d 0a 09 73 65 74 20 57 69 ert] %d]..set Wi
216a0 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e ndowFilesListLin
216b0 65 4e 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20 eNums [lreplace
216c0 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 $WindowFilesList
216d0 4c 69 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70 LineNums $pos $p
216e0 6f 73 20 24 6c 69 6e 65 5d 0a 20 20 20 20 7d 0a os $line]. }.
216f0 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 . set current
21700 66 69 6c 65 20 22 2a 4e 65 77 20 66 69 6c 65 2a file "*New file*
21710 22 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e ". set curren
21720 74 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 61 75 tfile_endline au
21730 74 6f 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 to. set curre
21740 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 ntfileIsModified
21750 20 30 0a 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 0.. $marker
21760 64 65 6c 65 74 65 20 61 72 72 6f 77 0a 20 20 20 delete arrow.
21770 20 24 6d 61 72 6b 65 72 20 64 65 6c 65 74 65 20 $marker delete
21780 62 72 65 61 6b 0a 20 20 20 20 24 6d 61 72 6b 65 break. $marke
21790 72 20 64 65 6c 65 74 65 20 61 72 72 6f 77 62 72 r delete arrowbr
217a0 65 61 6b 0a 20 20 20 20 73 65 74 20 65 64 20 5b eak. set ed [
217b0 24 74 65 78 74 20 63 67 65 74 20 2d 65 64 69 74 $text cget -edit
217c0 61 62 6c 65 5d 0a 20 20 20 20 24 74 65 78 74 20 able]. $text
217d0 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 31 conf -editable 1
217e0 0a 20 20 20 20 24 74 65 78 74 20 63 6c 65 61 72 . $text clear
217f0 75 6e 64 6f 0a 20 20 20 20 73 65 74 20 74 65 78 undo. set tex
21800 74 4f 20 5b 24 74 65 78 74 20 6f 72 69 67 69 6e tO [$text origin
21810 61 6c 5d 0a 20 20 20 20 24 74 65 78 74 4f 20 64 al]. $textO d
21820 65 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 el 1.0 end. $
21830 74 65 78 74 4f 20 74 61 67 20 61 64 64 20 6e 6f textO tag add no
21840 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 rmal 1.0 end.
21850 20 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 $text conf -edi
21860 74 61 62 6c 65 20 24 65 64 0a 0a 20 20 20 20 46 table $ed.. F
21870 69 6c 6c 4c 69 73 74 42 6f 78 0a 0a 20 20 20 20 illListBox..
21880 73 65 74 20 4e 75 6d 6c 69 6e 65 73 20 5b 73 63 set Numlines [sc
21890 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 an [$text index
218a0 65 6e 64 5d 20 25 64 5d 0a 20 20 20 20 73 65 74 end] %d]. set
218b0 20 66 6f 6e 74 20 5b 24 74 65 78 74 20 63 67 65 font [$text cge
218c0 74 20 2d 66 6f 6e 74 5d 0a 20 20 20 20 24 6d 61 t -font]. $ma
218d0 72 6b 65 72 20 63 6f 6e 66 69 67 75 72 65 20 2d rker configure -
218e0 73 63 72 6f 6c 6c 72 65 67 69 6f 6e 20 5b 6c 69 scrollregion [li
218f0 73 74 20 30 20 30 20 5b 77 69 6e 66 6f 20 72 65 st 0 0 [winfo re
21900 71 77 69 64 74 68 20 24 6d 61 72 6b 65 72 5d 20 qwidth $marker]
21910 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
21920 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 [ex
21930 70 72 20 24 4e 75 6d 6c 69 6e 65 73 2a 5b 66 6f pr $Numlines*[fo
21940 6e 74 20 6d 65 74 72 69 63 73 20 24 66 6f 6e 74 nt metrics $font
21950 20 2d 6c 69 6e 65 73 70 61 63 65 5d 5d 5d 0a 20 -linespace]]].
21960 20 20 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 $text mark se
21970 74 20 69 6e 73 65 72 74 20 31 2e 30 0a 20 20 20 t insert 1.0.
21980 20 24 74 65 78 74 20 73 65 65 20 31 2e 30 0a 20 $text see 1.0.
21990 20 20 20 73 65 74 20 69 6e 73 74 72 75 6d 65 6e set instrumen
219a0 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 tedfilesInfo($cu
219b0 72 72 65 6e 74 66 69 6c 65 29 20 22 22 0a 0a 20 rrentfile) ""..
219c0 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b 66 69 set_title [fi
219d0 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74 le tail $current
219e0 66 69 6c 65 5d 0a 0a 20 20 20 20 24 74 65 78 74 file].. $text
219f0 20 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 conf -editable
21a00 31 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 1.. if { [inf
21a10 6f 20 65 78 69 73 74 73 20 63 75 72 72 65 6e 74 o exists current
21a20 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20 file_secondary]
21a30 7d 20 7b 0a 09 69 66 20 7b 20 24 63 75 72 72 65 } {..if { $curre
21a40 6e 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65 ntfile eq $curre
21a50 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
21a60 20 7d 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 } {.. $text
21a70 63 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 configure -synct
21a80 65 78 74 77 69 64 67 65 74 20 24 74 65 78 74 5f extwidget $text_
21a90 73 65 63 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73 secondary..} els
21aa0 65 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63 e {.. $text c
21ab0 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65 onfigure -syncte
21ac0 78 74 77 69 64 67 65 74 20 22 22 0a 09 7d 0a 20 xtwidget ""..}.
21ad0 20 20 20 7d 0a 20 20 20 20 4d 61 6e 61 67 65 50 }. ManageP
21ae0 6f 73 69 74 69 6f 6e 73 49 6d 61 67 65 73 0a 20 ositionsImages.
21af0 20 20 20 57 61 69 74 53 74 61 74 65 20 30 0a 20 WaitState 0.
21b00 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 70 return 0.}..p
21b10 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
21b20 3a 5f 73 61 76 65 66 69 6c 65 5f 6f 6e 6c 79 20 :_savefile_only
21b30 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 { args } {. v
21b40 61 72 69 61 62 6c 65 20 46 69 6c 65 53 61 76 65 ariable FileSave
21b50 48 61 6e 64 6c 65 72 73 0a 0a 20 20 20 20 73 65 Handlers.. se
21b60 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b 20 t optional {..{
21b70 2d 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f 72 -file_has_been_r
21b80 65 61 64 20 62 6f 6f 6c 65 61 6e 20 30 20 7d 0a ead boolean 0 }.
21b90 09 7b 20 2d 66 69 6c 65 5f 65 6e 64 6c 69 6e 65 .{ -file_endline
21ba0 20 63 72 6c 66 7c 6c 66 7c 61 75 74 6f 20 61 75 crlf|lf|auto au
21bb0 74 6f 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 to}. }. se
21bc0 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 66 69 t compulsory "fi
21bd0 6c 65 20 64 61 74 61 22 0a 20 20 20 20 70 61 72 le data". par
21be0 73 65 5f 61 72 67 73 20 24 6f 70 74 69 6f 6e 61 se_args $optiona
21bf0 6c 20 24 63 6f 6d 70 75 6c 73 6f 72 79 20 24 61 l $compulsory $a
21c00 72 67 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 66 rgs.. if { $f
21c10 69 6c 65 20 65 71 20 22 2a 4d 61 63 72 6f 73 2a ile eq "*Macros*
21c20 22 20 7d 20 7b 0a 09 53 61 76 65 4d 61 63 72 6f " } {..SaveMacro
21c30 73 44 6f 63 75 6d 65 6e 74 20 24 64 61 74 61 0a sDocument $data.
21c40 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b } elseif { [
21c50 69 6e 66 6f 20 65 78 69 73 74 73 20 46 69 6c 65 info exists File
21c60 53 61 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 SaveHandlers($fi
21c70 6c 65 29 5d 20 7d 20 7b 0a 09 73 65 74 20 65 72 le)] } {..set er
21c80 72 20 5b 63 61 74 63 68 20 7b 65 76 61 6c 20 24 r [catch {eval $
21c90 46 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 73 FileSaveHandlers
21ca0 28 24 66 69 6c 65 29 20 5b 6c 69 73 74 20 24 66 ($file) [list $f
21cb0 69 6c 65 20 24 64 61 74 61 5d 7d 20 65 72 72 73 ile $data]} errs
21cc0 74 72 69 6e 67 5d 0a 09 69 66 20 7b 20 24 65 72 tring]..if { $er
21cd0 72 20 7d 20 7b 20 65 72 72 6f 72 20 5b 5f 20 22 r } { error [_ "
21ce0 45 72 72 6f 72 20 73 61 76 69 6e 67 20 66 69 6c Error saving fil
21cf0 65 20 27 25 73 27 20 28 25 73 29 22 20 24 66 69 e '%s' (%s)" $fi
21d00 6c 65 20 24 65 72 72 73 74 72 69 6e 67 5d 20 7d le $errstring] }
21d10 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
21d20 65 74 20 70 65 72 6d 20 22 22 0a 09 69 66 20 7b et perm ""..if {
21d30 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 [file exists $f
21d40 69 6c 65 5d 20 7d 20 7b 0a 09 20 20 20 20 69 66 ile] } {.. if
21d50 20 7b 20 24 66 69 6c 65 5f 68 61 73 5f 62 65 65 { $file_has_bee
21d60 6e 5f 72 65 61 64 20 7d 20 7b 0a 09 09 73 65 74 n_read } {...set
21d70 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 6f 70 err [catch { op
21d80 65 6e 20 24 66 69 6c 65 20 72 2b 20 7d 20 66 6f en $file r+ } fo
21d90 75 74 5d 0a 09 09 69 66 20 7b 20 24 65 72 72 20 ut]...if { $err
21da0 7d 20 7b 20 65 72 72 6f 72 20 5b 5f 20 22 45 72 } { error [_ "Er
21db0 72 6f 72 20 73 61 76 69 6e 67 20 66 69 6c 65 20 ror saving file
21dc0 27 25 73 27 22 20 24 66 69 6c 65 5d 20 7d 0a 09 '%s'" $file] }..
21dd0 09 63 68 61 6e 20 74 72 75 6e 63 61 74 65 20 24 .chan truncate $
21de0 66 6f 75 74 20 30 0a 09 20 20 20 20 7d 20 65 6c fout 0.. } el
21df0 73 65 20 7b 0a 09 09 69 66 20 7b 20 24 3a 3a 74 se {...if { $::t
21e00 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 cl_platform(plat
21e10 66 6f 72 6d 29 20 65 71 20 22 75 6e 69 78 22 20 form) eq "unix"
21e20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 70 65 } {... set pe
21e30 72 6d 20 5b 66 69 6c 65 20 61 74 74 72 69 62 75 rm [file attribu
21e40 74 65 73 20 24 66 69 6c 65 20 2d 70 65 72 6d 69 tes $file -permi
21e50 73 73 69 6f 6e 73 5d 0a 09 09 7d 0a 09 09 73 65 ssions]...}...se
21e60 74 20 69 63 20 30 0a 09 09 77 68 69 6c 65 20 7b t ic 0...while {
21e70 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 [file exists $f
21e80 69 6c 65 2e 7e 24 69 63 7e 5d 20 7d 20 7b 20 69 ile.~$ic~] } { i
21e90 6e 63 72 20 69 63 20 7d 20 20 20 20 20 0a 09 09 ncr ic } ...
21ea0 73 65 74 20 72 65 6e 66 69 6c 65 20 24 66 69 6c set renfile $fil
21eb0 65 2e 7e 24 69 63 7e 0a 09 09 73 65 74 20 65 72 e.~$ic~...set er
21ec0 72 20 5b 63 61 74 63 68 20 7b 20 66 69 6c 65 20 r [catch { file
21ed0 72 65 6e 61 6d 65 20 2d 66 6f 72 63 65 20 24 66 rename -force $f
21ee0 69 6c 65 20 24 72 65 6e 66 69 6c 65 20 7d 20 65 ile $renfile } e
21ef0 72 72 73 74 72 69 6e 67 5d 0a 09 09 69 66 20 7b rrstring]...if {
21f00 20 24 65 72 72 20 7d 20 7b 20 65 72 72 6f 72 20 $err } { error
21f10 5b 5f 20 22 45 72 72 6f 72 20 73 61 76 69 6e 67 [_ "Error saving
21f20 20 66 69 6c 65 20 27 25 73 27 20 28 25 73 29 22 file '%s' (%s)"
21f30 20 24 66 69 6c 65 20 24 65 72 72 73 74 72 69 6e $file $errstrin
21f40 67 5d 20 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 g] }.. }..}..
21f50 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 if { ![info exis
21f60 74 73 20 66 6f 75 74 5d 20 7d 20 7b 0a 09 20 20 ts fout] } {..
21f70 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 set err [catch
21f80 20 7b 20 6f 70 65 6e 20 24 66 69 6c 65 20 77 20 { open $file w
21f90 7d 20 66 6f 75 74 5d 0a 09 20 20 20 20 69 66 20 } fout].. if
21fa0 7b 20 24 65 72 72 20 7d 20 7b 20 65 72 72 6f 72 { $err } { error
21fb0 20 5b 5f 20 22 45 72 72 6f 72 20 73 61 76 69 6e [_ "Error savin
21fc0 67 20 66 69 6c 65 20 27 25 73 27 22 20 24 66 69 g file '%s'" $fi
21fd0 6c 65 5d 20 7d 0a 09 7d 0a 09 66 63 6f 6e 66 69 le] }..}..fconfi
21fe0 67 75 72 65 20 24 66 6f 75 74 20 2d 74 72 61 6e gure $fout -tran
21ff0 73 6c 61 74 69 6f 6e 20 24 66 69 6c 65 5f 65 6e slation $file_en
22000 64 6c 69 6e 65 0a 0a 09 73 65 74 20 68 65 61 64 dline...set head
22010 65 72 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 er [string range
22020 20 24 64 61 74 61 20 30 20 32 35 35 5d 0a 09 73 $data 0 255]..s
22030 65 74 20 72 65 78 20 7b 2d 5c 2a 2d 2e 2a 63 6f et rex {-\*-.*co
22040 64 69 6e 67 3a 5c 73 2a 75 74 66 2d 38 5c 73 2a ding:\s*utf-8\s*
22050 3b 2e 2a 2d 5c 2a 2d 7c 65 6e 63 6f 64 69 6e 67 ;.*-\*-|encoding
22060 3d 5b 27 5c 22 5d 75 74 66 2d 38 5b 27 5c 22 5d =['\"]utf-8['\"]
22070 7d 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 }..if { [regexp
22080 2d 6e 6f 63 61 73 65 20 2d 6c 69 6e 65 20 2d 2d -nocase -line --
22090 20 24 72 65 78 20 24 68 65 61 64 65 72 5d 20 7d $rex $header] }
220a0 20 7b 0a 09 20 20 20 20 66 63 6f 6e 66 69 67 75 {.. fconfigu
220b0 72 65 20 24 66 6f 75 74 20 2d 65 6e 63 6f 64 69 re $fout -encodi
220c0 6e 67 20 75 74 66 2d 38 0a 09 7d 0a 09 70 75 74 ng utf-8..}..put
220d0 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f s -nonewline $fo
220e0 75 74 20 24 64 61 74 61 0a 09 63 6c 6f 73 65 20 ut $data..close
220f0 24 66 6f 75 74 0a 09 69 66 20 7b 20 24 70 65 72 $fout..if { $per
22100 6d 20 6e 65 20 22 22 20 7d 20 7b 0a 09 20 20 20 m ne "" } {..
22110 20 63 61 74 63 68 20 7b 20 66 69 6c 65 20 61 74 catch { file at
22120 74 72 69 62 75 74 65 73 20 24 66 69 6c 65 20 2d tributes $file -
22130 70 65 72 6d 69 73 73 69 6f 6e 73 20 24 70 65 72 permissions $per
22140 6d 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 5b 69 6e m }..}..if { [in
22150 66 6f 20 65 78 69 73 74 73 20 72 65 6e 66 69 6c fo exists renfil
22160 65 5d 20 7d 20 7b 0a 09 20 20 20 20 66 69 6c 65 e] } {.. file
22170 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 24 delete -force $
22180 72 65 6e 66 69 6c 65 0a 09 7d 0a 20 20 20 20 7d renfile..}. }
22190 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
221a0 67 67 65 72 3a 3a 53 61 76 65 46 69 6c 65 46 20 gger::SaveFileF
221b0 7b 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 { args } {. v
221c0 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 ariable text.
221d0 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e variable curren
221e0 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 tfile. variab
221f0 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 le currentfile_e
22200 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 ndline. varia
22210 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 49 ble currentfileI
22220 73 4d 6f 64 69 66 69 65 64 0a 20 20 20 20 76 61 sModified. va
22230 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 riable files.
22240 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 5f variable files_
22250 65 6e 64 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 endline. vari
22260 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 able instrumente
22270 64 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69 dfilesP. vari
22280 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 able instrumente
22290 64 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69 dfilesR. vari
222a0 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 able instrumente
222b0 64 66 69 6c 65 73 54 69 6d 65 0a 20 20 20 20 76 dfilesTime. v
222c0 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 ariable instrume
222d0 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 0a 20 20 ntedfilesSent.
222e0 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 variable files
222f0 6d 74 69 6d 65 0a 20 20 20 20 76 61 72 69 61 62 mtime. variab
22300 6c 65 20 46 69 6c 65 53 61 76 65 48 61 6e 64 6c le FileSaveHandl
22310 65 72 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ers. variable
22320 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 WindowFilesList
22330 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 . variable Wi
22340 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e ndowFilesListLin
22350 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 62 eNums. variab
22360 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 le options. v
22370 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 ariable currentf
22380 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 ile_secondary.
22390 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f variable text_
223a0 73 65 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 73 secondary.. s
223b0 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a 09 7b et optional {..{
223c0 20 2d 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f -file_has_been_
223d0 72 65 61 64 20 62 6f 6f 6c 65 61 6e 20 30 20 7d read boolean 0 }
223e0 0a 09 7b 20 2d 66 69 6c 65 5f 65 6e 64 6c 69 6e ..{ -file_endlin
223f0 65 20 63 72 6c 66 7c 6c 66 7c 61 75 74 6f 20 61 e crlf|lf|auto a
22400 75 74 6f 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 uto}. }. s
22410 65 74 20 63 6f 6d 70 75 6c 73 6f 72 79 20 22 66 et compulsory "f
22420 69 6c 65 22 0a 20 20 20 20 70 61 72 73 65 5f 61 ile". parse_a
22430 72 67 73 20 24 6f 70 74 69 6f 6e 61 6c 20 24 63 rgs $optional $c
22440 6f 6d 70 75 6c 73 6f 72 79 20 24 61 72 67 73 0a ompulsory $args.
22450 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 20 31 . WaitState 1
22460 0a 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20 . SetMessage
22470 5b 5f 20 22 53 61 76 69 6e 67 20 66 69 6c 65 20 [_ "Saving file
22480 27 25 73 27 22 20 24 66 69 6c 65 5d 2e 2e 2e 0a '%s'" $file]....
22490 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 . RamDebugger
224a0 3a 3a 56 43 53 3a 3a 4d 61 6e 61 67 65 41 75 74 ::VCS::ManageAut
224b0 6f 53 61 76 65 44 6f 0a 0a 20 20 20 20 73 65 74 oSaveDo.. set
224c0 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 65 46 filetype [GiveF
224d0 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e 74 ileType $current
224e0 66 69 6c 65 5d 0a 20 20 20 20 0a 20 20 20 20 69 file]. . i
224f0 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 73 70 61 f { $options(spa
22500 63 65 73 5f 74 6f 5f 74 61 62 73 29 20 7c 7c 20 ces_to_tabs) ||
22510 24 66 69 6c 65 74 79 70 65 20 65 71 20 22 4d 61 $filetype eq "Ma
22520 6b 65 66 69 6c 65 22 20 7d 20 7b 0a 09 73 65 74 kefile" } {..set
22530 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c 6e 5b 73 map [list "\n[s
22540 74 72 69 6e 67 20 72 65 70 65 61 74 20 7b 20 7d tring repeat { }
22550 20 31 36 5d 22 20 22 5c 6e 5c 74 5c 74 22 20 22 16]" "\n\t\t" "
22560 5c 6e 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 \n[string repeat
22570 20 7b 20 7d 20 38 5d 22 20 22 5c 6e 5c 74 22 5d { } 8]" "\n\t"]
22580 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
22590 65 74 20 6d 61 70 20 22 22 0a 20 20 20 20 7d 0a et map "". }.
225a0 20 20 20 20 73 65 74 20 66 69 6c 65 73 28 24 66 set files($f
225b0 69 6c 65 29 20 5b 73 74 72 69 6e 67 20 6d 61 70 ile) [string map
225c0 20 24 6d 61 70 20 5b 24 74 65 78 74 20 67 65 74 $map [$text get
225d0 20 31 2e 30 20 65 6e 64 2d 31 63 5d 5d 0a 20 20 1.0 end-1c]].
225e0 20 20 73 65 74 20 66 69 6c 65 73 5f 65 6e 64 6c set files_endl
225f0 69 6e 65 28 24 66 69 6c 65 29 20 24 66 69 6c 65 ine($file) $file
22600 5f 65 6e 64 6c 69 6e 65 0a 0a 20 20 20 20 73 65 _endline.. se
22610 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 5f t err [catch { _
22620 73 61 76 65 66 69 6c 65 5f 6f 6e 6c 79 20 2d 66 savefile_only -f
22630 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 24 66 69 6c ile_endline $fil
22640 65 5f 65 6e 64 6c 69 6e 65 20 5c 0a 09 09 2d 66 e_endline \...-f
22650 69 6c 65 5f 68 61 73 5f 62 65 65 6e 5f 72 65 61 ile_has_been_rea
22660 64 20 24 66 69 6c 65 5f 68 61 73 5f 62 65 65 6e d $file_has_been
22670 5f 72 65 61 64 20 5c 0a 09 09 24 66 69 6c 65 20 _read \...$file
22680 24 66 69 6c 65 73 28 24 66 69 6c 65 29 7d 20 65 $files($file)} e
22690 72 72 73 74 72 69 6e 67 5d 0a 0a 20 20 20 20 69 rrstring].. i
226a0 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 57 61 f { $err } {..Wa
226b0 69 74 53 74 61 74 65 20 30 0a 09 53 65 74 4d 65 itState 0..SetMe
226c0 73 73 61 67 65 20 22 22 0a 09 57 61 72 6e 57 69 ssage ""..WarnWi
226d0 6e 20 24 65 72 72 73 74 72 69 6e 67 20 24 74 65 n $errstring $te
226e0 78 74 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d xt..return. }
226f0 0a 0a 20 20 20 20 23 20 20 20 20 20 69 66 20 7b .. # if {
22700 20 24 66 69 6c 65 20 3d 3d 20 22 2a 4d 61 63 72 $file == "*Macr
22710 6f 73 2a 22 20 7d 20 7b 0a 20 20 20 20 23 20 20 os*" } {. #
22720 20 20 20 20 20 20 20 53 61 76 65 4d 61 63 72 6f SaveMacro
22730 73 44 6f 63 75 6d 65 6e 74 20 24 66 69 6c 65 73 sDocument $files
22740 28 24 66 69 6c 65 29 0a 20 20 20 20 23 20 20 20 ($file). #
22750 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 69 6e } elseif { [in
22760 66 6f 20 65 78 69 73 74 73 20 46 69 6c 65 53 61 fo exists FileSa
22770 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c 65 veHandlers($file
22780 29 5d 20 7d 20 7b 0a 20 20 20 20 23 20 20 20 20 )] } {. #
22790 20 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 set err [ca
227a0 74 63 68 20 7b 65 76 61 6c 20 24 46 69 6c 65 53 tch {eval $FileS
227b0 61 76 65 48 61 6e 64 6c 65 72 73 28 24 66 69 6c aveHandlers($fil
227c0 65 29 20 5b 6c 69 73 74 20 24 66 69 6c 65 20 24 e) [list $file $
227d0 66 69 6c 65 73 28 24 66 69 6c 65 29 5d 7d 20 65 files($file)]} e
227e0 72 72 73 74 72 69 6e 67 5d 0a 20 20 20 20 23 20 rrstring]. #
227f0 20 20 20 20 20 20 20 20 69 66 20 7b 20 24 65 72 if { $er
22800 72 20 7d 20 7b 0a 20 20 20 20 23 20 20 20 20 20 r } {. #
22810 20 20 20 20 20 20 20 20 57 61 69 74 53 74 61 74 WaitStat
22820 65 20 30 0a 20 20 20 20 23 20 20 20 20 20 20 20 e 0. #
22830 20 20 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 SetMessage
22840 20 22 22 0a 20 20 20 20 23 20 20 20 20 20 20 20 "". #
22850 20 20 20 20 20 20 57 61 72 6e 57 69 6e 20 22 45 WarnWin "E
22860 72 72 6f 72 20 73 61 76 69 6e 67 20 66 69 6c 65 rror saving file
22870 20 27 24 66 69 6c 65 27 20 28 24 65 72 72 73 74 '$file' ($errst
22880 72 69 6e 67 29 22 20 24 74 65 78 74 0a 20 20 20 ring)" $text.
22890 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 72 # r
228a0 65 74 75 72 6e 0a 20 20 20 20 23 20 20 20 20 20 eturn. #
228b0 20 20 20 20 7d 0a 20 20 20 20 23 20 20 20 20 20 }. #
228c0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 23 20 20 } else {. #
228d0 20 20 20 20 20 20 20 73 65 74 20 65 72 72 20 5b set err [
228e0 63 61 74 63 68 20 7b 20 6f 70 65 6e 20 24 66 69 catch { open $fi
228f0 6c 65 20 77 20 7d 20 66 6f 75 74 5d 0a 20 20 20 le w } fout].
22900 20 23 20 20 20 20 20 20 20 20 20 69 66 20 7b 20 # if {
22910 24 65 72 72 20 7d 20 7b 0a 20 20 20 20 23 20 20 $err } {. #
22920 20 20 20 20 20 20 20 20 20 20 20 57 61 69 74 53 WaitS
22930 74 61 74 65 20 30 0a 20 20 20 20 23 20 20 20 20 tate 0. #
22940 20 20 20 20 20 20 20 20 20 53 65 74 4d 65 73 73 SetMess
22950 61 67 65 20 22 22 0a 20 20 20 20 23 20 20 20 20 age "". #
22960 20 20 20 20 20 20 20 20 20 57 61 72 6e 57 69 6e WarnWin
22970 20 22 45 72 72 6f 72 20 73 61 76 69 6e 67 20 66 "Error saving f
22980 69 6c 65 20 27 24 66 69 6c 65 27 22 20 24 74 65 ile '$file'" $te
22990 78 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 xt. #
229a0 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 return.
229b0 23 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 # }.
229c0 23 20 20 20 20 20 20 20 20 20 73 65 74 20 68 65 # set he
229d0 61 64 65 72 20 5b 73 74 72 69 6e 67 20 72 61 6e ader [string ran
229e0 67 65 20 24 66 69 6c 65 73 28 24 66 69 6c 65 29 ge $files($file)
229f0 20 30 20 32 35 35 5d 0a 20 20 20 20 23 20 20 20 0 255]. #
22a00 20 20 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 if { [rege
22a10 78 70 20 2d 2d 20 7b 2d 5c 2a 2d 5c 73 2a 63 6f xp -- {-\*-\s*co
22a20 64 69 6e 67 3a 5c 73 2a 75 74 66 2d 38 5c 73 2a ding:\s*utf-8\s*
22a30 3b 5c 73 2a 2d 5c 2a 2d 7d 20 24 68 65 61 64 65 ;\s*-\*-} $heade
22a40 72 5d 20 7d 20 7b 0a 20 20 20 20 23 20 20 20 20 r] } {. #
22a50 20 20 20 20 20 20 20 20 20 66 63 6f 6e 66 69 67 fconfig
22a60 75 72 65 20 24 66 6f 75 74 20 2d 65 6e 63 6f 64 ure $fout -encod
22a70 69 6e 67 20 75 74 66 2d 38 0a 20 20 20 20 23 20 ing utf-8. #
22a80 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 23 20 }. #
22a90 20 20 20 20 20 20 20 20 70 75 74 73 20 2d 6e 6f puts -no
22aa0 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 24 66 newline $fout $f
22ab0 69 6c 65 73 28 24 66 69 6c 65 29 0a 20 20 20 20 iles($file).
22ac0 23 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 20 # close
22ad0 24 66 6f 75 74 0a 20 20 20 20 23 20 20 20 20 20 $fout. #
22ae0 7d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 }. . if {
22af0 24 66 69 6c 65 20 6e 65 20 24 63 75 72 72 65 6e $file ne $curren
22b00 74 66 69 6c 65 20 7d 20 7b 0a 09 73 65 74 20 63 tfile } {..set c
22b10 75 72 72 65 6e 74 66 69 6c 65 20 24 66 69 6c 65 urrentfile $file
22b20 0a 09 73 65 74 20 63 75 72 72 65 6e 74 66 69 6c ..set currentfil
22b30 65 5f 65 6e 64 6c 69 6e 65 20 24 66 69 6c 65 5f e_endline $file_
22b40 65 6e 64 6c 69 6e 65 0a 09 73 65 74 20 63 68 61 endline..set cha
22b50 6e 67 65 64 5f 6e 61 6d 65 20 31 0a 20 20 20 20 nged_name 1.
22b60 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 63 68 } else {..set ch
22b70 61 6e 67 65 64 5f 6e 61 6d 65 20 30 0a 20 20 20 anged_name 0.
22b80 20 7d 0a 0a 20 20 20 20 63 61 74 63 68 20 7b 20 }.. catch {
22b90 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 unset instrument
22ba0 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e edfilesP($curren
22bb0 74 66 69 6c 65 29 20 69 6e 73 74 72 75 6d 65 6e tfile) instrumen
22bc0 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 65 tedfilesR($curre
22bd0 6e 74 66 69 6c 65 29 20 7d 0a 20 20 20 20 63 61 ntfile) }. ca
22be0 74 63 68 20 7b 20 75 6e 73 65 74 20 69 6e 73 74 tch { unset inst
22bf0 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d rumentedfilesTim
22c00 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 e($currentfile)
22c10 7d 0a 20 20 20 20 63 61 74 63 68 20 7b 20 75 6e }. catch { un
22c20 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 set instrumented
22c30 66 69 6c 65 73 53 65 6e 74 28 24 63 75 72 72 65 filesSent($curre
22c40 6e 74 66 69 6c 65 29 20 7d 0a 20 20 20 20 0a 20 ntfile) }. .
22c50 20 20 20 73 65 74 5f 74 69 74 6c 65 20 5b 66 69 set_title [fi
22c60 6c 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74 le tail $current
22c70 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 63 75 file]. set cu
22c80 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 rrentfileIsModif
22c90 69 65 64 20 30 0a 20 20 20 20 69 66 20 7b 20 5b ied 0. if { [
22ca0 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 66 69 string index $fi
22cb0 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7d 20 7b le 0] != "*" } {
22cc0 0a 09 73 65 74 20 66 69 6c 65 73 6d 74 69 6d 65 ..set filesmtime
22cd0 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b ($currentfile) [
22ce0 66 69 6c 65 20 6d 74 69 6d 65 20 24 66 69 6c 65 file mtime $file
22cf0 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 ]. }. set
22d00 6c 69 6e 65 6e 75 6d 20 5b 73 63 61 6e 20 5b 24 linenum [scan [$
22d10 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 text index inser
22d20 74 5d 20 25 64 5d 0a 20 20 20 20 69 66 20 7b 20 t] %d]. if {
22d30 5b 73 65 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 [set pos [lsearc
22d40 68 20 2d 65 78 61 63 74 20 24 57 69 6e 64 6f 77 h -exact $Window
22d50 46 69 6c 65 73 4c 69 73 74 20 24 66 69 6c 65 5d FilesList $file]
22d60 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 ] != -1 } {..set
22d70 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 WindowFilesList
22d80 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 6e 64 [lreplace $Wind
22d90 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 70 6f 73 owFilesList $pos
22da0 20 24 70 6f 73 5d 0a 09 73 65 74 20 57 69 6e 64 $pos]..set Wind
22db0 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e owFilesListLineN
22dc0 75 6d 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 57 ums [lreplace $W
22dd0 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 indowFilesListLi
22de0 6e 65 4e 75 6d 73 20 24 70 6f 73 20 24 70 6f 73 neNums $pos $pos
22df0 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b ]. }. if {
22e00 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 [string index $
22e10 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 7c file 0] != "*" |
22e20 7c 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 46 | [info exists F
22e30 69 6c 65 53 61 76 65 48 61 6e 64 6c 65 72 73 28 ileSaveHandlers(
22e40 24 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 6c 61 70 $file)] } {..lap
22e50 70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65 73 pend WindowFiles
22e60 4c 69 73 74 20 24 66 69 6c 65 0a 09 6c 61 70 70 List $file..lapp
22e70 65 6e 64 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c end WindowFilesL
22e80 69 73 74 4c 69 6e 65 4e 75 6d 73 20 24 6c 69 6e istLineNums $lin
22e90 65 6e 75 6d 0a 20 20 20 20 7d 0a 20 20 20 20 69 enum. }. i
22ea0 66 20 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 f { [string inde
22eb0 78 20 24 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a x $file 0] != "*
22ec0 22 20 7d 20 7b 0a 09 61 64 64 5f 74 6f 5f 72 65 " } {..add_to_re
22ed0 63 65 6e 74 5f 66 69 6c 65 73 20 24 66 69 6c 65 cent_files $file
22ee0 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 64 65 ..set options(de
22ef0 66 61 75 6c 74 64 69 72 29 20 5b 66 69 6c 65 20 faultdir) [file
22f00 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a 09 dirname $file]..
22f10 23 46 69 6c 6c 4c 69 73 74 42 6f 78 0a 20 20 20 #FillListBox.
22f20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 63 68 61 }. if { $cha
22f30 6e 67 65 64 5f 6e 61 6d 65 20 7d 20 7b 0a 09 73 nged_name } {..s
22f40 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 et filetype [Giv
22f50 65 46 69 6c 65 54 79 70 65 20 24 66 69 6c 65 5d eFileType $file]
22f60 0a 09 41 64 64 46 69 6c 65 54 79 70 65 4d 65 6e ..AddFileTypeMen
22f70 75 20 24 66 69 6c 65 74 79 70 65 0a 20 20 20 20 u $filetype.
22f80 7d 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f }. if { [info
22f90 20 65 78 69 73 74 73 20 63 75 72 72 65 6e 74 66 exists currentf
22fa0 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 5d 20 7d ile_secondary] }
22fb0 20 7b 0a 09 69 66 20 7b 20 24 63 75 72 72 65 6e {..if { $curren
22fc0 74 66 69 6c 65 20 65 71 20 24 63 75 72 72 65 6e tfile eq $curren
22fd0 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 20 tfile_secondary
22fe0 7d 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63 } {.. $text c
22ff0 6f 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65 onfigure -syncte
23000 78 74 77 69 64 67 65 74 20 24 74 65 78 74 5f 73 xtwidget $text_s
23010 65 63 6f 6e 64 61 72 79 0a 09 7d 20 65 6c 73 65 econdary..} else
23020 20 7b 0a 09 20 20 20 20 24 74 65 78 74 20 63 6f {.. $text co
23030 6e 66 69 67 75 72 65 20 2d 73 79 6e 63 74 65 78 nfigure -synctex
23040 74 77 69 64 67 65 74 20 22 22 0a 09 7d 0a 20 20 twidget ""..}.
23050 20 20 7d 0a 20 20 20 20 4d 61 6e 61 67 65 50 6f }. ManagePo
23060 73 69 74 69 6f 6e 73 49 6d 61 67 65 73 0a 20 20 sitionsImages.
23070 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 RamDebugger::V
23080 43 53 3a 3a 69 6e 64 69 63 61 74 6f 72 5f 75 70 CS::indicator_up
23090 64 61 74 65 0a 20 20 20 20 57 61 69 74 53 74 61 date. WaitSta
230a0 74 65 20 30 0a 20 20 20 20 53 65 74 4d 65 73 73 te 0. SetMess
230b0 61 67 65 20 5b 5f 20 22 53 61 76 65 64 20 66 69 age [_ "Saved fi
230c0 6c 65 20 27 25 73 27 22 20 24 66 69 6c 65 5d 0a le '%s'" $file].
230d0 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
230e0 67 65 72 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d ger::ViewInstrum
230f0 65 6e 74 65 64 46 69 6c 65 20 7b 20 77 68 61 74 entedFile { what
23100 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
23110 65 20 6d 61 72 6b 65 72 0a 20 20 20 20 76 61 72 e marker. var
23120 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 iable text. v
23130 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 ariable currentf
23140 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ile. variable
23150 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 currentfile_end
23160 6c 69 6e 65 0a 20 20 20 20 76 61 72 69 61 62 6c line. variabl
23170 65 20 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 e WindowFilesLis
23180 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 t. variable W
23190 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 4c 69 indowFilesListLi
231a0 6e 65 4e 75 6d 73 0a 20 20 20 20 76 61 72 69 61 neNums. varia
231b0 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 ble instrumented
231c0 66 69 6c 65 73 50 0a 20 20 20 20 76 61 72 69 61 filesP. varia
231d0 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 ble instrumented
231e0 66 69 6c 65 73 52 0a 20 20 20 20 76 61 72 69 61 filesR. varia
231f0 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 ble instrumented
23200 66 69 6c 65 73 49 6e 66 6f 0a 20 20 20 20 76 61 filesInfo. va
23210 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d 65 6e riable instrumen
23220 74 65 64 66 69 6c 65 73 54 69 6d 65 0a 20 20 20 tedfilesTime.
23230 20 76 61 72 69 61 62 6c 65 20 67 64 62 6c 6f 67 variable gdblog
23240 0a 0a 20 20 20 20 69 66 20 7b 20 5b 53 61 76 65 .. if { [Save
23250 46 69 6c 65 20 61 73 6b 5d 20 3d 3d 20 2d 31 20 File ask] == -1
23260 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 } { return }..
23270 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 66 if { $currentf
23280 69 6c 65 20 3d 3d 20 22 22 20 26 26 20 24 77 68 ile == "" && $wh
23290 61 74 20 21 3d 20 22 67 64 62 22 20 7d 20 7b 0a at != "gdb" } {.
232a0 09 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 65 .WarnWin [_ "The
232b0 72 65 20 69 73 20 6e 6f 20 66 69 6c 65 20 74 6f re is no file to
232c0 20 73 65 65 20 69 74 73 20 69 6e 73 74 72 75 6d see its instrum
232d0 65 6e 74 65 64 20 66 69 6c 65 22 5d 0a 09 72 65 ented file"]..re
232e0 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 69 turn. }. i
232f0 66 20 7b 20 24 77 68 61 74 20 3d 3d 20 22 69 6e f { $what == "in
23300 73 74 72 75 6d 65 6e 74 65 64 50 22 20 7d 20 7b strumentedP" } {
23310 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 ..if { ![info ex
23320 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 ists instrumente
23330 64 66 69 6c 65 73 50 28 24 63 75 72 72 65 6e 74 dfilesP($current
23340 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 20 20 file)] } {..
23350 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 65 72 WarnWin [_ "Ther
23360 65 20 69 73 20 6e 6f 20 69 6e 73 74 72 75 6d 65 e is no instrume
23370 6e 74 65 64 20 66 69 6c 65 20 50 20 66 6f 72 20 nted file P for
23380 66 69 6c 65 20 27 25 73 27 22 20 24 63 75 72 72 file '%s'" $curr
23390 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 72 65 entfile].. re
233a0 74 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 20 65 6c turn..}. } el
233b0 73 65 69 66 20 7b 20 24 77 68 61 74 20 3d 3d 20 seif { $what ==
233c0 22 69 6e 73 74 72 75 6d 65 6e 74 65 64 52 22 20 "instrumentedR"
233d0 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f } {..if { ![info
233e0 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 exists instrume
233f0 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 ntedfilesR($curr
23400 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 entfile)] } {..
23410 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 WarnWin [_ "T
23420 68 65 72 65 20 69 73 20 6e 6f 20 69 6e 73 74 72 here is no instr
23430 75 6d 65 6e 74 65 64 20 66 69 6c 65 20 52 20 66 umented file R f
23440 6f 72 20 66 69 6c 65 20 27 25 73 27 22 20 24 63 or file '%s'" $c
23450 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 20 20 urrentfile]..
23460 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 20 20 7d return..}. }
23470 20 65 6c 73 65 69 66 20 7b 20 24 77 68 61 74 20 elseif { $what
23480 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 69 66 == "gdb" } {..if
23490 20 7b 20 24 67 64 62 6c 6f 67 20 3d 3d 20 22 22 { $gdblog == ""
234a0 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e 57 69 } {.. WarnWi
234b0 6e 20 5b 5f 20 22 54 68 65 72 65 20 69 73 20 6e n [_ "There is n
234c0 6f 20 47 44 42 20 6c 6f 67 20 66 69 6c 65 2e 20 o GDB log file.
234d0 55 73 65 20 46 69 6c 65 73 2d 3e 44 65 62 75 67 Use Files->Debug
234e0 20 6f 6e 2d 3e 44 65 62 75 67 20 63 2b 2b 20 74 on->Debug c++ t
234f0 6f 20 6f 62 74 61 69 6e 20 69 74 22 5d 0a 09 20 o obtain it"]..
23500 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 20 return..}.
23510 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 77 68 61 } elseif { $wha
23520 74 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a t == "time" } {.
23530 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 .if { ![info exi
23540 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 sts instrumented
23550 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 72 65 filesTime($curre
23560 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 20 20 ntfile)] } {..
23570 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 54 68 WarnWin [_ "Th
23580 65 72 65 20 69 73 20 6e 6f 20 69 6e 73 74 72 75 ere is no instru
23590 6d 65 6e 74 65 64 20 66 69 6c 65 20 74 69 6d 65 mented file time
235a0 20 66 6f 72 20 66 69 6c 65 20 27 25 73 27 22 20 for file '%s'"
235b0 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 09 20 $currentfile]..
235c0 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 20 return..}.
235d0 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20 } else {..if {
235e0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 69 6e ![info exists in
235f0 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 strumentedfilesI
23600 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 nfo($currentfile
23610 29 5d 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e )] } {.. Warn
23620 57 69 6e 20 5b 5f 20 22 54 68 65 72 65 20 69 73 Win [_ "There is
23630 20 6e 6f 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 no instrumented
23640 20 69 6e 66 6f 20 66 69 6c 65 20 66 6f 72 20 66 info file for f
23650 69 6c 65 20 27 25 73 27 22 20 24 63 75 72 72 65 ile '%s'" $curre
23660 6e 74 66 69 6c 65 5d 0a 09 20 20 20 20 72 65 74 ntfile].. ret
23670 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 urn..}. }.
23680 20 57 61 69 74 53 74 61 74 65 20 31 0a 0a 20 20 WaitState 1..
23690 20 20 69 66 20 7b 20 5b 73 65 74 20 70 6f 73 20 if { [set pos
236a0 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 [lsearch -exact
236b0 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 $WindowFilesList
236c0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 5d 20 $currentfile]]
236d0 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 6c != -1 } {..set l
236e0 69 6e 65 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 ine [scan [$text
236f0 20 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 20 25 index insert] %
23700 64 5d 0a 09 73 65 74 20 57 69 6e 64 6f 77 46 69 d]..set WindowFi
23710 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 20 lesListLineNums
23720 5b 6c 72 65 70 6c 61 63 65 20 24 57 69 6e 64 6f [lreplace $Windo
23730 77 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 wFilesListLineNu
23740 6d 73 20 24 70 6f 73 20 24 70 6f 73 20 24 6c 69 ms $pos $pos $li
23750 6e 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 ne]. }. se
23760 74 20 65 64 20 5b 24 74 65 78 74 20 63 67 65 74 t ed [$text cget
23770 20 2d 65 64 69 74 61 62 6c 65 5d 0a 20 20 20 20 -editable].
23780 24 74 65 78 74 20 63 6f 6e 66 20 2d 65 64 69 74 $text conf -edit
23790 61 62 6c 65 20 31 0a 20 20 20 20 24 74 65 78 74 able 1. $text
237a0 20 63 6c 65 61 72 75 6e 64 6f 0a 20 20 20 20 73 clearundo. s
237b0 65 74 20 74 65 78 74 4f 20 5b 24 74 65 78 74 20 et textO [$text
237c0 6f 72 69 67 69 6e 61 6c 5d 0a 20 20 20 20 24 74 original]. $t
237d0 65 78 74 4f 20 64 65 6c 20 31 2e 30 20 65 6e 64 extO del 1.0 end
237e0 0a 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 . if { $what
237f0 3d 3d 20 22 69 6e 73 74 72 75 6d 65 6e 74 65 64 == "instrumented
23800 50 22 20 7d 20 7b 0a 09 73 65 74 5f 74 69 74 6c P" } {..set_titl
23810 65 20 22 5b 66 69 6c 65 20 74 61 69 6c 20 24 63 e "[file tail $c
23820 75 72 72 65 6e 74 66 69 6c 65 5d 20 69 6e 73 74 urrentfile] inst
23830 72 75 6d 65 6e 74 65 64 20 50 22 0a 09 24 74 65 rumented P"..$te
23840 78 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 xtO ins end [str
23850 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c ing map [list "\
23860 74 22 20 22 20 20 20 20 20 20 20 20 22 5d 20 24 t" " "] $
23870 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 instrumentedfile
23880 73 50 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 sP($currentfile)
23890 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b ]. } elseif {
238a0 20 24 77 68 61 74 20 3d 3d 20 22 69 6e 73 74 72 $what == "instr
238b0 75 6d 65 6e 74 65 64 52 22 20 7d 20 7b 0a 09 73 umentedR" } {..s
238c0 65 74 5f 74 69 74 6c 65 20 22 5b 66 69 6c 65 20 et_title "[file
238d0 74 61 69 6c 20 24 63 75 72 72 65 6e 74 66 69 6c tail $currentfil
238e0 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 e] instrumented
238f0 52 22 0a 09 24 74 65 78 74 4f 20 69 6e 73 20 65 R"..$textO ins e
23900 6e 64 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b nd [string map [
23910 6c 69 73 74 20 22 5c 74 22 20 22 20 20 20 20 20 list "\t" "
23920 20 20 20 22 5d 20 24 69 6e 73 74 72 75 6d 65 6e "] $instrumen
23930 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 72 65 tedfilesR($curre
23940 6e 74 66 69 6c 65 29 5d 0a 20 20 20 20 7d 20 65 ntfile)]. } e
23950 6c 73 65 69 66 20 7b 20 24 77 68 61 74 20 3d 3d lseif { $what ==
23960 20 22 67 64 62 22 20 7d 20 7b 0a 09 73 65 74 5f "gdb" } {..set_
23970 74 69 74 6c 65 20 22 47 44 42 20 6c 6f 67 20 69 title "GDB log i
23980 6e 66 6f 22 0a 09 24 74 65 78 74 4f 20 69 6e 73 nfo"..$textO ins
23990 20 65 6e 64 20 24 67 64 62 6c 6f 67 0a 20 20 20 end $gdblog.
239a0 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 77 68 61 } elseif { $wha
239b0 74 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 7b 0a t == "time" } {.
239c0 09 73 65 74 5f 74 69 74 6c 65 20 22 5b 66 69 6c .set_title "[fil
239d0 65 20 74 61 69 6c 20 24 63 75 72 72 65 6e 74 66 e tail $currentf
239e0 69 6c 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74 65 ile] instrumente
239f0 64 20 74 69 6d 65 22 0a 09 24 74 65 78 74 4f 20 d time"..$textO
23a00 69 6e 73 20 65 6e 64 20 5b 73 74 72 69 6e 67 20 ins end [string
23a10 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 22 20 22 map [list "\t" "
23a20 20 20 20 20 20 20 20 20 22 5d 20 24 69 6e 73 74 "] $inst
23a30 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 54 69 6d rumentedfilesTim
23a40 65 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d e($currentfile)]
23a50 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
23a60 65 74 5f 74 69 74 6c 65 20 22 5b 66 69 6c 65 20 et_title "[file
23a70 74 61 69 6c 20 24 63 75 72 72 65 6e 74 66 69 6c tail $currentfil
23a80 65 5d 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 e] instrumented
23a90 69 6e 66 6f 22 0a 09 66 6f 72 65 61 63 68 20 69 info"..foreach i
23aa0 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 $instrumentedfi
23ab0 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 lesInfo($current
23ac0 66 69 6c 65 29 20 7b 0a 09 20 20 20 20 24 74 65 file) {.. $te
23ad0 78 74 4f 20 69 6e 73 20 65 6e 64 20 5b 73 74 72 xtO ins end [str
23ae0 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 5c ing map [list "\
23af0 74 22 20 22 20 20 20 20 20 20 20 20 22 5d 20 24 t" " "] $
23b00 69 5c 6e 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 i\n]..}. }.
23b10 20 20 24 74 65 78 74 4f 20 74 61 67 20 61 64 64 $textO tag add
23b20 20 6e 6f 72 6d 61 6c 20 31 2e 30 20 65 6e 64 0a normal 1.0 end.
23b30 20 20 20 20 24 74 65 78 74 20 63 6f 6e 66 20 2d $text conf -
23b40 65 64 69 74 61 62 6c 65 20 24 65 64 0a 20 20 20 editable $ed.
23b50 20 43 6f 6c 6f 72 69 7a 65 53 6c 6f 77 20 24 74 ColorizeSlow $t
23b60 65 78 74 0a 20 20 20 20 57 61 69 74 53 74 61 74 ext. WaitStat
23b70 65 20 30 0a 0a 20 20 20 20 24 6d 61 72 6b 65 72 e 0.. $marker
23b80 20 64 65 6c 65 74 65 20 61 72 72 6f 77 0a 20 20 delete arrow.
23b90 20 20 24 6d 61 72 6b 65 72 20 64 65 6c 65 74 65 $marker delete
23ba0 20 62 72 65 61 6b 0a 20 20 20 20 24 6d 61 72 6b break. $mark
23bb0 65 72 20 64 65 6c 65 74 65 20 61 72 72 6f 77 62 er delete arrowb
23bc0 72 65 61 6b 0a 0a 20 20 20 20 24 74 65 78 74 20 reak.. $text
23bd0 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 30 conf -editable 0
23be0 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 . set current
23bf0 66 69 6c 65 20 22 22 0a 20 20 20 20 73 65 74 20 file "". set
23c00 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 6e 64 6c currentfile_endl
23c10 69 6e 65 20 61 75 74 6f 0a 7d 0a 0a 70 72 6f 63 ine auto.}..proc
23c20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 69 RamDebugger::Vi
23c30 65 77 48 65 6c 70 46 69 6c 65 20 7b 20 7b 20 66 ewHelpFile { { f
23c40 69 6c 65 20 22 22 20 7d 20 7d 20 7b 0a 20 20 20 ile "" } } {.
23c50 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 variable topdir
23c60 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 41 70 . variable Ap
23c70 70 44 61 74 61 44 69 72 0a 20 20 20 20 0a 23 20 pDataDir. .#
23c80 20 20 20 20 69 66 20 7b 20 5b 20 74 6b 20 77 69 if { [ tk wi
23c90 6e 64 6f 77 69 6e 67 73 79 73 74 65 6d 5d 20 65 ndowingsystem] e
23ca0 71 20 22 61 71 75 61 22 20 7d 20 7b 0a 23 20 20 q "aqua" } {.#
23cb0 20 20 20 20 20 20 20 74 6b 5f 6d 65 73 73 61 67 tk_messag
23cc0 65 42 6f 78 20 2d 6d 65 73 73 61 67 65 20 5b 5f eBox -message [_
23cd0 20 22 4e 6f 72 6d 61 6c 20 68 65 6c 70 20 69 73 "Normal help is
23ce0 20 6e 6f 74 20 61 63 74 69 76 65 20 6f 6e 20 4d not active on M
23cf0 61 63 4f 53 58 2e 20 59 6f 75 27 6c 6c 20 62 65 acOSX. You'll be
23d00 20 72 65 64 69 72 65 63 74 65 64 20 74 6f 20 61 redirected to a
23d10 20 77 65 62 20 62 72 6f 77 73 65 72 22 5d 0a 23 web browser"].#
23d20 20 20 20 20 20 20 20 20 20 65 78 65 63 20 6f 70 exec op
23d30 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 en [file join $t
23d40 6f 70 64 69 72 20 68 65 6c 70 20 30 31 52 61 6d opdir help 01Ram
23d50 44 65 62 75 67 67 65 72 20 52 61 6d 44 65 62 75 Debugger RamDebu
23d60 67 67 65 72 5f 74 6f 63 2e 68 74 6d 6c 5d 20 26 gger_toc.html] &
23d70 0a 23 20 20 20 20 20 20 20 20 20 72 65 74 75 72 .# retur
23d80 6e 0a 23 20 20 20 20 20 7d 0a 20 20 20 20 70 61 n.# }. pa
23d90 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 68 65 ckage require he
23da0 6c 70 76 69 65 77 65 72 0a 0a 20 20 20 20 48 65 lpviewer.. He
23db0 6c 70 56 69 65 77 65 72 3a 3a 45 6e 74 65 72 44 lpViewer::EnterD
23dc0 69 72 46 6f 72 49 6e 64 65 78 20 24 41 70 70 44 irForIndex $AppD
23dd0 61 74 61 44 69 72 0a 0a 20 20 20 20 69 66 20 7b ataDir.. if {
23de0 20 24 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b $file == "" } {
23df0 0a 09 73 65 74 20 77 20 5b 48 65 6c 70 56 69 65 ..set w [HelpVie
23e00 77 65 72 3a 3a 48 65 6c 70 57 69 6e 64 6f 77 20 wer::HelpWindow
23e10 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 [file join $topd
23e20 69 72 20 68 65 6c 70 5d 5d 0a 20 20 20 20 7d 20 ir help]]. }
23e30 65 6c 73 65 20 7b 0a 09 73 65 74 20 77 20 5b 48 else {..set w [H
23e40 65 6c 70 56 69 65 77 65 72 3a 3a 48 65 6c 70 57 elpViewer::HelpW
23e50 69 6e 64 6f 77 20 5b 66 69 6c 65 20 6a 6f 69 6e indow [file join
23e60 20 24 74 6f 70 64 69 72 20 68 65 6c 70 20 24 66 $topdir help $f
23e70 69 6c 65 5d 5d 0a 20 20 20 20 7d 0a 20 20 20 20 ile]]. }.
23e80 72 65 74 75 72 6e 20 24 77 0a 7d 0a 0a 0a 70 72 return $w.}...pr
23e90 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
23ea0 56 69 65 77 48 65 6c 70 46 6f 72 57 6f 72 64 20 ViewHelpForWord
23eb0 7b 20 7b 20 77 6f 72 64 20 22 22 20 7d 20 7d 20 { { word "" } }
23ec0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
23ed0 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ext. variable
23ee0 20 41 70 70 44 61 74 61 44 69 72 0a 0a 20 20 20 AppDataDir..
23ef0 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 package require
23f00 20 68 65 6c 70 76 69 65 77 65 72 0a 0a 20 20 20 helpviewer..
23f10 20 48 65 6c 70 56 69 65 77 65 72 3a 3a 45 6e 74 HelpViewer::Ent
23f20 65 72 44 69 72 46 6f 72 49 6e 64 65 78 20 24 41 erDirForIndex $A
23f30 70 70 44 61 74 61 44 69 72 0a 0a 20 20 20 20 73 ppDataDir.. s
23f40 65 74 20 77 20 5b 56 69 65 77 48 65 6c 70 46 69 et w [ViewHelpFi
23f50 6c 65 5d 0a 0a 20 20 20 20 73 65 74 20 72 61 6e le].. set ran
23f60 67 65 20 5b 24 74 65 78 74 20 74 61 67 20 72 61 ge [$text tag ra
23f70 6e 67 65 73 20 73 65 6c 5d 0a 20 20 20 20 69 66 nges sel]. if
23f80 20 7b 20 24 77 6f 72 64 20 21 3d 20 22 22 20 7d { $word != "" }
23f90 20 7b 0a 09 23 20 6e 6f 74 68 69 6e 67 0a 20 20 {..# nothing.
23fa0 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 72 61 } elseif { $ra
23fb0 6e 67 65 20 21 3d 20 22 22 20 7d 20 7b 0a 09 73 nge != "" } {..s
23fc0 65 74 20 77 6f 72 64 20 5b 65 76 61 6c 20 24 74 et word [eval $t
23fd0 65 78 74 20 67 65 74 20 24 72 61 6e 67 65 5d 0a ext get $range].
23fe0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
23ff0 74 20 77 6f 72 64 20 22 22 0a 09 73 65 74 20 69 t word ""..set i
24000 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 dx [$text index
24010 69 6e 73 65 72 74 5d 0a 09 69 66 20 7b 20 5b 24 insert]..if { [$
24020 74 65 78 74 20 63 6f 6d 70 61 72 65 20 24 69 64 text compare $id
24030 78 20 3e 20 31 2e 30 5d 20 7d 20 7b 0a 09 20 20 x > 1.0] } {..
24040 20 20 73 65 74 20 69 64 78 30 20 5b 24 74 65 78 set idx0 [$tex
24050 74 20 69 6e 64 65 78 20 24 69 64 78 2d 31 63 5d t index $idx-1c]
24060 0a 09 20 20 20 20 77 68 69 6c 65 20 7b 20 5b 73 .. while { [s
24070 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63 68 61 tring is wordcha
24080 72 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 64 r [$text get $id
24090 78 30 5d 5d 20 7d 20 7b 0a 09 09 73 65 74 20 77 x0]] } {...set w
240a0 6f 72 64 20 5b 24 74 65 78 74 20 67 65 74 20 24 ord [$text get $
240b0 69 64 78 30 5d 24 77 6f 72 64 0a 09 09 69 66 20 idx0]$word...if
240c0 7b 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 65 { [$text compare
240d0 20 24 69 64 78 30 20 3c 3d 20 31 2e 30 5d 20 7d $idx0 <= 1.0] }
240e0 20 7b 20 62 72 65 61 6b 20 7d 0a 09 09 73 65 74 { break }...set
240f0 20 69 64 78 30 20 5b 24 74 65 78 74 20 69 6e 64 idx0 [$text ind
24100 65 78 20 24 69 64 78 30 2d 31 63 5d 0a 09 20 20 ex $idx0-1c]..
24110 20 20 7d 0a 09 7d 0a 09 73 65 74 20 69 64 78 31 }..}..set idx1
24120 20 24 69 64 78 0a 09 77 68 69 6c 65 20 7b 20 5b $idx..while { [
24130 73 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63 68 string is wordch
24140 61 72 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 ar [$text get $i
24150 64 78 31 5d 5d 20 7d 20 7b 0a 09 20 20 20 20 61 dx1]] } {.. a
24160 70 70 65 6e 64 20 77 6f 72 64 20 5b 24 74 65 78 ppend word [$tex
24170 74 20 67 65 74 20 24 69 64 78 31 5d 0a 09 20 20 t get $idx1]..
24180 20 20 69 66 20 7b 20 5b 24 74 65 78 74 20 63 6f if { [$text co
24190 6d 70 61 72 65 20 24 69 64 78 31 20 3e 3d 20 65 mpare $idx1 >= e
241a0 6e 64 2d 31 63 5d 20 7d 20 7b 20 62 72 65 61 6b nd-1c] } { break
241b0 20 7d 0a 09 20 20 20 20 73 65 74 20 69 64 78 31 }.. set idx1
241c0 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 24 69 [$text index $i
241d0 64 78 31 2b 31 63 5d 0a 09 7d 0a 09 69 66 20 7b dx1+1c]..}..if {
241e0 20 24 77 6f 72 64 20 3d 3d 20 22 22 20 7d 20 7b $word == "" } {
241f0 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 7d 0a return }. }.
24200 20 20 20 20 48 65 6c 70 56 69 65 77 65 72 3a 3a HelpViewer::
24210 48 65 6c 70 53 65 61 72 63 68 57 6f 72 64 20 24 HelpSearchWord $
24220 77 6f 72 64 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d word.}..proc Ram
24230 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c Debugger::Actual
24240 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d izeActiveProgram
24250 73 49 66 56 6f 69 64 20 7b 20 6d 65 6e 75 20 7d sIfVoid { menu }
24260 20 7b 0a 0a 20 20 20 20 69 66 20 7b 20 5b 24 6d {.. if { [$m
24270 65 6e 75 20 69 6e 64 65 78 20 65 6e 64 5d 20 65 enu index end] e
24280 71 20 22 6e 6f 6e 65 22 20 7d 20 7b 0a 09 41 63 q "none" } {..Ac
24290 74 75 61 6c 69 7a 65 41 63 74 69 76 65 50 72 6f tualizeActivePro
242a0 67 72 61 6d 73 20 24 6d 65 6e 75 0a 20 20 20 20 grams $menu.
242b0 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
242c0 75 67 67 65 72 3a 3a 41 63 74 75 61 6c 69 7a 65 ugger::Actualize
242d0 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 20 7b ActivePrograms {
242e0 20 6d 65 6e 75 20 7b 20 66 6f 72 63 65 20 30 20 menu { force 0
242f0 7d 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 } } {. variab
24300 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 le text. vari
24310 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a 20 able mainframe.
24320 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f variable remo
24330 74 65 73 65 72 76 65 72 0a 20 20 20 20 76 61 72 teserver. var
24340 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 iable remoteserv
24350 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 69 61 erType. varia
24360 62 6c 65 20 75 73 65 63 6f 6d 6d 52 0a 0a 20 20 ble usecommR..
24370 20 20 23 20 74 68 65 20 63 6f 72 72 65 63 74 20 # the correct
24380 74 68 69 6e 67 20 77 6f 75 6c 64 20 62 65 20 74 thing would be t
24390 6f 20 63 68 65 63 6b 20 72 65 6d 6f 74 65 73 65 o check remotese
243a0 72 76 65 72 54 79 70 65 20 62 75 74 20 69 74 20 rverType but it
243b0 69 73 20 6e 6f 74 0a 20 20 20 20 23 20 73 65 74 is not. # set
243c0 20 61 74 20 70 72 6f 67 72 61 6d 20 73 74 61 72 at program star
243d0 74 20 75 70 0a 20 20 20 20 69 66 20 7b 20 5b 69 t up. if { [i
243e0 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6d 61 73 nfo commands mas
243f0 74 65 72 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 ter] != "" } {..
24400 24 6d 65 6e 75 20 64 65 6c 20 30 20 65 6e 64 0a $menu del 0 end.
24410 23 20 20 20 20 20 20 20 20 20 24 6d 65 6e 75 20 # $menu
24420 61 64 64 20 72 61 64 69 6f 20 2d 6c 61 62 65 6c add radio -label
24430 20 5b 5f 20 22 4e 6f 20 61 75 74 6f 73 65 6e 64 [_ "No autosend
24440 22 5d 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d "] -variable Ram
24450 44 65 62 75 67 67 65 72 3a 3a 72 65 6d 6f 74 65 Debugger::remote
24460 73 65 72 76 65 72 20 2d 76 61 6c 75 65 20 6d 61 server -value ma
24470 73 74 65 72 0a 23 20 20 20 20 20 20 20 20 20 24 ster.# $
24480 6d 65 6e 75 20 61 64 64 20 72 61 64 69 6f 20 2d menu add radio -
24490 6c 61 62 65 6c 20 5b 5f 20 22 53 65 6e 64 20 70 label [_ "Send p
244a0 72 6f 63 73 22 5d 20 2d 76 61 72 69 61 62 6c 65 rocs"] -variable
244b0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 65 RamDebugger::re
244c0 6d 6f 74 65 73 65 72 76 65 72 20 2d 76 61 6c 75 moteserver -valu
244d0 65 20 22 6d 61 73 74 65 72 20 70 72 6f 63 22 0a e "master proc".
244e0 23 20 20 20 20 20 20 20 20 20 24 6d 65 6e 75 20 # $menu
244f0 61 64 64 20 72 61 64 69 6f 20 2d 6c 61 62 65 6c add radio -label
24500 20 5b 5f 20 22 53 65 6e 64 20 61 6c 6c 22 5d 20 [_ "Send all"]
24510 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 -variable RamDeb
24520 75 67 67 65 72 3a 3a 72 65 6d 6f 74 65 73 65 72 ugger::remoteser
24530 76 65 72 20 2d 76 61 6c 75 65 20 22 6d 61 73 74 ver -value "mast
24540 65 72 20 61 6c 6c 22 0a 0a 09 24 6d 65 6e 75 20 er all"...$menu
24550 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 add command -lab
24560 65 6c 20 5b 5f 20 22 53 74 61 72 74 20 64 65 62 el [_ "Start deb
24570 75 67 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c ug"] -command [l
24580 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
24590 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 63 6f :ContNextGUI rco
245a0 6e 74 5d 20 5c 0a 09 20 20 20 20 2d 61 63 63 20 nt] \.. -acc
245b0 22 46 35 22 0a 09 24 6d 65 6e 75 20 61 64 64 20 "F5"..$menu add
245c0 73 65 70 61 72 61 74 6f 72 0a 09 24 6d 65 6e 75 separator..$menu
245d0 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 add command -la
245e0 62 65 6c 20 5b 5f 20 22 44 69 73 63 6f 6e 6e 65 bel [_ "Disconne
245f0 63 74 2f 53 74 6f 70 22 5d 20 2d 63 6f 6d 6d 61 ct/Stop"] -comma
24600 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a nd RamDebugger::
24610 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70 20 2d DisconnectStop -
24620 61 63 63 20 22 53 68 69 66 74 2b 46 35 22 0a 0a acc "Shift+F5"..
24630 09 44 79 6e 61 6d 69 63 48 65 6c 70 3a 3a 72 65 .DynamicHelp::re
24640 67 69 73 74 65 72 20 24 6d 65 6e 75 20 6d 65 6e gister $menu men
24650 75 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 73 u RamDebugger::s
24660 74 61 74 75 73 0a 09 44 79 6e 61 6d 69 63 48 65 tatus..DynamicHe
24670 6c 70 3a 3a 72 65 67 69 73 74 65 72 20 24 6d 65 lp::register $me
24680 6e 75 20 6d 65 6e 75 65 6e 74 72 79 20 30 20 5b nu menuentry 0 [
24690 5f 20 22 4f 6e 6c 79 20 69 6e 73 74 72 75 6d 65 _ "Only instrume
246a0 6e 74 20 73 6f 75 72 63 65 64 20 66 69 6c 65 73 nt sourced files
246b0 22 5d 0a 09 44 79 6e 61 6d 69 63 48 65 6c 70 3a "]..DynamicHelp:
246c0 3a 72 65 67 69 73 74 65 72 20 24 6d 65 6e 75 20 :register $menu
246d0 6d 65 6e 75 65 6e 74 72 79 20 31 20 5b 5f 20 22 menuentry 1 [_ "
246e0 49 6e 73 74 72 75 6d 65 6e 74 20 61 6c 6c 20 70 Instrument all p
246f0 72 6f 63 73 20 69 6e 20 61 63 74 69 76 65 20 66 rocs in active f
24700 69 6c 65 73 22 5d 0a 09 44 79 6e 61 6d 69 63 48 iles"]..DynamicH
24710 65 6c 70 3a 3a 72 65 67 69 73 74 65 72 20 24 6d elp::register $m
24720 65 6e 75 20 6d 65 6e 75 65 6e 74 72 79 20 32 20 enu menuentry 2
24730 5b 5f 20 22 49 6e 73 74 72 75 6d 65 6e 74 2f 65 [_ "Instrument/e
24740 78 65 63 75 74 65 20 61 6c 6c 20 61 63 74 69 76 xecute all activ
24750 65 20 66 69 6c 65 73 22 5d 0a 09 72 65 74 75 72 e files"]..retur
24760 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 57 61 69 n. }.. Wai
24770 74 53 74 61 74 65 20 31 0a 20 20 20 20 53 65 74 tState 1. Set
24780 4d 65 73 73 61 67 65 20 5b 5f 20 22 53 65 61 72 Message [_ "Sear
24790 63 68 69 6e 67 20 66 6f 72 20 61 63 74 69 76 65 ching for active
247a0 20 70 72 6f 67 72 61 6d 73 22 5d 2e 2e 2e 0a 0a programs"].....
247b0 20 20 20 20 69 66 20 7b 20 24 66 6f 72 63 65 20 if { $force
247c0 3d 3d 20 32 20 7d 20 7b 0a 09 73 65 74 20 73 65 == 2 } {..set se
247d0 72 76 69 63 65 73 20 5b 72 64 65 62 75 67 20 2d rvices [rdebug -
247e0 66 6f 72 63 65 75 70 64 61 74 65 32 20 2d 61 63 forceupdate2 -ac
247f0 74 69 76 65 73 5d 0a 20 20 20 20 7d 20 65 6c 73 tives]. } els
24800 65 69 66 20 7b 20 24 66 6f 72 63 65 20 7d 20 7b eif { $force } {
24810 0a 09 73 65 74 20 73 65 72 76 69 63 65 73 20 5b ..set services [
24820 72 64 65 62 75 67 20 2d 66 6f 72 63 65 75 70 64 rdebug -forceupd
24830 61 74 65 20 2d 61 63 74 69 76 65 73 5d 0a 20 20 ate -actives].
24840 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 } else {..set
24850 73 65 72 76 69 63 65 73 20 5b 72 64 65 62 75 67 services [rdebug
24860 20 2d 61 63 74 69 76 65 73 5d 0a 20 20 20 20 7d -actives]. }
24870 0a 0a 20 20 20 20 24 6d 65 6e 75 20 64 65 6c 20 .. $menu del
24880 30 20 65 6e 64 0a 0a 20 20 20 20 73 65 74 20 66 0 end.. set f
24890 6f 6e 74 62 6f 6c 64 20 5b 66 6f 6e 74 20 61 63 ontbold [font ac
248a0 74 75 61 6c 20 5b 24 6d 65 6e 75 20 63 67 65 74 tual [$menu cget
248b0 20 2d 66 6f 6e 74 5d 5d 0a 20 20 20 20 73 65 74 -font]]. set
248c0 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 24 ipos [lsearch $
248d0 66 6f 6e 74 62 6f 6c 64 20 2d 77 65 69 67 68 74 fontbold -weight
248e0 5d 0a 20 20 20 20 69 6e 63 72 20 69 70 6f 73 0a ]. incr ipos.
248f0 20 20 20 20 73 65 74 20 66 6f 6e 74 62 6f 6c 64 set fontbold
24900 20 5b 6c 72 65 70 6c 61 63 65 20 24 66 6f 6e 74 [lreplace $font
24910 62 6f 6c 64 20 24 69 70 6f 73 20 24 69 70 6f 73 bold $ipos $ipos
24920 20 62 6f 6c 64 5d 0a 0a 20 20 20 20 24 6d 65 6e bold].. $men
24930 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c u add command -l
24940 61 62 65 6c 20 5b 5f 20 22 52 65 6d 6f 74 65 20 abel [_ "Remote
24950 54 43 4c 20 64 65 62 75 67 67 69 6e 67 22 5d 20 TCL debugging"]
24960 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64 20 -font $fontbold
24970 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 20 -state disabled
24980 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20 67 \..-background g
24990 72 65 79 38 35 0a 0a 20 20 20 20 69 66 20 7b 20 rey85.. if {
249a0 5b 6c 6c 65 6e 67 74 68 20 24 73 65 72 76 69 63 [llength $servic
249b0 65 73 5d 20 3d 3d 20 30 20 7d 20 7b 0a 09 24 6d es] == 0 } {..$m
249c0 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
249d0 2d 6c 61 62 65 6c 20 5b 5f 20 22 54 68 65 72 65 -label [_ "There
249e0 20 61 72 65 20 6e 6f 20 61 63 74 69 76 65 20 70 are no active p
249f0 72 6f 67 72 61 6d 73 22 5d 20 2d 73 74 61 74 65 rograms"] -state
24a00 20 64 69 73 61 62 6c 65 64 0a 09 69 66 20 7b 20 disabled..if {
24a10 24 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09 20 $usecommR } {..
24a20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d $menu add com
24a30 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 mand -label [_ "
24a40 55 73 65 20 27 52 65 6d 6f 74 65 20 54 43 4c 20 Use 'Remote TCL
24a50 75 70 64 61 74 65 27 20 74 6f 20 61 63 74 75 61 update' to actua
24a60 6c 69 7a 65 22 5d 20 2d 73 74 61 74 65 20 64 69 lize"] -state di
24a70 73 61 62 6c 65 64 0a 09 7d 0a 20 20 20 20 7d 20 sabled..}. }
24a80 65 6c 73 65 20 7b 0a 09 66 6f 72 65 61 63 68 20 else {..foreach
24a90 69 20 24 73 65 72 76 69 63 65 73 20 7b 0a 09 20 i $services {..
24aa0 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 if { $remotes
24ab0 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 72 65 erverType == "re
24ac0 6d 6f 74 65 22 20 26 26 20 24 69 20 3d 3d 20 24 mote" && $i == $
24ad0 72 65 6d 6f 74 65 73 65 72 76 65 72 20 7d 20 7b remoteserver } {
24ae0 0a 09 09 24 6d 65 6e 75 20 61 64 64 20 63 68 65 ...$menu add che
24af0 63 6b 20 2d 6c 61 62 65 6c 20 24 69 20 2d 63 6f ck -label $i -co
24b00 6d 6d 61 6e 64 20 5c 0a 09 09 20 20 20 20 22 5b mmand \... "[
24b10 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
24b20 3a 3a 72 64 65 62 75 67 20 24 69 5d 0a 09 09 20 ::rdebug $i]...
24b30 20 20 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f [namespace co
24b40 64 65 20 5b 6c 69 73 74 20 41 63 74 75 61 6c 69 de [list Actuali
24b50 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d 73 zeActivePrograms
24b60 20 24 6d 65 6e 75 5d 5d 22 20 5c 0a 09 09 20 20 $menu]]" \...
24b70 20 20 2d 76 61 72 69 61 62 6c 65 20 3a 3a 63 68 -variable ::ch
24b80 65 63 6b 65 64 20 0a 09 09 73 65 74 20 3a 3a 63 ecked ...set ::c
24b90 68 65 63 6b 65 64 20 31 0a 09 20 20 20 20 7d 20 hecked 1.. }
24ba0 65 6c 73 65 20 7b 0a 09 09 24 6d 65 6e 75 20 61 else {...$menu a
24bb0 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 dd command -labe
24bc0 6c 20 24 69 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a l $i -command \.
24bd0 09 09 20 20 20 20 22 5b 6c 69 73 74 20 52 61 6d .. "[list Ram
24be0 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 75 67 Debugger::rdebug
24bf0 20 24 69 5d 0a 09 09 20 20 20 20 5b 6e 61 6d 65 $i]... [name
24c00 73 70 61 63 65 20 63 6f 64 65 20 5b 6c 69 73 74 space code [list
24c10 20 41 63 74 75 61 6c 69 7a 65 41 63 74 69 76 65 ActualizeActive
24c20 50 72 6f 67 72 61 6d 73 20 24 6d 65 6e 75 5d 5d Programs $menu]]
24c30 22 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 ".. }..}.
24c40 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 }. $menu add
24c50 73 65 70 61 72 61 74 6f 72 0a 0a 20 20 20 20 24 separator.. $
24c60 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 menu add command
24c70 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 52 65 6d 6f -label [_ "Remo
24c80 74 65 20 54 43 4c 20 75 70 64 61 74 65 22 5d 20 te TCL update"]
24c90 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64 20 -font $fontbold
24ca0 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 20 -state disabled
24cb0 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20 67 \..-background g
24cc0 72 65 79 38 35 0a 20 20 20 20 69 66 20 7b 20 24 rey85. if { $
24cd0 75 73 65 63 6f 6d 6d 52 20 7d 20 7b 0a 09 24 6d usecommR } {..$m
24ce0 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
24cf0 2d 6c 61 62 65 6c 20 5b 5f 20 22 55 70 64 61 74 -label [_ "Updat
24d00 65 20 72 65 6d 6f 74 65 73 22 5d 20 2d 63 6f 6d e remotes"] -com
24d10 6d 61 6e 64 20 5c 0a 09 20 20 20 20 22 52 61 6d mand \.. "Ram
24d20 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c Debugger::Actual
24d30 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d izeActiveProgram
24d40 73 20 24 6d 65 6e 75 20 31 22 0a 20 20 20 20 7d s $menu 1". }
24d50 20 65 6c 73 65 20 7b 0a 09 24 6d 65 6e 75 20 61 else {..$menu a
24d60 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 dd command -labe
24d70 6c 20 5b 5f 20 22 55 73 65 20 63 6f 6d 6d 52 22 l [_ "Use commR"
24d80 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 ] -command \..
24d90 20 20 22 5b 6c 69 73 74 20 73 65 74 20 52 61 6d "[list set Ram
24da0 44 65 62 75 67 67 65 72 3a 3a 75 73 65 63 6f 6d Debugger::usecom
24db0 6d 52 20 31 5d 3b 20 5b 6c 69 73 74 20 52 61 6d mR 1]; [list Ram
24dc0 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c Debugger::Actual
24dd0 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d izeActiveProgram
24de0 73 20 24 6d 65 6e 75 20 31 5d 22 0a 20 20 20 20 s $menu 1]".
24df0 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 }. $menu add
24e00 73 65 70 61 72 61 74 6f 72 0a 0a 20 20 20 20 24 separator.. $
24e10 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 menu add command
24e20 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 4c 6f 63 61 -label [_ "Loca
24e30 6c 20 54 43 4c 20 64 65 62 75 67 67 69 6e 67 22 l TCL debugging"
24e40 5d 20 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c ] -font $fontbol
24e50 64 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 d -state disable
24e60 64 20 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 d \..-background
24e70 20 67 72 65 79 38 35 0a 20 20 20 20 69 66 20 7b grey85. if {
24e80 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 $remoteserverTy
24e90 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 7d 20 pe == "local" }
24ea0 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 68 65 {..$menu add che
24eb0 63 6b 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 75 ck -label [_ "Cu
24ec0 72 72 65 6e 74 20 66 69 6c 65 22 5d 20 2d 63 6f rrent file"] -co
24ed0 6d 6d 61 6e 64 20 7b 0a 09 20 20 20 20 52 61 6d mmand {.. Ram
24ee0 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 75 67 Debugger::rdebug
24ef0 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 0a 09 7d -currentfile..}
24f00 20 2d 76 61 72 69 61 62 6c 65 20 3a 3a 63 68 65 -variable ::che
24f10 63 6b 65 64 20 0a 09 73 65 74 20 3a 3a 63 68 65 cked ..set ::che
24f20 63 6b 65 64 20 31 0a 20 20 20 20 7d 20 65 6c 73 cked 1. } els
24f30 65 20 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 e {..$menu add c
24f40 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f ommand -label [_
24f50 20 22 43 75 72 72 65 6e 74 20 66 69 6c 65 22 5d "Current file"]
24f60 20 2d 63 6f 6d 6d 61 6e 64 20 7b 0a 09 20 20 20 -command {..
24f70 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 RamDebugger::rd
24f80 65 62 75 67 20 2d 63 75 72 72 65 6e 74 66 69 6c ebug -currentfil
24f90 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 24 e..}. }. $
24fa0 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 menu add command
24fb0 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 75 72 72 -label [_ "Curr
24fc0 65 6e 74 20 66 69 6c 65 20 61 72 67 75 6d 65 6e ent file argumen
24fd0 74 73 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 7b 0a ts"] -command {.
24fe0 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 65 .RamDebugger::De
24ff0 62 75 67 43 75 72 72 65 6e 74 46 69 6c 65 41 72 bugCurrentFileAr
25000 67 73 57 69 6e 64 6f 77 0a 20 20 20 20 7d 0a 20 gsWindow. }.
25010 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 65 70 $menu add sep
25020 61 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 6e 75 arator. $menu
25030 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 add command -la
25040 62 65 6c 20 5b 5f 20 22 4c 6f 63 61 6c 20 63 2f bel [_ "Local c/
25050 63 2b 2b 20 64 65 62 75 67 67 69 6e 67 22 5d 20 c++ debugging"]
25060 2d 66 6f 6e 74 20 24 66 6f 6e 74 62 6f 6c 64 20 -font $fontbold
25070 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 20 -state disabled
25080 5c 0a 09 2d 62 61 63 6b 67 72 6f 75 6e 64 20 67 \..-background g
25090 72 65 79 38 35 0a 20 20 20 20 69 66 20 7b 20 24 rey85. if { $
250a0 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 remoteserverType
250b0 20 3d 3d 20 22 67 64 62 22 20 7d 20 7b 0a 09 24 == "gdb" } {..$
250c0 6d 65 6e 75 20 61 64 64 20 63 68 65 63 6b 20 2d menu add check -
250d0 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75 67 20 label [_ "Debug
250e0 63 2b 2b 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 22 c++"] -command "
250f0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 65 62 RamDebugger::Deb
25100 75 67 43 70 6c 75 73 50 6c 75 73 57 69 6e 64 6f ugCplusPlusWindo
25110 77 22 20 5c 0a 09 20 20 20 20 2d 76 61 72 69 61 w" \.. -varia
25120 62 6c 65 20 3a 3a 63 68 65 63 6b 65 64 20 0a 09 ble ::checked ..
25130 73 65 74 20 3a 3a 63 68 65 63 6b 65 64 20 31 0a set ::checked 1.
25140 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24 6d } else {..$m
25150 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
25160 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75 67 -label [_ "Debug
25170 20 63 2b 2b 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 c++"] -command
25180 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 65 "RamDebugger::De
25190 62 75 67 43 70 6c 75 73 50 6c 75 73 57 69 6e 64 bugCplusPlusWind
251a0 6f 77 22 0a 20 20 20 20 7d 0a 20 20 20 20 24 6d ow". }. $m
251b0 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
251c0 2d 6c 61 62 65 6c 20 5b 5f 20 22 44 65 62 75 67 -label [_ "Debug
251d0 20 63 2b 2b 20 28 6e 6f 20 61 73 6b 29 22 5d 20 c++ (no ask)"]
251e0 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
251f0 75 67 67 65 72 3a 3a 44 65 62 75 67 43 70 6c 75 ugger::DebugCplu
25200 73 50 6c 75 73 57 69 6e 64 6f 77 20 31 22 0a 20 sPlusWindow 1".
25210 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d $menu add com
25220 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 mand -label [_ "
25230 44 65 62 75 67 20 63 2b 2b 20 61 74 74 61 63 68 Debug c++ attach
25240 20 70 72 6f 63 65 73 73 22 5d 20 2d 63 6f 6d 6d process"] -comm
25250 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
25260 3a 3a 44 65 62 75 67 43 70 6c 75 73 50 6c 75 73 ::DebugCplusPlus
25270 57 69 6e 64 6f 77 41 74 74 61 63 68 22 0a 20 20 WindowAttach".
25280 20 20 24 6d 65 6e 75 20 61 64 64 20 73 65 70 61 $menu add sepa
25290 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 6e 75 20 rator. $menu
252a0 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 add command -lab
252b0 65 6c 20 5b 5f 20 22 44 69 73 63 6f 6e 6e 65 63 el [_ "Disconnec
252c0 74 2f 53 74 6f 70 22 5d 20 2d 63 6f 6d 6d 61 6e t/Stop"] -comman
252d0 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 d RamDebugger::D
252e0 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70 20 2d 61 isconnectStop -a
252f0 63 63 20 22 53 68 69 66 74 2b 46 35 22 0a 0a 20 cc "Shift+F5"..
25300 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 if { $remotes
25310 65 72 76 65 72 20 3d 3d 20 22 22 20 7d 20 7b 0a erver == "" } {.
25320 09 24 6d 65 6e 75 20 65 6e 74 72 79 63 6f 6e 66 .$menu entryconf
25330 69 67 75 72 65 20 65 6e 64 20 2d 73 74 61 74 65 igure end -state
25340 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 7d 0a disabled. }.
25350 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20 22 SetMessage "
25360 22 0a 20 20 20 20 57 61 69 74 53 74 61 74 65 20 ". WaitState
25370 30 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 0.}..proc RamDeb
25380 75 67 67 65 72 3a 3a 44 69 73 63 6f 6e 6e 65 63 ugger::Disconnec
25390 74 53 74 6f 70 20 7b 20 61 72 67 73 20 7d 20 7b tStop { args } {
253a0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 . variable ma
253b0 69 6e 66 72 61 6d 65 0a 20 20 20 20 0a 20 20 20 inframe. .
253c0 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a set optional {.
253d0 09 7b 20 2d 66 6f 72 63 65 20 22 22 20 30 20 7d .{ -force "" 0 }
253e0 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 . }. set c
253f0 6f 6d 70 75 6c 73 6f 72 79 20 22 22 0a 20 20 20 ompulsory "".
25400 20 70 61 72 73 65 5f 61 72 67 73 20 24 6f 70 74 parse_args $opt
25410 69 6f 6e 61 6c 20 24 63 6f 6d 70 75 6c 73 6f 72 ional $compulsor
25420 79 20 24 61 72 67 73 0a 0a 20 20 20 20 69 66 20 y $args.. if
25430 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74 20 52 { [catch [list R
25440 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 amDebugger::rdeb
25450 75 67 20 2d 64 69 73 63 6f 6e 6e 65 63 74 5d 20 ug -disconnect]
25460 65 72 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 errstring] } {..
25470 69 66 20 7b 20 24 66 6f 72 63 65 20 7d 20 7b 20 if { $force } {
25480 72 65 74 75 72 6e 20 7d 0a 09 73 65 74 20 77 20 return }..set w
25490 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 [winfo toplevel
254a0 24 6d 61 69 6e 66 72 61 6d 65 5d 0a 09 73 65 74 $mainframe]..set
254b0 20 6d 65 6e 75 31 20 24 77 2e 61 63 74 75 61 6c menu1 $w.actual
254c0 69 7a 65 70 72 6f 67 72 61 6d 73 6d 65 6e 75 0a izeprogramsmenu.
254d0 09 74 6b 5f 70 6f 70 75 70 20 24 6d 65 6e 75 31 .tk_popup $menu1
254e0 20 5b 77 69 6e 66 6f 20 70 6f 69 6e 74 65 72 78 [winfo pointerx
254f0 20 2e 5d 20 5b 77 69 6e 66 6f 20 70 6f 69 6e 74 .] [winfo point
25500 65 72 79 20 2e 5d 0a 09 23 57 61 72 6e 57 69 6e ery .]..#WarnWin
25510 20 24 65 72 72 73 74 72 69 6e 67 0a 20 20 20 20 $errstring.
25520 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
25530 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76 69 ugger::GotoPrevi
25540 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73 74 ousNextInWinList
25550 20 7b 20 77 68 61 74 20 7d 20 7b 0a 20 20 20 20 { what } {.
25560 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 46 variable WindowF
25570 69 6c 65 73 4c 69 73 74 0a 20 20 20 20 76 61 72 ilesList. var
25580 69 61 62 6c 65 20 57 69 6e 64 6f 77 46 69 6c 65 iable WindowFile
25590 73 4c 69 73 74 4c 69 6e 65 4e 75 6d 73 0a 20 20 sListLineNums.
255a0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
255b0 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 variable tex
255c0 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 t_secondary.
255d0 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 variable current
255e0 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c file. variabl
255f0 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 e currentfile_se
25600 63 6f 6e 64 61 72 79 0a 0a 20 20 20 20 69 66 20 condary.. if
25610 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 57 69 6e 64 { [llength $Wind
25620 6f 77 46 69 6c 65 73 4c 69 73 74 5d 20 3c 20 31 owFilesList] < 1
25630 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 } { return }..
25640 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 if { [info ex
25650 69 73 74 73 20 74 65 78 74 5f 73 65 63 6f 6e 64 ists text_second
25660 61 72 79 5d 20 26 26 20 5b 66 6f 63 75 73 20 2d ary] && [focus -
25670 6c 61 73 74 66 6f 72 20 24 74 65 78 74 5d 20 65 lastfor $text] e
25680 71 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 72 q $text_secondar
25690 79 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 y } {..set file
256a0 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 63 $currentfile_sec
256b0 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65 6c 73 ondary. } els
256c0 65 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 63 e {..set file $c
256d0 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 7d urrentfile. }
256e0 0a 20 20 20 20 73 65 74 20 70 6f 73 20 5b 6c 73 . set pos [ls
256f0 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 57 69 earch -exact $Wi
25700 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 24 66 ndowFilesList $f
25710 69 6c 65 5d 0a 20 20 20 20 69 66 20 7b 20 5b 6c ile]. if { [l
25720 6c 65 6e 67 74 68 20 24 57 69 6e 64 6f 77 46 69 length $WindowFi
25730 6c 65 73 4c 69 73 74 5d 20 3d 3d 20 31 20 26 26 lesList] == 1 &&
25740 20 24 70 6f 73 20 3d 3d 20 30 20 7d 20 7b 20 72 $pos == 0 } { r
25750 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 73 77 69 eturn }.. swi
25760 74 63 68 20 24 77 68 61 74 20 70 72 65 76 20 7b tch $what prev {
25770 20 69 6e 63 72 20 70 6f 73 20 2d 31 20 7d 20 6e incr pos -1 } n
25780 65 78 74 20 7b 20 69 6e 63 72 20 70 6f 73 20 7d ext { incr pos }
25790 0a 0a 20 20 20 20 69 66 20 7b 20 24 70 6f 73 20 .. if { $pos
257a0 3c 20 30 20 7d 20 7b 20 73 65 74 20 70 6f 73 20 < 0 } { set pos
257b0 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 [expr {[llength
257c0 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 $WindowFilesList
257d0 5d 2d 31 7d 5d 20 7d 0a 20 20 20 20 69 66 20 7b ]-1}] }. if {
257e0 20 24 70 6f 73 20 3e 3d 20 5b 6c 6c 65 6e 67 74 $pos >= [llengt
257f0 68 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 h $WindowFilesLi
25800 73 74 5d 20 7d 20 7b 20 73 65 74 20 70 6f 73 20 st] } { set pos
25810 30 20 7d 0a 20 20 20 20 4f 70 65 6e 46 69 6c 65 0 }. OpenFile
25820 46 20 2d 6e 6f 5f 68 69 73 74 6f 72 79 20 31 20 F -no_history 1
25830 5b 6c 69 6e 64 65 78 20 24 57 69 6e 64 6f 77 46 [lindex $WindowF
25840 69 6c 65 73 4c 69 73 74 20 24 70 6f 73 5d 0a 7d ilesList $pos].}
25850 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
25860 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 er::ChooseViewFi
25870 6c 65 20 7b 20 77 68 61 74 20 61 72 67 73 20 7d le { what args }
25880 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
25890 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a WindowFilesList.
258a0 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 variable tex
258b0 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 t. variable t
258c0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 ext_secondary.
258d0 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
258e0 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 69 61 ntfile. varia
258f0 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 5f ble currentfile_
25900 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 secondary. va
25910 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 riable options.
25920 20 20 20 76 61 72 69 61 62 6c 65 20 43 68 6f 6f variable Choo
25930 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 79 70 72 seViewFile_keypr
25940 65 73 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ess. variable
25950 20 6f 6c 64 47 72 61 62 0a 20 20 20 20 76 61 72 oldGrab. var
25960 69 61 62 6c 65 20 67 72 61 62 53 74 61 74 75 73 iable grabStatus
25970 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 6c . variable ol
25980 64 46 6f 63 75 73 0a 0a 20 20 20 20 69 66 20 7b dFocus.. if {
25990 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 [info exists te
259a0 78 74 5f 73 65 63 6f 6e 64 61 72 79 5d 20 26 26 xt_secondary] &&
259b0 20 5b 66 6f 63 75 73 20 2d 6c 61 73 74 66 6f 72 [focus -lastfor
259c0 20 24 74 65 78 74 5d 20 65 71 20 5c 0a 09 20 20 $text] eq \..
259d0 20 20 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 $text_seconda
259e0 72 79 20 7d 20 7b 0a 09 73 65 74 20 66 69 6c 65 ry } {..set file
259f0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5f 73 65 $currentfile_se
25a00 63 6f 6e 64 61 72 79 0a 20 20 20 20 7d 20 65 6c condary. } el
25a10 73 65 20 7b 0a 09 73 65 74 20 66 69 6c 65 20 24 se {..set file $
25a20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
25a30 7d 0a 20 20 20 20 73 65 74 20 77 20 24 74 65 78 }. set w $tex
25a40 74 0a 0a 20 20 20 20 69 66 20 7b 20 5b 77 69 6e t.. if { [win
25a50 66 6f 20 65 78 69 73 74 73 20 24 77 2e 5f 63 68 fo exists $w._ch
25a60 6f 6f 73 65 76 66 5d 20 7d 20 7b 0a 09 63 75 3a oosevf] } {..cu:
25a70 3a 73 65 74 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d :set_window_geom
25a80 65 74 72 79 20 24 77 2e 5f 63 68 6f 6f 73 65 76 etry $w._choosev
25a90 66 20 5b 77 6d 20 67 65 6f 6d 65 74 72 79 20 24 f [wm geometry $
25aa0 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 0a 20 20 20 w._choosevf].
25ab0 20 7d 0a 0a 20 20 20 20 73 65 74 20 65 6e 74 72 }.. set entr
25ac0 79 6c 65 6e 20 31 36 0a 20 20 20 20 73 65 74 20 ylen 16. set
25ad0 6e 75 6d 63 6f 6c 73 20 36 0a 20 20 20 20 73 65 numcols 6. se
25ae0 74 20 61 66 74 65 72 5f 74 69 6d 65 20 35 30 0a t after_time 50.
25af0 0a 20 20 20 20 73 77 69 74 63 68 20 24 77 68 61 . switch $wha
25b00 74 20 7b 0a 09 73 74 61 72 74 20 2d 20 73 74 61 t {..start - sta
25b10 72 74 72 65 63 65 6e 74 20 2d 20 73 74 61 72 74 rtrecent - start
25b20 63 75 72 72 64 69 72 20 7b 0a 09 20 20 20 20 69 currdir {.. i
25b30 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 f { ![info exist
25b40 73 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 s options(Recent
25b50 46 69 6c 65 73 4c 29 5d 20 7d 20 7b 20 73 65 74 FilesL)] } { set
25b60 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 options(RecentF
25b70 69 6c 65 73 4c 29 20 22 22 20 7d 0a 09 20 20 20 ilesL) "" }..
25b80 20 0a 09 20 20 20 20 69 66 20 7b 20 24 77 68 61 .. if { $wha
25b90 74 20 65 71 20 22 73 74 61 72 74 22 20 26 26 20 t eq "start" &&
25ba0 5b 6c 6c 65 6e 67 74 68 20 24 57 69 6e 64 6f 77 [llength $Window
25bb0 46 69 6c 65 73 4c 69 73 74 5d 20 3c 20 32 20 7d FilesList] < 2 }
25bc0 20 7b 0a 09 09 73 65 74 20 77 68 61 74 20 73 74 {...set what st
25bd0 61 72 74 72 65 63 65 6e 74 0a 09 20 20 20 20 7d artrecent.. }
25be0 0a 09 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 .. if { $what
25bf0 20 65 71 20 22 73 74 61 72 74 72 65 63 65 6e 74 eq "startrecent
25c00 22 20 26 26 20 21 5b 6c 6c 65 6e 67 74 68 20 6f " && ![llength o
25c10 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c ptions(RecentFil
25c20 65 73 4c 29 5d 20 7d 20 7b 0a 09 09 73 65 74 20 esL)] } {...set
25c30 77 68 61 74 20 73 74 61 72 74 63 75 72 72 64 69 what startcurrdi
25c40 72 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 r.. }.. if
25c50 20 7b 20 24 77 68 61 74 20 65 71 20 22 73 74 61 { $what eq "sta
25c60 72 74 63 75 72 72 64 69 72 22 20 7d 20 7b 0a 09 rtcurrdir" } {..
25c70 09 73 65 74 20 70 61 74 74 65 72 6e 73 20 22 22 .set patterns ""
25c80 0a 09 09 66 6f 72 65 61 63 68 20 65 78 74 20 24 ...foreach ext $
25c90 6f 70 74 69 6f 6e 73 28 65 78 74 65 6e 73 69 6f options(extensio
25ca0 6e 73 2c 54 43 4c 29 20 7b 0a 09 09 20 20 20 20 ns,TCL) {...
25cb0 69 66 20 7b 20 24 65 78 74 20 6e 65 20 22 2a 22 if { $ext ne "*"
25cc0 20 7d 20 7b 20 6c 61 70 70 65 6e 64 20 70 61 74 } { lappend pat
25cd0 74 65 72 6e 73 20 2a 5b 73 74 72 69 6e 67 20 74 terns *[string t
25ce0 72 69 6d 20 24 65 78 74 20 2a 5d 20 7d 0a 09 09 rim $ext *] }...
25cf0 7d 0a 09 09 73 65 74 20 64 69 72 20 5b 66 69 6c }...set dir [fil
25d00 65 20 64 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d e dirname $file]
25d10 0a 09 09 69 66 20 7b 20 24 64 69 72 20 6e 65 20 ...if { $dir ne
25d20 22 2e 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 "." } {... se
25d30 74 20 6c 69 73 74 20 5b 65 76 61 6c 20 5b 6c 69 t list [eval [li
25d40 73 74 20 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c st glob -nocompl
25d50 61 69 6e 20 2d 64 69 72 20 24 64 69 72 5d 20 24 ain -dir $dir] $
25d60 70 61 74 74 65 72 6e 73 5d 0a 09 09 7d 20 65 6c patterns]...} el
25d70 73 65 20 7b 20 73 65 74 20 6c 69 73 74 20 22 22 se { set list ""
25d80 20 7d 0a 09 09 69 66 20 7b 20 24 6c 69 73 74 20 }...if { $list
25d90 65 71 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 eq "" } {...
25da0 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 57 if { [llength $W
25db0 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 5d 20 indowFilesList]
25dc0 3e 3d 20 32 20 7c 7c 20 5c 0a 09 09 20 20 20 20 >= 2 || \...
25dd0 20 20 20 20 20 20 20 20 20 21 5b 6c 6c 65 6e 67 ![lleng
25de0 74 68 20 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e th options(Recen
25df0 74 46 69 6c 65 73 4c 29 5d 20 7d 20 7b 0a 09 09 tFilesL)] } {...
25e00 20 20 20 20 20 20 20 20 73 65 74 20 77 68 61 74 set what
25e10 20 73 74 61 72 74 0a 09 09 20 20 20 20 7d 20 65 start... } e
25e20 6c 73 65 20 7b 20 73 65 74 20 77 68 61 74 20 73 lse { set what s
25e30 74 61 72 74 72 65 63 65 6e 74 20 7d 0a 09 09 7d tartrecent }...}
25e40 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 77 69 .. }.. swi
25e50 74 63 68 20 24 77 68 61 74 20 7b 0a 09 09 73 74 tch $what {...st
25e60 61 72 74 20 7b 0a 09 09 20 20 20 20 73 65 74 20 art {... set
25e70 6c 69 73 74 20 22 22 0a 09 09 20 20 20 20 66 6f list ""... fo
25e80 72 20 7b 20 73 65 74 20 69 20 5b 65 78 70 72 20 r { set i [expr
25e90 7b 5b 6c 6c 65 6e 67 74 68 20 24 57 69 6e 64 6f {[llength $Windo
25ea0 77 46 69 6c 65 73 4c 69 73 74 5d 2d 31 7d 5d 20 wFilesList]-1}]
25eb0 7d 20 7b 20 24 69 20 3e 3d 20 30 20 7d 20 7b 20 } { $i >= 0 } {
25ec0 69 6e 63 72 20 69 20 2d 31 20 7d 20 7b 0a 09 09 incr i -1 } {...
25ed0 20 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65 set file
25ee0 20 5b 6c 69 6e 64 65 78 20 24 57 69 6e 64 6f 77 [lindex $Window
25ef0 46 69 6c 65 73 4c 69 73 74 20 24 69 5d 0a 09 09 FilesList $i]...
25f00 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b 66 69 if { [fi
25f10 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c 65 5d le exists $file]
25f20 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 } {...
25f30 20 20 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 20 lappend list
25f40 24 66 69 6c 65 0a 09 09 20 20 20 20 20 20 20 20 $file...
25f50 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 }... }...}...
25f60 73 74 61 72 74 72 65 63 65 6e 74 20 7b 0a 09 09 startrecent {...
25f70 20 20 20 20 73 65 74 20 6c 69 73 74 20 22 22 0a set list "".
25f80 09 09 20 20 20 20 66 6f 72 65 61 63 68 20 65 6c .. foreach el
25f90 6d 20 24 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e m $options(Recen
25fa0 74 46 69 6c 65 73 4c 29 20 7b 0a 09 09 20 20 20 tFilesL) {...
25fb0 20 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b 6c set file [l
25fc0 69 6e 64 65 78 20 24 65 6c 6d 20 30 5d 0a 09 09 index $elm 0]...
25fd0 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b 66 69 if { [fi
25fe0 6c 65 20 65 78 69 73 74 73 20 24 66 69 6c 65 5d le exists $file]
25ff0 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 } {...
26000 20 20 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 20 lappend list
26010 24 66 69 6c 65 0a 09 09 20 20 20 20 20 20 20 20 $file...
26020 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 }... }...}...
26030 73 74 61 72 74 63 75 72 72 64 69 72 20 7b 0a 09 startcurrdir {..
26040 09 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 6c . set list [l
26050 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61 72 79 sort -dictionary
26060 20 24 6c 69 73 74 5d 0a 09 09 20 20 20 20 23 20 $list]... #
26070 61 6c 72 65 61 64 79 20 61 73 73 69 67 6e 65 64 already assigned
26080 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 ...}.. }..
26090 20 73 65 74 20 6c 69 73 74 20 5b 6c 72 61 6e 67 set list [lrang
260a0 65 20 24 6c 69 73 74 20 30 20 33 39 5d 0a 09 20 e $list 0 39]..
260b0 20 20 20 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 set ipos [lse
260c0 61 72 63 68 20 2d 65 78 61 63 74 20 24 6c 69 73 arch -exact $lis
260d0 74 20 24 66 69 6c 65 5d 0a 09 20 20 20 20 69 66 t $file].. if
260e0 20 7b 20 24 69 70 6f 73 20 3d 3d 20 2d 31 20 7d { $ipos == -1 }
260f0 20 7b 0a 09 09 73 65 74 20 6c 69 73 74 20 5b 6c {...set list [l
26100 69 6e 73 65 72 74 20 24 6c 69 73 74 20 30 20 24 insert $list 0 $
26110 66 69 6c 65 5d 0a 09 20 20 20 20 7d 20 65 6c 73 file].. } els
26120 65 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20 30 eif { $ipos != 0
26130 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 77 68 61 } {...if { $wha
26140 74 20 65 71 20 22 73 74 61 72 74 63 75 72 72 64 t eq "startcurrd
26150 69 72 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 ir" } {... se
26160 74 20 6c 69 73 74 20 5b 6c 72 65 70 6c 61 63 65 t list [lreplace
26170 20 24 6c 69 73 74 20 24 69 70 6f 73 20 24 69 70 $list $ipos $ip
26180 6f 73 5d 0a 09 09 20 20 20 20 73 65 74 20 6c 69 os]... set li
26190 73 74 20 5b 6c 69 6e 73 65 72 74 20 24 6c 69 73 st [linsert $lis
261a0 74 20 30 20 24 66 69 6c 65 5d 0a 09 09 7d 20 65 t 0 $file]...} e
261b0 6c 73 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 lse {... set
261c0 74 6d 70 6c 69 73 74 20 24 6c 69 73 74 0a 09 09 tmplist $list...
261d0 20 20 20 20 73 65 74 20 6c 69 73 74 20 5b 6c 72 set list [lr
261e0 61 6e 67 65 20 24 74 6d 70 6c 69 73 74 20 24 69 ange $tmplist $i
261f0 70 6f 73 20 65 6e 64 5d 0a 09 09 20 20 20 20 65 pos end]... e
26200 76 61 6c 20 6c 61 70 70 65 6e 64 20 6c 69 73 74 val lappend list
26210 20 5b 6c 72 61 6e 67 65 20 24 74 6d 70 6c 69 73 [lrange $tmplis
26220 74 20 30 20 5b 65 78 70 72 20 7b 24 69 70 6f 73 t 0 [expr {$ipos
26230 2d 31 7d 5d 5d 0a 09 09 7d 0a 09 20 20 20 20 7d -1}]]...}.. }
26240 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 74 20 .. .. set
26250 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b ChooseViewFile_k
26260 65 79 70 72 65 73 73 20 22 22 0a 09 20 20 20 20 eypress ""..
26270 6c 61 70 70 65 6e 64 20 43 68 6f 6f 73 65 56 69 lappend ChooseVi
26280 65 77 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20 ewFile_keypress
26290 5b 6c 69 73 74 20 73 74 61 72 74 20 6e 65 77 5d [list start new]
262a0 0a 09 20 20 20 20 61 66 74 65 72 20 24 61 66 74 .. after $aft
262b0 65 72 5f 74 69 6d 65 20 5b 6c 69 73 74 20 52 61 er_time [list Ra
262c0 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73 mDebugger::Choos
262d0 65 56 69 65 77 46 69 6c 65 20 6b 65 79 70 72 65 eViewFile keypre
262e0 73 73 5f 65 6e 64 20 73 74 61 72 74 5d 0a 0a 09 ss_end start]...
262f0 20 20 20 20 64 65 73 74 72 6f 79 20 24 77 2e 5f destroy $w._
26300 63 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 74 6f choosevf.. to
26310 70 6c 65 76 65 6c 20 24 77 2e 5f 63 68 6f 6f 73 plevel $w._choos
26320 65 76 66 20 2d 72 65 6c 69 65 66 20 72 61 69 73 evf -relief rais
26330 65 64 20 2d 62 64 20 32 0a 09 20 20 20 20 77 6d ed -bd 2.. wm
26340 20 77 69 74 68 64 72 61 77 20 24 77 2e 5f 63 68 withdraw $w._ch
26350 6f 6f 73 65 76 66 0a 09 20 20 20 20 77 6d 20 6f oosevf.. wm o
26360 76 65 72 72 69 64 65 72 65 64 69 72 65 63 74 20 verrideredirect
26370 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 31 0a 0a $w._choosevf 1..
26380 09 20 20 20 20 6c 61 62 65 6c 20 24 77 2e 5f 63 . label $w._c
26390 68 6f 6f 73 65 76 66 2e 6c 64 20 2d 62 64 20 32 hoosevf.ld -bd 2
263a0 20 2d 72 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 -relief sunken
263b0 2d 61 6e 63 68 6f 72 20 6e 65 20 5c 0a 09 09 2d -anchor ne \...-
263c0 6a 75 73 74 69 66 79 20 72 69 67 68 74 20 2d 77 justify right -w
263d0 69 64 74 68 20 32 30 0a 09 20 20 20 20 66 6f 72 idth 20.. for
263e0 65 61 63 68 20 22 72 6f 77 20 63 6f 6c 22 20 5b each "row col" [
263f0 6c 69 73 74 20 30 20 30 5d 20 62 72 65 61 6b 0a list 0 0] break.
26400 09 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 . for { set i
26410 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 0 } { $i < [lle
26420 6e 67 74 68 20 24 6c 69 73 74 5d 20 7d 20 7b 20 ngth $list] } {
26430 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 69 66 20 incr i } {...if
26440 7b 20 24 69 20 3e 20 30 20 26 26 20 24 69 25 24 { $i > 0 && $i%$
26450 6e 75 6d 63 6f 6c 73 20 3d 3d 20 30 20 7d 20 7b numcols == 0 } {
26460 0a 09 09 20 20 20 20 69 6e 63 72 20 72 6f 77 0a ... incr row.
26470 09 09 20 20 20 20 73 65 74 20 63 6f 6c 20 30 0a .. set col 0.
26480 09 09 7d 0a 09 09 65 6e 74 72 79 20 24 77 2e 5f ..}...entry $w._
26490 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20 2d 77 69 choosevf.l$i -wi
264a0 64 74 68 20 24 65 6e 74 72 79 6c 65 6e 20 2d 62 dth $entrylen -b
264b0 64 20 30 20 2d 68 69 67 68 6c 69 67 68 74 74 68 d 0 -highlightth
264c0 69 63 6b 6e 65 73 73 20 32 20 5c 0a 09 09 20 20 ickness 2 \...
264d0 20 20 2d 68 69 67 68 6c 69 67 68 74 63 6f 6c 6f -highlightcolo
264e0 72 20 23 62 35 62 36 62 64 20 2d 68 69 67 68 6c r #b5b6bd -highl
264f0 69 67 68 74 62 61 63 6b 67 72 6f 75 6e 64 20 5b ightbackground [
26500 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 63 67 65 $w._choosevf cge
26510 74 20 2d 62 67 5d 20 5c 0a 09 09 20 20 20 20 2d t -bg] \... -
26520 6a 75 73 74 69 66 79 20 63 65 6e 74 65 72 20 2d justify center -
26530 63 75 72 73 6f 72 20 22 22 20 5c 0a 09 09 20 20 cursor "" \...
26540 20 20 2d 64 69 73 61 62 6c 65 64 62 61 63 6b 67 -disabledbackg
26550 72 6f 75 6e 64 20 5b 24 77 2e 5f 63 68 6f 6f 73 round [$w._choos
26560 65 76 66 2e 6c 64 20 63 67 65 74 20 2d 62 61 63 evf.ld cget -bac
26570 6b 67 72 6f 75 6e 64 5d 20 5c 0a 09 09 20 20 20 kground] \...
26580 20 2d 64 69 73 61 62 6c 65 64 66 6f 72 65 67 72 -disabledforegr
26590 6f 75 6e 64 20 5b 24 77 2e 5f 63 68 6f 6f 73 65 ound [$w._choose
265a0 76 66 2e 6c 64 20 63 67 65 74 20 2d 66 6f 72 65 vf.ld cget -fore
265b0 67 72 6f 75 6e 64 5d 0a 0a 09 09 73 65 74 20 70 ground]....set p
265c0 61 74 68 20 5b 6c 69 6e 64 65 78 20 24 6c 69 73 ath [lindex $lis
265d0 74 20 24 69 5d 0a 09 09 73 65 74 20 74 78 74 20 t $i]...set txt
265e0 5b 66 69 6c 65 20 74 61 69 6c 20 24 70 61 74 68 [file tail $path
265f0 5d 0a 09 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 ]...if { [string
26600 20 6c 65 6e 67 74 68 20 24 74 78 74 5d 20 3e 20 length $txt] >
26610 24 65 6e 74 72 79 6c 65 6e 20 7d 20 7b 0a 09 09 $entrylen } {...
26620 20 20 20 20 73 65 74 20 74 78 74 20 22 5b 73 74 set txt "[st
26630 72 69 6e 67 20 72 61 6e 67 65 20 24 74 78 74 20 ring range $txt
26640 30 20 5b 65 78 70 72 20 7b 24 65 6e 74 72 79 6c 0 [expr {$entryl
26650 65 6e 2d 34 7d 5d 5d 2e 2e 2e 22 0a 09 09 7d 0a en-4}]]..."...}.
26660 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c ..$w._choosevf.l
26670 24 69 20 69 6e 73 65 72 74 20 65 6e 64 20 24 74 $i insert end $t
26680 78 74 0a 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76 xt...$w._choosev
26690 66 2e 6c 24 69 20 78 76 69 65 77 20 65 6e 64 0a f.l$i xview end.
266a0 09 09 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c ..$w._choosevf.l
266b0 24 69 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 74 $i configure -st
266c0 61 74 65 20 64 69 73 61 62 6c 65 64 0a 09 09 67 ate disabled...g
266d0 72 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 rid $w._choosevf
266e0 2e 6c 24 69 20 2d 72 6f 77 20 24 72 6f 77 20 2d .l$i -row $row -
266f0 63 6f 6c 75 6d 6e 20 24 63 6f 6c 20 2d 73 74 69 column $col -sti
26700 63 6b 79 20 6e 77 0a 09 09 62 69 6e 64 20 24 77 cky nw...bind $w
26710 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20 3c ._choosevf.l$i <
26720 54 61 62 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 Tab> "[list RamD
26730 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 ebugger::ChooseV
26740 69 65 77 46 69 6c 65 20 6e 65 78 74 20 24 69 5d iewFile next $i]
26750 20 3b 20 62 72 65 61 6b 22 0a 09 09 62 69 6e 64 ; break"...bind
26760 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 $w._choosevf.l$
26770 69 20 3c 53 68 69 66 74 2d 54 61 62 3e 20 22 5b i <Shift-Tab> "[
26780 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
26790 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 ::ChooseViewFile
267a0 20 70 72 65 76 20 24 69 5d 20 3b 20 62 72 65 61 prev $i] ; brea
267b0 6b 22 0a 09 09 62 69 6e 64 20 24 77 2e 5f 63 68 k"...bind $w._ch
267c0 6f 6f 73 65 76 66 2e 6c 24 69 20 3c 52 69 67 68 oosevf.l$i <Righ
267d0 74 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62 t> "[list RamDeb
267e0 75 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 ugger::ChooseVie
267f0 77 46 69 6c 65 20 6e 65 78 74 20 24 69 5d 20 3b wFile next $i] ;
26800 20 62 72 65 61 6b 22 0a 09 09 62 69 6e 64 20 24 break"...bind $
26810 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 69 20 w._choosevf.l$i
26820 3c 4c 65 66 74 3e 20 22 5b 6c 69 73 74 20 52 61 <Left> "[list Ra
26830 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f 6f 73 mDebugger::Choos
26840 65 56 69 65 77 46 69 6c 65 20 70 72 65 76 20 24 eViewFile prev $
26850 69 5d 20 3b 20 62 72 65 61 6b 22 0a 09 09 62 69 i] ; break"...bi
26860 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e nd $w._choosevf.
26870 6c 24 69 20 3c 55 70 3e 20 22 5b 6c 69 73 74 20 l$i <Up> "[list
26880 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f RamDebugger::Cho
26890 6f 73 65 56 69 65 77 46 69 6c 65 20 75 70 20 24 oseViewFile up $
268a0 72 6f 77 20 24 63 6f 6c 5d 20 3b 20 62 72 65 61 row $col] ; brea
268b0 6b 22 0a 09 09 62 69 6e 64 20 24 77 2e 5f 63 68 k"...bind $w._ch
268c0 6f 6f 73 65 76 66 2e 6c 24 69 20 3c 44 6f 77 6e oosevf.l$i <Down
268d0 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 > "[list RamDebu
268e0 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 gger::ChooseView
268f0 46 69 6c 65 20 64 6f 77 6e 20 24 72 6f 77 20 24 File down $row $
26900 63 6f 6c 5d 20 3b 20 62 72 65 61 6b 22 0a 09 09 col] ; break"...
26910 62 69 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 bind $w._choosev
26920 66 2e 6c 24 69 20 3c 46 6f 63 75 73 49 6e 3e 20 f.l$i <FocusIn>
26930 5b 6c 69 73 74 20 24 77 2e 5f 63 68 6f 6f 73 65 [list $w._choose
26940 76 66 2e 6c 64 20 63 6f 6e 66 69 67 75 72 65 20 vf.ld configure
26950 2d 74 65 78 74 20 24 70 61 74 68 5d 0a 09 09 62 -text $path]...b
26960 69 6e 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 ind $w._choosevf
26970 2e 6c 24 69 20 3c 31 3e 20 22 5b 6c 69 73 74 20 .l$i <1> "[list
26980 66 6f 63 75 73 20 24 77 2e 5f 63 68 6f 6f 73 65 focus $w._choose
26990 76 66 2e 6c 24 69 5d 20 3b 0a 09 09 20 20 20 20 vf.l$i] ;...
269a0 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
269b0 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c r::ChooseViewFil
269c0 65 20 6b 65 79 70 72 65 73 73 20 62 75 74 74 6f e keypress butto
269d0 6e 31 20 24 6c 69 73 74 5d 20 3b 0a 09 09 20 20 n1 $list] ;...
269e0 20 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 [list RamDebug
269f0 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 ger::ChooseViewF
26a00 69 6c 65 20 6b 65 79 72 65 6c 65 61 73 65 20 62 ile keyrelease b
26a10 75 74 74 6f 6e 31 20 24 6c 69 73 74 5d 20 3b 20 utton1 $list] ;
26a20 62 72 65 61 6b 22 0a 09 09 69 6e 63 72 20 63 6f break"...incr co
26a30 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 67 72 l.. }.. gr
26a40 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e id $w._choosevf.
26a50 6c 64 20 2d 72 6f 77 20 5b 69 6e 63 72 20 72 6f ld -row [incr ro
26a60 77 5d 20 2d 63 6f 6c 75 6d 6e 20 30 20 2d 63 6f w] -column 0 -co
26a70 6c 75 6d 6e 73 70 61 6e 20 24 6e 75 6d 63 6f 6c lumnspan $numcol
26a80 73 20 2d 73 74 69 63 6b 79 20 65 77 20 5c 0a 09 s -sticky ew \..
26a90 09 2d 70 61 64 78 20 35 20 2d 70 61 64 79 20 35 .-padx 5 -pady 5
26aa0 0a 09 20 20 20 20 73 65 74 20 66 6f 6e 74 73 69 .. set fontsi
26ab0 7a 65 20 5b 65 78 70 72 20 7b 5b 66 6f 6e 74 20 ze [expr {[font
26ac0 61 63 74 75 61 6c 20 5b 24 77 2e 5f 63 68 6f 6f actual [$w._choo
26ad0 73 65 76 66 2e 6c 64 20 63 67 65 74 20 2d 66 6f sevf.ld cget -fo
26ae0 6e 74 5d 20 2d 73 69 7a 65 5d 20 5c 0a 09 09 20 nt] -size] \...
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26b00 20 20 20 2d 32 7d 5d 0a 09 20 20 20 20 6c 61 62 -2}].. lab
26b10 65 6c 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e el $w._choosevf.
26b20 6e 6f 74 65 20 2d 74 65 78 74 20 22 50 72 65 73 note -text "Pres
26b30 73 20 3c 53 70 61 63 65 3e 20 74 6f 20 63 68 61 s <Space> to cha
26b40 6e 67 65 20 66 69 6c 65 20 6c 69 73 74 22 20 5c nge file list" \
26b50 0a 09 09 2d 66 6f 6e 74 20 22 2d 73 69 7a 65 20 ...-font "-size
26b60 24 66 6f 6e 74 73 69 7a 65 22 0a 09 20 20 20 20 $fontsize"..
26b70 67 72 69 64 20 24 77 2e 5f 63 68 6f 6f 73 65 76 grid $w._choosev
26b80 66 2e 6e 6f 74 65 20 2d 72 6f 77 20 5b 69 6e 63 f.note -row [inc
26b90 72 20 72 6f 77 5d 20 2d 63 6f 6c 75 6d 6e 20 30 r row] -column 0
26ba0 20 2d 63 6f 6c 75 6d 6e 73 70 61 6e 20 24 6e 75 -columnspan $nu
26bb0 6d 63 6f 6c 73 20 2d 73 74 69 63 6b 79 20 65 77 mcols -sticky ew
26bc0 0a 0a 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c 65 ... if { [lle
26bd0 6e 67 74 68 20 24 6c 69 73 74 5d 20 3c 20 24 6e ngth $list] < $n
26be0 75 6d 63 6f 6c 73 20 7d 20 7b 20 73 65 74 20 6e umcols } { set n
26bf0 75 6d 63 6f 6c 73 20 5b 6c 6c 65 6e 67 74 68 20 umcols [llength
26c00 24 6c 69 73 74 5d 20 7d 0a 0a 09 20 20 20 20 67 $list] }... g
26c10 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 rid columnconfig
26c20 75 72 65 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 ure $w._choosevf
26c30 20 5b 65 78 70 72 20 7b 24 6e 75 6d 63 6f 6c 73 [expr {$numcols
26c40 2d 31 7d 5d 20 2d 77 65 69 67 68 74 20 31 0a 0a -1}] -weight 1..
26c50 09 20 20 20 20 75 70 64 61 74 65 20 69 64 6c 65 . update idle
26c60 74 61 73 6b 73 0a 09 20 20 20 20 73 65 74 20 74 tasks.. set t
26c70 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c [winfo toplevel
26c80 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 24 [winfo parent $
26c90 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 5d 0a 09 20 w._choosevf]]..
26ca0 20 20 20 73 65 74 20 78 20 5b 65 78 70 72 20 7b set x [expr {
26cb0 69 6e 74 28 5b 77 69 6e 66 6f 20 78 20 24 74 5d int([winfo x $t]
26cc0 2b 2e 35 2a 5b 77 69 6e 66 6f 20 77 69 64 74 68 +.5*[winfo width
26cd0 20 24 74 5d 2d 2e 35 2a 5b 77 69 6e 66 6f 20 72 $t]-.5*[winfo r
26ce0 65 71 77 69 64 74 68 20 24 77 2e 5f 63 68 6f 6f eqwidth $w._choo
26cf0 73 65 76 66 5d 29 7d 5d 0a 09 20 20 20 20 73 65 sevf])}].. se
26d00 74 20 79 20 5b 65 78 70 72 20 7b 69 6e 74 28 5b t y [expr {int([
26d10 77 69 6e 66 6f 20 79 20 24 74 5d 2b 2e 35 2a 5b winfo y $t]+.5*[
26d20 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 74 5d winfo height $t]
26d30 2d 2e 35 2a 5b 77 69 6e 66 6f 20 72 65 71 68 65 -.5*[winfo reqhe
26d40 69 67 68 74 20 24 77 2e 5f 63 68 6f 6f 73 65 76 ight $w._choosev
26d50 66 5d 29 7d 5d 0a 0a 09 20 20 20 20 69 66 20 7b f])}]... if {
26d60 20 24 78 2b 5b 77 69 6e 66 6f 20 72 65 71 77 69 $x+[winfo reqwi
26d70 64 74 68 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 dth $w._choosevf
26d80 5d 20 3e 20 5b 77 69 6e 66 6f 20 73 63 72 65 65 ] > [winfo scree
26d90 6e 77 69 64 74 68 20 24 77 5d 20 7d 20 7b 0a 09 nwidth $w] } {..
26da0 09 73 65 74 20 78 20 5b 65 78 70 72 20 7b 5b 77 .set x [expr {[w
26db0 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 64 74 68 info screenwidth
26dc0 20 24 77 5d 2d 5b 77 69 6e 66 6f 20 72 65 71 77 $w]-[winfo reqw
26dd0 69 64 74 68 20 24 77 2e 5f 63 68 6f 6f 73 65 76 idth $w._choosev
26de0 66 5d 7d 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 f]}].. }..
26df0 20 69 66 20 7b 20 24 79 2b 5b 77 69 6e 66 6f 20 if { $y+[winfo
26e00 72 65 71 68 65 69 67 68 74 20 24 77 2e 5f 63 68 reqheight $w._ch
26e10 6f 6f 73 65 76 66 5d 20 3e 20 5b 77 69 6e 66 6f oosevf] > [winfo
26e20 20 73 63 72 65 65 6e 68 65 69 67 68 74 20 24 77 screenheight $w
26e30 5d 20 7d 20 7b 0a 09 09 73 65 74 20 79 20 5b 65 ] } {...set y [e
26e40 78 70 72 20 7b 5b 77 69 6e 66 6f 20 73 63 72 65 xpr {[winfo scre
26e50 65 6e 68 65 69 67 68 74 20 24 77 5d 2d 5b 77 69 enheight $w]-[wi
26e60 6e 66 6f 20 72 65 71 68 65 69 67 68 74 20 24 77 nfo reqheight $w
26e70 2e 5f 63 68 6f 6f 73 65 76 66 5d 7d 5d 0a 09 20 ._choosevf]}]..
26e80 20 20 20 7d 0a 09 20 20 20 20 77 6d 20 67 65 6f }.. wm geo
26e90 6d 65 74 72 79 20 24 77 2e 5f 63 68 6f 6f 73 65 metry $w._choose
26ea0 76 66 20 2b 24 78 2b 24 79 0a 09 20 20 20 20 77 vf +$x+$y.. w
26eb0 6d 20 64 65 69 63 6f 6e 69 66 79 20 24 77 2e 5f m deiconify $w._
26ec0 63 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 0a 09 choosevf.. ..
26ed0 20 20 20 20 62 69 6e 64 20 24 77 2e 5f 63 68 6f bind $w._cho
26ee0 6f 73 65 76 66 20 3c 4b 65 79 52 65 6c 65 61 73 osevf <KeyReleas
26ef0 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 e> [list RamDebu
26f00 67 67 65 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 gger::ChooseView
26f10 46 69 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20 File \...
26f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26f30 20 20 20 20 20 20 20 20 20 6b 65 79 72 65 6c 65 keyrele
26f40 61 73 65 20 25 4b 20 24 6c 69 73 74 5d 0a 09 20 ase %K $list]..
26f50 20 20 20 62 69 6e 64 20 24 77 2e 5f 63 68 6f 6f bind $w._choo
26f60 73 65 76 66 20 3c 4b 65 79 50 72 65 73 73 3e 20 sevf <KeyPress>
26f70 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
26f80 72 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c r::ChooseViewFil
26f90 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 e \...
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26fb0 20 20 20 20 6b 65 79 70 72 65 73 73 20 25 4b 20 keypress %K
26fc0 24 77 68 61 74 5d 0a 09 20 20 20 20 66 6f 72 65 $what].. fore
26fd0 61 63 68 20 69 20 5b 6c 69 73 74 20 24 77 2e 5f ach i [list $w._
26fe0 63 68 6f 6f 73 65 76 66 2e 6e 6f 74 65 20 24 77 choosevf.note $w
26ff0 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 64 5d 20 7b ._choosevf.ld] {
27000 0a 09 09 62 69 6e 64 20 24 69 20 3c 31 3e 20 5b ...bind $i <1> [
27010 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
27020 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 ::ChooseViewFile
27030 20 5c 0a 09 09 20 20 20 20 20 20 20 20 6e 65 78 \... nex
27040 74 74 61 62 20 24 77 68 61 74 5d 0a 09 20 20 20 ttab $what]..
27050 20 7d 0a 09 20 20 20 20 62 69 6e 64 20 24 77 2e }.. bind $w.
27060 5f 63 68 6f 6f 73 65 76 66 20 3c 31 3e 20 5b 6c _choosevf <1> [l
27070 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
27080 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 :ChooseViewFile
27090 63 68 65 63 6b 5f 6f 75 74 73 69 64 65 20 25 78 check_outside %x
270a0 20 25 79 5d 0a 09 20 20 20 20 0a 09 20 20 20 20 %y].. ..
270b0 72 61 69 73 65 20 24 77 2e 5f 63 68 6f 6f 73 65 raise $w._choose
270c0 76 66 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 vf.. .. se
270d0 74 20 6f 6c 64 47 72 61 62 20 5b 67 72 61 62 20 t oldGrab [grab
270e0 63 75 72 72 65 6e 74 20 24 77 5d 0a 09 20 20 20 current $w]..
270f0 20 69 66 20 7b 20 24 6f 6c 64 47 72 61 62 20 6e if { $oldGrab n
27100 65 20 22 22 20 26 26 20 5b 77 69 6e 66 6f 20 65 e "" && [winfo e
27110 78 69 73 74 73 20 24 6f 6c 64 47 72 61 62 5d 20 xists $oldGrab]
27120 7d 20 7b 0a 09 09 73 65 74 20 67 72 61 62 53 74 } {...set grabSt
27130 61 74 75 73 20 5b 67 72 61 62 20 73 74 61 74 75 atus [grab statu
27140 73 20 24 6f 6c 64 47 72 61 62 5d 0a 09 09 67 72 s $oldGrab]...gr
27150 61 62 20 72 65 6c 65 61 73 65 20 24 6f 6c 64 47 ab release $oldG
27160 72 61 62 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 rab.. }..
27170 73 65 74 20 6f 6c 64 46 6f 63 75 73 20 5b 66 6f set oldFocus [fo
27180 63 75 73 5d 0a 0a 09 20 20 20 20 67 72 61 62 20 cus]... grab
27190 24 77 2e 5f 63 68 6f 6f 73 65 76 66 0a 09 20 20 $w._choosevf..
271a0 20 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 if { [llength
271b0 24 6c 69 73 74 5d 20 3e 20 31 20 7d 20 7b 0a 09 $list] > 1 } {..
271c0 09 61 66 74 65 72 20 69 64 6c 65 20 5b 6c 69 73 .after idle [lis
271d0 74 20 63 61 74 63 68 20 5b 6c 69 73 74 20 66 6f t catch [list fo
271e0 63 75 73 20 2d 66 6f 72 63 65 20 24 77 2e 5f 63 cus -force $w._c
271f0 68 6f 6f 73 65 76 66 2e 6c 31 5d 5d 0a 09 20 20 hoosevf.l1]]..
27200 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 61 66 74 } else {...aft
27210 65 72 20 69 64 6c 65 20 5b 6c 69 73 74 20 63 61 er idle [list ca
27220 74 63 68 20 5b 6c 69 73 74 20 66 6f 63 75 73 20 tch [list focus
27230 2d 66 6f 72 63 65 20 24 77 2e 5f 63 68 6f 6f 73 -force $w._choos
27240 65 76 66 2e 6c 30 5d 5d 0a 09 20 20 20 20 7d 0a evf.l0]].. }.
27250 09 7d 0a 09 64 65 73 74 72 6f 79 20 7b 0a 09 20 .}..destroy {..
27260 20 20 20 64 65 73 74 72 6f 79 20 24 77 2e 5f 63 destroy $w._c
27270 68 6f 6f 73 65 76 66 0a 09 20 20 20 20 0a 09 20 hoosevf.. ..
27280 20 20 20 69 66 20 7b 20 24 6f 6c 64 47 72 61 62 if { $oldGrab
27290 20 6e 65 20 22 22 20 7d 20 20 7b 0a 09 09 69 66 ne "" } {...if
272a0 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
272b0 67 72 61 62 53 74 61 74 75 73 5d 20 26 26 20 24 grabStatus] && $
272c0 67 72 61 62 53 74 61 74 75 73 20 6e 65 20 22 67 grabStatus ne "g
272d0 6c 6f 62 61 6c 22 20 7d 20 7b 0a 09 09 20 20 20 lobal" } {...
272e0 20 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 if { [winfo exi
272f0 73 74 73 20 24 6f 6c 64 47 72 61 62 5d 20 26 26 sts $oldGrab] &&
27300 20 5b 77 69 6e 66 6f 20 69 73 6d 61 70 70 65 64 [winfo ismapped
27310 20 24 6f 6c 64 47 72 61 62 5d 20 7d 20 7b 0a 09 $oldGrab] } {..
27320 09 20 20 20 20 20 20 20 20 67 72 61 62 20 24 6f . grab $o
27330 6c 64 47 72 61 62 0a 09 09 20 20 20 20 7d 0a 09 ldGrab... }..
27340 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 .} else {...
27350 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 if { [winfo exis
27360 74 73 20 24 6f 6c 64 47 72 61 62 5d 20 26 26 20 ts $oldGrab] &&
27370 5b 77 69 6e 66 6f 20 69 73 6d 61 70 70 65 64 20 [winfo ismapped
27380 24 6f 6c 64 47 72 61 62 5d 20 7d 20 7b 0a 09 09 $oldGrab] } {...
27390 20 20 20 20 20 20 20 20 67 72 61 62 20 2d 67 6c grab -gl
273a0 6f 62 61 6c 20 24 6f 6c 64 47 72 61 62 0a 09 09 obal $oldGrab...
273b0 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d }...}.. }
273c0 0a 09 20 20 20 20 69 66 20 7b 20 5b 77 69 6e 66 .. if { [winf
273d0 6f 20 65 78 69 73 74 73 20 24 6f 6c 64 46 6f 63 o exists $oldFoc
273e0 75 73 5d 20 26 26 20 5b 77 69 6e 66 6f 20 69 73 us] && [winfo is
273f0 6d 61 70 70 65 64 20 24 6f 6c 64 46 6f 63 75 73 mapped $oldFocus
27400 5d 20 20 7d 20 7b 0a 09 09 66 6f 63 75 73 20 2d ] } {...focus -
27410 66 6f 72 63 65 20 24 6f 6c 64 46 6f 63 75 73 0a force $oldFocus.
27420 09 20 20 20 20 7d 0a 09 7d 0a 09 6b 65 79 72 65 . }..}..keyre
27430 6c 65 61 73 65 20 7b 0a 09 20 20 20 20 6c 61 73 lease {.. las
27440 73 69 67 6e 20 24 61 72 67 73 20 4b 20 6c 69 73 sign $args K lis
27450 74 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 74 t.. .. set
27460 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d ipos [lsearch -
27470 65 78 61 63 74 20 24 43 68 6f 6f 73 65 56 69 65 exact $ChooseVie
27480 77 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b wFile_keypress [
27490 6c 69 73 74 20 24 4b 20 6e 65 77 5d 5d 0a 09 20 list $K new]]..
274a0 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 3d 3d if { $ipos ==
274b0 20 2d 31 20 7d 20 7b 0a 09 09 73 65 74 20 69 70 -1 } {...set ip
274c0 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 os [lsearch -exa
274d0 63 74 20 24 43 68 6f 6f 73 65 56 69 65 77 46 69 ct $ChooseViewFi
274e0 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b 6c 69 73 le_keypress [lis
274f0 74 20 24 4b 20 6f 6c 64 5d 5d 0a 09 20 20 20 20 t $K old]]..
27500 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 69 70 6f }.. if { $ipo
27510 73 20 3d 3d 20 2d 31 20 7d 20 7b 20 73 65 74 20 s == -1 } { set
27520 69 70 6f 73 20 30 20 7d 0a 09 20 20 20 20 0a 09 ipos 0 }.. ..
27530 20 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 78 if { ![regex
27540 70 20 7b 28 3f 69 29 5e 28 63 6f 6e 74 72 6f 6c p {(?i)^(control
27550 29 7d 20 24 4b 5d 20 7d 20 7b 0a 09 09 73 65 74 )} $K] } {...set
27560 20 69 73 66 61 73 74 20 30 0a 09 20 20 20 20 7d isfast 0.. }
27570 20 65 6c 73 65 69 66 20 7b 20 5b 6c 69 6e 64 65 elseif { [linde
27580 78 20 24 43 68 6f 6f 73 65 56 69 65 77 46 69 6c x $ChooseViewFil
27590 65 5f 6b 65 79 70 72 65 73 73 20 24 69 70 6f 73 e_keypress $ipos
275a0 20 31 5d 20 65 71 20 22 6e 65 77 22 20 7d 20 7b 1] eq "new" } {
275b0 0a 09 09 73 65 74 20 69 73 66 61 73 74 20 31 0a ...set isfast 1.
275c0 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
275d0 73 65 74 20 69 73 66 61 73 74 20 30 0a 09 20 20 set isfast 0..
275e0 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 21 24 }.. if { !$
275f0 69 73 66 61 73 74 20 26 26 20 5b 72 65 67 65 78 isfast && [regex
27600 70 20 7b 28 3f 69 29 5e 28 63 6f 6e 74 72 6f 6c p {(?i)^(control
27610 7c 72 65 74 75 72 6e 7c 62 75 74 74 6f 6e 31 29 |return|button1)
27620 7d 20 24 4b 5d 20 7d 20 7b 0a 09 09 72 65 67 65 } $K] } {...rege
27630 78 70 20 7b 5b 30 2d 39 5d 2b 24 7d 20 5b 66 6f xp {[0-9]+$} [fo
27640 63 75 73 5d 20 70 6f 73 0a 09 09 73 65 74 20 43 cus] pos...set C
27650 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 hooseViewFile_ke
27660 79 70 72 65 73 73 20 22 22 0a 09 09 43 68 6f 6f ypress ""...Choo
27670 73 65 56 69 65 77 46 69 6c 65 20 64 65 73 74 72 seViewFile destr
27680 6f 79 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65 oy...if { [linde
27690 78 20 24 6c 69 73 74 20 24 70 6f 73 5d 20 6e 65 x $list $pos] ne
276a0 20 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 20 $file } {...
276b0 20 75 70 64 61 74 65 20 3b 23 20 74 6f 20 6c 65 update ;# to le
276c0 74 20 66 6f 63 75 73 20 63 68 61 6e 67 65 0a 09 t focus change..
276d0 09 20 20 20 20 4f 70 65 6e 46 69 6c 65 46 20 5b . OpenFileF [
276e0 6c 69 6e 64 65 78 20 24 6c 69 73 74 20 24 70 6f lindex $list $po
276f0 73 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 6c s]...}.. } el
27700 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b seif { [regexp {
27710 28 3f 69 29 5e 65 73 63 61 70 65 7d 20 24 4b 5d (?i)^escape} $K]
27720 20 7d 20 7b 0a 09 09 73 65 74 20 43 68 6f 6f 73 } {...set Choos
27730 65 56 69 65 77 46 69 6c 65 5f 6b 65 79 70 72 65 eViewFile_keypre
27740 73 73 20 22 22 0a 09 09 43 68 6f 6f 73 65 56 69 ss ""...ChooseVi
27750 65 77 46 69 6c 65 20 64 65 73 74 72 6f 79 0a 09 ewFile destroy..
27760 20 20 20 20 7d 0a 09 7d 0a 09 6b 65 79 70 72 65 }..}..keypre
27770 73 73 20 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 ss {.. lassig
27780 6e 20 24 61 72 67 73 20 4b 20 77 68 61 74 5f 69 n $args K what_i
27790 6e 0a 09 20 20 20 20 0a 09 20 20 20 20 61 66 74 n.. .. aft
277a0 65 72 20 24 61 66 74 65 72 5f 74 69 6d 65 20 5b er $after_time [
277b0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
277c0 3a 3a 43 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 ::ChooseViewFile
277d0 20 6b 65 79 70 72 65 73 73 5f 65 6e 64 20 24 4b keypress_end $K
277e0 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 43 ].. lappend C
277f0 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 hooseViewFile_ke
27800 79 70 72 65 73 73 20 5b 6c 69 73 74 20 24 4b 20 ypress [list $K
27810 6e 65 77 5d 0a 09 20 20 20 20 0a 09 20 20 20 20 new].. ..
27820 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 28 3f if { [regexp {(?
27830 69 29 5e 73 70 61 63 65 7d 20 24 4b 5d 20 7d 20 i)^space} $K] }
27840 7b 0a 09 09 73 77 69 74 63 68 20 24 77 68 61 74 {...switch $what
27850 5f 69 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 72 _in {... star
27860 74 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 t {... se
27870 74 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 t whatnext start
27880 72 65 63 65 6e 74 0a 09 09 20 20 20 20 7d 0a 09 recent... }..
27890 09 20 20 20 20 73 74 61 72 74 72 65 63 65 6e 74 . startrecent
278a0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 {... set
278b0 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 63 whatnext startc
278c0 75 72 72 64 69 72 0a 09 09 20 20 20 20 7d 0a 09 urrdir... }..
278d0 09 20 20 20 20 73 74 61 72 74 63 75 72 72 64 69 . startcurrdi
278e0 72 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 r {... se
278f0 74 20 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 t whatnext start
27900 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 43 ... }...}...C
27910 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 24 77 hooseViewFile $w
27920 68 61 74 6e 65 78 74 0a 09 20 20 20 20 7d 0a 09 hatnext.. }..
27930 7d 0a 09 6b 65 79 70 72 65 73 73 5f 65 6e 64 20 }..keypress_end
27940 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 24 {.. lassign $
27950 61 72 67 73 20 4b 0a 09 20 20 20 20 73 65 74 20 args K.. set
27960 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 ipos [lsearch -e
27970 78 61 63 74 20 24 43 68 6f 6f 73 65 56 69 65 77 xact $ChooseView
27980 46 69 6c 65 5f 6b 65 79 70 72 65 73 73 20 5b 6c File_keypress [l
27990 69 73 74 20 24 4b 20 6e 65 77 5d 5d 0a 09 20 20 ist $K new]]..
279a0 20 20 69 66 20 7b 20 24 69 70 6f 73 20 21 3d 20 if { $ipos !=
279b0 2d 31 20 7d 20 7b 0a 09 09 6c 73 65 74 20 43 68 -1 } {...lset Ch
279c0 6f 6f 73 65 56 69 65 77 46 69 6c 65 5f 6b 65 79 ooseViewFile_key
279d0 70 72 65 73 73 20 24 69 70 6f 73 20 31 20 6f 6c press $ipos 1 ol
279e0 64 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 63 68 65 d.. }..}..che
279f0 63 6b 5f 6f 75 74 73 69 64 65 20 7b 0a 09 20 20 ck_outside {..
27a00 20 20 6c 61 73 73 69 67 6e 20 5b 6c 72 61 6e 67 lassign [lrang
27a10 65 20 24 61 72 67 73 20 30 20 31 5d 20 78 20 79 e $args 0 1] x y
27a20 0a 09 20 20 20 20 69 66 20 7b 20 24 78 20 3c 20 .. if { $x <
27a30 30 20 7c 7c 20 24 79 20 3c 20 30 20 7c 7c 20 24 0 || $y < 0 || $
27a40 78 20 3e 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 x > [winfo width
27a50 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 20 7c $w._choosevf] |
27a60 7c 20 24 79 20 3e 20 5b 77 69 6e 66 6f 20 68 65 | $y > [winfo he
27a70 69 67 68 74 20 24 77 2e 5f 63 68 6f 6f 73 65 76 ight $w._choosev
27a80 66 5d 20 7d 20 7b 0a 09 09 43 68 6f 6f 73 65 56 f] } {...ChooseV
27a90 69 65 77 46 69 6c 65 20 64 65 73 74 72 6f 79 0a iewFile destroy.
27aa0 09 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 62 ..return -code b
27ab0 72 65 61 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 reak.. }..}..
27ac0 6e 65 78 74 74 61 62 20 7b 0a 09 20 20 20 20 66 nexttab {.. f
27ad0 6f 72 65 61 63 68 20 22 77 68 61 74 5f 69 6e 22 oreach "what_in"
27ae0 20 24 61 72 67 73 20 62 72 65 61 6b 0a 09 20 20 $args break..
27af0 20 20 73 77 69 74 63 68 20 24 77 68 61 74 5f 69 switch $what_i
27b00 6e 20 7b 0a 09 09 73 74 61 72 74 20 7b 0a 09 09 n {...start {...
27b10 20 20 20 20 73 65 74 20 77 68 61 74 6e 65 78 74 set whatnext
27b20 20 73 74 61 72 74 72 65 63 65 6e 74 0a 09 09 7d startrecent...}
27b30 0a 09 09 73 74 61 72 74 72 65 63 65 6e 74 20 7b ...startrecent {
27b40 0a 09 09 20 20 20 20 73 65 74 20 77 68 61 74 6e ... set whatn
27b50 65 78 74 20 73 74 61 72 74 63 75 72 72 64 69 72 ext startcurrdir
27b60 0a 09 09 7d 0a 09 09 73 74 61 72 74 63 75 72 72 ...}...startcurr
27b70 64 69 72 20 7b 0a 09 09 20 20 20 20 73 65 74 20 dir {... set
27b80 77 68 61 74 6e 65 78 74 20 73 74 61 72 74 0a 09 whatnext start..
27b90 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 43 .}.. }.. C
27ba0 68 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 24 77 hooseViewFile $w
27bb0 68 61 74 6e 65 78 74 0a 09 7d 0a 09 6e 65 78 74 hatnext..}..next
27bc0 20 7b 0a 09 20 20 20 20 73 65 74 20 69 20 5b 6c {.. set i [l
27bd0 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d 0a 09 index $args 0]..
27be0 20 20 20 20 69 6e 63 72 20 69 0a 09 20 20 20 20 incr i..
27bf0 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 if { [winfo exis
27c00 74 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e ts $w._choosevf.
27c10 6c 24 69 5d 20 7d 20 7b 0a 09 09 66 6f 63 75 73 l$i] } {...focus
27c20 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c 24 $w._choosevf.l$
27c30 69 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a i.. } else {.
27c40 09 09 66 6f 63 75 73 20 24 77 2e 5f 63 68 6f 6f ..focus $w._choo
27c50 73 65 76 66 2e 6c 30 0a 09 20 20 20 20 7d 0a 09 sevf.l0.. }..
27c60 7d 0a 09 70 72 65 76 20 7b 0a 09 20 20 20 20 73 }..prev {.. s
27c70 65 74 20 69 20 5b 6c 69 6e 64 65 78 20 24 61 72 et i [lindex $ar
27c80 67 73 20 30 5d 0a 09 20 20 20 20 69 6e 63 72 20 gs 0].. incr
27c90 69 20 2d 31 0a 09 20 20 20 20 69 66 20 7b 20 24 i -1.. if { $
27ca0 69 20 3e 3d 20 30 20 7d 20 7b 0a 09 09 66 6f 63 i >= 0 } {...foc
27cb0 75 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e us $w._choosevf.
27cc0 6c 24 69 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 l$i.. } else
27cd0 7b 0a 09 09 77 68 69 6c 65 20 31 20 7b 0a 09 09 {...while 1 {...
27ce0 20 20 20 20 69 6e 63 72 20 69 0a 09 09 20 20 20 incr i...
27cf0 20 69 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 78 if { ![winfo ex
27d00 69 73 74 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 ists $w._choosev
27d10 66 2e 6c 24 69 5d 20 7d 20 7b 20 62 72 65 61 6b f.l$i] } { break
27d20 20 7d 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69 20 }...}...incr i
27d30 2d 31 0a 09 09 66 6f 63 75 73 20 24 77 2e 5f 63 -1...focus $w._c
27d40 68 6f 6f 73 65 76 66 2e 6c 24 69 0a 09 20 20 20 hoosevf.l$i..
27d50 20 7d 0a 09 7d 0a 09 75 70 20 7b 0a 09 20 20 20 }..}..up {..
27d60 20 66 6f 72 65 61 63 68 20 22 72 6f 77 20 63 6f foreach "row co
27d70 6c 22 20 24 61 72 67 73 20 62 72 65 61 6b 0a 09 l" $args break..
27d80 20 20 20 20 69 6e 63 72 20 72 6f 77 20 2d 31 0a incr row -1.
27d90 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 6d 61 . foreach "ma
27da0 78 63 6f 6c 20 6d 61 78 72 6f 77 22 20 5b 67 72 xcol maxrow" [gr
27db0 69 64 20 73 69 7a 65 20 24 77 2e 5f 63 68 6f 6f id size $w._choo
27dc0 73 65 76 66 5d 20 62 72 65 61 6b 0a 09 20 20 20 sevf] break..
27dd0 20 69 66 20 7b 20 24 72 6f 77 20 3c 20 30 20 7d if { $row < 0 }
27de0 20 7b 20 73 65 74 20 72 6f 77 20 5b 65 78 70 72 { set row [expr
27df0 20 7b 24 6d 61 78 72 6f 77 2d 33 7d 5d 20 7d 0a {$maxrow-3}] }.
27e00 09 20 20 20 20 66 6f 63 75 73 20 5b 67 72 69 64 . focus [grid
27e10 20 73 6c 61 76 65 73 20 24 77 2e 5f 63 68 6f 6f slaves $w._choo
27e20 73 65 76 66 20 2d 72 6f 77 20 24 72 6f 77 20 2d sevf -row $row -
27e30 63 6f 6c 20 24 63 6f 6c 5d 0a 09 7d 0a 09 64 6f col $col]..}..do
27e40 77 6e 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 wn {.. foreac
27e50 68 20 22 72 6f 77 20 63 6f 6c 22 20 24 61 72 67 h "row col" $arg
27e60 73 20 62 72 65 61 6b 0a 09 20 20 20 20 69 6e 63 s break.. inc
27e70 72 20 72 6f 77 20 31 0a 09 20 20 20 20 66 6f 72 r row 1.. for
27e80 65 61 63 68 20 22 6d 61 78 63 6f 6c 20 6d 61 78 each "maxcol max
27e90 72 6f 77 22 20 5b 67 72 69 64 20 73 69 7a 65 20 row" [grid size
27ea0 24 77 2e 5f 63 68 6f 6f 73 65 76 66 5d 20 62 72 $w._choosevf] br
27eb0 65 61 6b 0a 09 20 20 20 20 69 66 20 7b 20 5b 67 eak.. if { [g
27ec0 72 69 64 20 73 6c 61 76 65 73 20 24 77 2e 5f 63 rid slaves $w._c
27ed0 68 6f 6f 73 65 76 66 20 2d 72 6f 77 20 24 72 6f hoosevf -row $ro
27ee0 77 20 2d 63 6f 6c 20 24 63 6f 6c 5d 20 65 71 20 w -col $col] eq
27ef0 22 22 20 7c 7c 20 5c 0a 09 09 20 20 20 20 20 5b "" || \... [
27f00 67 72 69 64 20 73 6c 61 76 65 73 20 24 77 2e 5f grid slaves $w._
27f10 63 68 6f 6f 73 65 76 66 20 2d 72 6f 77 20 24 72 choosevf -row $r
27f20 6f 77 20 2d 63 6f 6c 20 24 63 6f 6c 5d 20 65 71 ow -col $col] eq
27f30 20 22 24 77 2e 5f 63 68 6f 6f 73 65 76 66 2e 6c "$w._choosevf.l
27f40 64 22 20 7d 20 7b 0a 09 09 73 65 74 20 72 6f 77 d" } {...set row
27f50 20 30 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66 0.. }.. f
27f60 6f 63 75 73 20 5b 67 72 69 64 20 73 6c 61 76 65 ocus [grid slave
27f70 73 20 24 77 2e 5f 63 68 6f 6f 73 65 76 66 20 2d s $w._choosevf -
27f80 72 6f 77 20 24 72 6f 77 20 2d 63 6f 6c 20 24 63 row $row -col $c
27f90 6f 6c 5d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a ol]..}. }.}..
27fa0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
27fb0 72 3a 3a 41 63 74 75 61 6c 69 7a 65 56 69 65 77 r::ActualizeView
27fc0 4d 65 6e 75 20 7b 20 6d 65 6e 75 20 7d 20 7b 0a Menu { menu } {.
27fd0 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 69 6e variable Win
27fe0 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a 20 20 20 dowFilesList.
27ff0 20 76 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 variable Window
28000 46 69 6c 65 73 4c 69 73 74 4c 69 6e 65 4e 75 6d FilesListLineNum
28010 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 s. variable t
28020 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ext. variable
28030 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 currentfile..
28040 20 20 69 66 20 7b 20 5b 24 6d 65 6e 75 20 69 6e if { [$menu in
28050 64 65 78 20 65 6e 64 5d 20 3e 20 31 30 20 7d 20 dex end] > 10 }
28060 7b 0a 09 24 6d 65 6e 75 20 64 65 6c 20 31 31 20 {..$menu del 11
28070 65 6e 64 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24 end. }.. $
28080 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 menu add command
28090 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 50 72 65 76 -label [_ "Prev
280a0 69 6f 75 73 22 5d 20 2d 61 63 63 20 22 24 3a 3a ious"] -acc "$::
280b0 61 6c 74 5f 74 78 74 2d 4c 65 66 74 22 20 2d 63 alt_txt-Left" -c
280c0 6f 6d 6d 61 6e 64 20 5c 0a 09 22 52 61 6d 44 65 ommand \.."RamDe
280d0 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76 bugger::GotoPrev
280e0 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73 iousNextInWinLis
280f0 74 20 70 72 65 76 22 0a 20 20 20 20 24 6d 65 6e t prev". $men
28100 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c u add command -l
28110 61 62 65 6c 20 5b 5f 20 22 4e 65 78 74 22 5d 20 abel [_ "Next"]
28120 2d 61 63 63 20 22 24 3a 3a 61 6c 74 5f 74 78 74 -acc "$::alt_txt
28130 2d 52 69 67 68 74 22 20 2d 63 6f 6d 6d 61 6e 64 -Right" -command
28140 20 5c 0a 09 22 52 61 6d 44 65 62 75 67 67 65 72 \.."RamDebugger
28150 3a 3a 47 6f 74 6f 50 72 65 76 69 6f 75 73 4e 65 ::GotoPreviousNe
28160 78 74 49 6e 57 69 6e 4c 69 73 74 20 6e 65 78 74 xtInWinList next
28170 22 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 ". $menu add
28180 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b command -label [
28190 5f 20 22 53 65 6c 65 63 74 22 5d 2e 2e 2e 20 2d _ "Select"]... -
281a0 61 63 63 20 22 43 74 72 6c 2d 54 61 62 22 20 2d acc "Ctrl-Tab" -
281b0 63 6f 6d 6d 61 6e 64 20 5c 0a 09 5b 6c 69 73 74 command \..[list
281c0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 RamDebugger::Ch
281d0 6f 6f 73 65 56 69 65 77 46 69 6c 65 20 73 74 61 ooseViewFile sta
281e0 72 74 5d 20 2d 75 6e 64 65 72 6c 69 6e 65 20 31 rt] -underline 1
281f0 0a 0a 20 20 20 20 73 65 74 20 6e 65 65 64 73 73 .. set needss
28200 65 70 20 31 0a 20 20 20 20 66 6f 72 65 61 63 68 ep 1. foreach
28210 20 69 20 24 57 69 6e 64 6f 77 46 69 6c 65 73 4c i $WindowFilesL
28220 69 73 74 20 7b 0a 09 69 66 20 7b 20 24 6e 65 65 ist {..if { $nee
28230 64 73 73 65 70 20 7d 20 7b 0a 09 20 20 20 20 24 dssep } {.. $
28240 6d 65 6e 75 20 61 64 64 20 73 65 70 61 72 61 74 menu add separat
28250 6f 72 0a 09 20 20 20 20 73 65 74 20 6e 65 65 64 or.. set need
28260 73 73 65 70 20 30 0a 09 7d 0a 09 73 65 74 20 6c ssep 0..}..set l
28270 61 62 65 6c 20 24 69 0a 09 69 66 20 7b 20 5b 73 abel $i..if { [s
28280 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6c 61 tring length $la
28290 62 65 6c 5d 20 3e 20 34 35 20 7d 20 7b 20 73 65 bel] > 45 } { se
282a0 74 20 6c 61 62 65 6c 20 2e 2e 2e 5b 73 74 72 69 t label ...[stri
282b0 6e 67 20 72 61 6e 67 65 20 24 6c 61 62 65 6c 20 ng range $label
282c0 65 6e 64 2d 34 32 20 65 6e 64 5d 20 7d 0a 09 0a end-42 end] }...
282d0 09 69 66 20 7b 20 24 69 20 65 71 20 24 63 75 72 .if { $i eq $cur
282e0 72 65 6e 74 66 69 6c 65 20 7d 20 7b 0a 09 20 20 rentfile } {..
282f0 20 20 24 6d 65 6e 75 20 61 64 64 20 63 68 65 63 $menu add chec
28300 6b 62 75 74 74 6f 6e 20 2d 6c 61 62 65 6c 20 24 kbutton -label $
28310 6c 61 62 65 6c 20 2d 76 61 72 69 61 62 6c 65 20 label -variable
28320 3a 3a 70 70 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a ::pp -command \.
28330 09 09 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 ..[list RamDebug
28340 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 24 ger::OpenFileF $
28350 69 5d 0a 09 20 20 20 20 73 65 74 20 3a 3a 70 70 i].. set ::pp
28360 20 31 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 1..} else {..
28370 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d $menu add comm
28380 61 6e 64 20 2d 6c 61 62 65 6c 20 24 6c 61 62 65 and -label $labe
28390 6c 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 l -command [list
283a0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 RamDebugger::Op
283b0 65 6e 46 69 6c 65 46 20 24 69 5d 0a 09 7d 0a 20 enFileF $i]..}.
283c0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
283d0 44 65 62 75 67 67 65 72 3a 3a 41 64 64 52 65 63 Debugger::AddRec
283e0 65 6e 74 66 69 6c 65 73 54 6f 4d 65 6e 75 20 7b entfilesToMenu {
283f0 20 6d 65 6e 75 20 7d 20 7b 0a 20 20 20 20 76 61 menu } {. va
28400 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a riable options..
28410 20 20 20 20 24 6d 65 6e 75 20 64 65 6c 20 30 20 $menu del 0
28420 65 6e 64 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b end.. if { ![
28430 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 info exists opti
28440 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c ons(RecentFilesL
28450 29 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a )] } { return }.
28460 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 . foreach i $
28470 6f 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 options(RecentFi
28480 6c 65 73 4c 29 20 7b 0a 09 73 65 74 20 6c 61 62 lesL) {..set lab
28490 65 6c 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d el [lindex $i 0]
284a0 0a 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6c ..if { [string l
284b0 65 6e 67 74 68 20 24 6c 61 62 65 6c 5d 20 3e 20 ength $label] >
284c0 34 35 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 45 } {.. set
284d0 6c 61 62 65 6c 20 2e 2e 2e 5b 73 74 72 69 6e 67 label ...[string
284e0 20 72 61 6e 67 65 20 24 6c 61 62 65 6c 20 65 6e range $label en
284f0 64 2d 34 32 20 65 6e 64 5d 0a 09 7d 0a 09 24 6d d-42 end]..}..$m
28500 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
28510 2d 6c 61 62 65 6c 20 24 6c 61 62 65 6c 20 2d 63 -label $label -c
28520 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 20 22 5b ommand \.. "[
28530 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
28540 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 24 69 5d 20 ::OpenFileF $i]
28550 3b 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 46 ; RamDebugger::F
28560 69 6c 6c 4c 69 73 74 42 6f 78 22 0a 20 20 20 20 illListBox".
28570 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 }. $menu add
28580 73 65 70 61 72 61 74 6f 72 0a 20 20 20 20 24 6d separator. $m
28590 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
285a0 2d 6c 61 62 65 6c 20 5b 5f 20 22 45 64 69 74 22 -label [_ "Edit"
285b0 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 ] -command [list
285c0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 65 64 RamDebugger::ed
285d0 69 74 5f 72 65 63 65 6e 74 5f 66 69 6c 65 73 5d it_recent_files]
285e0 0a 7d 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 .}...proc RamDeb
285f0 75 67 67 65 72 3a 3a 53 65 74 47 55 49 42 72 65 ugger::SetGUIBre
28600 61 6b 70 6f 69 6e 74 20 7b 7d 20 7b 0a 20 20 20 akpoint {} {.
28610 20 76 61 72 69 61 62 6c 65 20 69 6d 61 67 65 73 variable images
28620 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 . variable ma
28630 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c rker. variabl
28640 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 e text. varia
28650 62 6c 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 ble remoteserver
28660 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
28670 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 69 rrentfile.. i
28680 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c 65 f { $currentfile
28690 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 57 61 72 6e == "" } {..Warn
286a0 57 69 6e 20 5b 5f 20 22 54 68 69 73 20 66 69 6c Win [_ "This fil
286b0 65 20 64 6f 65 73 20 6e 6f 74 20 61 64 6d 69 74 e does not admit
286c0 20 62 72 65 61 6b 70 6f 69 6e 74 73 22 5d 0a 09 breakpoints"]..
286d0 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 return. }.
286e0 20 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 set idx [$text
286f0 69 6e 64 65 78 20 69 6e 73 65 72 74 5d 0a 0a 20 index insert]..
28700 20 20 20 69 66 20 7b 20 24 69 64 78 20 3d 3d 20 if { $idx ==
28710 22 22 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 "" } {..WarnWin
28720 5b 5f 20 22 42 65 66 6f 72 65 20 73 65 74 74 69 [_ "Before setti
28730 6e 67 20 62 72 65 61 6b 70 6f 69 6e 74 2c 20 73 ng breakpoint, s
28740 65 6c 65 63 74 20 73 6f 6d 65 74 68 69 6e 67 20 elect something
28750 6f 72 20 70 69 63 6b 20 69 6e 20 74 68 65 20 74 or pick in the t
28760 65 78 74 22 5d 0a 09 72 65 74 75 72 6e 0a 20 20 ext"]..return.
28770 20 20 7d 0a 20 20 20 20 57 61 69 74 53 74 61 74 }. WaitStat
28780 65 20 31 0a 20 20 20 20 24 74 65 78 74 20 73 65 e 1. $text se
28790 65 20 24 69 64 78 0a 20 20 20 20 73 65 74 20 6c e $idx. set l
287a0 69 6e 65 20 5b 73 63 61 6e 20 24 69 64 78 20 22 ine [scan $idx "
287b0 25 64 22 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b %d"].. if { [
287c0 72 69 6e 66 6f 20 24 6c 69 6e 65 5d 20 21 3d 20 rinfo $line] !=
287d0 22 22 20 7d 20 7b 0a 09 73 65 74 20 68 61 73 62 "" } {..set hasb
287e0 72 65 61 6b 20 31 0a 20 20 20 20 7d 20 65 6c 73 reak 1. } els
287f0 65 20 7b 20 73 65 74 20 68 61 73 62 72 65 61 6b e { set hasbreak
28800 20 30 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 0 }.. if { $
28810 68 61 73 62 72 65 61 6b 20 7d 20 7b 0a 09 73 65 hasbreak } {..se
28820 74 20 68 61 73 62 72 65 61 6b 20 30 0a 09 66 6f t hasbreak 0..fo
28830 72 65 61 63 68 20 6e 75 6d 20 5b 72 69 6e 66 6f reach num [rinfo
28840 20 24 6c 69 6e 65 5d 20 7b 0a 09 20 20 20 20 72 $line] {.. r
28850 64 65 6c 20 24 6e 75 6d 0a 09 7d 0a 20 20 20 20 del $num..}.
28860 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 68 61 } else {..set ha
28870 73 62 72 65 61 6b 20 31 0a 09 69 66 20 7b 20 5b sbreak 1..if { [
28880 63 61 74 63 68 20 5b 6c 69 73 74 20 72 62 72 65 catch [list rbre
28890 61 6b 20 24 6c 69 6e 65 5d 20 65 72 72 6f 72 73 ak $line] errors
288a0 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 20 20 20 20 tring] } {..
288b0 57 61 69 74 53 74 61 74 65 20 30 0a 09 20 20 20 WaitState 0..
288c0 20 57 61 72 6e 57 69 6e 20 24 65 72 72 6f 72 73 WarnWin $errors
288d0 74 72 69 6e 67 0a 09 20 20 20 20 72 65 74 75 72 tring.. retur
288e0 6e 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 55 n..}. }. U
288f0 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42 72 65 pdateArrowAndBre
28900 61 6b 20 24 6c 69 6e 65 20 24 68 61 73 62 72 65 ak $line $hasbre
28910 61 6b 20 22 22 0a 20 20 20 20 57 61 69 74 53 74 ak "". WaitSt
28920 61 74 65 20 30 0a 7d 0a 0a 70 72 6f 63 20 52 61 ate 0.}..proc Ra
28930 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74 mDebugger::Updat
28940 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 7b eArrowAndBreak {
28950 20 6c 69 6e 65 20 68 61 73 62 72 65 61 6b 20 68 line hasbreak h
28960 61 73 61 72 72 6f 77 20 7b 20 66 6f 72 63 65 72 asarrow { forcer
28970 61 69 73 65 20 31 20 7d 20 7d 20 7b 0a 20 20 20 aise 1 } } {.
28980 20 76 61 72 69 61 62 6c 65 20 6d 61 72 6b 65 72 variable marker
28990 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 . variable te
289a0 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 xt. variable
289b0 74 65 78 74 53 54 0a 20 20 20 20 76 61 72 69 61 textST. varia
289c0 62 6c 65 20 69 6d 61 67 65 73 0a 20 20 20 20 76 ble images. v
289d0 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74 6f 70 ariable IsInStop
289e0 0a 0a 20 20 20 20 73 65 74 20 68 61 64 61 72 72 .. set hadarr
289f0 6f 77 20 30 0a 20 20 20 20 66 6f 72 65 61 63 68 ow 0. foreach
28a00 20 69 20 5b 24 6d 61 72 6b 65 72 20 67 65 74 74 i [$marker gett
28a10 61 67 73 20 6c 24 6c 69 6e 65 5d 20 7b 0a 09 73 ags l$line] {..s
28a20 77 69 74 63 68 20 24 69 20 7b 0a 09 20 20 20 20 witch $i {..
28a30 61 72 72 6f 77 62 72 65 61 6b 20 7b 0a 09 09 69 arrowbreak {...i
28a40 66 20 7b 20 24 68 61 73 62 72 65 61 6b 20 3d 3d f { $hasbreak ==
28a50 20 22 22 20 7d 20 7b 20 73 65 74 20 68 61 73 62 "" } { set hasb
28a60 72 65 61 6b 20 31 20 7d 0a 09 09 69 66 20 7b 20 reak 1 }...if {
28a70 24 68 61 73 61 72 72 6f 77 20 3d 3d 20 22 22 20 $hasarrow == ""
28a80 7d 20 7b 20 73 65 74 20 68 61 73 61 72 72 6f 77 } { set hasarrow
28a90 20 31 20 7d 0a 09 09 73 65 74 20 68 61 64 61 72 1 }...set hadar
28aa0 72 6f 77 20 31 0a 09 20 20 20 20 7d 0a 09 20 20 row 1.. }..
28ab0 20 20 61 72 72 6f 77 20 7b 0a 09 09 69 66 20 7b arrow {...if {
28ac0 20 24 68 61 73 61 72 72 6f 77 20 3d 3d 20 22 22 $hasarrow == ""
28ad0 20 7d 20 7b 20 73 65 74 20 68 61 73 61 72 72 6f } { set hasarro
28ae0 77 20 31 20 7d 0a 09 09 73 65 74 20 68 61 64 61 w 1 }...set hada
28af0 72 72 6f 77 20 31 0a 09 20 20 20 20 7d 0a 09 20 rrow 1.. }..
28b00 20 20 20 62 72 65 61 6b 20 7b 0a 09 09 69 66 20 break {...if
28b10 7b 20 24 68 61 73 62 72 65 61 6b 20 3d 3d 20 22 { $hasbreak == "
28b20 22 20 7d 20 7b 20 73 65 74 20 68 61 73 62 72 65 " } { set hasbre
28b30 61 6b 20 31 20 7d 0a 09 20 20 20 20 7d 0a 09 7d ak 1 }.. }..}
28b40 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
28b50 24 68 61 73 62 72 65 61 6b 20 3d 3d 20 22 22 20 $hasbreak == ""
28b60 7d 20 7b 20 73 65 74 20 68 61 73 62 72 65 61 6b } { set hasbreak
28b70 20 30 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 68 0 }. if { $h
28b80 61 73 61 72 72 6f 77 20 3d 3d 20 22 22 20 7d 20 asarrow == "" }
28b90 7b 20 73 65 74 20 68 61 73 61 72 72 6f 77 20 30 { set hasarrow 0
28ba0 20 7d 0a 0a 20 20 20 20 24 6d 61 72 6b 65 72 20 }.. $marker
28bb0 64 65 6c 65 74 65 20 22 6c 24 6c 69 6e 65 26 26 delete "l$line&&
28bc0 28 61 72 72 6f 77 62 72 65 61 6b 7c 7c 61 72 72 (arrowbreak||arr
28bd0 6f 77 7c 7c 62 72 65 61 6b 29 22 0a 0a 20 20 20 ow||break)"..
28be0 20 69 66 20 7b 20 21 24 68 61 73 61 72 72 6f 77 if { !$hasarrow
28bf0 20 7d 20 7b 20 73 65 74 20 49 73 49 6e 53 74 6f } { set IsInSto
28c00 70 20 30 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 p 0 } else { set
28c10 20 49 73 49 6e 53 74 6f 70 20 31 20 7d 0a 0a 20 IsInStop 1 }..
28c20 20 20 20 69 66 20 7b 20 21 24 68 61 73 62 72 65 if { !$hasbre
28c30 61 6b 20 26 26 20 21 24 68 61 73 61 72 72 6f 77 ak && !$hasarrow
28c40 20 7d 20 7b 0a 09 24 74 65 78 74 53 54 20 63 6f } {..$textST co
28c50 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c nf -state normal
28c60 0a 09 24 74 65 78 74 53 54 20 64 65 6c 20 31 2e ..$textST del 1.
28c70 30 20 65 6e 64 0a 09 24 74 65 78 74 53 54 20 63 0 end..$textST c
28c80 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61 62 onf -state disab
28c90 6c 65 64 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 led..return.
28ca0 7d 0a 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 20 }.. set font
28cb0 5b 24 74 65 78 74 20 63 67 65 74 20 2d 66 6f 6e [$text cget -fon
28cc0 74 5d 0a 20 20 20 20 73 65 74 20 79 70 6f 73 20 t]. set ypos
28cd0 5b 65 78 70 72 20 28 24 6c 69 6e 65 2d 31 29 2a [expr ($line-1)*
28ce0 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 [font metrics $f
28cf0 6f 6e 74 20 2d 6c 69 6e 65 73 70 61 63 65 5d 2b ont -linespace]+
28d00 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 [font metrics $f
28d10 6f 6e 74 20 2d 61 73 63 65 6e 74 5d 2b 5c 0a 09 ont -ascent]+\..
28d20 09 20 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d . [$text cget -
28d30 70 61 64 79 5d 2b 32 5d 0a 20 20 20 20 69 66 20 pady]+2]. if
28d40 7b 20 24 68 61 73 61 72 72 6f 77 20 26 26 20 24 { $hasarrow && $
28d50 68 61 73 62 72 65 61 6b 20 7d 20 7b 0a 09 73 65 hasbreak } {..se
28d60 74 20 65 6e 64 69 73 20 31 0a 09 66 6f 72 65 61 t endis 1..forea
28d70 63 68 20 22 2d 20 65 6e 64 69 73 20 2d 20 2d 20 ch "- endis - -
28d80 2d 22 20 5b 6c 69 6e 64 65 78 20 5b 72 69 6e 66 -" [lindex [rinf
28d90 6f 20 2d 66 75 6c 6c 20 24 6c 69 6e 65 5d 20 30 o -full $line] 0
28da0 5d 20 62 72 65 61 6b 0a 09 69 66 20 7b 20 24 65 ] break..if { $e
28db0 6e 64 69 73 20 7d 20 7b 0a 09 20 20 20 20 24 6d ndis } {.. $m
28dc0 61 72 6b 65 72 20 63 72 65 61 74 65 20 69 6d 61 arker create ima
28dd0 67 65 20 30 20 24 79 70 6f 73 20 2d 61 6e 63 68 ge 0 $ypos -anch
28de0 6f 72 20 73 77 20 2d 69 6d 61 67 65 20 24 69 6d or sw -image $im
28df0 61 67 65 73 28 61 72 72 6f 77 62 72 65 61 6b 29 ages(arrowbreak)
28e00 20 2d 74 61 67 73 20 22 61 72 72 6f 77 62 72 65 -tags "arrowbre
28e10 61 6b 20 6c 24 6c 69 6e 65 22 0a 09 7d 20 65 6c ak l$line"..} el
28e20 73 65 20 7b 0a 09 20 20 20 20 24 6d 61 72 6b 65 se {.. $marke
28e30 72 20 63 72 65 61 74 65 20 69 6d 61 67 65 20 30 r create image 0
28e40 20 24 79 70 6f 73 20 2d 61 6e 63 68 6f 72 20 73 $ypos -anchor s
28e50 77 20 2d 69 6d 61 67 65 20 24 69 6d 61 67 65 73 w -image $images
28e60 28 61 72 72 6f 77 64 62 72 65 61 6b 29 20 2d 74 (arrowdbreak) -t
28e70 61 67 73 20 22 61 72 72 6f 77 62 72 65 61 6b 20 ags "arrowbreak
28e80 6c 24 6c 69 6e 65 22 0a 09 7d 0a 20 20 20 20 7d l$line"..}. }
28e90 20 65 6c 73 65 69 66 20 7b 20 24 68 61 73 61 72 elseif { $hasar
28ea0 72 6f 77 20 7d 20 7b 0a 09 24 6d 61 72 6b 65 72 row } {..$marker
28eb0 20 63 72 65 61 74 65 20 69 6d 61 67 65 20 30 20 create image 0
28ec0 24 79 70 6f 73 20 2d 61 6e 63 68 6f 72 20 73 77 $ypos -anchor sw
28ed0 20 2d 69 6d 61 67 65 20 24 69 6d 61 67 65 73 28 -image $images(
28ee0 61 72 72 6f 77 29 20 2d 74 61 67 73 20 22 61 72 arrow) -tags "ar
28ef0 72 6f 77 20 6c 24 6c 69 6e 65 22 0a 20 20 20 20 row l$line".
28f00 7d 20 65 6c 73 65 69 66 20 7b 20 24 68 61 73 62 } elseif { $hasb
28f10 72 65 61 6b 20 7d 20 7b 0a 09 73 65 74 20 65 6e reak } {..set en
28f20 64 69 73 20 31 0a 09 66 6f 72 65 61 63 68 20 22 dis 1..foreach "
28f30 2d 20 65 6e 64 69 73 20 2d 20 2d 20 2d 22 20 5b - endis - - -" [
28f40 6c 69 6e 64 65 78 20 5b 72 69 6e 66 6f 20 2d 66 lindex [rinfo -f
28f50 75 6c 6c 20 24 6c 69 6e 65 5d 20 30 5d 20 62 72 ull $line] 0] br
28f60 65 61 6b 0a 09 69 66 20 7b 20 24 65 6e 64 69 73 eak..if { $endis
28f70 20 7d 20 7b 0a 09 20 20 20 20 24 6d 61 72 6b 65 } {.. $marke
28f80 72 20 63 72 65 61 74 65 20 69 6d 61 67 65 20 30 r create image 0
28f90 20 24 79 70 6f 73 20 2d 61 6e 63 68 6f 72 20 73 $ypos -anchor s
28fa0 77 20 2d 69 6d 61 67 65 20 24 69 6d 61 67 65 73 w -image $images
28fb0 28 62 72 65 61 6b 29 20 2d 74 61 67 73 20 22 62 (break) -tags "b
28fc0 72 65 61 6b 20 6c 24 6c 69 6e 65 22 0a 09 7d 20 reak l$line"..}
28fd0 65 6c 73 65 20 7b 0a 09 20 20 20 20 24 6d 61 72 else {.. $mar
28fe0 6b 65 72 20 63 72 65 61 74 65 20 69 6d 61 67 65 ker create image
28ff0 20 30 20 24 79 70 6f 73 20 2d 61 6e 63 68 6f 72 0 $ypos -anchor
29000 20 73 77 20 2d 69 6d 61 67 65 20 24 69 6d 61 67 sw -image $imag
29010 65 73 28 64 62 72 65 61 6b 29 20 2d 74 61 67 73 es(dbreak) -tags
29020 20 22 62 72 65 61 6b 20 6c 24 6c 69 6e 65 22 0a "break l$line".
29030 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 .}. }.. if
29040 20 7b 20 24 66 6f 72 63 65 72 61 69 73 65 20 26 { $forceraise &
29050 26 20 24 68 61 73 61 72 72 6f 77 20 7d 20 7b 0a & $hasarrow } {.
29060 09 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 .if { $::tcl_pla
29070 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 tform(platform)
29080 3d 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b == "windows" } {
29090 0a 09 20 20 20 20 73 65 74 20 64 6f 69 74 20 31 .. set doit 1
290a0 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 5b 66 6f ..} elseif { [fo
290b0 63 75 73 5d 20 21 3d 20 24 74 65 78 74 20 7d 20 cus] != $text }
290c0 7b 0a 09 20 20 20 20 23 20 74 68 65 20 68 6f 72 {.. # the hor
290d0 72 69 62 6c 65 20 62 75 67 20 69 6e 20 4c 69 6e rible bug in Lin
290e0 75 78 20 77 69 74 68 20 74 68 65 20 72 61 69 73 ux with the rais
290f0 65 20 63 6f 6d 6d 61 6e 64 0a 09 20 20 20 20 73 e command.. s
29100 65 74 20 64 6f 69 74 20 31 0a 09 7d 20 65 6c 73 et doit 1..} els
29110 65 20 7b 20 73 65 74 20 64 6f 69 74 20 30 20 7d e { set doit 0 }
29120 0a 09 69 66 20 7b 20 24 64 6f 69 74 20 7d 20 7b ..if { $doit } {
29130 0a 09 20 20 20 20 61 66 74 65 72 20 31 30 30 20 .. after 100
29140 22 72 61 69 73 65 20 5b 77 69 6e 66 6f 20 74 6f "raise [winfo to
29150 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 20 3b 20 plevel $text] ;
29160 66 6f 63 75 73 20 2d 66 6f 72 63 65 20 24 74 65 focus -force $te
29170 78 74 22 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 xt"..}. }.
29180 20 69 66 20 7b 20 21 24 68 61 64 61 72 72 6f 77 if { !$hadarrow
29190 20 26 26 20 24 68 61 73 61 72 72 6f 77 20 7d 20 && $hasarrow }
291a0 7b 0a 09 24 74 65 78 74 20 73 65 65 20 24 6c 69 {..$text see $li
291b0 6e 65 2e 30 0a 09 24 74 65 78 74 20 6d 61 72 6b ne.0..$text mark
291c0 20 73 65 74 20 69 6e 73 65 72 74 20 24 6c 69 6e set insert $lin
291d0 65 2e 30 0a 20 20 20 20 7d 0a 20 20 20 20 4d 6f e.0. }. Mo
291e0 76 65 43 61 6e 76 61 73 20 24 74 65 78 74 20 24 veCanvas $text $
291f0 6d 61 72 6b 65 72 0a 0a 20 20 20 20 69 66 20 7b marker.. if {
29200 20 24 49 73 49 6e 53 74 6f 70 20 7d 20 7b 0a 09 $IsInStop } {..
29210 61 66 74 65 72 20 31 30 30 20 52 61 6d 44 65 62 after 100 RamDeb
29220 75 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c ugger::CheckEval
29230 45 6e 74 72 69 65 73 20 64 6f 0a 09 61 66 74 65 Entries do..afte
29240 72 20 32 30 30 20 52 61 6d 44 65 62 75 67 67 65 r 200 RamDebugge
29250 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 r::CheckEvalEntr
29260 69 65 73 4c 20 64 6f 0a 09 61 66 74 65 72 20 33 iesL do..after 3
29270 30 30 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 00 RamDebugger::
29280 49 6e 76 6f 6b 65 41 6c 6c 44 69 73 70 6c 61 79 InvokeAllDisplay
29290 56 61 72 57 69 6e 64 6f 77 73 0a 09 72 73 74 61 VarWindows..rsta
292a0 63 6b 20 2d 68 61 6e 64 6c 65 72 20 52 61 6d 44 ck -handler RamD
292b0 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74 65 47 ebugger::UpdateG
292c0 55 49 53 74 61 63 6b 0a 20 20 20 20 7d 20 65 6c UIStack. } el
292d0 73 65 20 7b 0a 09 24 74 65 78 74 53 54 20 63 6f se {..$textST co
292e0 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 6c nf -state normal
292f0 0a 09 24 74 65 78 74 53 54 20 64 65 6c 20 31 2e ..$textST del 1.
29300 30 20 65 6e 64 0a 09 24 74 65 78 74 53 54 20 63 0 end..$textST c
29310 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61 62 onf -state disab
29320 6c 65 64 0a 20 20 20 20 7d 0a 0a 7d 0a 0a 70 72 led. }..}..pr
29330 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
29340 55 70 64 61 74 65 47 55 49 53 74 61 63 6b 20 7b UpdateGUIStack {
29350 20 72 65 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 res } {. var
29360 69 61 62 6c 65 20 74 65 78 74 53 54 0a 20 20 20 iable textST.
29370 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
29380 73 0a 0a 20 20 20 20 24 74 65 78 74 53 54 20 63 s.. $textST c
29390 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72 6d 61 onf -state norma
293a0 6c 0a 20 20 20 20 24 74 65 78 74 53 54 20 6d 61 l. $textST ma
293b0 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 31 2e rk set insert 1.
293c0 30 0a 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 0. if { [lind
293d0 65 78 20 24 72 65 73 20 30 5d 20 3d 3d 20 30 20 ex $res 0] == 0
293e0 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 6c 69 6e } {..foreach lin
293f0 65 20 5b 6c 72 61 6e 67 65 20 5b 73 70 6c 69 74 e [lrange [split
29400 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 31 5d [lindex $res 1]
29410 20 5c 6e 5d 20 31 20 65 6e 64 5d 20 7b 0a 09 20 \n] 1 end] {..
29420 20 20 20 24 74 65 78 74 53 54 20 69 6e 73 20 69 $textST ins i
29430 6e 73 65 72 74 20 24 6c 69 6e 65 5c 6e 0a 09 7d nsert $line\n..}
29440 20 0a 20 20 20 20 7d 0a 20 20 20 20 24 74 65 78 . }. $tex
29450 74 53 54 20 64 65 6c 20 69 6e 73 65 72 74 20 65 tST del insert e
29460 6e 64 0a 20 20 20 20 24 74 65 78 74 53 54 20 63 nd. $textST c
29470 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61 62 onf -state disab
29480 6c 65 64 0a 0a 20 20 20 20 69 66 20 7b 20 24 6f led.. if { $o
29490 70 74 69 6f 6e 73 28 61 75 74 6f 5f 72 61 69 73 ptions(auto_rais
294a0 65 5f 73 74 61 63 6b 5f 74 72 61 63 65 29 20 7d e_stack_trace) }
294b0 20 7b 0a 09 54 65 78 74 53 74 61 63 6b 54 72 61 {..TextStackTra
294c0 63 65 52 61 69 73 65 0a 20 20 20 20 7d 0a 7d 0a ceRaise. }.}.
294d0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
294e0 72 3a 3a 54 61 6b 65 41 72 72 6f 77 4f 75 74 46 r::TakeArrowOutF
294f0 72 6f 6d 54 65 78 74 20 7b 7d 20 7b 0a 20 20 20 romText {} {.
29500 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 variable text.
29510 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 72 6b variable mark
29520 65 72 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 er.. if { ![i
29530 6e 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 5d nfo exists text]
29540 20 7c 7c 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 || ![winfo exis
29550 74 73 20 24 74 65 78 74 5d 20 7d 20 7b 20 72 65 ts $text] } { re
29560 74 75 72 6e 20 7d 0a 0a 20 20 20 20 66 6f 72 65 turn }.. fore
29570 61 63 68 20 6a 20 5b 63 6f 6e 63 61 74 20 5b 24 ach j [concat [$
29580 6d 61 72 6b 65 72 20 67 65 74 74 61 67 73 20 61 marker gettags a
29590 72 72 6f 77 5d 20 5b 24 6d 61 72 6b 65 72 20 67 rrow] [$marker g
295a0 65 74 74 61 67 73 20 61 72 72 6f 77 62 72 65 61 ettags arrowbrea
295b0 6b 5d 5d 20 7b 0a 09 69 66 20 7b 20 5b 73 74 72 k]] {..if { [str
295c0 69 6e 67 20 6d 61 74 63 68 20 6c 2a 20 24 6a 5d ing match l* $j]
295d0 20 7d 20 7b 0a 09 20 20 20 20 72 65 67 65 78 70 } {.. regexp
295e0 20 7b 6c 28 5b 30 2d 39 5d 2b 29 7d 20 24 6a 20 {l([0-9]+)} $j
295f0 7b 7d 20 61 72 72 6f 77 6c 69 6e 65 0a 09 20 20 {} arrowline..
29600 20 20 55 70 64 61 74 65 41 72 72 6f 77 41 6e 64 UpdateArrowAnd
29610 42 72 65 61 6b 20 24 61 72 72 6f 77 6c 69 6e 65 Break $arrowline
29620 20 22 22 20 30 0a 09 7d 0a 20 20 20 20 7d 0a 7d "" 0..}. }.}
29630 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
29640 65 72 3a 3a 4d 61 6e 61 67 65 50 6f 73 69 74 69 er::ManagePositi
29650 6f 6e 73 49 6d 61 67 65 73 20 7b 7d 20 7b 0a 20 onsImages {} {.
29660 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
29670 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 . variable ma
29680 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c rker. variabl
29690 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 76 61 e options. va
296a0 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 riable currentfi
296b0 6c 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 le. variable
296c0 69 6d 61 67 65 73 0a 0a 20 20 20 20 24 6d 61 72 images.. $mar
296d0 6b 65 72 20 64 65 6c 65 74 65 20 62 6f 6f 6b 6d ker delete bookm
296e0 61 72 6b 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 ark. set font
296f0 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d 66 6f [$text cget -fo
29700 6e 74 5d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 nt]. foreach
29710 69 20 24 6f 70 74 69 6f 6e 73 28 73 61 76 65 64 i $options(saved
29720 5f 70 6f 73 69 74 69 6f 6e 73 5f 73 74 61 63 6b _positions_stack
29730 29 20 7b 0a 09 66 6f 72 65 61 63 68 20 22 66 69 ) {..foreach "fi
29740 6c 65 20 6c 69 6e 65 20 2d 22 20 24 69 20 62 72 le line -" $i br
29750 65 61 6b 0a 09 69 66 20 7b 20 24 66 69 6c 65 20 eak..if { $file
29760 65 71 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 eq $currentfile
29770 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 79 70 6f } {.. set ypo
29780 73 20 5b 65 78 70 72 20 28 24 6c 69 6e 65 2d 31 s [expr ($line-1
29790 29 2a 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 )*[font metrics
297a0 24 66 6f 6e 74 20 2d 6c 69 6e 65 73 70 61 63 65 $font -linespace
297b0 5d 2b 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 ]+\...
297c0 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 [font metrics $f
297d0 6f 6e 74 20 2d 61 73 63 65 6e 74 5d 2b 5b 24 74 ont -ascent]+[$t
297e0 65 78 74 20 63 67 65 74 20 2d 70 61 64 79 5d 2b ext cget -pady]+
297f0 32 5d 0a 09 20 20 20 20 73 65 74 20 69 64 20 5b 2].. set id [
29800 24 6d 61 72 6b 65 72 20 63 72 65 61 74 65 20 69 $marker create i
29810 6d 61 67 65 20 30 20 24 79 70 6f 73 20 2d 61 6e mage 0 $ypos -an
29820 63 68 6f 72 20 73 77 20 2d 69 6d 61 67 65 20 24 chor sw -image $
29830 69 6d 61 67 65 73 28 62 6f 6f 6b 6d 61 72 6b 29 images(bookmark)
29840 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 74 61 \... -ta
29850 67 73 20 22 62 6f 6f 6b 6d 61 72 6b 20 6c 24 6c gs "bookmark l$l
29860 69 6e 65 22 5d 0a 09 20 20 20 20 24 6d 61 72 6b ine"].. $mark
29870 65 72 20 6c 6f 77 65 72 20 24 69 64 0a 09 7d 0a er lower $id..}.
29880 20 20 20 20 7d 0a 20 20 20 20 4d 6f 76 65 43 61 }. MoveCa
29890 6e 76 61 73 20 24 74 65 78 74 20 24 6d 61 72 6b nvas $text $mark
298a0 65 72 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 er.}..proc RamDe
298b0 62 75 67 67 65 72 3a 3a 53 74 6f 70 41 74 47 55 bugger::StopAtGU
298c0 49 20 7b 20 66 69 6c 65 20 6c 69 6e 65 20 7b 20 I { file line {
298d0 63 6f 6e 64 69 6e 66 6f 20 22 22 20 7d 20 7d 20 condinfo "" } }
298e0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d {. variable m
298f0 61 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 62 arker. variab
29900 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 le currentfile.
29910 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
29920 0a 0a 20 20 20 20 73 65 74 20 66 6f 72 63 65 72 .. set forcer
29930 61 69 73 65 20 31 0a 20 20 20 20 69 66 20 7b 20 aise 1. if {
29940 24 6c 69 6e 65 20 3d 3d 20 2d 31 20 7d 20 7b 0a $line == -1 } {.
29950 09 23 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 62 .# called from b
29960 67 65 72 72 6f 72 0a 09 76 61 72 69 61 62 6c 65 gerror..variable
29970 20 66 69 6c 65 73 6c 69 73 74 0a 09 0a 09 73 65 fileslist....se
29980 74 20 66 69 6c 65 6e 75 6d 20 22 22 0a 09 66 6f t filenum ""..fo
29990 72 65 61 63 68 20 7b 66 69 6c 65 6e 75 6d 20 6c reach {filenum l
299a0 69 6e 65 7d 20 5b 45 76 61 6c 52 65 6d 6f 74 65 ine} [EvalRemote
299b0 41 6e 64 52 65 74 75 72 6e 20 3a 3a 52 44 43 3a AndReturn ::RDC:
299c0 3a 47 65 74 4c 61 73 74 56 69 73 69 74 65 64 5d :GetLastVisited]
299d0 20 62 72 65 61 6b 3b 0a 09 69 66 20 7b 20 24 66 break;..if { $f
299e0 69 6c 65 6e 75 6d 20 65 71 20 22 22 20 7d 20 7b ilenum eq "" } {
299f0 20 72 65 74 75 72 6e 20 7d 0a 09 73 65 74 20 66 return }..set f
29a00 69 6c 65 20 5b 6c 69 6e 64 65 78 20 24 66 69 6c ile [lindex $fil
29a10 65 73 6c 69 73 74 20 24 66 69 6c 65 6e 75 6d 5d eslist $filenum]
29a20 0a 09 73 65 74 20 66 6f 72 63 65 72 61 69 73 65 ..set forceraise
29a30 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 0. }. if
29a40 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
29a50 74 65 78 74 5d 20 7c 7c 20 21 5b 77 69 6e 66 6f text] || ![winfo
29a60 20 65 78 69 73 74 73 20 24 74 65 78 74 5d 20 7d exists $text] }
29a70 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
29a80 20 66 6f 72 65 61 63 68 20 6a 20 5b 63 6f 6e 63 foreach j [conc
29a90 61 74 20 5b 24 6d 61 72 6b 65 72 20 67 65 74 74 at [$marker gett
29aa0 61 67 73 20 61 72 72 6f 77 5d 20 5b 24 6d 61 72 ags arrow] [$mar
29ab0 6b 65 72 20 67 65 74 74 61 67 73 20 61 72 72 6f ker gettags arro
29ac0 77 62 72 65 61 6b 5d 5d 20 7b 0a 09 69 66 20 7b wbreak]] {..if {
29ad0 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 6c [string match l
29ae0 2a 20 24 6a 5d 20 7d 20 7b 0a 09 20 20 20 20 72 * $j] } {.. r
29af0 65 67 65 78 70 20 7b 6c 28 5b 30 2d 39 5d 2b 29 egexp {l([0-9]+)
29b00 7d 20 24 6a 20 7b 7d 20 61 72 72 6f 77 6c 69 6e } $j {} arrowlin
29b10 65 0a 09 20 20 20 20 55 70 64 61 74 65 41 72 72 e.. UpdateArr
29b20 6f 77 41 6e 64 42 72 65 61 6b 20 24 61 72 72 6f owAndBreak $arro
29b30 77 6c 69 6e 65 20 22 22 20 30 20 24 66 6f 72 63 wline "" 0 $forc
29b40 65 72 61 69 73 65 0a 09 7d 0a 20 20 20 20 7d 0a eraise..}. }.
29b50 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20 3d if { $file =
29b60 3d 20 22 22 20 7d 20 7b 0a 09 24 74 65 78 74 20 = "" } {..$text
29b70 63 6f 6e 66 20 2d 65 64 69 74 61 62 6c 65 20 31 conf -editable 1
29b80 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
29b90 20 20 20 20 69 66 20 7b 20 21 5b 41 72 65 46 69 if { ![AreFi
29ba0 6c 65 73 45 71 75 61 6c 20 24 66 69 6c 65 20 24 lesEqual $file $
29bb0 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 7d 20 7b currentfile] } {
29bc0 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 ..set err [catch
29bd0 20 7b 20 4f 70 65 6e 46 69 6c 65 46 20 2d 72 61 { OpenFileF -ra
29be0 69 73 65 5f 65 72 72 6f 72 20 31 20 24 66 69 6c ise_error 1 $fil
29bf0 65 20 7d 20 72 65 74 5d 0a 09 69 66 20 7b 20 24 e } ret]..if { $
29c00 65 72 72 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 err } {.. War
29c10 6e 57 69 6e 20 24 72 65 74 20 24 74 65 78 74 0a nWin $ret $text.
29c20 09 20 20 20 20 72 73 74 61 63 6b 20 2d 68 61 6e . rstack -han
29c30 64 6c 65 72 20 52 61 6d 44 65 62 75 67 67 65 72 dler RamDebugger
29c40 3a 3a 55 70 64 61 74 65 47 55 49 53 74 61 63 6b ::UpdateGUIStack
29c50 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a .. return..}.
29c60 20 20 20 20 7d 0a 20 20 20 20 55 70 64 61 74 65 }. Update
29c70 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24 6c ArrowAndBreak $l
29c80 69 6e 65 20 22 22 20 31 20 24 66 6f 72 63 65 72 ine "" 1 $forcer
29c90 61 69 73 65 0a 0a 20 20 20 20 52 61 6d 44 65 62 aise.. RamDeb
29ca0 75 67 67 65 72 3a 3a 53 65 74 4d 65 73 73 61 67 ugger::SetMessag
29cb0 65 20 22 22 20 3b 23 20 74 6f 20 74 61 6b 65 20 e "" ;# to take
29cc0 6f 75 74 20 6f 6c 64 20 53 65 74 4d 65 73 73 61 out old SetMessa
29cd0 67 65 46 6c 61 73 68 0a 20 20 20 20 69 66 20 7b geFlash. if {
29ce0 20 24 63 6f 6e 64 69 6e 66 6f 20 21 3d 20 22 22 $condinfo != ""
29cf0 20 7d 20 7b 0a 09 52 61 6d 44 65 62 75 67 67 65 } {..RamDebugge
29d00 72 3a 3a 53 65 74 4d 65 73 73 61 67 65 46 6c 61 r::SetMessageFla
29d10 73 68 20 5b 5f 20 22 43 6f 6e 64 69 74 69 6f 6e sh [_ "Condition
29d20 61 6c 20 62 72 65 61 6b 70 6f 69 6e 74 20 72 65 al breakpoint re
29d30 73 75 6c 74 3a 20 25 73 22 20 24 63 6f 6e 64 69 sult: %s" $condi
29d40 6e 66 6f 5d 0a 09 23 57 61 72 6e 57 69 6e 20 22 nfo]..#WarnWin "
29d50 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 62 72 65 61 Conditional brea
29d60 6b 70 6f 69 6e 74 20 72 65 73 75 6c 74 3a 20 24 kpoint result: $
29d70 63 6f 6e 64 69 6e 66 6f 22 20 5b 77 69 6e 66 6f condinfo" [winfo
29d80 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d toplevel $text]
29d90 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
29da0 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 amDebugger::Cont
29db0 4e 65 78 74 47 55 49 20 7b 20 77 68 61 74 20 7d NextGUI { what }
29dc0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
29dd0 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
29de0 65 20 72 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 e remoteserver.
29df0 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f variable remo
29e00 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 teserverType.
29e10 20 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74 variable IsInSt
29e20 6f 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 op. variable
29e30 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
29e40 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
29e50 0a 0a 20 20 20 20 23 20 62 65 66 6f 72 65 2c 20 .. # before,
29e60 74 68 65 72 65 20 77 61 73 20 74 68 65 20 61 64 there was the ad
29e70 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 64 3a 20 7c ditional cond: |
29e80 7c 20 28 24 72 65 6d 6f 74 65 73 65 72 76 65 72 | ($remoteserver
29e90 54 79 70 65 20 3d 3d 20 22 6c 6f 63 61 6c 22 20 Type == "local"
29ea0 26 26 20 21 24 49 73 49 6e 53 74 6f 70 29 20 7c && !$IsInStop) |
29eb0 7c 20 5c 0a 09 23 20 28 24 72 65 6d 6f 74 65 73 | \..# ($remotes
29ec0 65 72 76 65 72 20 3d 3d 20 22 6d 61 73 74 65 72 erver == "master
29ed0 20 61 6c 6c 22 20 26 26 20 21 24 49 73 49 6e 53 all" && !$IsInS
29ee0 74 6f 70 29 20 0a 0a 20 20 20 20 69 66 20 7b 20 top) .. if {
29ef0 24 72 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 $remoteserverTyp
29f00 65 20 6e 65 20 22 22 20 26 26 20 5b 69 6e 66 6f e ne "" && [info
29f10 20 63 6f 6d 6d 61 6e 64 73 20 6d 61 73 74 65 72 commands master
29f20 5d 20 6e 65 20 22 22 20 7d 20 7b 0a 09 73 65 74 ] ne "" } {..set
29f30 20 63 6d 64 20 5b 6d 61 73 74 65 72 20 65 76 61 cmd [master eva
29f40 6c 20 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 20 3a l info command :
29f50 3a 52 44 43 3a 3a 46 5d 0a 09 69 66 20 7b 20 24 :RDC::F]..if { $
29f60 63 6d 64 20 65 71 20 22 22 20 7d 20 7b 0a 09 20 cmd eq "" } {..
29f70 20 20 20 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f DisconnectSto
29f80 70 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 p..}. }. i
29f90 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 f { $remoteserve
29fa0 72 54 79 70 65 20 3d 3d 20 22 22 20 26 26 20 5b rType == "" && [
29fb0 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6d 61 info commands ma
29fc0 73 74 65 72 5d 20 21 3d 20 22 22 20 7d 20 7b 0a ster] != "" } {.
29fd0 09 72 64 65 62 75 67 20 2d 6d 61 73 74 65 72 0a .rdebug -master.
29fe0 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 }.. if {
29ff0 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 3d 3d $remoteserver ==
2a000 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 63 "" } {..if { $c
2a010 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 22 22 urrentfile == ""
2a020 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e 57 69 } {.. WarnWi
2a030 6e 20 5b 5f 20 22 43 61 6e 6e 6f 74 20 73 74 61 n [_ "Cannot sta
2a040 72 74 20 64 65 62 75 67 67 69 6e 67 2e 20 54 68 rt debugging. Th
2a050 65 72 65 20 69 73 20 6e 6f 20 63 75 72 72 65 6e ere is no curren
2a060 74 66 69 6c 65 22 5d 20 24 74 65 78 74 0a 09 20 tfile"] $text..
2a070 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09 73 65 return..}..se
2a080 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 65 t filetype [Give
2a090 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 6e FileType $curren
2a0a0 74 66 69 6c 65 5d 0a 09 69 66 20 7b 20 24 66 69 tfile]..if { $fi
2a0b0 6c 65 74 79 70 65 20 65 71 20 22 43 2f 43 2b 2b letype eq "C/C++
2a0c0 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 " } {.. if {
2a0d0 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
2a0e0 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 platform) eq "wi
2a0f0 6e 64 6f 77 73 22 20 26 26 20 5b 63 70 72 6f 6a ndows" && [cproj
2a100 65 63 74 3a 3a 68 61 73 5f 76 69 73 75 61 6c 5f ect::has_visual_
2a110 73 74 75 64 69 6f 5d 20 7d 20 7b 0a 09 09 63 70 studio] } {...cp
2a120 72 6f 6a 65 63 74 3a 3a 73 74 61 72 74 5f 76 69 roject::start_vi
2a130 73 75 61 6c 5f 73 74 75 64 69 6f 0a 09 09 72 65 sual_studio...re
2a140 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 turn.. }..
2a150 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 28 43 if { $options(C
2a160 6f 6e 66 69 72 6d 53 74 61 72 74 44 65 62 75 67 onfirmStartDebug
2a170 67 69 6e 67 29 20 26 26 20 24 72 65 6d 6f 74 65 ging) && $remote
2a180 73 65 72 76 65 72 20 21 3d 20 22 22 20 7d 20 7b server != "" } {
2a190 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c ...set ret [Dial
2a1a0 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f ogWin::messageBo
2a1b0 78 20 2d 64 65 66 61 75 6c 74 20 79 65 73 20 2d x -default yes -
2a1c0 69 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d 6d icon question -m
2a1d0 65 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20 20 essage \...
2a1e0 20 20 20 20 20 20 20 20 5b 5f 20 22 44 6f 20 79 [_ "Do y
2a1f0 6f 75 20 77 61 6e 74 20 74 6f 20 73 74 61 72 74 ou want to start
2a200 20 74 6f 20 64 65 62 75 67 20 63 2b 2b 20 70 72 to debug c++ pr
2a210 6f 67 72 61 6d 3f 22 5d 20 2d 70 61 72 65 6e 74 ogram?"] -parent
2a220 20 24 74 65 78 74 20 5c 0a 09 09 20 20 20 20 20 $text \...
2a230 20 20 20 20 20 20 20 20 2d 74 69 74 6c 65 20 5b -title [
2a240 5f 20 22 73 74 61 72 74 20 64 65 62 75 67 67 69 _ "start debuggi
2a250 6e 67 22 5d 20 2d 74 79 70 65 20 79 65 73 6e 6f ng"] -type yesno
2a260 63 61 6e 63 65 6c 5d 0a 09 20 20 20 20 7d 20 65 cancel].. } e
2a270 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65 74 20 lse {...set ret
2a280 79 65 73 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 yes.. }..
2a290 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 22 63 61 if { $ret == "ca
2a2a0 6e 63 65 6c 22 20 7d 20 7b 20 72 65 74 75 72 6e ncel" } { return
2a2b0 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 }.. if { $re
2a2c0 74 20 3d 3d 20 22 79 65 73 22 20 7d 20 7b 0a 09 t == "yes" } {..
2a2d0 09 44 65 62 75 67 43 70 6c 75 73 50 6c 75 73 57 .DebugCplusPlusW
2a2e0 69 6e 64 6f 77 20 31 0a 09 09 72 65 74 75 72 6e indow 1...return
2a2f0 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c 73 65 20 .. }..} else
2a300 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74 {.. if { $opt
2a310 69 6f 6e 73 28 43 6f 6e 66 69 72 6d 53 74 61 72 ions(ConfirmStar
2a320 74 44 65 62 75 67 67 69 6e 67 29 20 26 26 20 24 tDebugging) && $
2a330 72 65 6d 6f 74 65 73 65 72 76 65 72 20 21 3d 20 remoteserver !=
2a340 22 22 20 7d 20 7b 0a 09 09 69 66 20 7b 20 24 72 "" } {...if { $r
2a350 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 emoteserverType
2a360 3d 3d 20 22 6c 6f 63 61 6c 22 20 7c 7c 20 24 72 == "local" || $r
2a370 65 6d 6f 74 65 73 65 72 76 65 72 54 79 70 65 20 emoteserverType
2a380 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 == "" } {...
2a390 73 65 74 20 74 74 20 5b 5f 20 22 44 6f 20 79 6f set tt [_ "Do yo
2a3a0 75 20 77 61 6e 74 20 74 6f 20 73 74 61 72 74 20 u want to start
2a3b0 74 6f 20 64 65 62 75 67 20 6c 6f 63 61 6c 6c 79 to debug locally
2a3c0 20 27 25 73 27 3f 22 20 24 63 75 72 72 65 6e 74 '%s'?" $current
2a3d0 66 69 6c 65 5d 0a 09 09 7d 20 65 6c 73 65 20 7b file]...} else {
2a3e0 0a 09 09 20 20 20 20 73 65 74 20 74 74 20 5b 5f ... set tt [_
2a3f0 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 20 74 6f "Do you want to
2a400 20 65 78 65 63 75 74 65 20 66 69 6c 65 20 27 25 execute file '%
2a410 73 27 3f 22 20 24 63 75 72 72 65 6e 74 66 69 6c s'?" $currentfil
2a420 65 5d 0a 09 09 7d 0a 09 09 73 65 74 20 72 65 74 e]...}...set ret
2a430 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 [DialogWin::mes
2a440 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 6c 74 sageBox -default
2a450 20 79 65 73 20 2d 69 63 6f 6e 20 71 75 65 73 74 yes -icon quest
2a460 69 6f 6e 20 2d 6d 65 73 73 61 67 65 20 5c 0a 09 ion -message \..
2a470 09 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 . $t
2a480 74 20 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 t -parent $text
2a490 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
2a4a0 20 2d 74 69 74 6c 65 20 5b 5f 20 22 73 74 61 72 -title [_ "star
2a4b0 74 20 64 65 62 75 67 67 69 6e 67 22 5d 20 2d 74 t debugging"] -t
2a4c0 79 70 65 20 79 65 73 6e 6f 63 61 6e 63 65 6c 5d ype yesnocancel]
2a4d0 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 73 .. } else { s
2a4e0 65 74 20 72 65 74 20 79 65 73 20 7d 0a 09 20 20 et ret yes }..
2a4f0 20 20 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 22 if { $ret == "
2a500 63 61 6e 63 65 6c 22 20 7d 20 7b 20 72 65 74 75 cancel" } { retu
2a510 72 6e 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 rn }.. if { $
2a520 72 65 74 20 3d 3d 20 22 79 65 73 22 20 7d 20 7b ret == "yes" } {
2a530 0a 09 09 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 ...if { $remotes
2a540 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 6c 6f erverType == "lo
2a550 63 61 6c 22 20 7c 7c 20 24 72 65 6d 6f 74 65 73 cal" || $remotes
2a560 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 22 20 erverType == ""
2a570 7d 20 7b 0a 09 09 20 20 20 20 72 64 65 62 75 67 } {... rdebug
2a580 20 2d 63 75 72 72 65 6e 74 66 69 6c 65 0a 09 09 -currentfile...
2a590 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 72 } else {... r
2a5a0 6c 69 73 74 20 2d 72 65 73 65 6e 64 20 2d 71 75 list -resend -qu
2a5b0 69 65 74 0a 09 09 7d 0a 09 09 72 65 74 75 72 6e iet...}...return
2a5c0 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b .. }..}..if {
2a5d0 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 3d $remoteserver =
2a5e0 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 = "" } { return
2a5f0 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b }. } elseif {
2a600 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 3d $remoteserver =
2a610 3d 20 22 6d 61 73 74 65 72 20 61 6c 6c 22 20 26 = "master all" &
2a620 26 20 21 24 49 73 49 6e 53 74 6f 70 20 7d 20 7b & !$IsInStop } {
2a630 0a 09 72 6c 69 73 74 20 2d 72 65 73 65 6e 64 20 ..rlist -resend
2a640 2d 71 75 69 65 74 0a 20 20 20 20 7d 0a 0a 20 20 -quiet. }..
2a650 20 20 73 77 69 74 63 68 20 24 77 68 61 74 20 7b switch $what {
2a660 0a 09 72 63 6f 6e 74 20 7b 20 72 63 6f 6e 74 20 ..rcont { rcont
2a670 7d 0a 09 72 6e 65 78 74 20 7b 20 72 6e 65 78 74 }..rnext { rnext
2a680 20 7d 0a 09 72 6e 65 78 74 66 75 6c 6c 20 7b 20 }..rnextfull {
2a690 72 6e 65 78 74 20 2d 66 75 6c 6c 20 7d 0a 09 72 rnext -full }..r
2a6a0 6e 65 78 74 72 65 74 75 72 6e 20 7b 20 72 6e 65 nextreturn { rne
2a6b0 78 74 20 2d 72 65 74 75 72 6e 20 7d 0a 09 72 73 xt -return }..rs
2a6c0 74 65 70 20 7b 20 72 73 74 65 70 20 7d 0a 09 72 tep { rstep }..r
2a6d0 63 6f 6e 74 74 6f 20 7b 0a 09 20 20 20 20 73 65 contto {.. se
2a6e0 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64 t idx [$text ind
2a6f0 65 78 20 69 6e 73 65 72 74 5d 20 0a 09 20 20 20 ex insert] ..
2a700 20 0a 09 20 20 20 20 69 66 20 7b 20 24 69 64 78 .. if { $idx
2a710 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 57 61 72 == "" } {...War
2a720 6e 57 69 6e 20 5b 5f 20 22 42 65 66 6f 72 65 20 nWin [_ "Before
2a730 75 73 69 6e 67 20 27 43 6f 6e 74 69 6e 75 65 20 using 'Continue
2a740 74 6f 27 2c 20 70 69 63 6b 20 69 6e 20 74 68 65 to', pick in the
2a750 20 74 65 78 74 22 5d 0a 09 09 72 65 74 75 72 6e text"]...return
2a760 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 24 74 65 .. }.. $te
2a770 78 74 20 73 65 65 20 24 69 64 78 0a 09 20 20 20 xt see $idx..
2a780 20 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 set line [scan
2a790 24 69 64 78 20 22 25 64 22 5d 0a 09 20 20 20 20 $idx "%d"]..
2a7a0 69 66 20 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 if { [catch [lis
2a7b0 74 20 72 63 6f 6e 74 20 24 6c 69 6e 65 5d 20 65 t rcont $line] e
2a7c0 72 72 6f 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a rrorstring] } {.
2a7d0 09 09 57 61 72 6e 57 69 6e 20 24 65 72 72 6f 72 ..WarnWin $error
2a7e0 73 74 72 69 6e 67 0a 09 20 20 20 20 7d 0a 09 7d string.. }..}
2a7f0 0a 09 72 63 6f 6e 74 6f 75 74 6c 6f 6f 70 20 7b ..rcontoutloop {
2a800 0a 09 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 .. set idx [$
2a810 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 text index inser
2a820 74 5d 20 0a 09 20 20 20 20 0a 09 20 20 20 20 69 t] .. .. i
2a830 66 20 7b 20 24 69 64 78 20 3d 3d 20 22 22 20 7d f { $idx == "" }
2a840 20 7b 0a 09 09 57 61 72 6e 57 69 6e 20 5b 5f 20 {...WarnWin [_
2a850 22 42 65 66 6f 72 65 20 75 73 69 6e 67 20 27 43 "Before using 'C
2a860 6f 6e 74 69 6e 75 65 20 6f 75 74 20 6c 6f 6f 70 ontinue out loop
2a870 27 2c 20 70 69 63 6b 20 69 6e 20 74 68 65 20 74 ', pick in the t
2a880 65 78 74 22 5d 0a 09 09 72 65 74 75 72 6e 0a 09 ext"]...return..
2a890 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 69 }.. set i
2a8a0 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 69 [$text index "i
2a8b0 6e 73 65 72 74 20 6c 69 6e 65 73 74 61 72 74 22 nsert linestart"
2a8c0 5d 0a 09 20 20 20 20 73 65 74 20 62 72 61 63 65 ].. set brace
2a8d0 73 5f 63 6f 75 6e 74 20 30 0a 09 20 20 20 20 73 s_count 0.. s
2a8e0 65 74 20 66 6f 75 6e 64 20 30 0a 09 20 20 20 20 et found 0..
2a8f0 77 68 69 6c 65 20 7b 20 5b 24 74 65 78 74 20 63 while { [$text c
2a900 6f 6d 70 61 72 65 20 24 69 20 3c 20 65 6e 64 5d ompare $i < end]
2a910 20 7d 20 7b 0a 09 09 73 65 74 20 69 20 5b 24 74 } {...set i [$t
2a920 65 78 74 20 73 65 61 72 63 68 20 2d 72 65 67 65 ext search -rege
2a930 78 70 20 7b 5b 7b 7d 5d 7d 20 24 69 5d 0a 09 09 xp {[{}]} $i]...
2a940 69 66 20 7b 20 24 69 20 65 71 20 22 22 20 7d 20 if { $i eq "" }
2a950 7b 20 62 72 65 61 6b 20 7d 0a 09 09 69 66 20 7b { break }...if {
2a960 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 5d 20 [$text get $i]
2a970 65 71 20 22 5c 7b 22 20 7d 20 7b 0a 09 09 20 20 eq "\{" } {...
2a980 20 20 69 6e 63 72 20 62 72 61 63 65 73 5f 63 6f incr braces_co
2a990 75 6e 74 0a 09 09 7d 20 65 6c 73 65 69 66 20 7b unt...} elseif {
2a9a0 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 5d 20 [$text get $i]
2a9b0 65 71 20 22 5c 7d 22 20 7d 20 7b 0a 09 09 20 20 eq "\}" } {...
2a9c0 20 20 69 6e 63 72 20 62 72 61 63 65 73 5f 63 6f incr braces_co
2a9d0 75 6e 74 20 2d 31 0a 09 09 20 20 20 20 69 66 20 unt -1... if
2a9e0 7b 20 24 62 72 61 63 65 73 5f 63 6f 75 6e 74 20 { $braces_count
2a9f0 3c 20 30 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 < 0 } {...
2aa00 20 20 73 65 74 20 69 64 78 20 5b 65 78 70 72 20 set idx [expr
2aa10 7b 24 69 2b 31 7d 5d 0a 09 09 20 20 20 20 20 20 {$i+1}]...
2aa20 20 20 73 65 74 20 66 6f 75 6e 64 20 31 0a 09 09 set found 1...
2aa30 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 09 09 break...
2aa40 20 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20 }...}...set
2aa50 69 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 i [$text index "
2aa60 24 69 2b 31 63 22 5d 0a 09 20 20 20 20 7d 0a 09 $i+1c"].. }..
2aa70 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75 6e 64 if { !$found
2aa80 20 7d 20 7b 20 62 65 6c 6c 20 3b 20 72 65 74 75 } { bell ; retu
2aa90 72 6e 20 7d 0a 09 20 20 20 20 73 65 74 20 66 6f rn }.. set fo
2aaa0 75 6e 64 20 30 0a 09 20 20 20 20 73 65 74 20 69 und 0.. set i
2aab0 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 dx [$text index
2aac0 22 24 69 64 78 20 6c 69 6e 65 73 74 61 72 74 22 "$idx linestart"
2aad0 5d 0a 09 20 20 20 20 77 68 69 6c 65 20 7b 20 5b ].. while { [
2aae0 24 74 65 78 74 20 63 6f 6d 70 61 72 65 20 24 69 $text compare $i
2aaf0 64 78 20 3c 20 65 6e 64 5d 20 7d 20 7b 0a 09 09 dx < end] } {...
2ab00 69 66 20 7b 20 5b 24 74 65 78 74 20 73 65 61 72 if { [$text sear
2ab10 63 68 20 2d 72 65 67 65 78 70 20 7b 28 5e 5c 73 ch -regexp {(^\s
2ab20 2a 24 7c 5e 5c 73 2a 23 29 7d 20 24 69 64 78 20 *$|^\s*#)} $idx
2ab30 5c 0a 09 09 20 20 20 20 22 24 69 64 78 20 6c 69 \... "$idx li
2ab40 6e 65 65 6e 64 22 5d 20 65 71 20 22 22 20 7d 20 neend"] eq "" }
2ab50 7b 0a 09 09 20 20 20 20 73 65 74 20 66 6f 75 6e {... set foun
2ab60 64 20 31 0a 09 09 20 20 20 20 62 72 65 61 6b 0a d 1... break.
2ab70 09 09 7d 0a 09 09 73 65 74 20 69 64 78 20 5b 24 ..}...set idx [$
2ab80 74 65 78 74 20 69 6e 64 65 78 20 22 24 69 64 78 text index "$idx
2ab90 20 2b 20 31 6c 22 5d 0a 09 20 20 20 20 7d 0a 09 + 1l"].. }..
2aba0 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75 6e 64 if { !$found
2abb0 20 7d 20 7b 20 62 65 6c 6c 20 3b 20 72 65 74 75 } { bell ; retu
2abc0 72 6e 20 7d 0a 09 20 20 20 20 24 74 65 78 74 20 rn }.. $text
2abd0 73 65 65 20 24 69 64 78 0a 09 20 20 20 20 73 65 see $idx.. se
2abe0 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 24 69 64 t line [scan $id
2abf0 78 20 22 25 64 22 5d 0a 09 20 20 20 20 69 66 20 x "%d"].. if
2ac00 7b 20 5b 63 61 74 63 68 20 5b 6c 69 73 74 20 72 { [catch [list r
2ac10 63 6f 6e 74 20 24 6c 69 6e 65 5d 20 65 72 72 6f cont $line] erro
2ac20 72 73 74 72 69 6e 67 5d 20 7d 20 7b 0a 09 09 57 rstring] } {...W
2ac30 61 72 6e 57 69 6e 20 24 65 72 72 6f 72 73 74 72 arnWin $errorstr
2ac40 69 6e 67 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 72 ing.. }..}..r
2ac50 62 72 65 61 6b 20 7b 20 72 62 72 65 61 6b 20 7d break { rbreak }
2ac60 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
2ac70 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 amDebugger::Text
2ac80 4d 6f 74 69 6f 6e 20 7b 20 58 20 59 20 78 20 79 Motion { X Y x y
2ac90 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
2aca0 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 e text. varia
2acb0 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a ble currentfile.
2acc0 20 20 20 20 76 61 72 69 61 62 6c 65 20 49 73 49 variable IsI
2acd0 6e 53 74 6f 70 0a 20 20 20 20 76 61 72 69 61 62 nStop. variab
2ace0 6c 65 20 54 65 78 74 4d 6f 74 69 6f 6e 41 66 74 le TextMotionAft
2acf0 65 72 49 64 0a 0a 20 20 20 20 52 61 6d 44 65 62 erId.. RamDeb
2ad00 75 67 67 65 72 3a 3a 56 43 53 3a 3a 53 65 74 55 ugger::VCS::SetU
2ad10 73 65 72 41 63 74 69 76 69 74 79 0a 0a 20 20 20 serActivity..
2ad20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 set err [catch
2ad30 7b 20 6c 69 6e 64 65 78 20 5b 61 66 74 65 72 20 { lindex [after
2ad40 69 6e 66 6f 20 24 54 65 78 74 4d 6f 74 69 6f 6e info $TextMotion
2ad50 41 66 74 65 72 49 64 5d 20 30 20 7d 20 63 6d 64 AfterId] 0 } cmd
2ad60 5d 0a 20 20 20 20 69 66 20 7b 20 21 24 65 72 72 ]. if { !$err
2ad70 20 26 26 20 24 63 6d 64 20 6e 65 20 22 22 20 7d && $cmd ne "" }
2ad80 20 20 7b 0a 09 6c 61 73 73 69 67 6e 20 24 63 6d {..lassign $cm
2ad90 64 20 2d 20 78 5f 6f 6c 64 20 79 5f 6f 6c 64 0a d - x_old y_old.
2ada0 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 .set err [catch
2adb0 7b 20 65 78 70 72 20 7b 20 61 62 73 28 24 58 2d { expr { abs($X-
2adc0 24 78 5f 6f 6c 64 29 20 3c 3d 20 33 20 26 26 20 $x_old) <= 3 &&
2add0 61 62 73 28 24 59 2d 24 79 5f 6f 6c 64 29 20 3c abs($Y-$y_old) <
2ade0 3d 20 33 20 7d 20 7d 20 72 65 74 5d 0a 09 69 66 = 3 } } ret]..if
2adf0 20 7b 20 24 65 72 72 20 7c 7c 20 24 72 65 74 20 { $err || $ret
2ae00 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 } { return }.
2ae10 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 54 65 78 }. if { $Tex
2ae20 74 4d 6f 74 69 6f 6e 41 66 74 65 72 49 64 20 6e tMotionAfterId n
2ae30 65 20 22 22 20 7d 20 7b 0a 09 61 66 74 65 72 20 e "" } {..after
2ae40 63 61 6e 63 65 6c 20 24 54 65 78 74 4d 6f 74 69 cancel $TextMoti
2ae50 6f 6e 41 66 74 65 72 49 64 0a 09 73 65 74 20 54 onAfterId..set T
2ae60 65 78 74 4d 6f 74 69 6f 6e 41 66 74 65 72 49 64 extMotionAfterId
2ae70 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 "". }. if
2ae80 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 { [winfo exists
2ae90 20 24 74 65 78 74 2e 68 65 6c 70 5d 20 7d 20 7b $text.help] } {
2aea0 0a 09 64 65 73 74 72 6f 79 20 24 74 65 78 74 2e ..destroy $text.
2aeb0 68 65 6c 70 0a 20 20 20 20 7d 0a 20 20 20 20 69 help. }. i
2aec0 66 20 7b 20 24 58 20 3d 3d 20 2d 31 20 7c 7c 20 f { $X == -1 ||
2aed0 24 63 75 72 72 65 6e 74 66 69 6c 65 20 3d 3d 20 $currentfile ==
2aee0 22 22 20 7c 7c 20 21 24 49 73 49 6e 53 74 6f 70 "" || !$IsInStop
2aef0 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 } { return }..
2af00 20 20 20 73 65 74 20 54 65 78 74 4d 6f 74 69 6f set TextMotio
2af10 6e 41 66 74 65 72 49 64 20 5b 61 66 74 65 72 20 nAfterId [after
2af20 35 30 30 20 52 61 6d 44 65 62 75 67 67 65 72 3a 500 RamDebugger:
2af30 3a 44 69 73 70 6c 61 79 56 61 72 20 24 58 20 24 :DisplayVar $X $
2af40 59 20 24 78 20 24 79 5d 0a 0a 7d 0a 0a 70 72 6f Y $x $y]..}..pro
2af50 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 c RamDebugger::C
2af60 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 20 heckEvalEntries
2af70 7b 20 77 68 61 74 20 7b 20 6e 61 6d 65 20 22 22 { what { name ""
2af80 20 7d 20 7b 20 72 65 73 20 22 22 20 7d 20 7d 20 } { res "" } }
2af90 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 45 {. variable E
2afa0 76 61 6c 45 6e 74 72 69 65 73 0a 20 20 20 20 76 valEntries. v
2afb0 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74 6f 70 ariable IsInStop
2afc0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 . variable re
2afd0 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 76 moteserver. v
2afe0 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 65 ariable remotese
2aff0 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 72 rverType. var
2b000 69 61 62 6c 65 20 67 64 62 6c 6f 67 0a 20 20 20 iable gdblog.
2b010 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
2b020 73 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 49 73 s.. if { !$Is
2b030 49 6e 53 74 6f 70 20 7d 20 7b 20 72 65 74 75 72 InStop } { retur
2b040 6e 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6e 61 n }. if { $na
2b050 6d 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 69 66 me == "" } {..if
2b060 20 7b 20 24 77 68 61 74 20 3d 3d 20 22 64 6f 22 { $what == "do"
2b070 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 76 61 } {.. set va
2b080 72 73 20 22 22 0a 09 20 20 20 20 73 65 74 20 69 rs "".. set i
2b090 20 30 0a 09 20 20 20 20 77 68 69 6c 65 20 31 20 0.. while 1
2b0a0 7b 0a 09 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 {...if { ![info
2b0b0 65 78 69 73 74 73 20 45 76 61 6c 45 6e 74 72 69 exists EvalEntri
2b0c0 65 73 28 24 69 2c 6c 65 66 74 29 5d 20 7d 20 7b es($i,left)] } {
2b0d0 20 62 72 65 61 6b 20 7d 0a 09 09 69 66 20 7b 20 break }...if {
2b0e0 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 45 76 [string trim $Ev
2b0f0 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 alEntries($i,lef
2b100 74 29 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 t)] != "" } {...
2b110 20 20 20 20 6c 61 70 70 65 6e 64 20 76 61 72 73 lappend vars
2b120 20 24 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 $EvalEntries($i
2b130 2c 6c 65 66 74 29 0a 09 09 7d 0a 09 09 69 6e 63 ,left)...}...inc
2b140 72 20 69 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 r i.. }..
2b150 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 if { $remoteserv
2b160 65 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 erType == "gdb"
2b170 7d 20 7b 0a 09 09 77 68 69 6c 65 20 7b 20 5b 6c } {...while { [l
2b180 69 6e 64 65 78 20 24 72 65 6d 6f 74 65 73 65 72 index $remoteser
2b190 76 65 72 20 33 5d 20 21 3d 20 22 22 20 7d 20 7b ver 3] != "" } {
2b1a0 0a 09 09 20 20 20 20 76 77 61 69 74 20 52 61 6d ... vwait Ram
2b1b0 44 65 62 75 67 67 65 72 3a 3a 72 65 6d 6f 74 65 Debugger::remote
2b1c0 73 65 72 76 65 72 0a 09 09 7d 0a 09 09 73 65 74 server...}...set
2b1d0 20 72 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c remoteserver [l
2b1e0 72 65 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 replace $remotes
2b1f0 65 72 76 65 72 20 33 20 33 20 6d 75 6c 74 69 70 erver 3 3 multip
2b200 6c 65 70 72 69 6e 74 5d 0a 09 09 73 65 74 20 63 leprint]...set c
2b210 6f 6d 6d 61 6e 64 20 22 22 0a 09 09 66 6f 72 65 ommand ""...fore
2b220 61 63 68 20 69 20 24 76 61 72 73 20 7b 0a 09 09 ach i $vars {...
2b230 20 20 20 20 61 70 70 65 6e 64 20 63 6f 6d 6d 61 append comma
2b240 6e 64 20 22 70 72 69 6e 74 20 24 69 5c 6e 22 0a nd "print $i\n".
2b250 09 09 7d 0a 09 09 61 70 70 65 6e 64 20 63 6f 6d ..}...append com
2b260 6d 61 6e 64 20 22 70 72 69 6e 74 66 20 5c 22 46 mand "printf \"F
2b270 49 4e 49 53 48 45 44 20 4d 55 4c 54 49 50 4c 45 INISHED MULTIPLE
2b280 50 52 49 4e 54 5c 5c 6e 5c 22 22 0a 09 09 45 76 PRINT\\n\""...Ev
2b290 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d 6d 61 6e alRemote $comman
2b2a0 64 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 d...return..
2b2b0 7d 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 }.. set comm
2b2c0 7b 0a 09 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 {...set ::RDC::r
2b2d0 65 74 76 61 6c 20 22 22 0a 09 09 66 6f 72 65 61 etval ""...forea
2b2e0 63 68 20 3a 3a 52 44 43 3a 3a 69 20 5b 6c 69 73 ch ::RDC::i [lis
2b2f0 74 20 56 41 52 53 5d 20 7b 0a 09 09 20 20 20 20 t VARS] {...
2b300 69 66 20 7b 20 5b 61 72 72 61 79 20 65 78 69 73 if { [array exis
2b310 74 73 20 24 3a 3a 52 44 43 3a 3a 69 5d 20 7d 20 ts $::RDC::i] }
2b320 7b 0a 09 09 20 20 20 20 20 20 20 20 6c 61 70 70 {... lapp
2b330 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 end ::RDC::retva
2b340 6c 20 61 72 72 61 79 20 5b 61 72 72 61 79 20 67 l array [array g
2b350 65 74 20 24 3a 3a 52 44 43 3a 3a 69 5d 0a 09 09 et $::RDC::i]...
2b360 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b } elseif { [
2b370 69 6e 66 6f 20 65 78 69 73 74 73 20 24 3a 3a 52 info exists $::R
2b380 44 43 3a 3a 69 5d 20 7d 20 7b 0a 09 09 20 20 20 DC::i] } {...
2b390 20 20 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 52 lappend ::R
2b3a0 44 43 3a 3a 72 65 74 76 61 6c 20 76 61 72 69 61 DC::retval varia
2b3b0 62 6c 65 20 5b 73 65 74 20 24 3a 3a 52 44 43 3a ble [set $::RDC:
2b3c0 3a 69 5d 0a 09 09 20 20 20 20 7d 20 65 6c 73 65 :i]... } else
2b3d0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 {... set
2b3e0 20 3a 3a 52 44 43 3a 3a 65 72 72 6f 72 49 6e 66 ::RDC::errorInf
2b3f0 6f 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 0a 09 o $::errorInfo..
2b400 09 20 20 20 20 20 20 20 20 73 65 74 20 3a 3a 52 . set ::R
2b410 44 43 3a 3a 65 72 72 20 5b 63 61 74 63 68 20 7b DC::err [catch {
2b420 65 78 70 72 20 5b 73 65 74 20 3a 3a 52 44 43 3a expr [set ::RDC:
2b430 3a 69 5d 7d 20 3a 3a 52 44 43 3a 3a 76 61 6c 5d :i]} ::RDC::val]
2b440 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 ... if {
2b450 21 24 3a 3a 52 44 43 3a 3a 65 72 72 20 7d 20 7b !$::RDC::err } {
2b460 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 6c ... l
2b470 61 70 70 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 append ::RDC::re
2b480 74 76 61 6c 20 65 78 70 72 20 24 3a 3a 52 44 43 tval expr $::RDC
2b490 3a 3a 76 61 6c 0a 09 09 20 20 20 20 20 20 20 20 ::val...
2b4a0 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 } else {...
2b4b0 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 3a lappend :
2b4c0 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 65 72 72 :RDC::retval err
2b4d0 6f 72 20 5b 5f 20 22 76 61 72 69 61 62 6c 65 20 or [_ "variable
2b4e0 6f 72 20 65 78 70 72 20 25 73 20 64 6f 65 73 20 or expr %s does
2b4f0 6e 6f 74 20 65 78 69 73 74 22 20 24 3a 3a 52 44 not exist" $::RD
2b500 43 3a 3a 69 5d 0a 09 09 20 20 20 20 20 20 20 20 C::i]...
2b510 20 20 20 20 73 65 74 20 3a 3a 65 72 72 6f 72 49 set ::errorI
2b520 6e 66 6f 20 24 3a 3a 52 44 43 3a 3a 65 72 72 6f nfo $::RDC::erro
2b530 72 49 6e 66 6f 0a 09 09 20 20 20 20 20 20 20 20 rInfo...
2b540 7d 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 09 }... }...}...
2b550 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 set ::RDC::retva
2b560 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 l.. }.. se
2b570 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67 20 6d t comm [string m
2b580 61 70 20 5b 6c 69 73 74 20 56 41 52 53 20 24 76 ap [list VARS $v
2b590 61 72 73 5d 20 24 63 6f 6d 6d 5d 0a 09 20 20 20 ars] $comm]..
2b5a0 20 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65 72 20 reval -handler
2b5b0 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
2b5c0 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 r::CheckEvalEntr
2b5d0 69 65 73 20 72 65 73 20 24 6e 61 6d 65 5d 20 24 ies res $name] $
2b5e0 63 6f 6d 6d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 comm..} else {..
2b5f0 20 20 20 20 73 65 74 20 69 20 30 0a 09 20 20 20 set i 0..
2b600 20 66 6f 72 65 61 63 68 20 22 74 79 70 65 20 76 foreach "type v
2b610 61 6c 22 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 al" [lindex $res
2b620 20 31 5d 20 7b 0a 09 09 69 66 20 7b 20 5b 73 74 1] {...if { [st
2b630 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 76 61 6c ring length $val
2b640 5d 20 3e 20 31 30 30 20 7d 20 7b 0a 09 09 20 20 ] > 100 } {...
2b650 20 20 73 65 74 20 76 61 6c 20 5b 73 74 72 69 6e set val [strin
2b660 67 20 72 61 6e 67 65 20 24 76 61 6c 20 30 20 39 g range $val 0 9
2b670 36 5d 2e 2e 2e 0a 09 09 7d 0a 09 09 77 68 69 6c 6]......}...whil
2b680 65 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 e { [info exists
2b690 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c EvalEntries($i,
2b6a0 6c 65 66 74 29 5d 20 26 26 20 5c 0a 09 09 20 20 left)] && \...
2b6b0 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e [strin
2b6c0 67 20 74 72 69 6d 20 24 45 76 61 6c 45 6e 74 72 g trim $EvalEntr
2b6d0 69 65 73 28 24 69 2c 6c 65 66 74 29 5d 20 3d 3d ies($i,left)] ==
2b6e0 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 69 6e "" } {... in
2b6f0 63 72 20 69 0a 09 09 7d 0a 09 09 73 65 74 20 52 cr i...}...set R
2b700 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c amDebugger::Eval
2b710 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 Entries($i,right
2b720 29 20 24 76 61 6c 0a 09 09 69 66 20 7b 20 21 5b ) $val...if { ![
2b730 69 6e 66 6f 20 65 78 69 73 74 73 20 52 61 6d 44 info exists RamD
2b740 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 ebugger::EvalEnt
2b750 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 ries($i,rightent
2b760 72 79 29 5d 20 7d 20 7b 20 62 72 65 61 6b 20 7d ry)] } { break }
2b770 0a 09 09 69 66 20 7b 20 24 74 79 70 65 20 3d 3d ...if { $type ==
2b780 20 22 65 72 72 6f 72 22 20 7d 20 7b 0a 09 09 20 "error" } {...
2b790 20 20 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a $RamDebugger:
2b7a0 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c :EvalEntries($i,
2b7b0 72 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e 66 rightentry) conf
2b7c0 20 2d 66 67 20 72 65 64 0a 09 09 7d 20 65 6c 73 -fg red...} els
2b7d0 65 20 7b 0a 09 09 20 20 20 20 24 52 61 6d 44 65 e {... $RamDe
2b7e0 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 bugger::EvalEntr
2b7f0 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72 ies($i,rightentr
2b800 79 29 20 63 6f 6e 66 20 2d 66 67 20 62 6c 61 63 y) conf -fg blac
2b810 6b 0a 09 09 7d 0a 09 09 69 6e 63 72 20 69 0a 09 k...}...incr i..
2b820 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 }..}. } e
2b830 6c 73 65 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 lseif { [string
2b840 6d 61 74 63 68 20 2a 6c 65 66 74 20 24 6e 61 6d match *left $nam
2b850 65 5d 20 7d 20 7b 0a 09 69 66 20 7b 20 24 77 68 e] } {..if { $wh
2b860 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a 09 at == "do" } {..
2b870 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39 regexp {[0-9
2b880 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20 ]+} $name i..
2b890 20 73 65 74 20 76 61 72 20 24 45 76 61 6c 45 6e set var $EvalEn
2b8a0 74 72 69 65 73 28 24 6e 61 6d 65 29 0a 09 20 20 tries($name)..
2b8b0 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 if { [string t
2b8c0 72 69 6d 20 24 76 61 72 5d 20 3d 3d 20 22 22 20 rim $var] == ""
2b8d0 7d 20 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67 } {...$RamDebugg
2b8e0 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 er::EvalEntries(
2b8f0 24 69 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63 $i,rightentry) c
2b900 6f 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a 09 09 onf -fg black...
2b910 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a set RamDebugger:
2b920 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c :EvalEntries($i,
2b930 72 69 67 68 74 29 20 22 22 0a 09 09 72 65 74 75 right) ""...retu
2b940 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 rn.. }.. i
2b950 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 f { $remoteserve
2b960 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d rType == "gdb" }
2b970 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 {...set remotes
2b980 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 erver [lreplace
2b990 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 $remoteserver 3
2b9a0 33 20 5b 6c 69 73 74 20 67 65 74 64 61 74 61 20 3 [list getdata
2b9b0 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b9e0 20 20 20 20 20 20 22 52 61 6d 44 65 62 75 67 67 "RamDebugg
2b9f0 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 er::CheckEvalEnt
2ba00 72 69 65 73 20 72 65 73 20 24 6e 61 6d 65 22 5d ries res $name"]
2ba10 5d 0a 09 09 73 65 74 20 63 6f 6d 6d 20 22 6f 75 ]...set comm "ou
2ba20 74 70 75 74 20 24 76 61 72 5c 6e 22 0a 09 09 61 tput $var\n"...a
2ba30 70 70 65 6e 64 20 63 6f 6d 6d 20 22 70 72 69 6e ppend comm "prin
2ba40 74 66 20 5c 22 46 49 4e 49 53 48 45 44 20 47 45 tf \"FINISHED GE
2ba50 54 44 41 54 41 5c 5c 6e 5c 22 22 0a 09 09 45 76 TDATA\\n\""...Ev
2ba60 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d 6d 0a 09 alRemote $comm..
2ba70 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 .return.. }..
2ba80 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b 0a 09 set comm {..
2ba90 09 69 66 20 7b 20 5b 61 72 72 61 79 20 65 78 69 .if { [array exi
2baa0 73 74 73 20 7b 56 41 52 7d 5d 20 7d 20 7b 0a 09 sts {VAR}] } {..
2bab0 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a . set ::RDC::
2bac0 72 65 74 76 61 6c 20 5b 6c 69 73 74 20 61 72 72 retval [list arr
2bad0 61 79 20 5b 61 72 72 61 79 20 67 65 74 20 7b 56 ay [array get {V
2bae0 41 52 7d 5d 5d 0a 09 09 7d 20 65 6c 73 65 69 66 AR}]]...} elseif
2baf0 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
2bb00 7b 56 41 52 7d 5d 20 7d 20 7b 0a 09 09 20 20 20 {VAR}] } {...
2bb10 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 set ::RDC::retv
2bb20 61 6c 20 5b 6c 69 73 74 20 76 61 72 69 61 62 6c al [list variabl
2bb30 65 20 5b 73 65 74 20 7b 56 41 52 7d 5d 5d 0a 09 e [set {VAR}]]..
2bb40 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 .} else {...
2bb50 73 65 74 20 3a 3a 52 44 43 3a 3a 65 72 72 6f 72 set ::RDC::error
2bb60 49 6e 66 6f 20 24 3a 3a 65 72 72 6f 72 49 6e 66 Info $::errorInf
2bb70 6f 0a 09 09 20 20 20 20 73 65 74 20 3a 3a 52 44 o... set ::RD
2bb80 43 3a 3a 65 72 72 20 5b 63 61 74 63 68 20 7b 65 C::err [catch {e
2bb90 78 70 72 20 7b 56 41 52 7d 7d 20 3a 3a 52 44 43 xpr {VAR}} ::RDC
2bba0 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 69 66 20 ::val]... if
2bbb0 7b 20 21 24 3a 3a 52 44 43 3a 3a 65 72 72 20 7d { !$::RDC::err }
2bbc0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 74 {... set
2bbd0 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 5b ::RDC::retval [
2bbe0 6c 69 73 74 20 65 78 70 72 20 24 3a 3a 52 44 43 list expr $::RDC
2bbf0 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 7d 20 65 ::val]... } e
2bc00 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 20 lse {...
2bc10 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 set ::RDC::retva
2bc20 6c 20 5b 6c 69 73 74 20 65 72 72 6f 72 20 7b 76 l [list error {v
2bc30 61 72 69 61 62 6c 65 20 6f 72 20 65 78 70 72 20 ariable or expr
2bc40 27 56 41 52 27 20 64 6f 65 73 20 6e 6f 74 20 65 'VAR' does not e
2bc50 78 69 73 74 7d 5d 0a 09 09 20 20 20 20 20 20 20 xist}]...
2bc60 20 73 65 74 20 3a 3a 65 72 72 6f 72 49 6e 66 6f set ::errorInfo
2bc70 20 24 3a 3a 52 44 43 3a 3a 65 72 72 6f 72 49 6e $::RDC::errorIn
2bc80 66 6f 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 fo... }...}..
2bc90 09 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 .set ::RDC::retv
2bca0 61 6c 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 al.. }.. s
2bcb0 65 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67 20 et comm [string
2bcc0 6d 61 70 20 5b 6c 69 73 74 20 56 41 52 20 5b 73 map [list VAR [s
2bcd0 74 72 69 6e 67 20 74 72 69 6d 20 24 76 61 72 5d tring trim $var]
2bce0 5d 20 24 63 6f 6d 6d 5d 0a 09 20 20 20 20 72 65 ] $comm].. re
2bcf0 76 61 6c 20 2d 68 61 6e 64 6c 65 72 20 5b 6c 69 val -handler [li
2bd00 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
2bd10 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 CheckEvalEntries
2bd20 20 72 65 73 20 24 6e 61 6d 65 5d 20 24 63 6f 6d res $name] $com
2bd30 6d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 m..} else {..
2bd40 20 72 65 67 65 78 70 20 7b 5b 30 2d 39 5d 2b 7d regexp {[0-9]+}
2bd50 20 24 6e 61 6d 65 20 69 0a 09 20 20 20 20 69 66 $name i.. if
2bd60 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 { $remoteserver
2bd70 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 Type == "gdb" }
2bd80 7b 0a 09 09 73 65 74 20 72 65 73 20 5b 6c 69 73 {...set res [lis
2bd90 74 20 30 20 5b 6c 69 73 74 20 76 61 72 69 61 62 t 0 [list variab
2bda0 6c 65 20 24 72 65 73 5d 5d 0a 09 20 20 20 20 7d le $res]].. }
2bdb0 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 22 74 .. foreach "t
2bdc0 79 70 65 20 76 61 6c 22 20 5b 6c 69 6e 64 65 78 ype val" [lindex
2bdd0 20 24 72 65 73 20 31 5d 20 62 72 65 61 6b 0a 09 $res 1] break..
2bde0 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 if { [string
2bdf0 20 6c 65 6e 67 74 68 20 24 76 61 6c 5d 20 3e 20 length $val] >
2be00 31 30 30 20 7d 20 7b 0a 09 09 73 65 74 20 76 61 100 } {...set va
2be10 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 l [string range
2be20 24 76 61 6c 20 30 20 39 36 5d 2e 2e 2e 0a 09 20 $val 0 96].....
2be30 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 52 61 }.. set Ra
2be40 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 mDebugger::EvalE
2be50 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 29 ntries($i,right)
2be60 20 24 76 61 6c 0a 09 20 20 20 20 69 66 20 7b 20 $val.. if {
2be70 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 52 61 ![info exists Ra
2be80 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 mDebugger::EvalE
2be90 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 ntries($i,righte
2bea0 6e 74 72 79 29 5d 20 7d 20 7b 20 62 72 65 61 6b ntry)] } { break
2beb0 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 74 79 }.. if { $ty
2bec0 70 65 20 3d 3d 20 22 65 72 72 6f 72 22 20 7d 20 pe == "error" }
2bed0 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67 65 72 {...$RamDebugger
2bee0 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 ::EvalEntries($i
2bef0 2c 72 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e ,rightentry) con
2bf00 66 20 2d 66 67 20 72 65 64 0a 09 20 20 20 20 7d f -fg red.. }
2bf10 20 65 6c 73 65 20 7b 0a 09 09 24 52 61 6d 44 65 else {...$RamDe
2bf20 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 bugger::EvalEntr
2bf30 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72 ies($i,rightentr
2bf40 79 29 20 63 6f 6e 66 20 2d 66 67 20 62 6c 61 63 y) conf -fg blac
2bf50 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 k.. }..}.
2bf60 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b 20 24 } else {..if { $
2bf70 77 68 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b what == "do" } {
2bf80 0a 09 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30 .. regexp {[0
2bf90 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 -9]+} $name i..
2bfa0 20 20 20 73 65 74 20 76 61 72 20 5b 73 74 72 69 set var [stri
2bfb0 6e 67 20 74 72 69 6d 20 24 45 76 61 6c 45 6e 74 ng trim $EvalEnt
2bfc0 72 69 65 73 28 24 69 2c 6c 65 66 74 29 5d 0a 09 ries($i,left)]..
2bfd0 20 20 20 20 69 66 20 7b 20 24 76 61 72 20 3d 3d if { $var ==
2bfe0 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d "" } { return }
2bff0 0a 09 20 20 20 20 73 65 74 20 76 61 6c 75 65 20 .. set value
2c000 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 45 76 [string trim $Ev
2c010 61 6c 45 6e 74 72 69 65 73 28 24 6e 61 6d 65 29 alEntries($name)
2c020 5d 0a 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 70 ]... if { $op
2c030 74 69 6f 6e 73 28 43 6f 6e 66 69 72 6d 4d 6f 64 tions(ConfirmMod
2c040 69 66 79 56 61 72 69 61 62 6c 65 29 20 7d 20 7b ifyVariable) } {
2c050 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c ...set ret [Dial
2c060 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f ogWin::messageBo
2c070 78 20 2d 64 65 66 61 75 6c 74 20 6f 6b 20 2d 69 x -default ok -i
2c080 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d 6d 65 con question -me
2c090 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20 20 20 ssage \...
2c0a0 20 20 20 20 20 20 20 5b 5f 20 22 41 72 65 20 79 [_ "Are y
2c0b0 6f 75 20 73 75 72 65 20 74 6f 20 63 68 61 6e 67 ou sure to chang
2c0c0 65 20 76 61 72 69 61 62 6c 65 20 27 25 73 27 20 e variable '%s'
2c0d0 74 6f 20 76 61 6c 75 65 20 27 25 73 27 3f 22 20 to value '%s'?"
2c0e0 24 76 61 72 20 24 76 61 6c 75 65 5d 20 5c 0a 09 $var $value] \..
2c0f0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 74 . -t
2c100 69 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69 6e 67 itle [_ "Warning
2c110 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63 65 "] -type okcance
2c120 6c 5d 0a 09 09 69 66 20 7b 20 24 72 65 74 20 3d l]...if { $ret =
2c130 3d 20 22 63 61 6e 63 65 6c 22 20 7d 20 7b 20 72 = "cancel" } { r
2c140 65 74 75 72 6e 20 7d 0a 09 20 20 20 20 7d 0a 0a eturn }.. }..
2c150 09 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 . if { $remot
2c160 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 eserverType == "
2c170 67 64 62 22 20 7d 20 7b 0a 09 09 73 65 74 20 72 gdb" } {...set r
2c180 65 6d 6f 74 65 73 65 72 76 65 72 20 5b 6c 72 65 emoteserver [lre
2c190 70 6c 61 63 65 20 24 72 65 6d 6f 74 65 73 65 72 place $remoteser
2c1a0 76 65 72 20 33 20 33 20 73 65 74 76 61 72 69 61 ver 3 3 setvaria
2c1b0 62 6c 65 5d 0a 09 09 45 76 61 6c 52 65 6d 6f 74 ble]...EvalRemot
2c1c0 65 20 22 73 65 74 20 76 61 72 69 61 62 6c 65 20 e "set variable
2c1d0 24 76 61 72 3d 24 76 61 6c 75 65 22 0a 09 09 72 $var=$value"...r
2c1e0 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 eturn.. }..
2c1f0 20 20 73 65 74 20 63 6f 6d 6d 20 5b 6c 69 73 74 set comm [list
2c200 20 73 65 74 20 24 76 61 72 20 24 76 61 6c 75 65 set $var $value
2c210 5d 0a 09 20 20 20 20 72 65 76 61 6c 20 2d 68 61 ].. reval -ha
2c220 6e 64 6c 65 72 20 5b 6c 69 73 74 20 52 61 6d 44 ndler [list RamD
2c230 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b 45 76 ebugger::CheckEv
2c240 61 6c 45 6e 74 72 69 65 73 20 72 65 73 20 24 6e alEntries res $n
2c250 61 6d 65 5d 20 24 63 6f 6d 6d 0a 09 7d 20 65 6c ame] $comm..} el
2c260 73 65 20 7b 0a 09 20 20 20 20 72 65 67 65 78 70 se {.. regexp
2c270 20 7b 5b 30 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 {[0-9]+} $name
2c280 69 0a 09 20 20 20 20 73 65 74 20 52 61 6d 44 65 i.. set RamDe
2c290 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 bugger::EvalEntr
2c2a0 69 65 73 28 24 69 2c 72 69 67 68 74 29 20 5b 6c ies($i,right) [l
2c2b0 69 6e 64 65 78 20 24 72 65 73 20 31 5d 0a 09 20 index $res 1]..
2c2c0 20 20 20 73 77 69 74 63 68 20 5b 6c 69 6e 64 65 switch [linde
2c2d0 78 20 24 72 65 73 20 30 5d 20 7b 0a 09 09 30 20 x $res 0] {...0
2c2e0 7b 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a { $RamDebugger::
2c2f0 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 EvalEntries($i,r
2c300 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e 66 20 ightentry) conf
2c310 2d 66 67 20 62 6c 61 63 6b 20 7d 0a 09 09 31 20 -fg black }...1
2c320 7b 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a { $RamDebugger::
2c330 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 EvalEntries($i,r
2c340 69 67 68 74 65 6e 74 72 79 29 20 63 6f 6e 66 20 ightentry) conf
2c350 2d 66 67 20 72 65 64 20 7d 0a 09 20 20 20 20 7d -fg red }.. }
2c360 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f ..}. }.}..pro
2c370 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 c RamDebugger::C
2c380 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 4c heckEvalEntriesL
2c390 20 7b 20 77 68 61 74 20 7b 20 6e 61 6d 65 20 22 { what { name "
2c3a0 22 20 7d 20 7b 20 72 65 73 20 22 22 20 7d 20 7d " } { res "" } }
2c3b0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
2c3c0 45 76 61 6c 45 6e 74 72 69 65 73 0a 20 20 20 20 EvalEntries.
2c3d0 76 61 72 69 61 62 6c 65 20 49 73 49 6e 53 74 6f variable IsInSto
2c3e0 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 p. variable r
2c3f0 65 6d 6f 74 65 73 65 72 76 65 72 0a 20 20 20 20 emoteserver.
2c400 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 74 65 73 variable remotes
2c410 65 72 76 65 72 54 79 70 65 0a 20 20 20 20 76 61 erverType. va
2c420 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a riable options..
2c430 20 20 20 20 69 66 20 7b 20 21 24 6f 70 74 69 6f if { !$optio
2c440 6e 73 28 56 69 65 77 4c 6f 63 61 6c 56 61 72 69 ns(ViewLocalVari
2c450 61 62 6c 65 73 29 20 7d 20 7b 0a 09 73 65 74 20 ables) } {..set
2c460 69 20 30 0a 09 77 68 69 6c 65 20 31 20 7b 0a 09 i 0..while 1 {..
2c470 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 if { ![info
2c480 65 78 69 73 74 73 20 45 76 61 6c 45 6e 74 72 69 exists EvalEntri
2c490 65 73 28 24 69 2c 6c 65 66 74 4c 29 5d 20 7d 20 es($i,leftL)] }
2c4a0 7b 20 62 72 65 61 6b 20 7d 0a 09 20 20 20 20 73 { break }.. s
2c4b0 65 74 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 et EvalEntries($
2c4c0 69 2c 6c 65 66 74 4c 29 20 22 22 0a 09 20 20 20 i,leftL) ""..
2c4d0 20 73 65 74 20 45 76 61 6c 45 6e 74 72 69 65 73 set EvalEntries
2c4e0 28 24 69 2c 72 69 67 68 74 4c 29 20 22 22 0a 09 ($i,rightL) ""..
2c4f0 20 20 20 20 69 6e 63 72 20 69 0a 09 7d 0a 09 72 incr i..}..r
2c500 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
2c510 20 69 66 20 7b 20 21 24 49 73 49 6e 53 74 6f 70 if { !$IsInStop
2c520 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 } { return }..
2c530 20 20 20 69 66 20 7b 20 24 6e 61 6d 65 20 3d 3d if { $name ==
2c540 20 22 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 77 "" } {..if { $w
2c550 68 61 74 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a hat == "do" } {.
2c560 09 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 . if { $remot
2c570 65 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 eserverType == "
2c580 67 64 62 22 20 7d 20 7b 0a 09 09 77 68 69 6c 65 gdb" } {...while
2c590 20 7b 20 5b 6c 69 6e 64 65 78 20 24 72 65 6d 6f { [lindex $remo
2c5a0 74 65 73 65 72 76 65 72 20 33 5d 20 21 3d 20 22 teserver 3] != "
2c5b0 22 20 7d 20 7b 0a 09 09 20 20 20 20 76 77 61 69 " } {... vwai
2c5c0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 72 t RamDebugger::r
2c5d0 65 6d 6f 74 65 73 65 72 76 65 72 0a 09 09 7d 0a emoteserver...}.
2c5e0 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 72 76 ..set remoteserv
2c5f0 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 72 65 er [lreplace $re
2c600 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 20 69 moteserver 3 3 i
2c610 6e 66 6f 6c 6f 63 61 6c 73 5d 0a 09 09 45 76 61 nfolocals]...Eva
2c620 6c 52 65 6d 6f 74 65 20 22 69 6e 66 6f 20 6c 6f lRemote "info lo
2c630 63 61 6c 73 5c 6e 70 72 69 6e 74 66 20 5c 22 5c cals\nprintf \"\
2c640 5c 6e 46 49 4e 49 53 48 45 44 20 49 4e 46 4f 20 \nFINISHED INFO
2c650 4c 4f 43 41 4c 53 5c 5c 6e 5c 22 22 0a 09 09 72 LOCALS\\n\""...r
2c660 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 eturn.. }..
2c670 20 20 73 65 74 20 63 6f 6d 6d 20 7b 0a 09 09 73 set comm {...s
2c680 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c et ::RDC::retval
2c690 20 22 22 0a 09 09 66 6f 72 65 61 63 68 20 3a 3a ""...foreach ::
2c6a0 52 44 43 3a 3a 69 20 5b 69 6e 66 6f 20 6c 6f 63 RDC::i [info loc
2c6b0 61 6c 73 5d 20 7b 0a 09 09 20 20 20 20 69 66 20 als] {... if
2c6c0 7b 20 5b 61 72 72 61 79 20 65 78 69 73 74 73 20 { [array exists
2c6d0 24 3a 3a 52 44 43 3a 3a 69 5d 20 7d 20 7b 0a 09 $::RDC::i] } {..
2c6e0 09 20 20 20 20 20 20 20 20 73 65 74 20 3a 3a 52 . set ::R
2c6f0 44 43 3a 3a 76 61 6c 20 5b 61 72 72 61 79 20 67 DC::val [array g
2c700 65 74 20 24 3a 3a 52 44 43 3a 3a 69 5d 0a 09 09 et $::RDC::i]...
2c710 20 20 20 20 20 20 20 20 69 66 20 7b 20 5b 73 74 if { [st
2c720 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a 52 ring length $::R
2c730 44 43 3a 3a 76 61 6c 5d 20 3e 20 31 30 30 20 7d DC::val] > 100 }
2c740 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
2c750 20 73 65 74 20 3a 3a 52 44 43 3a 3a 76 61 6c 20 set ::RDC::val
2c760 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 3a [string range $:
2c770 3a 52 44 43 3a 3a 76 61 6c 20 30 20 39 36 5d 2e :RDC::val 0 96].
2c780 2e 2e 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 ..... }..
2c790 09 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 . lappend
2c7a0 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 24 ::RDC::retval $
2c7b0 3a 3a 52 44 43 3a 3a 69 20 61 72 72 61 79 20 24 ::RDC::i array $
2c7c0 3a 3a 52 44 43 3a 3a 76 61 6c 0a 09 09 20 20 20 ::RDC::val...
2c7d0 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 69 6e 66 } elseif { [inf
2c7e0 6f 20 65 78 69 73 74 73 20 24 3a 3a 52 44 43 3a o exists $::RDC:
2c7f0 3a 69 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 :i] } {...
2c800 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 76 61 6c set ::RDC::val
2c810 20 5b 73 65 74 20 24 3a 3a 52 44 43 3a 3a 69 5d [set $::RDC::i]
2c820 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 ... if {
2c830 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 [string length $
2c840 3a 3a 52 44 43 3a 3a 76 61 6c 5d 20 3e 20 31 30 ::RDC::val] > 10
2c850 30 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 0 } {...
2c860 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 76 set ::RDC::v
2c870 61 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 al [string range
2c880 20 24 3a 3a 52 44 43 3a 3a 76 61 6c 20 30 20 39 $::RDC::val 0 9
2c890 36 5d 2e 2e 2e 0a 09 09 20 20 20 20 20 20 20 20 6]......
2c8a0 7d 0a 09 09 20 20 20 20 20 20 20 20 6c 61 70 70 }... lapp
2c8b0 65 6e 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 end ::RDC::retva
2c8c0 6c 20 24 3a 3a 52 44 43 3a 3a 69 20 76 61 72 69 l $::RDC::i vari
2c8d0 61 62 6c 65 20 24 3a 3a 52 44 43 3a 3a 76 61 6c able $::RDC::val
2c8e0 0a 09 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ... } else {.
2c8f0 09 09 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e .. lappen
2c900 64 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 d ::RDC::retval
2c910 24 3a 3a 52 44 43 3a 3a 69 20 65 72 72 6f 72 20 $::RDC::i error
2c920 5b 5f 20 22 45 72 72 6f 72 22 5d 0a 09 09 20 20 [_ "Error"]...
2c930 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20 3a 3a }...}...set ::
2c940 52 44 43 3a 3a 72 65 74 76 61 6c 0a 09 20 20 20 RDC::retval..
2c950 20 7d 0a 09 20 20 20 20 72 65 76 61 6c 20 2d 68 }.. reval -h
2c960 61 6e 64 6c 65 72 20 5b 6c 69 73 74 20 52 61 6d andler [list Ram
2c970 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b 45 Debugger::CheckE
2c980 76 61 6c 45 6e 74 72 69 65 73 4c 20 72 65 73 20 valEntriesL res
2c990 24 6e 61 6d 65 5d 20 24 63 6f 6d 6d 0a 09 7d 20 $name] $comm..}
2c9a0 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 else {.. set
2c9b0 69 20 30 0a 09 20 20 20 20 66 6f 72 65 61 63 68 i 0.. foreach
2c9c0 20 22 6e 61 6d 65 20 74 79 70 65 20 76 61 6c 22 "name type val"
2c9d0 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 31 5d [lindex $res 1]
2c9e0 20 7b 0a 09 09 69 66 20 7b 20 24 74 79 70 65 20 {...if { $type
2c9f0 3d 3d 20 22 45 72 72 6f 72 22 20 7d 20 7b 20 63 == "Error" } { c
2ca00 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 69 66 20 7b ontinue }...if {
2ca10 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 45 ![info exists E
2ca20 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c 65 valEntries($i,le
2ca30 66 74 4c 29 5d 20 7d 20 7b 0a 09 09 20 20 20 20 ftL)] } {...
2ca40 73 65 74 20 70 61 6e 65 31 20 5b 77 69 6e 66 6f set pane1 [winfo
2ca50 20 70 61 72 65 6e 74 20 24 45 76 61 6c 45 6e 74 parent $EvalEnt
2ca60 72 69 65 73 28 30 2c 6c 65 66 74 65 6e 74 72 79 ries(0,leftentry
2ca70 4c 29 5d 0a 09 09 20 20 20 20 73 65 74 20 70 61 L)]... set pa
2ca80 6e 65 32 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e ne2 [winfo paren
2ca90 74 20 24 45 76 61 6c 45 6e 74 72 69 65 73 28 30 t $EvalEntries(0
2caa0 2c 72 69 67 68 74 65 6e 74 72 79 4c 29 5d 0a 09 ,rightentryL)]..
2cab0 09 20 20 20 20 43 72 65 61 74 65 50 61 6e 65 64 . CreatePaned
2cac0 45 6e 74 72 69 65 73 20 5b 65 78 70 72 20 24 69 Entries [expr $i
2cad0 2b 31 5d 20 24 70 61 6e 65 31 20 24 70 61 6e 65 +1] $pane1 $pane
2cae0 32 20 4c 0a 09 09 7d 0a 09 09 73 65 74 20 45 76 2 L...}...set Ev
2caf0 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 alEntries($i,lef
2cb00 74 4c 29 20 24 6e 61 6d 65 0a 09 09 73 65 74 20 tL) $name...set
2cb10 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 EvalEntries($i,r
2cb20 69 67 68 74 4c 29 20 24 76 61 6c 0a 09 09 69 6e ightL) $val...in
2cb30 63 72 20 69 0a 09 20 20 20 20 7d 0a 09 20 20 20 cr i.. }..
2cb40 20 77 68 69 6c 65 20 31 20 7b 0a 09 09 69 66 20 while 1 {...if
2cb50 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
2cb60 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c EvalEntries($i,l
2cb70 65 66 74 4c 29 5d 20 7d 20 7b 20 62 72 65 61 6b eftL)] } { break
2cb80 20 7d 0a 09 09 73 65 74 20 45 76 61 6c 45 6e 74 }...set EvalEnt
2cb90 72 69 65 73 28 24 69 2c 6c 65 66 74 4c 29 20 22 ries($i,leftL) "
2cba0 22 0a 09 09 73 65 74 20 45 76 61 6c 45 6e 74 72 "...set EvalEntr
2cbb0 69 65 73 28 24 69 2c 72 69 67 68 74 4c 29 20 22 ies($i,rightL) "
2cbc0 22 0a 09 09 69 6e 63 72 20 69 0a 09 20 20 20 20 "...incr i..
2cbd0 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 }..}. } elsei
2cbe0 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 f { [string matc
2cbf0 68 20 2a 6c 65 66 74 4c 20 24 6e 61 6d 65 5d 20 h *leftL $name]
2cc00 7d 20 7b 0a 0a 09 69 66 20 7b 20 24 77 68 61 74 } {...if { $what
2cc10 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a 09 20 20 == "do" } {..
2cc20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39 5d 2b regexp {[0-9]+
2cc30 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20 20 73 } $name i.. s
2cc40 65 74 20 76 61 72 20 24 45 76 61 6c 45 6e 74 72 et var $EvalEntr
2cc50 69 65 73 28 24 6e 61 6d 65 29 0a 09 20 20 20 20 ies($name)..
2cc60 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 if { [string tri
2cc70 6d 20 24 76 61 72 5d 20 3d 3d 20 22 22 20 7d 20 m $var] == "" }
2cc80 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67 65 72 {...$RamDebugger
2cc90 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 ::EvalEntries($i
2cca0 2c 72 69 67 68 74 65 6e 74 72 79 4c 29 20 63 6f ,rightentryL) co
2ccb0 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a 09 09 73 nf -fg black...s
2ccc0 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a et RamDebugger::
2ccd0 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 EvalEntries($i,r
2cce0 69 67 68 74 4c 29 20 22 22 0a 09 09 72 65 74 75 ightL) ""...retu
2ccf0 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 rn.. }.. i
2cd00 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 f { $remoteserve
2cd10 72 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d rType == "gdb" }
2cd20 20 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 {...set remotes
2cd30 65 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 erver [lreplace
2cd40 24 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 $remoteserver 3
2cd50 33 20 5b 6c 69 73 74 20 67 65 74 64 61 74 61 20 3 [list getdata
2cd60 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
2cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2cd90 20 20 20 20 20 20 22 52 61 6d 44 65 62 75 67 67 "RamDebugg
2cda0 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 er::CheckEvalEnt
2cdb0 72 69 65 73 4c 20 72 65 73 20 24 6e 61 6d 65 22 riesL res $name"
2cdc0 5d 5d 0a 09 09 73 65 74 20 63 6f 6d 6d 20 22 6f ]]...set comm "o
2cdd0 75 74 70 75 74 20 24 76 61 72 5c 6e 22 0a 09 09 utput $var\n"...
2cde0 61 70 70 65 6e 64 20 63 6f 6d 6d 20 22 70 72 69 append comm "pri
2cdf0 6e 74 66 20 5c 22 46 49 4e 49 53 48 45 44 20 47 ntf \"FINISHED G
2ce00 45 54 44 41 54 41 5c 5c 6e 5c 22 22 0a 09 09 45 ETDATA\\n\""...E
2ce10 76 61 6c 52 65 6d 6f 74 65 20 24 63 6f 6d 6d 0a valRemote $comm.
2ce20 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a ..return.. }.
2ce30 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b 0a . set comm {.
2ce40 09 09 69 66 20 7b 20 5b 61 72 72 61 79 20 65 78 ..if { [array ex
2ce50 69 73 74 73 20 7b 56 41 52 7d 5d 20 7d 20 7b 0a ists {VAR}] } {.
2ce60 09 09 20 20 20 20 73 65 74 20 3a 3a 52 44 43 3a .. set ::RDC:
2ce70 3a 72 65 74 76 61 6c 20 5b 6c 69 73 74 20 61 72 :retval [list ar
2ce80 72 61 79 20 5b 61 72 72 61 79 20 67 65 74 20 7b ray [array get {
2ce90 56 41 52 7d 5d 5d 0a 09 09 7d 20 65 6c 73 65 69 VAR}]]...} elsei
2cea0 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
2ceb0 20 7b 56 41 52 7d 5d 20 7d 20 7b 0a 09 09 20 20 {VAR}] } {...
2cec0 20 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 set ::RDC::ret
2ced0 76 61 6c 20 5b 6c 69 73 74 20 76 61 72 69 61 62 val [list variab
2cee0 6c 65 20 5b 73 65 74 20 7b 56 41 52 7d 5d 5d 0a le [set {VAR}]].
2cef0 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 ..} else {...
2cf00 20 73 65 74 20 3a 3a 52 44 43 3a 3a 65 72 72 6f set ::RDC::erro
2cf10 72 49 6e 66 6f 20 24 3a 3a 65 72 72 6f 72 49 6e rInfo $::errorIn
2cf20 66 6f 0a 09 09 20 20 20 20 73 65 74 20 3a 3a 52 fo... set ::R
2cf30 44 43 3a 3a 65 72 72 20 5b 63 61 74 63 68 20 7b DC::err [catch {
2cf40 65 78 70 72 20 7b 56 41 52 7d 7d 20 3a 3a 52 44 expr {VAR}} ::RD
2cf50 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 69 66 C::val]... if
2cf60 20 7b 20 21 24 3a 3a 52 44 43 3a 3a 65 72 72 20 { !$::RDC::err
2cf70 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 73 65 } {... se
2cf80 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 61 6c 20 t ::RDC::retval
2cf90 5b 6c 69 73 74 20 65 78 70 72 20 24 3a 3a 52 44 [list expr $::RD
2cfa0 43 3a 3a 76 61 6c 5d 0a 09 09 20 20 20 20 7d 20 C::val]... }
2cfb0 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 else {...
2cfc0 20 73 65 74 20 3a 3a 52 44 43 3a 3a 72 65 74 76 set ::RDC::retv
2cfd0 61 6c 20 5b 6c 69 73 74 20 65 72 72 6f 72 20 5b al [list error [
2cfe0 5f 20 22 76 61 72 69 61 62 6c 65 20 6f 72 20 65 _ "variable or e
2cff0 78 70 72 20 27 56 41 52 27 20 64 6f 65 73 20 6e xpr 'VAR' does n
2d000 6f 74 20 65 78 69 73 74 22 5d 5d 0a 09 09 20 20 ot exist"]]...
2d010 20 20 20 20 20 20 73 65 74 20 3a 3a 65 72 72 6f set ::erro
2d020 72 49 6e 66 6f 20 24 3a 3a 52 44 43 3a 3a 65 72 rInfo $::RDC::er
2d030 72 6f 72 49 6e 66 6f 0a 09 09 20 20 20 20 7d 0a rorInfo... }.
2d040 09 09 7d 0a 09 09 73 65 74 20 3a 3a 52 44 43 3a ..}...set ::RDC:
2d050 3a 72 65 74 76 61 6c 0a 09 20 20 20 20 7d 0a 09 :retval.. }..
2d060 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 5b 73 74 set comm [st
2d070 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 56 ring map [list V
2d080 41 52 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 AR [string trim
2d090 24 76 61 72 5d 5d 20 24 63 6f 6d 6d 5d 0a 09 20 $var]] $comm]..
2d0a0 20 20 20 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65 reval -handle
2d0b0 72 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 r [list RamDebug
2d0c0 67 65 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e ger::CheckEvalEn
2d0d0 74 72 69 65 73 4c 20 72 65 73 20 24 6e 61 6d 65 triesL res $name
2d0e0 5d 20 24 63 6f 6d 6d 0a 09 7d 20 65 6c 73 65 20 ] $comm..} else
2d0f0 7b 0a 09 20 20 20 20 72 65 67 65 78 70 20 7b 5b {.. regexp {[
2d100 30 2d 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 0-9]+} $name i..
2d110 20 20 20 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 if { $remote
2d120 73 65 72 76 65 72 54 79 70 65 20 3d 3d 20 22 67 serverType == "g
2d130 64 62 22 20 7d 20 7b 0a 09 09 73 65 74 20 72 65 db" } {...set re
2d140 73 20 5b 6c 69 73 74 20 30 20 5b 6c 69 73 74 20 s [list 0 [list
2d150 76 61 72 69 61 62 6c 65 20 24 72 65 73 5d 5d 0a variable $res]].
2d160 09 20 20 20 20 7d 0a 09 20 20 20 20 66 6f 72 65 . }.. fore
2d170 61 63 68 20 22 74 79 70 65 20 76 61 6c 22 20 5b ach "type val" [
2d180 6c 69 6e 64 65 78 20 24 72 65 73 20 31 5d 20 62 lindex $res 1] b
2d190 72 65 61 6b 0a 09 20 20 20 20 69 66 20 7b 20 5b reak.. if { [
2d1a0 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 76 string length $v
2d1b0 61 6c 5d 20 3e 20 31 30 30 20 7d 20 7b 0a 09 09 al] > 100 } {...
2d1c0 73 65 74 20 76 61 6c 20 5b 73 74 72 69 6e 67 20 set val [string
2d1d0 72 61 6e 67 65 20 24 76 61 6c 20 30 20 39 36 5d range $val 0 96]
2d1e0 2e 2e 2e 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 ..... }..
2d1f0 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a set RamDebugger:
2d200 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c :EvalEntries($i,
2d210 72 69 67 68 74 4c 29 20 24 76 61 6c 0a 09 20 20 rightL) $val..
2d220 20 20 69 66 20 7b 20 24 74 79 70 65 20 3d 3d 20 if { $type ==
2d230 22 45 72 72 6f 72 22 20 7d 20 7b 0a 09 09 24 52 "Error" } {...$R
2d240 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c amDebugger::Eval
2d250 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 Entries($i,right
2d260 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20 2d 66 67 entryL) conf -fg
2d270 20 72 65 64 0a 09 20 20 20 20 7d 20 65 6c 73 65 red.. } else
2d280 20 7b 0a 09 09 24 52 61 6d 44 65 62 75 67 67 65 {...$RamDebugge
2d290 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 r::EvalEntries($
2d2a0 69 2c 72 69 67 68 74 65 6e 74 72 79 4c 29 20 63 i,rightentryL) c
2d2b0 6f 6e 66 20 2d 66 67 20 62 6c 61 63 6b 0a 09 20 onf -fg black..
2d2c0 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c }..}. } el
2d2d0 73 65 20 7b 0a 09 69 66 20 7b 20 24 77 68 61 74 se {..if { $what
2d2e0 20 3d 3d 20 22 64 6f 22 20 7d 20 7b 0a 09 20 20 == "do" } {..
2d2f0 20 20 72 65 67 65 78 70 20 7b 5b 30 2d 39 5d 2b regexp {[0-9]+
2d300 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 20 20 73 } $name i.. s
2d310 65 74 20 76 61 72 20 5b 73 74 72 69 6e 67 20 74 et var [string t
2d320 72 69 6d 20 24 45 76 61 6c 45 6e 74 72 69 65 73 rim $EvalEntries
2d330 28 24 69 2c 6c 65 66 74 4c 29 5d 0a 09 20 20 20 ($i,leftL)]..
2d340 20 69 66 20 7b 20 24 76 61 72 20 3d 3d 20 22 22 if { $var == ""
2d350 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 20 } { return }..
2d360 20 20 20 73 65 74 20 76 61 6c 75 65 20 5b 73 74 set value [st
2d370 72 69 6e 67 20 74 72 69 6d 20 24 45 76 61 6c 45 ring trim $EvalE
2d380 6e 74 72 69 65 73 28 24 6e 61 6d 65 29 5d 0a 0a ntries($name)]..
2d390 09 20 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f . if { $optio
2d3a0 6e 73 28 43 6f 6e 66 69 72 6d 4d 6f 64 69 66 79 ns(ConfirmModify
2d3b0 56 61 72 69 61 62 6c 65 29 20 7d 20 7b 0a 09 09 Variable) } {...
2d3c0 23 20 69 74 73 20 6e 65 63 65 73 73 61 72 79 20 # its necessary
2d3d0 74 6f 20 74 61 6b 65 20 6f 75 74 20 74 68 65 20 to take out the
2d3e0 66 6f 63 75 73 20 6f 75 74 20 62 69 6e 64 69 6e focus out bindin
2d3f0 67 20 74 6f 20 61 76 6f 69 64 20 69 6e 74 65 72 g to avoid inter
2d400 61 63 74 69 6f 6e 0a 09 09 23 20 77 69 74 68 20 action...# with
2d410 74 68 69 73 20 66 75 6e 63 0a 09 09 73 65 74 20 this func...set
2d420 63 6f 6d 6d 20 5b 62 69 6e 64 20 24 52 61 6d 44 comm [bind $RamD
2d430 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 ebugger::EvalEnt
2d440 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 ries($i,rightent
2d450 72 79 4c 29 20 3c 46 6f 63 75 73 4f 75 74 3e 5d ryL) <FocusOut>]
2d460 0a 09 09 62 69 6e 64 20 24 52 61 6d 44 65 62 75 ...bind $RamDebu
2d470 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 gger::EvalEntrie
2d480 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72 79 4c s($i,rightentryL
2d490 29 20 3c 46 6f 63 75 73 4f 75 74 3e 20 22 22 0a ) <FocusOut> "".
2d4a0 0a 09 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c ...set ret [Dial
2d4b0 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f ogWin::messageBo
2d4c0 78 20 2d 64 65 66 61 75 6c 74 20 6f 6b 20 2d 69 x -default ok -i
2d4d0 63 6f 6e 20 71 75 65 73 74 69 6f 6e 20 2d 6d 65 con question -me
2d4e0 73 73 61 67 65 20 5c 0a 09 09 20 20 20 20 20 20 ssage \...
2d4f0 20 20 20 20 20 20 20 5b 5f 20 22 41 72 65 20 79 [_ "Are y
2d500 6f 75 20 73 75 72 65 20 74 6f 20 63 68 61 6e 67 ou sure to chang
2d510 65 20 76 61 72 69 61 62 6c 65 20 27 25 73 27 20 e variable '%s'
2d520 74 6f 20 76 61 6c 75 65 20 27 25 73 27 3f 22 20 to value '%s'?"
2d530 24 76 61 72 20 24 76 61 6c 75 65 5d 20 5c 0a 09 $var $value] \..
2d540 09 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 74 . -t
2d550 69 74 6c 65 20 5b 5f 20 22 57 61 72 6e 69 6e 67 itle [_ "Warning
2d560 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63 65 "] -type okcance
2d570 6c 5d 0a 0a 09 09 62 69 6e 64 20 24 52 61 6d 44 l]....bind $RamD
2d580 65 62 75 67 67 65 72 3a 3a 45 76 61 6c 45 6e 74 ebugger::EvalEnt
2d590 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 ries($i,rightent
2d5a0 72 79 4c 29 20 3c 46 6f 63 75 73 4f 75 74 3e 20 ryL) <FocusOut>
2d5b0 24 63 6f 6d 6d 0a 0a 09 09 69 66 20 7b 20 24 72 $comm....if { $r
2d5c0 65 74 20 3d 3d 20 22 63 61 6e 63 65 6c 22 20 7d et == "cancel" }
2d5d0 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 20 20 20 { return }..
2d5e0 20 7d 0a 09 20 20 20 20 0a 09 20 20 20 20 69 66 }.. .. if
2d5f0 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 76 65 72 { $remoteserver
2d600 54 79 70 65 20 3d 3d 20 22 67 64 62 22 20 7d 20 Type == "gdb" }
2d610 7b 0a 09 09 73 65 74 20 72 65 6d 6f 74 65 73 65 {...set remotese
2d620 72 76 65 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 rver [lreplace $
2d630 72 65 6d 6f 74 65 73 65 72 76 65 72 20 33 20 33 remoteserver 3 3
2d640 20 73 65 74 76 61 72 69 61 62 6c 65 5d 0a 09 09 setvariable]...
2d650 45 76 61 6c 52 65 6d 6f 74 65 20 22 73 65 74 20 EvalRemote "set
2d660 76 61 72 69 61 62 6c 65 20 24 76 61 72 3d 24 76 variable $var=$v
2d670 61 6c 75 65 22 0a 09 09 72 65 74 75 72 6e 0a 09 alue"...return..
2d680 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 63 }.. set c
2d690 6f 6d 6d 20 5b 6c 69 73 74 20 73 65 74 20 24 76 omm [list set $v
2d6a0 61 72 20 24 76 61 6c 75 65 5d 0a 09 20 20 20 20 ar $value]..
2d6b0 72 65 76 61 6c 20 2d 68 61 6e 64 6c 65 72 20 5b reval -handler [
2d6c0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
2d6d0 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 69 ::CheckEvalEntri
2d6e0 65 73 4c 20 72 65 73 20 24 6e 61 6d 65 5d 20 24 esL res $name] $
2d6f0 63 6f 6d 6d 0a 0a 09 7d 20 65 6c 73 65 20 7b 0a comm...} else {.
2d700 09 20 20 20 20 72 65 67 65 78 70 20 7b 5b 30 2d . regexp {[0-
2d710 39 5d 2b 7d 20 24 6e 61 6d 65 20 69 0a 09 20 20 9]+} $name i..
2d720 20 20 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 set RamDebugge
2d730 72 3a 3a 45 76 61 6c 45 6e 74 72 69 65 73 28 24 r::EvalEntries($
2d740 69 2c 72 69 67 68 74 52 29 20 5b 6c 69 6e 64 65 i,rightR) [linde
2d750 78 20 24 72 65 73 20 31 5d 0a 09 20 20 20 20 73 x $res 1].. s
2d760 77 69 74 63 68 20 5b 6c 69 6e 64 65 78 20 24 72 witch [lindex $r
2d770 65 73 20 30 5d 20 7b 0a 09 09 30 20 7b 20 24 52 es 0] {...0 { $R
2d780 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 6c amDebugger::Eval
2d790 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 Entries($i,right
2d7a0 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20 2d 66 67 entryL) conf -fg
2d7b0 20 62 6c 61 63 6b 20 7d 0a 09 09 31 20 7b 20 24 black }...1 { $
2d7c0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 76 61 RamDebugger::Eva
2d7d0 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 lEntries($i,righ
2d7e0 74 65 6e 74 72 79 4c 29 20 63 6f 6e 66 20 2d 66 tentryL) conf -f
2d7f0 67 20 72 65 64 20 7d 0a 09 20 20 20 20 7d 0a 09 g red }.. }..
2d800 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 }. }.}..proc
2d810 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 57 61 69 RamDebugger::Wai
2d820 74 53 74 61 74 65 20 7b 20 77 68 61 74 20 7b 20 tState { what {
2d830 77 20 2e 20 7d 20 7d 20 7b 0a 20 20 20 20 76 61 w . } } {. va
2d840 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 riable text.
2d850 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62 6f 78 variable listbox
2d860 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 61 . variable Wa
2d870 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 73 itState_savecurs
2d880 6f 72 73 0a 0a 20 20 20 20 69 66 20 7b 20 24 77 ors.. if { $w
2d890 68 61 74 20 3d 3d 20 31 20 7d 20 7b 0a 09 69 66 hat == 1 } {..if
2d8a0 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
2d8b0 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 WaitState_savecu
2d8c0 72 73 6f 72 73 5d 20 7d 20 7b 20 72 65 74 75 72 rsors] } { retur
2d8d0 6e 20 7d 0a 09 73 65 74 20 57 61 69 74 53 74 61 n }..set WaitSta
2d8e0 74 65 5f 73 61 76 65 63 75 72 73 6f 72 73 20 22 te_savecursors "
2d8f0 22 0a 09 6c 61 70 70 65 6e 64 20 57 61 69 74 53 "..lappend WaitS
2d900 74 61 74 65 5f 73 61 76 65 63 75 72 73 6f 72 73 tate_savecursors
2d910 20 5b 24 74 65 78 74 20 63 67 65 74 20 2d 63 75 [$text cget -cu
2d920 72 73 6f 72 5d 0a 09 24 74 65 78 74 20 63 6f 6e rsor]..$text con
2d930 66 69 67 75 72 65 20 2d 63 75 72 73 6f 72 20 77 figure -cursor w
2d940 61 74 63 68 0a 09 69 66 20 7b 20 5b 77 69 6e 66 atch..if { [winf
2d950 6f 20 65 78 69 73 74 73 20 24 6c 69 73 74 62 6f o exists $listbo
2d960 78 5d 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 x] } {.. lapp
2d970 65 6e 64 20 57 61 69 74 53 74 61 74 65 5f 73 61 end WaitState_sa
2d980 76 65 63 75 72 73 6f 72 73 20 5b 24 6c 69 73 74 vecursors [$list
2d990 62 6f 78 20 63 67 65 74 20 2d 63 75 72 73 6f 72 box cget -cursor
2d9a0 5d 20 20 20 20 0a 09 20 20 20 20 24 6c 69 73 74 ] .. $list
2d9b0 62 6f 78 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 box configure -c
2d9c0 75 72 73 6f 72 20 77 61 74 63 68 0a 09 7d 0a 09 ursor watch..}..
2d9d0 6c 61 70 70 65 6e 64 20 57 61 69 74 53 74 61 74 lappend WaitStat
2d9e0 65 5f 73 61 76 65 63 75 72 73 6f 72 73 20 5b 24 e_savecursors [$
2d9f0 77 20 63 67 65 74 20 2d 63 75 72 73 6f 72 5d 20 w cget -cursor]
2da00 20 0a 09 24 77 20 63 6f 6e 66 69 67 75 72 65 20 ..$w configure
2da10 2d 63 75 72 73 6f 72 20 77 61 74 63 68 0a 09 69 -cursor watch..i
2da20 66 20 7b 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 f { [winfo tople
2da30 76 65 6c 20 24 77 5d 20 21 3d 20 24 77 20 7d 20 vel $w] != $w }
2da40 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 57 {.. lappend W
2da50 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 aitState_savecur
2da60 73 6f 72 73 20 5b 5b 77 69 6e 66 6f 20 74 6f 70 sors [[winfo top
2da70 6c 65 76 65 6c 20 24 77 5d 20 63 67 65 74 20 2d level $w] cget -
2da80 63 75 72 73 6f 72 5d 20 20 0a 09 20 20 20 20 5b cursor] .. [
2da90 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 winfo toplevel $
2daa0 77 5d 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 75 w] configure -cu
2dab0 72 73 6f 72 20 77 61 74 63 68 0a 09 7d 0a 20 20 rsor watch..}.
2dac0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 69 66 20 7b } else {..if {
2dad0 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 57 ![info exists W
2dae0 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 aitState_savecur
2daf0 73 6f 72 73 5d 20 7d 20 7b 20 72 65 74 75 72 6e sors] } { return
2db00 20 7d 0a 09 73 65 74 20 69 64 78 20 2d 31 0a 09 }..set idx -1..
2db10 24 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 $text configure
2db20 2d 63 75 72 73 6f 72 20 5b 6c 69 6e 64 65 78 20 -cursor [lindex
2db30 24 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 63 $WaitState_savec
2db40 75 72 73 6f 72 73 20 5b 69 6e 63 72 20 69 64 78 ursors [incr idx
2db50 5d 5d 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20 ]]..if { [winfo
2db60 65 78 69 73 74 73 20 24 6c 69 73 74 62 6f 78 5d exists $listbox]
2db70 20 7d 20 7b 0a 09 20 20 20 20 24 6c 69 73 74 62 } {.. $listb
2db80 6f 78 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 75 ox configure -cu
2db90 72 73 6f 72 20 5b 6c 69 6e 64 65 78 20 24 57 61 rsor [lindex $Wa
2dba0 69 74 53 74 61 74 65 5f 73 61 76 65 63 75 72 73 itState_savecurs
2dbb0 6f 72 73 20 5b 69 6e 63 72 20 69 64 78 5d 5d 0a ors [incr idx]].
2dbc0 09 7d 0a 09 24 77 20 63 6f 6e 66 69 67 75 72 65 .}..$w configure
2dbd0 20 2d 63 75 72 73 6f 72 20 5b 6c 69 6e 64 65 78 -cursor [lindex
2dbe0 20 24 57 61 69 74 53 74 61 74 65 5f 73 61 76 65 $WaitState_save
2dbf0 63 75 72 73 6f 72 73 20 5b 69 6e 63 72 20 69 64 cursors [incr id
2dc00 78 5d 5d 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f x]]..if { [winfo
2dc10 20 74 6f 70 6c 65 76 65 6c 20 24 77 5d 20 21 3d toplevel $w] !=
2dc20 20 24 77 20 7d 20 7b 0a 09 20 20 20 20 5b 77 69 $w } {.. [wi
2dc30 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 77 5d nfo toplevel $w]
2dc40 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 75 72 73 configure -curs
2dc50 6f 72 20 5b 6c 69 6e 64 65 78 20 24 57 61 69 74 or [lindex $Wait
2dc60 53 74 61 74 65 5f 73 61 76 65 63 75 72 73 6f 72 State_savecursor
2dc70 73 20 5b 69 6e 63 72 20 69 64 78 5d 5d 0a 09 7d s [incr idx]]..}
2dc80 0a 09 75 6e 73 65 74 20 57 61 69 74 53 74 61 74 ..unset WaitStat
2dc90 65 5f 73 61 76 65 63 75 72 73 6f 72 73 0a 20 20 e_savecursors.
2dca0 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 7d }. update.}
2dcb0 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
2dcc0 65 72 3a 3a 52 65 64 65 66 69 6e 65 5f 64 65 62 er::Redefine_deb
2dcd0 75 67 5f 6c 6f 67 20 7b 7d 20 7b 0a 20 20 20 20 ug_log {} {.
2dce0 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c ViewOnlyTextOrAl
2dcf0 6c 20 2d 66 6f 72 63 65 5f 61 6c 6c 0a 20 20 20 l -force_all.
2dd00 20 54 65 78 74 4f 75 74 52 61 69 73 65 0a 20 20 TextOutRaise.
2dd10 20 20 54 65 78 74 4f 75 74 43 6c 65 61 72 0a 20 TextOutClear.
2dd20 20 20 20 70 72 6f 63 20 3a 3a 6d 79 6c 6f 67 3a proc ::mylog:
2dd30 3a 6c 6f 67 20 7b 20 61 72 67 73 20 7d 20 7b 0a :log { args } {.
2dd40 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 .RamDebugger::Te
2dd50 78 74 4f 75 74 49 6e 73 65 72 74 20 22 5b 6c 69 xtOutInsert "[li
2dd60 6e 64 65 78 20 24 61 72 67 73 20 30 5d 5c 6e 22 ndex $args 0]\n"
2dd70 0a 09 75 70 64 61 74 65 20 69 64 6c 65 74 61 73 ..update idletas
2dd80 6b 73 0a 20 20 20 20 7d 0a 20 20 20 20 70 72 6f ks. }. pro
2dd90 63 20 3a 3a 6d 79 6c 6f 67 3a 3a 64 65 62 75 67 c ::mylog::debug
2dda0 20 7b 20 61 72 67 73 20 7d 20 7b 7d 0a 7d 0a 0a { args } {}.}..
2ddb0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
2ddc0 3a 3a 54 65 78 74 4f 75 74 43 6c 65 61 72 20 7b ::TextOutClear {
2ddd0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
2dde0 20 74 65 78 74 4f 55 54 0a 0a 20 20 20 20 69 66 textOUT.. if
2ddf0 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 { ![info exists
2de00 20 74 65 78 74 4f 55 54 5d 20 7c 7c 20 21 5b 77 textOUT] || ![w
2de10 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 65 78 info exists $tex
2de20 74 4f 55 54 5d 20 7d 20 7b 20 72 65 74 75 72 6e tOUT] } { return
2de30 20 7d 0a 0a 20 20 20 20 24 74 65 78 74 4f 55 54 }.. $textOUT
2de40 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f 72 conf -state nor
2de50 6d 61 6c 0a 20 20 20 20 24 74 65 78 74 4f 55 54 mal. $textOUT
2de60 20 64 65 6c 20 31 2e 30 20 65 6e 64 0a 20 20 20 del 1.0 end.
2de70 20 24 74 65 78 74 4f 55 54 20 63 6f 6e 66 20 2d $textOUT conf -
2de80 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 0a 7d state disabled.}
2de90 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
2dea0 65 72 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 er::TextOutInser
2deb0 74 20 7b 20 64 61 74 61 20 7d 20 7b 0a 20 20 20 t { data } {.
2dec0 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 4f 55 variable textOU
2ded0 54 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e T.. if { ![in
2dee0 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 4f 55 fo exists textOU
2def0 54 5d 20 7c 7c 20 21 5b 77 69 6e 66 6f 20 65 78 T] || ![winfo ex
2df00 69 73 74 73 20 24 74 65 78 74 4f 55 54 5d 20 7d ists $textOUT] }
2df10 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
2df20 20 66 6f 72 65 61 63 68 20 22 2d 20 79 65 6e 64 foreach "- yend
2df30 22 20 5b 24 74 65 78 74 4f 55 54 20 79 76 69 65 " [$textOUT yvie
2df40 77 5d 20 62 72 65 61 6b 0a 20 20 20 20 24 74 65 w] break. $te
2df50 78 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74 xtOUT conf -stat
2df60 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 66 6f 72 e normal. for
2df70 65 61 63 68 20 69 20 5b 3a 3a 74 65 78 74 75 74 each i [::textut
2df80 69 6c 3a 3a 73 70 6c 69 74 78 20 20 24 64 61 74 il::splitx $dat
2df90 61 20 7b 28 5c 6e 29 28 3f 21 24 29 7d 5d 20 7b a {(\n)(?!$)}] {
2dfa0 0a 09 54 65 78 74 49 6e 73 65 72 74 41 6e 64 57 ..TextInsertAndW
2dfb0 72 61 70 20 24 74 65 78 74 4f 55 54 20 22 24 69 rap $textOUT "$i
2dfc0 22 20 32 30 30 0a 09 69 66 20 7b 20 5b 69 6e 66 " 200..if { [inf
2dfd0 6f 20 63 6f 6d 6d 61 6e 64 73 20 74 6b 63 6f 6e o commands tkcon
2dfe0 5f 70 75 74 73 5d 20 21 3d 20 22 22 20 7d 20 7b _puts] != "" } {
2dff0 20 63 61 74 63 68 20 7b 20 74 6b 63 6f 6e 5f 70 catch { tkcon_p
2e000 75 74 73 20 22 24 69 22 20 7d 20 7d 0a 20 20 20 uts "$i" } }.
2e010 20 7d 0a 0a 20 20 20 20 24 74 65 78 74 4f 55 54 }.. $textOUT
2e020 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 conf -state dis
2e030 61 62 6c 65 64 0a 20 20 20 20 69 66 20 7b 20 24 abled. if { $
2e040 79 65 6e 64 20 3d 3d 20 31 20 7d 20 7b 20 24 74 yend == 1 } { $t
2e050 65 78 74 4f 55 54 20 79 76 69 65 77 20 6d 6f 76 extOUT yview mov
2e060 65 74 6f 20 31 20 7d 0a 7d 0a 0a 70 72 6f 63 20 eto 1 }.}..proc
2e070 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
2e080 74 4f 75 74 49 6e 73 65 72 74 52 65 64 20 7b 20 tOutInsertRed {
2e090 64 61 74 61 20 7d 20 7b 0a 20 20 20 20 76 61 72 data } {. var
2e0a0 69 61 62 6c 65 20 74 65 78 74 4f 55 54 0a 0a 20 iable textOUT..
2e0b0 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 if { ![info e
2e0c0 78 69 73 74 73 20 74 65 78 74 4f 55 54 5d 20 7c xists textOUT] |
2e0d0 7c 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 | ![winfo exists
2e0e0 20 24 74 65 78 74 4f 55 54 5d 20 7d 20 7b 20 72 $textOUT] } { r
2e0f0 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 66 6f 72 eturn }.. for
2e100 65 61 63 68 20 22 2d 20 79 65 6e 64 22 20 5b 24 each "- yend" [$
2e110 74 65 78 74 4f 55 54 20 79 76 69 65 77 5d 20 62 textOUT yview] b
2e120 72 65 61 6b 0a 20 20 20 20 24 74 65 78 74 4f 55 reak. $textOU
2e130 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e 6f T conf -state no
2e140 72 6d 61 6c 0a 20 20 20 20 66 6f 72 65 61 63 68 rmal. foreach
2e150 20 69 20 5b 3a 3a 74 65 78 74 75 74 69 6c 3a 3a i [::textutil::
2e160 73 70 6c 69 74 78 20 20 24 64 61 74 61 20 7b 28 splitx $data {(
2e170 5c 6e 29 28 3f 21 24 29 7d 5d 20 7b 0a 09 54 65 \n)(?!$)}] {..Te
2e180 78 74 49 6e 73 65 72 74 41 6e 64 57 72 61 70 20 xtInsertAndWrap
2e190 24 74 65 78 74 4f 55 54 20 22 24 69 22 20 32 30 $textOUT "$i" 20
2e1a0 30 20 72 65 64 0a 09 69 66 20 7b 20 5b 69 6e 66 0 red..if { [inf
2e1b0 6f 20 63 6f 6d 6d 61 6e 64 73 20 74 6b 63 6f 6e o commands tkcon
2e1c0 5f 70 75 74 73 5d 20 21 3d 20 22 22 20 7d 20 7b _puts] != "" } {
2e1d0 20 63 61 74 63 68 20 7b 20 74 6b 63 6f 6e 5f 70 catch { tkcon_p
2e1e0 75 74 73 20 73 74 64 65 72 72 20 22 24 69 22 20 uts stderr "$i"
2e1f0 7d 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 24 74 } }. }. $t
2e200 65 78 74 4f 55 54 20 74 61 67 20 63 6f 6e 66 69 extOUT tag confi
2e210 67 75 72 65 20 72 65 64 20 2d 66 6f 72 65 67 72 gure red -foregr
2e220 6f 75 6e 64 20 72 65 64 0a 20 20 20 20 24 74 65 ound red. $te
2e230 78 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 61 74 xtOUT conf -stat
2e240 65 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 69 e disabled. i
2e250 66 20 7b 20 24 79 65 6e 64 20 3d 3d 20 31 20 7d f { $yend == 1 }
2e260 20 7b 20 24 74 65 78 74 4f 55 54 20 79 76 69 65 { $textOUT yvie
2e270 77 20 6d 6f 76 65 74 6f 20 31 20 7d 0a 7d 0a 0a w moveto 1 }.}..
2e280 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
2e290 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 72 74 42 ::TextOutInsertB
2e2a0 6c 75 65 20 7b 20 64 61 74 61 20 7d 20 7b 0a 20 lue { data } {.
2e2b0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
2e2c0 4f 55 54 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b OUT.. if { ![
2e2d0 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 78 74 info exists text
2e2e0 4f 55 54 5d 20 7c 7c 20 21 5b 77 69 6e 66 6f 20 OUT] || ![winfo
2e2f0 65 78 69 73 74 73 20 24 74 65 78 74 4f 55 54 5d exists $textOUT]
2e300 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 } { return }..
2e310 20 20 20 66 6f 72 65 61 63 68 20 22 2d 20 79 65 foreach "- ye
2e320 6e 64 22 20 5b 24 74 65 78 74 4f 55 54 20 79 76 nd" [$textOUT yv
2e330 69 65 77 5d 20 62 72 65 61 6b 0a 20 20 20 20 24 iew] break. $
2e340 74 65 78 74 4f 55 54 20 63 6f 6e 66 20 2d 73 74 textOUT conf -st
2e350 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 66 ate normal. f
2e360 6f 72 65 61 63 68 20 69 20 5b 3a 3a 74 65 78 74 oreach i [::text
2e370 75 74 69 6c 3a 3a 73 70 6c 69 74 78 20 20 24 64 util::splitx $d
2e380 61 74 61 20 7b 28 5c 6e 29 28 3f 21 24 29 7d 5d ata {(\n)(?!$)}]
2e390 20 7b 0a 09 54 65 78 74 49 6e 73 65 72 74 41 6e {..TextInsertAn
2e3a0 64 57 72 61 70 20 24 74 65 78 74 4f 55 54 20 22 dWrap $textOUT "
2e3b0 24 69 22 20 32 30 30 20 62 6c 75 65 0a 20 20 20 $i" 200 blue.
2e3c0 20 7d 0a 20 20 20 20 24 74 65 78 74 4f 55 54 20 }. $textOUT
2e3d0 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 62 6c tag configure bl
2e3e0 75 65 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 62 ue -foreground b
2e3f0 6c 75 65 0a 20 20 20 20 24 74 65 78 74 4f 55 54 lue. $textOUT
2e400 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 69 73 conf -state dis
2e410 61 62 6c 65 64 0a 20 20 20 20 69 66 20 7b 20 24 abled. if { $
2e420 79 65 6e 64 20 3d 3d 20 31 20 7d 20 7b 20 24 74 yend == 1 } { $t
2e430 65 78 74 4f 55 54 20 79 76 69 65 77 20 6d 6f 76 extOUT yview mov
2e440 65 74 6f 20 31 20 7d 0a 7d 0a 0a 70 72 6f 63 20 eto 1 }.}..proc
2e450 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
2e460 74 4f 75 74 52 61 69 73 65 44 6f 20 7b 20 70 61 tOutRaiseDo { pa
2e470 6e 65 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 ne } {. varia
2e480 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 23 20 20 ble options..#
2e490 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 if { [info ex
2e4a0 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 61 75 74 ists options(aut
2e4b0 6f 5f 72 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 o_raise_stack_tr
2e4c0 61 63 65 29 5d 20 26 26 20 24 6f 70 74 69 6f 6e ace)] && $option
2e4d0 73 28 61 75 74 6f 5f 72 61 69 73 65 5f 73 74 61 s(auto_raise_sta
2e4e0 63 6b 5f 74 72 61 63 65 29 20 7d 20 7b 0a 23 20 ck_trace) } {.#
2e4f0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b 20 catch {
2e500 24 70 61 6e 65 20 72 61 69 73 65 20 6f 75 74 70 $pane raise outp
2e510 75 74 20 7d 0a 23 20 20 20 20 20 7d 0a 20 20 20 ut }.# }.
2e520 20 63 61 74 63 68 20 7b 20 24 70 61 6e 65 20 72 catch { $pane r
2e530 61 69 73 65 20 6f 75 74 70 75 74 20 7d 0a 7d 0a aise output }.}.
2e540 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
2e550 72 3a 3a 54 65 78 74 43 6f 6d 70 47 65 74 20 7b r::TextCompGet {
2e560 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
2e570 20 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 69 textCOMP.. i
2e580 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 f { ![info exist
2e590 73 20 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20 21 s textCOMP] || !
2e5a0 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 74 [winfo exists $t
2e5b0 65 78 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65 74 extCOMP] } { ret
2e5c0 75 72 6e 20 22 22 20 7d 0a 20 20 20 20 72 65 74 urn "" }. ret
2e5d0 75 72 6e 20 5b 24 74 65 78 74 43 4f 4d 50 20 67 urn [$textCOMP g
2e5e0 65 74 20 31 2e 30 20 65 6e 64 2d 31 63 5d 0a 7d et 1.0 end-1c].}
2e5f0 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
2e600 65 72 3a 3a 54 65 78 74 43 6f 6d 70 43 6c 65 61 er::TextCompClea
2e610 72 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 r {} {. varia
2e620 62 6c 65 20 74 65 78 74 43 4f 4d 50 0a 0a 20 20 ble textCOMP..
2e630 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 if { ![info ex
2e640 69 73 74 73 20 74 65 78 74 43 4f 4d 50 5d 20 7c ists textCOMP] |
2e650 7c 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 | ![winfo exists
2e660 20 24 74 65 78 74 43 4f 4d 50 5d 20 7d 20 7b 20 $textCOMP] } {
2e670 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 24 74 return }.. $t
2e680 65 78 74 43 4f 4d 50 20 63 6f 6e 66 20 2d 73 74 extCOMP conf -st
2e690 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 24 ate normal. $
2e6a0 74 65 78 74 43 4f 4d 50 20 64 65 6c 20 31 2e 30 textCOMP del 1.0
2e6b0 20 65 6e 64 0a 20 20 20 20 24 74 65 78 74 43 4f end. $textCO
2e6c0 4d 50 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 MP conf -state d
2e6d0 69 73 61 62 6c 65 64 0a 7d 0a 0a 70 72 6f 63 20 isabled.}..proc
2e6e0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
2e6f0 74 49 6e 73 65 72 74 41 6e 64 57 72 61 70 20 7b tInsertAndWrap {
2e700 20 74 65 78 74 20 64 61 74 61 20 7b 20 6d 61 78 text data { max
2e710 6c 65 6e 20 38 30 20 7d 20 7b 20 74 61 67 20 22 len 80 } { tag "
2e720 22 20 7d 20 7d 20 7b 0a 0a 20 20 20 20 73 65 74 " } } {.. set
2e730 20 74 6f 6c 65 72 61 6e 63 65 20 32 30 0a 20 20 tolerance 20.
2e740 20 20 69 66 20 7b 20 24 6d 61 78 6c 65 6e 20 3c if { $maxlen <
2e750 20 33 30 20 7d 20 7b 20 73 65 74 20 74 6f 6c 65 30 } { set tole
2e760 72 61 6e 63 65 20 35 20 7d 0a 20 20 20 20 77 68 rance 5 }. wh
2e770 69 6c 65 20 31 20 7b 0a 09 66 6f 72 65 61 63 68 ile 1 {..foreach
2e780 20 22 6c 69 6e 65 20 70 6f 73 22 20 5b 73 63 61 "line pos" [sca
2e790 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 65 n [$text index e
2e7a0 6e 64 5d 20 22 25 64 2e 25 64 22 5d 20 62 72 65 nd] "%d.%d"] bre
2e7b0 61 6b 0a 09 69 66 20 7b 20 24 70 6f 73 2b 5b 73 ak..if { $pos+[s
2e7c0 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 64 61 tring length $da
2e7d0 74 61 5d 20 3c 3d 20 24 6d 61 78 6c 65 6e 20 7d ta] <= $maxlen }
2e7e0 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 74 61 {.. if { $ta
2e7f0 67 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 24 74 g == "" } {...$t
2e800 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20 24 ext insert end $
2e810 64 61 74 61 0a 09 20 20 20 20 7d 20 65 6c 73 65 data.. } else
2e820 20 7b 0a 09 09 24 74 65 78 74 20 69 6e 73 65 72 {...$text inser
2e830 74 20 65 6e 64 20 24 64 61 74 61 20 24 74 61 67 t end $data $tag
2e840 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 62 72 65 .. }.. bre
2e850 61 6b 0a 09 7d 0a 09 73 65 74 20 66 6f 75 6e 64 ak..}..set found
2e860 20 30 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 0..for { set i
2e870 5b 65 78 70 72 20 24 6d 61 78 6c 65 6e 2d 24 70 [expr $maxlen-$p
2e880 6f 73 5d 20 7d 20 7b 20 24 69 20 3e 3d 20 24 6d os] } { $i >= $m
2e890 61 78 6c 65 6e 2d 24 70 6f 73 2d 24 74 6f 6c 65 axlen-$pos-$tole
2e8a0 72 61 6e 63 65 20 7d 20 7b 20 69 6e 63 72 20 69 rance } { incr i
2e8b0 20 2d 31 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 -1 } {.. if
2e8c0 7b 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 { [string index
2e8d0 24 64 61 74 61 20 24 69 5d 20 3d 3d 20 22 20 22 $data $i] == " "
2e8e0 20 7d 20 7b 0a 09 09 73 65 74 20 66 6f 75 6e 64 } {...set found
2e8f0 20 31 0a 09 09 62 72 65 61 6b 0a 09 20 20 20 20 1...break..
2e900 7d 0a 09 7d 0a 09 69 66 20 7b 20 24 66 6f 75 6e }..}..if { $foun
2e910 64 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 d } {.. if {
2e920 24 74 61 67 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 $tag == "" } {..
2e930 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 6e .$text insert en
2e940 64 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 d "[string range
2e950 20 24 64 61 74 61 20 30 20 24 69 5d 5c 6e 20 20 $data 0 $i]\n
2e960 22 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ".. } else {.
2e970 09 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 ..$text insert e
2e980 6e 64 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 nd "[string rang
2e990 65 20 24 64 61 74 61 20 30 20 24 69 5d 5c 6e 20 e $data 0 $i]\n
2e9a0 20 22 20 24 74 61 67 20 20 20 20 20 20 20 20 20 " $tag
2e9b0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 .. }.. set
2e9c0 20 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 61 data [string ra
2e9d0 6e 67 65 20 24 64 61 74 61 20 5b 65 78 70 72 20 nge $data [expr
2e9e0 24 69 2b 31 5d 20 65 6e 64 5d 0a 09 7d 20 65 6c $i+1] end]..} el
2e9f0 73 65 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 se {.. if { $
2ea00 74 61 67 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 tag == "" } {...
2ea10 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64 $text insert end
2ea20 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 "[string range
2ea30 24 64 61 74 61 20 30 20 5b 65 78 70 72 20 24 6d $data 0 [expr $m
2ea40 61 78 6c 65 6e 2d 24 70 6f 73 5d 5d 5c 6e 20 20 axlen-$pos]]\n
2ea50 22 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ".. } else {.
2ea60 09 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 ..$text insert e
2ea70 6e 64 20 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 nd "[string rang
2ea80 65 20 24 64 61 74 61 20 30 20 5b 65 78 70 72 20 e $data 0 [expr
2ea90 24 6d 61 78 6c 65 6e 2d 24 70 6f 73 5d 5d 5c 6e $maxlen-$pos]]\n
2eaa0 20 20 22 20 24 74 61 67 0a 09 20 20 20 20 7d 0a " $tag.. }.
2eab0 09 20 20 20 20 73 65 74 20 64 61 74 61 20 5b 73 . set data [s
2eac0 74 72 69 6e 67 20 72 61 6e 67 65 20 24 64 61 74 tring range $dat
2ead0 61 20 5b 65 78 70 72 20 24 6d 61 78 6c 65 6e 2d a [expr $maxlen-
2eae0 24 70 6f 73 2b 31 5d 20 65 6e 64 5d 0a 09 7d 0a $pos+1] end]..}.
2eaf0 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 }.}..proc Ra
2eb00 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 mDebugger::TextC
2eb10 6f 6d 70 49 6e 73 65 72 74 20 7b 20 64 61 74 61 ompInsert { data
2eb20 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
2eb30 65 20 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 e textCOMP..
2eb40 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 if { ![info exis
2eb50 74 73 20 74 65 78 74 43 4f 4d 50 5d 20 7c 7c 20 ts textCOMP] ||
2eb60 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 ![winfo exists $
2eb70 74 65 78 74 43 4f 4d 50 5d 20 7d 20 7b 20 72 65 textCOMP] } { re
2eb80 74 75 72 6e 20 7d 0a 0a 20 20 20 20 66 6f 72 65 turn }.. fore
2eb90 61 63 68 20 22 2d 20 79 65 6e 64 22 20 5b 24 74 ach "- yend" [$t
2eba0 65 78 74 43 4f 4d 50 20 79 76 69 65 77 5d 20 62 extCOMP yview] b
2ebb0 72 65 61 6b 0a 20 20 20 20 24 74 65 78 74 43 4f reak. $textCO
2ebc0 4d 50 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 6e MP conf -state n
2ebd0 6f 72 6d 61 6c 0a 20 20 20 20 54 65 78 74 49 6e ormal. TextIn
2ebe0 73 65 72 74 41 6e 64 57 72 61 70 20 24 74 65 78 sertAndWrap $tex
2ebf0 74 43 4f 4d 50 20 24 64 61 74 61 20 31 36 30 0a tCOMP $data 160.
2ec00 20 20 20 20 24 74 65 78 74 43 4f 4d 50 20 63 6f $textCOMP co
2ec10 6e 66 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c nf -state disabl
2ec20 65 64 0a 20 20 20 20 69 66 20 7b 20 24 79 65 6e ed. if { $yen
2ec30 64 20 3d 3d 20 31 20 7d 20 7b 20 24 74 65 78 74 d == 1 } { $text
2ec40 43 4f 4d 50 20 79 76 69 65 77 20 6d 6f 76 65 74 COMP yview movet
2ec50 6f 20 31 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 o 1 }.}..proc Ra
2ec60 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 mDebugger::TextC
2ec70 6f 6d 70 49 6e 73 65 72 74 52 65 64 20 7b 20 64 ompInsertRed { d
2ec80 61 74 61 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 ata } {. vari
2ec90 61 62 6c 65 20 74 65 78 74 43 4f 4d 50 0a 0a 20 able textCOMP..
2eca0 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 if { ![info e
2ecb0 78 69 73 74 73 20 74 65 78 74 43 4f 4d 50 5d 20 xists textCOMP]
2ecc0 7c 7c 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 74 || ![winfo exist
2ecd0 73 20 24 74 65 78 74 43 4f 4d 50 5d 20 7d 20 7b s $textCOMP] } {
2ece0 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 66 return }.. f
2ecf0 6f 72 65 61 63 68 20 22 2d 20 79 65 6e 64 22 20 oreach "- yend"
2ed00 5b 24 74 65 78 74 43 4f 4d 50 20 79 76 69 65 77 [$textCOMP yview
2ed10 5d 20 62 72 65 61 6b 0a 20 20 20 20 24 74 65 78 ] break. $tex
2ed20 74 43 4f 4d 50 20 63 6f 6e 66 20 2d 73 74 61 74 tCOMP conf -stat
2ed30 65 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 24 74 65 e normal. $te
2ed40 78 74 43 4f 4d 50 20 69 6e 73 20 65 6e 64 20 24 xtCOMP ins end $
2ed50 64 61 74 61 20 72 65 64 0a 20 20 20 20 24 74 65 data red. $te
2ed60 78 74 43 4f 4d 50 20 74 61 67 20 63 6f 6e 66 69 xtCOMP tag confi
2ed70 67 75 72 65 20 72 65 64 20 2d 66 6f 72 65 67 72 gure red -foregr
2ed80 6f 75 6e 64 20 72 65 64 0a 20 20 20 20 24 74 65 ound red. $te
2ed90 78 74 43 4f 4d 50 20 63 6f 6e 66 20 2d 73 74 61 xtCOMP conf -sta
2eda0 74 65 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 te disabled.
2edb0 69 66 20 7b 20 24 79 65 6e 64 20 3d 3d 20 31 20 if { $yend == 1
2edc0 7d 20 7b 20 24 74 65 78 74 43 4f 4d 50 20 79 76 } { $textCOMP yv
2edd0 69 65 77 20 6d 6f 76 65 74 6f 20 31 20 7d 0a 7d iew moveto 1 }.}
2ede0 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 ...proc RamDebug
2edf0 67 65 72 3a 3a 50 72 6f 67 72 65 73 73 56 61 72 ger::ProgressVar
2ee00 20 7b 20 76 61 6c 75 65 20 7b 20 63 61 6e 73 74 { value { canst
2ee10 6f 70 20 30 20 7d 20 7d 20 7b 0a 20 20 20 20 76 op 0 } } {. v
2ee20 61 72 69 61 62 6c 65 20 70 72 6f 67 72 65 73 73 ariable progress
2ee30 76 61 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 var. variable
2ee40 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 text. variab
2ee50 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a 20 20 20 le mainframe.
2ee60 20 76 61 72 69 61 62 6c 65 20 6c 61 62 65 6c 5f variable label_
2ee70 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 0a for_ProgressVar.
2ee80 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f . if { ![info
2ee90 20 65 78 69 73 74 73 20 6c 61 62 65 6c 5f 66 6f exists label_fo
2eea0 72 5f 50 72 6f 67 72 65 73 73 56 61 72 5d 20 7d r_ProgressVar] }
2eeb0 20 7b 20 73 65 74 20 6c 61 62 65 6c 5f 66 6f 72 { set label_for
2eec0 5f 50 72 6f 67 72 65 73 73 56 61 72 20 22 22 20 _ProgressVar ""
2eed0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 }.. if { [inf
2eee0 6f 20 65 78 69 73 74 73 20 70 72 6f 67 72 65 73 o exists progres
2eef0 73 76 61 72 5d 20 26 26 20 24 70 72 6f 67 72 65 svar] && $progre
2ef00 73 73 76 61 72 20 3d 3d 20 2d 32 20 7d 20 7b 0a ssvar == -2 } {.
2ef10 09 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 .set RamDebugger
2ef20 3a 3a 70 72 6f 67 72 65 73 73 76 61 72 20 2d 31 ::progressvar -1
2ef30 0a 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 ..if { [winfo ex
2ef40 69 73 74 73 20 24 6c 61 62 65 6c 5f 66 6f 72 5f ists $label_for_
2ef50 50 72 6f 67 72 65 73 73 56 61 72 5d 20 7d 20 7b ProgressVar] } {
2ef60 20 64 65 73 74 72 6f 79 20 24 6c 61 62 65 6c 5f destroy $label_
2ef70 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 20 for_ProgressVar
2ef80 7d 0a 09 65 72 72 6f 72 20 5b 5f 20 22 53 74 6f }..error [_ "Sto
2ef90 70 20 61 74 20 75 73 65 72 20 64 65 6d 61 6e 64 p at user demand
2efa0 22 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 "]. }.. se
2efb0 74 20 70 72 6f 67 72 65 73 73 76 61 72 20 24 76 t progressvar $v
2efc0 61 6c 75 65 0a 0a 20 20 20 20 69 66 20 7b 20 24 alue.. if { $
2efd0 63 61 6e 73 74 6f 70 20 3d 3d 20 31 20 26 26 20 canstop == 1 &&
2efe0 24 76 61 6c 75 65 20 3d 3d 20 30 20 7d 20 7b 0a $value == 0 } {.
2eff0 09 69 66 20 7b 20 5b 77 69 6e 66 6f 20 65 78 69 .if { [winfo exi
2f000 73 74 73 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 sts $label_for_P
2f010 72 6f 67 72 65 73 73 56 61 72 5d 20 7d 20 7b 20 rogressVar] } {
2f020 64 65 73 74 72 6f 79 20 24 6c 61 62 65 6c 5f 66 destroy $label_f
2f030 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 20 7d or_ProgressVar }
2f040 0a 0a 09 73 65 74 20 6c 61 62 65 6c 5f 66 6f 72 ...set label_for
2f050 5f 50 72 6f 67 72 65 73 73 56 61 72 20 5b 24 6d _ProgressVar [$m
2f060 61 69 6e 66 72 61 6d 65 20 61 64 64 69 6e 64 69 ainframe addindi
2f070 63 61 74 6f 72 20 2d 74 65 78 74 20 5b 5f 20 22 cator -text [_ "
2f080 57 61 69 74 20 70 6c 65 61 73 65 22 5d 2e 2e 2e Wait please"]...
2f090 5d 0a 09 62 69 6e 64 74 61 67 73 20 24 6c 61 62 ]..bindtags $lab
2f0a0 65 6c 5f 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 el_for_ProgressV
2f0b0 61 72 20 5b 6c 69 73 74 20 24 6c 61 62 65 6c 5f ar [list $label_
2f0c0 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 5d for_ProgressVar]
2f0d0 0a 09 66 6f 63 75 73 20 24 6c 61 62 65 6c 5f 66 ..focus $label_f
2f0e0 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 0a 09 or_ProgressVar..
2f0f0 23 20 63 61 74 63 68 20 69 73 20 6e 65 63 65 73 # catch is neces
2f100 73 61 72 79 20 62 65 63 61 75 73 65 20 69 74 20 sary because it
2f110 66 61 69 6c 73 20 69 6e 20 4c 69 6e 75 78 20 28 fails in Linux (
2f120 69 74 20 73 61 79 73 20 77 69 6e 64 6f 77 20 6e it says window n
2f130 65 65 64 73 20 74 6f 20 62 65 20 76 69 65 77 61 eeds to be viewa
2f140 62 6c 65 29 0a 09 63 61 74 63 68 20 7b 67 72 61 ble)..catch {gra
2f150 62 20 2d 67 6c 6f 62 61 6c 20 24 6c 61 62 65 6c b -global $label
2f160 5f 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 _for_ProgressVar
2f170 7d 0a 0a 09 62 69 6e 64 20 24 6c 61 62 65 6c 5f }...bind $label_
2f180 66 6f 72 5f 50 72 6f 67 72 65 73 73 56 61 72 20 for_ProgressVar
2f190 3c 45 73 63 61 70 65 3e 20 22 73 65 74 20 52 61 <Escape> "set Ra
2f1a0 6d 44 65 62 75 67 67 65 72 3a 3a 70 72 6f 67 72 mDebugger::progr
2f1b0 65 73 73 76 61 72 20 2d 32 22 0a 20 20 20 20 7d essvar -2". }
2f1c0 0a 0a 20 20 20 20 69 66 20 7b 20 24 76 61 6c 75 .. if { $valu
2f1d0 65 20 3d 3d 20 31 30 30 20 7d 20 7b 0a 09 61 66 e == 100 } {..af
2f1e0 74 65 72 20 31 30 30 30 20 73 65 74 20 52 61 6d ter 1000 set Ram
2f1f0 44 65 62 75 67 67 65 72 3a 3a 70 72 6f 67 72 65 Debugger::progre
2f200 73 73 76 61 72 20 2d 31 0a 09 69 66 20 7b 20 5b ssvar -1..if { [
2f210 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 6c 61 winfo exists $la
2f220 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 72 65 73 73 bel_for_Progress
2f230 56 61 72 5d 20 7d 20 7b 20 64 65 73 74 72 6f 79 Var] } { destroy
2f240 20 24 6c 61 62 65 6c 5f 66 6f 72 5f 50 72 6f 67 $label_for_Prog
2f250 72 65 73 73 56 61 72 20 7d 0a 20 20 20 20 7d 0a ressVar }. }.
2f260 20 20 20 20 75 70 64 61 74 65 0a 7d 0a 0a 70 72 update.}..pr
2f270 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
2f280 53 65 74 4d 65 73 73 61 67 65 20 7b 20 6d 65 73 SetMessage { mes
2f290 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 s } {. variab
2f2a0 6c 65 20 73 74 61 74 75 73 0a 20 20 20 20 76 61 le status. va
2f2b0 72 69 61 62 6c 65 20 61 66 74 65 72 69 64 5f 66 riable afterid_f
2f2c0 6f 72 6d 65 73 73 61 67 65 0a 0a 20 20 20 20 61 ormessage.. a
2f2d0 66 74 65 72 20 63 61 6e 63 65 6c 20 24 61 66 74 fter cancel $aft
2f2e0 65 72 69 64 5f 66 6f 72 6d 65 73 73 61 67 65 0a erid_formessage.
2f2f0 20 20 20 20 73 65 74 20 73 74 61 74 75 73 20 24 set status $
2f300 6d 65 73 73 0a 20 20 20 20 75 70 64 61 74 65 0a mess. update.
2f310 20 20 20 20 73 65 74 20 61 66 74 65 72 69 64 5f set afterid_
2f320 66 6f 72 6d 65 73 73 61 67 65 20 5b 61 66 74 65 formessage [afte
2f330 72 20 35 30 30 30 20 7b 20 73 65 74 20 52 61 6d r 5000 { set Ram
2f340 44 65 62 75 67 67 65 72 3a 3a 73 74 61 74 75 73 Debugger::status
2f350 20 22 22 20 7d 5d 0a 7d 0a 0a 70 72 6f 63 20 52 "" }].}..proc R
2f360 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 74 4d amDebugger::SetM
2f370 65 73 73 61 67 65 46 6c 61 73 68 20 7b 20 6d 65 essageFlash { me
2f380 73 73 20 7b 20 74 69 6d 65 20 37 30 30 30 20 7d ss { time 7000 }
2f390 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
2f3a0 65 20 73 74 61 74 75 73 0a 20 20 20 20 76 61 72 e status. var
2f3b0 69 61 62 6c 65 20 61 66 74 65 72 69 64 5f 66 6f iable afterid_fo
2f3c0 72 6d 65 73 73 61 67 65 0a 0a 20 20 20 20 61 66 rmessage.. af
2f3d0 74 65 72 20 63 61 6e 63 65 6c 20 24 61 66 74 65 ter cancel $afte
2f3e0 72 69 64 5f 66 6f 72 6d 65 73 73 61 67 65 0a 0a rid_formessage..
2f3f0 20 20 20 20 69 66 20 7b 20 24 73 74 61 74 75 73 if { $status
2f400 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 == "" } {..set
2f410 73 74 61 74 75 73 20 24 6d 65 73 73 0a 20 20 20 status $mess.
2f420 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 73 74 } else { set st
2f430 61 74 75 73 20 22 22 20 7d 0a 0a 20 20 20 20 69 atus "" }.. i
2f440 6e 63 72 20 74 69 6d 65 20 2d 33 30 30 0a 20 20 ncr time -300.
2f450 20 20 69 66 20 7b 20 24 74 69 6d 65 20 3c 3d 20 if { $time <=
2f460 30 20 7d 20 7b 0a 09 73 65 74 20 73 74 61 74 75 0 } {..set statu
2f470 73 20 22 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 s "". } else
2f480 7b 0a 09 73 65 74 20 61 66 74 65 72 69 64 5f 66 {..set afterid_f
2f490 6f 72 6d 65 73 73 61 67 65 20 5b 61 66 74 65 72 ormessage [after
2f4a0 20 33 30 30 20 5b 6c 69 73 74 20 52 61 6d 44 65 300 [list RamDe
2f4b0 62 75 67 67 65 72 3a 3a 53 65 74 4d 65 73 73 61 bugger::SetMessa
2f4c0 67 65 46 6c 61 73 68 20 24 6d 65 73 73 20 24 74 geFlash $mess $t
2f4d0 69 6d 65 5d 5d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 ime]]. }.}..p
2f4e0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
2f4f0 3a 47 69 76 65 4c 69 73 74 42 6f 78 49 74 65 6d :GiveListBoxItem
2f500 4e 61 6d 65 20 7b 20 6c 69 73 74 62 6f 78 20 73 Name { listbox s
2f510 74 72 69 6e 67 20 7d 20 7b 0a 0a 20 20 20 20 72 tring } {.. r
2f520 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 57 7d 20 egsub -all {\W}
2f530 24 73 74 72 69 6e 67 20 5f 20 69 74 65 6d 0a 0a $string _ item..
2f540 20 20 20 20 77 68 69 6c 65 20 7b 20 5b 24 6c 69 while { [$li
2f550 73 74 62 6f 78 20 65 78 69 73 74 73 20 24 69 74 stbox exists $it
2f560 65 6d 5d 20 7d 20 7b 0a 09 61 70 70 65 6e 64 20 em] } {..append
2f570 69 74 65 6d 20 5f 0a 20 20 20 20 7d 0a 20 20 20 item _. }.
2f580 20 72 65 74 75 72 6e 20 24 69 74 65 6d 0a 7d 0a return $item.}.
2f590 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
2f5a0 72 3a 3a 43 6f 6e 66 69 67 75 72 65 4c 61 62 65 r::ConfigureLabe
2f5b0 6c 20 7b 20 6c 61 62 65 6c 20 7d 20 7b 0a 0a 20 l { label } {..
2f5c0 20 20 20 73 65 74 20 74 74 20 5b 24 6c 61 62 65 set tt [$labe
2f5d0 6c 20 63 67 65 74 20 2d 74 65 78 74 5d 0a 20 20 l cget -text].
2f5e0 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d if { [string m
2f5f0 61 74 63 68 20 22 2e 2e 2e 2a 22 20 24 74 74 5d atch "...*" $tt]
2f600 20 7d 20 7b 0a 09 73 65 74 20 74 74 20 5b 24 6c } {..set tt [$l
2f610 61 62 65 6c 20 63 67 65 74 20 2d 68 65 6c 70 74 abel cget -helpt
2f620 65 78 74 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 ext]. }..
2f630 73 65 74 20 6c 77 69 64 74 68 20 5b 65 78 70 72 set lwidth [expr
2f640 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 6c [winfo width $l
2f650 61 62 65 6c 5d 2d 35 5d 0a 20 20 20 20 69 66 20 abel]-5]. if
2f660 7b 20 5b 66 6f 6e 74 20 6d 65 61 73 75 72 65 20 { [font measure
2f670 5b 24 6c 61 62 65 6c 20 63 67 65 74 20 2d 66 6f [$label cget -fo
2f680 6e 74 5d 20 24 74 74 5d 20 3c 3d 20 24 6c 77 69 nt] $tt] <= $lwi
2f690 64 74 68 20 7d 20 7b 0a 09 24 6c 61 62 65 6c 20 dth } {..$label
2f6a0 63 6f 6e 66 69 67 75 72 65 20 2d 74 65 78 74 20 configure -text
2f6b0 24 74 74 20 2d 68 65 6c 70 74 65 78 74 20 22 22 $tt -helptext ""
2f6c0 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 24 . } else {..$
2f6d0 6c 61 62 65 6c 20 63 6f 6e 66 69 67 75 72 65 20 label configure
2f6e0 2d 68 65 6c 70 74 65 78 74 20 24 74 74 0a 09 77 -helptext $tt..w
2f6f0 68 69 6c 65 20 7b 20 5b 73 74 72 69 6e 67 20 6c hile { [string l
2f700 65 6e 67 74 68 20 24 74 74 5d 20 3e 20 33 20 7d ength $tt] > 3 }
2f710 20 7b 0a 09 20 20 20 20 73 65 74 20 74 74 20 5b {.. set tt [
2f720 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 74 74 string range $tt
2f730 20 31 20 65 6e 64 5d 0a 09 20 20 20 20 69 66 20 1 end].. if
2f740 7b 20 5b 66 6f 6e 74 20 6d 65 61 73 75 72 65 20 { [font measure
2f750 5b 24 6c 61 62 65 6c 20 63 67 65 74 20 2d 66 6f [$label cget -fo
2f760 6e 74 5d 20 2e 2e 2e 24 74 74 5d 20 3c 3d 20 24 nt] ...$tt] <= $
2f770 6c 77 69 64 74 68 20 7d 20 7b 0a 09 09 62 72 65 lwidth } {...bre
2f780 61 6b 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 24 6c ak.. }..}..$l
2f790 61 62 65 6c 20 63 6f 6e 66 69 67 75 72 65 20 2d abel configure -
2f7a0 74 65 78 74 20 2e 2e 2e 24 74 74 0a 20 20 20 20 text ...$tt.
2f7b0 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
2f7c0 75 67 67 65 72 3a 3a 4c 69 73 74 42 6f 78 4c 61 ugger::ListBoxLa
2f7d0 62 65 6c 4d 65 6e 75 20 7b 20 77 20 78 20 79 20 belMenu { w x y
2f7e0 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
2f7f0 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 currentfile.
2f800 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e variable option
2f810 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 57 s. variable W
2f820 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a 20 indowFilesList.
2f830 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 variable topd
2f840 69 72 0a 0a 20 20 20 20 73 65 74 20 64 69 72 73 ir.. set dirs
2f850 20 5b 6c 69 73 74 20 24 6f 70 74 69 6f 6e 73 28 [list $options(
2f860 64 65 66 61 75 6c 74 64 69 72 29 5d 0a 20 20 20 defaultdir)].
2f870 20 73 65 74 20 73 65 70 20 30 0a 20 20 20 20 69 set sep 0. i
2f880 66 20 7b 20 24 63 75 72 72 65 6e 74 66 69 6c 65 f { $currentfile
2f890 20 21 3d 20 22 22 20 26 26 20 5b 73 74 72 69 6e != "" && [strin
2f8a0 67 20 69 6e 64 65 78 20 24 63 75 72 72 65 6e 74 g index $current
2f8b0 66 69 6c 65 20 30 5d 20 21 3d 20 22 2a 22 20 26 file 0] != "*" &
2f8c0 26 20 5c 0a 09 20 20 20 20 20 5b 66 69 6c 65 20 & \.. [file
2f8d0 64 69 72 6e 61 6d 65 20 24 63 75 72 72 65 6e 74 dirname $current
2f8e0 66 69 6c 65 5d 20 21 3d 20 24 6f 70 74 69 6f 6e file] != $option
2f8f0 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 7d 20 s(defaultdir) }
2f900 7b 0a 09 69 66 20 7b 20 21 24 73 65 70 20 7d 20 {..if { !$sep }
2f910 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 {.. lappend d
2f920 69 72 73 20 2d 2d 2d 0a 09 20 20 20 20 73 65 74 irs ---.. set
2f930 20 73 65 70 20 31 0a 09 7d 0a 09 6c 61 70 70 65 sep 1..}..lappe
2f940 6e 64 20 64 69 72 73 20 5b 66 69 6c 65 20 64 69 nd dirs [file di
2f950 72 6e 61 6d 65 20 24 63 75 72 72 65 6e 74 66 69 rname $currentfi
2f960 6c 65 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 le]. }. se
2f970 74 20 73 65 70 20 30 0a 20 20 20 20 66 6f 72 65 t sep 0. fore
2f980 61 63 68 20 69 20 24 57 69 6e 64 6f 77 46 69 6c ach i $WindowFil
2f990 65 73 4c 69 73 74 20 7b 0a 09 73 65 74 20 64 69 esList {..set di
2f9a0 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 r [file dirname
2f9b0 24 69 5d 0a 09 69 66 20 7b 20 24 64 69 72 20 21 $i]..if { $dir !
2f9c0 3d 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 = $options(defau
2f9d0 6c 74 64 69 72 29 20 26 26 20 5b 6c 73 65 61 72 ltdir) && [lsear
2f9e0 63 68 66 69 6c 65 20 24 64 69 72 73 20 24 64 69 chfile $dirs $di
2f9f0 72 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 20 20 r] == -1 } {..
2fa00 20 20 69 66 20 7b 20 21 24 73 65 70 20 7d 20 7b if { !$sep } {
2fa10 0a 09 09 6c 61 70 70 65 6e 64 20 64 69 72 73 20 ...lappend dirs
2fa20 2d 2d 2d 0a 09 09 73 65 74 20 73 65 70 20 31 0a ---...set sep 1.
2fa30 09 20 20 20 20 7d 0a 09 20 20 20 20 6c 61 70 70 . }.. lapp
2fa40 65 6e 64 20 64 69 72 73 20 24 64 69 72 0a 09 7d end dirs $dir..}
2fa50 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b . }.. if {
2fa60 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f ![info exists o
2fa70 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c ptions(RecentFil
2fa80 65 73 4c 29 5d 20 7d 20 7b 0a 09 73 65 74 20 6f esL)] } {..set o
2fa90 70 74 69 6f 6e 73 28 52 65 63 65 6e 74 46 69 6c ptions(RecentFil
2faa0 65 73 4c 29 20 22 22 0a 20 20 20 20 7d 0a 20 20 esL) "". }.
2fab0 20 20 73 65 74 20 73 65 70 20 30 0a 20 20 20 20 set sep 0.
2fac0 66 6f 72 65 61 63 68 20 69 20 24 6f 70 74 69 6f foreach i $optio
2fad0 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 ns(RecentFilesL)
2fae0 20 7b 0a 09 73 65 74 20 64 69 72 20 5b 66 69 6c {..set dir [fil
2faf0 65 20 64 69 72 6e 61 6d 65 20 5b 6c 69 6e 64 65 e dirname [linde
2fb00 78 20 24 69 20 30 5d 5d 0a 09 69 66 20 7b 20 24 x $i 0]]..if { $
2fb10 64 69 72 20 21 3d 20 24 6f 70 74 69 6f 6e 73 28 dir != $options(
2fb20 64 65 66 61 75 6c 74 64 69 72 29 20 26 26 20 5b defaultdir) && [
2fb30 6c 73 65 61 72 63 68 66 69 6c 65 20 24 64 69 72 lsearchfile $dir
2fb40 73 20 24 64 69 72 5d 20 3d 3d 20 2d 31 20 7d 20 s $dir] == -1 }
2fb50 7b 0a 09 20 20 20 20 69 66 20 7b 20 21 24 73 65 {.. if { !$se
2fb60 70 20 7d 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 p } {...lappend
2fb70 64 69 72 73 20 2d 2d 2d 0a 09 09 73 65 74 20 73 dirs ---...set s
2fb80 65 70 20 31 0a 09 20 20 20 20 7d 0a 09 20 20 20 ep 1.. }..
2fb90 20 6c 61 70 70 65 6e 64 20 64 69 72 73 20 24 64 lappend dirs $d
2fba0 69 72 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 ir..}. }.
2fbb0 73 65 74 20 73 65 70 20 30 0a 20 20 20 20 69 66 set sep 0. if
2fbc0 20 7b 20 24 74 6f 70 64 69 72 5f 65 78 74 65 72 { $topdir_exter
2fbd0 6e 61 6c 20 6e 65 20 24 6f 70 74 69 6f 6e 73 28 nal ne $options(
2fbe0 64 65 66 61 75 6c 74 64 69 72 29 20 26 26 20 5b defaultdir) && [
2fbf0 6c 73 65 61 72 63 68 66 69 6c 65 20 24 64 69 72 lsearchfile $dir
2fc00 73 20 24 74 6f 70 64 69 72 5d 20 3d 3d 20 2d 31 s $topdir] == -1
2fc10 20 7d 20 7b 0a 09 69 66 20 7b 20 21 24 73 65 70 } {..if { !$sep
2fc20 20 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e } {.. lappen
2fc30 64 20 64 69 72 73 20 2d 2d 2d 0a 09 20 20 20 20 d dirs ---..
2fc40 73 65 74 20 73 65 70 20 31 0a 09 7d 0a 09 6c 61 set sep 1..}..la
2fc50 70 70 65 6e 64 20 64 69 72 73 20 24 74 6f 70 64 ppend dirs $topd
2fc60 69 72 5f 65 78 74 65 72 6e 61 6c 0a 20 20 20 20 ir_external.
2fc70 7d 0a 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 }.. set menu
2fc80 24 77 2e 6d 65 6e 75 0a 20 20 20 20 63 61 74 63 $w.menu. catc
2fc90 68 20 7b 20 64 65 73 74 72 6f 79 20 24 6d 65 6e h { destroy $men
2fca0 75 20 7d 0a 20 20 20 20 0a 20 20 20 20 6d 65 6e u }. . men
2fcb0 75 20 24 6d 65 6e 75 0a 20 20 20 20 66 6f 72 65 u $menu. fore
2fcc0 61 63 68 20 64 69 72 20 24 64 69 72 73 20 7b 0a ach dir $dirs {.
2fcd0 09 69 66 20 7b 20 24 64 69 72 20 3d 3d 20 22 2d .if { $dir == "-
2fce0 2d 2d 22 20 7d 20 7b 0a 09 20 20 20 20 24 6d 65 --" } {.. $me
2fcf0 6e 75 20 61 64 64 20 73 65 70 61 72 61 74 6f 72 nu add separator
2fd00 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 ..} else {..
2fd10 73 65 74 20 6c 61 62 65 6c 20 24 64 69 72 0a 09 set label $dir..
2fd20 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 if { [string
2fd30 20 6c 65 6e 67 74 68 20 24 6c 61 62 65 6c 5d 20 length $label]
2fd40 3e 20 35 30 20 7d 20 7b 20 73 65 74 20 6c 61 62 > 50 } { set lab
2fd50 65 6c 20 2e 2e 2e 5b 73 74 72 69 6e 67 20 72 61 el ...[string ra
2fd60 6e 67 65 20 24 6c 61 62 65 6c 20 65 6e 64 2d 34 nge $label end-4
2fd70 37 20 65 6e 64 5d 20 7d 0a 09 20 20 20 20 24 6d 7 end] }.. $m
2fd80 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
2fd90 2d 6c 61 62 65 6c 20 24 6c 61 62 65 6c 20 2d 63 -label $label -c
2fda0 6f 6d 6d 61 6e 64 20 5c 0a 09 09 22 5b 6c 69 73 ommand \..."[lis
2fdb0 74 20 73 65 74 20 52 61 6d 44 65 62 75 67 67 65 t set RamDebugge
2fdc0 72 3a 3a 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 r::options(defau
2fdd0 6c 74 64 69 72 29 20 24 64 69 72 5d 20 3b 5c 0a ltdir) $dir] ;\.
2fde0 09 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
2fdf0 72 3a 3a 46 69 6c 6c 4c 69 73 74 42 6f 78 22 0a r::FillListBox".
2fe00 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 6b 5f .}. }. tk_
2fe10 70 6f 70 75 70 20 24 6d 65 6e 75 20 24 78 20 24 popup $menu $x $
2fe20 79 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 y.}..proc RamDeb
2fe30 75 67 67 65 72 3a 3a 46 69 6c 6c 4c 69 73 74 42 ugger::FillListB
2fe40 6f 78 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 ox {} {. vari
2fe50 61 62 6c 65 20 6c 69 73 74 62 6f 78 0a 20 20 20 able listbox.
2fe60 20 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62 6f variable listbo
2fe70 78 6c 61 62 65 6c 0a 20 20 20 20 76 61 72 69 61 xlabel. varia
2fe80 62 6c 65 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 ble options.
2fe90 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d variable instrum
2fea0 65 6e 74 65 64 66 69 6c 65 73 50 0a 20 20 20 20 entedfilesP.
2feb0 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d variable instrum
2fec0 65 6e 74 65 64 66 69 6c 65 73 52 0a 20 20 20 20 entedfilesR.
2fed0 76 61 72 69 61 62 6c 65 20 69 6e 73 74 72 75 6d variable instrum
2fee0 65 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 0a 20 entedfilesSent.
2fef0 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d 6f variable remo
2ff00 74 65 73 65 72 76 65 72 54 79 70 65 0a 20 20 20 teserverType.
2ff10 20 76 61 72 69 61 62 6c 65 20 69 6d 61 67 65 73 variable images
2ff20 0a 0a 20 20 20 20 69 66 20 7b 20 24 6c 69 73 74 .. if { $list
2ff30 62 6f 78 20 3d 3d 20 22 22 20 7c 7c 20 21 5b 77 box == "" || ![w
2ff40 69 6e 66 6f 20 65 78 69 73 74 73 20 24 6c 69 73 info exists $lis
2ff50 74 62 6f 78 5d 20 7d 20 7b 20 72 65 74 75 72 6e tbox] } { return
2ff60 20 7d 0a 0a 20 20 20 20 24 6c 69 73 74 62 6f 78 }.. $listbox
2ff70 6c 61 62 65 6c 20 63 6f 6e 66 69 67 75 72 65 20 label configure
2ff80 2d 74 65 78 74 20 24 6f 70 74 69 6f 6e 73 28 64 -text $options(d
2ff90 65 66 61 75 6c 74 64 69 72 29 0a 20 20 20 20 43 efaultdir). C
2ffa0 6f 6e 66 69 67 75 72 65 4c 61 62 65 6c 20 24 6c onfigureLabel $l
2ffb0 69 73 74 62 6f 78 6c 61 62 65 6c 0a 0a 20 20 20 istboxlabel..
2ffc0 20 24 6c 69 73 74 62 6f 78 20 64 65 6c 65 74 65 $listbox delete
2ffd0 20 5b 24 6c 69 73 74 62 6f 78 20 69 74 65 6d 73 [$listbox items
2ffe0 5d 0a 0a 20 20 20 20 73 65 74 20 70 61 72 65 6e ].. set paren
2fff0 74 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 t [file dirname
30000 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 $options(default
30010 64 69 72 29 5d 0a 20 20 20 20 24 6c 69 73 74 62 dir)]. $listb
30020 6f 78 20 69 6e 73 65 72 74 20 65 6e 64 20 2e 2e ox insert end ..
30030 20 2d 69 6d 61 67 65 20 5b 42 69 74 6d 61 70 3a -image [Bitmap:
30040 3a 67 65 74 20 66 6f 6c 64 65 72 5d 20 2d 74 65 :get folder] -te
30050 78 74 20 22 2e 2e 22 20 2d 64 61 74 61 20 5b 6c xt ".." -data [l
30060 69 73 74 20 66 6f 6c 64 65 72 20 24 70 61 72 65 ist folder $pare
30070 6e 74 5d 0a 20 20 20 20 73 65 74 20 69 64 78 66 nt]. set idxf
30080 6f 6c 64 65 72 20 31 0a 20 20 20 20 73 65 74 20 older 1. set
30090 66 69 6c 65 73 20 22 22 0a 20 20 20 20 66 6f 72 files "". for
300a0 65 61 63 68 20 69 20 5b 67 6c 6f 62 20 2d 6e 6f each i [glob -no
300b0 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72 20 24 6f complain -dir $o
300c0 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 ptions(defaultdi
300d0 72 29 20 2a 5d 20 7b 0a 09 6c 61 70 70 65 6e 64 r) *] {..lappend
300e0 20 66 69 6c 65 73 20 5b 66 69 6c 65 20 74 61 69 files [file tai
300f0 6c 20 24 69 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 l $i]. }..
30100 20 69 66 20 7b 20 24 72 65 6d 6f 74 65 73 65 72 if { $remoteser
30110 76 65 72 54 79 70 65 20 3d 3d 20 22 6c 6f 63 61 verType == "loca
30120 6c 22 20 7d 20 7b 0a 09 73 65 74 20 49 73 4c 6f l" } {..set IsLo
30130 63 61 6c 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 cal 1. } else
30140 20 7b 20 73 65 74 20 49 73 4c 6f 63 61 6c 20 30 { set IsLocal 0
30150 20 7d 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 }.. foreach
30160 69 20 5b 6c 73 6f 72 74 20 2d 64 69 63 74 69 6f i [lsort -dictio
30170 6e 61 72 79 20 24 66 69 6c 65 73 5d 20 7b 0a 09 nary $files] {..
30180 73 65 74 20 69 74 65 6d 20 5b 47 69 76 65 4c 69 set item [GiveLi
30190 73 74 42 6f 78 49 74 65 6d 4e 61 6d 65 20 24 6c stBoxItemName $l
301a0 69 73 74 62 6f 78 20 24 69 5d 0a 09 73 65 74 20 istbox $i]..set
301b0 66 75 6c 6c 70 61 74 68 20 5b 66 69 6c 65 20 6a fullpath [file j
301c0 6f 69 6e 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 oin $options(def
301d0 61 75 6c 74 64 69 72 29 20 24 69 5d 0a 09 73 65 aultdir) $i]..se
301e0 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 65 t filetype [Give
301f0 46 69 6c 65 54 79 70 65 20 24 69 5d 0a 09 69 66 FileType $i]..if
30200 20 7b 20 5b 66 69 6c 65 20 69 73 64 69 72 20 24 { [file isdir $
30210 66 75 6c 6c 70 61 74 68 5d 20 7d 20 7b 0a 09 20 fullpath] } {..
30220 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 if { [string
30230 74 6f 6c 6f 77 65 72 20 24 69 5d 20 3d 3d 20 22 tolower $i] == "
30240 63 76 73 22 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 cvs" } { continu
30250 65 20 7d 0a 09 20 20 20 20 24 6c 69 73 74 62 6f e }.. $listbo
30260 78 20 69 6e 73 65 72 74 20 24 69 64 78 66 6f 6c x insert $idxfol
30270 64 65 72 20 24 69 74 65 6d 20 2d 69 6d 61 67 65 der $item -image
30280 20 5b 42 69 74 6d 61 70 3a 3a 67 65 74 20 66 6f [Bitmap::get fo
30290 6c 64 65 72 5d 20 2d 74 65 78 74 20 24 69 20 5c lder] -text $i \
302a0 0a 09 09 2d 64 61 74 61 20 5b 6c 69 73 74 20 66 ...-data [list f
302b0 6f 6c 64 65 72 20 24 66 75 6c 6c 70 61 74 68 5d older $fullpath]
302c0 0a 09 20 20 20 20 69 6e 63 72 20 69 64 78 66 6f .. incr idxfo
302d0 6c 64 65 72 0a 09 7d 20 65 6c 73 65 69 66 20 7b lder..} elseif {
302e0 20 24 66 69 6c 65 74 79 70 65 20 21 3d 20 22 22 $filetype != ""
302f0 20 26 26 20 5b 66 69 6c 65 20 65 78 74 65 6e 73 && [file extens
30300 69 6f 6e 20 24 69 5d 20 21 3d 20 22 22 20 7d 20 ion $i] != "" }
30310 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 {.. if { [inf
30320 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 6d o exists instrum
30330 65 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 28 24 entedfilesSent($
30340 66 75 6c 6c 70 61 74 68 29 5d 20 7d 20 7b 0a 09 fullpath)] } {..
30350 09 73 77 69 74 63 68 20 24 69 6e 73 74 72 75 6d .switch $instrum
30360 65 6e 74 65 64 66 69 6c 65 73 53 65 6e 74 28 24 entedfilesSent($
30370 66 75 6c 6c 70 61 74 68 29 20 7b 0a 09 09 20 20 fullpath) {...
30380 20 20 64 65 62 75 67 20 7b 20 73 65 74 20 69 6d debug { set im
30390 67 20 24 69 6d 61 67 65 73 28 66 69 6c 65 5f 62 g $images(file_b
303a0 6c 75 65 29 20 7d 0a 09 09 20 20 20 20 74 69 6d lue) }... tim
303b0 65 20 7b 20 73 65 74 20 69 6d 67 20 24 69 6d 61 e { set img $ima
303c0 67 65 73 28 66 69 6c 65 5f 6d 61 67 65 6e 74 61 ges(file_magenta
303d0 29 20 7d 0a 09 09 20 20 20 20 64 65 66 61 75 6c ) }... defaul
303e0 74 20 7b 20 73 65 74 20 69 6d 67 20 24 69 6d 61 t { set img $ima
303f0 67 65 73 28 66 69 6c 65 5f 62 6c 75 65 29 20 7d ges(file_blue) }
30400 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 6c 73 65 ...}.. } else
30410 69 66 20 7b 20 5b 47 69 76 65 49 6e 73 74 46 69 if { [GiveInstFi
30420 6c 65 20 24 66 75 6c 6c 70 61 74 68 20 31 20 50 le $fullpath 1 P
30430 5d 20 21 3d 20 22 22 20 7d 20 7b 0a 09 09 73 65 ] != "" } {...se
30440 74 20 69 6d 67 20 24 69 6d 61 67 65 73 28 66 69 t img $images(fi
30450 6c 65 5f 79 65 6c 6c 6f 77 29 0a 09 20 20 20 20 le_yellow)..
30460 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 69 6d 67 } else { set img
30470 20 5b 42 69 74 6d 61 70 3a 3a 67 65 74 20 66 69 [Bitmap::get fi
30480 6c 65 5d 20 7d 0a 0a 09 20 20 20 20 24 6c 69 73 le] }... $lis
30490 74 62 6f 78 20 69 6e 73 65 72 74 20 65 6e 64 20 tbox insert end
304a0 24 69 74 65 6d 20 2d 69 6d 61 67 65 20 24 69 6d $item -image $im
304b0 67 20 2d 74 65 78 74 20 24 69 20 2d 64 61 74 61 g -text $i -data
304c0 20 5c 0a 09 09 5b 6c 69 73 74 20 66 69 6c 65 20 \...[list file
304d0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 70 74 69 [file join $opti
304e0 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 ons(defaultdir)
304f0 24 69 5d 5d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a $i]]..}. }.}.
30500 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
30510 72 3a 3a 50 72 65 76 4e 65 78 74 43 6f 6d 70 69 r::PrevNextCompi
30520 6c 65 45 72 72 6f 72 20 7b 20 77 68 61 74 20 7d leError { what }
30530 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
30540 74 65 78 74 43 4f 4d 50 0a 0a 20 20 20 20 24 74 textCOMP.. $t
30550 65 78 74 43 4f 4d 50 20 74 61 67 20 63 6f 6e 66 extCOMP tag conf
30560 20 73 65 6c 32 20 2d 62 61 63 6b 67 72 6f 75 6e sel2 -backgroun
30570 64 20 5b 24 74 65 78 74 43 4f 4d 50 20 74 61 67 d [$textCOMP tag
30580 20 63 67 65 74 20 73 65 6c 20 2d 62 61 63 6b 67 cget sel -backg
30590 72 6f 75 6e 64 5d 0a 20 20 20 20 24 74 65 78 74 round]. $text
305a0 43 4f 4d 50 20 74 61 67 20 63 6f 6e 66 20 73 65 COMP tag conf se
305b0 6c 32 20 2d 66 6f 72 65 67 72 6f 75 6e 64 20 5b l2 -foreground [
305c0 24 74 65 78 74 43 4f 4d 50 20 74 61 67 20 63 67 $textCOMP tag cg
305d0 65 74 20 73 65 6c 20 2d 66 6f 72 65 67 72 6f 75 et sel -foregrou
305e0 6e 64 5d 0a 0a 20 20 20 20 73 65 74 20 65 72 72 nd].. set err
305f0 20 5b 63 61 74 63 68 20 7b 20 24 74 65 78 74 43 [catch { $textC
30600 4f 4d 50 20 69 6e 64 65 78 20 73 65 6c 32 2e 66 OMP index sel2.f
30610 69 72 73 74 7d 20 69 64 78 5d 0a 20 20 20 20 69 irst} idx]. i
30620 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 73 77 f { $err } {..sw
30630 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 20 20 itch $what {..
30640 20 20 6e 65 78 74 20 7b 20 73 65 74 20 69 64 78 next { set idx
30650 20 31 2e 30 20 7d 0a 09 20 20 20 20 70 72 65 76 1.0 }.. prev
30660 20 7b 20 73 65 74 20 69 64 78 20 65 6e 64 2d 31 { set idx end-1
30670 63 20 7d 0a 09 7d 0a 09 24 74 65 78 74 43 4f 4d c }..}..$textCOM
30680 50 20 74 61 67 20 61 64 64 20 73 65 6c 32 20 22 P tag add sel2 "
30690 24 69 64 78 20 6c 69 6e 65 73 74 61 72 74 22 20 $idx linestart"
306a0 22 24 69 64 78 20 6c 69 6e 65 65 6e 64 22 0a 09 "$idx lineend"..
306b0 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b set err [catch {
306c0 20 24 74 65 78 74 43 4f 4d 50 20 69 6e 64 65 78 $textCOMP index
306d0 20 73 65 6c 32 2e 66 69 72 73 74 7d 20 69 64 78 sel2.first} idx
306e0 5d 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 7b ]..if { $err } {
306f0 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 7d 0a return }. }.
30700 20 20 20 20 24 74 65 78 74 43 4f 4d 50 20 74 61 $textCOMP ta
30710 67 20 72 65 6d 6f 76 65 20 73 65 6c 32 20 31 2e g remove sel2 1.
30720 30 20 65 6e 64 0a 20 20 20 20 73 65 74 20 69 64 0 end. set id
30730 78 69 6e 69 20 24 69 64 78 0a 20 20 20 20 77 68 xini $idx. wh
30740 69 6c 65 20 7b 20 5b 24 74 65 78 74 43 4f 4d 50 ile { [$textCOMP
30750 20 74 61 67 20 72 61 6e 67 65 20 73 65 6c 32 5d tag range sel2]
30760 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 73 77 69 74 == "" } {..swit
30770 63 68 20 24 77 68 61 74 20 7b 0a 09 20 20 20 20 ch $what {..
30780 6e 65 78 74 20 7b 0a 09 09 73 65 74 20 69 64 78 next {...set idx
30790 20 5b 24 74 65 78 74 43 4f 4d 50 20 69 6e 64 65 [$textCOMP inde
307a0 78 20 24 69 64 78 2b 31 6c 5d 0a 09 09 69 66 20 x $idx+1l]...if
307b0 7b 20 5b 24 74 65 78 74 43 4f 4d 50 20 63 6f 6d { [$textCOMP com
307c0 70 61 72 65 20 24 69 64 78 20 3e 20 65 6e 64 2d pare $idx > end-
307d0 31 63 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 1c] } {... se
307e0 74 20 69 64 78 20 31 2e 30 0a 09 09 7d 0a 09 20 t idx 1.0...}..
307f0 20 20 20 7d 0a 09 20 20 20 20 70 72 65 76 20 7b }.. prev {
30800 0a 09 09 73 65 74 20 69 64 78 20 5b 24 74 65 78 ...set idx [$tex
30810 74 43 4f 4d 50 20 69 6e 64 65 78 20 24 69 64 78 tCOMP index $idx
30820 2d 31 6c 5d 0a 09 09 69 66 20 7b 20 5b 24 74 65 -1l]...if { [$te
30830 78 74 43 4f 4d 50 20 63 6f 6d 70 61 72 65 20 24 xtCOMP compare $
30840 69 64 78 20 3c 20 31 2e 30 5d 20 7d 20 7b 0a 09 idx < 1.0] } {..
30850 09 20 20 20 20 73 65 74 20 69 64 78 20 65 6e 64 . set idx end
30860 2d 31 63 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 -1c...}.. }..
30870 7d 0a 09 73 65 74 20 72 65 78 31 20 7b 28 28 28 }..set rex1 {(((
30880 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a 2f 29 3f 5b 2d ?:[a-zA-Z]:/)?[-
30890 2f 5c 77 2e 5d 2b 29 3a 28 5b 30 2d 39 5d 2b 29 /\w.]+):([0-9]+)
308a0 29 7d 0a 09 73 65 74 20 72 65 78 32 20 7b 28 28 )}..set rex2 {((
308b0 28 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a 2f 29 3f 5b (?:[a-zA-Z]:/)?[
308c0 2d 2f 5c 77 2e 20 5d 2b 29 3a 28 5b 30 2d 39 5d -/\w. ]+):([0-9]
308d0 2b 29 29 7d 0a 09 73 65 74 20 72 65 78 33 20 7b +))}..set rex3 {
308e0 28 5b 61 2d 7a 41 2d 5a 3a 2f 5c 5c 5d 2b 5c 28 ([a-zA-Z:/\\]+\(
308f0 5c 64 2b 5c 29 29 7d 0a 09 73 65 74 20 72 65 78 \d+\))}..set rex
30900 20 22 24 72 65 78 31 7c 24 72 65 78 32 7c 24 72 "$rex1|$rex2|$r
30910 65 78 33 22 0a 09 20 69 66 20 7b 20 5b 72 65 67 ex3".. if { [reg
30920 65 78 70 20 24 72 65 78 20 5b 24 74 65 78 74 43 exp $rex [$textC
30930 4f 4d 50 20 67 65 74 20 22 24 69 64 78 20 6c 69 OMP get "$idx li
30940 6e 65 73 74 61 72 74 22 20 22 24 69 64 78 20 6c nestart" "$idx l
30950 69 6e 65 65 6e 64 22 5d 5d 20 7d 20 7b 0a 09 20 ineend"]] } {..
30960 20 20 20 24 74 65 78 74 43 4f 4d 50 20 74 61 67 $textCOMP tag
30970 20 61 64 64 20 73 65 6c 32 20 22 24 69 64 78 20 add sel2 "$idx
30980 6c 69 6e 65 73 74 61 72 74 22 20 22 24 69 64 78 linestart" "$idx
30990 20 6c 69 6e 65 65 6e 64 22 0a 09 7d 0a 09 69 66 lineend"..}..if
309a0 20 7b 20 24 69 64 78 20 3d 3d 20 24 69 64 78 69 { $idx == $idxi
309b0 6e 69 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 20 ni } { break }.
309c0 20 20 20 7d 0a 20 20 20 20 24 74 65 78 74 43 4f }. $textCO
309d0 4d 50 20 73 65 65 20 24 69 64 78 0a 20 20 20 20 MP see $idx.
309e0 53 74 61 63 6b 44 6f 75 62 6c 65 31 20 24 74 65 StackDouble1 $te
309f0 78 74 43 4f 4d 50 20 24 69 64 78 0a 7d 0a 0a 0a xtCOMP $idx.}...
30a00 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
30a10 3a 3a 53 74 61 63 6b 44 6f 75 62 6c 65 31 20 7b ::StackDouble1 {
30a20 20 74 65 78 74 73 74 61 63 6b 20 69 64 78 20 7d textstack idx }
30a30 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
30a40 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
30a50 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 e currentfile.
30a60 20 20 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f variable optio
30a70 6e 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ns. variable
30a80 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 0a WindowFilesList.
30a90 0a 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 74 . set idx [$t
30aa0 65 78 74 73 74 61 63 6b 20 69 6e 64 65 78 20 24 extstack index $
30ab0 69 64 78 5d 0a 20 20 20 20 73 65 74 20 64 61 74 idx]. set dat
30ac0 61 20 5b 24 74 65 78 74 73 74 61 63 6b 20 67 65 a [$textstack ge
30ad0 74 20 22 24 69 64 78 20 6c 69 6e 65 73 74 61 72 t "$idx linestar
30ae0 74 22 20 22 24 69 64 78 20 6c 69 6e 65 65 6e 64 t" "$idx lineend
30af0 22 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 "]. . set
30b00 70 61 74 74 65 72 6e 4c 69 73 74 20 5b 6c 69 73 patternList [lis
30b10 74 20 7b 28 28 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a t {((?:[a-zA-Z]:
30b20 2f 29 3f 5b 2d 2f 5c 77 2e 5d 2b 29 3a 28 5b 30 /)?[-/\w.]+):([0
30b30 2d 39 5d 2b 29 7d 20 5c 0a 09 20 20 20 20 7b 28 -9]+)} \.. {(
30b40 28 3f 3a 5b 61 2d 7a 41 2d 5a 5d 3a 2f 29 3f 5b (?:[a-zA-Z]:/)?[
30b50 2d 2f 5c 77 2e 20 5d 2b 29 3a 28 5b 30 2d 39 5d -/\w. ]+):([0-9]
30b60 2b 29 7d 20 5c 0a 09 20 20 20 20 7b 28 28 3f 3a +)} \.. {((?:
30b70 5b 61 2d 7a 41 2d 5a 5d 3a 5c 5c 29 3f 5b 2d 5c [a-zA-Z]:\\)?[-\
30b80 5c 5c 77 2e 5d 2b 29 5c 28 28 5b 30 2d 39 5d 2b \\w.]+)\(([0-9]+
30b90 29 5c 29 7d 20 5c 0a 09 20 20 20 20 7b 28 28 3f )\)} \.. {((?
30ba0 3a 5b 5c 64 5d 3e 29 3f 5b 2d 5c 5c 5c 77 2e 5d :[\d]>)?[-\\\w.]
30bb0 2b 29 5c 28 28 5b 30 2d 39 5d 2b 29 5c 29 7d 5d +)\(([0-9]+)\)}]
30bc0 0a 20 20 20 20 73 65 74 20 72 65 78 31 20 7b 5e . set rex1 {^
30bd0 5c 23 28 5b 30 2d 39 5d 2b 29 7d 0a 20 20 20 20 \#([0-9]+)}.
30be0 73 65 74 20 72 65 78 32 20 5b 6a 6f 69 6e 20 24 set rex2 [join $
30bf0 70 61 74 74 65 72 6e 4c 69 73 74 20 22 7c 22 5d patternList "|"]
30c00 0a 20 20 20 20 73 65 74 20 64 61 74 61 30 20 24 . set data0 $
30c10 64 61 74 61 0a 20 20 20 20 77 68 69 6c 65 20 7b data. while {
30c20 20 21 5b 72 65 67 65 78 70 20 24 72 65 78 31 20 ![regexp $rex1
30c30 24 64 61 74 61 5d 20 26 26 20 5b 24 74 65 78 74 $data] && [$text
30c40 73 74 61 63 6b 20 63 6f 6d 70 61 72 65 20 22 24 stack compare "$
30c50 69 64 78 20 6c 69 6e 65 73 74 61 72 74 22 20 3e idx linestart" >
30c60 20 31 2e 30 5d 20 7d 20 7b 0a 09 73 65 74 20 70 1.0] } {..set p
30c70 72 65 76 6c 69 6e 65 20 5b 24 74 65 78 74 73 74 revline [$textst
30c80 61 63 6b 20 67 65 74 20 22 24 69 64 78 20 2d 31 ack get "$idx -1
30c90 20 6c 69 6e 65 20 6c 69 6e 65 73 74 61 72 74 22 line linestart"
30ca0 20 22 24 69 64 78 20 2d 31 20 6c 69 6e 65 20 6c "$idx -1 line l
30cb0 69 6e 65 65 6e 64 22 5d 0a 09 73 65 74 20 64 61 ineend"]..set da
30cc0 74 61 20 22 24 70 72 65 76 6c 69 6e 65 20 24 64 ta "$prevline $d
30cd0 61 74 61 22 0a 09 73 65 74 20 69 64 78 20 5b 24 ata"..set idx [$
30ce0 74 65 78 74 73 74 61 63 6b 20 69 6e 64 65 78 20 textstack index
30cf0 22 24 69 64 78 20 2d 31 20 6c 69 6e 65 20 6c 69 "$idx -1 line li
30d00 6e 65 73 74 61 72 74 22 5d 0a 20 20 20 20 7d 0a nestart"]. }.
30d10 20 20 20 20 69 66 20 7b 20 24 69 64 78 20 65 71 if { $idx eq
30d20 20 22 31 2e 30 22 20 7d 20 7b 0a 09 73 65 74 20 "1.0" } {..set
30d30 64 61 74 61 20 24 64 61 74 61 30 0a 20 20 20 20 data $data0.
30d40 7d 0a 20 20 20 20 77 68 69 6c 65 20 7b 20 5b 72 }. while { [r
30d50 65 67 65 78 70 20 24 72 65 78 31 20 24 64 61 74 egexp $rex1 $dat
30d60 61 5d 20 26 26 20 5b 24 74 65 78 74 73 74 61 63 a] && [$textstac
30d70 6b 20 63 6f 6d 70 61 72 65 20 22 24 69 64 78 20 k compare "$idx
30d80 6c 69 6e 65 65 6e 64 22 20 3c 20 22 65 6e 64 2d lineend" < "end-
30d90 31 6c 22 5d 20 7d 20 7b 0a 09 73 65 74 20 6e 65 1l"] } {..set ne
30da0 78 74 6c 69 6e 65 20 5b 24 74 65 78 74 73 74 61 xtline [$textsta
30db0 63 6b 20 67 65 74 20 22 24 69 64 78 20 2b 31 20 ck get "$idx +1
30dc0 6c 69 6e 65 20 6c 69 6e 65 73 74 61 72 74 22 20 line linestart"
30dd0 22 24 69 64 78 20 2b 31 20 6c 69 6e 65 20 6c 69 "$idx +1 line li
30de0 6e 65 65 6e 64 22 5d 0a 09 69 66 20 7b 20 21 5b neend"]..if { ![
30df0 72 65 67 65 78 70 20 24 72 65 78 31 20 24 6e 65 regexp $rex1 $ne
30e00 78 74 6c 69 6e 65 5d 20 7d 20 7b 0a 09 20 20 20 xtline] } {..
30e10 20 73 65 74 20 64 61 74 61 20 22 24 64 61 74 61 set data "$data
30e20 20 24 6e 65 78 74 6c 69 6e 65 22 0a 09 20 20 20 $nextline"..
30e30 20 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 73 set idx [$texts
30e40 74 61 63 6b 20 69 6e 64 65 78 20 22 24 69 64 78 tack index "$idx
30e50 20 2b 31 20 6c 69 6e 65 20 6c 69 6e 65 73 74 61 +1 line linesta
30e60 72 74 22 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 rt"]..} else {..
30e70 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 20 20 20 break..}.
30e80 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 70 }. foreach p
30e90 61 74 74 65 72 6e 20 24 70 61 74 74 65 72 6e 4c attern $patternL
30ea0 69 73 74 20 7b 0a 09 69 66 20 7b 20 5b 72 65 67 ist {..if { [reg
30eb0 65 78 70 20 24 70 61 74 74 65 72 6e 20 24 64 61 exp $pattern $da
30ec0 74 61 20 7b 7d 20 66 69 6c 65 20 6c 69 6e 65 5d ta {} file line]
30ed0 20 7d 20 7b 0a 0a 09 20 20 20 20 23 20 73 74 72 } {... # str
30ee0 61 6e 67 65 20 63 61 73 65 20 69 6e 20 57 69 6e ange case in Win
30ef0 64 6f 77 73 20 6d 69 6e 67 77 0a 09 20 20 20 20 dows mingw..
30f00 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e 2f if { [regexp {^/
30f10 2f 28 5b 61 2d 7a 41 2d 5a 5d 29 28 2f 2e 2a 29 /([a-zA-Z])(/.*)
30f20 7d 20 24 66 69 6c 65 20 7b 7d 20 6c 65 74 74 65 } $file {} lette
30f30 72 20 73 66 69 6c 65 5d 20 26 26 20 5c 0a 09 09 r sfile] && \...
30f40 20 20 20 20 20 5b 66 69 6c 65 20 65 78 69 73 74 [file exist
30f50 73 20 24 6c 65 74 74 65 72 3a 24 73 66 69 6c 65 s $letter:$sfile
30f60 5d 20 7d 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 ] } {...set file
30f70 20 24 6c 65 74 74 65 72 3a 24 73 66 69 6c 65 0a $letter:$sfile.
30f80 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b . }.. if {
30f90 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 ![file exists $
30fa0 66 69 6c 65 5d 20 7d 20 7b 0a 09 09 73 65 74 20 file] } {...set
30fb0 66 75 6c 6c 66 69 6c 65 20 5b 63 70 72 6f 6a 65 fullfile [cproje
30fc0 63 74 3a 3a 54 72 79 54 6f 46 69 6e 64 50 61 74 ct::TryToFindPat
30fd0 68 20 24 66 69 6c 65 5d 0a 09 09 69 66 20 7b 20 h $file]...if {
30fe0 24 66 75 6c 6c 66 69 6c 65 20 21 3d 20 22 22 20 $fullfile != ""
30ff0 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 20 66 69 } {... set fi
31000 6c 65 20 24 66 75 6c 6c 66 69 6c 65 0a 09 09 7d le $fullfile...}
31010 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 .. }.. set
31020 20 66 69 6c 65 20 5b 66 69 6c 65 20 74 61 69 6c file [file tail
31030 20 24 66 69 6c 65 5d 0a 09 20 20 20 20 69 66 20 $file].. if
31040 7b 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20 { ![file exists
31050 24 66 69 6c 65 5d 20 26 26 20 5b 66 69 6c 65 20 $file] && [file
31060 65 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 exists [file joi
31070 6e 20 24 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 n $options(defau
31080 6c 74 64 69 72 29 20 24 66 69 6c 65 5d 5d 20 7d ltdir) $file]] }
31090 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 20 5b 66 {...set file [f
310a0 69 6c 65 20 6a 6f 69 6e 20 24 6f 70 74 69 6f 6e ile join $option
310b0 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 24 66 s(defaultdir) $f
310c0 69 6c 65 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 ile].. }..
310d0 20 69 66 20 7b 20 21 5b 66 69 6c 65 20 65 78 69 if { ![file exi
310e0 73 74 73 20 24 66 69 6c 65 5d 20 7d 20 7b 0a 09 sts $file] } {..
310f0 09 66 6f 72 65 61 63 68 20 66 69 6c 65 46 20 24 .foreach fileF $
31100 57 69 6e 64 6f 77 46 69 6c 65 73 4c 69 73 74 20 WindowFilesList
31110 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 66 69 {... if { [fi
31120 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 46 5d 20 le tail $fileF]
31130 65 71 20 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 eq $file } {...
31140 20 20 20 20 20 20 20 73 65 74 20 66 69 6c 65 20 set file
31150 24 66 69 6c 65 46 0a 09 09 20 20 20 20 20 20 20 $fileF...
31160 20 62 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 break... }..
31170 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 .}.. }.. i
31180 66 20 7b 20 21 5b 66 69 6c 65 20 65 78 69 73 74 f { ![file exist
31190 73 20 24 66 69 6c 65 5d 20 7d 20 7b 0a 09 09 66 s $file] } {...f
311a0 6f 72 65 61 63 68 20 69 20 24 6f 70 74 69 6f 6e oreach i $option
311b0 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 s(RecentFilesL)
311c0 7b 0a 09 09 20 20 20 20 73 65 74 20 66 69 6c 65 {... set file
311d0 46 20 5b 6c 69 6e 64 65 78 20 24 69 20 30 5d 0a F [lindex $i 0].
311e0 09 09 20 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 .. if { [file
311f0 20 74 61 69 6c 20 24 66 69 6c 65 46 5d 20 65 71 tail $fileF] eq
31200 20 24 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 20 $file } {...
31210 20 20 20 20 20 73 65 74 20 66 69 6c 65 20 24 66 set file $f
31220 69 6c 65 46 0a 09 09 20 20 20 20 20 20 20 20 62 ileF... b
31230 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d reak... }...}
31240 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 .. }.. if
31250 7b 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 { [file exists $
31260 66 69 6c 65 5d 20 7d 20 7b 0a 09 09 73 65 74 20 file] } {...set
31270 66 69 6c 65 20 5b 66 69 6c 65 6e 6f 72 6d 61 6c file [filenormal
31280 69 7a 65 20 24 66 69 6c 65 5d 0a 09 09 69 66 20 ize $file]...if
31290 7b 20 24 66 69 6c 65 20 21 3d 20 24 63 75 72 72 { $file != $curr
312a0 65 6e 74 66 69 6c 65 20 7d 20 7b 0a 09 09 20 20 entfile } {...
312b0 20 20 4f 70 65 6e 46 69 6c 65 46 20 24 66 69 6c OpenFileF $fil
312c0 65 0a 09 09 7d 0a 09 09 24 74 65 78 74 20 73 65 e...}...$text se
312d0 65 20 24 6c 69 6e 65 2e 30 0a 09 09 24 74 65 78 e $line.0...$tex
312e0 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 t mark set inser
312f0 74 20 24 6c 69 6e 65 2e 30 0a 09 09 66 6f 63 75 t $line.0...focu
31300 73 20 24 74 65 78 74 0a 0a 09 09 69 66 20 7b 20 s $text....if {
31310 5b 72 65 67 65 78 70 20 7b 5e 5c 23 28 5b 30 2d [regexp {^\#([0-
31320 39 5d 2b 29 7d 20 24 64 61 74 61 20 7b 7d 20 73 9]+)} $data {} s
31330 74 61 63 6b 74 72 61 63 65 5d 20 7d 20 7b 0a 09 tacktrace] } {..
31340 09 20 20 20 20 45 76 61 6c 52 65 6d 6f 74 65 20 . EvalRemote
31350 22 66 72 61 6d 65 20 24 73 74 61 63 6b 74 72 61 "frame $stacktra
31360 63 65 22 0a 09 09 7d 0a 09 09 72 65 74 75 72 6e ce"...}...return
31370 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d .. }..}. }
31380 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
31390 67 67 65 72 3a 3a 44 65 6c 65 74 65 50 72 65 76 gger::DeletePrev
313a0 69 6f 75 73 57 6f 72 64 20 7b 7d 20 7b 0a 20 20 iousWord {} {.
313b0 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
313c0 20 20 20 20 0a 20 20 20 20 69 66 20 7b 5b 24 74 . if {[$t
313d0 65 78 74 20 74 61 67 20 6e 65 78 74 72 61 6e 67 ext tag nextrang
313e0 65 20 73 65 6c 20 31 2e 30 20 65 6e 64 5d 20 6e e sel 1.0 end] n
313f0 65 20 22 22 7d 20 7b 0a 09 24 74 65 78 74 20 64 e ""} {..$text d
31400 65 6c 65 74 65 20 73 65 6c 2e 66 69 72 73 74 20 elete sel.first
31410 73 65 6c 2e 6c 61 73 74 0a 20 20 20 20 7d 20 65 sel.last. } e
31420 6c 73 65 69 66 20 7b 5b 24 74 65 78 74 20 63 6f lseif {[$text co
31430 6d 70 61 72 65 20 69 6e 73 65 72 74 20 21 3d 20 mpare insert !=
31440 31 2e 30 5d 7d 20 7b 0a 09 73 65 74 20 69 70 6f 1.0]} {..set ipo
31450 73 20 5b 74 6b 3a 3a 54 65 78 74 50 72 65 76 50 s [tk::TextPrevP
31460 6f 73 20 24 74 65 78 74 20 69 6e 73 65 72 74 20 os $text insert
31470 74 63 6c 5f 73 74 61 72 74 4f 66 50 72 65 76 69 tcl_startOfPrevi
31480 6f 75 73 57 6f 72 64 5d 0a 09 24 74 65 78 74 20 ousWord]..$text
31490 64 65 6c 65 74 65 20 24 69 70 6f 73 20 69 6e 73 delete $ipos ins
314a0 65 72 74 2d 31 63 0a 09 24 74 65 78 74 20 73 65 ert-1c..$text se
314b0 65 20 69 6e 73 65 72 74 0a 20 20 20 20 7d 0a 7d e insert. }.}
314c0 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
314d0 65 72 3a 3a 70 61 73 74 65 5f 69 6d 61 67 65 5f er::paste_image_
314e0 73 65 6c 65 63 74 69 6f 6e 5f 67 65 74 5f 64 69 selection_get_di
314f0 72 20 7b 20 77 20 7d 20 7b 0a 0a 20 20 20 20 73 r { w } {.. s
31500 65 74 20 64 69 72 20 5b 24 77 20 67 69 76 65 5f et dir [$w give_
31510 75 73 65 72 76 61 72 5f 76 61 6c 75 65 20 64 69 uservar_value di
31520 72 5d 0a 20 20 20 20 73 65 74 20 64 69 72 20 5b r]. set dir [
31530 74 6b 5f 63 68 6f 6f 73 65 44 69 72 65 63 74 6f tk_chooseDirecto
31540 72 79 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 ry -initialdir $
31550 64 69 72 20 2d 6d 75 73 74 65 78 69 73 74 20 31 dir -mustexist 1
31560 20 5c 0a 09 20 20 20 20 2d 70 61 72 65 6e 74 20 \.. -parent
31570 24 77 20 2d 74 69 74 6c 65 20 5b 5f 20 22 43 68 $w -title [_ "Ch
31580 6f 6f 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 oose directory t
31590 6f 20 73 61 76 65 20 69 6d 61 67 65 22 5d 5d 0a o save image"]].
315a0 20 20 20 20 69 66 20 7b 20 24 64 69 72 20 65 71 if { $dir eq
315b0 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d "" } { return }
315c0 0a 20 20 20 20 24 77 20 73 65 74 5f 75 73 65 72 . $w set_user
315d0 76 61 72 5f 76 61 6c 75 65 20 64 69 72 20 24 64 var_value dir $d
315e0 69 72 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 ir.}..proc RamDe
315f0 62 75 67 67 65 72 3a 3a 70 61 73 74 65 5f 69 6d bugger::paste_im
31600 61 67 65 5f 73 65 6c 65 63 74 69 6f 6e 20 7b 7d age_selection {}
31610 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
31620 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
31630 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 e currentfile.
31640 20 20 76 61 72 69 61 62 6c 65 20 70 61 73 74 65 variable paste
31650 5f 69 6d 61 67 65 5f 73 65 6c 65 63 74 69 6f 6e _image_selection
31660 5f 64 69 72 4c 69 73 74 0a 20 20 20 20 76 61 72 _dirList. var
31670 69 61 62 6c 65 20 70 61 73 74 65 5f 69 6d 61 67 iable paste_imag
31680 65 5f 73 65 6c 65 63 74 69 6f 6e 5f 66 69 6c 65 e_selection_file
31690 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 65 72 . . set er
316a0 72 20 5b 63 61 74 63 68 20 7b 20 63 75 3a 3a 69 r [catch { cu::i
316b0 6d 67 3a 3a 63 6c 69 70 62 6f 61 72 64 20 67 65 mg::clipboard ge
316c0 74 20 2d 74 79 70 65 20 74 63 6c 69 6d 61 67 65 t -type tclimage
316d0 20 7d 20 69 6d 67 5d 0a 20 20 20 20 69 66 20 7b } img]. if {
316e0 20 24 65 72 72 20 7d 20 7b 0a 09 74 6b 5f 6d 65 $err } {..tk_me
316f0 73 73 61 67 65 42 6f 78 20 2d 6d 65 73 73 61 67 ssageBox -messag
31700 65 20 5b 5f 20 22 43 6f 75 6c 64 20 6e 6f 74 20 e [_ "Could not
31710 72 65 74 72 69 65 76 65 20 69 6d 61 67 65 22 5d retrieve image"]
31720 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 ..return. }.
31730 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 if { [info ex
31740 69 73 74 73 20 70 61 73 74 65 5f 69 6d 61 67 65 ists paste_image
31750 5f 73 65 6c 65 63 74 69 6f 6e 5f 64 69 72 4c 69 _selection_dirLi
31760 73 74 5d 20 7d 20 7b 0a 09 73 65 74 20 64 69 72 st] } {..set dir
31770 4c 69 73 74 20 24 70 61 73 74 65 5f 69 6d 61 67 List $paste_imag
31780 65 5f 73 65 6c 65 63 74 69 6f 6e 5f 64 69 72 4c e_selection_dirL
31790 69 73 74 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b ist. } else {
317a0 0a 09 73 65 74 20 64 69 72 4c 69 73 74 20 22 22 ..set dirList ""
317b0 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
317c0 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 63 [file dirname $c
317d0 75 72 72 65 6e 74 66 69 6c 65 5d 20 6e 69 20 24 urrentfile] ni $
317e0 64 69 72 4c 69 73 74 20 7d 20 7b 0a 09 6c 61 70 dirList } {..lap
317f0 70 65 6e 64 20 64 69 72 4c 69 73 74 20 5b 66 69 pend dirList [fi
31800 6c 65 20 64 69 72 6e 61 6d 65 20 24 63 75 72 72 le dirname $curr
31810 65 6e 74 66 69 6c 65 5d 0a 20 20 20 20 7d 0a 20 entfile]. }.
31820 20 20 20 73 65 74 20 64 69 72 20 5b 6c 69 6e 64 set dir [lind
31830 65 78 20 24 64 69 72 4c 69 73 74 20 30 5d 0a 20 ex $dirList 0].
31840 20 20 20 0a 23 20 20 20 20 20 5c 70 73 66 69 67 .# \psfig
31850 7b 66 69 6c 65 3d 62 73 70 6c 69 6e 65 2d 63 75 {file=bspline-cu
31860 62 69 63 2d 62 65 7a 69 65 72 2e 70 73 7d 0a 23 bic-bezier.ps}.#
31870 20 20 20 20 20 5c 65 70 73 66 66 69 6c 65 7b 66 \epsffile{f
31880 69 67 33 61 2e 70 73 7d 0a 23 20 20 20 20 20 5c ig3a.ps}.# \
31890 69 6e 63 6c 75 64 65 67 72 61 70 68 69 63 73 5b includegraphics[
318a0 77 69 64 74 68 3d 31 31 63 6d 5d 7b 46 69 67 34 width=11cm]{Fig4
318b0 5f 33 2e 65 70 73 7d 0a 23 20 20 20 20 20 5b 5b _3.eps}.# [[
318c0 49 6d 61 67 65 3a 69 6d 61 67 65 5f 6e 61 6d 65 Image:image_name
318d0 2e 70 6e 67 7c 2e 2e 2e 5d 5d 0a 20 20 20 20 0a .png|...]]. .
318e0 20 20 20 20 73 65 74 20 66 69 6c 65 73 4c 69 73 set filesLis
318f0 74 20 22 22 0a 20 20 20 20 0a 20 20 20 20 73 65 t "". . se
31900 74 20 72 65 78 20 7b 5c 5c 70 73 66 69 67 5c 7b t rex {\\psfig\{
31910 2e 2a 3f 66 69 6c 65 3d 28 5b 2d 5c 77 2e 5d 2b .*?file=([-\w.]+
31920 29 2e 2a 5c 7d 7d 0a 20 20 20 20 61 70 70 65 6e ).*\}}. appen
31930 64 20 72 65 78 20 7b 7c 5c 5c 65 70 73 66 66 69 d rex {|\\epsffi
31940 6c 65 2e 2a 3f 5c 7b 28 2e 2b 3f 29 5c 7d 7d 0a le.*?\{(.+?)\}}.
31950 20 20 20 20 61 70 70 65 6e 64 20 72 65 78 20 7b append rex {
31960 7c 5c 5c 69 6e 63 6c 75 64 65 67 72 61 70 68 69 |\\includegraphi
31970 63 73 2e 2a 3f 5c 7b 28 2e 2b 3f 29 5c 7d 7d 0a cs.*?\{(.+?)\}}.
31980 20 20 20 20 61 70 70 65 6e 64 20 72 65 78 20 7b append rex {
31990 7c 49 6d 61 67 65 3a 28 5b 5e 5d 5b 7c 5d 2b 29 |Image:([^][|]+)
319a0 7d 0a 20 20 20 20 73 65 74 20 74 78 74 20 5b 24 }. set txt [$
319b0 74 65 78 74 20 67 65 74 20 22 69 6e 73 65 72 74 text get "insert
319c0 20 6c 69 6e 65 73 74 61 72 74 22 20 22 69 6e 73 linestart" "ins
319d0 65 72 74 20 6c 69 6e 65 65 6e 64 22 5d 0a 20 20 ert lineend"].
319e0 20 20 73 65 74 20 68 61 73 5f 72 65 67 65 78 70 set has_regexp
319f0 20 30 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 0. if { [reg
31a00 65 78 70 20 24 72 65 78 20 24 74 78 74 20 7b 7d exp $rex $txt {}
31a10 20 66 31 20 66 32 20 66 33 20 66 34 5d 20 7d 20 f1 f2 f3 f4] }
31a20 7b 0a 09 69 66 20 7b 20 24 66 31 20 65 71 20 22 {..if { $f1 eq "
31a30 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 " } {.. set f
31a40 31 20 24 66 32 0a 09 20 20 20 20 69 66 20 7b 20 1 $f2.. if {
31a50 24 66 31 20 65 71 20 22 22 20 7d 20 7b 0a 09 09 $f1 eq "" } {...
31a60 73 65 74 20 66 31 20 24 66 33 0a 09 20 20 20 20 set f1 $f3..
31a70 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 66 31 20 }.. if { $f1
31a80 65 71 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 eq "" } {...set
31a90 66 31 20 24 66 34 0a 09 20 20 20 20 7d 0a 09 7d f1 $f4.. }..}
31aa0 0a 09 6c 61 70 70 65 6e 64 20 66 69 6c 65 73 4c ..lappend filesL
31ab0 69 73 74 20 5b 66 69 6c 65 20 72 6f 6f 74 20 24 ist [file root $
31ac0 66 31 5d 2e 70 6e 67 0a 09 73 65 74 20 68 61 73 f1].png..set has
31ad0 5f 72 65 67 65 78 70 20 31 0a 20 20 20 20 7d 0a _regexp 1. }.
31ae0 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 if { [info e
31af0 78 69 73 74 73 20 70 61 73 74 65 5f 69 6d 61 67 xists paste_imag
31b00 65 5f 73 65 6c 65 63 74 69 6f 6e 5f 66 69 6c 65 e_selection_file
31b10 5d 20 7d 20 7b 0a 09 73 65 74 20 64 20 31 0a 09 ] } {..set d 1..
31b20 73 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 74 set file [file t
31b30 61 69 6c 20 5b 66 69 6c 65 20 72 6f 6f 74 20 24 ail [file root $
31b40 70 61 73 74 65 5f 69 6d 61 67 65 5f 73 65 6c 65 paste_image_sele
31b50 63 74 69 6f 6e 5f 66 69 6c 65 5d 5d 0a 09 72 65 ction_file]]..re
31b60 67 65 78 70 20 7b 5e 28 2e 2a 5b 5e 5c 64 5d 29 gexp {^(.*[^\d])
31b70 28 5c 64 2b 29 24 7d 20 24 66 69 6c 65 20 7b 7d (\d+)$} $file {}
31b80 20 66 69 6c 65 20 64 0a 09 69 6e 63 72 20 64 0a file d..incr d.
31b90 09 6c 61 70 70 65 6e 64 20 66 69 6c 65 73 4c 69 .lappend filesLi
31ba0 73 74 20 22 24 66 69 6c 65 24 64 2e 70 6e 67 22 st "$file$d.png"
31bb0 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6c . } else {..l
31bc0 61 70 70 65 6e 64 20 66 69 6c 65 73 4c 69 73 74 append filesList
31bd0 20 69 6d 61 67 65 30 31 2e 70 6e 67 0a 20 20 20 image01.png.
31be0 20 7d 0a 20 20 20 20 73 65 74 20 66 69 6c 65 20 }. set file
31bf0 5b 6c 69 6e 64 65 78 20 24 66 69 6c 65 73 4c 69 [lindex $filesLi
31c00 73 74 20 30 5d 0a 09 0a 20 20 20 20 73 65 74 20 st 0]... set
31c10 77 20 24 74 65 78 74 2e 5f 61 73 6b 0a 20 20 20 w $text._ask.
31c20 20 64 65 73 74 72 6f 79 20 24 77 0a 20 20 20 20 destroy $w.
31c30 64 69 61 6c 6f 67 77 69 6e 5f 73 6e 69 74 20 24 dialogwin_snit $
31c40 77 20 2d 74 69 74 6c 65 20 5b 5f 20 22 43 72 65 w -title [_ "Cre
31c50 61 74 65 20 69 6d 61 67 65 22 5d 0a 20 20 20 20 ate image"].
31c60 73 65 74 20 66 20 5b 24 77 20 67 69 76 65 66 72 set f [$w givefr
31c70 61 6d 65 5d 0a 20 20 20 20 6c 61 62 65 6c 20 24 ame]. label $
31c80 66 2e 6c 31 20 2d 74 65 78 74 20 5b 5f 20 22 53 f.l1 -text [_ "S
31c90 61 76 65 20 63 6c 69 70 62 6f 61 72 64 20 69 6d ave clipboard im
31ca0 61 67 65 20 74 6f 20 66 69 6c 65 22 5d 0a 20 20 age to file"].
31cb0 20 20 0a 20 20 20 20 74 74 6b 3a 3a 63 6f 6d 62 . ttk::comb
31cc0 6f 62 6f 78 20 24 66 2e 65 31 20 2d 74 65 78 74 obox $f.e1 -text
31cd0 76 61 72 69 61 62 6c 65 20 5b 24 77 20 67 69 76 variable [$w giv
31ce0 65 5f 75 73 65 72 76 61 72 20 64 69 72 20 24 64 e_uservar dir $d
31cf0 69 72 5d 20 5c 0a 09 2d 76 61 6c 75 65 73 20 24 ir] \..-values $
31d00 64 69 72 4c 69 73 74 20 2d 77 69 64 74 68 20 34 dirList -width 4
31d10 30 0a 20 20 20 20 74 74 6b 3a 3a 62 75 74 74 6f 0. ttk::butto
31d20 6e 20 24 66 2e 62 31 20 2d 69 6d 61 67 65 20 5b n $f.b1 -image [
31d30 42 69 74 6d 61 70 3a 3a 67 65 74 20 66 6f 6c 64 Bitmap::get fold
31d40 65 72 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 er] -command \..
31d50 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
31d60 72 3a 3a 70 61 73 74 65 5f 69 6d 61 67 65 5f 73 r::paste_image_s
31d70 65 6c 65 63 74 69 6f 6e 5f 67 65 74 5f 64 69 72 election_get_dir
31d80 20 24 77 5d 20 5c 0a 09 2d 73 74 79 6c 65 20 54 $w] \..-style T
31d90 6f 6f 6c 62 75 74 74 6f 6e 0a 20 20 20 20 74 74 oolbutton. tt
31da0 6b 3a 3a 63 6f 6d 62 6f 62 6f 78 20 24 66 2e 65 k::combobox $f.e
31db0 32 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 2 -textvariable
31dc0 5b 24 77 20 67 69 76 65 5f 75 73 65 72 76 61 72 [$w give_uservar
31dd0 20 66 69 6c 65 20 24 66 69 6c 65 5d 20 5c 0a 09 file $file] \..
31de0 2d 76 61 6c 75 65 73 20 24 66 69 6c 65 73 4c 69 -values $filesLi
31df0 73 74 0a 20 20 20 20 0a 20 20 20 20 67 72 69 64 st. . grid
31e00 20 24 66 2e 6c 31 20 2d 20 2d 73 74 69 63 6b 79 $f.l1 - -sticky
31e10 20 77 20 2d 70 61 64 78 20 32 20 2d 70 61 64 79 w -padx 2 -pady
31e20 20 35 0a 20 20 20 20 67 72 69 64 20 24 66 2e 65 5. grid $f.e
31e30 31 20 24 66 2e 62 31 20 2d 73 74 69 63 6b 79 20 1 $f.b1 -sticky
31e40 65 77 20 2d 70 61 64 78 20 32 20 20 2d 70 61 64 ew -padx 2 -pad
31e50 79 20 32 0a 20 20 20 20 67 72 69 64 20 24 66 2e y 2. grid $f.
31e60 65 32 20 2d 73 74 69 63 6b 79 20 65 77 20 2d 70 e2 -sticky ew -p
31e70 61 64 78 20 32 20 2d 70 61 64 79 20 32 0a 20 20 adx 2 -pady 2.
31e80 20 20 0a 20 20 20 20 67 72 69 64 20 63 6f 6c 75 . grid colu
31e90 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 20 30 mnconfigure $f 0
31ea0 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20 0a -weight 1. .
31eb0 20 20 20 20 74 6b 3a 3a 54 61 62 54 6f 57 69 6e tk::TabToWin
31ec0 64 6f 77 20 24 66 2e 65 32 0a 20 20 20 20 62 69 dow $f.e2. bi
31ed0 6e 64 20 24 77 20 3c 52 65 74 75 72 6e 3e 20 5b nd $w <Return> [
31ee0 6c 69 73 74 20 24 77 20 69 6e 76 6f 6b 65 6f 6b list $w invokeok
31ef0 5d 0a 20 20 20 20 73 65 74 20 61 63 74 69 6f 6e ]. set action
31f00 20 5b 24 77 20 63 72 65 61 74 65 77 69 6e 64 6f [$w createwindo
31f10 77 5d 0a 20 20 20 20 77 68 69 6c 65 20 31 20 7b w]. while 1 {
31f20 0a 09 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 21 ..if { $action !
31f30 3d 20 31 20 7d 20 7b 0a 09 20 20 20 20 64 65 73 = 1 } {.. des
31f40 74 72 6f 79 20 24 77 0a 09 20 20 20 20 72 65 74 troy $w.. ret
31f50 75 72 6e 0a 09 7d 0a 09 73 65 74 20 64 69 72 20 urn..}..set dir
31f60 5b 24 77 20 67 69 76 65 5f 75 73 65 72 76 61 72 [$w give_uservar
31f70 5f 76 61 6c 75 65 20 64 69 72 5d 0a 09 73 65 74 _value dir]..set
31f80 20 66 69 6c 65 30 20 5b 24 77 20 67 69 76 65 5f file0 [$w give_
31f90 75 73 65 72 76 61 72 5f 76 61 6c 75 65 20 66 69 uservar_value fi
31fa0 6c 65 5d 0a 09 73 65 74 20 66 69 6c 65 20 5b 66 le]..set file [f
31fb0 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 24 66 ile join $dir $f
31fc0 69 6c 65 30 5d 0a 09 69 66 20 7b 20 21 5b 66 69 ile0]..if { ![fi
31fd0 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b le isdirectory [
31fe0 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 66 69 file dirname $fi
31ff0 6c 65 5d 5d 20 7d 20 7b 0a 09 20 20 20 20 74 6b le]] } {.. tk
32000 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d 6d 65 73 _messageBox -mes
32010 73 61 67 65 20 5b 5f 20 22 44 69 72 65 63 74 6f sage [_ "Directo
32020 72 79 20 27 25 73 27 20 69 73 20 6e 6f 74 20 63 ry '%s' is not c
32030 6f 72 72 65 63 74 22 20 5c 0a 09 09 20 20 20 20 orrect" \...
32040 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 66 [file dirname $f
32050 69 6c 65 5d 5d 0a 09 20 20 20 20 73 65 74 20 61 ile]].. set a
32060 63 74 69 6f 6e 20 5b 24 77 20 77 61 69 74 66 6f ction [$w waitfo
32070 72 77 69 6e 64 6f 77 5d 0a 09 20 20 20 20 63 6f rwindow].. co
32080 6e 74 69 6e 75 65 0a 09 7d 0a 09 69 66 20 7b 20 ntinue..}..if {
32090 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 66 69 [file exists $fi
320a0 6c 65 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 le] } {.. set
320b0 20 74 20 5b 5f 20 22 46 69 6c 65 20 27 25 73 27 t [_ "File '%s'
320c0 20 65 78 69 73 74 73 2e 20 4f 76 65 72 77 72 69 exists. Overwri
320d0 74 65 3f 22 20 24 66 69 6c 65 5d 0a 09 20 20 20 te?" $file]..
320e0 20 73 65 74 20 72 65 74 76 61 6c 20 5b 73 6e 69 set retval [sni
320f0 74 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d 64 65 t_messageBox -de
32100 66 61 75 6c 74 20 6f 6b 20 2d 69 63 6f 6e 20 71 fault ok -icon q
32110 75 65 73 74 69 6f 6e 20 5c 0a 09 09 20 20 20 20 uestion \...
32120 2d 6d 65 73 73 61 67 65 20 24 74 20 5c 0a 09 09 -message $t \...
32130 20 20 20 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63 -type okcanc
32140 65 6c 20 2d 70 61 72 65 6e 74 20 24 77 20 2d 74 el -parent $w -t
32150 69 74 6c 65 20 5b 5f 20 22 6f 76 65 72 77 72 69 itle [_ "overwri
32160 74 65 22 5d 5d 0a 09 20 20 20 20 69 66 20 7b 20 te"]].. if {
32170 24 72 65 74 76 61 6c 20 65 71 20 22 63 61 6e 63 $retval eq "canc
32180 65 6c 22 20 7d 20 7b 0a 09 09 73 65 74 20 61 63 el" } {...set ac
32190 74 69 6f 6e 20 5b 24 77 20 77 61 69 74 66 6f 72 tion [$w waitfor
321a0 77 69 6e 64 6f 77 5d 20 20 20 20 0a 09 09 63 6f window] ...co
321b0 6e 74 69 6e 75 65 0a 09 20 20 20 20 7d 0a 09 7d ntinue.. }..}
321c0 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 ..set err [catch
321d0 20 7b 20 24 69 6d 67 20 77 72 69 74 65 20 24 66 { $img write $f
321e0 69 6c 65 20 2d 66 6f 72 6d 61 74 20 70 6e 67 20 ile -format png
321f0 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 09 69 66 } errstring]..if
32200 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 20 20 20 { $err } {..
32210 20 64 65 73 74 72 6f 79 20 24 77 0a 09 20 20 20 destroy $w..
32220 20 74 6b 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d tk_messageBox -
32230 6d 65 73 73 61 67 65 20 5b 5f 20 22 45 72 72 6f message [_ "Erro
32240 72 20 77 72 69 74 69 6e 67 20 69 6d 61 67 65 20 r writing image
32250 74 6f 20 66 69 6c 65 20 27 25 73 27 22 20 5c 0a to file '%s'" \.
32260 09 09 20 20 20 20 24 66 69 6c 65 5d 0a 09 20 20 .. $file]..
32270 20 20 72 65 74 75 72 6e 0a 09 7d 0a 09 69 6d 61 return..}..ima
32280 67 65 20 64 65 6c 65 74 65 20 24 69 6d 67 0a 09 ge delete $img..
32290 62 72 65 61 6b 0a 20 20 20 20 7d 0a 20 20 20 20 break. }.
322a0 64 65 73 74 72 6f 79 20 24 77 0a 20 20 20 20 0a destroy $w. .
322b0 20 20 20 20 73 65 74 20 70 61 73 74 65 5f 69 6d set paste_im
322c0 61 67 65 5f 73 65 6c 65 63 74 69 6f 6e 5f 64 69 age_selection_di
322d0 72 4c 69 73 74 20 5b 6c 69 6e 73 65 72 74 30 20 rList [linsert0
322e0 24 64 69 72 4c 69 73 74 20 5b 66 69 6c 65 20 64 $dirList [file d
322f0 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 5d 0a 20 irname $file]].
32300 20 20 20 73 65 74 20 70 61 73 74 65 5f 69 6d 61 set paste_ima
32310 67 65 5f 73 65 6c 65 63 74 69 6f 6e 5f 66 69 6c ge_selection_fil
32320 65 20 24 66 69 6c 65 0a 20 20 20 20 0a 20 20 20 e $file. .
32330 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 set filetype [G
32340 69 76 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 iveFileType $cur
32350 72 65 6e 74 66 69 6c 65 5d 0a 0a 20 20 20 20 69 rentfile].. i
32360 66 20 7b 20 21 24 68 61 73 5f 72 65 67 65 78 70 f { !$has_regexp
32370 20 26 26 20 24 66 69 6c 65 74 79 70 65 20 65 71 && $filetype eq
32380 20 22 6c 61 74 65 78 22 20 7d 20 7b 0a 09 73 65 "latex" } {..se
32390 74 20 66 30 20 5b 66 69 6c 65 20 72 6f 6f 74 20 t f0 [file root
323a0 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 [file tail $file
323b0 5d 5d 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 ]]..$text insert
323c0 20 69 6e 73 65 72 74 20 22 5c 5c 62 65 67 69 6e insert "\\begin
323d0 7b 66 69 67 75 72 65 7d 5c 6e 22 0a 09 24 74 65 {figure}\n"..$te
323e0 78 74 20 69 6e 73 65 72 74 20 69 6e 73 65 72 74 xt insert insert
323f0 20 22 5c 5c 69 6e 63 6c 75 64 65 67 72 61 70 68 "\\includegraph
32400 69 63 73 5c 5b 77 69 64 74 68 3d 31 35 63 6d 5c ics\[width=15cm\
32410 5d 7b 24 66 30 7d 5c 6e 22 0a 09 24 74 65 78 74 ]{$f0}\n"..$text
32420 20 69 6e 73 65 72 74 20 69 6e 73 65 72 74 20 22 insert insert "
32430 5c 5c 63 61 70 74 69 6f 6e 7b 74 68 65 20 63 61 \\caption{the ca
32440 70 74 69 6f 6e 7d 5c 6e 22 0a 09 24 74 65 78 74 ption}\n"..$text
32450 20 69 6e 73 65 72 74 20 69 6e 73 65 72 74 20 22 insert insert "
32460 5c 5c 5c 65 6e 64 7b 66 69 67 75 72 65 7d 5c 6e \\\end{figure}\n
32470 22 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b ". } elseif {
32480 20 21 24 68 61 73 5f 72 65 67 65 78 70 20 26 26 !$has_regexp &&
32490 20 24 66 69 6c 65 74 79 70 65 20 65 71 20 22 77 $filetype eq "w
324a0 69 6b 69 22 20 7d 20 7b 0a 09 73 65 74 20 66 30 iki" } {..set f0
324b0 20 5b 66 69 6c 65 20 72 6f 6f 74 20 5b 66 69 6c [file root [fil
324c0 65 20 74 61 69 6c 20 24 66 69 6c 65 5d 5d 0a 09 e tail $file]]..
324d0 24 74 65 78 74 20 69 6e 73 65 72 74 20 69 6e 73 $text insert ins
324e0 65 72 74 20 22 5c 7b 7c 20 73 74 79 6c 65 3d 5c ert "\{| style=\
324f0 22 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65 6e "text-align: cen
32500 74 65 72 3b 20 62 6f 72 64 65 72 3a 20 31 70 78 ter; border: 1px
32510 20 73 6f 6c 69 64 20 23 42 42 42 3b 20 6d 61 72 solid #BBB; mar
32520 67 69 6e 3a 20 31 65 6d 20 61 75 74 6f 3b 20 77 gin: 1em auto; w
32530 69 64 74 68 3a 20 31 30 30 25 3b 5c 22 5c 6e 22 idth: 100%;\"\n"
32540 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 69 ..$text insert i
32550 6e 73 65 72 74 20 22 7c 2d 5c 6e 22 0a 09 24 74 nsert "|-\n"..$t
32560 65 78 74 20 69 6e 73 65 72 74 20 69 6e 73 65 72 ext insert inser
32570 74 20 22 7c 5c 5b 5c 5b 49 6d 61 67 65 3a 24 66 t "|\[\[Image:$f
32580 30 2e 70 6e 67 7c 36 30 30 70 78 7c 6d 79 20 6f 0.png|600px|my o
32590 77 6e 20 63 61 70 74 69 6f 6e 5c 5d 5c 5d 5c 6e wn caption\]\]\n
325a0 22 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 "..$text insert
325b0 69 6e 73 65 72 74 20 22 7c 2d 20 73 74 79 6c 65 insert "|- style
325c0 3d 5c 22 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 =\"text-align: c
325d0 65 6e 74 65 72 3b 20 66 6f 6e 74 2d 73 69 7a 65 enter; font-size
325e0 3a 20 38 36 25 3b 5c 22 5c 6e 22 0a 09 24 74 65 : 86%;\"\n"..$te
325f0 78 74 20 69 6e 73 65 72 74 20 69 6e 73 65 72 74 xt insert insert
32600 20 22 7c 20 63 6f 6c 73 70 61 6e 3d 27 31 27 20 "| colspan='1'
32610 7c 20 6d 79 20 6f 77 6e 20 63 61 70 74 69 6f 6e | my own caption
32620 20 74 65 78 74 5c 6e 22 0a 09 24 74 65 78 74 20 text\n"..$text
32630 69 6e 73 65 72 74 20 69 6e 73 65 72 74 20 22 7c insert insert "|
32640 5c 7d 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 \}\n". }.
32650 53 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 43 SetMessage [_ "C
32660 72 65 61 74 65 64 20 69 6d 61 67 65 20 66 69 6c reated image fil
32670 65 20 27 25 73 27 22 20 24 66 69 6c 65 5d 0a 7d e '%s'" $file].}
32680 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
32690 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 74 65 er::CutCopyPaste
326a0 54 65 78 74 20 7b 20 77 68 61 74 20 61 72 67 73 Text { what args
326b0 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
326c0 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 e text. varia
326d0 62 6c 65 20 6f 6c 64 50 61 73 74 65 53 74 61 63 ble oldPasteStac
326e0 6b 0a 0a 20 20 20 20 73 77 69 74 63 68 20 24 77 k.. switch $w
326f0 68 61 74 20 7b 0a 09 75 6e 64 6f 20 7b 0a 09 20 hat {..undo {..
32700 20 20 20 24 74 65 78 74 20 75 6e 64 6f 0a 09 7d $text undo..}
32710 0a 09 63 75 74 20 7b 0a 09 20 20 20 20 74 6b 5f ..cut {.. tk_
32720 74 65 78 74 43 75 74 20 24 74 65 78 74 0a 09 20 textCut $text..
32730 20 20 20 69 66 20 7b 21 5b 63 61 74 63 68 20 7b if {![catch {
32740 3a 3a 74 6b 3a 3a 47 65 74 53 65 6c 65 63 74 69 ::tk::GetSelecti
32750 6f 6e 20 24 74 65 78 74 20 43 4c 49 50 42 4f 41 on $text CLIPBOA
32760 52 44 7d 20 73 65 6c 5d 7d 20 7b 0a 09 09 73 65 RD} sel]} {...se
32770 74 20 73 65 6c 20 5b 73 74 72 69 6e 67 20 6d 61 t sel [string ma
32780 70 20 5b 6c 69 73 74 20 22 5c 74 22 20 22 20 20 p [list "\t" "
32790 20 20 20 20 20 20 22 5d 20 24 73 65 6c 5d 0a 09 "] $sel]..
327a0 09 69 66 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 .if { [set ipos
327b0 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 [lsearch -exact
327c0 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20 24 $oldPasteStack $
327d0 73 65 6c 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a sel]] != -1 } {.
327e0 09 09 20 20 20 20 73 65 74 20 6f 6c 64 50 61 73 .. set oldPas
327f0 74 65 53 74 61 63 6b 20 5b 6c 72 65 70 6c 61 63 teStack [lreplac
32800 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b e $oldPasteStack
32810 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 09 $ipos $ipos]...
32820 7d 0a 09 09 73 65 74 20 6f 6c 64 50 61 73 74 65 }...set oldPaste
32830 53 74 61 63 6b 20 5b 6c 69 6e 73 65 72 74 20 24 Stack [linsert $
32840 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20 30 20 oldPasteStack 0
32850 24 73 65 6c 5d 0a 09 09 73 65 74 20 6f 6c 64 50 $sel]...set oldP
32860 61 73 74 65 53 74 61 63 6b 20 5b 6c 72 61 6e 67 asteStack [lrang
32870 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b e $oldPasteStack
32880 20 30 20 31 32 5d 0a 09 20 20 20 20 7d 0a 09 7d 0 12].. }..}
32890 0a 09 63 6f 70 79 20 7b 0a 09 20 20 20 20 74 6b ..copy {.. tk
328a0 5f 74 65 78 74 43 6f 70 79 20 24 74 65 78 74 0a _textCopy $text.
328b0 09 20 20 20 20 69 66 20 7b 21 5b 63 61 74 63 68 . if {![catch
328c0 20 7b 3a 3a 74 6b 3a 3a 47 65 74 53 65 6c 65 63 {::tk::GetSelec
328d0 74 69 6f 6e 20 24 74 65 78 74 20 43 4c 49 50 42 tion $text CLIPB
328e0 4f 41 52 44 7d 20 73 65 6c 5d 7d 20 7b 0a 09 09 OARD} sel]} {...
328f0 73 65 74 20 73 65 6c 20 5b 73 74 72 69 6e 67 20 set sel [string
32900 6d 61 70 20 5b 6c 69 73 74 20 22 5c 74 22 20 22 map [list "\t" "
32910 20 20 20 20 20 20 20 20 22 5d 20 24 73 65 6c 5d "] $sel]
32920 0a 09 09 69 66 20 7b 20 5b 73 65 74 20 69 70 6f ...if { [set ipo
32930 73 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 s [lsearch -exac
32940 74 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b t $oldPasteStack
32950 20 24 73 65 6c 5d 5d 20 21 3d 20 2d 31 20 7d 20 $sel]] != -1 }
32960 7b 0a 09 09 20 20 20 20 73 65 74 20 6f 6c 64 50 {... set oldP
32970 61 73 74 65 53 74 61 63 6b 20 5b 6c 72 65 70 6c asteStack [lrepl
32980 61 63 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 ace $oldPasteSta
32990 63 6b 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a ck $ipos $ipos].
329a0 09 09 7d 0a 09 09 73 65 74 20 6f 6c 64 50 61 73 ..}...set oldPas
329b0 74 65 53 74 61 63 6b 20 5b 6c 69 6e 73 65 72 74 teStack [linsert
329c0 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20 $oldPasteStack
329d0 30 20 24 73 65 6c 5d 0a 09 09 73 65 74 20 6f 6c 0 $sel]...set ol
329e0 64 50 61 73 74 65 53 74 61 63 6b 20 5b 6c 72 61 dPasteStack [lra
329f0 6e 67 65 20 24 6f 6c 64 50 61 73 74 65 53 74 61 nge $oldPasteSta
32a00 63 6b 20 30 20 31 32 5d 0a 09 20 20 20 20 7d 0a ck 0 12].. }.
32a10 09 7d 0a 09 70 61 73 74 65 20 7b 0a 09 20 20 20 .}..paste {..
32a20 20 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 scan [$text ind
32a30 65 78 20 69 6e 73 65 72 74 5d 20 22 25 64 2e 25 ex insert] "%d.%
32a40 64 22 20 6c 69 6e 65 20 2d 0a 09 20 20 20 20 69 d" line -.. i
32a50 66 20 7b 20 5b 70 61 63 6b 61 67 65 20 76 63 6f f { [package vco
32a60 6d 70 61 72 65 20 24 3a 3a 74 63 6c 5f 76 65 72 mpare $::tcl_ver
32a70 73 69 6f 6e 20 38 2e 34 5d 20 3e 3d 20 30 20 7d sion 8.4] >= 0 }
32a80 20 7b 0a 09 09 23 20 70 61 73 74 65 20 69 73 20 {...# paste is
32a90 6d 61 64 65 20 68 65 72 65 20 69 6e 20 6f 72 64 made here in ord
32aa0 65 72 20 74 6f 20 73 75 62 73 74 69 74 75 74 65 er to substitute
32ab0 20 74 61 62 73 20 62 79 20 73 70 61 63 65 73 0a tabs by spaces.
32ac0 09 09 67 6c 6f 62 61 6c 20 74 63 6c 5f 70 6c 61 ..global tcl_pla
32ad0 74 66 6f 72 6d 0a 09 09 69 66 20 7b 21 5b 63 61 tform...if {![ca
32ae0 74 63 68 20 7b 3a 3a 74 6b 3a 3a 47 65 74 53 65 tch {::tk::GetSe
32af0 6c 65 63 74 69 6f 6e 20 24 74 65 78 74 20 43 4c lection $text CL
32b00 49 50 42 4f 41 52 44 7d 20 73 65 6c 5d 7d 20 7b IPBOARD} sel]} {
32b10 0a 09 09 20 20 20 20 73 65 74 20 6d 61 70 20 5b ... set map [
32b20 6c 69 73 74 20 22 5c 74 22 20 22 20 20 20 20 20 list "\t" "
32b30 20 20 20 22 20 5c 75 30 30 61 30 20 22 20 22 20 " \u00a0 " "
32b40 5c 75 32 30 30 62 20 22 20 22 20 5c 75 32 30 36 \u200b " " \u206
32b50 30 20 22 20 22 20 5c 75 33 30 30 30 20 22 22 20 0 " " \u3000 ""
32b60 5c 75 66 65 66 66 20 22 20 22 5d 0a 09 09 20 20 \ufeff " "]...
32b70 20 20 73 65 74 20 73 65 6c 20 5b 73 74 72 69 6e set sel [strin
32b80 67 20 74 72 69 6d 72 69 67 68 74 20 5b 73 74 72 g trimright [str
32b90 69 6e 67 20 6d 61 70 20 24 6d 61 70 20 24 73 65 ing map $map $se
32ba0 6c 5d 5d 0a 09 09 20 20 20 20 73 65 74 20 6f 6c l]]... set ol
32bb0 64 53 65 70 61 72 61 74 6f 72 20 5b 24 74 65 78 dSeparator [$tex
32bc0 74 20 63 67 65 74 20 2d 61 75 74 6f 73 65 70 61 t cget -autosepa
32bd0 72 61 74 6f 72 73 5d 0a 09 09 20 20 20 20 69 66 rators]... if
32be0 20 7b 20 24 6f 6c 64 53 65 70 61 72 61 74 6f 72 { $oldSeparator
32bf0 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 24 } {... $
32c00 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d text configure -
32c10 61 75 74 6f 73 65 70 61 72 61 74 6f 72 73 20 30 autoseparators 0
32c20 0a 09 09 20 20 20 20 7d 0a 09 09 20 20 20 20 24 ... }... $
32c30 74 65 78 74 20 65 64 69 74 20 73 65 70 61 72 61 text edit separa
32c40 74 6f 72 0a 09 09 20 20 20 20 23 20 6f 6e 6c 79 tor... # only
32c50 20 64 65 6c 65 74 65 20 73 65 6c 65 63 74 69 6f delete selectio
32c60 6e 20 69 66 20 69 74 20 69 73 20 69 6e 20 74 68 n if it is in th
32c70 65 20 73 61 6d 65 20 6c 69 6e 65 20 74 68 61 6e e same line than
32c80 20 69 6e 73 65 72 74 69 6f 6e 0a 09 09 20 20 20 insertion...
32c90 20 63 61 74 63 68 20 7b 0a 09 09 20 20 20 20 20 catch {...
32ca0 20 20 20 69 66 20 7b 20 5b 24 74 65 78 74 20 63 if { [$text c
32cb0 6f 6d 70 61 72 65 20 22 69 6e 73 65 72 74 20 6c ompare "insert l
32cc0 69 6e 65 73 74 61 72 74 22 20 3d 3d 20 22 73 65 inestart" == "se
32cd0 6c 2e 66 69 72 73 74 20 6c 69 6e 65 73 74 61 72 l.first linestar
32ce0 74 22 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 t"] } {...
32cf0 20 20 20 20 20 20 24 74 65 78 74 20 64 65 6c 65 $text dele
32d00 74 65 20 73 65 6c 2e 66 69 72 73 74 20 73 65 6c te sel.first sel
32d10 2e 6c 61 73 74 0a 09 09 20 20 20 20 20 20 20 20 .last...
32d20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 20 20 20 20 }... }...
32d30 24 74 65 78 74 20 69 6e 73 65 72 74 20 69 6e 73 $text insert ins
32d40 65 72 74 20 24 73 65 6c 0a 09 09 20 20 20 20 24 ert $sel... $
32d50 74 65 78 74 20 65 64 69 74 20 73 65 70 61 72 61 text edit separa
32d60 74 6f 72 0a 09 09 20 20 20 20 69 66 20 7b 20 24 tor... if { $
32d70 6f 6c 64 53 65 70 61 72 61 74 6f 72 20 7d 20 7b oldSeparator } {
32d80 0a 09 09 20 20 20 20 20 20 20 20 24 74 65 78 74 ... $text
32d90 20 63 6f 6e 66 69 67 75 72 65 20 2d 61 75 74 6f configure -auto
32da0 73 65 70 61 72 61 74 6f 72 73 20 31 0a 09 09 20 separators 1...
32db0 20 20 20 7d 0a 09 09 20 20 20 20 69 66 20 7b 20 }... if {
32dc0 5b 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 [set ipos [lsear
32dd0 63 68 20 2d 65 78 61 63 74 20 24 6f 6c 64 50 61 ch -exact $oldPa
32de0 73 74 65 53 74 61 63 6b 20 24 73 65 6c 5d 5d 20 steStack $sel]]
32df0 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 20 != -1 } {...
32e00 20 20 20 20 73 65 74 20 6f 6c 64 50 61 73 74 65 set oldPaste
32e10 53 74 61 63 6b 20 5b 6c 72 65 70 6c 61 63 65 20 Stack [lreplace
32e20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 20 24 $oldPasteStack $
32e30 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 09 20 20 ipos $ipos]...
32e40 20 20 7d 0a 09 09 20 20 20 20 73 65 74 20 6f 6c }... set ol
32e50 64 50 61 73 74 65 53 74 61 63 6b 20 5b 6c 69 6e dPasteStack [lin
32e60 73 65 72 74 20 24 6f 6c 64 50 61 73 74 65 53 74 sert $oldPasteSt
32e70 61 63 6b 20 30 20 24 73 65 6c 5d 0a 09 09 20 20 ack 0 $sel]...
32e80 20 20 73 65 74 20 6f 6c 64 50 61 73 74 65 53 74 set oldPasteSt
32e90 61 63 6b 20 5b 6c 72 61 6e 67 65 20 24 6f 6c 64 ack [lrange $old
32ea0 50 61 73 74 65 53 74 61 63 6b 20 30 20 31 32 5d PasteStack 0 12]
32eb0 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 ...} else {...
32ec0 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 set err [catch
32ed0 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
32ee0 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 package require
32ef0 20 63 6f 6d 70 61 73 73 5f 75 74 69 6c 73 3a 3a compass_utils::
32f00 69 6d 67 0a 09 09 20 20 20 20 20 20 20 20 20 20 img...
32f10 20 20 73 65 74 20 69 73 5f 69 6d 61 67 65 20 5b set is_image [
32f20 63 75 3a 3a 69 6d 67 3a 3a 63 6c 69 70 62 6f 61 cu::img::clipboa
32f30 72 64 20 69 73 69 6d 61 67 65 5d 0a 09 09 20 20 rd isimage]...
32f40 20 20 20 20 20 20 7d 5d 0a 09 09 20 20 20 20 69 }]... i
32f50 66 20 7b 20 21 24 65 72 72 20 26 26 20 24 69 73 f { !$err && $is
32f60 5f 69 6d 61 67 65 20 7d 20 7b 0a 09 09 20 20 20 _image } {...
32f70 20 20 20 20 20 70 61 73 74 65 5f 69 6d 61 67 65 paste_image
32f80 5f 73 65 6c 65 63 74 69 6f 6e 0a 09 09 20 20 20 _selection...
32f90 20 7d 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 6c }...}.. } el
32fa0 73 65 20 7b 0a 09 09 74 6b 5f 74 65 78 74 50 61 se {...tk_textPa
32fb0 73 74 65 20 24 74 65 78 74 0a 09 20 20 20 20 7d ste $text.. }
32fc0 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
32fd0 72 3a 3a 49 6e 64 65 6e 74 4c 69 6e 65 20 24 6c r::IndentLine $l
32fe0 69 6e 65 0a 09 7d 0a 09 70 61 73 74 65 5f 73 74 ine..}..paste_st
32ff0 61 63 6b 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 ack {.. if {
33000 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d [lindex $args 0]
33010 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 ne "" } {...set
33020 20 6d 65 6e 75 20 5b 6c 69 6e 64 65 78 20 24 61 menu [lindex $a
33030 72 67 73 20 30 5d 0a 09 09 24 6d 65 6e 75 20 64 rgs 0]...$menu d
33040 65 6c 65 74 65 20 30 20 65 6e 64 0a 09 20 20 20 elete 0 end..
33050 20 7d 20 65 6c 73 65 20 7b 0a 09 09 69 66 20 7b } else {...if {
33060 20 21 5b 6c 6c 65 6e 67 74 68 20 24 6f 6c 64 50 ![llength $oldP
33070 61 73 74 65 53 74 61 63 6b 5d 20 7d 20 7b 0a 09 asteStack] } {..
33080 09 20 20 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 . WarnWin [_
33090 22 54 68 65 72 65 20 69 73 20 6e 6f 20 6f 6c 64 "There is no old
330a0 20 70 61 73 74 65 20 73 74 61 63 6b 2e 20 49 74 paste stack. It
330b0 20 63 61 6e 20 62 65 20 66 69 6c 6c 65 64 20 77 can be filled w
330c0 69 74 68 20 63 6f 70 79 20 61 6e 64 20 70 61 73 ith copy and pas
330d0 74 65 22 5d 0a 09 09 20 20 20 20 72 65 74 75 72 te"]... retur
330e0 6e 0a 09 09 7d 0a 09 09 73 65 74 20 6d 65 6e 75 n...}...set menu
330f0 20 24 74 65 78 74 2e 6d 65 6e 75 0a 09 09 63 61 $text.menu...ca
33100 74 63 68 20 7b 20 64 65 73 74 72 6f 79 20 24 6d tch { destroy $m
33110 65 6e 75 20 7d 0a 09 09 0a 09 09 6d 65 6e 75 20 enu }......menu
33120 24 6d 65 6e 75 0a 09 20 20 20 20 7d 0a 09 20 20 $menu.. }..
33130 20 20 69 66 20 7b 20 21 5b 6c 6c 65 6e 67 74 68 if { ![llength
33140 20 24 6f 6c 64 50 61 73 74 65 53 74 61 63 6b 5d $oldPasteStack]
33150 20 7d 20 7b 0a 09 09 24 6d 65 6e 75 20 61 64 64 } {...$menu add
33160 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 command -label
33170 5b 5f 20 22 54 68 65 72 65 20 69 73 20 6e 6f 20 [_ "There is no
33180 6f 6c 64 20 70 61 73 74 65 20 73 74 61 63 6b 22 old paste stack"
33190 5d 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 ] -state disable
331a0 64 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66 6f d.. }.. fo
331b0 72 65 61 63 68 20 73 65 6c 20 24 6f 6c 64 50 61 reach sel $oldPa
331c0 73 74 65 53 74 61 63 6b 20 7b 0a 09 09 73 65 74 steStack {...set
331d0 20 6c 61 62 65 6c 20 24 73 65 6c 0a 09 09 69 66 label $sel...if
331e0 20 7b 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 { [string lengt
331f0 68 20 24 6c 61 62 65 6c 5d 20 3e 20 35 30 20 7d h $label] > 50 }
33200 20 7b 0a 09 09 20 20 20 20 73 65 74 20 6c 61 62 {... set lab
33210 65 6c 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 el [string range
33220 20 24 6c 61 62 65 6c 20 30 20 34 37 5d 2e 2e 2e $label 0 47]...
33230 0a 09 09 7d 0a 09 09 24 6d 65 6e 75 20 61 64 64 ...}...$menu add
33240 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 command -label
33250 24 6c 61 62 65 6c 20 2d 63 6f 6d 6d 61 6e 64 20 $label -command
33260 5c 0a 09 09 20 20 20 20 22 5b 6c 69 73 74 20 63 \... "[list c
33270 6c 69 70 62 6f 61 72 64 20 63 6c 65 61 72 5d 20 lipboard clear]
33280 3b 20 5b 6c 69 73 74 20 63 6c 69 70 62 6f 61 72 ; [list clipboar
33290 64 20 61 70 70 65 6e 64 20 24 73 65 6c 5d 20 3b d append $sel] ;
332a0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 RamDebugger::Cu
332b0 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 70 tCopyPasteText p
332c0 61 73 74 65 22 0a 09 20 20 20 20 7d 0a 09 20 20 aste".. }..
332d0 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 if { [lindex $
332e0 61 72 67 73 20 30 5d 20 65 71 20 22 22 20 7d 20 args 0] eq "" }
332f0 7b 0a 09 09 73 65 74 20 62 62 6f 78 20 5b 24 74 {...set bbox [$t
33300 65 78 74 20 62 62 6f 78 20 69 6e 73 65 72 74 5d ext bbox insert]
33310 0a 09 09 69 66 20 7b 20 24 62 62 6f 78 20 65 71 ...if { $bbox eq
33320 20 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 "" } {... se
33330 74 20 78 20 5b 77 69 6e 66 6f 20 70 6f 69 6e 74 t x [winfo point
33340 65 72 78 20 24 74 65 78 74 5d 0a 09 09 20 20 20 erx $text]...
33350 20 73 65 74 20 79 20 5b 77 69 6e 66 6f 20 70 6f set y [winfo po
33360 69 6e 74 65 72 79 20 24 74 65 78 74 5d 0a 09 09 intery $text]...
33370 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 73 } else {... s
33380 65 74 20 78 20 5b 65 78 70 72 20 7b 5b 77 69 6e et x [expr {[win
33390 66 6f 20 72 6f 6f 74 78 20 24 74 65 78 74 5d 2b fo rootx $text]+
333a0 5b 6c 69 6e 64 65 78 20 24 62 62 6f 78 20 30 5d [lindex $bbox 0]
333b0 7d 5d 0a 09 09 20 20 20 20 73 65 74 20 79 20 5b }]... set y [
333c0 65 78 70 72 20 7b 5b 77 69 6e 66 6f 20 72 6f 6f expr {[winfo roo
333d0 74 79 20 24 74 65 78 74 5d 2b 5b 6c 69 6e 64 65 ty $text]+[linde
333e0 78 20 24 62 62 6f 78 20 31 5d 7d 5d 0a 09 09 7d x $bbox 1]}]...}
333f0 0a 09 09 74 6b 5f 70 6f 70 75 70 20 24 6d 65 6e ...tk_popup $men
33400 75 20 24 78 20 24 79 20 30 0a 09 20 20 20 20 7d u $x $y 0.. }
33410 20 65 6c 73 65 20 7b 0a 09 09 24 6d 65 6e 75 20 else {...$menu
33420 61 64 64 20 73 65 70 61 72 61 74 6f 72 0a 09 09 add separator...
33430 24 6d 65 6e 75 20 61 64 64 20 63 68 65 63 6b 62 $menu add checkb
33440 75 74 74 6f 6e 20 2d 6c 61 62 65 6c 20 5b 5f 20 utton -label [_
33450 22 4f 6e 6c 79 20 6d 65 6e 75 22 5d 20 2d 76 61 "Only menu"] -va
33460 72 69 61 62 6c 65 20 5c 0a 09 09 20 20 20 20 5b riable \... [
33470 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 24 6d [winfo parent $m
33480 65 6e 75 5d 20 67 69 76 65 5f 69 73 5f 62 75 74 enu] give_is_but
33490 74 6f 6e 5f 61 63 74 69 76 65 5f 76 61 72 5d 20 ton_active_var]
334a0 5c 0a 09 09 20 20 20 20 2d 6f 6e 76 61 6c 75 65 \... -onvalue
334b0 20 30 20 2d 6f 66 66 76 61 6c 75 65 20 31 0a 09 0 -offvalue 1..
334c0 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 7d }..}. }.}
334d0 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
334e0 65 72 3a 3a 4c 69 73 74 42 6f 78 44 6f 75 62 6c er::ListBoxDoubl
334f0 65 31 20 7b 20 6c 69 73 74 62 20 69 74 65 6d 20 e1 { listb item
33500 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 } {. variable
33510 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 65 options.. se
33520 74 20 64 61 74 61 20 5b 24 6c 69 73 74 62 20 69 t data [$listb i
33530 74 65 6d 63 67 65 74 20 24 69 74 65 6d 20 2d 64 temcget $item -d
33540 61 74 61 5d 0a 20 20 20 20 69 66 20 7b 20 5b 6c ata]. if { [l
33550 69 6e 64 65 78 20 24 64 61 74 61 20 30 5d 20 3d index $data 0] =
33560 3d 20 22 66 6f 6c 64 65 72 22 20 7d 20 7b 0a 09 = "folder" } {..
33570 73 65 74 20 6f 70 74 69 6f 6e 73 28 64 65 66 61 set options(defa
33580 75 6c 74 64 69 72 29 20 5b 6c 69 6e 64 65 78 20 ultdir) [lindex
33590 24 64 61 74 61 20 31 5d 0a 09 46 69 6c 6c 4c 69 $data 1]..FillLi
335a0 73 74 42 6f 78 0a 20 20 20 20 7d 20 65 6c 73 65 stBox. } else
335b0 20 7b 0a 09 4f 70 65 6e 46 69 6c 65 46 20 5b 6c {..OpenFileF [l
335c0 69 6e 64 65 78 20 24 64 61 74 61 20 31 5d 0a 20 index $data 1].
335d0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
335e0 44 65 62 75 67 67 65 72 3a 3a 4c 69 73 74 62 6f Debugger::Listbo
335f0 78 4d 65 6e 75 20 7b 20 6c 69 73 74 62 20 78 20 xMenu { listb x
33600 79 20 69 74 65 6d 20 7d 20 7b 0a 20 20 20 20 76 y item } {. v
33610 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 ariable currentf
33620 69 6c 65 0a 0a 20 20 20 20 73 65 74 20 64 61 74 ile.. set dat
33630 61 20 5b 24 6c 69 73 74 62 20 69 74 65 6d 63 67 a [$listb itemcg
33640 65 74 20 24 69 74 65 6d 20 2d 64 61 74 61 5d 0a et $item -data].
33650 0a 20 20 20 20 63 61 74 63 68 20 7b 20 64 65 73 . catch { des
33660 74 72 6f 79 20 24 6c 69 73 74 62 2e 6d 65 6e 75 troy $listb.menu
33670 20 7d 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 }. set menu
33680 5b 6d 65 6e 75 20 24 6c 69 73 74 62 2e 6d 65 6e [menu $listb.men
33690 75 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 6c 69 u].. if { [li
336a0 6e 64 65 78 20 24 64 61 74 61 20 30 5d 20 3d 3d ndex $data 0] ==
336b0 20 22 66 6f 6c 64 65 72 22 20 7d 20 7b 0a 09 24 "folder" } {..$
336c0 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 menu add command
336d0 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 45 78 70 6c -label [_ "Expl
336e0 6f 72 65 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b ore"] -command [
336f0 63 6f 6e 63 61 74 20 5b 6c 69 73 74 20 73 65 74 concat [list set
33700 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 \...
33710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33730 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
33740 3a 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 :options(default
33750 64 69 72 29 20 5c 0a 09 09 20 20 20 20 20 20 20 dir) \...
33760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33780 20 20 20 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 [lindex
33790 24 64 61 74 61 20 31 5d 5d 20 5c 3b 20 52 61 6d $data 1]] \; Ram
337a0 44 65 62 75 67 67 65 72 3a 3a 46 69 6c 6c 4c 69 Debugger::FillLi
337b0 73 74 42 6f 78 5d 0a 20 20 20 20 7d 20 65 6c 73 stBox]. } els
337c0 65 20 7b 0a 09 73 65 74 20 6e 61 6d 65 20 5b 6c e {..set name [l
337d0 69 6e 64 65 78 20 24 64 61 74 61 20 31 5d 0a 09 index $data 1]..
337e0 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e $menu add comman
337f0 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 4f 70 65 d -label [_ "Ope
33800 6e 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 n"] -command [li
33810 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
33820 4f 70 65 6e 46 69 6c 65 46 20 24 6e 61 6d 65 5d OpenFileF $name]
33830 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d ..$menu add comm
33840 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 4f and -label [_ "O
33850 70 65 6e 20 26 20 44 65 62 75 67 22 5d 20 2d 63 pen & Debug"] -c
33860 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 20 22 5b ommand \.. "[
33870 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
33880 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 24 6e 61 6d ::OpenFileF $nam
33890 65 5d 20 3b 20 52 61 6d 44 65 62 75 67 67 65 72 e] ; RamDebugger
338a0 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 63 ::ContNextGUI rc
338b0 6f 6e 74 22 0a 09 24 6d 65 6e 75 20 61 64 64 20 ont"..$menu add
338c0 73 65 70 61 72 61 74 6f 72 0a 09 24 6d 65 6e 75 separator..$menu
338d0 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 add command -la
338e0 62 65 6c 20 5b 5f 20 22 52 65 69 6e 73 74 72 75 bel [_ "Reinstru
338f0 6d 65 6e 74 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 ment"] -command
33900 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
33910 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 20 5c 0a 09 r::OpenFileF \..
33920 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
33930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33940 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 66 6f -fo
33950 72 63 65 20 32 20 24 6e 61 6d 65 5d 0a 0a 09 73 rce 2 $name]...s
33960 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 et filetype [Giv
33970 65 46 69 6c 65 54 79 70 65 20 24 6e 61 6d 65 5d eFileType $name]
33980 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 ..if { $filetype
33990 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 7d 20 7b 0a == "C/C++" } {.
339a0 09 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 . $menu add s
339b0 65 70 61 72 61 74 6f 72 0a 09 20 20 20 20 73 65 eparator.. se
339c0 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 t w [winfo tople
339d0 76 65 6c 20 24 6c 69 73 74 62 5d 0a 09 20 20 20 vel $listb]..
339e0 20 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 $menu add comma
339f0 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 6f nd -label [_ "Co
33a00 6d 70 69 6c 65 22 5d 20 2d 63 6f 6d 6d 61 6e 64 mpile"] -command
33a10 20 5b 6c 69 73 74 20 63 70 72 6f 6a 65 63 74 3a [list cproject:
33a20 3a 43 6f 6d 70 69 6c 65 20 24 77 20 24 6e 61 6d :Compile $w $nam
33a30 65 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 72 65 67 e]..}..if { [reg
33a40 65 78 70 20 7b 4d 61 6b 65 66 69 6c 2e 2a 5b 5e exp {Makefil.*[^
33a50 7e 5d 24 7d 20 24 6e 61 6d 65 5d 20 7d 20 7b 0a ~]$} $name] } {.
33a60 09 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 . $menu add s
33a70 65 70 61 72 61 74 6f 72 0a 09 20 20 20 20 24 6d eparator.. $m
33a80 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
33a90 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 6f 6d 70 69 -label [_ "Compi
33aa0 6c 65 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c le"] -command [l
33ab0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
33ac0 3a 43 6f 6d 70 69 6c 65 20 24 6e 61 6d 65 5d 0a :Compile $name].
33ad0 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 6b 5f .}. }. tk_
33ae0 70 6f 70 75 70 20 24 6d 65 6e 75 20 24 78 20 24 popup $menu $x $
33af0 79 0a 7d 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 y.}...proc RamDe
33b00 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68 49 6e bugger::SearchIn
33b10 4c 69 73 74 62 6f 78 20 7b 20 6c 69 73 74 62 20 Listbox { listb
33b20 65 76 20 63 68 61 72 20 65 78 65 63 5f 63 61 6c ev char exec_cal
33b30 6c 62 61 63 6b 20 7d 20 7b 0a 20 20 20 20 76 61 lback } {. va
33b40 72 69 61 62 6c 65 20 53 65 61 72 63 68 4c 69 73 riable SearchLis
33b50 74 62 6f 78 53 74 72 69 6e 67 0a 0a 20 20 20 20 tboxString..
33b60 69 66 20 7b 20 24 65 76 20 3d 3d 20 22 55 70 22 if { $ev == "Up"
33b70 20 7c 7c 20 24 65 76 20 3d 3d 20 22 44 6f 77 6e || $ev == "Down
33b80 22 20 7d 20 7b 0a 09 73 65 74 20 73 65 6c 20 5b " } {..set sel [
33b90 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e $listb selection
33ba0 20 67 65 74 5d 0a 09 69 66 20 7b 20 24 73 65 6c get]..if { $sel
33bb0 20 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 != "" } {..
33bc0 73 65 74 20 69 64 78 20 5b 24 6c 69 73 74 62 20 set idx [$listb
33bd0 69 6e 64 65 78 20 24 73 65 6c 5d 0a 09 7d 20 65 index $sel]..} e
33be0 6c 73 65 20 7b 20 73 65 74 20 69 64 78 20 30 20 lse { set idx 0
33bf0 7d 0a 09 24 6c 69 73 74 62 20 73 65 6c 65 63 74 }..$listb select
33c00 69 6f 6e 20 63 6c 65 61 72 0a 09 73 65 74 20 69 ion clear..set i
33c10 64 78 65 6e 64 20 5b 24 6c 69 73 74 62 20 69 6e dxend [$listb in
33c20 64 65 78 20 5b 24 6c 69 73 74 62 20 69 74 65 6d dex [$listb item
33c30 73 20 65 6e 64 5d 5d 0a 09 69 66 20 7b 20 24 65 s end]]..if { $e
33c40 76 20 3d 3d 20 22 55 70 22 20 7d 20 7b 0a 09 20 v == "Up" } {..
33c50 20 20 20 69 6e 63 72 20 69 64 78 20 2d 31 0a 09 incr idx -1..
33c60 20 20 20 20 69 66 20 7b 20 24 69 64 78 20 3c 20 if { $idx <
33c70 30 20 7d 20 7b 20 73 65 74 20 69 64 78 20 24 69 0 } { set idx $i
33c80 64 78 65 6e 64 20 7d 0a 09 7d 20 65 6c 73 65 20 dxend }..} else
33c90 7b 0a 09 20 20 20 20 69 6e 63 72 20 69 64 78 20 {.. incr idx
33ca0 0a 09 20 20 20 20 69 66 20 7b 20 24 69 64 78 20 .. if { $idx
33cb0 3e 20 24 69 64 78 65 6e 64 20 7d 20 7b 20 73 65 > $idxend } { se
33cc0 74 20 69 64 78 20 30 20 7d 0a 09 7d 0a 09 24 6c t idx 0 }..}..$l
33cd0 69 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 73 istb selection s
33ce0 65 74 20 5b 24 6c 69 73 74 62 20 69 74 65 6d 73 et [$listb items
33cf0 20 24 69 64 78 5d 0a 09 24 6c 69 73 74 62 20 73 $idx]..$listb s
33d00 65 65 20 5b 24 6c 69 73 74 62 20 69 74 65 6d 73 ee [$listb items
33d10 20 24 69 64 78 5d 0a 09 72 65 74 75 72 6e 0a 20 $idx]..return.
33d20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 65 } elseif { $e
33d30 76 20 3d 3d 20 22 48 6f 6d 65 22 20 7d 20 7b 0a v == "Home" } {.
33d40 09 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f .$listb selectio
33d50 6e 20 63 6c 65 61 72 0a 09 24 6c 69 73 74 62 20 n clear..$listb
33d60 73 65 6c 65 63 74 69 6f 6e 20 73 65 74 20 5b 24 selection set [$
33d70 6c 69 73 74 62 20 69 74 65 6d 73 20 30 5d 0a 09 listb items 0]..
33d80 24 6c 69 73 74 62 20 73 65 65 20 5b 24 6c 69 73 $listb see [$lis
33d90 74 62 20 69 74 65 6d 73 20 30 5d 0a 20 20 20 20 tb items 0].
33da0 7d 20 65 6c 73 65 69 66 20 7b 20 24 65 76 20 3d } elseif { $ev =
33db0 3d 20 22 45 6e 64 22 20 7d 20 7b 0a 09 24 6c 69 = "End" } {..$li
33dc0 73 74 62 20 73 65 6c 65 63 74 69 6f 6e 20 63 6c stb selection cl
33dd0 65 61 72 0a 09 24 6c 69 73 74 62 20 73 65 6c 65 ear..$listb sele
33de0 63 74 69 6f 6e 20 73 65 74 20 5b 24 6c 69 73 74 ction set [$list
33df0 62 20 69 74 65 6d 73 20 65 6e 64 5d 0a 09 24 6c b items end]..$l
33e00 69 73 74 62 20 73 65 65 20 5b 24 6c 69 73 74 62 istb see [$listb
33e10 20 69 74 65 6d 73 20 65 6e 64 5d 0a 09 72 65 74 items end]..ret
33e20 75 72 6e 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 urn. } elseif
33e30 20 7b 20 24 65 76 20 3d 3d 20 22 52 65 74 75 72 { $ev == "Retur
33e40 6e 22 20 7d 20 7b 0a 09 75 70 6c 65 76 65 6c 20 n" } {..uplevel
33e50 5c 23 30 20 5b 6c 69 73 74 20 24 65 78 65 63 5f \#0 [list $exec_
33e60 63 61 6c 6c 62 61 63 6b 20 24 6c 69 73 74 62 20 callback $listb
33e70 5b 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f [$listb selectio
33e80 6e 20 67 65 74 5d 5d 0a 09 72 65 74 75 72 6e 0a n get]]..return.
33e90 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 } elseif { $
33ea0 65 76 20 3d 3d 20 22 42 61 63 6b 53 70 61 63 65 ev == "BackSpace
33eb0 22 20 7d 20 7b 0a 09 75 70 6c 65 76 65 6c 20 5c " } {..uplevel \
33ec0 23 30 20 5b 6c 69 73 74 20 24 65 78 65 63 5f 63 #0 [list $exec_c
33ed0 61 6c 6c 62 61 63 6b 20 24 6c 69 73 74 62 20 5b allback $listb [
33ee0 24 6c 69 73 74 62 20 69 74 65 6d 73 20 30 5d 5d $listb items 0]]
33ef0 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
33f00 5b 73 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63 [string is wordc
33f10 68 61 72 20 2d 73 74 72 69 63 74 20 24 63 68 61 har -strict $cha
33f20 72 5d 20 7c 7c 20 5b 73 74 72 69 6e 67 20 69 73 r] || [string is
33f30 20 70 75 6e 63 74 20 2d 73 74 72 69 63 74 20 24 punct -strict $
33f40 63 68 61 72 5d 20 5c 0a 09 20 20 20 20 20 7c 7c char] \.. ||
33f50 20 5b 73 74 72 69 6e 67 20 69 73 20 73 70 61 63 [string is spac
33f60 65 20 2d 73 74 72 69 63 74 20 24 63 68 61 72 5d e -strict $char]
33f70 20 7d 20 7b 0a 09 69 66 20 7b 20 21 5b 69 6e 66 } {..if { ![inf
33f80 6f 20 65 78 69 73 74 73 20 53 65 61 72 63 68 4c o exists SearchL
33f90 69 73 74 62 6f 78 53 74 72 69 6e 67 5d 20 7c 7c istboxString] ||
33fa0 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 [string index $
33fb0 53 65 61 72 63 68 4c 69 73 74 62 6f 78 53 74 72 SearchListboxStr
33fc0 69 6e 67 20 65 6e 64 5d 20 21 3d 20 24 63 68 61 ing end] != $cha
33fd0 72 20 7d 20 7b 0a 09 20 20 20 20 61 70 70 65 6e r } {.. appen
33fe0 64 20 53 65 61 72 63 68 4c 69 73 74 62 6f 78 53 d SearchListboxS
33ff0 74 72 69 6e 67 20 24 63 68 61 72 0a 09 7d 0a 09 tring $char..}..
34000 73 65 74 20 69 64 78 20 5b 24 6c 69 73 74 62 20 set idx [$listb
34010 73 65 6c 65 63 74 69 6f 6e 20 67 65 74 5d 0a 09 selection get]..
34020 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 69 if { [llength $i
34030 64 78 5d 20 21 3d 20 31 20 7d 20 7b 0a 09 20 20 dx] != 1 } {..
34040 20 20 73 65 74 20 69 64 78 20 30 0a 09 7d 20 65 set idx 0..} e
34050 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 69 lse {.. set i
34060 64 78 20 5b 24 6c 69 73 74 62 20 69 6e 64 65 78 dx [$listb index
34070 20 24 69 64 78 5d 0a 09 20 20 20 20 69 6e 63 72 $idx].. incr
34080 20 69 64 78 0a 09 7d 0a 09 73 65 74 20 66 6f 75 idx..}..set fou
34090 6e 64 20 30 0a 09 66 6f 72 65 61 63 68 20 69 20 nd 0..foreach i
340a0 5b 24 6c 69 73 74 62 20 69 74 65 6d 73 20 24 69 [$listb items $i
340b0 64 78 20 65 6e 64 5d 20 7b 0a 09 20 20 20 20 69 dx end] {.. i
340c0 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 f { [string matc
340d0 68 20 2d 6e 6f 63 61 73 65 20 24 53 65 61 72 63 h -nocase $Searc
340e0 68 4c 69 73 74 62 6f 78 53 74 72 69 6e 67 2a 20 hListboxString*
340f0 5b 24 6c 69 73 74 62 20 69 74 65 6d 63 67 65 74 [$listb itemcget
34100 20 24 69 20 2d 74 65 78 74 5d 5d 20 7d 20 7b 0a $i -text]] } {.
34110 09 09 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 ..$listb selecti
34120 6f 6e 20 73 65 74 20 24 69 0a 09 09 24 6c 69 73 on set $i...$lis
34130 74 62 20 73 65 65 20 24 69 0a 09 09 73 65 74 20 tb see $i...set
34140 66 6f 75 6e 64 20 31 0a 09 09 62 72 65 61 6b 0a found 1...break.
34150 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 . }..}..if {
34160 21 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 20 20 20 !$found } {..
34170 20 66 6f 72 65 61 63 68 20 69 20 5b 24 6c 69 73 foreach i [$lis
34180 74 62 20 69 74 65 6d 73 20 30 20 5b 65 78 70 72 tb items 0 [expr
34190 20 24 69 64 78 2d 31 5d 5d 20 7b 0a 09 09 69 66 $idx-1]] {...if
341a0 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 { [string match
341b0 20 2d 6e 6f 63 61 73 65 20 24 53 65 61 72 63 68 -nocase $Search
341c0 4c 69 73 74 62 6f 78 53 74 72 69 6e 67 2a 20 5b ListboxString* [
341d0 24 6c 69 73 74 62 20 69 74 65 6d 63 67 65 74 20 $listb itemcget
341e0 24 69 20 2d 74 65 78 74 5d 5d 20 7d 20 7b 0a 09 $i -text]] } {..
341f0 09 20 20 20 20 24 6c 69 73 74 62 20 73 65 6c 65 . $listb sele
34200 63 74 69 6f 6e 20 73 65 74 20 24 69 0a 09 09 20 ction set $i...
34210 20 20 20 24 6c 69 73 74 62 20 73 65 65 20 24 69 $listb see $i
34220 0a 09 09 20 20 20 20 73 65 74 20 66 6f 75 6e 64 ... set found
34230 20 31 0a 09 09 20 20 20 20 62 72 65 61 6b 0a 09 1... break..
34240 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 .}.. }..}..if
34250 20 7b 20 21 24 66 6f 75 6e 64 20 7d 20 7b 0a 09 { !$found } {..
34260 20 20 20 20 62 65 6c 6c 0a 09 20 20 20 20 73 65 bell.. se
34270 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 t RamDebugger::S
34280 65 61 72 63 68 4c 69 73 74 62 6f 78 53 74 72 69 earchListboxStri
34290 6e 67 20 22 22 0a 09 7d 20 65 6c 73 65 20 7b 0a ng ""..} else {.
342a0 09 20 20 20 20 61 66 74 65 72 20 33 30 30 20 5b . after 300 [
342b0 6c 69 73 74 20 73 65 74 20 52 61 6d 44 65 62 75 list set RamDebu
342c0 67 67 65 72 3a 3a 53 65 61 72 63 68 4c 69 73 74 gger::SearchList
342d0 62 6f 78 53 74 72 69 6e 67 20 22 22 5d 0a 09 7d boxString ""]..}
342e0 0a 20 20 20 20 7d 0a 20 20 20 20 24 6c 69 73 74 . }. $list
342f0 62 20 78 76 69 65 77 20 6d 6f 76 65 74 6f 20 30 b xview moveto 0
34300 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
34310 67 67 65 72 3a 3a 4c 69 73 74 42 6f 78 45 76 65 gger::ListBoxEve
34320 6e 74 73 20 7b 20 6c 69 73 74 62 20 65 78 65 63 nts { listb exec
34330 5f 63 61 6c 6c 62 61 63 6b 20 6d 65 6e 75 5f 63 _callback menu_c
34340 61 6c 6c 62 61 63 6b 20 7d 20 7b 0a 0a 20 20 20 allback } {..
34350 20 24 6c 69 73 74 62 20 62 69 6e 64 49 6d 61 67 $listb bindImag
34360 65 20 3c 31 3e 20 22 66 6f 63 75 73 20 24 6c 69 e <1> "focus $li
34370 73 74 62 20 3b 20 24 6c 69 73 74 62 20 73 65 6c stb ; $listb sel
34380 65 63 74 69 6f 6e 20 73 65 74 22 0a 20 20 20 20 ection set".
34390 24 6c 69 73 74 62 20 62 69 6e 64 54 65 78 74 20 $listb bindText
343a0 3c 31 3e 20 22 66 6f 63 75 73 20 24 6c 69 73 74 <1> "focus $list
343b0 62 20 3b 20 24 6c 69 73 74 62 20 73 65 6c 65 63 b ; $listb selec
343c0 74 69 6f 6e 20 73 65 74 22 0a 20 20 20 20 24 6c tion set". $l
343d0 69 73 74 62 20 62 69 6e 64 49 6d 61 67 65 20 3c istb bindImage <
343e0 3c 43 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 <ContextualPress
343f0 3e 3e 20 22 66 6f 63 75 73 20 24 6c 69 73 74 62 >> "focus $listb
34400 20 3b 20 24 6c 69 73 74 62 20 73 65 6c 65 63 74 ; $listb select
34410 69 6f 6e 20 73 65 74 22 0a 20 20 20 20 24 6c 69 ion set". $li
34420 73 74 62 20 62 69 6e 64 54 65 78 74 20 3c 3c 43 stb bindText <<C
34430 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 3e 3e ontextualPress>>
34440 20 22 66 6f 63 75 73 20 24 6c 69 73 74 62 20 3b "focus $listb ;
34450 20 24 6c 69 73 74 62 20 73 65 6c 65 63 74 69 6f $listb selectio
34460 6e 20 73 65 74 22 0a 20 20 20 20 24 6c 69 73 74 n set". $list
34470 62 20 62 69 6e 64 49 6d 61 67 65 20 3c 3c 43 6f b bindImage <<Co
34480 6e 74 65 78 74 75 61 6c 3e 3e 20 22 24 6d 65 6e ntextual>> "$men
34490 75 5f 63 61 6c 6c 62 61 63 6b 20 24 6c 69 73 74 u_callback $list
344a0 62 20 25 58 20 25 59 22 0a 20 20 20 20 24 6c 69 b %X %Y". $li
344b0 73 74 62 20 62 69 6e 64 54 65 78 74 20 3c 3c 43 stb bindText <<C
344c0 6f 6e 74 65 78 74 75 61 6c 3e 3e 20 22 24 6d 65 ontextual>> "$me
344d0 6e 75 5f 63 61 6c 6c 62 61 63 6b 20 24 6c 69 73 nu_callback $lis
344e0 74 62 20 25 58 20 25 59 22 0a 20 20 20 20 24 6c tb %X %Y". $l
344f0 69 73 74 62 20 62 69 6e 64 49 6d 61 67 65 20 3c istb bindImage <
34500 44 6f 75 62 6c 65 2d 31 3e 20 22 24 65 78 65 63 Double-1> "$exec
34510 5f 63 61 6c 6c 62 61 63 6b 20 24 6c 69 73 74 62 _callback $listb
34520 22 0a 20 20 20 20 24 6c 69 73 74 62 20 62 69 6e ". $listb bin
34530 64 54 65 78 74 20 3c 44 6f 75 62 6c 65 2d 31 3e dText <Double-1>
34540 20 22 24 65 78 65 63 5f 63 61 6c 6c 62 61 63 6b "$exec_callback
34550 20 24 6c 69 73 74 62 22 0a 20 20 20 20 62 69 6e $listb". bin
34560 64 20 24 6c 69 73 74 62 20 3c 4b 65 79 50 72 65 d $listb <KeyPre
34570 73 73 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 ss> [list RamDeb
34580 75 67 67 65 72 3a 3a 53 65 61 72 63 68 49 6e 4c ugger::SearchInL
34590 69 73 74 62 6f 78 20 24 6c 69 73 74 62 20 25 4b istbox $listb %K
345a0 20 25 41 20 5c 0a 09 09 20 20 20 20 20 20 20 20 %A \...
345b0 20 20 20 20 20 20 20 20 24 65 78 65 63 5f 63 61 $exec_ca
345c0 6c 6c 62 61 63 6b 5d 0a 0a 0a 7d 0a 0a 70 72 6f llback]...}..pro
345d0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 c RamDebugger::U
345e0 6e 64 6f 43 61 6c 6c 62 61 63 6b 20 7b 7d 20 7b ndoCallback {} {
345f0 0a 20 20 20 20 4d 61 72 6b 41 73 4e 6f 74 4d 6f . MarkAsNotMo
34600 64 69 66 69 65 64 0a 20 20 20 20 62 65 6c 6c 0a dified. bell.
34610 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
34620 67 65 72 3a 3a 4d 61 72 6b 41 73 4e 6f 74 4d 6f ger::MarkAsNotMo
34630 64 69 66 69 65 64 20 7b 7d 20 7b 0a 20 20 20 20 dified {} {.
34640 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 variable text.
34650 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
34660 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 ntfileIsModified
34670 0a 0a 20 20 20 20 69 66 20 7b 20 24 63 75 72 72 .. if { $curr
34680 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 entfileIsModifie
34690 64 20 7d 20 7b 0a 09 23 20 74 61 6b 65 20 6f 75 d } {..# take ou
346a0 74 20 74 68 65 20 6d 6f 64 69 66 69 65 64 20 2a t the modified *
346b0 0a 09 73 65 74 20 74 69 74 6c 65 20 5b 73 74 72 ..set title [str
346c0 69 6e 67 20 72 61 6e 67 65 20 5b 77 6d 20 74 69 ing range [wm ti
346d0 74 6c 65 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 tle [winfo tople
346e0 76 65 6c 20 24 74 65 78 74 5d 5d 20 30 20 65 6e vel $text]] 0 en
346f0 64 2d 31 5d 0a 09 77 6d 20 74 69 74 6c 65 20 5b d-1]..wm title [
34700 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 winfo toplevel $
34710 74 65 78 74 5d 20 24 74 69 74 6c 65 0a 09 73 65 text] $title..se
34720 74 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d t currentfileIsM
34730 6f 64 69 66 69 65 64 20 30 0a 20 20 20 20 7d 0a odified 0. }.
34740 7d 0a 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 }...proc RamDebu
34750 67 67 65 72 3a 3a 43 68 65 63 6b 54 65 78 74 42 gger::CheckTextB
34760 65 66 6f 72 65 20 7b 20 63 6f 6d 6d 61 6e 64 20 efore { command
34770 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 args } {. var
34780 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 76 iable text. v
34790 61 72 69 61 62 6c 65 20 43 68 65 63 6b 54 65 78 ariable CheckTex
347a0 74 53 61 76 65 0a 20 20 20 20 76 61 72 69 61 62 tSave. variab
347b0 6c 65 20 43 68 65 63 6b 54 65 78 74 49 6e 61 63 le CheckTextInac
347c0 74 69 76 65 0a 20 20 20 20 0a 20 20 20 20 69 66 tive. . if
347d0 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { [info exists
347e0 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74 69 76 CheckTextInactiv
347f0 65 5d 20 26 26 20 24 43 68 65 63 6b 54 65 78 74 e] && $CheckText
34800 49 6e 61 63 74 69 76 65 20 7d 20 7b 20 72 65 74 Inactive } { ret
34810 75 72 6e 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 urn }.. if {
34820 24 63 6f 6d 6d 61 6e 64 20 65 71 20 22 74 61 67 $command eq "tag
34830 22 20 26 26 20 5b 72 65 67 65 78 70 20 7b 5e 28 " && [regexp {^(
34840 61 64 64 7c 64 65 6c 65 74 65 7c 72 65 6d 6f 76 add|delete|remov
34850 65 29 24 7d 20 5b 6c 69 6e 64 65 78 20 24 61 72 e)$} [lindex $ar
34860 67 73 20 30 5d 5d 20 26 26 20 5c 0a 09 20 20 20 gs 0]] && \..
34870 20 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 [lindex $args
34880 31 5d 20 65 71 20 22 73 65 6c 22 20 7d 20 7b 0a 1] eq "sel" } {.
34890 09 24 74 65 78 74 20 74 61 67 20 72 65 6d 6f 76 .$text tag remov
348a0 65 20 73 65 61 72 63 68 20 31 2e 30 20 65 6e 64 e search 1.0 end
348b0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b . }.. if {
348c0 20 21 5b 72 65 67 65 78 70 20 7b 5e 28 69 6e 73 ![regexp {^(ins
348d0 7c 64 65 6c 29 7d 20 24 63 6f 6d 6d 61 6e 64 5d |del)} $command]
348e0 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 } { return }..
348f0 20 20 20 23 20 66 6f 72 20 74 68 65 20 73 65 61 # for the sea
34900 72 63 68 20 62 72 61 63 65 73 20 73 74 75 66 66 rch braces stuff
34910 0a 20 20 20 20 24 74 65 78 74 20 74 61 67 20 72 . $text tag r
34920 65 6d 6f 76 65 20 74 65 6d 70 6d 61 72 6b 65 72 emove tempmarker
34930 20 31 2e 30 20 65 6e 64 0a 0a 20 20 20 20 73 77 1.0 end.. sw
34940 69 74 63 68 20 2d 67 6c 6f 62 20 2d 2d 20 24 63 itch -glob -- $c
34950 6f 6d 6d 61 6e 64 20 7b 0a 09 69 6e 73 2a 20 7b ommand {..ins* {
34960 0a 09 20 20 20 20 73 65 74 20 69 64 78 31 20 5b .. set idx1 [
34970 24 74 65 78 74 20 69 6e 64 65 78 20 5b 6c 69 6e $text index [lin
34980 64 65 78 20 24 61 72 67 73 20 30 5d 5d 0a 09 20 dex $args 0]]..
34990 20 20 20 73 65 74 20 74 78 74 20 5b 6c 69 6e 64 set txt [lind
349a0 65 78 20 24 61 72 67 73 20 31 5d 0a 09 20 20 20 ex $args 1]..
349b0 20 73 65 74 20 6c 31 20 5b 73 63 61 6e 20 24 69 set l1 [scan $i
349c0 64 78 31 20 25 64 5d 0a 09 20 20 20 20 73 65 74 dx1 %d].. set
349d0 20 6c 32 20 5b 65 78 70 72 20 24 6c 31 2b 5b 72 l2 [expr $l1+[r
349e0 65 67 65 78 70 20 2d 61 6c 6c 20 7b 5c 6e 7d 20 egexp -all {\n}
349f0 24 74 78 74 5d 5d 0a 09 7d 0a 09 64 65 6c 2a 20 $txt]]..}..del*
34a00 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 31 20 {.. set idx1
34a10 5b 24 74 65 78 74 20 69 6e 64 65 78 20 5b 6c 69 [$text index [li
34a20 6e 64 65 78 20 24 61 72 67 73 20 30 5d 5d 0a 09 ndex $args 0]]..
34a30 20 20 20 20 73 65 74 20 69 64 78 32 20 5b 6c 69 set idx2 [li
34a40 6e 64 65 78 20 24 61 72 67 73 20 31 5d 0a 09 20 ndex $args 1]..
34a50 20 20 20 69 66 20 7b 20 24 69 64 78 32 20 3d 3d if { $idx2 ==
34a60 20 22 22 20 7d 20 7b 0a 09 09 73 65 74 20 69 64 "" } {...set id
34a70 78 32 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 x2 [$text index
34a80 22 24 69 64 78 31 2b 31 63 22 5d 0a 09 20 20 20 "$idx1+1c"]..
34a90 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 } else {...set
34aa0 69 64 78 32 20 5b 24 74 65 78 74 20 69 6e 64 65 idx2 [$text inde
34ab0 78 20 24 69 64 78 32 5d 0a 09 20 20 20 20 7d 0a x $idx2].. }.
34ac0 09 20 20 20 20 73 65 74 20 74 78 74 20 5b 24 74 . set txt [$t
34ad0 65 78 74 20 67 65 74 20 24 69 64 78 31 20 24 69 ext get $idx1 $i
34ae0 64 78 32 5d 0a 09 20 20 20 20 73 65 74 20 6c 31 dx2].. set l1
34af0 20 5b 73 63 61 6e 20 24 69 64 78 31 20 25 64 5d [scan $idx1 %d]
34b00 0a 09 20 20 20 20 73 65 74 20 6c 32 20 5b 73 63 .. set l2 [sc
34b10 61 6e 20 24 69 64 78 32 20 25 64 5d 0a 09 7d 0a an $idx2 %d]..}.
34b20 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 4e 75 }. set Nu
34b30 6d 6c 69 6e 65 73 20 5b 73 63 61 6e 20 5b 24 74 mlines [scan [$t
34b40 65 78 74 20 69 6e 64 65 78 20 65 6e 64 2d 31 63 ext index end-1c
34b50 5d 20 25 64 5d 0a 20 20 20 20 73 65 74 20 43 68 ] %d]. set Ch
34b60 65 63 6b 54 65 78 74 53 61 76 65 20 5b 6c 69 73 eckTextSave [lis
34b70 74 20 24 6c 31 20 24 6c 32 20 24 74 78 74 20 24 t $l1 $l2 $txt $
34b80 4e 75 6d 6c 69 6e 65 73 5d 0a 7d 0a 0a 70 72 6f Numlines].}..pro
34b90 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 c RamDebugger::C
34ba0 68 65 63 6b 54 65 78 74 20 7b 20 63 6f 6d 6d 61 heckText { comma
34bb0 6e 64 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 nd args } {.
34bc0 76 61 72 69 61 62 6c 65 20 6d 61 72 6b 65 72 0a variable marker.
34bd0 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 variable tex
34be0 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 t. variable i
34bf0 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
34c00 50 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 P. variable i
34c10 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
34c20 52 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 R. variable i
34c30 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
34c40 49 6e 66 6f 0a 20 20 20 20 76 61 72 69 61 62 6c Info. variabl
34c50 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 e currentfile.
34c60 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 variable curre
34c70 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
34c80 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 43 68 . variable Ch
34c90 65 63 6b 54 65 78 74 53 61 76 65 0a 20 20 20 20 eckTextSave.
34ca0 76 61 72 69 61 62 6c 65 20 43 68 65 63 6b 54 65 variable CheckTe
34cb0 78 74 49 6e 61 63 74 69 76 65 0a 20 20 20 20 76 xtInactive. v
34cc0 61 72 69 61 62 6c 65 20 62 72 65 61 6b 70 6f 69 ariable breakpoi
34cd0 6e 74 73 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 nts.. if { [i
34ce0 6e 66 6f 20 65 78 69 73 74 73 20 43 68 65 63 6b nfo exists Check
34cf0 54 65 78 74 49 6e 61 63 74 69 76 65 5d 20 26 26 TextInactive] &&
34d00 20 24 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74 $CheckTextInact
34d10 69 76 65 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d ive } { return }
34d20 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 6c .. foreach "l
34d30 31 20 6c 32 20 74 78 74 20 4e 75 6d 6c 69 6e 65 1 l2 txt Numline
34d40 73 4f 6c 64 22 20 24 43 68 65 63 6b 54 65 78 74 sOld" $CheckText
34d50 53 61 76 65 20 62 72 65 61 6b 0a 20 20 20 20 69 Save break. i
34d60 66 20 7b 20 24 74 78 74 20 3d 3d 20 22 22 20 7d f { $txt == "" }
34d70 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
34d80 20 73 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 set filetype [G
34d90 69 76 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 iveFileType $cur
34da0 72 65 6e 74 66 69 6c 65 5d 0a 0a 20 20 20 20 73 rentfile].. s
34db0 77 69 74 63 68 20 2d 67 6c 6f 62 20 2d 2d 20 24 witch -glob -- $
34dc0 63 6f 6d 6d 61 6e 64 20 7b 0a 09 69 6e 73 2a 20 command {..ins*
34dd0 7b 0a 09 20 20 20 20 73 65 74 20 6c 31 5f 6f 6c {.. set l1_ol
34de0 64 20 24 6c 31 0a 09 20 20 20 20 73 65 74 20 6c d $l1.. set l
34df0 32 5f 6f 6c 64 20 24 6c 31 0a 09 20 20 20 20 73 2_old $l1.. s
34e00 65 74 20 6c 31 5f 6e 65 77 20 24 6c 31 0a 09 20 et l1_new $l1..
34e10 20 20 20 73 65 74 20 6c 32 5f 6e 65 77 20 24 6c set l2_new $l
34e20 32 0a 09 7d 0a 09 64 65 6c 2a 20 7b 0a 09 20 20 2..}..del* {..
34e30 20 20 73 65 74 20 6c 31 5f 6f 6c 64 20 24 6c 31 set l1_old $l1
34e40 0a 09 20 20 20 20 73 65 74 20 6c 32 5f 6f 6c 64 .. set l2_old
34e50 20 24 6c 32 0a 09 20 20 20 20 73 65 74 20 6c 31 $l2.. set l1
34e60 5f 6e 65 77 20 24 6c 31 0a 09 20 20 20 20 73 65 _new $l1.. se
34e70 74 20 6c 32 5f 6e 65 77 20 24 6c 31 0a 09 7d 0a t l2_new $l1..}.
34e80 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 64 }.. set d
34e90 65 6c 74 61 20 5b 65 78 70 72 20 7b 24 6c 32 5f elta [expr {$l2_
34ea0 6e 65 77 2d 24 6c 32 5f 6f 6c 64 7d 5d 0a 20 20 new-$l2_old}].
34eb0 20 20 69 66 20 7b 20 24 64 65 6c 74 61 20 21 3d if { $delta !=
34ec0 20 30 20 7d 20 7b 0a 09 66 6f 72 20 7b 20 73 65 0 } {..for { se
34ed0 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b t i 0 } { $i < [
34ee0 6c 6c 65 6e 67 74 68 20 24 62 72 65 61 6b 70 6f llength $breakpo
34ef0 69 6e 74 73 5d 20 7d 20 7b 20 69 6e 63 72 20 69 ints] } { incr i
34f00 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 62 72 } {.. set br
34f10 20 5b 6c 69 6e 64 65 78 20 24 62 72 65 61 6b 70 [lindex $breakp
34f20 6f 69 6e 74 73 20 24 69 5d 0a 09 20 20 20 20 69 oints $i].. i
34f30 66 20 7b 20 5b 41 72 65 46 69 6c 65 73 45 71 75 f { [AreFilesEqu
34f40 61 6c 20 5b 6c 69 6e 64 65 78 20 24 62 72 20 32 al [lindex $br 2
34f50 5d 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 20 ] $currentfile]
34f60 7d 20 7b 0a 09 09 73 65 74 20 6c 69 6e 65 20 5b } {...set line [
34f70 6c 69 6e 64 65 78 20 24 62 72 20 33 5d 0a 09 09 lindex $br 3]...
34f80 69 66 20 7b 20 24 64 65 6c 74 61 20 3c 20 30 20 if { $delta < 0
34f90 26 26 20 24 6c 69 6e 65 20 3e 3d 20 24 6c 32 5f && $line >= $l2_
34fa0 6e 65 77 20 26 26 20 24 6c 69 6e 65 20 3c 20 24 new && $line < $
34fb0 6c 32 5f 6f 6c 64 20 7d 20 7b 0a 09 09 20 20 20 l2_old } {...
34fc0 20 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 73 set breakpoints
34fd0 20 5b 6c 72 65 70 6c 61 63 65 20 24 62 72 65 61 [lreplace $brea
34fe0 6b 70 6f 69 6e 74 73 20 24 69 20 24 69 5d 0a 09 kpoints $i $i]..
34ff0 09 20 20 20 20 55 70 64 61 74 65 41 72 72 6f 77 . UpdateArrow
35000 41 6e 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 30 AndBreak $line 0
35010 20 22 22 0a 09 09 20 20 20 20 69 6e 63 72 20 69 ""... incr i
35020 20 2d 31 20 3b 23 20 62 72 65 61 6b 70 6f 69 6e -1 ;# breakpoin
35030 74 73 20 68 61 73 20 6e 6f 77 20 6f 6e 65 20 65 ts has now one e
35040 6c 65 6d 65 6e 74 20 6c 65 73 73 0a 09 09 7d 0a lement less...}.
35050 09 09 69 66 20 7b 20 24 6c 69 6e 65 20 3e 3d 20 ..if { $line >=
35060 24 6c 32 5f 6f 6c 64 20 7d 20 7b 0a 09 09 20 20 $l2_old } {...
35070 20 20 55 70 64 61 74 65 41 72 72 6f 77 41 6e 64 UpdateArrowAnd
35080 42 72 65 61 6b 20 24 6c 69 6e 65 20 30 20 22 22 Break $line 0 ""
35090 0a 09 09 20 20 20 20 73 65 74 20 6c 69 6e 65 20 ... set line
350a0 5b 65 78 70 72 20 7b 24 6c 69 6e 65 2b 24 64 65 [expr {$line+$de
350b0 6c 74 61 7d 5d 0a 09 09 20 20 20 20 73 65 74 20 lta}]... set
350c0 62 72 20 5b 6c 72 65 70 6c 61 63 65 20 24 62 72 br [lreplace $br
350d0 20 33 20 33 20 24 6c 69 6e 65 5d 0a 09 09 20 20 3 3 $line]...
350e0 20 20 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 set breakpoint
350f0 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 62 72 65 s [lreplace $bre
35100 61 6b 70 6f 69 6e 74 73 20 24 69 20 24 69 20 24 akpoints $i $i $
35110 62 72 5d 0a 09 09 20 20 20 20 55 70 64 61 74 65 br]... Update
35120 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24 6c ArrowAndBreak $l
35130 69 6e 65 20 31 20 22 22 0a 09 09 7d 0a 09 20 20 ine 1 ""...}..
35140 20 20 7d 0a 09 7d 0a 09 55 70 64 61 74 65 52 65 }..}..UpdateRe
35150 6d 6f 74 65 42 72 65 61 6b 73 0a 20 20 20 20 7d moteBreaks. }
35160 0a 0a 20 20 20 20 73 65 74 20 4e 75 6d 6c 69 6e .. set Numlin
35170 65 73 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 es [scan [$text
35180 69 6e 64 65 78 20 65 6e 64 5d 20 25 64 5d 0a 20 index end] %d].
35190 20 20 20 73 65 74 20 66 6f 6e 74 20 5b 24 74 65 set font [$te
351a0 78 74 20 63 67 65 74 20 2d 66 6f 6e 74 5d 0a 20 xt cget -font].
351b0 20 20 20 24 6d 61 72 6b 65 72 20 63 6f 6e 66 69 $marker confi
351c0 67 75 72 65 20 2d 73 63 72 6f 6c 6c 72 65 67 69 gure -scrollregi
351d0 6f 6e 20 5b 6c 69 73 74 20 30 20 30 20 5b 77 69 on [list 0 0 [wi
351e0 6e 66 6f 20 72 65 71 77 69 64 74 68 20 24 6d 61 nfo reqwidth $ma
351f0 72 6b 65 72 5d 20 5c 0a 09 09 20 20 20 20 20 20 rker] \...
35200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
35210 20 20 20 5b 65 78 70 72 20 24 4e 75 6d 6c 69 6e [expr $Numlin
35220 65 73 2a 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 es*[font metrics
35230 20 24 66 6f 6e 74 20 2d 6c 69 6e 65 73 70 61 63 $font -linespac
35240 65 5d 5d 5d 0a 0a 20 20 20 20 73 65 74 20 64 69 e]]].. set di
35250 66 66 20 5b 65 78 70 72 20 24 6c 32 2d 24 6c 31 ff [expr $l2-$l1
35260 5d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e ].. if { ![in
35270 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 75 fo exists instru
35280 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 mentedfilesInfo(
35290 24 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d $currentfile)] }
352a0 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
352b0 20 77 68 69 6c 65 20 7b 20 24 6c 31 5f 6f 6c 64 while { $l1_old
352c0 20 3e 20 31 20 7d 20 7b 0a 09 69 66 20 7b 20 5b > 1 } {..if { [
352d0 6c 69 6e 64 65 78 20 24 69 6e 73 74 72 75 6d 65 lindex $instrume
352e0 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 ntedfilesInfo($c
352f0 75 72 72 65 6e 74 66 69 6c 65 29 20 24 6c 31 5f urrentfile) $l1_
35300 6f 6c 64 2d 31 20 31 5d 20 65 71 20 22 6e 22 20 old-1 1] eq "n"
35310 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 6f 75 } {.. set fou
35320 6e 64 20 31 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 nd 1..} else {..
35330 20 20 20 20 73 65 74 20 66 6f 75 6e 64 20 30 0a set found 0.
35340 09 7d 0a 09 69 66 20 7b 20 24 66 69 6c 65 74 79 .}..if { $filety
35350 70 65 20 65 71 20 22 43 2f 43 2b 2b 22 20 26 26 pe eq "C/C++" &&
35360 20 5b 72 65 67 65 78 70 20 7b 5e 5c 73 2a 28 23 [regexp {^\s*(#
35370 7c 2f 2f 7c 2f 5c 2a 29 7d 20 5b 24 74 65 78 74 |//|/\*)} [$text
35380 20 67 65 74 20 24 6c 31 5f 6f 6c 64 2e 30 20 22 get $l1_old.0 "
35390 24 6c 31 5f 6f 6c 64 2e 30 20 6c 69 6e 65 65 6e $l1_old.0 lineen
353a0 64 22 5d 5d 20 7d 20 7b 0a 09 20 20 20 20 73 65 d"]] } {.. se
353b0 74 20 66 6f 75 6e 64 20 30 0a 09 7d 0a 09 69 66 t found 0..}..if
353c0 20 7b 20 24 66 6f 75 6e 64 20 7d 20 7b 20 62 72 { $found } { br
353d0 65 61 6b 20 7d 0a 09 69 6e 63 72 20 6c 31 5f 6e eak }..incr l1_n
353e0 65 77 20 2d 31 0a 09 69 6e 63 72 20 6c 31 5f 6f ew -1..incr l1_o
353f0 6c 64 20 2d 31 0a 20 20 20 20 7d 0a 0a 23 20 20 ld -1. }..#
35400 20 20 20 73 65 74 20 6c 65 76 65 6c 30 20 5b 6c set level0 [l
35410 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24 69 index [lindex $i
35420 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
35430 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c Info($currentfil
35440 65 29 20 5c 0a 23 20 20 20 20 20 20 20 20 20 20 e) \.#
35450 20 20 20 20 20 20 20 5b 65 78 70 72 20 24 6c 31 [expr $l1
35460 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 0a 23 20 20 20 _old-1]] 0].#
35470 20 20 73 65 74 20 6c 65 76 65 6c 20 24 6c 65 76 set level $lev
35480 65 6c 30 0a 23 20 20 20 20 20 77 68 69 6c 65 20 el0.# while
35490 7b 20 24 6c 65 76 65 6c 30 20 3e 20 30 20 26 26 { $level0 > 0 &&
354a0 20 24 6c 65 76 65 6c 20 3d 3d 20 24 6c 65 76 65 $level == $leve
354b0 6c 30 20 7d 20 7b 0a 23 20 20 20 20 20 20 20 20 l0 } {.#
354c0 20 69 6e 63 72 20 6c 31 5f 6e 65 77 20 2d 31 0a incr l1_new -1.
354d0 23 20 20 20 20 20 20 20 20 20 69 6e 63 72 20 6c # incr l
354e0 31 5f 6f 6c 64 20 2d 31 0a 23 20 20 20 20 20 20 1_old -1.#
354f0 20 20 20 73 65 74 20 6c 65 76 65 6c 20 5b 6c 69 set level [li
35500 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20 24 69 6e ndex [lindex $in
35510 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 strumentedfilesI
35520 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 nfo($currentfile
35530 29 20 5c 0a 23 20 20 20 20 20 20 20 20 20 20 20 ) \.#
35540 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 [expr
35550 24 6c 31 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 0a 23 $l1_old-1]] 0].#
35560 20 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 }. if {
35570 5b 72 65 67 65 78 70 20 7b 28 3f 6e 29 5e 5b 5e [regexp {(?n)^[^
35580 5c 5b 5d 2a 5c 5d 5c 73 2a 24 7d 20 5b 24 74 65 \[]*\]\s*$} [$te
35590 78 74 20 67 65 74 20 24 6c 31 5f 6e 65 77 2e 30 xt get $l1_new.0
355a0 20 22 24 6c 32 5f 6e 65 77 2e 30 20 6c 69 6e 65 "$l2_new.0 line
355b0 65 6e 64 22 5d 5d 20 26 26 20 24 6c 31 5f 6f 6c end"]] && $l1_ol
355c0 64 20 3e 20 31 20 26 26 0a 09 20 5b 6c 69 6e 64 d > 1 &&.. [lind
355d0 65 78 20 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74 ex [lindex $inst
355e0 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 rumentedfilesInf
355f0 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 o($currentfile)
35600 5b 65 78 70 72 20 24 6c 31 5f 6f 6c 64 2d 31 5d [expr $l1_old-1]
35610 5d 20 30 5d 20 3e 20 30 20 7d 20 7b 0a 09 73 65 ] 0] > 0 } {..se
35620 74 20 6e 65 77 6c 65 76 65 6c 20 5b 65 78 70 72 t newlevel [expr
35630 20 7b 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 {[lindex [linde
35640 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 64 66 x $instrumentedf
35650 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 65 6e ilesInfo($curren
35660 74 66 69 6c 65 29 20 5b 65 78 70 72 20 24 6c 31 tfile) [expr $l1
35670 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 2d 31 7d 5d 0a _old-1]] 0]-1}].
35680 09 77 68 69 6c 65 20 7b 20 24 6c 31 5f 6f 6c 64 .while { $l1_old
35690 20 3e 20 31 20 26 26 20 5b 6c 69 6e 64 65 78 20 > 1 && [lindex
356a0 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74 72 75 6d [lindex $instrum
356b0 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 entedfilesInfo($
356c0 63 75 72 72 65 6e 74 66 69 6c 65 29 20 5b 65 78 currentfile) [ex
356d0 70 72 20 24 6c 31 5f 6f 6c 64 2d 31 5d 5d 20 30 pr $l1_old-1]] 0
356e0 5d 20 3e 20 24 6e 65 77 6c 65 76 65 6c 20 7d 20 ] > $newlevel }
356f0 7b 0a 09 20 20 20 20 69 6e 63 72 20 6c 31 5f 6e {.. incr l1_n
35700 65 77 20 2d 31 0a 09 20 20 20 20 69 6e 63 72 20 ew -1.. incr
35710 6c 31 5f 6f 6c 64 20 2d 31 0a 09 7d 0a 20 20 20 l1_old -1..}.
35720 20 7d 0a 20 20 20 20 77 68 69 6c 65 20 7b 20 24 }. while { $
35730 6c 32 5f 6f 6c 64 20 3c 20 24 4e 75 6d 6c 69 6e l2_old < $Numlin
35740 65 73 4f 6c 64 20 7d 20 7b 0a 09 69 6e 63 72 20 esOld } {..incr
35750 6c 32 5f 6e 65 77 0a 09 69 6e 63 72 20 6c 32 5f l2_new..incr l2_
35760 6f 6c 64 0a 09 73 65 74 20 73 74 61 74 65 5f 63 old..set state_c
35770 75 72 72 20 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e urr [lindex [lin
35780 64 65 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 dex $instrumente
35790 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 dfilesInfo($curr
357a0 65 6e 74 66 69 6c 65 29 20 5b 65 78 70 72 20 24 entfile) [expr $
357b0 6c 32 5f 6f 6c 64 2d 31 5d 5d 20 31 5d 0a 09 69 l2_old-1]] 1]..i
357c0 66 20 7b 20 24 6c 32 5f 6f 6c 64 20 3c 3d 20 24 f { $l2_old <= $
357d0 4e 75 6d 6c 69 6e 65 73 4f 6c 64 20 7d 20 7b 0a NumlinesOld } {.
357e0 09 20 20 20 20 73 65 74 20 73 74 61 74 65 5f 6e . set state_n
357f0 65 78 74 20 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e ext [lindex [lin
35800 64 65 78 20 24 69 6e 73 74 72 75 6d 65 6e 74 65 dex $instrumente
35810 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 72 72 dfilesInfo($curr
35820 65 6e 74 66 69 6c 65 29 20 24 6c 32 5f 6f 6c 64 entfile) $l2_old
35830 5d 20 31 5d 0a 09 7d 20 65 6c 73 65 20 7b 20 73 ] 1]..} else { s
35840 65 74 20 73 74 61 74 65 5f 6e 65 78 74 20 22 22 et state_next ""
35850 20 7d 0a 09 69 66 20 7b 20 24 73 74 61 74 65 5f }..if { $state_
35860 63 75 72 72 20 3d 3d 20 22 6e 22 20 26 26 20 24 curr == "n" && $
35870 73 74 61 74 65 5f 6e 65 78 74 20 21 3d 20 22 63 state_next != "c
35880 22 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 20 20 " } { break }.
35890 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 6f 6c 64 }.. set old
358a0 6c 65 76 65 6c 20 5b 6c 69 6e 64 65 78 20 5b 6c level [lindex [l
358b0 69 6e 64 65 78 20 24 69 6e 73 74 72 75 6d 65 6e index $instrumen
358c0 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 63 75 tedfilesInfo($cu
358d0 72 72 65 6e 74 66 69 6c 65 29 20 5b 65 78 70 72 rrentfile) [expr
358e0 20 24 6c 31 5f 6f 6c 64 2d 31 5d 5d 20 30 5d 0a $l1_old-1]] 0].
358f0 20 20 20 20 0a 20 20 20 20 73 65 74 20 62 6c 6f . set blo
35900 63 6b 20 5b 24 74 65 78 74 20 67 65 74 20 24 6c ck [$text get $l
35910 31 5f 6e 65 77 2e 30 20 22 24 6c 32 5f 6e 65 77 1_new.0 "$l2_new
35920 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 5c 6e 0a 20 .0 lineend"]\n.
35930 20 20 20 73 65 74 20 62 6c 6f 63 6b 69 6e 66 6f set blockinfo
35940 20 22 22 0a 20 20 20 20 73 77 69 74 63 68 20 24 "". switch $
35950 66 69 6c 65 74 79 70 65 20 7b 0a 09 54 43 4c 20 filetype {..TCL
35960 7b 0a 09 20 20 20 20 73 65 74 20 65 72 72 20 5b {.. set err [
35970 63 61 74 63 68 20 7b 20 49 6e 73 74 72 75 6d 65 catch { Instrume
35980 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 54 nter::DoWorkForT
35990 63 6c 20 24 62 6c 6f 63 6b 20 30 20 6e 65 77 62 cl $block 0 newb
359a0 6c 6f 63 6b 50 20 6e 65 77 62 6c 6f 63 6b 52 20 lockP newblockR
359b0 62 6c 6f 63 6b 69 6e 66 6f 20 30 20 7d 20 65 72 blockinfo 0 } er
359c0 72 73 74 72 69 6e 67 5d 0a 09 7d 0a 09 43 2f 43 rstring]..}..C/C
359d0 2b 2b 20 7b 0a 09 20 20 20 20 73 65 74 20 65 72 ++ {.. set er
359e0 72 20 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 72 r [catch { Instr
359f0 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b 46 umenter::DoWorkF
35a00 6f 72 43 2b 2b 20 24 62 6c 6f 63 6b 20 62 6c 6f orC++ $block blo
35a10 63 6b 69 6e 66 6f 20 30 20 24 6f 6c 64 6c 65 76 ckinfo 0 $oldlev
35a20 65 6c 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a el } errstring].
35a30 09 20 20 20 20 73 65 74 20 6f 6c 64 6c 65 76 65 . set oldleve
35a40 6c 20 30 0a 09 7d 0a 09 58 4d 4c 20 7b 0a 09 20 l 0..}..XML {..
35a50 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 set err [catc
35a60 68 20 7b 20 49 6e 73 74 72 75 6d 65 6e 74 65 72 h { Instrumenter
35a70 3a 3a 44 6f 57 6f 72 6b 46 6f 72 58 4d 4c 20 24 ::DoWorkForXML $
35a80 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 6f 20 block blockinfo
35a90 30 20 24 6f 6c 64 6c 65 76 65 6c 20 30 20 7d 20 0 $oldlevel 0 }
35aa0 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 errstring]..
35ab0 73 65 74 20 6f 6c 64 6c 65 76 65 6c 20 30 0a 09 set oldlevel 0..
35ac0 7d 0a 09 6c 61 74 65 78 20 7b 0a 09 20 20 20 20 }..latex {..
35ad0 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b set err [catch {
35ae0 20 49 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 Instrumenter::D
35af0 6f 57 6f 72 6b 46 6f 72 4c 61 74 65 78 20 24 62 oWorkForLatex $b
35b00 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 6f 20 30 lock blockinfo 0
35b10 20 24 6f 6c 64 6c 65 76 65 6c 20 30 20 7d 20 65 $oldlevel 0 } e
35b20 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 73 rrstring].. s
35b30 65 74 20 6f 6c 64 6c 65 76 65 6c 20 30 0a 09 7d et oldlevel 0..}
35b40 0a 09 77 69 6b 69 20 7b 0a 09 20 20 20 20 73 65 ..wiki {.. se
35b50 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 49 t err [catch { I
35b60 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 nstrumenter::DoW
35b70 6f 72 6b 46 6f 72 57 69 6b 69 20 24 62 6c 6f 63 orkForWiki $bloc
35b80 6b 20 62 6c 6f 63 6b 69 6e 66 6f 20 30 20 24 6f k blockinfo 0 $o
35b90 6c 64 6c 65 76 65 6c 20 30 20 7d 20 65 72 72 73 ldlevel 0 } errs
35ba0 74 72 69 6e 67 5d 0a 09 20 20 20 20 73 65 74 20 tring].. set
35bb0 6f 6c 64 6c 65 76 65 6c 20 30 0a 09 7d 0a 09 22 oldlevel 0..}.."
35bc0 47 69 44 20 42 41 53 20 66 69 6c 65 22 20 7b 0a GiD BAS file" {.
35bd0 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 . set err [ca
35be0 74 63 68 20 7b 20 49 6e 73 74 72 75 6d 65 6e 74 tch { Instrument
35bf0 65 72 3a 3a 44 6f 57 6f 72 6b 46 6f 72 42 61 73 er::DoWorkForBas
35c00 20 24 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 $block blockinf
35c10 6f 20 30 20 24 6f 6c 64 6c 65 76 65 6c 20 7d 20 o 0 $oldlevel }
35c20 65 72 72 73 74 72 69 6e 67 5d 0a 09 20 20 20 20 errstring]..
35c30 73 65 74 20 6f 6c 64 6c 65 76 65 6c 20 30 0a 09 set oldlevel 0..
35c40 7d 0a 09 22 47 69 44 20 64 61 74 61 20 66 69 6c }.."GiD data fil
35c50 65 73 22 20 7b 0a 09 20 20 20 20 73 65 74 20 65 es" {.. set e
35c60 72 72 20 5b 63 61 74 63 68 20 7b 20 49 6e 73 74 rr [catch { Inst
35c70 72 75 6d 65 6e 74 65 72 3a 3a 44 6f 57 6f 72 6b rumenter::DoWork
35c80 46 6f 72 47 69 44 44 61 74 61 20 24 62 6c 6f 63 ForGiDData $bloc
35c90 6b 20 62 6c 6f 63 6b 69 6e 66 6f 20 30 20 24 6f k blockinfo 0 $o
35ca0 6c 64 6c 65 76 65 6c 20 7d 20 65 72 72 73 74 72 ldlevel } errstr
35cb0 69 6e 67 5d 0a 09 20 20 20 20 73 65 74 20 6f 6c ing].. set ol
35cc0 64 6c 65 76 65 6c 20 30 0a 09 7d 0a 09 22 4d 61 dlevel 0..}.."Ma
35cd0 6b 65 66 69 6c 65 22 20 7b 0a 09 20 20 20 20 73 kefile" {.. s
35ce0 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 et err [catch {
35cf0 49 6e 73 74 72 75 6d 65 6e 74 65 72 3a 3a 44 6f Instrumenter::Do
35d00 57 6f 72 6b 46 6f 72 4d 61 6b 65 66 69 6c 65 20 WorkForMakefile
35d10 24 62 6c 6f 63 6b 20 62 6c 6f 63 6b 69 6e 66 6f $block blockinfo
35d20 20 30 20 7d 20 65 72 72 73 74 72 69 6e 67 5d 0a 0 } errstring].
35d30 09 20 20 20 20 73 65 74 20 6f 6c 64 6c 65 76 65 . set oldleve
35d40 6c 20 30 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 l 0..}. }..
35d50 20 20 73 65 74 20 62 6c 6f 63 6b 69 6e 66 6f 32 set blockinfo2
35d60 20 22 22 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 "". for { se
35d70 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b t i 0 } { $i < [
35d80 65 78 70 72 20 7b 24 6c 32 5f 6e 65 77 2d 24 6c expr {$l2_new-$l
35d90 31 5f 6e 65 77 2b 31 7d 5d 20 7d 20 7b 20 69 6e 1_new+1}] } { in
35da0 63 72 20 69 20 7d 20 7b 0a 09 73 65 74 20 62 69 cr i } {..set bi
35db0 20 5b 6c 69 6e 64 65 78 20 24 62 6c 6f 63 6b 69 [lindex $blocki
35dc0 6e 66 6f 20 24 69 5d 0a 09 69 66 20 7b 20 24 62 nfo $i]..if { $b
35dd0 69 20 65 71 20 22 22 20 7d 20 7b 20 73 65 74 20 i eq "" } { set
35de0 62 69 20 5b 6c 69 73 74 20 30 20 6e 5d 20 7d 0a bi [list 0 n] }.
35df0 09 6c 61 70 70 65 6e 64 20 62 6c 6f 63 6b 69 6e .lappend blockin
35e00 66 6f 32 20 5b 63 6f 6e 63 61 74 20 5b 65 78 70 fo2 [concat [exp
35e10 72 20 24 6f 6c 64 6c 65 76 65 6c 2b 5b 6c 69 6e r $oldlevel+[lin
35e20 64 65 78 20 24 62 69 20 30 5d 5d 20 5b 6c 72 61 dex $bi 0]] [lra
35e30 6e 67 65 20 24 62 69 20 31 20 65 6e 64 5d 5d 0a nge $bi 1 end]].
35e40 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 69 }.. set i
35e50 6e 73 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 nstrumentedfiles
35e60 49 6e 66 6f 28 24 63 75 72 72 65 6e 74 66 69 6c Info($currentfil
35e70 65 29 20 5b 65 76 61 6c 20 6c 72 65 70 6c 61 63 e) [eval lreplac
35e80 65 20 5b 6c 69 73 74 20 24 69 6e 73 74 72 75 6d e [list $instrum
35e90 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 6f 28 24 entedfilesInfo($
35ea0 63 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 5c 0a currentfile)] \.
35eb0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
35ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
35ed0 20 20 20 5b 65 78 70 72 20 24 6c 31 5f 6f 6c 64 [expr $l1_old
35ee0 2d 31 5d 20 5b 65 78 70 72 20 24 6c 32 5f 6f 6c -1] [expr $l2_ol
35ef0 64 2d 31 5d 20 24 62 6c 6f 63 6b 69 6e 66 6f 32 d-1] $blockinfo2
35f00 5d 0a 0a 20 20 20 20 43 6f 6c 6f 72 69 7a 65 4c ].. ColorizeL
35f10 69 6e 65 73 20 24 6c 31 5f 6e 65 77 20 24 6c 32 ines $l1_new $l2
35f20 5f 6e 65 77 0a 20 20 20 20 69 66 20 7b 20 5b 69 _new. if { [i
35f30 6e 66 6f 20 65 78 69 73 74 73 20 63 75 72 72 65 nfo exists curre
35f40 6e 74 66 69 6c 65 5f 73 65 63 6f 6e 64 61 72 79 ntfile_secondary
35f50 5d 20 26 26 20 24 63 75 72 72 65 6e 74 66 69 6c ] && $currentfil
35f60 65 20 65 71 20 24 63 75 72 72 65 6e 74 66 69 6c e eq $currentfil
35f70 65 5f 73 65 63 6f 6e 64 61 72 79 20 7d 20 7b 0a e_secondary } {.
35f80 09 43 6f 6c 6f 72 69 7a 65 4c 69 6e 65 73 20 24 .ColorizeLines $
35f90 6c 31 5f 6e 65 77 20 24 6c 32 5f 6e 65 77 20 74 l1_new $l2_new t
35fa0 65 78 74 5f 73 65 63 6f 6e 64 61 72 79 0a 20 20 ext_secondary.
35fb0 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 }.. if { [i
35fc0 6e 66 6f 20 65 78 69 73 74 73 20 69 6e 73 74 72 nfo exists instr
35fd0 75 6d 65 6e 74 65 64 66 69 6c 65 73 50 28 24 63 umentedfilesP($c
35fe0 75 72 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b urrentfile)] } {
35ff0 0a 09 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 ..unset instrume
36000 6e 74 65 64 66 69 6c 65 73 50 28 24 63 75 72 72 ntedfilesP($curr
36010 65 6e 74 66 69 6c 65 29 20 69 6e 73 74 72 75 6d entfile) instrum
36020 65 6e 74 65 64 66 69 6c 65 73 52 28 24 63 75 72 entedfilesR($cur
36030 72 65 6e 74 66 69 6c 65 29 0a 20 20 20 20 7d 0a rentfile). }.
36040 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 if { [info e
36050 78 69 73 74 73 20 69 6e 73 74 72 75 6d 65 6e 74 xists instrument
36060 65 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 edfilesTime($cur
36070 72 65 6e 74 66 69 6c 65 29 5d 20 7d 20 7b 0a 09 rentfile)] } {..
36080 75 6e 73 65 74 20 69 6e 73 74 72 75 6d 65 6e 74 unset instrument
36090 65 64 66 69 6c 65 73 54 69 6d 65 28 24 63 75 72 edfilesTime($cur
360a0 72 65 6e 74 66 69 6c 65 29 0a 20 20 20 20 7d 0a rentfile). }.
360b0 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 if { [string
360c0 20 6d 61 74 63 68 20 69 6e 73 2a 20 24 63 6f 6d match ins* $com
360d0 6d 61 6e 64 5d 20 26 26 20 5b 24 74 65 78 74 20 mand] && [$text
360e0 67 65 74 20 22 69 6e 73 65 72 74 2d 31 63 22 5d get "insert-1c"]
360f0 20 3d 3d 20 22 5c 7d 22 20 7c 7c 20 5c 0a 09 20 == "\}" || \..
36100 20 20 20 20 5b 24 74 65 78 74 20 67 65 74 20 22 [$text get "
36110 69 6e 73 65 72 74 2d 31 63 22 5d 20 3d 3d 20 22 insert-1c"] == "
36120 5c 5d 22 20 7d 20 7b 0a 09 53 65 61 72 63 68 42 \]" } {..SearchB
36130 72 61 63 65 73 20 2d 31 20 2d 31 0a 20 20 20 20 races -1 -1.
36140 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
36150 75 67 67 65 72 3a 3a 53 65 61 72 63 68 42 72 61 ugger::SearchBra
36160 63 65 73 5f 78 6d 6c 20 7b 20 78 20 79 20 7d 20 ces_xml { x y }
36170 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
36180 65 78 74 0a 0a 20 20 20 20 73 65 74 20 72 65 78 ext.. set rex
36190 20 7b 3c 5c 73 2a 3f 28 3f 3a 28 21 2d 2d 2e 2a {<\s*?(?:(!--.*
361a0 3f 2d 2d 3e 29 7c 28 2f 3f 29 5c 73 2a 3f 28 5b ?-->)|(/?)\s*?([
361b0 5e 21 3e 2f 5c 73 5d 2b 3f 29 28 3f 3a 5c 73 5b ^!>/\s]+?)(?:\s[
361c0 5e 3e 5d 2a 3f 5b 5e 3e 2f 5d 29 3f 28 2f 3f 29 ^>]*?[^>/])?(/?)
361d0 5c 73 2a 3f 3e 29 7d 0a 20 20 20 20 73 65 74 20 \s*?>)}. set
361e0 73 65 6c 20 5b 24 74 65 78 74 20 67 65 74 20 69 sel [$text get i
361f0 6e 73 65 72 74 2d 31 63 5d 0a 20 20 20 20 73 65 nsert-1c]. se
36200 74 20 73 74 61 74 65 20 6e 6f 72 6d 61 6c 0a 20 t state normal.
36210 20 20 20 77 68 69 6c 65 20 7b 20 24 73 74 61 74 while { $stat
36220 65 20 65 71 20 22 6e 6f 72 6d 61 6c 22 20 26 26 e eq "normal" &&
36230 20 24 73 65 6c 20 65 71 20 22 3e 22 20 7d 20 7b $sel eq ">" } {
36240 0a 09 73 65 74 20 69 64 78 20 5b 24 74 65 78 74 ..set idx [$text
36250 20 73 65 61 72 63 68 20 2d 62 61 63 6b 77 61 72 search -backwar
36260 64 73 20 2d 72 65 67 65 78 70 20 2d 6e 6f 6c 69 ds -regexp -noli
36270 6e 65 73 74 6f 70 20 2d 63 6f 75 6e 74 20 3a 3a nestop -count ::
36280 63 6f 75 6e 74 30 20 24 72 65 78 20 69 6e 73 65 count0 $rex inse
36290 72 74 20 31 2e 30 5d 0a 09 69 66 20 7b 20 24 69 rt 1.0]..if { $i
362a0 64 78 20 65 71 20 22 22 20 7d 20 7b 20 62 72 65 dx eq "" } { bre
362b0 61 6b 20 7d 0a 09 72 65 67 65 78 70 20 24 72 65 ak }..regexp $re
362c0 78 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 64 x [$text get $id
362d0 78 20 22 24 69 64 78 2b 24 3a 3a 63 6f 75 6e 74 x "$idx+$::count
362e0 30 20 63 68 61 72 73 22 5d 20 7b 7d 20 69 73 5f 0 chars"] {} is_
362f0 63 6f 6d 6d 65 6e 74 20 69 73 5f 65 6e 64 20 74 comment is_end t
36300 61 67 20 69 73 5f 73 74 61 72 74 5f 65 6e 64 0a ag is_start_end.
36310 09 73 65 74 20 69 64 78 5f 69 6e 69 20 24 69 64 .set idx_ini $id
36320 78 0a 09 73 65 74 20 69 64 78 5f 65 6e 64 20 5b x..set idx_end [
36330 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 $text index inse
36340 72 74 5d 0a 09 73 65 74 20 73 74 61 74 65 20 66 rt]..set state f
36350 6f 75 6e 64 0a 20 20 20 20 7d 0a 20 20 20 20 73 ound. }. s
36360 65 74 20 73 65 6c 20 5b 24 74 65 78 74 20 67 65 et sel [$text ge
36370 74 20 69 6e 73 65 72 74 5d 0a 20 20 20 20 77 68 t insert]. wh
36380 69 6c 65 20 7b 20 24 73 74 61 74 65 20 65 71 20 ile { $state eq
36390 22 6e 6f 72 6d 61 6c 22 20 26 26 20 24 73 65 6c "normal" && $sel
363a0 20 65 71 20 22 3c 22 20 7d 20 7b 0a 09 73 65 74 eq "<" } {..set
363b0 20 69 64 78 20 5b 24 74 65 78 74 20 73 65 61 72 idx [$text sear
363c0 63 68 20 2d 72 65 67 65 78 70 20 2d 6e 6f 6c 69 ch -regexp -noli
363d0 6e 65 73 74 6f 70 20 2d 63 6f 75 6e 74 20 3a 3a nestop -count ::
363e0 63 6f 75 6e 74 30 20 24 72 65 78 20 69 6e 73 65 count0 $rex inse
363f0 72 74 20 65 6e 64 5d 0a 09 69 66 20 7b 20 24 69 rt end]..if { $i
36400 64 78 20 65 71 20 22 22 20 7d 20 7b 20 62 72 65 dx eq "" } { bre
36410 61 6b 20 7d 0a 09 72 65 67 65 78 70 20 24 72 65 ak }..regexp $re
36420 78 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 64 x [$text get $id
36430 78 20 22 24 69 64 78 2b 24 3a 3a 63 6f 75 6e 74 x "$idx+$::count
36440 30 20 63 68 61 72 73 22 5d 20 7b 7d 20 69 73 5f 0 chars"] {} is_
36450 63 6f 6d 6d 65 6e 74 20 69 73 5f 65 6e 64 20 74 comment is_end t
36460 61 67 20 69 73 5f 73 74 61 72 74 5f 65 6e 64 0a ag is_start_end.
36470 09 73 65 74 20 69 64 78 5f 69 6e 69 20 69 6e 73 .set idx_ini ins
36480 65 72 74 0a 09 73 65 74 20 69 64 78 5f 65 6e 64 ert..set idx_end
36490 20 22 24 69 64 78 2b 24 3a 3a 63 6f 75 6e 74 30 "$idx+$::count0
364a0 20 63 68 61 72 73 22 0a 09 73 65 74 20 73 74 61 chars"..set sta
364b0 74 65 20 66 6f 75 6e 64 0a 20 20 20 20 7d 0a 20 te found. }.
364c0 20 20 20 69 66 20 7b 20 24 73 74 61 74 65 20 6e if { $state n
364d0 65 20 22 66 6f 75 6e 64 22 20 7d 20 7b 0a 09 73 e "found" } {..s
364e0 65 74 20 6f 70 65 6e 4c 20 5b 6c 69 73 74 20 22 et openL [list "
364f0 5c 5b 22 20 22 5c 7b 22 20 22 28 22 5d 0a 09 73 \[" "\{" "("]..s
36500 65 74 20 63 6c 6f 73 65 4c 20 5b 6c 69 73 74 20 et closeL [list
36510 22 5c 5d 22 20 22 5c 7d 22 20 22 29 22 5d 0a 09 "\]" "\}" ")"]..
36520 5f 73 65 61 72 63 68 5f 62 72 61 63 65 73 5f 61 _search_braces_a
36530 6e 64 5f 73 65 6c 65 63 74 20 24 6f 70 65 6e 4c nd_select $openL
36540 20 24 63 6c 6f 73 65 4c 20 24 78 20 24 79 0a 09 $closeL $x $y..
36550 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 return. }.
36560 20 69 66 20 7b 20 24 69 73 5f 73 74 61 72 74 5f if { $is_start_
36570 65 6e 64 20 6e 65 20 22 22 20 7c 7c 20 24 69 73 end ne "" || $is
36580 5f 63 6f 6d 6d 65 6e 74 20 6e 65 20 22 22 20 7d _comment ne "" }
36590 20 7b 0a 09 24 74 65 78 74 20 74 61 67 20 72 65 {..$text tag re
365a0 6d 6f 76 65 20 73 65 6c 20 30 2e 30 20 65 6e 64 move sel 0.0 end
365b0 0a 09 24 74 65 78 74 20 74 61 67 20 61 64 64 20 ..$text tag add
365c0 73 65 6c 20 24 69 64 78 20 22 24 69 64 78 2b 24 sel $idx "$idx+$
365d0 3a 3a 63 6f 75 6e 74 30 20 63 68 61 72 73 22 0a ::count0 chars".
365e0 09 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20 .$text mark set
365f0 69 6e 73 65 72 74 20 24 69 64 78 0a 09 72 65 74 insert $idx..ret
36600 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 urn. }.. s
36610 65 74 20 63 6f 75 6e 74 65 72 20 30 0a 20 20 20 et counter 0.
36620 20 73 65 74 20 73 74 61 74 65 20 6e 6f 72 6d 61 set state norma
36630 6c 0a 20 20 20 20 77 68 69 6c 65 20 7b 20 24 73 l. while { $s
36640 74 61 74 65 20 65 71 20 22 6e 6f 72 6d 61 6c 22 tate eq "normal"
36650 20 26 26 20 24 69 73 5f 65 6e 64 20 6e 65 20 22 && $is_end ne "
36660 22 20 7d 20 7b 0a 09 73 65 74 20 69 64 78 5f 6e " } {..set idx_n
36670 65 77 20 5b 24 74 65 78 74 20 73 65 61 72 63 68 ew [$text search
36680 20 2d 62 61 63 6b 77 61 72 64 73 20 2d 72 65 67 -backwards -reg
36690 65 78 70 20 2d 6e 6f 6c 69 6e 65 73 74 6f 70 20 exp -nolinestop
366a0 2d 63 6f 75 6e 74 20 3a 3a 63 6f 75 6e 74 20 24 -count ::count $
366b0 72 65 78 20 24 69 64 78 20 31 2e 30 5d 0a 09 69 rex $idx 1.0]..i
366c0 66 20 7b 20 24 69 64 78 5f 6e 65 77 20 65 71 20 f { $idx_new eq
366d0 22 22 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 "" } { break }..
366e0 72 65 67 65 78 70 20 24 72 65 78 20 5b 24 74 65 regexp $rex [$te
366f0 78 74 20 67 65 74 20 24 69 64 78 5f 6e 65 77 20 xt get $idx_new
36700 22 24 69 64 78 5f 6e 65 77 2b 24 3a 3a 63 6f 75 "$idx_new+$::cou
36710 6e 74 20 63 68 61 72 73 22 5d 20 5c 0a 09 20 20 nt chars"] \..
36720 20 20 7b 7d 20 69 73 5f 63 6f 6d 6d 65 6e 74 5f {} is_comment_
36730 6e 65 77 20 69 73 5f 65 6e 64 5f 6e 65 77 20 74 new is_end_new t
36740 61 67 5f 6e 65 77 20 69 73 5f 73 74 61 72 74 5f ag_new is_start_
36750 65 6e 64 5f 6e 65 77 0a 09 69 66 20 7b 20 24 69 end_new..if { $i
36760 73 5f 73 74 61 72 74 5f 65 6e 64 5f 6e 65 77 20 s_start_end_new
36770 6e 65 20 22 22 20 7c 7c 20 24 69 73 5f 63 6f 6d ne "" || $is_com
36780 6d 65 6e 74 5f 6e 65 77 20 6e 65 20 22 22 20 7d ment_new ne "" }
36790 20 7b 0a 09 20 20 20 20 23 20 6e 6f 74 68 69 6e {.. # nothin
367a0 67 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 69 g..} elseif { $i
367b0 73 5f 65 6e 64 5f 6e 65 77 20 6e 65 20 22 22 20 s_end_new ne ""
367c0 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 20 63 6f } {.. incr co
367d0 75 6e 74 65 72 0a 09 7d 20 65 6c 73 65 69 66 20 unter..} elseif
367e0 7b 20 24 63 6f 75 6e 74 65 72 20 3d 3d 20 30 20 { $counter == 0
367f0 26 26 20 24 74 61 67 5f 6e 65 77 20 65 71 20 24 && $tag_new eq $
36800 74 61 67 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 tag } {.. set
36810 20 73 74 61 74 65 20 66 6f 75 6e 64 0a 09 20 20 state found..
36820 20 20 73 65 74 20 69 64 78 5f 69 6e 69 20 24 69 set idx_ini $i
36830 64 78 5f 6e 65 77 0a 09 20 20 20 20 73 65 74 20 dx_new.. set
36840 69 64 78 5f 73 65 65 20 24 69 64 78 5f 6e 65 77 idx_see $idx_new
36850 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 ..} else {..
36860 69 6e 63 72 20 63 6f 75 6e 74 65 72 20 2d 31 0a incr counter -1.
36870 09 7d 0a 09 73 65 74 20 69 64 78 20 24 69 64 78 .}..set idx $idx
36880 5f 6e 65 77 0a 20 20 20 20 7d 0a 20 20 20 20 73 _new. }. s
36890 65 74 20 69 64 78 20 22 24 69 64 78 2b 24 3a 3a et idx "$idx+$::
368a0 63 6f 75 6e 74 30 20 63 68 61 72 73 22 0a 20 20 count0 chars".
368b0 20 20 77 68 69 6c 65 20 7b 20 24 73 74 61 74 65 while { $state
368c0 20 65 71 20 22 6e 6f 72 6d 61 6c 22 20 26 26 20 eq "normal" &&
368d0 24 69 73 5f 65 6e 64 20 65 71 20 22 22 20 7d 20 $is_end eq "" }
368e0 7b 0a 09 73 65 74 20 69 64 78 5f 6e 65 77 20 5b {..set idx_new [
368f0 24 74 65 78 74 20 73 65 61 72 63 68 20 2d 72 65 $text search -re
36900 67 65 78 70 20 2d 6e 6f 6c 69 6e 65 73 74 6f 70 gexp -nolinestop
36910 20 2d 63 6f 75 6e 74 20 3a 3a 63 6f 75 6e 74 20 -count ::count
36920 24 72 65 78 20 24 69 64 78 20 65 6e 64 5d 0a 09 $rex $idx end]..
36930 69 66 20 7b 20 24 69 64 78 5f 6e 65 77 20 65 71 if { $idx_new eq
36940 20 22 22 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a "" } { break }.
36950 09 72 65 67 65 78 70 20 24 72 65 78 20 5b 24 74 .regexp $rex [$t
36960 65 78 74 20 67 65 74 20 24 69 64 78 5f 6e 65 77 ext get $idx_new
36970 20 22 24 69 64 78 5f 6e 65 77 2b 24 3a 3a 63 6f "$idx_new+$::co
36980 75 6e 74 20 63 68 61 72 73 22 5d 20 5c 0a 09 20 unt chars"] \..
36990 20 20 20 7b 7d 20 69 73 5f 63 6f 6d 6d 65 6e 74 {} is_comment
369a0 5f 6e 65 77 20 69 73 5f 65 6e 64 5f 6e 65 77 20 _new is_end_new
369b0 74 61 67 5f 6e 65 77 20 69 73 5f 73 74 61 72 74 tag_new is_start
369c0 5f 65 6e 64 5f 6e 65 77 0a 09 69 66 20 7b 20 24 _end_new..if { $
369d0 69 73 5f 73 74 61 72 74 5f 65 6e 64 5f 6e 65 77 is_start_end_new
369e0 20 6e 65 20 22 22 20 7c 7c 20 24 69 73 5f 63 6f ne "" || $is_co
369f0 6d 6d 65 6e 74 5f 6e 65 77 20 6e 65 20 22 22 20 mment_new ne ""
36a00 7d 20 7b 0a 09 20 20 20 20 23 20 6e 6f 74 68 69 } {.. # nothi
36a10 6e 67 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 ng..} elseif { $
36a20 69 73 5f 65 6e 64 5f 6e 65 77 20 65 71 20 22 22 is_end_new eq ""
36a30 20 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 20 63 } {.. incr c
36a40 6f 75 6e 74 65 72 0a 09 7d 20 65 6c 73 65 69 66 ounter..} elseif
36a50 20 7b 20 24 63 6f 75 6e 74 65 72 20 3d 3d 20 30 { $counter == 0
36a60 20 26 26 20 24 74 61 67 5f 6e 65 77 20 65 71 20 && $tag_new eq
36a70 24 74 61 67 20 7d 20 7b 0a 09 20 20 20 20 73 65 $tag } {.. se
36a80 74 20 73 74 61 74 65 20 66 6f 75 6e 64 0a 09 20 t state found..
36a90 20 20 20 73 65 74 20 69 64 78 5f 65 6e 64 20 22 set idx_end "
36aa0 24 69 64 78 5f 6e 65 77 2b 24 3a 3a 63 6f 75 6e $idx_new+$::coun
36ab0 74 20 63 68 61 72 73 22 0a 09 20 20 20 20 73 65 t chars".. se
36ac0 74 20 69 64 78 5f 73 65 65 20 22 24 69 64 78 5f t idx_see "$idx_
36ad0 6e 65 77 2b 24 3a 3a 63 6f 75 6e 74 20 63 68 61 new+$::count cha
36ae0 72 73 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 rs"..} else {..
36af0 20 20 20 69 6e 63 72 20 63 6f 75 6e 74 65 72 20 incr counter
36b00 2d 31 0a 09 7d 0a 09 73 65 74 20 69 64 78 20 22 -1..}..set idx "
36b10 24 69 64 78 5f 6e 65 77 2b 24 3a 3a 63 6f 75 6e $idx_new+$::coun
36b20 74 20 63 68 61 72 73 22 0a 20 20 20 20 7d 0a 23 t chars". }.#
36b30 20 20 20 20 20 69 66 20 7b 20 24 73 74 61 74 65 if { $state
36b40 20 65 71 20 22 6e 6f 72 6d 61 6c 22 20 7d 20 7b eq "normal" } {
36b50 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 7b 20 .# if {
36b60 24 78 20 3e 3d 20 30 20 7d 20 7b 0a 23 20 20 20 $x >= 0 } {.#
36b70 20 20 20 20 20 20 20 20 20 20 73 65 74 20 3a 3a set ::
36b80 74 6b 50 72 69 76 28 73 65 6c 65 63 74 4d 6f 64 tkPriv(selectMod
36b90 65 29 20 77 6f 72 64 20 3b 23 20 74 63 6c 38 2e e) word ;# tcl8.
36ba0 33 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 3.#
36bb0 63 61 74 63 68 20 7b 20 73 65 74 20 3a 3a 74 6b catch { set ::tk
36bc0 3a 3a 50 72 69 76 28 73 65 6c 65 63 74 4d 6f 64 ::Priv(selectMod
36bd0 65 29 20 77 6f 72 64 20 7d 20 3b 23 20 74 63 6c e) word } ;# tcl
36be0 38 2e 34 0a 23 20 20 20 20 20 20 20 20 20 20 20 8.4.#
36bf0 20 20 74 6b 54 65 78 74 53 65 6c 65 63 74 54 6f tkTextSelectTo
36c00 20 24 74 65 78 74 20 24 78 20 24 79 0a 23 20 20 $text $x $y.#
36c10 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 catch
36c20 20 7b 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 { $text mark se
36c30 74 20 69 6e 73 65 72 74 20 73 65 6c 2e 6c 61 73 t insert sel.las
36c40 74 7d 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 t}.#
36c50 20 63 61 74 63 68 20 7b 20 24 74 65 78 74 20 6d catch { $text m
36c60 61 72 6b 20 73 65 74 20 61 6e 63 68 6f 72 20 73 ark set anchor s
36c70 65 6c 2e 66 69 72 73 74 7d 0a 23 20 20 20 20 20 el.first}.#
36c80 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 20 20 }.#
36c90 72 65 74 75 72 6e 0a 23 20 20 20 20 20 7d 0a 20 return.# }.
36ca0 20 20 20 69 66 20 7b 20 24 73 74 61 74 65 20 65 if { $state e
36cb0 71 20 22 6e 6f 72 6d 61 6c 22 20 7d 20 7b 0a 09 q "normal" } {..
36cc0 23 20 69 74 20 69 73 20 62 65 74 74 65 72 20 74 # it is better t
36cd0 6f 20 73 65 6c 65 63 74 20 75 70 20 74 6f 20 74 o select up to t
36ce0 68 65 20 70 6f 69 6e 74 20 77 68 65 72 65 20 74 he point where t
36cf0 68 65 20 70 72 6f 62 6c 65 6d 73 20 62 65 67 69 he problems begi
36d00 6e 0a 09 69 66 20 7b 20 5b 24 74 65 78 74 20 63 n..if { [$text c
36d10 6f 6d 70 61 72 65 20 24 69 64 78 20 3c 20 24 69 ompare $idx < $i
36d20 64 78 5f 69 6e 69 5d 20 7d 20 7b 0a 09 20 20 20 dx_ini] } {..
36d30 20 73 65 74 20 69 64 78 5f 69 6e 69 20 24 69 64 set idx_ini $id
36d40 78 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 5b 24 x..} elseif { [$
36d50 74 65 78 74 20 63 6f 6d 70 61 72 65 20 24 69 64 text compare $id
36d60 78 20 3e 20 24 69 64 78 5f 65 6e 64 5d 20 7d 20 x > $idx_end] }
36d70 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 5f 65 {.. set idx_e
36d80 6e 64 20 24 69 64 78 0a 09 7d 0a 09 73 65 74 20 nd $idx..}..set
36d90 69 64 78 5f 73 65 65 20 24 69 64 78 0a 20 20 20 idx_see $idx.
36da0 20 7d 0a 20 20 20 20 24 74 65 78 74 20 74 61 67 }. $text tag
36db0 20 72 65 6d 6f 76 65 20 73 65 6c 20 30 2e 30 20 remove sel 0.0
36dc0 65 6e 64 0a 20 20 20 20 24 74 65 78 74 20 74 61 end. $text ta
36dd0 67 20 61 64 64 20 73 65 6c 20 24 69 64 78 5f 69 g add sel $idx_i
36de0 6e 69 20 24 69 64 78 5f 65 6e 64 0a 20 20 20 20 ni $idx_end.
36df0 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 $text mark set i
36e00 6e 73 65 72 74 20 24 69 64 78 5f 73 65 65 0a 20 nsert $idx_see.
36e10 20 20 20 24 74 65 78 74 20 73 65 65 20 24 69 64 $text see $id
36e20 78 5f 73 65 65 0a 7d 0a 0a 70 72 6f 63 20 52 61 x_see.}..proc Ra
36e30 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 mDebugger::Searc
36e40 68 42 72 61 63 65 73 5f 63 70 70 5f 64 65 66 69 hBraces_cpp_defi
36e50 6e 65 73 20 7b 20 78 20 79 20 7d 20 7b 0a 20 20 nes { x y } {.
36e60 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
36e70 20 20 20 20 0a 20 20 20 20 73 65 74 20 6c 20 5b . set l [
36e80 24 74 65 78 74 20 67 65 74 20 22 69 6e 73 65 72 $text get "inser
36e90 74 20 6c 69 6e 65 73 74 61 72 74 22 20 22 69 6e t linestart" "in
36ea0 73 65 72 74 20 6c 69 6e 65 65 6e 64 22 5d 0a 20 sert lineend"].
36eb0 20 20 20 69 66 20 7b 20 21 5b 72 65 67 65 78 70 if { ![regexp
36ec0 20 7b 5e 23 28 69 66 7c 65 6c 73 65 7c 65 6e 64 {^#(if|else|end
36ed0 69 66 29 7d 20 24 6c 20 7b 7d 20 77 68 61 74 5d if)} $l {} what]
36ee0 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 30 0a 20 } {..return 0.
36ef0 20 20 20 7d 0a 20 20 20 20 73 77 69 74 63 68 20 }. switch
36f00 24 77 68 61 74 20 7b 0a 09 69 66 20 2d 20 65 6c $what {..if - el
36f10 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 se {.. set li
36f20 6e 69 20 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 ni [scan [$text
36f30 69 6e 64 65 78 20 22 69 6e 73 65 72 74 2b 31 6c index "insert+1l
36f40 22 5d 20 25 64 5d 0a 09 20 20 20 20 73 65 74 20 "] %d].. set
36f50 6c 65 6e 64 20 5b 73 63 61 6e 20 5b 24 74 65 78 lend [scan [$tex
36f60 74 20 69 6e 64 65 78 20 22 65 6e 64 2d 31 63 22 t index "end-1c"
36f70 5d 20 25 64 5d 0a 09 20 20 20 20 73 65 74 20 64 ] %d].. set d
36f80 65 6c 74 61 20 31 0a 09 20 20 20 20 73 65 74 20 elta 1.. set
36f90 63 6d 70 20 7b 24 69 6c 69 6e 65 20 3c 3d 20 24 cmp {$iline <= $
36fa0 6c 65 6e 64 7d 0a 09 7d 0a 09 65 6e 64 69 66 20 lend}..}..endif
36fb0 7b 0a 09 20 20 20 20 73 65 74 20 6c 69 6e 69 20 {.. set lini
36fc0 5b 73 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 [scan [$text ind
36fd0 65 78 20 22 69 6e 73 65 72 74 2d 31 6c 22 5d 20 ex "insert-1l"]
36fe0 25 64 5d 0a 09 20 20 20 20 73 65 74 20 6c 65 6e %d].. set len
36ff0 64 20 31 0a 09 20 20 20 20 73 65 74 20 64 65 6c d 1.. set del
37000 74 61 20 2d 31 0a 09 20 20 20 20 73 65 74 20 63 ta -1.. set c
37010 6d 70 20 7b 24 69 6c 69 6e 65 20 3e 3d 20 24 6c mp {$iline >= $l
37020 65 6e 64 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 end}..}. }.
37030 20 20 73 65 74 20 6c 65 76 65 6c 20 31 0a 20 20 set level 1.
37040 20 20 66 6f 72 20 7b 20 73 65 74 20 69 6c 69 6e for { set ilin
37050 65 20 24 6c 69 6e 69 20 7d 20 24 63 6d 70 20 7b e $lini } $cmp {
37060 20 69 6e 63 72 20 69 6c 69 6e 65 20 24 64 65 6c incr iline $del
37070 74 61 20 7d 20 7b 0a 09 73 65 74 20 6c 20 5b 24 ta } {..set l [$
37080 74 65 78 74 20 67 65 74 20 22 24 69 6c 69 6e 65 text get "$iline
37090 2e 30 20 6c 69 6e 65 73 74 61 72 74 22 20 22 24 .0 linestart" "$
370a0 69 6c 69 6e 65 2e 30 20 6c 69 6e 65 65 6e 64 22 iline.0 lineend"
370b0 5d 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 ]..if { [regexp
370c0 7b 5e 23 28 69 66 7c 65 6c 73 65 7c 65 6e 64 69 {^#(if|else|endi
370d0 66 29 7d 20 24 6c 20 7b 7d 20 77 68 61 74 5f 69 f)} $l {} what_i
370e0 6e 5d 20 7d 20 7b 0a 09 20 20 20 20 73 77 69 74 n] } {.. swit
370f0 63 68 20 24 77 68 61 74 5f 69 6e 20 7b 0a 09 09 ch $what_in {...
37100 69 66 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 if {... if {
37110 24 77 68 61 74 20 69 6e 20 22 69 66 20 65 6c 73 $what in "if els
37120 65 22 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 e" } {...
37130 20 69 6e 63 72 20 6c 65 76 65 6c 0a 09 09 20 20 incr level...
37140 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 } else {...
37150 20 20 20 20 20 69 6e 63 72 20 6c 65 76 65 6c 20 incr level
37160 2d 31 0a 09 09 20 20 20 20 20 20 20 20 69 66 20 -1... if
37170 7b 20 24 6c 65 76 65 6c 20 3d 3d 20 30 20 7d 20 { $level == 0 }
37180 7b 20 62 72 65 61 6b 20 7d 0a 09 09 20 20 20 20 { break }...
37190 7d 0a 09 09 7d 0a 09 09 65 6c 73 65 20 7b 0a 09 }...}...else {..
371a0 09 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 . if { $what
371b0 69 6e 20 22 69 66 20 65 6c 73 65 22 20 26 26 20 in "if else" &&
371c0 24 6c 65 76 65 6c 20 3d 3d 20 31 20 7d 20 7b 0a $level == 1 } {.
371d0 09 09 20 20 20 20 20 20 20 20 69 6e 63 72 20 6c .. incr l
371e0 65 76 65 6c 20 2d 31 0a 09 09 20 20 20 20 20 20 evel -1...
371f0 20 20 62 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a break... }.
37200 09 09 7d 0a 09 09 65 6e 64 69 66 20 7b 0a 09 09 ..}...endif {...
37210 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 69 if { $what i
37220 6e 20 22 69 66 20 65 6c 73 65 22 20 7d 20 7b 0a n "if else" } {.
37230 09 09 20 20 20 20 20 20 20 20 69 6e 63 72 20 6c .. incr l
37240 65 76 65 6c 20 2d 31 0a 09 09 20 20 20 20 20 20 evel -1...
37250 20 20 69 66 20 7b 20 24 6c 65 76 65 6c 20 3d 3d if { $level ==
37260 20 30 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a 09 0 } { break }..
37270 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
37280 20 20 20 20 20 20 20 20 69 6e 63 72 20 6c 65 76 incr lev
37290 65 6c 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 el... }...}..
372a0 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 }..}. }.
372b0 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74 20 switch $what
372c0 7b 0a 09 69 66 20 2d 20 65 6c 73 65 20 7b 0a 09 {..if - else {..
372d0 20 20 20 20 73 65 74 20 69 64 78 41 20 22 69 6e set idxA "in
372e0 73 65 72 74 20 6c 69 6e 65 73 74 61 72 74 22 0a sert linestart".
372f0 09 20 20 20 20 73 65 74 20 69 64 78 42 20 22 24 . set idxB "$
37300 69 6c 69 6e 65 2e 30 20 6c 69 6e 65 65 6e 64 22 iline.0 lineend"
37310 0a 09 20 20 20 20 73 65 74 20 69 64 78 31 20 24 .. set idx1 $
37320 69 64 78 41 0a 09 20 20 20 20 73 65 74 20 69 64 idxA.. set id
37330 78 32 20 24 69 64 78 42 0a 09 7d 0a 09 65 6e 64 x2 $idxB..}..end
37340 69 66 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 if {.. set id
37350 78 41 20 22 24 69 6c 69 6e 65 2e 30 22 0a 09 20 xA "$iline.0"..
37360 20 20 20 73 65 74 20 69 64 78 42 20 22 69 6e 73 set idxB "ins
37370 65 72 74 20 6c 69 6e 65 65 6e 64 22 0a 09 20 20 ert lineend"..
37380 20 20 73 65 74 20 69 64 78 31 20 24 69 64 78 42 set idx1 $idxB
37390 0a 09 20 20 20 20 73 65 74 20 69 64 78 32 20 24 .. set idx2 $
373a0 69 64 78 41 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 idxA..}. }.
373b0 20 20 73 65 74 20 65 72 72 6f 72 20 30 0a 20 20 set error 0.
373c0 20 20 69 66 20 7b 20 24 6c 65 76 65 6c 20 21 3d if { $level !=
373d0 20 30 20 7d 20 7b 20 73 65 74 20 65 72 72 6f 72 0 } { set error
373e0 20 31 20 7d 0a 20 20 20 20 0a 20 20 20 20 23 20 1 }. . #
373f0 77 68 65 6e 20 6e 6f 74 20 64 6f 69 6e 67 20 69 when not doing i
37400 74 20 62 79 20 6d 6f 75 73 65 2c 20 75 73 65 20 t by mouse, use
37410 78 3d 2d 31 0a 20 20 20 20 69 66 20 7b 20 24 78 x=-1. if { $x
37420 20 3e 3d 20 30 20 7d 20 7b 0a 09 24 74 65 78 74 >= 0 } {..$text
37430 20 74 61 67 20 61 64 64 20 73 65 6c 20 24 69 64 tag add sel $id
37440 78 41 20 24 69 64 78 42 0a 09 63 61 74 63 68 20 xA $idxB..catch
37450 7b 20 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 { $text mark set
37460 20 69 6e 73 65 72 74 20 24 69 64 78 32 20 7d 0a insert $idx2 }.
37470 09 63 61 74 63 68 20 7b 20 24 74 65 78 74 20 6d .catch { $text m
37480 61 72 6b 20 73 65 74 20 61 6e 63 68 6f 72 20 24 ark set anchor $
37490 69 64 78 31 20 7d 0a 09 24 74 65 78 74 20 73 65 idx1 }..$text se
374a0 65 20 24 69 64 78 32 0a 20 20 20 20 7d 20 65 6c e $idx2. } el
374b0 73 65 20 7b 0a 09 24 74 65 78 74 20 74 61 67 20 se {..$text tag
374c0 61 64 64 20 74 65 6d 70 6d 61 72 6b 65 72 20 24 add tempmarker $
374d0 69 64 78 41 20 24 69 64 78 42 0a 09 24 74 65 78 idxA $idxB..$tex
374e0 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 t tag configure
374f0 74 65 6d 70 6d 61 72 6b 65 72 20 2d 62 61 63 6b tempmarker -back
37500 67 72 6f 75 6e 64 20 5b 24 74 65 78 74 20 74 61 ground [$text ta
37510 67 20 63 67 65 74 20 73 65 6c 20 2d 62 61 63 6b g cget sel -back
37520 67 72 6f 75 6e 64 5d 20 5c 0a 09 20 20 20 20 2d ground] \.. -
37530 66 6f 72 65 67 72 6f 75 6e 64 20 5b 24 74 65 78 foreground [$tex
37540 74 20 74 61 67 20 63 67 65 74 20 73 65 6c 20 2d t tag cget sel -
37550 66 6f 72 65 67 72 6f 75 6e 64 5d 0a 09 69 66 20 foreground]..if
37560 7b 20 24 65 72 72 6f 72 20 7d 20 7b 20 24 74 65 { $error } { $te
37570 78 74 20 74 61 67 20 63 6f 6e 66 20 74 65 6d 70 xt tag conf temp
37580 6d 61 72 6b 65 72 20 2d 62 61 63 6b 67 72 6f 75 marker -backgrou
37590 6e 64 20 72 65 64 20 7d 0a 09 61 66 74 65 72 20 nd red }..after
375a0 31 30 30 30 20 24 74 65 78 74 20 74 61 67 20 72 1000 $text tag r
375b0 65 6d 6f 76 65 20 74 65 6d 70 6d 61 72 6b 65 72 emove tempmarker
375c0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 7d 0a 20 1.0 end. }.
375d0 20 20 20 69 66 20 7b 20 24 65 72 72 6f 72 20 7d if { $error }
375e0 20 7b 0a 09 62 65 6c 6c 0a 20 20 20 20 7d 0a 20 {..bell. }.
375f0 20 20 20 72 65 74 75 72 6e 20 31 0a 7d 0a 0a 70 return 1.}..p
37600 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
37610 3a 5f 73 65 61 72 63 68 5f 62 72 61 63 65 73 5f :_search_braces_
37620 61 6e 64 5f 73 65 6c 65 63 74 20 7b 20 6f 70 65 and_select { ope
37630 6e 4c 20 63 6c 6f 73 65 4c 20 78 20 79 20 7d 20 nL closeL x y }
37640 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
37650 65 78 74 0a 20 20 20 20 0a 20 20 20 20 73 65 74 ext. . set
37660 20 61 6c 6c 4c 20 5b 63 6f 6e 63 61 74 20 24 6f allL [concat $o
37670 70 65 6e 4c 20 24 63 6c 6f 73 65 4c 5d 0a 20 20 penL $closeL].
37680 20 20 73 65 74 20 72 65 78 20 22 5c 5b 5c 5c 5b set rex "\[\\[
37690 6a 6f 69 6e 20 24 61 6c 6c 4c 20 22 5c 5c 22 5d join $allL "\\"]
376a0 5c 5d 22 0a 0a 20 20 20 20 69 66 20 7b 20 5b 72 \]".. if { [r
376b0 65 67 65 78 70 20 22 24 72 65 78 7b 31 7d 5c 5c egexp "$rex{1}\\
376c0 73 2a 5c 24 22 20 5b 24 74 65 78 74 20 67 65 74 s*\$" [$text get
376d0 20 22 69 6e 73 65 72 74 20 6c 69 6e 65 73 74 61 "insert linesta
376e0 72 74 22 20 69 6e 73 65 72 74 5d 20 72 65 74 5d rt" insert] ret]
376f0 20 7d 20 7b 0a 09 73 65 74 20 6e 75 6d 41 20 5b } {..set numA [
37700 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 72 string length $r
37710 65 74 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b et]. } else {
37720 0a 09 73 65 74 20 6e 75 6d 41 20 2d 31 0a 20 20 ..set numA -1.
37730 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 }. if { [re
37740 67 65 78 70 20 22 5e 5c 5c 73 2a 24 72 65 78 7b gexp "^\\s*$rex{
37750 31 7d 22 20 5b 24 74 65 78 74 20 67 65 74 20 69 1}" [$text get i
37760 6e 73 65 72 74 20 22 69 6e 73 65 72 74 20 6c 69 nsert "insert li
37770 6e 65 65 6e 64 22 5d 20 72 65 74 5d 20 7d 20 7b neend"] ret] } {
37780 0a 09 73 65 74 20 6e 75 6d 42 20 5b 73 74 72 69 ..set numB [stri
37790 6e 67 20 6c 65 6e 67 74 68 20 24 72 65 74 5d 0a ng length $ret].
377a0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
377b0 74 20 6e 75 6d 42 20 2d 31 0a 20 20 20 20 7d 0a t numB -1. }.
377c0 20 20 20 20 69 66 20 7b 20 24 6e 75 6d 41 20 3e if { $numA >
377d0 20 30 20 26 26 20 28 24 6e 75 6d 42 3d 3d 2d 31 0 && ($numB==-1
377e0 20 7c 7c 20 24 6e 75 6d 41 20 3c 3d 20 24 6e 75 || $numA <= $nu
377f0 6d 42 29 20 7d 20 7b 0a 09 73 65 74 20 69 64 78 mB) } {..set idx
37800 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 69 [$text index "i
37810 6e 73 65 72 74 20 2d 24 6e 75 6d 41 20 63 22 5d nsert -$numA c"]
37820 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 . } elseif {
37830 24 6e 75 6d 42 20 3e 20 30 20 7d 20 7b 0a 09 73 $numB > 0 } {..s
37840 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e et idx [$text in
37850 64 65 78 20 22 69 6e 73 65 72 74 20 2b 5b 65 78 dex "insert +[ex
37860 70 72 20 7b 24 6e 75 6d 42 2d 31 7d 5d 20 63 22 pr {$numB-1}] c"
37870 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 ]. } else {..
37880 73 65 74 20 69 64 78 20 2d 31 0a 20 20 20 20 7d set idx -1. }
37890 0a 20 20 20 20 69 66 20 7b 20 24 69 64 78 20 3d . if { $idx =
378a0 3d 20 2d 31 20 7c 7c 20 5b 24 74 65 78 74 20 67 = -1 || [$text g
378b0 65 74 20 22 24 69 64 78 20 2d 31 63 22 5d 20 3d et "$idx -1c"] =
378c0 3d 20 22 5c 5c 22 20 7d 20 7b 0a 09 23 20 77 68 = "\\" } {..# wh
378d0 65 6e 20 6e 6f 74 20 64 6f 69 6e 67 20 69 74 20 en not doing it
378e0 62 79 20 6d 6f 75 73 65 2c 20 75 73 65 20 78 3d by mouse, use x=
378f0 2d 31 0a 09 69 66 20 7b 20 24 78 20 3e 3d 20 30 -1..if { $x >= 0
37900 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 3a 3a } {.. set ::
37910 74 6b 50 72 69 76 28 73 65 6c 65 63 74 4d 6f 64 tkPriv(selectMod
37920 65 29 20 77 6f 72 64 20 3b 23 20 74 63 6c 38 2e e) word ;# tcl8.
37930 33 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 73 3.. catch { s
37940 65 74 20 3a 3a 74 6b 3a 3a 50 72 69 76 28 73 65 et ::tk::Priv(se
37950 6c 65 63 74 4d 6f 64 65 29 20 77 6f 72 64 20 7d lectMode) word }
37960 20 3b 23 20 74 63 6c 38 2e 34 0a 09 20 20 20 20 ;# tcl8.4..
37970 74 6b 54 65 78 74 53 65 6c 65 63 74 54 6f 20 24 tkTextSelectTo $
37980 74 65 78 74 20 24 78 20 24 79 0a 09 20 20 20 20 text $x $y..
37990 63 61 74 63 68 20 7b 20 24 74 65 78 74 20 6d 61 catch { $text ma
379a0 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 73 65 rk set insert se
379b0 6c 2e 6c 61 73 74 7d 0a 09 20 20 20 20 63 61 74 l.last}.. cat
379c0 63 68 20 7b 20 24 74 65 78 74 20 6d 61 72 6b 20 ch { $text mark
379d0 73 65 74 20 61 6e 63 68 6f 72 20 73 65 6c 2e 66 set anchor sel.f
379e0 69 72 73 74 7d 0a 09 7d 0a 09 72 65 74 75 72 6e irst}..}..return
379f0 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 73 . }. set s
37a00 65 6c 20 5b 24 74 65 78 74 20 67 65 74 20 24 69 el [$text get $i
37a10 64 78 5d 0a 20 20 20 20 24 74 65 78 74 20 74 61 dx]. $text ta
37a20 67 20 72 65 6d 6f 76 65 20 73 65 6c 20 30 2e 30 g remove sel 0.0
37a30 20 65 6e 64 0a 20 20 20 20 24 74 65 78 74 20 74 end. $text t
37a40 61 67 20 61 64 64 20 73 65 6c 20 24 69 64 78 20 ag add sel $idx
37a50 22 24 69 64 78 2b 31 63 22 0a 0a 20 20 20 20 69 "$idx+1c".. i
37a60 66 20 7b 20 24 73 65 6c 20 69 6e 20 24 6f 70 65 f { $sel in $ope
37a70 6e 4c 20 7d 20 7b 0a 09 73 65 74 20 64 69 72 20 nL } {..set dir
37a80 2d 66 6f 72 77 61 72 64 73 0a 09 73 65 74 20 73 -forwards..set s
37a90 74 6f 70 69 6e 64 65 78 20 5b 24 74 65 78 74 20 topindex [$text
37aa0 69 6e 64 65 78 20 65 6e 64 5d 0a 09 73 65 74 20 index end]..set
37ab0 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 idx [$text index
37ac0 20 73 65 6c 2e 6c 61 73 74 5d 0a 09 73 65 74 20 sel.last]..set
37ad0 69 6e 63 72 20 2b 31 0a 09 24 74 65 78 74 20 6d incr +1..$text m
37ae0 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 73 ark set insert s
37af0 65 6c 2e 66 69 72 73 74 0a 20 20 20 20 7d 20 65 el.first. } e
37b00 6c 73 65 20 7b 0a 09 73 65 74 20 64 69 72 20 2d lse {..set dir -
37b10 62 61 63 6b 77 61 72 64 73 0a 09 73 65 74 20 73 backwards..set s
37b20 74 6f 70 69 6e 64 65 78 20 31 2e 30 0a 09 73 65 topindex 1.0..se
37b30 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e 64 t idx [$text ind
37b40 65 78 20 73 65 6c 2e 66 69 72 73 74 5d 0a 09 73 ex sel.first]..s
37b50 65 74 20 69 6e 63 72 20 2d 31 0a 09 24 74 65 78 et incr -1..$tex
37b60 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 t mark set inser
37b70 74 20 73 65 6c 2e 6c 61 73 74 0a 09 6c 61 73 73 t sel.last..lass
37b80 69 67 6e 20 5b 6c 69 73 74 20 24 6f 70 65 6e 4c ign [list $openL
37b90 20 24 63 6c 6f 73 65 4c 5d 20 63 6c 6f 73 65 4c $closeL] closeL
37ba0 20 6f 70 65 6e 4c 0a 20 20 20 20 7d 0a 20 20 20 openL. }.
37bb0 20 73 65 74 20 6f 70 65 6e 20 24 73 65 6c 0a 20 set open $sel.
37bc0 20 20 20 73 65 74 20 63 6c 6f 73 65 20 5b 6c 69 set close [li
37bd0 6e 64 65 78 20 24 63 6c 6f 73 65 4c 20 5b 6c 73 ndex $closeL [ls
37be0 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 6f 70 earch -exact $op
37bf0 65 6e 4c 20 24 6f 70 65 6e 5d 5d 0a 20 20 20 20 enL $open]].
37c00 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 . if { [info
37c10 63 6f 6d 6d 61 6e 64 20 3a 3a 52 61 6d 44 65 62 command ::RamDeb
37c20 75 67 67 65 72 49 6e 73 74 72 75 6d 65 6e 74 65 uggerInstrumente
37c30 72 53 65 61 72 63 68 42 72 61 63 65 73 5d 20 65 rSearchBraces] e
37c40 71 20 22 22 20 7d 20 7b 0a 09 49 6e 73 74 72 75 q "" } {..Instru
37c50 6d 65 6e 74 65 72 3a 3a 54 72 79 4c 6f 61 64 4c menter::TryLoadL
37c60 69 62 72 61 72 79 0a 20 20 20 20 7d 0a 20 20 20 ibrary. }.
37c70 20 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d if { [info comm
37c80 61 6e 64 20 3a 3a 52 61 6d 44 65 62 75 67 67 65 and ::RamDebugge
37c90 72 49 6e 73 74 72 75 6d 65 6e 74 65 72 53 65 61 rInstrumenterSea
37ca0 72 63 68 42 72 61 63 65 73 5d 20 6e 65 20 22 22 rchBraces] ne ""
37cb0 20 7d 20 7b 0a 09 73 65 74 20 64 61 74 61 20 5b } {..set data [
37cc0 24 74 65 78 74 20 67 65 74 20 31 2e 30 20 65 6e $text get 1.0 en
37cd0 64 2d 31 63 5d 0a 09 69 66 20 7b 20 24 64 69 72 d-1c]..if { $dir
37ce0 20 65 71 20 22 2d 66 6f 72 77 61 72 64 73 22 20 eq "-forwards"
37cf0 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 64 78 } {.. set idx
37d00 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 24 69 [$text index $i
37d10 64 78 2d 31 63 5d 0a 09 7d 20 65 6c 73 65 20 7b dx-1c]..} else {
37d20 0a 09 20 20 20 20 73 65 74 20 69 64 78 20 5b 24 .. set idx [$
37d30 74 65 78 74 20 69 6e 64 65 78 20 24 69 64 78 5d text index $idx]
37d40 0a 09 7d 0a 09 73 63 61 6e 20 24 69 64 78 20 22 ..}..scan $idx "
37d50 25 64 2e 25 64 22 20 6c 69 6e 65 6e 75 6d 20 6c %d.%d" linenum l
37d60 69 6e 65 70 6f 73 0a 09 73 65 74 20 65 72 72 6f inepos..set erro
37d70 72 20 5b 63 61 74 63 68 20 7b 20 52 61 6d 44 65 r [catch { RamDe
37d80 62 75 67 67 65 72 49 6e 73 74 72 75 6d 65 6e 74 buggerInstrument
37d90 65 72 53 65 61 72 63 68 42 72 61 63 65 73 20 24 erSearchBraces $
37da0 64 61 74 61 20 24 6c 69 6e 65 6e 75 6d 20 24 6c data $linenum $l
37db0 69 6e 65 70 6f 73 20 7d 20 72 65 74 5d 0a 09 6c inepos } ret]..l
37dc0 61 73 73 69 67 6e 20 24 72 65 74 20 6c 69 6e 65 assign $ret line
37dd0 6e 75 6d 20 6c 69 6e 65 70 6f 73 0a 09 69 66 20 num linepos..if
37de0 7b 20 24 64 69 72 20 6e 65 20 22 2d 66 6f 72 77 { $dir ne "-forw
37df0 61 72 64 73 22 20 7d 20 7b 0a 09 20 20 20 20 73 ards" } {.. s
37e00 65 74 20 69 64 78 20 5b 24 74 65 78 74 20 69 6e et idx [$text in
37e10 64 65 78 20 24 69 64 78 2b 31 63 5d 0a 09 7d 0a dex $idx+1c]..}.
37e20 09 73 65 74 20 69 64 78 32 20 24 6c 69 6e 65 6e .set idx2 $linen
37e30 75 6d 2e 24 6c 69 6e 65 70 6f 73 0a 20 20 20 20 um.$linepos.
37e40 7d 20 65 6c 73 65 20 7b 0a 09 6c 61 73 73 69 67 } else {..lassig
37e50 6e 20 5b 6c 69 73 74 20 30 20 30 20 30 20 30 20 n [list 0 0 0 0
37e60 22 22 5d 20 65 72 72 6f 72 20 66 6f 75 6e 64 20 ""] error found
37e70 6c 65 76 65 6c 20 6c 65 76 65 6c 5f 61 6c 74 20 level level_alt
37e80 69 64 78 5f 61 6c 74 0a 09 77 68 69 6c 65 20 7b idx_alt..while {
37e90 20 5b 73 65 74 20 69 64 78 32 20 5b 24 74 65 78 [set idx2 [$tex
37ea0 74 20 73 65 61 72 63 68 20 24 64 69 72 20 2d 72 t search $dir -r
37eb0 65 67 65 78 70 20 2d 2d 20 24 72 65 78 20 24 69 egexp -- $rex $i
37ec0 64 78 20 24 73 74 6f 70 69 6e 64 65 78 5d 5d 20 dx $stopindex]]
37ed0 21 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 20 73 != "" } {.. s
37ee0 65 74 20 72 65 74 20 5b 24 74 65 78 74 20 73 65 et ret [$text se
37ef0 61 72 63 68 20 2d 62 61 63 6b 77 61 72 64 73 20 arch -backwards
37f00 2d 72 65 67 65 78 70 20 2d 63 6f 75 6e 74 20 3a -regexp -count :
37f10 3a 6e 70 70 61 72 20 7b 5c 5c 2b 7d 20 24 69 64 :nppar {\\+} $id
37f20 78 32 20 22 24 69 64 78 32 20 6c 69 6e 65 73 74 x2 "$idx2 linest
37f30 61 72 74 22 5d 0a 09 20 20 20 20 69 66 20 7b 20 art"].. if {
37f40 24 72 65 74 20 65 71 20 22 22 20 7c 7c 20 5b 24 $ret eq "" || [$
37f50 74 65 78 74 20 63 6f 6d 70 61 72 65 20 22 24 72 text compare "$r
37f60 65 74 2b 24 7b 3a 3a 6e 70 70 61 72 7d 63 22 20 et+${::nppar}c"
37f70 21 3d 20 24 69 64 78 32 5d 20 7d 20 7b 0a 09 09 != $idx2] } {...
37f80 73 65 74 20 3a 3a 6e 70 70 61 72 20 30 0a 09 20 set ::nppar 0..
37f90 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 }.. if { $
37fa0 3a 3a 6e 70 70 61 72 25 32 20 3d 3d 20 31 20 7d ::nppar%2 == 1 }
37fb0 20 7b 0a 09 09 69 66 20 7b 20 24 64 69 72 20 3d {...if { $dir =
37fc0 3d 20 22 2d 66 6f 72 77 61 72 64 73 22 20 7d 20 = "-forwards" }
37fd0 7b 0a 09 09 20 20 20 20 73 65 74 20 69 64 78 20 {... set idx
37fe0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 24 69 64 [$text index $id
37ff0 78 32 2b 31 63 5d 0a 09 09 7d 20 65 6c 73 65 20 x2+1c]...} else
38000 7b 0a 09 09 20 20 20 20 73 65 74 20 69 64 78 20 {... set idx
38010 24 69 64 78 32 0a 09 09 7d 0a 09 09 63 6f 6e 74 $idx2...}...cont
38020 69 6e 75 65 0a 09 20 20 20 20 7d 0a 09 20 20 20 inue.. }..
38030 20 73 65 74 20 6e 65 77 73 65 6c 20 5b 24 74 65 set newsel [$te
38040 78 74 20 67 65 74 20 24 69 64 78 32 5d 0a 09 20 xt get $idx2]..
38050 20 20 20 0a 09 20 20 20 20 69 66 20 7b 20 24 6e .. if { $n
38060 65 77 73 65 6c 20 65 71 20 24 6f 70 65 6e 20 7d ewsel eq $open }
38070 20 7b 0a 09 09 69 6e 63 72 20 6c 65 76 65 6c 0a {...incr level.
38080 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 . } elseif {
38090 24 6e 65 77 73 65 6c 20 65 71 20 24 63 6c 6f 73 $newsel eq $clos
380a0 65 20 7d 20 7b 0a 09 09 69 6e 63 72 20 6c 65 76 e } {...incr lev
380b0 65 6c 20 2d 31 0a 09 09 69 66 20 7b 20 24 6c 65 el -1...if { $le
380c0 76 65 6c 20 3c 20 30 20 7d 20 7b 0a 09 09 20 20 vel < 0 } {...
380d0 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
380e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
380f0 20 24 6c 65 76 65 6c 5f 61 6c 74 20 3e 20 30 20 $level_alt > 0
38100 7d 20 7b 0a 09 09 20 20 20 20 23 20 20 20 20 20 } {... #
38110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38120 20 20 20 20 20 20 20 20 73 65 74 20 65 72 72 6f set erro
38130 72 20 31 0a 09 09 20 20 20 20 23 20 20 20 20 20 r 1... #
38140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38150 20 20 20 20 20 20 20 20 73 65 74 20 69 64 78 32 set idx2
38160 20 24 69 64 78 5f 61 6c 74 0a 09 09 20 20 20 20 $idx_alt...
38170 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
38180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
38190 65 61 6b 0a 09 09 20 20 20 20 23 20 20 20 20 20 eak... #
381a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
381b0 20 20 20 20 7d 0a 09 09 20 20 20 20 73 65 74 20 }... set
381c0 66 6f 75 6e 64 20 31 0a 09 09 20 20 20 20 62 72 found 1... br
381d0 65 61 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 eak...}.. } e
381e0 6c 73 65 69 66 20 7b 20 24 6e 65 77 73 65 6c 20 lseif { $newsel
381f0 69 6e 20 24 6f 70 65 6e 4c 20 7d 20 7b 0a 09 09 in $openL } {...
38200 69 6e 63 72 20 6c 65 76 65 6c 5f 61 6c 74 0a 09 incr level_alt..
38210 09 73 65 74 20 69 64 78 5f 61 6c 74 20 24 69 64 .set idx_alt $id
38220 78 32 0a 09 20 20 20 20 7d 20 65 6c 73 65 69 66 x2.. } elseif
38230 20 7b 20 24 6e 65 77 73 65 6c 20 69 6e 20 24 63 { $newsel in $c
38240 6c 6f 73 65 4c 20 7d 20 7b 0a 09 09 69 6e 63 72 loseL } {...incr
38250 20 6c 65 76 65 6c 5f 61 6c 74 20 2d 31 0a 09 09 level_alt -1...
38260 69 66 20 7b 20 24 6c 65 76 65 6c 5f 61 6c 74 20 if { $level_alt
38270 3c 20 30 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 < 0 } {... se
38280 74 20 6c 65 76 65 6c 5f 61 6c 74 20 30 0a 09 09 t level_alt 0...
38290 20 20 20 20 73 65 74 20 65 72 72 6f 72 20 31 0a set error 1.
382a0 09 09 20 20 20 20 62 72 65 61 6b 0a 09 09 7d 0a .. break...}.
382b0 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 7b . }.. if {
382c0 20 24 64 69 72 20 3d 3d 20 22 2d 66 6f 72 77 61 $dir == "-forwa
382d0 72 64 73 22 20 7d 20 7b 0a 09 09 73 65 74 20 69 rds" } {...set i
382e0 64 78 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 dx [$text index
382f0 24 69 64 78 32 2b 31 63 5d 0a 09 20 20 20 20 7d $idx2+1c].. }
38300 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 69 64 else {...set id
38310 78 20 24 69 64 78 32 0a 09 20 20 20 20 7d 0a 09 x $idx2.. }..
38320 7d 0a 09 69 66 20 7b 20 24 6c 65 76 65 6c 5f 61 }..if { $level_a
38330 6c 74 20 21 3d 20 30 20 7d 20 7b 0a 09 20 20 20 lt != 0 } {..
38340 20 73 65 74 20 65 72 72 6f 72 20 31 0a 09 7d 0a set error 1..}.
38350 09 69 66 20 7b 20 24 69 64 78 32 20 65 71 20 22 .if { $idx2 eq "
38360 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 " } {.. set e
38370 72 72 6f 72 20 31 0a 09 20 20 20 20 73 65 74 20 rror 1.. set
38380 69 64 78 32 20 24 73 74 6f 70 69 6e 64 65 78 0a idx2 $stopindex.
38390 09 7d 0a 09 73 65 74 20 69 64 78 20 69 6e 73 65 .}..set idx inse
383a0 72 74 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 rt. }. if
383b0 7b 20 24 65 72 72 6f 72 20 7d 20 7b 20 62 65 6c { $error } { bel
383c0 6c 20 7d 0a 20 20 20 20 24 74 65 78 74 20 74 61 l }. $text ta
383d0 67 20 72 65 6d 6f 76 65 20 73 65 6c 20 31 2e 30 g remove sel 1.0
383e0 20 65 6e 64 0a 20 20 20 20 0a 20 20 20 20 69 66 end. . if
383f0 20 7b 20 24 64 69 72 20 3d 3d 20 22 2d 66 6f 72 { $dir == "-for
38400 77 61 72 64 73 22 20 7d 20 7b 0a 09 73 65 74 20 wards" } {..set
38410 69 64 78 41 20 24 69 64 78 0a 09 73 65 74 20 69 idxA $idx..set i
38420 64 78 42 20 24 69 64 78 32 2b 31 63 0a 20 20 20 dxB $idx2+1c.
38430 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 69 } else {..set i
38440 64 78 41 20 24 69 64 78 32 0a 09 73 65 74 20 69 dxA $idx2..set i
38450 64 78 42 20 24 69 64 78 0a 20 20 20 20 7d 0a 20 dxB $idx. }.
38460 20 20 20 69 66 20 7b 20 24 65 72 72 6f 72 20 7d if { $error }
38470 20 7b 20 53 65 74 4d 65 73 73 61 67 65 20 5b 5f { SetMessage [_
38480 20 22 45 72 72 6f 72 3a 20 62 72 61 63 65 73 20 "Error: braces
38490 6e 6f 74 20 4f 4b 22 5d 20 7d 0a 20 20 20 20 0a not OK"] }. .
384a0 20 20 20 20 23 20 77 68 65 6e 20 6e 6f 74 20 64 # when not d
384b0 6f 69 6e 67 20 69 74 20 62 79 20 6d 6f 75 73 65 oing it by mouse
384c0 2c 20 75 73 65 20 78 3d 2d 31 0a 20 20 20 20 69 , use x=-1. i
384d0 66 20 7b 20 24 78 20 3e 3d 20 30 20 7d 20 7b 0a f { $x >= 0 } {.
384e0 09 24 74 65 78 74 20 74 61 67 20 61 64 64 20 73 .$text tag add s
384f0 65 6c 20 24 69 64 78 41 20 24 69 64 78 42 0a 09 el $idxA $idxB..
38500 63 61 74 63 68 20 7b 20 24 74 65 78 74 20 6d 61 catch { $text ma
38510 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 24 69 rk set insert $i
38520 64 78 32 20 7d 0a 09 24 74 65 78 74 20 73 65 65 dx2 }..$text see
38530 20 24 69 64 78 32 0a 20 20 20 20 7d 20 65 6c 73 $idx2. } els
38540 65 20 7b 0a 09 24 74 65 78 74 20 74 61 67 20 61 e {..$text tag a
38550 64 64 20 74 65 6d 70 6d 61 72 6b 65 72 20 24 69 dd tempmarker $i
38560 64 78 41 20 24 69 64 78 42 0a 09 24 74 65 78 74 dxA $idxB..$text
38570 20 74 61 67 20 63 6f 6e 66 20 74 65 6d 70 6d 61 tag conf tempma
38580 72 6b 65 72 20 2d 62 61 63 6b 67 72 6f 75 6e 64 rker -background
38590 20 5b 24 74 65 78 74 20 74 61 67 20 63 67 65 74 [$text tag cget
385a0 20 73 65 6c 20 2d 62 61 63 6b 67 72 6f 75 6e 64 sel -background
385b0 5d 20 5c 0a 09 20 20 20 20 2d 66 6f 72 65 67 72 ] \.. -foregr
385c0 6f 75 6e 64 20 5b 24 74 65 78 74 20 74 61 67 20 ound [$text tag
385d0 63 67 65 74 20 73 65 6c 20 2d 66 6f 72 65 67 72 cget sel -foregr
385e0 6f 75 6e 64 5d 0a 09 69 66 20 7b 20 24 65 72 72 ound]..if { $err
385f0 6f 72 20 7d 20 7b 20 24 74 65 78 74 20 74 61 67 or } { $text tag
38600 20 63 6f 6e 66 20 74 65 6d 70 6d 61 72 6b 65 72 conf tempmarker
38610 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72 65 64 -background red
38620 20 7d 0a 09 61 66 74 65 72 20 31 30 30 30 20 24 }..after 1000 $
38630 74 65 78 74 20 74 61 67 20 72 65 6d 6f 76 65 20 text tag remove
38640 74 65 6d 70 6d 61 72 6b 65 72 20 31 2e 30 20 65 tempmarker 1.0 e
38650 6e 64 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 nd. }.}..proc
38660 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 RamDebugger::Se
38670 61 72 63 68 42 72 61 63 65 73 20 7b 20 78 20 79 archBraces { x y
38680 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
38690 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 e text. varia
386a0 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c 65 0a ble currentfile.
386b0 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 . if { [regex
386c0 70 20 7b 5e 5c 2a 28 6c 6f 6f 70 7c 69 66 7c 66 p {^\*(loop|if|f
386d0 6f 72 7c 65 6e 64 7c 65 6e 64 6c 6f 6f 70 7c 65 or|end|endloop|e
386e0 6e 64 69 66 7c 65 6e 64 66 6f 72 29 5c 4d 7d 20 ndif|endfor)\M}
386f0 5c 0a 09 20 20 20 20 20 20 5b 24 74 65 78 74 20 \.. [$text
38700 67 65 74 20 22 69 6e 73 65 72 74 20 6c 69 6e 65 get "insert line
38710 73 74 61 72 74 22 20 22 69 6e 73 65 72 74 20 6c start" "insert l
38720 69 6e 65 65 6e 64 22 5d 5d 20 26 26 20 5c 0a 09 ineend"]] && \..
38730 20 20 20 20 20 5b 24 74 65 78 74 20 63 6f 6d 70 [$text comp
38740 61 72 65 20 5b 24 74 65 78 74 20 69 6e 64 65 78 are [$text index
38750 20 69 6e 73 65 72 74 5d 20 3c 3d 20 5b 24 74 65 insert] <= [$te
38760 78 74 20 69 6e 64 65 78 20 22 69 6e 73 65 72 74 xt index "insert
38770 20 6c 69 6e 65 73 74 61 72 74 20 2b 31 63 22 5d linestart +1c"]
38780 5d 20 26 26 20 5c 0a 09 20 20 20 20 20 5b 47 69 ] && \.. [Gi
38790 76 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 veFileType $curr
387a0 65 6e 74 66 69 6c 65 5d 20 3d 3d 20 22 47 69 44 entfile] == "GiD
387b0 20 42 41 53 20 66 69 6c 65 22 20 7d 20 7b 0a 09 BAS file" } {..
387c0 53 65 6c 65 63 74 42 61 73 4c 6f 6f 70 0a 09 72 SelectBasLoop..r
387d0 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 eturn. }.
387e0 69 66 20 7b 20 5b 47 69 76 65 46 69 6c 65 54 79 if { [GiveFileTy
387f0 70 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d pe $currentfile]
38800 20 65 71 20 22 58 4d 4c 22 20 7d 20 7b 0a 09 53 eq "XML" } {..S
38810 65 61 72 63 68 42 72 61 63 65 73 5f 78 6d 6c 20 earchBraces_xml
38820 24 78 20 24 79 0a 09 72 65 74 75 72 6e 0a 20 20 $x $y..return.
38830 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 47 69 }. if { [Gi
38840 76 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 veFileType $curr
38850 65 6e 74 66 69 6c 65 5d 20 65 71 20 22 43 2f 43 entfile] eq "C/C
38860 2b 2b 22 20 7d 20 7b 0a 09 73 65 74 20 66 6f 75 ++" } {..set fou
38870 6e 64 20 5b 53 65 61 72 63 68 42 72 61 63 65 73 nd [SearchBraces
38880 5f 63 70 70 5f 64 65 66 69 6e 65 73 20 24 78 20 _cpp_defines $x
38890 24 79 5d 0a 09 69 66 20 7b 20 24 66 6f 75 6e 64 $y]..if { $found
388a0 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 } { return }.
388b0 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 6f 70 65 }.. set ope
388c0 6e 4c 20 5b 6c 69 73 74 20 22 5c 5b 22 20 22 5c nL [list "\[" "\
388d0 7b 22 20 22 28 22 5d 0a 20 20 20 20 73 65 74 20 {" "("]. set
388e0 63 6c 6f 73 65 4c 20 5b 6c 69 73 74 20 22 5c 5d closeL [list "\]
388f0 22 20 22 5c 7d 22 20 22 29 22 5d 0a 20 20 20 20 " "\}" ")"].
38900 0a 20 20 20 20 5f 73 65 61 72 63 68 5f 62 72 61 . _search_bra
38910 63 65 73 5f 61 6e 64 5f 73 65 6c 65 63 74 20 24 ces_and_select $
38920 6f 70 65 6e 4c 20 24 63 6c 6f 73 65 4c 20 24 78 openL $closeL $x
38930 20 24 79 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 $y.}..proc RamD
38940 65 62 75 67 67 65 72 3a 3a 43 65 6e 74 65 72 44 ebugger::CenterD
38950 69 73 70 6c 61 79 20 7b 7d 20 7b 0a 20 20 20 20 isplay {} {.
38960 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 variable text.
38970 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 5f variable text_
38980 73 65 63 6f 6e 64 61 72 79 0a 20 20 20 20 76 61 secondary. va
38990 72 69 61 62 6c 65 20 6c 61 73 74 5f 63 65 6e 74 riable last_cent
389a0 65 72 5f 64 69 73 70 6c 61 79 0a 20 20 20 20 0a er_display. .
389b0 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 if { [info e
389c0 78 69 73 74 73 20 74 65 78 74 5f 73 65 63 6f 6e xists text_secon
389d0 64 61 72 79 5d 20 26 26 20 5b 66 6f 63 75 73 20 dary] && [focus
389e0 2d 6c 61 73 74 66 6f 72 20 24 74 65 78 74 5d 20 -lastfor $text]
389f0 65 71 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 eq $text_seconda
38a00 72 79 20 7d 20 7b 0a 09 73 65 74 20 6d 79 74 65 ry } {..set myte
38a10 78 74 20 24 74 65 78 74 5f 73 65 63 6f 6e 64 61 xt $text_seconda
38a20 72 79 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ry. } else {.
38a30 09 73 65 74 20 6d 79 74 65 78 74 20 24 74 65 78 .set mytext $tex
38a40 74 0a 20 20 20 20 7d 0a 20 20 20 20 73 63 61 6e t. }. scan
38a50 20 5b 24 6d 79 74 65 78 74 20 69 6e 64 65 78 20 [$mytext index
38a60 69 6e 73 65 72 74 5d 20 22 25 64 22 20 6c 69 6e insert] "%d" lin
38a70 65 0a 20 20 20 20 73 65 74 20 4e 75 6d 4c 69 6e e. set NumLin
38a80 65 73 20 5b 73 63 61 6e 20 5b 24 6d 79 74 65 78 es [scan [$mytex
38a90 74 20 69 6e 64 65 78 20 65 6e 64 2d 31 63 5d 20 t index end-1c]
38aa0 25 64 5d 0a 0a 20 20 20 20 73 65 74 20 74 69 6d %d].. set tim
38ab0 65 20 5b 63 6c 6f 63 6b 20 6d 69 6c 6c 69 73 65 e [clock millise
38ac0 63 6f 6e 64 73 5d 0a 20 20 20 20 73 65 74 20 66 conds]. set f
38ad0 61 63 20 30 2e 35 0a 20 20 20 20 6c 61 73 73 69 ac 0.5. lassi
38ae0 67 6e 20 5b 24 6d 79 74 65 78 74 20 79 76 69 65 gn [$mytext yvie
38af0 77 5d 20 66 31 20 66 32 0a 20 20 20 20 73 65 74 w] f1 f2. set
38b00 20 79 73 20 5b 65 78 70 72 20 24 6c 69 6e 65 2f ys [expr $line/
38b10 64 6f 75 62 6c 65 28 24 4e 75 6d 4c 69 6e 65 73 double($NumLines
38b20 29 2d 24 66 61 63 2a 28 24 66 32 2d 24 66 31 29 )-$fac*($f2-$f1)
38b30 5d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 ].. if { [inf
38b40 6f 20 65 78 69 73 74 73 20 6c 61 73 74 5f 63 65 o exists last_ce
38b50 6e 74 65 72 5f 64 69 73 70 6c 61 79 5d 20 7d 20 nter_display] }
38b60 7b 0a 09 6c 61 73 73 69 67 6e 20 24 6c 61 73 74 {..lassign $last
38b70 5f 63 65 6e 74 65 72 5f 64 69 73 70 6c 61 79 20 _center_display
38b80 6c 61 73 74 5f 79 73 20 6c 61 73 74 5f 74 69 6d last_ys last_tim
38b90 65 0a 09 69 66 20 7b 20 24 74 69 6d 65 20 20 3c e..if { $time <
38ba0 20 24 6c 61 73 74 5f 74 69 6d 65 2b 31 30 30 30 $last_time+1000
38bb0 20 26 26 20 72 6f 75 6e 64 28 24 79 73 2a 31 30 && round($ys*10
38bc0 30 30 29 20 3d 3d 20 72 6f 75 6e 64 28 24 6c 61 00) == round($la
38bd0 73 74 5f 79 73 2a 31 30 30 30 29 20 7d 20 7b 0a st_ys*1000) } {.
38be0 09 20 20 20 20 73 65 74 20 66 61 63 20 30 2e 32 . set fac 0.2
38bf0 35 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 5..}. }. s
38c00 65 74 20 79 73 20 5b 65 78 70 72 20 24 6c 69 6e et ys [expr $lin
38c10 65 2f 64 6f 75 62 6c 65 28 24 4e 75 6d 4c 69 6e e/double($NumLin
38c20 65 73 29 2d 24 66 61 63 2a 28 24 66 32 2d 24 66 es)-$fac*($f2-$f
38c30 31 29 5d 0a 20 20 20 20 69 66 20 7b 20 24 79 73 1)]. if { $ys
38c40 20 3c 20 30 20 7d 20 7b 20 73 65 74 20 79 73 20 < 0 } { set ys
38c50 30 20 7d 0a 20 20 20 20 24 6d 79 74 65 78 74 20 0 }. $mytext
38c60 79 76 69 65 77 20 6d 6f 76 65 74 6f 20 24 79 73 yview moveto $ys
38c70 0a 20 20 20 20 73 65 74 20 6c 61 73 74 5f 63 65 . set last_ce
38c80 6e 74 65 72 5f 64 69 73 70 6c 61 79 20 5b 6c 69 nter_display [li
38c90 73 74 20 24 79 73 20 24 74 69 6d 65 5d 0a 7d 0a st $ys $time].}.
38ca0 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
38cb0 72 3a 3a 43 6f 6d 6d 65 6e 74 53 65 6c 65 63 74 r::CommentSelect
38cc0 69 6f 6e 20 7b 20 77 68 61 74 20 7d 20 7b 0a 20 ion { what } {.
38cd0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
38ce0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
38cf0 72 72 65 6e 74 66 69 6c 65 0a 0a 20 20 20 20 73 rrentfile.. s
38d00 65 74 20 66 69 6c 65 74 79 70 65 20 5b 47 69 76 et filetype [Giv
38d10 65 46 69 6c 65 54 79 70 65 20 24 63 75 72 72 65 eFileType $curre
38d20 6e 74 66 69 6c 65 5d 0a 20 20 20 20 73 65 74 20 ntfile]. set
38d30 65 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72 20 end_commentchar
38d40 22 22 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c "". if { $fil
38d50 65 74 79 70 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 etype == "C/C++"
38d60 20 7d 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 6e } {..set commen
38d70 74 63 68 61 72 20 22 2f 2f 22 0a 20 20 20 20 7d tchar "//". }
38d80 20 65 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 elseif { $filet
38d90 79 70 65 20 3d 3d 20 22 47 69 44 20 42 41 53 20 ype == "GiD BAS
38da0 66 69 6c 65 22 20 7d 20 7b 0a 09 73 65 74 20 63 file" } {..set c
38db0 6f 6d 6d 65 6e 74 63 68 61 72 20 22 2a 23 22 0a ommentchar "*#".
38dc0 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 } elseif { $
38dd0 66 69 6c 65 74 79 70 65 20 3d 3d 20 22 58 4d 4c filetype == "XML
38de0 22 20 7d 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 " } {..set comme
38df0 6e 74 63 68 61 72 20 22 3c 21 2d 2d 22 0a 09 73 ntchar "<!--"..s
38e00 65 74 20 65 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 et end_commentch
38e10 61 72 20 22 2d 2d 3e 22 0a 20 20 20 20 7d 20 65 ar "-->". } e
38e20 6c 73 65 20 7b 0a 09 73 65 74 20 63 6f 6d 6d 65 lse {..set comme
38e30 6e 74 63 68 61 72 20 22 23 22 0a 20 20 20 20 7d ntchar "#". }
38e40 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 . if { [catch
38e50 20 7b 0a 09 73 63 61 6e 20 5b 24 74 65 78 74 20 {..scan [$text
38e60 69 6e 64 65 78 20 73 65 6c 2e 66 69 72 73 74 5d index sel.first]
38e70 20 22 25 64 22 20 6c 69 6e 65 31 0a 09 73 63 61 "%d" line1..sca
38e80 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 n [$text index s
38e90 65 6c 2e 6c 61 73 74 5d 20 22 25 64 2e 25 64 22 el.last] "%d.%d"
38ea0 20 6c 69 6e 65 32 20 70 6f 73 32 0a 09 69 66 20 line2 pos2..if
38eb0 7b 20 24 70 6f 73 32 20 3d 3d 20 30 20 7d 20 7b { $pos2 == 0 } {
38ec0 20 69 6e 63 72 20 6c 69 6e 65 32 20 2d 31 20 7d incr line2 -1 }
38ed0 0a 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 73 63 61 . }] } {..sca
38ee0 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 n [$text index i
38ef0 6e 73 65 72 74 5d 20 22 25 64 22 20 6c 69 6e 65 nsert] "%d" line
38f00 31 0a 09 73 65 74 20 6c 69 6e 65 32 20 24 6c 69 1..set line2 $li
38f10 6e 65 31 0a 09 23 57 61 72 6e 57 69 6e 20 22 53 ne1..#WarnWin "S
38f20 65 6c 65 63 74 20 73 6f 6d 65 74 68 69 6e 67 20 elect something
38f30 66 69 72 73 74 22 20 24 74 65 78 74 0a 09 23 72 first" $text..#r
38f40 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 eturn. }.
38f50 73 77 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 switch $what {..
38f60 6f 6e 20 7b 0a 09 20 20 20 20 66 6f 72 20 7b 20 on {.. for {
38f70 73 65 74 20 69 20 24 6c 69 6e 65 31 20 7d 20 7b set i $line1 } {
38f80 20 24 69 20 3c 3d 20 24 6c 69 6e 65 32 20 7d 20 $i <= $line2 }
38f90 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 24 { incr i } {...$
38fa0 74 65 78 74 20 69 6e 73 65 72 74 20 24 69 2e 30 text insert $i.0
38fb0 20 22 24 63 6f 6d 6d 65 6e 74 63 68 61 72 20 22 "$commentchar "
38fc0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 .. }.. if
38fd0 7b 20 24 65 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 { $end_commentch
38fe0 61 72 20 6e 65 20 22 22 20 7d 20 7b 0a 09 09 66 ar ne "" } {...f
38ff0 6f 72 20 7b 20 73 65 74 20 69 20 24 6c 69 6e 65 or { set i $line
39000 31 20 7d 20 7b 20 24 69 20 3c 3d 20 24 6c 69 6e 1 } { $i <= $lin
39010 65 32 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 e2 } { incr i }
39020 7b 0a 09 09 20 20 20 20 24 74 65 78 74 20 69 6e {... $text in
39030 73 65 72 74 20 22 24 69 2e 30 20 6c 69 6e 65 65 sert "$i.0 linee
39040 6e 64 22 20 22 20 24 65 6e 64 5f 63 6f 6d 6d 65 nd" " $end_comme
39050 6e 74 63 68 61 72 22 0a 09 09 7d 0a 09 20 20 20 ntchar"...}..
39060 20 7d 0a 09 7d 0a 09 6f 66 66 20 7b 0a 09 20 20 }..}..off {..
39070 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24 6c for { set i $l
39080 69 6e 65 31 20 7d 20 7b 20 24 69 20 3c 3d 20 24 ine1 } { $i <= $
39090 6c 69 6e 65 32 20 7d 20 7b 20 69 6e 63 72 20 69 line2 } { incr i
390a0 20 7d 20 7b 0a 09 09 73 65 74 20 6c 69 6e 65 20 } {...set line
390b0 5b 24 74 65 78 74 20 67 65 74 20 24 69 2e 30 20 [$text get $i.0
390c0 22 24 69 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 0a "$i.0 lineend"].
390d0 09 09 72 65 67 73 75 62 20 22 5e 5c 5c 73 2a 24 ..regsub "^\\s*$
390e0 63 6f 6d 6d 65 6e 74 63 68 61 72 5c 5c 73 3f 22 commentchar\\s?"
390f0 20 24 6c 69 6e 65 20 7b 7d 20 6c 69 6e 65 0a 09 $line {} line..
39100 09 24 74 65 78 74 20 64 65 6c 65 74 65 20 24 69 .$text delete $i
39110 2e 30 20 22 24 69 2e 30 20 6c 69 6e 65 65 6e 64 .0 "$i.0 lineend
39120 22 0a 09 09 24 74 65 78 74 20 69 6e 73 65 72 74 "...$text insert
39130 20 24 69 2e 30 20 24 6c 69 6e 65 0a 09 20 20 20 $i.0 $line..
39140 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 65 6e }.. if { $en
39150 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72 20 6e 65 d_commentchar ne
39160 20 22 22 20 7d 20 7b 0a 09 09 66 6f 72 20 7b 20 "" } {...for {
39170 73 65 74 20 69 20 24 6c 69 6e 65 31 20 7d 20 7b set i $line1 } {
39180 20 24 69 20 3c 3d 20 24 6c 69 6e 65 32 20 7d 20 $i <= $line2 }
39190 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 09 20 { incr i } {...
391a0 20 20 20 73 65 74 20 6c 69 6e 65 20 5b 24 74 65 set line [$te
391b0 78 74 20 67 65 74 20 24 69 2e 30 20 22 24 69 2e xt get $i.0 "$i.
391c0 30 20 6c 69 6e 65 65 6e 64 22 5d 0a 09 09 20 20 0 lineend"]...
391d0 20 20 72 65 67 73 75 62 20 22 5c 5c 73 2a 24 65 regsub "\\s*$e
391e0 6e 64 5f 63 6f 6d 6d 65 6e 74 63 68 61 72 5c 5c nd_commentchar\\
391f0 73 2a 24 22 20 24 6c 69 6e 65 20 7b 7d 20 6c 69 s*$" $line {} li
39200 6e 65 0a 09 09 20 20 20 20 24 74 65 78 74 20 64 ne... $text d
39210 65 6c 65 74 65 20 24 69 2e 30 20 22 24 69 2e 30 elete $i.0 "$i.0
39220 20 6c 69 6e 65 65 6e 64 22 0a 09 09 20 20 20 20 lineend"...
39230 24 74 65 78 74 20 69 6e 73 65 72 74 20 24 69 2e $text insert $i.
39240 30 20 24 6c 69 6e 65 0a 09 09 7d 0a 09 20 20 20 0 $line...}..
39250 20 7d 0a 09 7d 0a 09 74 6f 67 67 6c 65 20 7b 0a }..}..toggle {.
39260 09 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 . for { set i
39270 20 24 6c 69 6e 65 31 20 7d 20 7b 20 24 69 20 3c $line1 } { $i <
39280 3d 20 24 6c 69 6e 65 32 20 7d 20 7b 20 69 6e 63 = $line2 } { inc
39290 72 20 69 20 7d 20 7b 0a 09 09 73 65 74 20 6c 20 r i } {...set l
392a0 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 5b 24 74 [string trim [$t
392b0 65 78 74 20 67 65 74 20 24 69 2e 30 20 22 24 69 ext get $i.0 "$i
392c0 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 5d 0a 09 09 .0 lineend"]]...
392d0 69 66 20 7b 20 24 6c 20 65 71 20 22 22 20 7d 20 if { $l eq "" }
392e0 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 09 69 { continue }...i
392f0 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 f { ![string mat
39300 63 68 20 22 24 63 6f 6d 6d 65 6e 74 63 68 61 72 ch "$commentchar
39310 2a 22 20 24 6c 5d 20 7d 20 7b 0a 09 09 20 20 20 *" $l] } {...
39320 20 72 65 74 75 72 6e 20 5b 43 6f 6d 6d 65 6e 74 return [Comment
39330 53 65 6c 65 63 74 69 6f 6e 20 6f 6e 5d 0a 09 09 Selection on]...
39340 7d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 72 65 }.. }.. re
39350 74 75 72 6e 20 5b 43 6f 6d 6d 65 6e 74 53 65 6c turn [CommentSel
39360 65 63 74 69 6f 6e 20 6f 66 66 5d 0a 09 7d 0a 20 ection off]..}.
39370 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
39380 44 65 62 75 67 67 65 72 3a 3a 54 72 69 6d 4c 69 Debugger::TrimLi
39390 6e 65 73 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 nes {} {. var
393a0 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 0a iable text. .
393b0 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 if { [catch
393c0 7b 0a 09 73 63 61 6e 20 5b 24 74 65 78 74 20 69 {..scan [$text i
393d0 6e 64 65 78 20 73 65 6c 2e 66 69 72 73 74 5d 20 ndex sel.first]
393e0 22 25 64 22 20 6c 69 6e 65 31 0a 09 73 63 61 6e "%d" line1..scan
393f0 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 65 [$text index se
39400 6c 2e 6c 61 73 74 5d 20 22 25 64 22 20 6c 69 6e l.last] "%d" lin
39410 65 32 0a 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 73 e2. }] } {..s
39420 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 can [$text index
39430 20 69 6e 73 65 72 74 5d 20 22 25 64 2e 25 64 22 insert] "%d.%d"
39440 20 6c 69 6e 65 31 20 70 6f 73 0a 09 73 65 74 20 line1 pos..set
39450 6c 69 6e 65 32 20 24 6c 69 6e 65 31 0a 20 20 20 line2 $line1.
39460 20 7d 0a 20 20 20 20 0a 20 20 20 20 66 6f 72 20 }. . for
39470 7b 20 73 65 74 20 69 20 24 6c 69 6e 65 31 20 7d { set i $line1 }
39480 20 7b 20 24 69 20 3c 3d 20 24 6c 69 6e 65 32 20 { $i <= $line2
39490 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 } { incr i } {..
394a0 73 65 74 20 74 78 74 20 5b 24 74 65 78 74 20 67 set txt [$text g
394b0 65 74 20 22 24 69 2e 30 22 20 22 24 69 2e 30 20 et "$i.0" "$i.0
394c0 6c 69 6e 65 65 6e 64 22 5d 0a 09 69 66 20 7b 20 lineend"]..if {
394d0 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 [string length $
394e0 74 78 74 5d 20 3e 20 38 30 20 7d 20 7b 0a 09 20 txt] > 80 } {..
394f0 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 if { [regexp
39500 2d 69 6e 64 69 63 65 73 20 2d 73 74 61 72 74 20 -indices -start
39510 36 39 20 7b 28 5c 73 2b 29 28 5c 53 2a 29 24 7d 69 {(\s+)(\S*)$}
39520 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 [string range $
39530 74 78 74 20 30 20 37 39 5d 20 7b 7d 20 69 64 78 txt 0 79] {} idx
39540 31 20 69 64 78 32 5d 20 7d 20 7b 0a 09 09 24 74 1 idx2] } {...$t
39550 65 78 74 20 64 65 6c 65 74 65 20 24 69 2e 5b 6c ext delete $i.[l
39560 69 6e 64 65 78 20 24 69 64 78 31 20 30 5d 20 22 index $idx1 0] "
39570 24 69 2e 5b 6c 69 6e 64 65 78 20 24 69 64 78 31 $i.[lindex $idx1
39580 20 31 5d 2b 31 63 22 0a 09 09 24 74 65 78 74 20 1]+1c"...$text
39590 69 6e 73 65 72 74 20 24 69 2e 5b 6c 69 6e 64 65 insert $i.[linde
395a0 78 20 24 69 64 78 31 20 30 5d 20 22 5c 6e 22 0a x $idx1 0] "\n".
395b0 09 09 69 6e 63 72 20 6c 69 6e 65 32 0a 09 20 20 ..incr line2..
395c0 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65 } elseif { [re
395d0 67 65 78 70 20 2d 69 6e 64 69 63 65 73 20 2d 73 gexp -indices -s
395e0 74 61 72 74 20 37 39 20 7b 28 5c 73 2b 29 7d 20 tart 79 {(\s+)}
395f0 24 74 78 74 20 7b 7d 20 69 64 78 31 5d 20 7d 20 $txt {} idx1] }
39600 7b 0a 09 09 24 74 65 78 74 20 64 65 6c 65 74 65 {...$text delete
39610 20 24 69 2e 5b 6c 69 6e 64 65 78 20 24 69 64 78 $i.[lindex $idx
39620 31 20 30 5d 20 22 24 69 2e 5b 6c 69 6e 64 65 78 1 0] "$i.[lindex
39630 20 24 69 64 78 31 20 31 5d 2b 31 63 22 0a 09 09 $idx1 1]+1c"...
39640 24 74 65 78 74 20 69 6e 73 65 72 74 20 24 69 2e $text insert $i.
39650 5b 6c 69 6e 64 65 78 20 24 69 64 78 31 20 30 5d [lindex $idx1 0]
39660 20 22 5c 6e 22 0a 09 09 69 6e 63 72 20 6c 69 6e "\n"...incr lin
39670 65 32 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 e2.. }..}.
39680 20 7d 0a 7d 0a 0a 23 20 70 72 6f 63 20 52 61 6d }.}..# proc Ram
39690 44 65 62 75 67 67 65 72 3a 3a 49 6e 64 65 6e 74 Debugger::Indent
396a0 43 75 72 72 65 6e 74 20 7b 7d 20 7b 0a 23 20 20 Current {} {.#
396b0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
396c0 0a 0a 23 20 20 20 20 20 73 63 61 6e 20 5b 24 74 ..# scan [$t
396d0 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 74 ext index insert
396e0 5d 20 22 25 64 2e 25 64 22 20 6c 69 6e 65 20 70 ] "%d.%d" line p
396f0 6f 73 0a 23 20 20 20 20 20 49 6e 64 65 6e 74 4c os.# IndentL
39700 69 6e 65 20 24 6c 69 6e 65 20 24 70 6f 73 0a 23 ine $line $pos.#
39710 20 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 }..proc RamDebu
39720 67 67 65 72 3a 3a 49 6e 64 65 6e 74 20 7b 7d 20 gger::Indent {}
39730 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
39740 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ext. variable
39750 20 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74 69 CheckTextInacti
39760 76 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ve. variable
39770 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
39780 0a 20 20 20 20 73 65 74 20 70 6f 73 20 2d 31 0a . set pos -1.
39790 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 20 if { [catch
397a0 7b 0a 09 73 63 61 6e 20 5b 24 74 65 78 74 20 69 {..scan [$text i
397b0 6e 64 65 78 20 73 65 6c 2e 66 69 72 73 74 5d 20 ndex sel.first]
397c0 22 25 64 22 20 6c 69 6e 65 31 0a 09 73 63 61 6e "%d" line1..scan
397d0 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 73 65 [$text index se
397e0 6c 2e 6c 61 73 74 5d 20 22 25 64 22 20 6c 69 6e l.last] "%d" lin
397f0 65 32 0a 20 20 20 20 7d 5d 20 7d 20 7b 0a 09 73 e2. }] } {..s
39800 63 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 can [$text index
39810 20 69 6e 73 65 72 74 5d 20 22 25 64 2e 25 64 22 insert] "%d.%d"
39820 20 6c 69 6e 65 31 20 70 6f 73 0a 09 73 65 74 20 line1 pos..set
39830 6c 69 6e 65 32 20 24 6c 69 6e 65 31 0a 20 20 20 line2 $line1.
39840 20 7d 0a 20 20 20 20 0a 20 20 20 20 73 77 69 74 }. . swit
39850 63 68 20 2d 2d 20 5b 47 69 76 65 46 69 6c 65 54 ch -- [GiveFileT
39860 79 70 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 ype $currentfile
39870 5d 20 7b 0a 09 22 54 43 4c 22 20 2d 20 22 43 2f ] {.."TCL" - "C/
39880 43 2b 2b 22 20 7b 20 23 20 6e 6f 74 68 69 6e 67 C++" { # nothing
39890 20 7d 0a 09 64 65 66 61 75 6c 74 20 7b 20 73 65 }..default { se
398a0 74 20 43 68 65 63 6b 54 65 78 74 49 6e 61 63 74 t CheckTextInact
398b0 69 76 65 20 31 20 7d 20 0a 20 20 20 20 7d 0a 20 ive 1 } . }.
398c0 20 20 20 66 6f 72 20 7b 20 73 65 74 20 69 20 24 for { set i $
398d0 6c 69 6e 65 31 20 7d 20 7b 20 24 69 20 3c 3d 20 line1 } { $i <=
398e0 24 6c 69 6e 65 32 20 7d 20 7b 20 69 6e 63 72 20 $line2 } { incr
398f0 69 20 7d 20 7b 0a 09 49 6e 64 65 6e 74 4c 69 6e i } {..IndentLin
39900 65 20 24 69 20 24 70 6f 73 0a 20 20 20 20 7d 0a e $i $pos. }.
39910 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d unset -nocom
39920 70 6c 61 69 6e 20 43 68 65 63 6b 54 65 78 74 49 plain CheckTextI
39930 6e 61 63 74 69 76 65 0a 7d 0a 0a 70 72 6f 63 20 nactive.}..proc
39940 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 64 RamDebugger::Ind
39950 65 6e 74 4c 69 6e 65 20 7b 20 6c 69 6e 65 20 7b entLine { line {
39960 20 70 6f 73 20 2d 31 20 7d 20 7d 20 7b 0a 20 20 pos -1 } } {.
39970 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a variable text.
39980 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 6e 73 variable ins
39990 74 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e trumentedfilesIn
399a0 66 6f 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 fo. variable
399b0 63 75 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 currentfile.
399c0 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
399d0 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 74 79 .. set filety
399e0 70 65 20 5b 47 69 76 65 46 69 6c 65 54 79 70 65 pe [GiveFileType
399f0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d 0a 20 $currentfile].
39a00 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70 if { $filetyp
39a10 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 7d 20 7b e == "C/C++" } {
39a20 0a 09 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c ..set indent_val
39a30 20 24 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74 $options(indent
39a40 73 69 7a 65 43 2b 2b 29 0a 20 20 20 20 7d 20 65 sizeC++). } e
39a50 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 lseif { $filetyp
39a60 65 20 3d 3d 20 22 58 4d 4c 22 20 7d 20 7b 0a 09 e == "XML" } {..
39a70 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20 24 set indent_val $
39a80 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73 69 options(indentsi
39a90 7a 65 43 2b 2b 29 0a 20 20 20 20 7d 20 65 6c 73 zeC++). } els
39aa0 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 eif { $filetype
39ab0 3d 3d 20 22 54 43 4c 22 20 7d 20 7b 0a 09 73 65 == "TCL" } {..se
39ac0 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20 24 6f 70 t indent_val $op
39ad0 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73 69 7a 65 tions(indentsize
39ae0 54 43 4c 29 0a 20 20 20 20 7d 20 65 6c 73 65 69 TCL). } elsei
39af0 66 20 7b 20 24 66 69 6c 65 74 79 70 65 20 3d 3d f { $filetype ==
39b00 20 22 4d 61 6b 65 66 69 6c 65 22 20 7d 20 7b 0a "Makefile" } {.
39b10 09 73 65 74 20 69 6e 64 65 6e 74 5f 76 61 6c 20 .set indent_val
39b20 24 6f 70 74 69 6f 6e 73 28 69 6e 64 65 6e 74 73 $options(indents
39b30 69 7a 65 54 43 4c 29 0a 20 20 20 20 7d 20 65 6c izeTCL). } el
39b40 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 65 seif { $filetype
39b50 20 3d 3d 20 22 47 69 44 20 42 41 53 20 66 69 6c == "GiD BAS fil
39b60 65 22 20 7d 20 7b 0a 09 73 65 74 20 69 6e 64 65 e" } {..set inde
39b70 6e 74 5f 76 61 6c 20 30 0a 20 20 20 20 7d 20 65 nt_val 0. } e
39b80 6c 73 65 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a lse { return }..
39b90 20 20 20 20 69 66 20 7b 20 24 6c 69 6e 65 20 65 if { $line e
39ba0 71 20 22 22 20 7d 20 7b 0a 09 20 73 63 61 6e 20 q "" } {.. scan
39bb0 5b 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 [$text index ins
39bc0 65 72 74 5d 20 22 25 64 2e 25 64 22 20 6c 69 6e ert] "%d.%d" lin
39bd0 65 20 2d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 e -. }. se
39be0 74 20 6c 65 76 65 6c 20 30 0a 20 20 20 20 73 65 t level 0. se
39bf0 74 20 74 79 70 65 20 22 22 0a 20 20 20 20 66 6f t type "". fo
39c00 72 65 61 63 68 20 22 6c 65 76 65 6c 20 74 79 70 reach "level typ
39c10 65 22 20 5b 6c 69 6e 64 65 78 20 24 69 6e 73 74 e" [lindex $inst
39c20 72 75 6d 65 6e 74 65 64 66 69 6c 65 73 49 6e 66 rumentedfilesInf
39c30 6f 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 o($currentfile)
39c40 5b 65 78 70 72 20 24 6c 69 6e 65 2d 31 5d 5d 20 [expr $line-1]]
39c50 62 72 65 61 6b 0a 0a 20 20 20 20 73 77 69 74 63 break.. switc
39c60 68 20 24 74 79 70 65 20 7b 0a 09 6e 20 7b 20 73 h $type {..n { s
39c70 65 74 20 69 6e 64 65 6e 74 20 5b 65 78 70 72 20 et indent [expr
39c80 24 6c 65 76 65 6c 2a 24 69 6e 64 65 6e 74 5f 76 $level*$indent_v
39c90 61 6c 5d 20 7d 0a 09 63 20 7b 20 73 65 74 20 69 al] }..c { set i
39ca0 6e 64 65 6e 74 20 5b 65 78 70 72 20 24 6c 65 76 ndent [expr $lev
39cb0 65 6c 2a 24 69 6e 64 65 6e 74 5f 76 61 6c 2b 24 el*$indent_val+$
39cc0 69 6e 64 65 6e 74 5f 76 61 6c 5d 20 7d 0a 09 22 indent_val] }.."
39cd0 22 20 7b 20 73 65 74 20 69 6e 64 65 6e 74 20 30 " { set indent 0
39ce0 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 6f 72 }. }. for
39cf0 65 61 63 68 20 22 2d 20 63 6f 6c 22 20 5b 73 63 each "- col" [sc
39d00 61 6e 20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 an [$text index
39d10 22 24 6c 69 6e 65 2e 30 20 6c 69 6e 65 65 6e 64 "$line.0 lineend
39d20 22 5d 20 25 64 2e 25 64 5d 20 62 72 65 61 6b 0a "] %d.%d] break.
39d30 20 20 20 20 73 65 74 20 46 69 72 73 74 50 6f 73 set FirstPos
39d40 20 2d 31 0a 20 20 20 20 73 65 74 20 46 69 72 73 -1. set Firs
39d50 74 43 68 61 72 20 22 22 0a 20 20 20 20 66 6f 72 tChar "". for
39d60 20 7b 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24 { set i 0 } { $
39d70 69 20 3c 20 24 63 6f 6c 20 7d 20 7b 20 69 6e 63 i < $col } { inc
39d80 72 20 69 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 24 r i } {..if { [$
39d90 74 65 78 74 20 67 65 74 20 24 6c 69 6e 65 2e 24 text get $line.$
39da0 69 5d 20 21 3d 20 22 20 22 20 7d 20 7b 0a 09 20 i] != " " } {..
39db0 20 20 20 73 65 74 20 46 69 72 73 74 50 6f 73 20 set FirstPos
39dc0 24 69 0a 09 20 20 20 20 73 65 74 20 46 69 72 73 $i.. set Firs
39dd0 74 43 68 61 72 20 5b 24 74 65 78 74 20 67 65 74 tChar [$text get
39de0 20 24 6c 69 6e 65 2e 24 69 5d 0a 09 20 20 20 20 $line.$i]..
39df0 62 72 65 61 6b 0a 09 7d 0a 20 20 20 20 7d 0a 20 break..}. }.
39e00 20 20 20 69 66 20 7b 20 24 66 69 6c 65 74 79 70 if { $filetyp
39e10 65 20 3d 3d 20 22 43 2f 43 2b 2b 22 20 26 26 20 e == "C/C++" &&
39e20 24 46 69 72 73 74 43 68 61 72 20 3d 3d 20 22 5c $FirstChar == "\
39e30 7b 22 20 26 26 20 24 74 79 70 65 20 3d 3d 20 22 {" && $type == "
39e40 63 22 20 7d 20 7b 0a 09 73 65 74 20 69 6e 64 65 c" } {..set inde
39e50 6e 74 20 5b 65 78 70 72 20 24 69 6e 64 65 6e 74 nt [expr $indent
39e60 2d 24 69 6e 64 65 6e 74 5f 76 61 6c 5d 0a 20 20 -$indent_val].
39e70 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 72 65 } elseif { [re
39e80 67 65 78 70 20 7b 54 43 4c 7c 43 2f 43 5c 2b 5c gexp {TCL|C/C\+\
39e90 2b 7d 20 24 66 69 6c 65 74 79 70 65 5d 20 26 26 +} $filetype] &&
39ea0 20 24 46 69 72 73 74 43 68 61 72 20 3d 3d 20 22 $FirstChar == "
39eb0 5c 7d 22 20 26 26 20 24 69 6e 64 65 6e 74 20 3e \}" && $indent >
39ec0 3d 20 24 69 6e 64 65 6e 74 5f 76 61 6c 20 7d 20 = $indent_val }
39ed0 7b 0a 09 73 65 74 20 69 6e 64 65 6e 74 20 5b 65 {..set indent [e
39ee0 78 70 72 20 24 69 6e 64 65 6e 74 2d 24 69 6e 64 xpr $indent-$ind
39ef0 65 6e 74 5f 76 61 6c 5d 0a 20 20 20 20 7d 20 65 ent_val]. } e
39f00 6c 73 65 69 66 20 7b 20 24 66 69 6c 65 74 79 70 lseif { $filetyp
39f10 65 20 65 71 20 22 4d 61 6b 65 66 69 6c 65 22 20 e eq "Makefile"
39f20 26 26 20 24 6c 69 6e 65 20 3e 20 31 7d 20 7b 0a && $line > 1} {.
39f30 09 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 5e .if { [regexp {^
39f40 28 5b 5e 3a 5c 73 5d 2b 5c 73 2a 3a 7c 5c 73 7b ([^:\s]+\s*:|\s{
39f50 38 7d 5c 77 29 7d 20 5b 24 74 65 78 74 20 67 65 8}\w)} [$text ge
39f60 74 20 22 24 6c 69 6e 65 2e 30 2d 31 6c 20 6c 69 t "$line.0-1l li
39f70 6e 65 73 74 61 72 74 22 20 22 24 6c 69 6e 65 2e nestart" "$line.
39f80 30 2d 31 6c 20 6c 69 6e 65 65 6e 64 22 20 5d 5d 0-1l lineend" ]]
39f90 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 69 6e } {.. set in
39fa0 64 65 6e 74 20 38 0a 09 7d 0a 20 20 20 20 7d 0a dent 8..}. }.
39fb0 20 20 20 20 69 66 20 7b 20 24 46 69 72 73 74 50 if { $FirstP
39fc0 6f 73 20 3d 3d 20 2d 31 20 7d 20 7b 20 73 65 74 os == -1 } { set
39fd0 20 46 69 72 73 74 50 6f 73 20 24 63 6f 6c 20 7d FirstPos $col }
39fe0 0a 20 20 20 20 69 66 20 7b 20 24 46 69 72 73 74 . if { $First
39ff0 50 6f 73 20 3c 20 24 69 6e 64 65 6e 74 20 7d 20 Pos < $indent }
3a000 7b 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 {..$text insert
3a010 24 6c 69 6e 65 2e 30 20 5b 73 74 72 69 6e 67 20 $line.0 [string
3a020 72 65 70 65 61 74 20 22 20 22 20 5b 65 78 70 72 repeat " " [expr
3a030 20 24 69 6e 64 65 6e 74 2d 24 46 69 72 73 74 50 $indent-$FirstP
3a040 6f 73 5d 5d 0a 20 20 20 20 7d 20 65 6c 73 65 69 os]]. } elsei
3a050 66 20 7b 20 24 46 69 72 73 74 50 6f 73 20 3e 20 f { $FirstPos >
3a060 24 69 6e 64 65 6e 74 20 7d 20 7b 0a 09 24 74 65 $indent } {..$te
3a070 78 74 20 64 65 6c 65 74 65 20 24 6c 69 6e 65 2e xt delete $line.
3a080 30 20 24 6c 69 6e 65 2e 5b 65 78 70 72 20 24 46 0 $line.[expr $F
3a090 69 72 73 74 50 6f 73 2d 24 69 6e 64 65 6e 74 5d irstPos-$indent]
3a0a0 20 20 20 20 20 20 20 20 0a 20 20 20 20 7d 0a 20 . }.
3a0b0 20 20 20 69 66 20 7b 20 24 70 6f 73 20 3e 3d 20 if { $pos >=
3a0c0 30 20 26 26 20 24 70 6f 73 20 3c 20 24 69 6e 64 0 && $pos < $ind
3a0d0 65 6e 74 20 26 26 20 5b 73 74 72 69 6e 67 20 74 ent && [string t
3a0e0 72 69 6d 20 5b 24 74 65 78 74 20 67 65 74 20 24 rim [$text get $
3a0f0 6c 69 6e 65 2e 30 20 69 6e 73 65 72 74 5d 5d 20 line.0 insert]]
3a100 3d 3d 20 22 22 20 7d 20 7b 0a 09 24 74 65 78 74 == "" } {..$text
3a110 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 mark set insert
3a120 20 24 6c 69 6e 65 2e 24 69 6e 64 65 6e 74 0a 20 $line.$indent.
3a130 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
3a140 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 74 65 Debugger::Update
3a150 4c 69 6e 65 4e 75 6d 20 7b 20 63 6f 6d 6d 61 6e LineNum { comman
3a160 64 20 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 d args } {. v
3a170 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 ariable text.
3a180 20 76 61 72 69 61 62 6c 65 20 63 75 72 72 65 6e variable curren
3a190 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a tfileIsModified.
3a1a0 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 . RamDebugger
3a1b0 3a 3a 56 43 53 3a 3a 53 65 74 55 73 65 72 41 63 ::VCS::SetUserAc
3a1c0 74 69 76 69 74 79 0a 0a 20 20 20 20 69 66 20 7b tivity.. if {
3a1d0 20 5b 72 65 67 65 78 70 20 7b 69 6e 64 65 78 7c [regexp {index|
3a1e0 62 62 6f 78 7c 67 65 74 7d 20 24 63 6f 6d 6d 61 bbox|get} $comma
3a1f0 6e 64 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d nd] } { return }
3a200 0a 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 . if { [regex
3a210 70 20 7b 5e 28 69 6e 73 7c 64 65 6c 29 7d 20 24 p {^(ins|del)} $
3a220 63 6f 6d 6d 61 6e 64 5d 20 7d 20 7b 20 43 68 65 command] } { Che
3a230 63 6b 54 65 78 74 20 24 63 6f 6d 6d 61 6e 64 20 ckText $command
3a240 24 61 72 67 73 20 7d 0a 0a 20 20 20 20 69 66 20 $args }.. if
3a250 7b 20 5b 72 65 67 65 78 70 20 7b 5e 28 69 6e 73 { [regexp {^(ins
3a260 7c 64 65 6c 29 7d 20 24 63 6f 6d 6d 61 6e 64 5d |del)} $command]
3a270 20 26 26 20 21 24 63 75 72 72 65 6e 74 66 69 6c && !$currentfil
3a280 65 49 73 4d 6f 64 69 66 69 65 64 20 7d 20 7b 0a eIsModified } {.
3a290 09 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f .wm title [winfo
3a2a0 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d toplevel $text]
3a2b0 20 5b 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 [wm title [winf
3a2c0 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 o toplevel $text
3a2d0 5d 5d 2a 0a 09 69 6e 63 72 20 63 75 72 72 65 6e ]]*..incr curren
3a2e0 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a tfileIsModified.
3a2f0 20 20 20 20 7d 0a 20 20 20 20 55 70 64 61 74 65 }. Update
3a300 4c 69 6e 65 4e 75 6d 44 6f 0a 7d 0a 0a 70 72 6f LineNumDo.}..pro
3a310 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 c RamDebugger::S
3a320 65 74 49 73 4d 6f 64 69 66 69 65 64 20 7b 7d 20 etIsModified {}
3a330 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
3a340 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ext. variable
3a350 20 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f currentfileIsMo
3a360 64 69 66 69 65 64 0a 0a 20 20 20 20 69 66 20 7b dified.. if {
3a370 20 21 24 63 75 72 72 65 6e 74 66 69 6c 65 49 73 !$currentfileIs
3a380 4d 6f 64 69 66 69 65 64 20 7d 20 7b 0a 09 77 6d Modified } {..wm
3a390 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f 20 74 6f title [winfo to
3a3a0 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 20 5b 77 plevel $text] [w
3a3b0 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f 20 74 m title [winfo t
3a3c0 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 5d 2a oplevel $text]]*
3a3d0 0a 09 69 6e 63 72 20 63 75 72 72 65 6e 74 66 69 ..incr currentfi
3a3e0 6c 65 49 73 4d 6f 64 69 66 69 65 64 0a 20 20 20 leIsModified.
3a3f0 20 7d 0a 20 20 20 20 55 70 64 61 74 65 4c 69 6e }. UpdateLin
3a400 65 4e 75 6d 44 6f 0a 7d 0a 0a 70 72 6f 63 20 52 eNumDo.}..proc R
3a410 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 64 61 amDebugger::Upda
3a420 74 65 4c 69 6e 65 4e 75 6d 44 6f 20 7b 7d 20 7b teLineNumDo {} {
3a430 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 4c 69 . variable Li
3a440 6e 65 4e 75 6d 0a 20 20 20 20 76 61 72 69 61 62 neNum. variab
3a450 6c 65 20 74 65 78 74 0a 20 20 20 20 76 61 72 69 le text. vari
3a460 61 62 6c 65 20 66 69 6c 65 73 6d 74 69 6d 65 0a able filesmtime.
3a470 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 72 variable cur
3a480 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 72 rentfile. var
3a490 69 61 62 6c 65 20 63 75 72 72 65 6e 74 66 69 6c iable currentfil
3a4a0 65 49 73 4d 6f 64 69 66 69 65 64 0a 20 20 20 20 eIsModified.
3a4b0 76 61 72 69 61 62 6c 65 20 43 68 65 63 6b 45 78 variable CheckEx
3a4c0 74 65 72 6e 61 6c 46 69 6c 65 4d 6f 64 69 66 69 ternalFileModifi
3a4d0 63 61 74 69 6f 6e 0a 20 20 20 20 76 61 72 69 61 cation. varia
3a4e0 62 6c 65 20 4c 69 6e 65 4e 75 6d 5f 6c 61 62 65 ble LineNum_labe
3a4f0 6c 0a 0a 20 20 20 20 73 65 74 20 69 64 78 20 5b l.. set idx [
3a500 24 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 $text index inse
3a510 72 74 5d 0a 20 20 20 20 6c 61 73 73 69 67 6e 20 rt]. lassign
3a520 5b 73 63 61 6e 20 24 69 64 78 20 22 25 64 2e 25 [scan $idx "%d.%
3a530 64 22 5d 20 6c 69 6e 65 20 63 6f 6c 0a 20 20 20 d"] line col.
3a540 20 69 66 20 7b 20 24 6c 69 6e 65 20 65 71 20 22 if { $line eq "
3a550 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 20 " } { return }.
3a560 20 20 20 73 65 74 20 4c 69 6e 65 4e 75 6d 20 22 set LineNum "
3a570 4c 3a 20 24 6c 69 6e 65 22 0a 20 20 20 20 74 6f L: $line". to
3a580 6f 6c 74 69 70 3a 3a 74 6f 6f 6c 74 69 70 20 24 oltip::tooltip $
3a590 4c 69 6e 65 4e 75 6d 5f 6c 61 62 65 6c 20 22 4c LineNum_label "L
3a5a0 3a 20 24 6c 69 6e 65 20 43 3a 20 24 63 6f 6c 22 : $line C: $col"
3a5b0 0a 0a 20 20 20 20 69 66 20 7b 20 24 63 75 72 72 .. if { $curr
3a5c0 65 6e 74 66 69 6c 65 20 6e 65 20 22 22 20 26 26 entfile ne "" &&
3a5d0 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24 [string index $
3a5e0 63 75 72 72 65 6e 74 66 69 6c 65 20 30 5d 20 21 currentfile 0] !
3a5f0 3d 20 22 2a 22 20 7d 20 7b 0a 09 69 66 20 7b 20 = "*" } {..if {
3a600 5b 6c 69 6e 64 65 78 20 5b 66 69 6c 65 20 73 79 [lindex [file sy
3a610 73 74 65 6d 20 24 63 75 72 72 65 6e 74 66 69 6c stem $currentfil
3a620 65 5d 20 30 5d 20 65 71 20 22 6e 61 74 69 76 65 e] 0] eq "native
3a630 22 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 65 " } {.. set e
3a640 78 69 73 74 73 20 5b 66 69 6c 65 20 65 78 69 73 xists [file exis
3a650 74 73 20 24 63 75 72 72 65 6e 74 66 69 6c 65 5d ts $currentfile]
3a660 0a 09 20 20 20 20 73 65 74 20 6d 74 69 6d 65 20 .. set mtime
3a670 5b 66 69 6c 65 20 6d 74 69 6d 65 20 24 63 75 72 [file mtime $cur
3a680 72 65 6e 74 66 69 6c 65 5d 0a 09 7d 20 65 6c 73 rentfile]..} els
3a690 65 20 7b 0a 09 20 20 20 20 73 65 74 20 65 78 69 e {.. set exi
3a6a0 73 74 73 20 31 0a 09 20 20 20 20 73 65 74 20 6d sts 1.. set m
3a6b0 74 69 6d 65 20 24 66 69 6c 65 73 6d 74 69 6d 65 time $filesmtime
3a6c0 28 24 63 75 72 72 65 6e 74 66 69 6c 65 29 0a 09 ($currentfile)..
3a6d0 7d 0a 09 69 66 20 7b 20 24 43 68 65 63 6b 45 78 }..if { $CheckEx
3a6e0 74 65 72 6e 61 6c 46 69 6c 65 4d 6f 64 69 66 69 ternalFileModifi
3a6f0 63 61 74 69 6f 6e 20 26 26 20 24 65 78 69 73 74 cation && $exist
3a700 73 20 26 26 20 24 6d 74 69 6d 65 20 3e 20 24 66 s && $mtime > $f
3a710 69 6c 65 73 6d 74 69 6d 65 28 24 63 75 72 72 65 ilesmtime($curre
3a720 6e 74 66 69 6c 65 29 20 7d 20 7b 0a 09 20 20 20 ntfile) } {..
3a730 20 73 65 74 20 66 69 6c 65 73 6d 74 69 6d 65 28 set filesmtime(
3a740 24 63 75 72 72 65 6e 74 66 69 6c 65 29 20 24 6d $currentfile) $m
3a750 74 69 6d 65 0a 0a 09 20 20 20 20 69 66 20 7b 20 time... if {
3a760 24 63 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f $currentfileIsMo
3a770 64 69 66 69 65 64 20 7d 20 7b 0a 09 09 73 65 74 dified } {...set
3a780 20 71 75 65 73 74 20 5b 5f 20 22 46 69 6c 65 20 quest [_ "File
3a790 27 25 73 27 20 68 61 73 20 62 65 65 6e 20 6d 6f '%s' has been mo
3a7a0 64 69 66 69 65 64 20 6f 75 74 73 69 64 65 20 52 dified outside R
3a7b0 61 6d 44 65 62 75 67 67 65 72 2e 20 52 65 6c 6f amDebugger. Relo
3a7c0 61 64 20 69 74 20 22 20 24 63 75 72 72 65 6e 74 ad it " $current
3a7d0 66 69 6c 65 5d 0a 09 09 61 70 70 65 6e 64 20 71 file]...append q
3a7e0 75 65 73 74 20 5b 5f 20 22 61 6e 64 20 6c 6f 6f uest [_ "and loo
3a7f0 73 65 20 74 68 65 20 63 68 61 6e 67 65 73 20 6d se the changes m
3a800 61 64 65 20 69 6e 73 69 64 65 20 52 61 6d 44 65 ade inside RamDe
3a810 62 75 67 67 65 72 3f 22 5d 0a 09 20 20 20 20 7d bugger?"].. }
3a820 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 71 75 else {...set qu
3a830 65 73 74 20 5b 5f 20 22 46 69 6c 65 20 27 25 73 est [_ "File '%s
3a840 27 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 ' has been modif
3a850 69 65 64 20 6f 75 74 73 69 64 65 20 52 61 6d 44 ied outside RamD
3a860 65 62 75 67 67 65 72 2e 20 52 65 6c 6f 61 64 20 ebugger. Reload
3a870 69 74 3f 22 20 24 63 75 72 72 65 6e 74 66 69 6c it?" $currentfil
3a880 65 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 e].. }.. s
3a890 65 74 20 72 65 74 20 5b 44 69 61 6c 6f 67 57 69 et ret [DialogWi
3a8a0 6e 3a 3a 6d 65 73 73 61 67 65 42 6f 78 20 2d 64 n::messageBox -d
3a8b0 65 66 61 75 6c 74 20 6f 6b 20 2d 69 63 6f 6e 20 efault ok -icon
3a8c0 77 61 72 6e 69 6e 67 20 2d 6d 65 73 73 61 67 65 warning -message
3a8d0 20 24 71 75 65 73 74 20 5c 0a 09 09 20 20 20 20 $quest \...
3a8e0 20 20 20 20 20 2d 70 61 72 65 6e 74 20 24 74 65 -parent $te
3a8f0 78 74 20 2d 74 69 74 6c 65 20 5b 5f 20 22 52 65 xt -title [_ "Re
3a900 6c 6f 61 64 20 66 69 6c 65 22 5d 20 2d 74 79 70 load file"] -typ
3a910 65 20 6f 6b 63 61 6e 63 65 6c 5d 0a 09 20 20 20 e okcancel]..
3a920 20 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 22 6f if { $ret == "o
3a930 6b 22 20 7d 20 7b 0a 09 09 4f 70 65 6e 46 69 6c k" } {...OpenFil
3a940 65 46 20 2d 66 6f 72 63 65 20 31 20 24 63 75 72 eF -force 1 $cur
3a950 72 65 6e 74 66 69 6c 65 0a 09 20 20 20 20 7d 20 rentfile.. }
3a960 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 71 75 65 else {...set que
3a970 73 74 20 5b 5f 20 22 44 69 73 61 62 6c 65 20 74 st [_ "Disable t
3a980 68 69 73 20 77 61 72 6e 69 6e 67 20 66 6f 72 20 his warning for
3a990 74 68 69 73 20 73 65 73 73 69 6f 6e 3f 22 5d 0a this session?"].
3a9a0 09 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c 6f ..set ret [Dialo
3a9b0 67 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f 78 gWin::messageBox
3a9c0 20 2d 64 65 66 61 75 6c 74 20 6f 6b 20 2d 69 63 -default ok -ic
3a9d0 6f 6e 20 77 61 72 6e 69 6e 67 20 2d 6d 65 73 73 on warning -mess
3a9e0 61 67 65 20 24 71 75 65 73 74 20 5c 0a 09 09 20 age $quest \...
3a9f0 20 20 20 20 20 20 20 2d 70 61 72 65 6e 74 20 24 -parent $
3aa00 74 65 78 74 20 2d 74 69 74 6c 65 20 5b 5f 20 22 text -title [_ "
3aa10 57 61 72 6e 69 6e 67 20 72 65 6c 6f 61 64 20 66 Warning reload f
3aa20 69 6c 65 22 5d 20 2d 74 79 70 65 20 6f 6b 63 61 ile"] -type okca
3aa30 6e 63 65 6c 5d 0a 09 09 69 66 20 7b 20 24 72 65 ncel]...if { $re
3aa40 74 20 3d 3d 20 22 6f 6b 22 20 7d 20 7b 0a 09 09 t == "ok" } {...
3aa50 20 20 20 20 73 65 74 20 43 68 65 63 6b 45 78 74 set CheckExt
3aa60 65 72 6e 61 6c 46 69 6c 65 4d 6f 64 69 66 69 63 ernalFileModific
3aa70 61 74 69 6f 6e 20 30 0a 09 09 7d 0a 09 20 20 20 ation 0...}..
3aa80 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 }..}. }.}..p
3aa90 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
3aaa0 3a 5f 44 79 6e 61 6d 69 63 48 65 6c 70 49 6e 45 :_DynamicHelpInE
3aab0 6e 74 72 79 57 69 74 68 56 61 72 20 7b 20 65 6e ntryWithVar { en
3aac0 74 72 79 20 7d 20 7b 0a 20 20 20 20 73 65 74 20 try } {. set
3aad0 76 61 72 20 5b 24 65 6e 74 72 79 20 63 67 65 74 var [$entry cget
3aae0 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 5d 0a -textvariable].
3aaf0 20 20 20 20 44 79 6e 61 6d 69 63 48 65 6c 70 3a DynamicHelp:
3ab00 3a 72 65 67 69 73 74 65 72 20 24 65 6e 74 72 79 :register $entry
3ab10 20 62 61 6c 6c 6f 6f 6e 20 5b 73 65 74 20 24 76 balloon [set $v
3ab20 61 72 5d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 ar].}..proc RamD
3ab30 65 62 75 67 67 65 72 3a 3a 44 79 6e 61 6d 69 63 ebugger::Dynamic
3ab40 48 65 6c 70 49 6e 45 6e 74 72 79 57 69 74 68 56 HelpInEntryWithV
3ab50 61 72 20 7b 20 65 6e 74 72 79 20 7d 20 7b 0a 20 ar { entry } {.
3ab60 20 20 20 73 65 74 20 76 61 72 20 5b 24 65 6e 74 set var [$ent
3ab70 72 79 20 63 67 65 74 20 2d 74 65 78 74 76 61 72 ry cget -textvar
3ab80 69 61 62 6c 65 5d 0a 20 20 20 20 74 72 61 63 65 iable]. trace
3ab90 20 76 61 72 20 24 76 61 72 20 77 20 22 5f 44 79 var $var w "_Dy
3aba0 6e 61 6d 69 63 48 65 6c 70 49 6e 45 6e 74 72 79 namicHelpInEntry
3abb0 57 69 74 68 56 61 72 20 24 65 6e 74 72 79 20 3b WithVar $entry ;
3abc0 23 22 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 #".}..proc RamDe
3abd0 62 75 67 67 65 72 3a 3a 46 69 6e 64 50 61 6e 65 bugger::FindPane
3abe0 64 57 69 6e 64 6f 77 46 72 6f 6d 50 61 6e 65 20 dWindowFromPane
3abf0 7b 20 70 61 6e 65 20 7d 20 7b 0a 0a 20 20 20 20 { pane } {..
3ac00 77 68 69 6c 65 20 31 20 7b 0a 09 73 65 74 20 70 while 1 {..set p
3ac10 61 6e 65 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e ane [winfo paren
3ac20 74 20 24 70 61 6e 65 5d 0a 09 69 66 20 7b 20 5b t $pane]..if { [
3ac30 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 5b string tolower [
3ac40 77 69 6e 66 6f 20 63 6c 61 73 73 20 24 70 61 6e winfo class $pan
3ac50 65 5d 5d 20 65 71 20 22 70 61 6e 65 64 77 69 6e e]] eq "panedwin
3ac60 64 6f 77 22 20 7d 20 7b 20 62 72 65 61 6b 20 7d dow" } { break }
3ac70 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 . }. retur
3ac80 6e 20 24 70 61 6e 65 0a 7d 0a 0a 70 72 6f 63 20 n $pane.}..proc
3ac90 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 72 65 RamDebugger::Cre
3aca0 61 74 65 50 61 6e 65 64 45 6e 74 72 69 65 73 20 atePanedEntries
3acb0 7b 20 6e 75 6d 20 70 61 6e 65 31 20 70 61 6e 65 { num pane1 pane
3acc0 32 20 73 75 66 66 69 78 20 7d 20 7b 0a 20 20 20 2 suffix } {.
3acd0 20 76 61 72 69 61 62 6c 65 20 45 76 61 6c 45 6e variable EvalEn
3ace0 74 72 69 65 73 0a 0a 20 20 20 20 73 65 74 20 70 tries.. set p
3acf0 61 6e 65 77 20 5b 46 69 6e 64 50 61 6e 65 64 57 anew [FindPanedW
3ad00 69 6e 64 6f 77 46 72 6f 6d 50 61 6e 65 20 24 70 indowFromPane $p
3ad10 61 6e 65 31 5d 0a 0a 20 20 20 20 66 6f 72 20 7b ane1].. for {
3ad20 20 73 65 74 20 69 20 30 20 7d 20 7b 20 24 69 20 set i 0 } { $i
3ad30 3c 20 24 6e 75 6d 20 7d 20 7b 20 69 6e 63 72 20 < $num } { incr
3ad40 69 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 77 69 6e i } {..if { [win
3ad50 66 6f 20 65 78 69 73 74 73 20 24 70 61 6e 65 31 fo exists $pane1
3ad60 2e 65 24 69 5d 20 7d 20 7b 20 63 6f 6e 74 69 6e .e$i] } { contin
3ad70 75 65 20 7d 0a 0a 09 73 65 74 20 45 76 61 6c 45 ue }...set EvalE
3ad80 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 74 65 6e ntries($i,leften
3ad90 74 72 79 24 73 75 66 66 69 78 29 20 5b 65 6e 74 try$suffix) [ent
3ada0 72 79 20 24 70 61 6e 65 31 2e 65 24 69 20 2d 74 ry $pane1.e$i -t
3adb0 65 78 74 76 61 72 69 61 62 6c 65 20 5c 0a 09 09 extvariable \...
3adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ade0 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 RamDebugger::E
3adf0 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c 65 valEntries($i,le
3ae00 66 74 24 73 75 66 66 69 78 29 20 2d 62 64 20 30 ft$suffix) -bd 0
3ae10 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 \...
3ae20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ae30 20 20 20 20 20 20 20 2d 68 69 67 68 6c 69 67 68 -highligh
3ae40 74 74 68 69 63 6b 6e 65 73 73 20 31 20 2d 68 69 tthickness 1 -hi
3ae50 67 68 6c 69 67 68 74 62 61 63 6b 67 72 6f 75 6e ghlightbackgroun
3ae60 64 20 67 72 65 79 39 30 20 2d 62 67 20 77 68 69 d grey90 -bg whi
3ae70 74 65 5d 0a 09 73 65 74 20 45 76 61 6c 45 6e 74 te]..set EvalEnt
3ae80 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 ries($i,rightent
3ae90 72 79 24 73 75 66 66 69 78 29 20 5b 65 6e 74 72 ry$suffix) [entr
3aea0 79 20 24 70 61 6e 65 32 2e 65 24 69 20 2d 74 65 y $pane2.e$i -te
3aeb0 78 74 76 61 72 69 61 62 6c 65 20 5c 0a 09 09 20 xtvariable \...
3aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3aee0 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 45 RamDebugger::E
3aef0 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 72 69 valEntries($i,ri
3af00 67 68 74 24 73 75 66 66 69 78 29 20 2d 62 64 20 ght$suffix) -bd
3af10 30 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 0 \...
3af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3af30 20 20 20 20 20 20 20 20 20 2d 68 69 67 68 6c 69 -highli
3af40 67 68 74 74 68 69 63 6b 6e 65 73 73 20 31 20 2d ghtthickness 1 -
3af50 68 69 67 68 6c 69 67 68 74 62 61 63 6b 67 72 6f highlightbackgro
3af60 75 6e 64 20 67 72 65 79 39 30 20 2d 62 67 20 77 und grey90 -bg w
3af70 68 69 74 65 5d 0a 0a 09 63 61 74 63 68 20 7b 0a hite]...catch {.
3af80 09 20 20 20 20 24 70 61 6e 65 31 2e 65 24 69 20 . $pane1.e$i
3af90 63 6f 6e 66 20 2d 64 69 73 61 62 6c 65 64 62 61 conf -disabledba
3afa0 63 6b 67 72 6f 75 6e 64 20 77 68 69 74 65 0a 09 ckground white..
3afb0 20 20 20 20 24 70 61 6e 65 32 2e 65 24 69 20 63 $pane2.e$i c
3afc0 6f 6e 66 20 2d 64 69 73 61 62 6c 65 64 62 61 63 onf -disabledbac
3afd0 6b 67 72 6f 75 6e 64 20 77 68 69 74 65 0a 09 7d kground white..}
3afe0 0a 09 67 72 69 64 20 24 45 76 61 6c 45 6e 74 72 ..grid $EvalEntr
3aff0 69 65 73 28 24 69 2c 6c 65 66 74 65 6e 74 72 79 ies($i,leftentry
3b000 24 73 75 66 66 69 78 29 20 2d 73 74 69 63 6b 79 $suffix) -sticky
3b010 20 65 77 0a 09 67 72 69 64 20 24 45 76 61 6c 45 ew..grid $EvalE
3b020 6e 74 72 69 65 73 28 24 69 2c 72 69 67 68 74 65 ntries($i,righte
3b030 6e 74 72 79 24 73 75 66 66 69 78 29 20 2d 73 74 ntry$suffix) -st
3b040 69 63 6b 79 20 65 77 0a 0a 09 69 66 20 7b 20 24 icky ew...if { $
3b050 73 75 66 66 69 78 20 3d 3d 20 22 22 20 7d 20 7b suffix == "" } {
3b060 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b .. set comm {
3b070 0a 09 09 73 65 74 20 77 20 24 70 61 6e 65 31 2e ...set w $pane1.
3b080 65 5b 65 78 70 72 20 24 69 2b 31 5d 0a 09 09 69 e[expr $i+1]...i
3b090 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 78 69 73 f { ![winfo exis
3b0a0 74 73 20 24 77 5d 20 7d 20 7b 0a 09 09 20 20 20 ts $w] } {...
3b0b0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 72 RamDebugger::Cr
3b0c0 65 61 74 65 50 61 6e 65 64 45 6e 74 72 69 65 73 eatePanedEntries
3b0d0 20 5b 65 78 70 72 20 24 69 2b 32 5d 20 24 70 61 [expr $i+2] $pa
3b0e0 6e 65 31 20 24 70 61 6e 65 32 20 7b 24 73 75 66 ne1 $pane2 {$suf
3b0f0 66 69 78 7d 0a 09 09 7d 0a 09 09 74 6b 54 61 62 fix}...}...tkTab
3b100 54 6f 57 69 6e 64 6f 77 20 24 77 0a 09 20 20 20 ToWindow $w..
3b110 20 7d 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 6d }.. set comm
3b120 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 [string map [li
3b130 73 74 20 5c 24 69 20 24 69 20 5c 24 70 61 6e 65 st \$i $i \$pane
3b140 31 20 24 70 61 6e 65 31 20 5c 24 70 61 6e 65 32 1 $pane1 \$pane2
3b150 20 24 70 61 6e 65 32 20 5c 0a 09 09 20 20 20 20 $pane2 \...
3b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b170 20 20 5c 24 73 75 66 66 69 78 20 24 73 75 66 66 \$suffix $suff
3b180 69 78 5d 20 24 63 6f 6d 6d 5d 0a 0a 09 20 20 20 ix] $comm]...
3b190 20 62 69 6e 64 20 24 70 61 6e 65 31 2e 65 24 69 bind $pane1.e$i
3b1a0 20 3c 52 65 74 75 72 6e 3e 20 24 63 6f 6d 6d 0a <Return> $comm.
3b1b0 09 20 20 20 20 62 69 6e 64 20 24 70 61 6e 65 31 . bind $pane1
3b1c0 2e 65 24 69 20 3c 46 6f 63 75 73 4f 75 74 3e 20 .e$i <FocusOut>
3b1d0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 "RamDebugger::Ch
3b1e0 65 63 6b 45 76 61 6c 45 6e 74 72 69 65 73 24 73 eckEvalEntries$s
3b1f0 75 66 66 69 78 20 64 6f 20 24 69 2c 6c 65 66 74 uffix do $i,left
3b200 24 73 75 66 66 69 78 22 0a 09 20 20 20 20 62 69 $suffix".. bi
3b210 6e 64 20 24 70 61 6e 65 31 2e 65 24 69 20 3c 42 nd $pane1.e$i <B
3b220 75 74 74 6f 6e 52 65 6c 65 61 73 65 2d 31 3e 20 uttonRelease-1>
3b230 7b 0a 09 09 25 57 20 73 65 6c 65 63 74 69 6f 6e {...%W selection
3b240 20 72 61 6e 67 65 20 30 20 65 6e 64 0a 09 09 25 range 0 end...%
3b250 57 20 69 63 75 72 73 6f 72 20 65 6e 64 0a 09 20 W icursor end..
3b260 20 20 20 7d 0a 09 20 20 20 20 62 69 6e 64 20 24 }.. bind $
3b270 70 61 6e 65 31 2e 65 24 69 20 3c 44 6f 77 6e 3e pane1.e$i <Down>
3b280 20 7b 74 6b 54 61 62 54 6f 57 69 6e 64 6f 77 20 {tkTabToWindow
3b290 5b 74 6b 5f 66 6f 63 75 73 4e 65 78 74 20 25 57 [tk_focusNext %W
3b2a0 5d 7d 0a 09 20 20 20 20 62 69 6e 64 20 24 70 61 ]}.. bind $pa
3b2b0 6e 65 31 2e 65 24 69 20 3c 55 70 3e 20 7b 74 6b ne1.e$i <Up> {tk
3b2c0 54 61 62 54 6f 57 69 6e 64 6f 77 20 5b 74 6b 5f TabToWindow [tk_
3b2d0 66 6f 63 75 73 50 72 65 76 20 25 57 5d 7d 0a 0a focusPrev %W]}..
3b2e0 09 7d 20 65 6c 73 65 20 7b 20 24 45 76 61 6c 45 .} else { $EvalE
3b2f0 6e 74 72 69 65 73 28 24 69 2c 6c 65 66 74 65 6e ntries($i,leften
3b300 74 72 79 24 73 75 66 66 69 78 29 20 63 6f 6e 66 try$suffix) conf
3b310 69 67 75 72 65 20 2d 73 74 61 74 65 20 64 69 73 igure -state dis
3b320 61 62 6c 65 64 20 7d 0a 0a 09 62 69 6e 64 20 24 abled }...bind $
3b330 70 61 6e 65 31 2e 65 24 69 20 3c 3c 43 6f 6e 74 pane1.e$i <<Cont
3b340 65 78 74 75 61 6c 3e 3e 20 7b 0a 09 20 20 20 20 extual>> {..
3b350 73 65 74 20 6d 65 6e 75 20 25 57 2e 6d 65 6e 75 set menu %W.menu
3b360 0a 09 20 20 20 20 64 65 73 74 72 6f 79 20 24 6d .. destroy $m
3b370 65 6e 75 0a 09 20 20 20 20 6d 65 6e 75 20 24 6d enu.. menu $m
3b380 65 6e 75 20 2d 74 65 61 72 6f 66 66 20 30 0a 09 enu -tearoff 0..
3b390 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f $menu add co
3b3a0 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 mmand -label [_
3b3b0 22 45 78 70 72 65 73 73 69 6f 6e 73 22 5d 2e 2e "Expressions"]..
3b3c0 2e 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 5b . -command \...[
3b3d0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
3b3e0 3a 3a 44 69 73 70 6c 61 79 56 61 72 57 69 6e 64 ::DisplayVarWind
3b3f0 6f 77 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 ow [winfo toplev
3b400 65 6c 20 25 57 5d 20 5c 0a 09 09 20 20 20 20 20 el %W] \...
3b410 5b 25 57 20 67 65 74 5d 5d 0a 09 20 20 20 20 66 [%W get]].. f
3b420 6f 63 75 73 20 25 57 0a 09 20 20 20 20 25 57 20 ocus %W.. %W
3b430 73 65 6c 65 63 74 69 6f 6e 20 72 61 6e 67 65 20 selection range
3b440 30 20 65 6e 64 0a 09 20 20 20 20 74 6b 5f 70 6f 0 end.. tk_po
3b450 70 75 70 20 24 6d 65 6e 75 20 25 58 20 25 59 0a pup $menu %X %Y.
3b460 09 7d 0a 0a 09 62 69 6e 64 20 24 70 61 6e 65 32 .}...bind $pane2
3b470 2e 65 24 69 20 3c 52 65 74 75 72 6e 3e 20 22 52 .e$i <Return> "R
3b480 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 amDebugger::Chec
3b490 6b 45 76 61 6c 45 6e 74 72 69 65 73 24 73 75 66 kEvalEntries$suf
3b4a0 66 69 78 20 64 6f 20 24 69 2c 72 69 67 68 74 24 fix do $i,right$
3b4b0 73 75 66 66 69 78 22 0a 0a 09 62 69 6e 64 20 24 suffix"...bind $
3b4c0 70 61 6e 65 32 2e 65 24 69 20 3c 46 6f 63 75 73 pane2.e$i <Focus
3b4d0 4f 75 74 3e 20 22 52 61 6d 44 65 62 75 67 67 65 Out> "RamDebugge
3b4e0 72 3a 3a 43 68 65 63 6b 45 76 61 6c 45 6e 74 72 r::CheckEvalEntr
3b4f0 69 65 73 24 73 75 66 66 69 78 20 64 6f 20 24 69 ies$suffix do $i
3b500 2c 6c 65 66 74 24 73 75 66 66 69 78 22 0a 09 62 ,left$suffix"..b
3b510 69 6e 64 20 24 70 61 6e 65 32 2e 65 24 69 20 3c ind $pane2.e$i <
3b520 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 2d 31 3e ButtonRelease-1>
3b530 20 7b 0a 09 20 20 20 20 25 57 20 73 65 6c 65 63 {.. %W selec
3b540 74 69 6f 6e 20 72 61 6e 67 65 20 30 20 65 6e 64 tion range 0 end
3b550 0a 09 20 20 20 20 25 57 20 69 63 75 72 73 6f 72 .. %W icursor
3b560 20 65 6e 64 0a 09 7d 0a 09 62 69 6e 64 20 24 70 end..}..bind $p
3b570 61 6e 65 32 2e 65 24 69 20 3c 44 6f 77 6e 3e 20 ane2.e$i <Down>
3b580 7b 74 6b 54 61 62 54 6f 57 69 6e 64 6f 77 20 5b {tkTabToWindow [
3b590 74 6b 5f 66 6f 63 75 73 4e 65 78 74 20 25 57 5d tk_focusNext %W]
3b5a0 7d 0a 09 62 69 6e 64 20 24 70 61 6e 65 32 2e 65 }..bind $pane2.e
3b5b0 24 69 20 3c 55 70 3e 20 7b 74 6b 54 61 62 54 6f $i <Up> {tkTabTo
3b5c0 57 69 6e 64 6f 77 20 5b 74 6b 5f 66 6f 63 75 73 Window [tk_focus
3b5d0 50 72 65 76 20 25 57 5d 7d 0a 09 0a 09 44 79 6e Prev %W]}....Dyn
3b5e0 61 6d 69 63 48 65 6c 70 49 6e 45 6e 74 72 79 57 amicHelpInEntryW
3b5f0 69 74 68 56 61 72 20 24 45 76 61 6c 45 6e 74 72 ithVar $EvalEntr
3b600 69 65 73 28 24 69 2c 72 69 67 68 74 65 6e 74 72 ies($i,rightentr
3b610 79 24 73 75 66 66 69 78 29 0a 20 20 20 20 7d 0a y$suffix). }.
3b620 20 20 20 20 77 68 69 6c 65 20 7b 20 5b 77 69 6e while { [win
3b630 66 6f 20 65 78 69 73 74 73 20 24 70 61 6e 65 31 fo exists $pane1
3b640 2e 65 24 69 5d 20 7d 20 7b 0a 09 64 65 73 74 72 .e$i] } {..destr
3b650 6f 79 20 24 70 61 6e 65 31 2e 65 24 69 20 24 70 oy $pane1.e$i $p
3b660 61 6e 65 32 2e 65 24 69 0a 09 75 6e 73 65 74 20 ane2.e$i..unset
3b670 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c EvalEntries($i,l
3b680 65 66 74 65 6e 74 72 79 24 73 75 66 66 69 78 29 eftentry$suffix)
3b690 20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c EvalEntries($i,
3b6a0 72 69 67 68 74 65 6e 74 72 79 24 73 75 66 66 69 rightentry$suffi
3b6b0 78 29 0a 09 75 6e 73 65 74 20 45 76 61 6c 45 6e x)..unset EvalEn
3b6c0 74 72 69 65 73 28 24 69 2c 6c 65 66 74 24 73 75 tries($i,left$su
3b6d0 66 66 69 78 29 20 45 76 61 6c 45 6e 74 72 69 65 ffix) EvalEntrie
3b6e0 73 28 24 69 2c 72 69 67 68 74 24 73 75 66 66 69 s($i,right$suffi
3b6f0 78 29 0a 09 69 6e 63 72 20 69 0a 20 20 20 20 7d x)..incr i. }
3b700 0a 0a 20 20 20 20 67 72 69 64 20 63 6f 6c 75 6d .. grid colum
3b710 6e 63 6f 6e 66 20 24 70 61 6e 65 31 20 30 20 2d nconf $pane1 0 -
3b720 77 65 69 67 68 74 20 31 0a 20 20 20 20 67 72 69 weight 1. gri
3b730 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 20 24 70 61 d columnconf $pa
3b740 6e 65 32 20 30 20 2d 77 65 69 67 68 74 20 31 0a ne2 0 -weight 1.
3b750 0a 20 20 20 20 23 20 64 69 72 74 79 20 74 72 69 . # dirty tri
3b760 63 6b 20 74 6f 20 6d 61 6b 65 20 74 68 65 20 70 ck to make the p
3b770 61 6e 65 64 20 77 69 6e 64 6f 77 20 61 63 74 75 aned window actu
3b780 61 6c 69 7a 65 20 73 69 7a 65 73 0a 20 20 20 20 alize sizes.
3b790 61 66 74 65 72 20 69 64 6c 65 20 65 76 65 6e 74 after idle event
3b7a0 20 67 65 6e 65 72 61 74 65 20 24 70 61 6e 65 77 generate $panew
3b7b0 20 3c 43 6f 6e 66 69 67 75 72 65 3e 0a 7d 0a 0a <Configure>.}..
3b7c0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
3b7d0 3a 3a 54 6b 42 61 63 6b 43 6f 6d 70 61 74 69 62 ::TkBackCompatib
3b7e0 69 6c 69 74 79 20 7b 7d 20 7b 0a 0a 20 20 20 20 ility {} {..
3b7f0 73 65 74 20 63 6f 6d 6d 73 20 5b 6c 69 73 74 20 set comms [list
3b800 74 6b 42 75 74 74 6f 6e 49 6e 76 6f 6b 65 20 74 tkButtonInvoke t
3b810 6b 54 65 78 74 53 65 6c 65 63 74 54 6f 20 74 6b kTextSelectTo tk
3b820 45 6e 74 72 79 49 6e 73 65 72 74 20 74 6b 45 6e EntryInsert tkEn
3b830 74 72 79 42 61 63 6b 73 70 61 63 65 20 5c 0a 09 tryBackspace \..
3b840 09 20 20 20 74 6b 5f 74 65 78 74 43 75 74 20 74 . tk_textCut t
3b850 6b 5f 74 65 78 74 43 6f 70 79 20 74 6b 5f 74 65 k_textCopy tk_te
3b860 78 74 50 61 73 74 65 20 74 6b 5f 66 6f 63 75 73 xtPaste tk_focus
3b870 4e 65 78 74 20 74 6b 5f 66 6f 63 75 73 50 72 65 Next tk_focusPre
3b880 76 20 74 6b 54 65 78 74 43 6c 6f 73 65 73 74 47 v tkTextClosestG
3b890 61 70 20 5c 0a 09 09 20 20 20 74 6b 54 65 78 74 ap \... tkText
3b8a0 41 75 74 6f 53 63 61 6e 20 74 6b 43 61 6e 63 65 AutoScan tkCance
3b8b0 6c 52 65 70 65 61 74 5d 0a 0a 20 20 20 20 66 6f lRepeat].. fo
3b8c0 72 65 61 63 68 20 69 20 24 63 6f 6d 6d 73 20 7b reach i $comms {
3b8d0 0a 09 61 75 74 6f 5f 6c 6f 61 64 20 24 69 0a 09 ..auto_load $i..
3b8e0 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 5b 69 if {![llength [i
3b8f0 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 24 69 5d nfo commands $i]
3b900 5d 7d 20 7b 0a 09 20 20 20 20 74 6b 3a 3a 75 6e ]} {.. tk::un
3b910 73 75 70 70 6f 72 74 65 64 3a 3a 45 78 70 6f 73 supported::Expos
3b920 65 50 72 69 76 61 74 65 43 6f 6d 6d 61 6e 64 20 ePrivateCommand
3b930 24 69 0a 09 20 20 20 20 23 72 65 67 73 75 62 20 $i.. #regsub
3b940 7b 5e 74 6b 7d 20 24 69 20 7b 3a 3a 74 6b 3a 3a {^tk} $i {::tk::
3b950 7d 20 6e 65 77 0a 09 20 20 20 20 23 69 6e 74 65 } new.. #inte
3b960 72 70 20 61 6c 69 61 73 20 22 22 20 24 69 20 22 rp alias "" $i "
3b970 22 20 24 6e 65 77 0a 09 7d 0a 20 20 20 20 7d 0a " $new..}. }.
3b980 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
3b990 67 65 72 3a 3a 4d 6f 76 65 43 61 6e 76 61 73 20 ger::MoveCanvas
3b9a0 7b 20 74 65 78 74 20 63 61 6e 76 61 73 20 7d 20 { text canvas }
3b9b0 7b 0a 0a 20 20 20 20 24 63 61 6e 76 61 73 20 79 {.. $canvas y
3b9c0 76 69 65 77 20 6d 6f 76 65 74 6f 20 5b 6c 69 6e view moveto [lin
3b9d0 64 65 78 20 5b 24 74 65 78 74 20 79 76 69 65 77 dex [$text yview
3b9e0 5d 20 30 5d 0a 0a 20 20 20 20 23 20 66 69 6e 65 ] 0].. # fine
3b9f0 20 61 64 6a 75 73 74 6d 65 6e 74 0a 20 20 20 20 adjustment.
3ba00 23 20 61 73 20 74 68 65 20 74 65 78 74 20 77 69 # as the text wi
3ba10 64 67 65 74 20 61 64 64 73 20 61 72 62 69 74 72 dget adds arbitr
3ba20 61 72 69 6c 79 20 6d 6f 72 65 20 73 70 61 63 65 arily more space
3ba30 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 at the end of t
3ba40 68 65 20 74 65 78 74 2c 0a 20 20 20 20 23 20 69 he text,. # i
3ba50 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 t is necessary t
3ba60 6f 20 66 69 6e 65 20 74 75 6e 65 20 62 79 20 68 o fine tune by h
3ba70 61 6e 64 0a 0a 20 20 20 20 73 65 74 20 79 62 31 and.. set yb1
3ba80 20 5b 24 63 61 6e 76 61 73 20 63 61 6e 76 61 73 [$canvas canvas
3ba90 79 20 30 5d 0a 20 20 20 20 73 65 74 20 79 62 32 y 0]. set yb2
3baa0 20 5b 24 63 61 6e 76 61 73 20 63 61 6e 76 61 73 [$canvas canvas
3bab0 79 20 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20 y [winfo height
3bac0 24 74 65 78 74 5d 5d 0a 20 20 20 20 66 6f 72 65 $text]]. fore
3bad0 61 63 68 20 69 20 5b 24 63 61 6e 76 61 73 20 66 ach i [$canvas f
3bae0 69 6e 64 20 6f 76 65 72 6c 61 70 70 69 6e 67 20 ind overlapping
3baf0 30 20 24 79 62 31 20 32 30 20 24 79 62 32 5d 20 0 $yb1 20 $yb2]
3bb00 7b 0a 09 72 65 67 65 78 70 20 7b 6c 28 5b 30 2d {..regexp {l([0-
3bb10 39 5d 2b 29 7d 20 5b 24 63 61 6e 76 61 73 20 67 9]+)} [$canvas g
3bb20 65 74 74 61 67 73 20 24 69 5d 20 7b 7d 20 6c 69 ettags $i] {} li
3bb30 6e 65 0a 09 73 65 74 20 79 6c 69 6e 65 20 22 22 ne..set yline ""
3bb40 0a 09 66 6f 72 65 61 63 68 20 22 2d 20 79 6c 69 ..foreach "- yli
3bb50 6e 65 20 2d 20 2d 22 20 5b 24 74 65 78 74 20 62 ne - -" [$text b
3bb60 62 6f 78 20 24 6c 69 6e 65 2e 30 5d 20 62 72 65 box $line.0] bre
3bb70 61 6b 0a 09 69 66 20 7b 20 24 79 6c 69 6e 65 20 ak..if { $yline
3bb80 3d 3d 20 22 22 20 7d 20 7b 20 63 6f 6e 74 69 6e == "" } { contin
3bb90 75 65 20 7d 0a 09 73 65 74 20 79 6c 69 6e 65 20 ue }..set yline
3bba0 5b 24 63 61 6e 76 61 73 20 63 61 6e 76 61 73 79 [$canvas canvasy
3bbb0 20 24 79 6c 69 6e 65 5d 0a 09 73 65 74 20 69 64 $yline]..set id
3bbc0 20 5b 6c 69 6e 64 65 78 20 5b 24 63 61 6e 76 61 [lindex [$canva
3bbd0 73 20 66 69 6e 64 20 77 69 74 68 74 61 67 20 6c s find withtag l
3bbe0 24 6c 69 6e 65 5d 20 30 5d 0a 09 66 6f 72 65 61 $line] 0]..forea
3bbf0 63 68 20 22 2d 20 79 63 61 6e 76 61 73 20 2d 20 ch "- ycanvas -
3bc00 2d 22 20 5b 24 63 61 6e 76 61 73 20 62 62 6f 78 -" [$canvas bbox
3bc10 20 24 69 64 5d 20 62 72 65 61 6b 0a 09 69 6e 63 $id] break..inc
3bc20 72 20 79 63 61 6e 76 61 73 20 2d 33 0a 09 66 6f r ycanvas -3..fo
3bc30 72 65 61 63 68 20 22 63 79 31 20 63 79 32 22 20 reach "cy1 cy2"
3bc40 5b 24 63 61 6e 76 61 73 20 79 76 69 65 77 5d 20 [$canvas yview]
3bc50 62 72 65 61 6b 0a 09 73 65 74 20 31 70 20 5b 65 break..set 1p [e
3bc60 78 70 72 20 28 24 63 79 32 2d 24 63 79 31 29 2f xpr ($cy2-$cy1)/
3bc70 64 6f 75 62 6c 65 28 5b 77 69 6e 66 6f 20 68 65 double([winfo he
3bc80 69 67 68 74 20 24 74 65 78 74 5d 29 5d 0a 09 24 ight $text])]..$
3bc90 63 61 6e 76 61 73 20 79 76 69 65 77 20 6d 6f 76 canvas yview mov
3bca0 65 74 6f 20 5b 65 78 70 72 20 24 63 79 31 2b 28 eto [expr $cy1+(
3bcb0 24 79 63 61 6e 76 61 73 2d 24 79 6c 69 6e 65 29 $ycanvas-$yline)
3bcc0 2a 24 31 70 5d 0a 09 72 65 74 75 72 6e 0a 20 20 *$1p]..return.
3bcd0 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
3bce0 65 62 75 67 67 65 72 3a 3a 53 63 72 6f 6c 6c 54 ebugger::ScrollT
3bcf0 65 78 74 41 6e 64 43 61 6e 76 61 73 20 7b 20 74 extAndCanvas { t
3bd00 65 78 74 20 63 61 6e 76 61 73 20 61 72 67 73 20 ext canvas args
3bd10 7d 20 7b 0a 20 20 20 20 65 76 61 6c 20 24 74 65 } {. eval $te
3bd20 78 74 20 79 76 69 65 77 20 24 61 72 67 73 0a 20 xt yview $args.
3bd30 20 20 20 4d 6f 76 65 43 61 6e 76 61 73 20 24 74 MoveCanvas $t
3bd40 65 78 74 20 24 63 61 6e 76 61 73 0a 7d 0a 0a 70 ext $canvas.}..p
3bd50 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
3bd60 3a 53 63 72 6f 6c 6c 53 63 72 6f 6c 6c 41 6e 64 :ScrollScrollAnd
3bd70 43 61 6e 76 61 73 20 7b 20 74 65 78 74 20 79 73 Canvas { text ys
3bd80 63 72 6f 6c 6c 20 63 61 6e 76 61 73 20 61 72 67 croll canvas arg
3bd90 73 20 7d 20 7b 0a 20 20 20 20 65 76 61 6c 20 24 s } {. eval $
3bda0 79 73 63 72 6f 6c 6c 20 73 65 74 20 24 61 72 67 yscroll set $arg
3bdb0 73 0a 20 20 20 20 24 63 61 6e 76 61 73 20 79 76 s. $canvas yv
3bdc0 69 65 77 20 6d 6f 76 65 74 6f 20 5b 6c 69 6e 64 iew moveto [lind
3bdd0 65 78 20 5b 24 74 65 78 74 20 79 76 69 65 77 5d ex [$text yview]
3bde0 20 30 5d 0a 20 20 20 20 4d 6f 76 65 43 61 6e 76 0]. MoveCanv
3bdf0 61 73 20 24 74 65 78 74 20 24 63 61 6e 76 61 73 as $text $canvas
3be00 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 .}..proc RamDebu
3be10 67 67 65 72 3a 3a 49 6e 69 74 4f 70 74 69 6f 6e gger::InitOption
3be20 73 20 7b 7d 20 7b 0a 0a 20 20 20 20 23 20 20 20 s {} {.. #
3be30 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 62 option add *b
3be40 61 63 6b 67 72 6f 75 6e 64 20 41 6e 74 69 71 75 ackground Antiqu
3be50 65 57 68 69 74 65 33 0a 20 20 20 20 23 20 20 20 eWhite3. #
3be60 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 42 option add *B
3be70 75 74 74 6f 6e 2a 62 61 63 6b 67 72 6f 75 6e 64 utton*background
3be80 20 62 69 73 71 75 65 33 0a 20 20 20 20 23 20 20 bisque3. #
3be90 20 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a option add *
3bea0 4d 65 6e 75 2a 62 61 63 6b 67 72 6f 75 6e 64 20 Menu*background
3beb0 62 69 73 71 75 65 33 0a 20 20 20 20 23 20 20 20 bisque3. #
3bec0 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 42 option add *B
3bed0 75 74 74 6f 6e 2a 66 6f 72 65 67 72 6f 75 6e 64 utton*foreground
3bee0 20 62 6c 61 63 6b 0a 20 20 20 20 23 20 20 20 20 black. #
3bef0 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 45 6e option add *En
3bf00 74 72 79 2a 62 61 63 6b 67 72 6f 75 6e 64 20 74 try*background t
3bf10 68 69 73 74 6c 65 0a 20 20 20 20 23 20 20 20 20 histle. #
3bf20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 44 69 option add *Di
3bf30 73 61 62 6c 65 64 46 6f 72 65 67 72 6f 75 6e 64 sabledForeground
3bf40 20 67 72 65 79 36 30 0a 20 20 20 20 23 20 20 20 grey60. #
3bf50 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 48 option add *H
3bf60 69 67 68 6c 69 67 68 74 42 61 63 6b 67 72 6f 75 ighlightBackgrou
3bf70 6e 64 20 41 6e 74 69 71 75 65 57 68 69 74 65 33 nd AntiqueWhite3
3bf80 0a 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 .. if { $::tc
3bf90 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 l_platform(platf
3bfa0 6f 72 6d 29 20 21 3d 20 22 77 69 6e 64 6f 77 73 orm) != "windows
3bfb0 22 20 7d 20 7b 0a 09 6f 70 74 69 6f 6e 20 61 64 " } {..option ad
3bfc0 64 20 2a 73 65 6c 65 63 74 42 61 63 6b 67 72 6f d *selectBackgro
3bfd0 75 6e 64 20 5c 23 34 38 63 39 36 66 0a 09 6f 70 und \#48c96f..op
3bfe0 74 69 6f 6e 20 61 64 64 20 2a 73 65 6c 65 63 74 tion add *select
3bff0 46 6f 72 65 67 72 6f 75 6e 64 20 77 68 69 74 65 Foreground white
3c000 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6f . } else {..o
3c010 70 74 69 6f 6e 20 61 64 64 20 2a 73 65 6c 65 63 ption add *selec
3c020 74 42 61 63 6b 67 72 6f 75 6e 64 20 5c 23 34 38 tBackground \#48
3c030 63 39 36 66 0a 09 6f 70 74 69 6f 6e 20 61 64 64 c96f..option add
3c040 20 2a 73 65 6c 65 63 74 46 6f 72 65 67 72 6f 75 *selectForegrou
3c050 6e 64 20 77 68 69 74 65 0a 20 20 20 20 7d 0a 20 nd white. }.
3c060 20 20 20 6f 70 74 69 6f 6e 20 61 64 64 20 2a 4d option add *M
3c070 65 6e 75 2a 54 65 61 72 4f 66 66 20 30 0a 0a 7d enu*TearOff 0..}
3c080 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 ..proc RamDebugg
3c090 65 72 3a 3a 41 70 70 6c 79 44 72 6f 70 42 69 6e er::ApplyDropBin
3c0a0 64 69 6e 67 20 7b 20 77 20 63 6f 6d 6d 61 6e 64 ding { w command
3c0b0 20 7d 20 7b 0a 20 20 20 20 69 66 20 7b 20 5b 69 } {. if { [i
3c0c0 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 64 6e 64 nfo commands dnd
3c0d0 5d 20 65 71 20 22 22 20 7d 20 7b 20 72 65 74 75 ] eq "" } { retu
3c0e0 72 6e 20 7d 0a 20 20 20 20 64 6e 64 20 62 69 6e rn }. dnd bin
3c0f0 64 74 61 72 67 65 74 20 24 77 20 74 65 78 74 2f dtarget $w text/
3c100 75 72 69 2d 6c 69 73 74 20 3c 44 72 6f 70 3e 20 uri-list <Drop>
3c110 24 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 66 6f 72 $command. for
3c120 65 61 63 68 20 69 20 5b 77 69 6e 66 6f 20 63 68 each i [winfo ch
3c130 69 6c 64 72 65 6e 20 24 77 5d 20 7b 0a 09 41 70 ildren $w] {..Ap
3c140 70 6c 79 44 72 6f 70 42 69 6e 64 69 6e 67 20 24 plyDropBinding $
3c150 69 20 24 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 7d i $command. }
3c160 0a 0a 0a 20 20 20 20 23 20 20 20 20 20 69 66 20 ... # if
3c170 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 { $::tcl_platfor
3c180 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d 20 22 m(platform) == "
3c190 77 69 6e 64 6f 77 73 22 7d 20 7b 0a 20 20 20 20 windows"} {.
3c1a0 23 20 20 20 20 20 20 20 20 20 64 6e 64 20 62 69 # dnd bi
3c1b0 6e 64 74 61 72 67 65 74 20 24 77 20 46 69 6c 65 ndtarget $w File
3c1c0 73 20 3c 44 72 6f 70 3e 20 24 63 6f 6d 6d 61 6e s <Drop> $comman
3c1d0 64 0a 20 20 20 20 23 20 20 20 20 20 7d 20 65 6c d. # } el
3c1e0 73 65 20 7b 0a 20 20 20 20 23 20 20 20 20 20 20 se {. #
3c1f0 20 20 20 64 6e 64 20 62 69 6e 64 74 61 72 67 65 dnd bindtarge
3c200 74 20 24 77 20 74 65 78 74 2f 75 72 69 2d 6c 69 t $w text/uri-li
3c210 73 74 20 3c 44 72 6f 70 3e 20 24 63 6f 6d 6d 61 st <Drop> $comma
3c220 6e 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 nd. #
3c230 20 66 6f 72 65 61 63 68 20 69 20 5b 77 69 6e 66 foreach i [winf
3c240 6f 20 63 68 69 6c 64 72 65 6e 20 24 77 5d 20 7b o children $w] {
3c250 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3c260 20 20 20 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 ApplyDropBind
3c270 69 6e 67 20 24 69 20 24 63 6f 6d 6d 61 6e 64 0a ing $i $command.
3c280 20 20 20 20 23 20 20 20 20 20 20 20 20 20 7d 0a # }.
3c290 20 20 20 20 23 20 20 20 20 20 7d 0a 7d 0a 0a 70 # }.}..p
3c2a0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
3c2b0 3a 44 72 6f 70 42 69 6e 64 69 6e 67 44 6f 6e 65 :DropBindingDone
3c2c0 20 7b 20 66 69 6c 65 73 20 7d 20 7b 0a 0a 20 20 { files } {..
3c2d0 20 20 66 6f 72 65 61 63 68 20 66 69 6c 65 20 24 foreach file $
3c2e0 66 69 6c 65 73 20 7b 0a 09 69 66 20 7b 20 5b 72 files {..if { [r
3c2f0 65 67 73 75 62 20 7b 5e 66 69 6c 65 3a 2f 2f 7d egsub {^file://}
3c300 20 24 66 69 6c 65 20 7b 7d 20 66 69 6c 65 5d 20 $file {} file]
3c310 7d 20 7b 0a 09 20 20 20 20 70 61 63 6b 61 67 65 } {.. package
3c320 20 72 65 71 75 69 72 65 20 6e 63 67 69 0a 09 20 require ncgi..
3c330 20 20 20 73 65 74 20 66 69 6c 65 20 5b 65 6e 63 set file [enc
3c340 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 66 72 6f oding convertfro
3c350 6d 20 75 74 66 2d 38 20 5b 6e 63 67 69 3a 3a 64 m utf-8 [ncgi::d
3c360 65 63 6f 64 65 20 24 66 69 6c 65 5d 5d 0a 09 7d ecode $file]]..}
3c370 0a 09 4f 70 65 6e 46 69 6c 65 46 20 24 66 69 6c ..OpenFileF $fil
3c380 65 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 e. }.}..proc
3c390 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 41 64 64 RamDebugger::Add
3c3a0 43 75 73 74 6f 6d 46 69 6c 65 54 79 70 65 4d 65 CustomFileTypeMe
3c3b0 6e 75 20 7b 20 6e 61 6d 65 20 6d 65 6e 75 20 7d nu { name menu }
3c3c0 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
3c3d0 64 65 73 63 6d 65 6e 75 0a 20 20 20 20 76 61 72 descmenu. var
3c3e0 69 61 62 6c 65 20 43 75 73 74 6f 6d 46 69 6c 65 iable CustomFile
3c3f0 54 79 70 65 4d 65 6e 75 53 74 61 63 6b 0a 0a 20 TypeMenuStack..
3c400 20 20 20 6c 61 70 70 65 6e 64 20 43 75 73 74 6f lappend Custo
3c410 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 53 74 61 mFileTypeMenuSta
3c420 63 6b 20 5b 6c 69 73 74 20 24 6e 61 6d 65 20 24 ck [list $name $
3c430 6d 65 6e 75 5d 0a 20 20 20 20 73 65 74 20 64 65 menu]. set de
3c440 73 63 6d 65 6e 75 5f 6e 65 77 20 5b 6c 69 6e 73 scmenu_new [lins
3c450 65 72 74 20 24 64 65 73 63 6d 65 6e 75 20 33 30 ert $descmenu 30
3c460 20 24 6e 61 6d 65 20 61 6c 6c 20 66 69 6c 65 74 $name all filet
3c470 79 70 65 6d 65 6e 75 20 30 20 24 6d 65 6e 75 5d ypemenu 0 $menu]
3c480 0a 20 20 20 20 41 64 64 46 69 6c 65 54 79 70 65 . AddFileType
3c490 4d 65 6e 75 5f 64 6f 20 24 64 65 73 63 6d 65 6e Menu_do $descmen
3c4a0 75 5f 6e 65 77 0a 7d 0a 0a 70 72 6f 63 20 52 61 u_new.}..proc Ra
3c4b0 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 6d 6f 76 mDebugger::Remov
3c4c0 65 43 75 73 74 6f 6d 46 69 6c 65 54 79 70 65 4d eCustomFileTypeM
3c4d0 65 6e 75 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 enu {} {. var
3c4e0 69 61 62 6c 65 20 64 65 73 63 6d 65 6e 75 0a 20 iable descmenu.
3c4f0 20 20 20 76 61 72 69 61 62 6c 65 20 43 75 73 74 variable Cust
3c500 6f 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 53 74 omFileTypeMenuSt
3c510 61 63 6b 0a 0a 20 20 20 20 73 65 74 20 43 75 73 ack.. set Cus
3c520 74 6f 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 53 tomFileTypeMenuS
3c530 74 61 63 6b 20 5b 6c 72 61 6e 67 65 20 24 43 75 tack [lrange $Cu
3c540 73 74 6f 6d 46 69 6c 65 54 79 70 65 4d 65 6e 75 stomFileTypeMenu
3c550 53 74 61 63 6b 20 30 20 65 6e 64 2d 31 5d 0a 20 Stack 0 end-1].
3c560 20 20 20 0a 20 20 20 20 73 65 74 20 6e 61 6d 65 . set name
3c570 20 22 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 "". foreach
3c580 22 6e 61 6d 65 20 6d 65 6e 75 22 20 5b 6c 69 6e "name menu" [lin
3c590 64 65 78 20 24 43 75 73 74 6f 6d 46 69 6c 65 54 dex $CustomFileT
3c5a0 79 70 65 4d 65 6e 75 53 74 61 63 6b 20 65 6e 64 ypeMenuStack end
3c5b0 5d 20 62 72 65 61 6b 0a 20 20 20 20 69 66 20 7b ] break. if {
3c5c0 20 24 6e 61 6d 65 20 6e 65 20 22 22 20 7d 20 7b $name ne "" } {
3c5d0 0a 09 73 65 74 20 64 65 73 63 6d 65 6e 75 5f 6e ..set descmenu_n
3c5e0 65 77 20 5b 6c 69 6e 73 65 72 74 20 24 64 65 73 ew [linsert $des
3c5f0 63 6d 65 6e 75 20 33 30 20 24 6e 61 6d 65 20 61 cmenu 30 $name a
3c600 6c 6c 20 66 69 6c 65 74 79 70 65 6d 65 6e 75 20 ll filetypemenu
3c610 30 20 24 6d 65 6e 75 5d 0a 20 20 20 20 7d 20 65 0 $menu]. } e
3c620 6c 73 65 20 7b 0a 09 73 65 74 20 64 65 73 63 6d lse {..set descm
3c630 65 6e 75 5f 6e 65 77 20 24 64 65 73 63 6d 65 6e enu_new $descmen
3c640 75 0a 20 20 20 20 7d 0a 20 20 20 20 41 64 64 46 u. }. AddF
3c650 69 6c 65 54 79 70 65 4d 65 6e 75 5f 64 6f 20 24 ileTypeMenu_do $
3c660 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20 0a 7d 0a descmenu_new .}.
3c670 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 .proc RamDebugge
3c680 72 3a 3a 41 64 64 46 69 6c 65 54 79 70 65 4d 65 r::AddFileTypeMe
3c690 6e 75 20 7b 20 66 69 6c 65 74 79 70 65 20 7d 20 nu { filetype }
3c6a0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d {. variable m
3c6b0 61 69 6e 66 72 61 6d 65 0a 20 20 20 20 76 61 72 ainframe. var
3c6c0 69 61 62 6c 65 20 64 65 73 63 6d 65 6e 75 0a 20 iable descmenu.
3c6d0 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
3c6e0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
3c6f0 72 72 65 6e 74 66 69 6c 65 0a 20 20 20 20 76 61 rrentfile. va
3c700 72 69 61 62 6c 65 20 43 75 73 74 6f 6d 46 69 6c riable CustomFil
3c710 65 54 79 70 65 4d 65 6e 75 53 74 61 63 6b 0a 20 eTypeMenuStack.
3c720 20 20 20 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 . set menu
3c730 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 [$mainframe get
3c740 6d 65 6e 75 20 66 69 6c 65 74 79 70 65 6d 65 6e menu filetypemen
3c750 75 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 u]. . set
3c760 63 68 61 6e 67 65 73 20 30 0a 20 20 20 20 73 77 changes 0. sw
3c770 69 74 63 68 20 24 66 69 6c 65 74 79 70 65 20 7b itch $filetype {
3c780 0a 09 22 47 69 44 20 42 41 53 20 66 69 6c 65 22 .."GiD BAS file"
3c790 20 2d 20 22 47 69 44 20 64 61 74 61 20 66 69 6c - "GiD data fil
3c7a0 65 73 22 20 7b 0a 09 20 20 20 20 73 65 74 20 6d es" {.. set m
3c7b0 65 6e 75 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20 enu [list \...
3c7c0 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 63 6f [list co
3c7d0 6d 6d 61 6e 64 20 26 5b 5f 20 22 53 65 6c 65 63 mmand &[_ "Selec
3c7e0 74 20 6c 6f 6f 70 22 5d 20 7b 7d 20 5b 5f 20 22 t loop"] {} [_ "
3c7f0 53 65 61 72 63 68 20 61 6e 64 20 73 65 6c 65 63 Search and selec
3c800 74 20 74 68 65 20 6c 6f 6f 70 20 74 68 61 74 20 t the loop that
3c810 62 65 67 69 6e 73 20 6f 72 20 65 6e 64 73 20 68 begins or ends h
3c820 65 72 65 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 ere"] \...
3c830 20 20 20 20 20 20 20 20 20 22 43 74 72 6c 20 53 "Ctrl S
3c840 70 61 63 65 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 pace" -command "
3c850 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 6c RamDebugger::Sel
3c860 65 63 74 42 61 73 4c 6f 6f 70 22 5d 20 5c 0a 09 ectBasLoop"] \..
3c870 09 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 . [list
3c880 20 73 65 70 61 72 61 74 6f 72 5d 20 5c 0a 09 09 separator] \...
3c890 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 [list
3c8a0 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 55 70 64 command &[_ "Upd
3c8b0 61 74 65 20 6e 75 6d 62 65 72 73 22 5d 20 7b 7d ate numbers"] {}
3c8c0 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 \...
3c8d0 20 20 20 20 5b 5f 20 22 43 68 61 6e 67 65 20 43 [_ "Change C
3c8e0 6f 6e 64 69 74 69 6f 6e 73 20 6f 72 20 4d 61 74 onditions or Mat
3c8f0 65 72 69 61 6c 73 20 6e 75 6d 62 65 72 73 20 61 erials numbers a
3c900 6e 64 20 6f 72 64 65 72 73 20 74 68 65 6d 22 5d nd orders them"]
3c910 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 \...
3c920 20 20 20 20 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 "" -command
3c930 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 70 "RamDebugger::Up
3c940 64 61 74 65 4e 75 6d 62 65 72 73 49 6e 47 69 44 dateNumbersInGiD
3c950 46 69 6c 65 73 22 5d 20 5c 0a 09 09 20 20 20 20 Files"] \...
3c960 20 20 20 20 20 20 5b 6c 69 73 74 20 73 65 70 61 [list sepa
3c970 72 61 74 6f 72 5d 20 5c 0a 09 09 20 20 20 20 20 rator] \...
3c980 20 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 [list comma
3c990 6e 64 20 26 5b 5f 20 22 43 6f 6e 64 69 74 69 6f nd &[_ "Conditio
3c9a0 6e 73 2f 4d 61 74 65 72 69 61 6c 73 20 77 69 7a ns/Materials wiz
3c9b0 61 72 64 22 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 ard"] {} \...
3c9c0 20 20 20 20 20 20 20 20 20 20 20 20 5b 5f 20 22 [_ "
3c9d0 4d 61 6b 65 73 20 69 74 20 65 61 73 79 20 74 6f Makes it easy to
3c9e0 20 63 72 65 61 74 65 20 6f 6e 65 20 6e 65 77 20 create one new
3c9f0 63 6f 6e 64 69 74 69 6f 6e 22 5d 20 5c 0a 09 09 condition"] \...
3ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 "
3ca10 22 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 " -command [list
3ca20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 57 69 RamDebugger::Wi
3ca30 7a 61 72 64 3a 3a 43 6f 6e 64 4d 61 74 57 69 7a zard::CondMatWiz
3ca40 61 72 64 20 24 74 65 78 74 20 24 63 75 72 72 65 ard $text $curre
3ca50 6e 74 66 69 6c 65 5d 5d 5d 0a 09 20 20 20 20 73 ntfile]]].. s
3ca60 65 74 20 64 65 73 63 6d 65 6e 75 5f 6e 65 77 20 et descmenu_new
3ca70 5b 6c 69 6e 73 65 72 74 20 24 64 65 73 63 6d 65 [linsert $descme
3ca80 6e 75 20 33 30 20 22 26 47 69 44 22 20 61 6c 6c nu 30 "&GiD" all
3ca90 20 66 69 6c 65 74 79 70 65 6d 65 6e 75 20 30 20 filetypemenu 0
3caa0 24 6d 65 6e 75 5d 0a 09 20 20 20 20 73 65 74 20 $menu].. set
3cab0 63 68 61 6e 67 65 73 20 31 0a 09 7d 0a 09 58 4d changes 1..}..XM
3cac0 4c 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 65 6e L {.. set men
3cad0 75 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 u [list \...
3cae0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 22 26 [list command "&
3caf0 49 6e 64 65 6e 74 22 20 7b 7d 20 22 49 6e 64 65 Indent" {} "Inde
3cb00 6e 74 20 61 6c 6c 20 74 68 65 20 66 69 6c 65 22 nt all the file"
3cb10 20 5c 0a 09 09 20 20 20 20 20 20 20 20 22 22 20 \... ""
3cb20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
3cb30 75 67 67 65 72 3a 3a 58 4d 4c 49 6e 64 65 6e 74 ugger::XMLIndent
3cb40 22 5d 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 "] \... [list
3cb50 20 63 6f 6d 6d 61 6e 64 20 22 49 6e 64 65 6e 74 command "Indent
3cb60 20 32 22 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 2" {} \...
3cb70 20 20 20 22 49 6e 64 65 6e 74 20 61 6c 6c 20 74 "Indent all t
3cb80 68 65 20 66 69 6c 65 20 32 20 73 70 61 63 65 73 he file 2 spaces
3cb90 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 22 46 " \... "F
3cba0 38 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 8" -command "Ram
3cbb0 44 65 62 75 67 67 65 72 3a 3a 58 4d 4c 49 6e 64 Debugger::XMLInd
3cbc0 65 6e 74 20 32 22 5d 20 5c 0a 09 09 20 20 20 20 ent 2"] \...
3cbd0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 22 49 [list command "I
3cbe0 6e 64 65 6e 74 20 26 6e 6f 6e 65 22 20 7b 7d 20 ndent &none" {}
3cbf0 5c 0a 09 09 20 20 20 20 20 20 20 20 22 54 61 6b \... "Tak
3cc00 65 20 61 6c 6c 20 74 68 65 20 69 6e 64 65 6e 74 e all the indent
3cc10 61 74 69 6f 6e 20 6f 75 74 20 6f 66 20 74 68 65 ation out of the
3cc20 20 66 69 6c 65 22 20 5c 0a 09 09 20 20 20 20 20 file" \...
3cc30 20 20 20 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 "" -command "
3cc40 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 58 4d 4c RamDebugger::XML
3cc50 49 6e 64 65 6e 74 20 6e 6f 6e 65 22 5d 20 5c 0a Indent none"] \.
3cc60 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d .. [list comm
3cc70 61 6e 64 20 22 49 6e 64 65 6e 74 20 68 74 6d 6c and "Indent html
3cc80 22 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 20 20 " {} \...
3cc90 20 22 49 6e 64 65 6e 74 20 74 68 65 20 66 69 6c "Indent the fil
3cca0 65 20 61 73 20 48 54 4d 4c 22 20 5c 0a 09 09 20 e as HTML" \...
3ccb0 20 20 20 20 20 20 20 20 22 22 20 2d 63 6f 6d 6d "" -comm
3ccc0 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
3ccd0 3a 3a 58 4d 4c 49 6e 64 65 6e 74 20 7b 7d 20 31 ::XMLIndent {} 1
3cce0 22 5d 5d 0a 09 20 20 20 20 73 65 74 20 64 65 73 "]].. set des
3ccf0 63 6d 65 6e 75 5f 6e 65 77 20 5b 6c 69 6e 73 65 cmenu_new [linse
3cd00 72 74 20 24 64 65 73 63 6d 65 6e 75 20 33 30 20 rt $descmenu 30
3cd10 22 26 58 4d 4c 22 20 61 6c 6c 20 66 69 6c 65 74 "&XML" all filet
3cd20 79 70 65 6d 65 6e 75 20 30 20 24 6d 65 6e 75 5d ypemenu 0 $menu]
3cd30 0a 09 20 20 20 20 73 65 74 20 63 68 61 6e 67 65 .. set change
3cd40 73 20 31 0a 09 7d 0a 09 6c 61 74 65 78 20 2d 20 s 1..}..latex -
3cd50 77 69 6b 69 20 7b 0a 09 20 20 20 20 73 65 74 20 wiki {.. set
3cd60 65 72 72 20 5b 63 61 74 63 68 20 7b 20 70 61 63 err [catch { pac
3cd70 6b 61 67 65 20 72 65 71 75 69 72 65 20 63 6f 6d kage require com
3cd80 70 61 73 73 5f 75 74 69 6c 73 20 7d 5d 0a 09 20 pass_utils }]..
3cd90 20 20 20 69 66 20 7b 20 21 24 65 72 72 20 7d 20 if { !$err }
3cda0 7b 0a 09 09 73 65 74 20 63 6d 64 31 20 5b 6c 69 {...set cmd1 [li
3cdb0 73 74 20 6d 65 64 69 61 77 69 6b 69 3a 3a 75 70 st mediawiki::up
3cdc0 6c 6f 61 64 5f 77 69 6e 64 6f 77 5f 66 69 6c 65 load_window_file
3cdd0 20 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 5c -parent $text \
3cde0 0a 09 09 20 20 20 20 20 20 20 20 2d 66 69 6c 65 ... -file
3cdf0 20 24 63 75 72 72 65 6e 74 66 69 6c 65 20 5c 0a $currentfile \.
3ce00 09 09 20 20 20 20 20 20 20 20 2d 73 74 61 72 74 .. -start
3ce10 5f 63 61 6c 6c 62 61 63 6b 20 52 61 6d 44 65 62 _callback RamDeb
3ce20 75 67 67 65 72 3a 3a 52 65 64 65 66 69 6e 65 5f ugger::Redefine_
3ce30 64 65 62 75 67 5f 6c 6f 67 5d 0a 09 09 73 65 74 debug_log]...set
3ce40 20 63 6d 64 32 20 5b 6c 69 73 74 20 6d 65 64 69 cmd2 [list medi
3ce50 61 77 69 6b 69 3a 3a 75 70 6c 6f 61 64 5f 77 69 awiki::upload_wi
3ce60 6e 64 6f 77 20 2d 70 61 72 65 6e 74 20 24 74 65 ndow -parent $te
3ce70 78 74 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d xt \... -
3ce80 66 69 6c 65 20 24 63 75 72 72 65 6e 74 66 69 6c file $currentfil
3ce90 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 73 e \... -s
3cea0 74 61 72 74 5f 63 61 6c 6c 62 61 63 6b 20 52 61 tart_callback Ra
3ceb0 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 64 65 66 mDebugger::Redef
3cec0 69 6e 65 5f 64 65 62 75 67 5f 6c 6f 67 5d 0a 09 ine_debug_log]..
3ced0 09 73 65 74 20 63 6d 64 33 20 5b 6c 69 73 74 20 .set cmd3 [list
3cee0 6d 65 64 69 61 77 69 6b 69 3a 3a 75 70 6c 6f 61 mediawiki::uploa
3cef0 64 5f 77 69 6e 64 6f 77 5f 67 6f 74 6f 5f 6c 69 d_window_goto_li
3cf00 6e 6b 46 20 5c 0a 09 09 20 20 20 20 20 20 20 20 nkF \...
3cf10 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 5c 0a -parent $text \.
3cf20 09 09 20 20 20 20 20 20 20 20 2d 66 69 6c 65 20 .. -file
3cf30 24 63 75 72 72 65 6e 74 66 69 6c 65 20 5c 0a 09 $currentfile \..
3cf40 09 20 20 20 20 20 20 20 20 2d 73 74 61 72 74 5f . -start_
3cf50 63 61 6c 6c 62 61 63 6b 20 52 61 6d 44 65 62 75 callback RamDebu
3cf60 67 67 65 72 3a 3a 52 65 64 65 66 69 6e 65 5f 64 gger::Redefine_d
3cf70 65 62 75 67 5f 6c 6f 67 5d 0a 0a 09 09 73 65 74 ebug_log]....set
3cf80 20 6d 65 6e 75 20 5b 6c 69 73 74 20 5c 0a 09 09 menu [list \...
3cf90 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 63 6f [list co
3cfa0 6d 6d 61 6e 64 20 22 26 55 70 6c 6f 61 64 20 66 mmand "&Upload f
3cfb0 69 6c 65 22 20 7b 7d 20 22 55 70 6c 6f 61 64 20 ile" {} "Upload
3cfc0 66 69 6c 65 20 74 6f 20 73 65 72 76 65 72 22 20 file to server"
3cfd0 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 \...
3cfe0 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 24 63 6d 64 "" -command $cmd
3cff0 31 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 5b 1] \... [
3d000 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 22 26 55 list command "&U
3d010 70 6c 6f 61 64 20 77 69 6e 64 6f 77 2e 2e 2e 22 pload window..."
3d020 20 7b 7d 20 22 44 65 74 61 69 6c 65 64 20 75 70 {} "Detailed up
3d030 6c 6f 61 64 20 66 69 6c 65 20 74 6f 20 73 65 72 load file to ser
3d040 76 65 72 22 20 5c 0a 09 09 20 20 20 20 20 20 20 ver" \...
3d050 20 20 20 20 20 22 22 20 2d 63 6f 6d 6d 61 6e 64 "" -command
3d060 20 24 63 6d 64 32 5d 20 5c 0a 09 09 20 20 20 20 $cmd2] \...
3d070 20 20 20 20 5b 6c 69 73 74 20 73 65 70 61 72 61 [list separa
3d080 74 6f 72 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 tor] \...
3d090 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 22 [list command "
3d0a0 26 47 6f 20 74 6f 20 77 65 62 20 70 61 67 65 22 &Go to web page"
3d0b0 20 7b 7d 20 22 47 6f 20 74 6f 20 73 65 72 76 65 {} "Go to serve
3d0c0 72 20 77 65 62 70 61 67 65 22 20 5c 0a 09 09 20 r webpage" \...
3d0d0 20 20 20 20 20 20 20 20 20 20 20 22 22 20 2d 63 "" -c
3d0e0 6f 6d 6d 61 6e 64 20 24 63 6d 64 33 5d 5d 0a 09 ommand $cmd3]]..
3d0f0 09 73 65 74 20 64 65 73 63 6d 65 6e 75 5f 6e 65 .set descmenu_ne
3d100 77 20 5b 6c 69 6e 73 65 72 74 20 24 64 65 73 63 w [linsert $desc
3d110 6d 65 6e 75 20 33 30 20 22 26 4d 65 64 69 61 77 menu 30 "&Mediaw
3d120 69 6b 69 22 20 61 6c 6c 20 66 69 6c 65 74 79 70 iki" all filetyp
3d130 65 6d 65 6e 75 20 30 20 24 6d 65 6e 75 5d 0a 09 emenu 0 $menu]..
3d140 09 73 65 74 20 63 68 61 6e 67 65 73 20 31 0a 09 .set changes 1..
3d150 20 20 20 20 7d 0a 09 7d 0a 09 64 65 66 61 75 6c }..}..defaul
3d160 74 20 7b 20 73 65 74 20 64 65 73 63 6d 65 6e 75 t { set descmenu
3d170 5f 6e 65 77 20 24 64 65 73 63 6d 65 6e 75 20 7d _new $descmenu }
3d180 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
3d190 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 74 6d [$mainframe getm
3d1a0 65 6e 75 20 66 69 6c 65 74 79 70 65 6d 65 6e 75 enu filetypemenu
3d1b0 5d 20 21 3d 20 22 22 20 7d 20 7b 20 73 65 74 20 ] != "" } { set
3d1c0 63 68 61 6e 67 65 73 20 31 20 7d 0a 0a 20 20 20 changes 1 }..
3d1d0 20 69 66 20 7b 20 24 63 68 61 6e 67 65 73 20 7d if { $changes }
3d1e0 20 7b 0a 09 41 64 64 46 69 6c 65 54 79 70 65 4d {..AddFileTypeM
3d1f0 65 6e 75 5f 64 6f 20 24 64 65 73 63 6d 65 6e 75 enu_do $descmenu
3d200 5f 6e 65 77 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 _new. }.}..pr
3d210 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a oc RamDebugger::
3d220 41 64 64 46 69 6c 65 54 79 70 65 4d 65 6e 75 5f AddFileTypeMenu_
3d230 64 6f 20 7b 20 64 65 73 63 6d 65 6e 75 5f 6e 65 do { descmenu_ne
3d240 77 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 w } {. variab
3d250 6c 65 20 6d 61 69 6e 66 72 61 6d 65 0a 20 20 20 le mainframe.
3d260 20 0a 20 20 20 20 4d 61 69 6e 46 72 61 6d 65 3a . MainFrame:
3d270 3a 5f 63 72 65 61 74 65 5f 6d 65 6e 75 62 61 72 :_create_menubar
3d280 20 24 6d 61 69 6e 66 72 61 6d 65 20 24 64 65 73 $mainframe $des
3d290 63 6d 65 6e 75 5f 6e 65 77 0a 20 20 20 20 0a 20 cmenu_new. .
3d2a0 20 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61 set menu [$ma
3d2b0 69 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 inframe getmenu
3d2c0 61 63 74 69 76 65 70 72 6f 67 72 61 6d 73 5d 0a activeprograms].
3d2d0 20 20 20 20 24 6d 65 6e 75 20 63 6f 6e 66 69 67 $menu config
3d2e0 75 72 65 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 ure -postcommand
3d2f0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
3d300 65 72 3a 3a 41 63 74 75 61 6c 69 7a 65 41 63 74 er::ActualizeAct
3d310 69 76 65 50 72 6f 67 72 61 6d 73 49 66 56 6f 69 iveProgramsIfVoi
3d320 64 20 5c 0a 09 20 20 20 20 24 6d 65 6e 75 5d 0a d \.. $menu].
3d330 20 20 20 20 0a 20 20 20 20 73 65 74 20 6d 65 6e . set men
3d340 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 u [$mainframe ge
3d350 74 6d 65 6e 75 20 6d 61 63 72 6f 73 5d 0a 20 20 tmenu macros].
3d360 20 20 41 64 64 41 63 74 69 76 65 4d 61 63 72 6f AddActiveMacro
3d370 73 54 6f 4d 65 6e 75 20 24 6d 61 69 6e 66 72 61 sToMenu $mainfra
3d380 6d 65 20 24 6d 65 6e 75 0a 20 20 20 20 0a 20 20 me $menu. .
3d390 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61 69 set menu [$mai
3d3a0 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 76 nframe getmenu v
3d3b0 69 65 77 5d 0a 20 20 20 20 24 6d 65 6e 75 20 63 iew]. $menu c
3d3c0 6f 6e 66 69 67 75 72 65 20 2d 70 6f 73 74 63 6f onfigure -postco
3d3d0 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d 44 mmand [list RamD
3d3e0 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c 69 ebugger::Actuali
3d3f0 7a 65 56 69 65 77 4d 65 6e 75 20 24 6d 65 6e 75 zeViewMenu $menu
3d400 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 6d ]. . set m
3d410 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 enu [$mainframe
3d420 67 65 74 6d 65 6e 75 20 72 65 63 65 6e 74 66 69 getmenu recentfi
3d430 6c 65 73 5d 0a 20 20 20 20 24 6d 65 6e 75 20 63 les]. $menu c
3d440 6f 6e 66 69 67 75 72 65 20 2d 70 6f 73 74 63 6f onfigure -postco
3d450 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d 44 mmand [list RamD
3d460 65 62 75 67 67 65 72 3a 3a 41 64 64 52 65 63 65 ebugger::AddRece
3d470 6e 74 66 69 6c 65 73 54 6f 4d 65 6e 75 20 24 6d ntfilesToMenu $m
3d480 65 6e 75 5d 0a 20 20 20 20 0a 20 20 20 20 23 20 enu]. . #
3d490 76 65 72 79 20 64 69 72 74 79 2e 20 57 69 74 68 very dirty. With
3d4a0 6f 75 74 20 69 74 2c 20 74 68 65 20 72 61 64 69 out it, the radi
3d4b0 6f 62 75 74 74 6f 6e 20 69 6e 64 69 63 61 74 6f obutton indicato
3d4c0 72 20 69 73 20 6e 6f 74 20 64 72 61 77 6e 2e 20 r is not drawn.
3d4d0 57 68 79 3f 3f 3f 0a 20 20 20 20 73 65 74 20 6d Why???. set m
3d4e0 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 enu [$mainframe
3d4f0 67 65 74 6d 65 6e 75 20 61 63 74 69 76 65 63 6f getmenu activeco
3d500 6e 66 69 67 75 72 61 74 69 6f 6e 5d 0a 20 20 20 nfiguration].
3d510 20 63 61 74 63 68 20 7b 20 24 6d 65 6e 75 20 63 catch { $menu c
3d520 6f 6e 66 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 onf -postcommand
3d530 20 22 24 6d 65 6e 75 20 63 6f 6e 66 20 2d 73 65 "$menu conf -se
3d540 6c 65 63 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 22 lectcolor black"
3d550 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 }.}..proc RamDe
3d560 62 75 67 67 65 72 3a 3a 58 4d 4c 49 6e 64 65 6e bugger::XMLInden
3d570 74 20 7b 20 7b 20 6e 6f 6e 65 20 22 22 20 7d 20 t { { none "" }
3d580 7b 20 68 74 6d 6c 20 30 20 7d 20 7d 20 7b 0a 20 { html 0 } } {.
3d590 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
3d5a0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 75 . variable cu
3d5b0 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 rrentfileIsModif
3d5c0 69 65 64 0a 20 20 20 20 0a 20 20 20 20 73 65 74 ied. . set
3d5d0 20 64 61 74 61 20 5b 24 74 65 78 74 20 67 65 74 data [$text get
3d5e0 20 31 2e 30 20 65 6e 64 2d 31 63 5d 0a 20 20 20 1.0 end-1c].
3d5f0 20 0a 20 20 20 20 69 66 20 7b 20 24 6e 6f 6e 65 . if { $none
3d600 20 65 71 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 eq "" } {..set
3d610 69 6e 64 65 6e 74 5f 73 70 61 63 65 73 20 32 0a indent_spaces 2.
3d620 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
3d630 74 20 69 6e 64 65 6e 74 5f 73 70 61 63 65 73 20 t indent_spaces
3d640 24 6e 6f 6e 65 0a 20 20 20 20 7d 0a 20 20 20 20 $none. }.
3d650 0a 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e . if { [strin
3d660 67 20 69 73 20 69 6e 74 65 67 65 72 20 2d 73 74 g is integer -st
3d670 72 69 63 74 20 24 69 6e 64 65 6e 74 5f 73 70 61 rict $indent_spa
3d680 63 65 73 5d 20 7d 20 7b 0a 09 52 65 69 6e 73 74 ces] } {..Reinst
3d690 72 75 6d 65 6e 74 43 75 72 72 65 6e 74 46 69 6c rumentCurrentFil
3d6a0 65 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 e..set err [catc
3d6b0 68 20 7b 20 52 61 6d 44 65 62 75 67 67 65 72 49 h { RamDebuggerI
3d6c0 6e 73 74 72 75 6d 65 6e 74 65 72 44 6f 57 6f 72 nstrumenterDoWor
3d6d0 6b 46 6f 72 58 4d 4c 20 24 64 61 74 61 20 69 6e kForXML $data in
3d6e0 66 6f 20 30 20 30 20 31 20 24 69 6e 64 65 6e 74 fo 0 0 1 $indent
3d6f0 5f 73 70 61 63 65 73 20 7d 20 72 65 74 5d 0a 09 _spaces } ret]..
3d700 69 66 20 7b 20 21 24 65 72 72 20 7d 20 7b 0a 09 if { !$err } {..
3d710 20 20 20 20 73 65 74 20 63 75 72 72 65 6e 74 66 set currentf
3d720 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 5f 73 61 ileIsModified_sa
3d730 76 65 20 24 63 75 72 72 65 6e 74 66 69 6c 65 49 ve $currentfileI
3d740 73 4d 6f 64 69 66 69 65 64 0a 09 20 20 20 20 0a sModified.. .
3d750 09 20 20 20 20 73 65 74 20 6f 6c 64 53 65 70 61 . set oldSepa
3d760 72 61 74 6f 72 20 5b 24 74 65 78 74 20 63 67 65 rator [$text cge
3d770 74 20 2d 61 75 74 6f 73 65 70 61 72 61 74 6f 72 t -autoseparator
3d780 73 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 6c s].. if { $ol
3d790 64 53 65 70 61 72 61 74 6f 72 20 7d 20 7b 20 24 dSeparator } { $
3d7a0 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d text configure -
3d7b0 61 75 74 6f 73 65 70 61 72 61 74 6f 72 73 20 30 autoseparators 0
3d7c0 20 7d 0a 09 20 20 20 20 24 74 65 78 74 20 65 64 }.. $text ed
3d7d0 69 74 20 73 65 70 61 72 61 74 6f 72 0a 0a 09 20 it separator...
3d7e0 20 20 20 24 74 65 78 74 20 64 65 6c 65 74 65 20 $text delete
3d7f0 31 2e 30 20 65 6e 64 0a 09 20 20 20 20 24 74 65 1.0 end.. $te
3d800 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20 24 72 xt insert end $r
3d810 65 74 0a 09 20 20 20 20 0a 09 20 20 20 20 24 74 et.. .. $t
3d820 65 78 74 20 65 64 69 74 20 73 65 70 61 72 61 74 ext edit separat
3d830 6f 72 0a 09 20 20 20 20 69 66 20 7b 20 24 6f 6c or.. if { $ol
3d840 64 53 65 70 61 72 61 74 6f 72 20 7d 20 7b 20 24 dSeparator } { $
3d850 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d text configure -
3d860 61 75 74 6f 73 65 70 61 72 61 74 6f 72 73 20 31 autoseparators 1
3d870 20 7d 0a 0a 09 20 20 20 20 69 66 20 7b 20 24 63 }... if { $c
3d880 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 urrentfileIsModi
3d890 66 69 65 64 20 26 26 20 21 24 63 75 72 72 65 6e fied && !$curren
3d8a0 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 5f tfileIsModified_
3d8b0 73 61 76 65 20 7d 20 7b 0a 09 09 4d 61 72 6b 41 save } {...MarkA
3d8c0 73 4e 6f 74 4d 6f 64 69 66 69 65 64 0a 09 20 20 sNotModified..
3d8d0 20 20 7d 0a 09 20 20 20 20 72 65 74 75 72 6e 0a }.. return.
3d8e0 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 .}. }. set
3d8f0 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 70 61 err [catch { pa
3d900 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 64 ckage require td
3d910 6f 6d 20 7d 5d 0a 20 20 20 20 69 66 20 7b 20 24 om }]. if { $
3d920 65 72 72 20 7d 20 7b 0a 09 74 6b 5f 6d 65 73 73 err } {..tk_mess
3d930 61 67 65 42 6f 78 20 2d 6d 65 73 73 61 67 65 20 ageBox -message
3d940 5b 5f 20 22 49 74 20 69 73 20 6e 65 63 65 73 73 [_ "It is necess
3d950 61 72 79 20 74 6f 20 69 6e 73 74 61 6c 6c 20 70 ary to install p
3d960 61 63 6b 61 67 65 20 27 74 64 6f 6d 27 22 5d 0a ackage 'tdom'"].
3d970 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 .return. }.
3d980 20 20 73 65 74 20 68 65 61 64 65 72 20 22 22 0a set header "".
3d990 20 20 20 20 72 65 67 65 78 70 20 7b 5e 28 2e 2a regexp {^(.*
3d9a0 3f 29 3c 5c 73 2a 3f 28 3f 21 5c 3f 7c 21 29 7d ?)<\s*?(?!\?|!)}
3d9b0 20 24 64 61 74 61 20 7b 7d 20 68 65 61 64 65 72 $data {} header
3d9c0 0a 20 20 20 20 69 66 20 7b 20 21 24 68 74 6d 6c . if { !$html
3d9d0 20 7d 20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 } {..set err [c
3d9e0 61 74 63 68 20 7b 20 64 6f 6d 20 70 61 72 73 65 atch { dom parse
3d9f0 20 2d 6b 65 65 70 45 6d 70 74 69 65 73 20 24 64 -keepEmpties $d
3da00 61 74 61 20 64 6f 63 20 7d 20 65 72 72 73 74 72 ata doc } errstr
3da10 69 6e 67 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 ing]. } else
3da20 7b 0a 09 73 65 74 20 65 72 72 20 5b 63 61 74 63 {..set err [catc
3da30 68 20 7b 20 64 6f 6d 20 70 61 72 73 65 20 2d 6b h { dom parse -k
3da40 65 65 70 45 6d 70 74 69 65 73 20 2d 68 74 6d 6c eepEmpties -html
3da50 20 24 64 61 74 61 20 64 6f 63 20 7d 20 65 72 72 $data doc } err
3da60 73 74 72 69 6e 67 5d 0a 20 20 20 20 7d 0a 20 20 string]. }.
3da70 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a if { $err } {.
3da80 09 74 6b 5f 6d 65 73 73 61 67 65 42 6f 78 20 2d .tk_messageBox -
3da90 6d 65 73 73 61 67 65 20 5b 5f 20 22 58 4d 4c 20 message [_ "XML
3daa0 69 6e 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 63 in file is not c
3dab0 6f 72 72 65 63 74 20 28 25 73 29 22 20 24 65 72 orrect (%s)" $er
3dac0 72 73 74 72 69 6e 67 5d 0a 09 72 65 74 75 72 6e rstring]..return
3dad0 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 . }. set c
3dae0 75 72 72 65 6e 74 66 69 6c 65 49 73 4d 6f 64 69 urrentfileIsModi
3daf0 66 69 65 64 5f 73 61 76 65 20 24 63 75 72 72 65 fied_save $curre
3db00 6e 74 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 ntfileIsModified
3db10 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 6f 6c . . set ol
3db20 64 53 65 70 61 72 61 74 6f 72 20 5b 24 74 65 78 dSeparator [$tex
3db30 74 20 63 67 65 74 20 2d 61 75 74 6f 73 65 70 61 t cget -autosepa
3db40 72 61 74 6f 72 73 5d 0a 20 20 20 20 69 66 20 7b rators]. if {
3db50 20 24 6f 6c 64 53 65 70 61 72 61 74 6f 72 20 7d $oldSeparator }
3db60 20 7b 20 24 74 65 78 74 20 63 6f 6e 66 69 67 75 { $text configu
3db70 72 65 20 2d 61 75 74 6f 73 65 70 61 72 61 74 6f re -autoseparato
3db80 72 73 20 30 20 7d 0a 20 20 20 20 24 74 65 78 74 rs 0 }. $text
3db90 20 65 64 69 74 20 73 65 70 61 72 61 74 6f 72 0a edit separator.
3dba0 0a 20 20 20 20 24 74 65 78 74 20 64 65 6c 65 74 . $text delet
3dbb0 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 24 74 e 1.0 end. $t
3dbc0 65 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20 24 ext insert end $
3dbd0 68 65 61 64 65 72 0a 20 20 20 20 73 65 74 20 72 header. set r
3dbe0 6f 6f 74 20 5b 24 64 6f 63 20 64 6f 63 75 6d 65 oot [$doc docume
3dbf0 6e 74 45 6c 65 6d 65 6e 74 5d 0a 20 20 20 20 69 ntElement]. i
3dc00 66 20 7b 20 24 6e 6f 6e 65 20 65 71 20 22 22 20 f { $none eq ""
3dc10 7d 20 7b 0a 09 24 74 65 78 74 20 69 6e 73 65 72 } {..$text inser
3dc20 74 20 65 6e 64 20 5b 24 72 6f 6f 74 20 61 73 58 t end [$root asX
3dc30 4d 4c 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b ML]. } else {
3dc40 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 65 ..$text insert e
3dc50 6e 64 20 5b 24 72 6f 6f 74 20 61 73 58 4d 4c 20 nd [$root asXML
3dc60 2d 69 6e 64 65 6e 74 20 24 6e 6f 6e 65 5d 0a 20 -indent $none].
3dc70 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 24 74 }. . $t
3dc80 65 78 74 20 65 64 69 74 20 73 65 70 61 72 61 74 ext edit separat
3dc90 6f 72 0a 20 20 20 20 69 66 20 7b 20 24 6f 6c 64 or. if { $old
3dca0 53 65 70 61 72 61 74 6f 72 20 7d 20 7b 20 24 74 Separator } { $t
3dcb0 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 61 ext configure -a
3dcc0 75 74 6f 73 65 70 61 72 61 74 6f 72 73 20 31 20 utoseparators 1
3dcd0 7d 0a 0a 20 20 20 20 52 65 69 6e 73 74 72 75 6d }.. Reinstrum
3dce0 65 6e 74 43 75 72 72 65 6e 74 46 69 6c 65 0a 20 entCurrentFile.
3dcf0 20 20 20 69 66 20 7b 20 24 63 75 72 72 65 6e 74 if { $current
3dd00 66 69 6c 65 49 73 4d 6f 64 69 66 69 65 64 20 26 fileIsModified &
3dd10 26 20 21 24 63 75 72 72 65 6e 74 66 69 6c 65 49 & !$currentfileI
3dd20 73 4d 6f 64 69 66 69 65 64 5f 73 61 76 65 20 7d sModified_save }
3dd30 20 7b 0a 09 4d 61 72 6b 41 73 4e 6f 74 4d 6f 64 {..MarkAsNotMod
3dd40 69 66 69 65 64 0a 20 20 20 20 7d 0a 7d 0a 0a 69 ified. }.}..i
3dd50 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e f { [llength [in
3dd60 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6c 72 65 70 fo commands lrep
3dd70 65 61 74 5d 5d 20 3d 3d 20 30 20 7d 20 7b 0a 20 eat]] == 0 } {.
3dd80 20 20 20 70 72 6f 63 20 6c 72 65 70 65 61 74 20 proc lrepeat
3dd90 7b 20 63 6f 75 6e 74 20 65 6c 65 6d 65 6e 74 20 { count element
3dda0 7d 20 7b 0a 09 73 65 74 20 72 65 74 76 61 6c 20 } {..set retval
3ddb0 22 22 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 ""..for { set i
3ddc0 30 20 7d 20 7b 20 24 69 20 3c 20 24 63 6f 75 6e 0 } { $i < $coun
3ddd0 74 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b t } { incr i } {
3dde0 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 .. lappend re
3ddf0 74 76 61 6c 20 24 65 6c 65 6d 65 6e 74 0a 09 7d tval $element..}
3de00 0a 09 72 65 74 75 72 6e 20 24 72 65 74 76 61 6c ..return $retval
3de10 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
3de20 61 6d 44 65 62 75 67 67 65 72 3a 3a 4d 61 72 6b amDebugger::Mark
3de30 65 72 43 6f 6e 74 65 78 74 75 61 6c 53 75 62 6d erContextualSubm
3de40 65 6e 75 44 6f 20 7b 20 6c 69 6e 65 20 77 68 61 enuDo { line wha
3de50 74 20 7d 20 7b 0a 0a 20 20 20 20 73 77 69 74 63 t } {.. switc
3de60 68 20 24 77 68 61 74 20 7b 0a 09 73 65 74 20 7b h $what {..set {
3de70 0a 09 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 .. if { [catc
3de80 68 20 5b 6c 69 73 74 20 72 62 72 65 61 6b 20 24 h [list rbreak $
3de90 6c 69 6e 65 5d 20 65 72 72 6f 72 73 74 72 69 6e line] errorstrin
3dea0 67 5d 20 7d 20 7b 0a 09 09 57 61 69 74 53 74 61 g] } {...WaitSta
3deb0 74 65 20 30 0a 09 09 57 61 72 6e 57 69 6e 20 24 te 0...WarnWin $
3dec0 65 72 72 6f 72 73 74 72 69 6e 67 0a 09 09 72 65 errorstring...re
3ded0 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 turn.. }..
3dee0 20 55 70 64 61 74 65 41 72 72 6f 77 41 6e 64 42 UpdateArrowAndB
3def0 72 65 61 6b 20 24 6c 69 6e 65 20 31 20 22 22 0a reak $line 1 "".
3df00 09 7d 0a 09 63 6c 65 61 72 20 7b 0a 09 20 20 20 .}..clear {..
3df10 20 66 6f 72 65 61 63 68 20 6e 75 6d 20 5b 72 69 foreach num [ri
3df20 6e 66 6f 20 24 6c 69 6e 65 5d 20 7b 0a 09 09 72 nfo $line] {...r
3df30 64 65 6c 20 24 6e 75 6d 0a 09 20 20 20 20 7d 0a del $num.. }.
3df40 09 20 20 20 20 55 70 64 61 74 65 41 72 72 6f 77 . UpdateArrow
3df50 41 6e 64 42 72 65 61 6b 20 24 6c 69 6e 65 20 30 AndBreak $line 0
3df60 20 22 22 0a 09 7d 0a 09 65 6e 61 62 6c 65 64 69 ""..}..enabledi
3df70 73 61 62 6c 65 20 7b 0a 09 20 20 20 20 66 6f 72 sable {.. for
3df80 65 61 63 68 20 6e 75 6d 20 5b 72 69 6e 66 6f 20 each num [rinfo
3df90 24 6c 69 6e 65 5d 20 7b 0a 09 09 72 65 6e 61 62 $line] {...renab
3dfa0 6c 65 64 69 73 61 62 6c 65 20 24 6e 75 6d 0a 09 ledisable $num..
3dfb0 20 20 20 20 7d 0a 09 20 20 20 20 55 70 64 61 74 }.. Updat
3dfc0 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 24 eArrowAndBreak $
3dfd0 6c 69 6e 65 20 22 22 20 22 22 0a 09 7d 0a 09 63 line "" ""..}..c
3dfe0 6c 65 61 72 63 6f 6e 64 20 7b 0a 09 20 20 20 20 learcond {..
3dff0 66 6f 72 65 61 63 68 20 6e 75 6d 20 5b 72 69 6e foreach num [rin
3e000 66 6f 20 24 6c 69 6e 65 5d 20 7b 0a 09 09 72 63 fo $line] {...rc
3e010 6f 6e 64 20 24 6e 75 6d 20 22 22 0a 09 20 20 20 ond $num ""..
3e020 20 7d 0a 09 7d 0a 09 77 69 6e 64 6f 77 20 7b 0a }..}..window {.
3e030 09 20 20 20 20 44 69 73 70 6c 61 79 42 72 65 61 . DisplayBrea
3e040 6b 70 6f 69 6e 74 73 57 69 6e 64 6f 77 0a 09 7d kpointsWindow..}
3e050 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
3e060 61 6d 44 65 62 75 67 67 65 72 3a 3a 73 65 74 5f amDebugger::set_
3e070 62 72 65 61 6b 70 6f 69 6e 74 20 7b 20 78 20 79 breakpoint { x y
3e080 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
3e090 65 20 74 65 78 74 0a 0a 20 20 20 20 73 65 74 20 e text.. set
3e0a0 6c 69 6e 65 20 5b 73 63 61 6e 20 5b 24 74 65 78 line [scan [$tex
3e0b0 74 20 69 6e 64 65 78 20 40 30 2c 24 79 5d 20 25 t index @0,$y] %
3e0c0 64 5d 0a 20 20 20 20 69 66 20 7b 20 5b 72 69 6e d]. if { [rin
3e0d0 66 6f 20 24 6c 69 6e 65 5d 20 21 3d 20 22 22 20 fo $line] != ""
3e0e0 7d 20 7b 0a 09 73 65 74 20 68 61 73 62 72 65 61 } {..set hasbrea
3e0f0 6b 20 31 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b k 1. } else {
3e100 20 73 65 74 20 68 61 73 62 72 65 61 6b 20 30 20 set hasbreak 0
3e110 7d 0a 0a 20 20 20 20 69 66 20 7b 20 24 68 61 73 }.. if { $has
3e120 62 72 65 61 6b 20 7d 20 7b 0a 09 73 65 74 20 68 break } {..set h
3e130 61 73 62 72 65 61 6b 20 30 0a 09 66 6f 72 65 61 asbreak 0..forea
3e140 63 68 20 6e 75 6d 20 5b 72 69 6e 66 6f 20 24 6c ch num [rinfo $l
3e150 69 6e 65 5d 20 7b 0a 09 20 20 20 20 72 64 65 6c ine] {.. rdel
3e160 20 24 6e 75 6d 0a 09 7d 0a 20 20 20 20 7d 20 65 $num..}. } e
3e170 6c 73 65 20 7b 0a 09 73 65 74 20 68 61 73 62 72 lse {..set hasbr
3e180 65 61 6b 20 31 0a 09 69 66 20 7b 20 5b 63 61 74 eak 1..if { [cat
3e190 63 68 20 5b 6c 69 73 74 20 72 62 72 65 61 6b 20 ch [list rbreak
3e1a0 24 6c 69 6e 65 5d 20 65 72 72 6f 72 73 74 72 69 $line] errorstri
3e1b0 6e 67 5d 20 7d 20 7b 0a 09 20 20 20 20 57 61 69 ng] } {.. Wai
3e1c0 74 53 74 61 74 65 20 30 0a 09 20 20 20 20 57 61 tState 0.. Wa
3e1d0 72 6e 57 69 6e 20 24 65 72 72 6f 72 73 74 72 69 rnWin $errorstri
3e1e0 6e 67 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 ng.. return..
3e1f0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 55 70 64 61 }. }. Upda
3e200 74 65 41 72 72 6f 77 41 6e 64 42 72 65 61 6b 20 teArrowAndBreak
3e210 24 6c 69 6e 65 20 24 68 61 73 62 72 65 61 6b 20 $line $hasbreak
3e220 22 22 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 "".}..proc RamDe
3e230 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 6f bugger::MarkerCo
3e240 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 20 ntextualSubmenu
3e250 7b 20 77 20 78 20 79 20 58 20 59 20 7d 20 7b 0a { w x y X Y } {.
3e260 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 variable tex
3e270 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d t. variable m
3e280 61 72 6b 65 72 0a 20 20 20 20 76 61 72 69 61 62 arker. variab
3e290 6c 65 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 le options..
3e2a0 73 65 74 20 6c 69 6e 65 20 5b 73 63 61 6e 20 5b set line [scan [
3e2b0 24 74 65 78 74 20 69 6e 64 65 78 20 40 30 2c 24 $text index @0,$
3e2c0 79 5d 20 25 64 5d 0a 20 20 20 20 73 65 74 20 6e y] %d]. set n
3e2d0 75 6d 20 2d 31 0a 20 20 20 20 66 6f 72 65 61 63 um -1. foreac
3e2e0 68 20 22 6e 75 6d 20 65 6e 64 69 73 20 2d 20 2d h "num endis - -
3e2f0 20 63 6f 6e 64 22 20 5b 6c 69 6e 64 65 78 20 5b cond" [lindex [
3e300 72 69 6e 66 6f 20 2d 66 75 6c 6c 20 24 6c 69 6e rinfo -full $lin
3e310 65 5d 20 30 5d 20 62 72 65 61 6b 0a 0a 20 20 20 e] 0] break..
3e320 20 73 65 74 20 6d 65 6e 75 20 24 77 2e 6d 65 6e set menu $w.men
3e330 75 0a 20 20 20 20 63 61 74 63 68 20 7b 20 64 65 u. catch { de
3e340 73 74 72 6f 79 20 24 6d 65 6e 75 20 7d 0a 20 20 stroy $menu }.
3e350 20 20 6d 65 6e 75 20 24 6d 65 6e 75 20 2d 74 65 menu $menu -te
3e360 61 72 6f 66 66 20 30 0a 0a 20 20 20 20 69 66 20 aroff 0.. if
3e370 7b 20 24 6e 75 6d 20 3d 3d 20 2d 31 20 7d 20 7b { $num == -1 } {
3e380 0a 09 24 6d 65 6e 75 20 61 64 64 20 63 6f 6d 6d ..$menu add comm
3e390 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 53 and -label [_ "S
3e3a0 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20 et breakpoint"]
3e3b0 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 20 -command \..
3e3c0 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
3e3d0 72 3a 3a 4d 61 72 6b 65 72 43 6f 6e 74 65 78 74 r::MarkerContext
3e3e0 75 61 6c 53 75 62 6d 65 6e 75 44 6f 20 24 6c 69 ualSubmenuDo $li
3e3f0 6e 65 20 73 65 74 5d 0a 20 20 20 20 7d 20 65 6c ne set]. } el
3e400 73 65 20 7b 0a 09 24 6d 65 6e 75 20 61 64 64 20 se {..$menu add
3e410 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b command -label [
3e420 5f 20 22 43 6c 65 61 72 20 62 72 65 61 6b 70 6f _ "Clear breakpo
3e430 69 6e 74 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c int"] -command \
3e440 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 61 6d 44 .. [list RamD
3e450 65 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 ebugger::MarkerC
3e460 6f 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 ontextualSubmenu
3e470 44 6f 20 24 6c 69 6e 65 20 63 6c 65 61 72 5d 0a Do $line clear].
3e480 09 69 66 20 7b 20 24 65 6e 64 69 73 20 7d 20 7b .if { $endis } {
3e490 0a 09 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 .. $menu add
3e4a0 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b command -label [
3e4b0 5f 20 22 44 69 73 61 62 6c 65 20 62 72 65 61 6b _ "Disable break
3e4c0 70 6f 69 6e 74 22 5d 20 2d 63 6f 6d 6d 61 6e 64 point"] -command
3e4d0 20 5c 0a 09 09 5b 6c 69 73 74 20 52 61 6d 44 65 \...[list RamDe
3e4e0 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 6f bugger::MarkerCo
3e4f0 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 44 ntextualSubmenuD
3e500 6f 20 24 6c 69 6e 65 20 65 6e 61 62 6c 65 64 69 o $line enabledi
3e510 73 61 62 6c 65 5d 0a 09 7d 20 65 6c 73 65 20 7b sable]..} else {
3e520 0a 09 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 .. $menu add
3e530 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b command -label [
3e540 5f 20 22 45 6e 61 62 6c 65 20 62 72 65 61 6b 70 _ "Enable breakp
3e550 6f 69 6e 74 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 oint"] -command
3e560 5c 0a 09 09 5b 6c 69 73 74 20 52 61 6d 44 65 62 \...[list RamDeb
3e570 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 6f 6e ugger::MarkerCon
3e580 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 44 6f textualSubmenuDo
3e590 20 24 6c 69 6e 65 20 65 6e 61 62 6c 65 64 69 73 $line enabledis
3e5a0 61 62 6c 65 5d 0a 09 7d 0a 09 69 66 20 7b 20 24 able]..}..if { $
3e5b0 63 6f 6e 64 20 21 3d 20 22 22 20 7d 20 7b 0a 09 cond != "" } {..
3e5c0 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f $menu add co
3e5d0 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 mmand -label [_
3e5e0 22 43 6c 65 61 72 20 63 6f 6e 64 69 74 69 6f 6e "Clear condition
3e5f0 3a 20 25 73 22 20 24 63 6f 6e 64 5d 20 2d 63 6f : %s" $cond] -co
3e600 6d 6d 61 6e 64 20 5c 0a 09 09 5b 6c 69 73 74 20 mmand \...[list
3e610 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4d 61 72 RamDebugger::Mar
3e620 6b 65 72 43 6f 6e 74 65 78 74 75 61 6c 53 75 62 kerContextualSub
3e630 6d 65 6e 75 44 6f 20 24 6c 69 6e 65 20 63 6c 65 menuDo $line cle
3e640 61 72 63 6f 6e 64 5d 0a 09 7d 0a 20 20 20 20 7d arcond]..}. }
3e650 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 . $menu add s
3e660 65 70 61 72 61 74 6f 72 0a 0a 20 20 20 20 73 65 eparator.. se
3e670 74 20 69 74 65 6d 20 5b 24 6d 61 72 6b 65 72 20 t item [$marker
3e680 66 69 6e 64 20 77 69 74 68 74 61 67 20 22 62 6f find withtag "bo
3e690 6f 6b 6d 61 72 6b 26 26 6c 24 6c 69 6e 65 22 5d okmark&&l$line"]
3e6a0 0a 0a 20 20 20 20 69 66 20 7b 20 24 69 74 65 6d .. if { $item
3e6b0 20 65 71 20 22 22 20 7d 20 7b 0a 09 24 6d 65 6e eq "" } {..$men
3e6c0 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c u add command -l
3e6d0 61 62 65 6c 20 5b 5f 20 22 53 61 76 65 20 70 6f abel [_ "Save po
3e6e0 73 69 74 69 6f 6e 22 5d 20 2d 63 6f 6d 6d 61 6e sition"] -comman
3e6f0 64 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 d \.. [list R
3e700 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69 amDebugger::Posi
3e710 74 69 6f 6e 73 53 74 61 63 6b 20 73 61 76 65 20 tionsStack save
3e720 24 74 65 78 74 20 24 6c 69 6e 65 5d 0a 20 20 20 $text $line].
3e730 20 7d 20 65 6c 73 65 20 7b 0a 09 24 6d 65 6e 75 } else {..$menu
3e740 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 add command -la
3e750 62 65 6c 20 5b 5f 20 22 43 6c 65 61 72 20 70 6f bel [_ "Clear po
3e760 73 69 74 69 6f 6e 22 5d 20 2d 63 6f 6d 6d 61 6e sition"] -comman
3e770 64 20 5c 0a 09 20 20 20 20 5b 6c 69 73 74 20 52 d \.. [list R
3e780 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69 amDebugger::Posi
3e790 74 69 6f 6e 73 53 74 61 63 6b 20 63 6c 65 61 6e tionsStack clean
3e7a0 20 24 74 65 78 74 20 24 6c 69 6e 65 5d 0a 20 20 $text $line].
3e7b0 20 20 7d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 }. $menu ad
3e7c0 64 20 73 65 70 61 72 61 74 6f 72 0a 20 20 20 20 d separator.
3e7d0 24 6d 65 6e 75 20 61 64 64 20 63 61 73 63 61 64 $menu add cascad
3e7e0 65 20 2d 6d 65 6e 75 20 24 6d 65 6e 75 2e 6d 20 e -menu $menu.m
3e7f0 2d 6c 61 62 65 6c 20 5b 5f 20 22 47 6f 20 74 6f -label [_ "Go to
3e800 20 70 6f 73 69 74 69 6f 6e 22 5d 0a 20 20 20 20 position"].
3e810 6d 65 6e 75 20 24 6d 65 6e 75 2e 6d 20 2d 74 65 menu $menu.m -te
3e820 61 72 6f 66 66 20 30 0a 0a 20 20 20 20 66 6f 72 aroff 0.. for
3e830 65 61 63 68 20 69 20 24 6f 70 74 69 6f 6e 73 28 each i $options(
3e840 73 61 76 65 64 5f 70 6f 73 69 74 69 6f 6e 73 5f saved_positions_
3e850 73 74 61 63 6b 29 20 7b 0a 09 66 6f 72 65 61 63 stack) {..foreac
3e860 68 20 22 66 69 6c 65 20 6c 69 6e 65 20 63 6f 6e h "file line con
3e870 74 65 78 74 22 20 24 69 20 62 72 65 61 6b 0a 09 text" $i break..
3e880 69 66 20 7b 20 24 63 6f 6e 74 65 78 74 20 6e 65 if { $context ne
3e890 20 22 22 20 7d 20 7b 20 73 65 74 20 63 6f 6e 74 "" } { set cont
3e8a0 65 78 74 20 22 2d 2d 20 24 63 6f 6e 74 65 78 74 ext "-- $context
3e8b0 22 20 7d 0a 09 73 65 74 20 74 78 74 20 22 5b 66 " }..set txt "[f
3e8c0 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d 3a ile tail $file]:
3e8d0 24 6c 69 6e 65 20 24 63 6f 6e 74 65 78 74 22 0a $line $context".
3e8e0 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6c 65 .if { [string le
3e8f0 6e 67 74 68 20 24 74 78 74 5d 20 3e 20 36 30 20 ngth $txt] > 60
3e900 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 74 78 74 } {.. set txt
3e910 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 [string range $
3e920 74 78 74 20 30 20 35 36 5d 2e 2e 2e 0a 09 7d 0a txt 0 56].....}.
3e930 09 24 6d 65 6e 75 2e 6d 20 61 64 64 20 63 6f 6d .$menu.m add com
3e940 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 24 74 78 74 mand -label $txt
3e950 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 20 20 20 -command \..
3e960 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
3e970 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74 61 er::PositionsSta
3e980 63 6b 20 67 6f 74 6f 20 24 74 65 78 74 20 24 6c ck goto $text $l
3e990 69 6e 65 20 24 66 69 6c 65 5d 0a 20 20 20 20 7d ine $file]. }
3e9a0 0a 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 .. $menu add
3e9b0 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b command -label [
3e9c0 5f 20 22 4c 61 73 74 20 50 6f 73 69 74 69 6f 6e _ "Last Position
3e9d0 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 22 "] -command \.."
3e9e0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 RamDebugger::Pos
3e9f0 69 74 69 6f 6e 73 53 74 61 63 6b 20 67 6f 22 0a itionsStack go".
3ea00 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 63 6f $menu add co
3ea10 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 mmand -label [_
3ea20 22 4c 61 73 74 20 50 6f 73 69 74 69 6f 6e 20 69 "Last Position i
3ea30 6e 20 66 69 6c 65 22 5d 20 2d 63 6f 6d 6d 61 6e n file"] -comman
3ea40 64 20 5c 0a 09 22 52 61 6d 44 65 62 75 67 67 65 d \.."RamDebugge
3ea50 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 74 61 63 r::PositionsStac
3ea60 6b 20 67 6f 5f 73 61 6d 65 5f 66 69 6c 65 22 0a k go_same_file".
3ea70 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 65 $menu add se
3ea80 70 61 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 6e parator. $men
3ea90 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c u add command -l
3eaa0 61 62 65 6c 20 5b 5f 20 22 50 6f 73 69 74 69 6f abel [_ "Positio
3eab0 6e 73 20 77 69 6e 64 6f 77 22 5d 20 2d 63 6f 6d ns window"] -com
3eac0 6d 61 6e 64 20 5c 0a 09 5b 6c 69 73 74 20 52 61 mand \..[list Ra
3ead0 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73 70 6c mDebugger::Displ
3eae0 61 79 50 6f 73 69 74 69 6f 6e 73 53 74 61 63 6b ayPositionsStack
3eaf0 20 20 2d 63 75 72 72 5f 74 65 78 74 20 24 74 65 -curr_text $te
3eb00 78 74 20 2d 6e 6f 77 6c 69 6e 65 20 24 6c 69 6e xt -nowline $lin
3eb10 65 5d 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 e]. $menu add
3eb20 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 command -label
3eb30 5b 5f 20 22 42 72 65 61 6b 70 6f 69 6e 74 73 20 [_ "Breakpoints
3eb40 77 69 6e 64 6f 77 22 5d 20 2d 63 6f 6d 6d 61 6e window"] -comman
3eb50 64 20 5c 0a 09 5b 6c 69 73 74 20 52 61 6d 44 65 d \..[list RamDe
3eb60 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 6f bugger::MarkerCo
3eb70 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 44 ntextualSubmenuD
3eb80 6f 20 24 6c 69 6e 65 20 77 69 6e 64 6f 77 5d 0a o $line window].
3eb90 0a 20 20 20 20 74 6b 5f 70 6f 70 75 70 20 24 6d . tk_popup $m
3eba0 65 6e 75 20 24 58 20 24 59 0a 7d 0a 0a 23 20 6f enu $X $Y.}..# o
3ebb0 6e 6c 79 20 66 6f 72 20 77 69 6e 64 6f 77 73 0a nly for windows.
3ebc0 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 proc RamDebugger
3ebd0 3a 3a 52 65 67 69 73 74 65 72 45 78 74 65 6e 73 ::RegisterExtens
3ebe0 69 6f 6e 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 ion {} {. var
3ebf0 69 61 62 6c 65 20 74 65 78 74 0a 0a 20 20 20 20 iable text..
3ec00 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
3ec10 72 65 67 69 73 74 72 79 0a 0a 20 20 20 20 73 65 registry.. se
3ec20 74 20 6b 65 79 28 31 29 20 7b 48 4b 45 59 5f 43 t key(1) {HKEY_C
3ec30 4c 41 53 53 45 53 5f 52 4f 4f 54 5c 2e 74 63 6c LASSES_ROOT\.tcl
3ec40 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 }.. if { [cat
3ec50 63 68 20 7b 72 65 67 69 73 74 72 79 20 67 65 74 ch {registry get
3ec60 20 24 6b 65 79 28 31 29 20 22 22 7d 20 76 61 6c $key(1) ""} val
3ec70 28 31 29 5d 20 7d 20 7b 0a 09 73 65 74 20 76 61 (1)] } {..set va
3ec80 6c 28 31 29 20 54 63 6c 46 69 6c 65 0a 20 20 20 l(1) TclFile.
3ec90 20 7d 0a 0a 20 20 20 20 73 65 74 20 6b 65 79 28 }.. set key(
3eca0 32 29 20 22 48 4b 45 59 5f 43 4c 41 53 53 45 53 2) "HKEY_CLASSES
3ecb0 5f 52 4f 4f 54 5c 5c 24 76 61 6c 28 31 29 22 0a _ROOT\\$val(1)".
3ecc0 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 63 68 . if { [catch
3ecd0 20 7b 72 65 67 69 73 74 72 79 20 67 65 74 20 24 {registry get $
3ece0 6b 65 79 28 32 29 20 22 22 7d 20 76 61 6c 28 32 key(2) ""} val(2
3ecf0 29 5d 20 7d 20 7b 0a 09 73 65 74 20 76 61 6c 28 )] } {..set val(
3ed00 32 29 20 54 43 4c 2d 54 4b 0a 20 20 20 20 7d 0a 2) TCL-TK. }.
3ed10 0a 20 20 20 20 73 65 74 20 6b 65 79 28 33 29 20 . set key(3)
3ed20 22 24 6b 65 79 28 32 29 5c 5c 73 68 65 6c 6c 5c "$key(2)\\shell\
3ed30 5c 52 61 6d 44 65 62 75 67 67 65 72 5c 5c 63 6f \RamDebugger\\co
3ed40 6d 6d 61 6e 64 22 0a 20 20 20 20 73 65 74 20 76 mmand". set v
3ed50 61 6c 28 33 29 20 22 5c 22 5b 66 69 6c 65 20 6e al(3) "\"[file n
3ed60 61 74 69 76 65 6e 61 6d 65 20 5b 69 6e 66 6f 20 ativename [info
3ed70 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 nameofexecutable
3ed80 5d 5d 5c 22 20 22 0a 20 20 20 20 69 66 20 7b 20 ]]\" ". if {
3ed90 21 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20 5b ![string equal [
3eda0 66 69 6c 65 20 74 61 69 6c 20 24 3a 3a 61 72 67 file tail $::arg
3edb0 76 30 5d 20 6d 61 69 6e 2e 74 63 6c 5d 20 7d 20 v0] main.tcl] }
3edc0 7b 0a 09 61 70 70 65 6e 64 20 76 61 6c 28 33 29 {..append val(3)
3edd0 20 22 5c 22 5b 66 69 6c 65 20 6e 61 74 69 76 65 "\"[file native
3ede0 6e 61 6d 65 20 24 3a 3a 61 72 67 76 30 5d 5c 22 name $::argv0]\"
3edf0 20 22 0a 20 20 20 20 7d 0a 20 20 20 20 61 70 70 ". }. app
3ee00 65 6e 64 20 76 61 6c 28 33 29 20 22 5c 22 25 31 end val(3) "\"%1
3ee10 5c 22 20 25 2a 22 0a 0a 20 20 20 20 66 6f 72 20 \" %*".. for
3ee20 7b 20 73 65 74 20 69 20 31 20 7d 20 7b 20 24 69 { set i 1 } { $i
3ee30 20 3c 3d 20 33 20 7d 20 7b 20 69 6e 63 72 20 69 <= 3 } { incr i
3ee40 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 63 61 74 63 } {..if { [catc
3ee50 68 20 7b 20 72 65 67 69 73 74 72 79 20 67 65 74 h { registry get
3ee60 20 24 6b 65 79 28 24 69 29 20 22 22 20 7d 20 72 $key($i) "" } r
3ee70 76 61 6c 28 24 69 29 5d 20 7d 20 7b 0a 09 20 20 val($i)] } {..
3ee80 20 20 73 65 74 20 72 76 61 6c 28 24 69 29 20 22 set rval($i) "
3ee90 22 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 "..}. }..
3eea0 69 66 20 7b 20 24 76 61 6c 28 31 29 20 65 71 20 if { $val(1) eq
3eeb0 24 72 76 61 6c 28 31 29 20 26 26 20 24 76 61 6c $rval(1) && $val
3eec0 28 32 29 20 65 71 20 24 72 76 61 6c 28 32 29 20 (2) eq $rval(2)
3eed0 26 26 20 24 76 61 6c 28 33 29 20 65 71 20 24 72 && $val(3) eq $r
3eee0 76 61 6c 28 33 29 20 7d 20 7b 0a 09 64 69 61 6c val(3) } {..dial
3eef0 6f 67 77 69 6e 5f 73 6e 69 74 20 24 74 65 78 74 ogwin_snit $text
3ef00 2e 5f 61 73 6b 20 2d 74 69 74 6c 65 20 5b 5f 20 ._ask -title [_
3ef10 22 55 6e 61 73 73 6f 63 69 61 74 65 20 65 78 74 "Unassociate ext
3ef20 65 6e 73 69 6f 6e 22 5d 20 2d 63 6c 61 73 73 20 ension"] -class
3ef30 24 3a 3a 63 6c 61 73 73 4e 61 6d 65 0a 09 73 65 $::className..se
3ef40 74 20 66 20 5b 24 74 65 78 74 2e 5f 61 73 6b 20 t f [$text._ask
3ef50 67 69 76 65 66 72 61 6d 65 5d 0a 09 6c 61 62 65 giveframe]..labe
3ef60 6c 20 24 66 2e 6c 31 20 2d 74 65 78 74 20 5b 5f l $f.l1 -text [_
3ef70 20 22 44 6f 20 79 6f 75 20 77 61 6e 74 20 74 6f "Do you want to
3ef80 20 75 6e 61 73 73 6f 63 69 61 74 65 20 63 6f 6d unassociate com
3ef90 6d 61 6e 64 20 27 52 61 6d 44 65 62 75 67 67 65 mand 'RamDebugge
3efa0 72 20 66 72 6f 6d 20 65 78 74 65 6e 73 69 6f 6e r from extension
3efb0 20 2e 74 63 6c 3f 22 5d 0a 09 73 65 74 20 73 6d .tcl?"]..set sm
3efc0 61 6c 6c 66 6f 6e 74 73 69 7a 65 20 5b 65 78 70 allfontsize [exp
3efd0 72 20 7b 5b 66 6f 6e 74 20 61 63 74 75 61 6c 20 r {[font actual
3efe0 5b 24 66 2e 6c 31 20 63 67 65 74 20 2d 66 6f 6e [$f.l1 cget -fon
3eff0 74 5d 20 2d 73 69 7a 65 5d 2d 31 7d 5d 0a 09 6c t] -size]-1}]..l
3f000 61 62 65 6c 20 24 66 2e 6c 32 20 2d 66 6f 6e 74 abel $f.l2 -font
3f010 20 22 2d 73 69 7a 65 20 24 73 6d 61 6c 6c 66 6f "-size $smallfo
3f020 6e 74 73 69 7a 65 22 20 2d 74 65 78 74 20 5b 5f ntsize" -text [_
3f030 20 22 4e 6f 74 65 3a 20 74 68 69 73 20 63 6f 6d "Note: this com
3f040 6d 61 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64 mand can be used
3f050 20 69 6e 20 74 68 65 20 57 69 6e 64 6f 77 73 5c in the Windows\
3f060 0a 09 20 20 20 20 20 20 65 78 70 6c 6f 72 65 72 .. explorer
3f070 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 63 6f by using the co
3f080 6e 74 65 78 74 75 61 6c 20 6d 65 6e 75 20 6f 76 ntextual menu ov
3f090 65 72 20 6f 6e 65 20 2e 74 63 6c 20 66 69 6c 65 er one .tcl file
3f0a0 22 20 5d 20 2d 77 72 61 70 6c 65 6e 67 74 68 20 " ] -wraplength
3f0b0 31 37 30 20 2d 6a 75 73 74 69 66 79 20 6c 65 66 170 -justify lef
3f0c0 74 0a 0a 09 67 72 69 64 20 24 66 2e 6c 31 20 2d t...grid $f.l1 -
3f0d0 73 74 69 63 6b 79 20 6e 77 20 2d 70 61 64 78 20 sticky nw -padx
3f0e0 35 20 2d 70 61 64 79 20 35 0a 09 67 72 69 64 20 5 -pady 5..grid
3f0f0 24 66 2e 6c 32 20 2d 73 74 69 63 6b 79 20 6e 77 $f.l2 -sticky nw
3f100 20 2d 70 61 64 78 20 35 20 2d 70 61 64 79 20 35 -padx 5 -pady 5
3f110 0a 0a 09 73 65 74 20 61 63 74 69 6f 6e 20 5b 24 ...set action [$
3f120 74 65 78 74 2e 5f 61 73 6b 20 63 72 65 61 74 65 text._ask create
3f130 77 69 6e 64 6f 77 5d 0a 09 64 65 73 74 72 6f 79 window]..destroy
3f140 20 24 74 65 78 74 2e 5f 61 73 6b 0a 09 69 66 20 $text._ask..if
3f150 7b 20 24 61 63 74 69 6f 6e 20 3c 3d 20 30 20 7d { $action <= 0 }
3f160 20 7b 20 20 72 65 74 75 72 6e 20 7d 0a 0a 09 69 { return }...i
3f170 66 20 7b 20 5b 63 61 74 63 68 20 7b 0a 09 20 20 f { [catch {..
3f180 20 20 72 65 67 69 73 74 72 79 20 64 65 6c 65 74 registry delet
3f190 65 20 22 24 6b 65 79 28 32 29 5c 5c 73 68 65 6c e "$key(2)\\shel
3f1a0 6c 5c 5c 52 61 6d 44 65 62 75 67 67 65 72 22 0a l\\RamDebugger".
3f1b0 09 7d 5d 20 7d 20 7b 0a 09 20 20 20 20 74 6b 5f .}] } {.. tk_
3f1c0 6d 65 73 73 61 67 65 42 6f 78 20 2d 6d 65 73 73 messageBox -mess
3f1d0 61 67 65 20 5c 0a 09 09 5b 5f 20 22 45 72 72 6f age \...[_ "Erro
3f1e0 72 20 69 6e 20 74 68 65 20 6f 70 65 72 61 74 69 r in the operati
3f1f0 6f 6e 2e 20 43 68 65 63 6b 20 79 6f 75 72 20 70 on. Check your p
3f200 65 72 6d 69 73 73 69 6f 6e 73 20 61 6e 64 2f 6f ermissions and/o
3f210 72 20 65 6e 74 65 72 20 61 73 20 61 64 6d 69 6e r enter as admin
3f220 69 73 74 72 61 74 6f 72 22 5d 0a 09 7d 0a 09 72 istrator"]..}..r
3f230 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 eturn. }.
3f240 64 69 61 6c 6f 67 77 69 6e 5f 73 6e 69 74 20 24 dialogwin_snit $
3f250 74 65 78 74 2e 5f 61 73 6b 20 2d 74 69 74 6c 65 text._ask -title
3f260 20 5b 5f 20 22 41 73 73 6f 63 69 61 74 65 20 65 [_ "Associate e
3f270 78 74 65 6e 73 69 6f 6e 22 5d 20 2d 63 6c 61 73 xtension"] -clas
3f280 73 20 24 3a 3a 63 6c 61 73 73 4e 61 6d 65 0a 20 s $::className.
3f290 20 20 20 73 65 74 20 66 20 5b 24 74 65 78 74 2e set f [$text.
3f2a0 5f 61 73 6b 20 67 69 76 65 66 72 61 6d 65 5d 0a _ask giveframe].
3f2b0 20 20 20 20 6c 61 62 65 6c 20 24 66 2e 6c 31 20 label $f.l1
3f2c0 2d 74 65 78 74 20 5b 5f 20 22 44 6f 20 79 6f 75 -text [_ "Do you
3f2d0 20 77 61 6e 74 20 74 6f 20 61 73 73 6f 63 69 61 want to associa
3f2e0 74 65 20 63 6f 6d 6d 61 6e 64 20 27 52 61 6d 44 te command 'RamD
3f2f0 65 62 75 67 67 65 72 20 74 6f 20 65 78 74 65 6e ebugger to exten
3f300 73 69 6f 6e 20 2e 74 63 6c 3f 22 5d 0a 20 20 20 sion .tcl?"].
3f310 20 73 65 74 20 73 6d 61 6c 6c 66 6f 6e 74 73 69 set smallfontsi
3f320 7a 65 20 5b 65 78 70 72 20 7b 5b 66 6f 6e 74 20 ze [expr {[font
3f330 61 63 74 75 61 6c 20 5b 24 66 2e 6c 31 20 63 67 actual [$f.l1 cg
3f340 65 74 20 2d 66 6f 6e 74 5d 20 2d 73 69 7a 65 5d et -font] -size]
3f350 2d 31 7d 5d 0a 20 20 20 20 6c 61 62 65 6c 20 24 -1}]. label $
3f360 66 2e 6c 32 20 2d 66 6f 6e 74 20 22 2d 73 69 7a f.l2 -font "-siz
3f370 65 20 24 73 6d 61 6c 6c 66 6f 6e 74 73 69 7a 65 e $smallfontsize
3f380 22 20 2d 74 65 78 74 20 5b 5f 20 22 4e 6f 74 65 " -text [_ "Note
3f390 3a 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63 : this command c
3f3a0 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 74 68 an be used in th
3f3b0 65 20 57 69 6e 64 6f 77 73 5c 0a 09 20 20 20 65 e Windows\.. e
3f3c0 78 70 6c 6f 72 65 72 20 62 79 20 75 73 69 6e 67 xplorer by using
3f3d0 20 74 68 65 20 63 6f 6e 74 65 78 74 75 61 6c 20 the contextual
3f3e0 6d 65 6e 75 20 6f 76 65 72 20 6f 6e 65 20 2e 74 menu over one .t
3f3f0 63 6c 20 66 69 6c 65 22 5d 20 2d 77 72 61 70 6c cl file"] -wrapl
3f400 65 6e 67 74 68 20 31 37 30 20 2d 6a 75 73 74 69 ength 170 -justi
3f410 66 79 20 6c 65 66 74 0a 0a 20 20 20 20 67 72 69 fy left.. gri
3f420 64 20 24 66 2e 6c 31 20 2d 73 74 69 63 6b 79 20 d $f.l1 -sticky
3f430 6e 77 20 2d 70 61 64 78 20 35 20 2d 70 61 64 79 nw -padx 5 -pady
3f440 20 35 0a 20 20 20 20 67 72 69 64 20 24 66 2e 6c 5. grid $f.l
3f450 32 20 2d 73 74 69 63 6b 79 20 6e 77 20 2d 70 61 2 -sticky nw -pa
3f460 64 78 20 35 20 2d 70 61 64 79 20 35 0a 0a 20 20 dx 5 -pady 5..
3f470 20 20 73 65 74 20 61 63 74 69 6f 6e 20 5b 24 74 set action [$t
3f480 65 78 74 2e 5f 61 73 6b 20 63 72 65 61 74 65 77 ext._ask createw
3f490 69 6e 64 6f 77 5d 0a 20 20 20 20 64 65 73 74 72 indow]. destr
3f4a0 6f 79 20 24 74 65 78 74 2e 5f 61 73 6b 0a 20 20 oy $text._ask.
3f4b0 20 20 69 66 20 7b 20 24 61 63 74 69 6f 6e 20 3c if { $action <
3f4c0 3d 20 30 20 7d 20 7b 20 20 72 65 74 75 72 6e 20 = 0 } { return
3f4d0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 74 }.. if { [cat
3f4e0 63 68 20 7b 0a 09 66 6f 72 20 7b 20 73 65 74 20 ch {..for { set
3f4f0 69 20 31 20 7d 20 7b 20 24 69 20 3c 3d 20 33 20 i 1 } { $i <= 3
3f500 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 } { incr i } {..
3f510 20 20 20 20 72 65 67 69 73 74 72 79 20 73 65 74 registry set
3f520 20 24 6b 65 79 28 24 69 29 20 22 22 20 24 76 61 $key($i) "" $va
3f530 6c 28 24 69 29 0a 09 7d 0a 20 20 20 20 7d 5d 20 l($i)..}. }]
3f540 7d 20 7b 0a 09 74 6b 5f 6d 65 73 73 61 67 65 42 } {..tk_messageB
3f550 6f 78 20 2d 6d 65 73 73 61 67 65 20 5b 5f 20 22 ox -message [_ "
3f560 45 72 72 6f 72 20 69 6e 20 74 68 65 20 6f 70 65 Error in the ope
3f570 72 61 74 69 6f 6e 2e 20 43 68 65 63 6b 20 79 6f ration. Check yo
3f580 75 72 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 61 ur permissions a
3f590 6e 64 2f 6f 72 20 65 6e 74 65 72 20 61 73 20 61 nd/or enter as a
3f5a0 64 6d 69 6e 69 73 74 72 61 74 6f 72 22 5d 0a 20 dministrator"].
3f5b0 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d }.}..proc Ram
3f5c0 44 65 62 75 67 67 65 72 3a 3a 45 78 74 72 61 63 Debugger::Extrac
3f5d0 74 45 78 61 6d 70 6c 65 73 44 69 72 20 7b 7d 20 tExamplesDir {}
3f5e0 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 {. variable t
3f5f0 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 0a 20 opdir_external.
3f600 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 variable text
3f610 20 0a 0a 20 20 20 20 73 65 74 20 64 69 72 20 5b .. set dir [
3f620 74 6b 5f 63 68 6f 6f 73 65 44 69 72 65 63 74 6f tk_chooseDirecto
3f630 72 79 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 ry -initialdir $
3f640 74 6f 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 20 topdir_external
3f650 2d 70 61 72 65 6e 74 20 24 74 65 78 74 20 5c 0a -parent $text \.
3f660 09 09 20 2d 74 69 74 6c 65 20 5b 5f 20 22 53 65 .. -title [_ "Se
3f670 6c 65 63 74 20 64 69 72 65 63 74 6f 72 79 20 77 lect directory w
3f680 68 65 72 65 20 74 6f 20 65 78 74 72 61 63 74 20 here to extract
3f690 74 68 65 20 45 78 61 6d 70 6c 65 73 20 64 69 72 the Examples dir
3f6a0 65 63 74 6f 72 79 22 5d 5d 0a 20 20 20 20 69 66 ectory"]]. if
3f6b0 20 7b 20 24 64 69 72 20 65 71 20 22 22 20 7d 20 { $dir eq "" }
3f6c0 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 66 { return }. f
3f6d0 69 6c 65 20 63 6f 70 79 20 2d 66 6f 72 63 65 20 ile copy -force
3f6e0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 [file join $topd
3f6f0 69 72 5f 65 78 74 65 72 6e 61 6c 20 45 78 61 6d ir_external Exam
3f700 70 6c 65 73 5d 20 24 64 69 72 0a 20 20 20 20 53 ples] $dir. S
3f710 65 74 4d 65 73 73 61 67 65 20 5b 5f 20 22 43 6f etMessage [_ "Co
3f720 70 69 65 64 20 65 78 61 6d 70 6c 65 73 20 64 69 pied examples di
3f730 72 65 63 74 6f 72 79 20 69 6e 74 6f 20 64 69 72 rectory into dir
3f740 65 63 74 6f 72 79 20 27 25 73 27 22 20 24 64 69 ectory '%s'" $di
3f750 72 5d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 r].}..proc RamDe
3f760 62 75 67 67 65 72 3a 3a 53 68 6f 77 53 74 61 74 bugger::ShowStat
3f770 75 73 42 61 72 20 7b 7d 20 7b 0a 20 20 20 20 76 usBar {} {. v
3f780 61 72 69 61 62 6c 65 20 6d 61 69 6e 66 72 61 6d ariable mainfram
3f790 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f e. variable o
3f7a0 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 77 69 74 ptions.. swit
3f7b0 63 68 20 24 6f 70 74 69 6f 6e 73 28 73 68 6f 77 ch $options(show
3f7c0 73 74 61 74 75 73 62 61 72 29 20 7b 0a 09 31 20 statusbar) {..1
3f7d0 7b 0a 09 20 20 20 20 24 6d 61 69 6e 66 72 61 6d {.. $mainfram
3f7e0 65 20 73 68 6f 77 73 74 61 74 75 73 62 61 72 20 e showstatusbar
3f7f0 70 72 6f 67 72 65 73 73 69 6f 6e 0a 09 7d 0a 09 progression..}..
3f800 30 20 7b 0a 09 20 20 20 20 24 6d 61 69 6e 66 72 0 {.. $mainfr
3f810 61 6d 65 20 73 68 6f 77 73 74 61 74 75 73 62 61 ame showstatusba
3f820 72 20 6e 6f 6e 65 0a 09 7d 0a 20 20 20 20 7d 0a r none..}. }.
3f830 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
3f840 67 65 72 3a 3a 53 68 6f 77 42 75 74 74 6f 6e 73 ger::ShowButtons
3f850 54 6f 6f 6c 42 61 72 20 7b 7d 20 7b 0a 20 20 20 ToolBar {} {.
3f860 20 76 61 72 69 61 62 6c 65 20 6d 61 69 6e 66 72 variable mainfr
3f870 61 6d 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ame. variable
3f880 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 73 77 options.. sw
3f890 69 74 63 68 20 24 6f 70 74 69 6f 6e 73 28 73 68 itch $options(sh
3f8a0 6f 77 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 owbuttonstoolbar
3f8b0 29 20 7b 0a 09 31 20 7b 0a 09 20 20 20 20 24 6d ) {..1 {.. $m
3f8c0 61 69 6e 66 72 61 6d 65 20 73 68 6f 77 74 6f 6f ainframe showtoo
3f8d0 6c 62 61 72 20 30 20 31 0a 09 7d 0a 09 30 20 7b lbar 0 1..}..0 {
3f8e0 0a 09 20 20 20 20 24 6d 61 69 6e 66 72 61 6d 65 .. $mainframe
3f8f0 20 73 68 6f 77 74 6f 6f 6c 62 61 72 20 30 20 30 showtoolbar 0 0
3f900 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f ..}. }.}..pro
3f910 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 c RamDebugger::T
3f920 6f 6f 67 6c 65 54 6f 6f 6c 62 61 72 73 53 74 61 oogleToolbarsSta
3f930 74 75 73 62 61 72 20 7b 7d 20 7b 0a 20 20 20 20 tusbar {} {.
3f940 76 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 variable options
3f950 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 . variable te
3f960 78 74 0a 0a 20 20 20 20 73 65 74 20 77 20 5b 77 xt.. set w [w
3f970 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 74 info toplevel $t
3f980 65 78 74 5d 0a 0a 20 20 20 20 69 66 20 7b 24 6f ext].. if {$o
3f990 70 74 69 6f 6e 73 28 73 68 6f 77 62 75 74 74 6f ptions(showbutto
3f9a0 6e 73 74 6f 6f 6c 62 61 72 29 20 7d 20 7b 0a 09 nstoolbar) } {..
3f9b0 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 68 6f 77 set options(show
3f9c0 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 29 20 buttonstoolbar)
3f9d0 30 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 0..set options(s
3f9e0 68 6f 77 73 74 61 74 75 73 62 61 72 29 20 30 0a howstatusbar) 0.
3f9f0 09 23 24 77 20 63 6f 6e 66 69 67 75 72 65 20 2d .#$w configure -
3fa00 6d 65 6e 75 20 22 22 0a 09 67 72 69 64 20 72 65 menu ""..grid re
3fa10 6d 6f 76 65 20 5b 77 69 6e 66 6f 20 70 61 72 65 move [winfo pare
3fa20 6e 74 20 24 74 65 78 74 5d 2e 78 73 63 72 6f 6c nt $text].xscrol
3fa30 6c 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 l. } else {..
3fa40 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 68 6f 77 set options(show
3fa50 62 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 29 20 buttonstoolbar)
3fa60 31 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 73 1..set options(s
3fa70 68 6f 77 73 74 61 74 75 73 62 61 72 29 20 31 0a howstatusbar) 1.
3fa80 09 23 24 77 20 63 6f 6e 66 69 67 75 72 65 20 2d .#$w configure -
3fa90 6d 65 6e 75 20 24 77 2e 6d 65 6e 75 62 61 72 0a menu $w.menubar.
3faa0 09 67 72 69 64 20 5b 77 69 6e 66 6f 20 70 61 72 .grid [winfo par
3fab0 65 6e 74 20 24 74 65 78 74 5d 2e 78 73 63 72 6f ent $text].xscro
3fac0 6c 6c 0a 20 20 20 20 7d 0a 20 20 20 20 53 68 6f ll. }. Sho
3fad0 77 53 74 61 74 75 73 42 61 72 0a 20 20 20 20 53 wStatusBar. S
3fae0 68 6f 77 42 75 74 74 6f 6e 73 54 6f 6f 6c 42 61 howButtonsToolBa
3faf0 72 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 r.}..proc RamDeb
3fb00 75 67 67 65 72 3a 3a 53 70 6c 61 73 68 20 7b 7d ugger::Splash {}
3fb10 20 7b 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 {. . set
3fb20 77 20 5b 74 6f 70 6c 65 76 65 6c 20 2e 73 70 6c w [toplevel .spl
3fb30 61 73 68 5d 0a 20 20 20 20 24 77 20 63 6f 6e 66 ash]. $w conf
3fb40 69 67 75 72 65 20 2d 62 67 20 23 66 66 65 36 65 igure -bg #ffe6e
3fb50 36 20 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 6 -bd 1 -relief
3fb60 73 6f 6c 69 64 0a 20 20 20 20 77 6d 20 6f 76 65 solid. wm ove
3fb70 72 72 69 64 65 72 65 64 69 72 65 63 74 20 2e 73 rrideredirect .s
3fb80 70 6c 61 73 68 20 31 0a 20 20 20 20 73 65 74 20 plash 1. set
3fb90 77 69 20 5b 65 78 70 72 20 7b 69 6e 74 28 2e 35 wi [expr {int(.5
3fba0 2a 5b 77 69 6e 66 6f 20 73 63 72 65 65 6e 77 69 *[winfo screenwi
3fbb0 64 74 68 20 2e 5d 2d 2e 35 2a 32 32 30 29 7d 5d dth .]-.5*220)}]
3fbc0 0a 20 20 20 20 73 65 74 20 68 65 20 5b 65 78 70 . set he [exp
3fbd0 72 20 7b 69 6e 74 28 2e 35 2a 5b 77 69 6e 66 6f r {int(.5*[winfo
3fbe0 20 73 63 72 65 65 6e 68 65 69 67 68 74 20 2e 5d screenheight .]
3fbf0 2d 2e 35 2a 31 30 30 29 7d 5d 0a 20 20 20 20 77 -.5*100)}]. w
3fc00 6d 20 67 65 6f 6d 65 74 72 79 20 24 77 20 32 32 m geometry $w 22
3fc10 30 78 31 30 30 2b 24 77 69 2b 24 68 65 0a 0a 20 0x100+$wi+$he..
3fc20 20 20 20 6c 61 62 65 6c 20 24 77 2e 6c 20 2d 74 label $w.l -t
3fc30 65 78 74 20 52 61 6d 44 65 62 75 67 67 65 72 20 ext RamDebugger
3fc40 2d 66 6f 6e 74 20 22 2d 66 61 6d 69 6c 79 20 7b -font "-family {
3fc50 6e 65 77 20 63 65 6e 74 75 72 79 20 73 63 68 6f new century scho
3fc60 6f 6c 62 6f 6f 6b 7d 20 2d 73 69 7a 65 20 32 30 olbook} -size 20
3fc70 20 2d 77 65 69 67 68 74 20 62 6f 6c 64 22 20 5c -weight bold" \
3fc80 0a 09 2d 66 67 20 5c 23 64 33 35 31 33 64 20 2d ..-fg \#d3513d -
3fc90 62 67 20 23 66 66 65 36 65 36 20 2d 61 6e 63 68 bg #ffe6e6 -anch
3fca0 6f 72 20 63 65 6e 74 65 72 0a 20 20 20 20 0a 20 or center. .
3fcb0 20 20 20 6c 61 62 65 6c 20 24 77 2e 6c 32 20 2d label $w.l2 -
3fcc0 74 65 78 74 20 5b 5f 20 22 57 61 69 74 20 70 6c text [_ "Wait pl
3fcd0 65 61 73 65 2e 2e 2e 22 5d 20 2d 66 6f 6e 74 20 ease..."] -font
3fce0 22 2d 66 61 6d 69 6c 79 20 7b 6e 65 77 20 63 65 "-family {new ce
3fcf0 6e 74 75 72 79 20 73 63 68 6f 6f 6c 62 6f 6f 6b ntury schoolbook
3fd00 7d 20 2d 73 69 7a 65 20 31 32 22 20 5c 0a 09 2d } -size 12" \..-
3fd10 66 67 20 5c 23 64 33 35 31 33 64 20 2d 62 67 20 fg \#d3513d -bg
3fd20 23 66 66 65 36 65 36 20 2d 61 6e 63 68 6f 72 20 #ffe6e6 -anchor
3fd30 63 65 6e 74 65 72 0a 20 20 20 20 0a 20 20 20 20 center. .
3fd40 67 72 69 64 20 24 77 2e 6c 20 2d 70 61 64 78 20 grid $w.l -padx
3fd50 35 20 2d 70 61 64 79 20 35 0a 20 20 20 20 67 72 5 -pady 5. gr
3fd60 69 64 20 24 77 2e 6c 32 20 2d 70 61 64 78 20 35 id $w.l2 -padx 5
3fd70 20 2d 70 61 64 79 20 35 0a 20 20 20 20 67 72 69 -pady 5. gri
3fd80 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 d columnconfigur
3fd90 65 20 24 77 20 30 20 2d 77 65 69 67 68 74 20 31 e $w 0 -weight 1
3fda0 0a 20 20 20 20 75 70 64 61 74 65 0a 7d 0a 0a 70 . update.}..p
3fdb0 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
3fdc0 3a 6d 6f 76 65 5f 74 6f 6f 6c 62 61 72 20 7b 20 :move_toolbar {
3fdd0 77 68 61 74 20 62 75 74 74 6f 6e 20 74 6f 6f 6c what button tool
3fde0 62 61 72 20 78 20 7d 20 7b 0a 20 20 20 20 76 61 bar x } {. va
3fdf0 72 69 61 62 6c 65 20 6d 6f 76 65 5f 74 6f 6f 6c riable move_tool
3fe00 62 61 72 0a 0a 20 20 20 20 73 77 69 74 63 68 20 bar.. switch
3fe10 24 77 68 61 74 20 7b 0a 09 42 50 31 20 7b 0a 09 $what {..BP1 {..
3fe20 20 20 20 20 73 65 74 20 70 78 20 5b 64 69 63 74 set px [dict
3fe30 20 67 65 74 20 5b 70 6c 61 63 65 20 69 6e 66 6f get [place info
3fe40 20 24 74 6f 6f 6c 62 61 72 5d 20 2d 78 5d 0a 09 $toolbar] -x]..
3fe50 20 20 20 20 73 65 74 20 6d 6f 76 65 5f 74 6f 6f set move_too
3fe60 6c 62 61 72 20 5b 6c 69 73 74 20 30 20 24 78 20 lbar [list 0 $x
3fe70 24 70 78 5d 0a 09 7d 0a 09 42 4d 31 20 7b 0a 09 $px]..}..BM1 {..
3fe80 20 20 20 20 69 66 20 7b 20 21 5b 69 6e 66 6f 20 if { ![info
3fe90 65 78 69 73 74 73 20 6d 6f 76 65 5f 74 6f 6f 6c exists move_tool
3fea0 62 61 72 5d 20 7d 20 7b 20 72 65 74 75 72 6e 20 bar] } { return
3feb0 7d 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 24 }.. lassign $
3fec0 6d 6f 76 65 5f 74 6f 6f 6c 62 61 72 20 73 74 61 move_toolbar sta
3fed0 72 74 65 64 20 78 5f 6f 6c 64 20 70 78 5f 6f 6c rted x_old px_ol
3fee0 64 0a 09 20 20 20 20 69 66 20 7b 20 21 24 73 74 d.. if { !$st
3fef0 61 72 74 65 64 20 7d 20 7b 0a 09 09 69 66 20 7b arted } {...if {
3ff00 20 61 62 73 28 24 78 2d 24 78 5f 6f 6c 64 29 3c abs($x-$x_old)<
3ff10 3d 35 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a =5 } { return }.
3ff20 09 09 73 65 74 20 6d 6f 76 65 5f 74 6f 6f 6c 62 ..set move_toolb
3ff30 61 72 20 5b 6c 69 73 74 20 31 20 24 78 5f 6f 6c ar [list 1 $x_ol
3ff40 64 20 24 70 78 5f 6f 6c 64 5d 0a 09 20 20 20 20 d $px_old]..
3ff50 7d 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 24 }.. catch { $
3ff60 62 75 74 74 6f 6e 20 73 74 61 74 65 20 21 70 72 button state !pr
3ff70 65 73 73 65 64 20 7d 0a 0a 09 20 20 20 20 73 65 essed }... se
3ff80 74 20 70 78 20 5b 65 78 70 72 20 7b 24 70 78 5f t px [expr {$px_
3ff90 6f 6c 64 2b 24 78 2d 24 78 5f 6f 6c 64 7d 5d 0a old+$x-$x_old}].
3ffa0 09 20 20 20 20 73 65 74 20 77 69 64 74 68 54 20 . set widthT
3ffb0 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24 74 6f [winfo width $to
3ffc0 6f 6c 62 61 72 5d 0a 09 20 20 20 20 73 65 74 20 olbar].. set
3ffd0 77 69 64 74 68 50 20 5b 77 69 6e 66 6f 20 77 69 widthP [winfo wi
3ffe0 64 74 68 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e dth [winfo paren
3fff0 74 20 24 74 6f 6f 6c 62 61 72 5d 5d 0a 09 20 20 t $toolbar]]..
40000 20 20 69 66 20 7b 20 24 77 69 64 74 68 54 20 3c if { $widthT <
40010 20 24 77 69 64 74 68 50 7d 20 7b 20 72 65 74 75 $widthP} { retu
40020 72 6e 20 7d 0a 09 20 20 20 20 69 66 20 7b 20 24 rn }.. if { $
40030 70 78 2b 24 77 69 64 74 68 54 20 3c 20 24 77 69 px+$widthT < $wi
40040 64 74 68 50 20 7d 20 7b 0a 09 09 73 65 74 20 70 dthP } {...set p
40050 78 20 5b 65 78 70 72 20 7b 24 77 69 64 74 68 50 x [expr {$widthP
40060 2d 24 77 69 64 74 68 54 7d 5d 0a 09 20 20 20 20 -$widthT}]..
40070 7d 20 65 6c 73 65 69 66 20 7b 20 24 70 78 20 3e } elseif { $px >
40080 20 30 20 7d 20 7b 0a 09 09 73 65 74 20 70 78 20 0 } {...set px
40090 30 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 70 6c 0.. }.. pl
400a0 61 63 65 20 24 74 6f 6f 6c 62 61 72 20 2d 78 20 ace $toolbar -x
400b0 24 70 78 0a 09 7d 0a 09 6c 65 66 74 20 7b 0a 09 $px..}..left {..
400c0 20 20 20 20 70 6c 61 63 65 20 24 74 6f 6f 6c 62 place $toolb
400d0 61 72 20 2d 78 20 30 0a 09 7d 0a 09 72 69 67 68 ar -x 0..}..righ
400e0 74 20 7b 0a 09 20 20 20 20 73 65 74 20 77 69 64 t {.. set wid
400f0 74 68 54 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 thT [winfo width
40100 20 24 74 6f 6f 6c 62 61 72 5d 0a 09 20 20 20 20 $toolbar]..
40110 73 65 74 20 77 69 64 74 68 50 20 5b 77 69 6e 66 set widthP [winf
40120 6f 20 77 69 64 74 68 20 5b 77 69 6e 66 6f 20 70 o width [winfo p
40130 61 72 65 6e 74 20 24 74 6f 6f 6c 62 61 72 5d 5d arent $toolbar]]
40140 0a 09 20 20 20 20 69 66 20 7b 20 24 77 69 64 74 .. if { $widt
40150 68 54 20 3c 20 24 77 69 64 74 68 50 7d 20 7b 20 hT < $widthP} {
40160 72 65 74 75 72 6e 20 7d 0a 09 20 20 20 20 73 65 return }.. se
40170 74 20 70 78 20 5b 65 78 70 72 20 7b 24 77 69 64 t px [expr {$wid
40180 74 68 50 2d 24 77 69 64 74 68 54 7d 5d 0a 09 20 thP-$widthT}]..
40190 20 20 20 70 6c 61 63 65 20 24 74 6f 6f 6c 62 61 place $toolba
401a0 72 20 2d 78 20 24 70 78 0a 09 7d 0a 20 20 20 20 r -x $px..}.
401b0 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 }.}..proc RamDeb
401c0 75 67 67 65 72 3a 3a 45 6e 64 53 70 6c 61 73 68 ugger::EndSplash
401d0 20 7b 7d 20 7b 0a 20 20 20 20 64 65 73 74 72 6f {} {. destro
401e0 79 20 2e 73 70 6c 61 73 68 0a 7d 0a 0a 70 72 6f y .splash.}..pro
401f0 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 73 c RamDebugger::s
40200 65 74 5f 74 69 74 6c 65 20 7b 20 74 69 74 6c 65 et_title { title
40210 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
40220 65 20 69 73 77 69 6e 63 65 0a 20 20 20 20 76 61 e iswince. va
40230 72 69 61 62 6c 65 20 74 65 78 74 0a 20 20 20 20 riable text.
40240 0a 20 20 20 20 69 66 20 7b 20 21 24 69 73 77 69 . if { !$iswi
40250 6e 63 65 20 7d 20 7b 0a 09 77 6d 20 74 69 74 6c nce } {..wm titl
40260 65 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 e [winfo topleve
40270 6c 20 24 74 65 78 74 5d 20 22 52 61 6d 44 65 62 l $text] "RamDeb
40280 75 67 67 65 72 20 20 20 20 20 20 24 74 69 74 6c ugger $titl
40290 65 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a e". } else {.
402a0 09 77 6d 20 74 69 74 6c 65 20 5b 77 69 6e 66 6f .wm title [winfo
402b0 20 74 6f 70 6c 65 76 65 6c 20 24 74 65 78 74 5d toplevel $text]
402c0 20 22 52 20 2d 20 24 74 69 74 6c 65 22 0a 20 20 "R - $title".
402d0 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
402e0 65 62 75 67 67 65 72 3a 3a 54 6f 67 67 6c 65 54 ebugger::ToggleT
402f0 65 78 74 57 72 61 70 20 7b 7d 20 7b 0a 20 20 20 extWrap {} {.
40300 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 0a 20 variable text.
40310 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b 24 74 . if { [$t
40320 65 78 74 20 63 67 65 74 20 2d 77 72 61 70 5d 20 ext cget -wrap]
40330 65 71 20 22 6e 6f 6e 65 22 20 7d 20 7b 0a 09 24 eq "none" } {..$
40340 74 65 78 74 20 63 6f 6e 66 69 67 75 72 65 20 2d text configure -
40350 77 72 61 70 20 77 6f 72 64 20 20 2d 73 70 61 63 wrap word -spac
40360 69 6e 67 31 20 2d 35 0a 20 20 20 20 7d 20 65 6c ing1 -5. } el
40370 73 65 20 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 se {..$text conf
40380 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 igure -wrap none
40390 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 . }.}..proc R
403a0 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 69 74 amDebugger::Init
403b0 47 55 49 20 7b 20 7b 20 77 20 2e 67 75 69 20 7d GUI { { w .gui }
403c0 20 7b 20 67 65 6f 6d 65 74 72 79 20 22 22 20 7d { geometry "" }
403d0 20 7b 20 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f { ViewOnlyTextO
403e0 72 41 6c 6c 20 22 22 20 7d 20 7b 20 74 6f 70 6c rAll "" } { topl
403f0 65 76 65 6c 75 73 65 20 22 22 20 7d 20 7d 20 7b eveluse "" } } {
40400 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 . variable op
40410 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 tions. variab
40420 6c 65 20 6f 70 74 69 6f 6e 73 5f 64 65 66 0a 20 le options_def.
40430 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61 72 6b variable mark
40440 65 72 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 er. variable
40450 74 65 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c text. variabl
40460 65 20 6d 61 69 6e 66 72 61 6d 65 0a 20 20 20 20 e mainframe.
40470 76 61 72 69 61 62 6c 65 20 6c 69 73 74 62 6f 78 variable listbox
40480 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 . variable li
40490 73 74 62 6f 78 6c 61 62 65 6c 0a 20 20 20 20 76 stboxlabel. v
404a0 61 72 69 61 62 6c 65 20 6c 69 73 74 62 6f 78 6c ariable listboxl
404b0 61 62 65 6c 66 72 61 6d 65 0a 20 20 20 20 76 61 abelframe. va
404c0 72 69 61 62 6c 65 20 63 76 73 5f 69 6e 64 69 63 riable cvs_indic
404d0 61 74 6f 72 5f 66 72 61 6d 65 0a 20 20 20 20 76 ator_frame. v
404e0 61 72 69 61 62 6c 65 20 70 61 6e 65 32 69 6e 31 ariable pane2in1
404f0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 6d . variable im
40500 61 67 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c ages. variabl
40510 65 20 74 65 78 74 53 54 0a 20 20 20 20 76 61 72 e textST. var
40520 69 61 62 6c 65 20 74 65 78 74 4f 55 54 0a 20 20 iable textOUT.
40530 20 20 76 61 72 69 61 62 6c 65 20 74 65 78 74 43 variable textC
40540 4f 4d 50 0a 20 20 20 20 76 61 72 69 61 62 6c 65 OMP. variable
40550 20 62 72 65 61 6b 70 6f 69 6e 74 73 0a 20 20 20 breakpoints.
40560 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 variable topdir
40570 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f . variable to
40580 70 64 69 72 5f 65 78 74 65 72 6e 61 6c 0a 20 20 pdir_external.
40590 20 20 76 61 72 69 61 62 6c 65 20 54 69 6d 65 4d variable TimeM
405a0 65 61 73 75 72 65 44 61 74 61 0a 20 20 20 20 76 easureData. v
405b0 61 72 69 61 62 6c 65 20 64 65 62 75 67 67 65 72 ariable debugger
405c0 73 74 61 74 65 0a 20 20 20 20 76 61 72 69 61 62 state. variab
405d0 6c 65 20 64 65 73 63 6d 65 6e 75 0a 20 20 20 20 le descmenu.
405e0 76 61 72 69 61 62 6c 65 20 70 61 6e 65 31 0a 20 variable pane1.
405f0 20 20 20 76 61 72 69 61 62 6c 65 20 70 61 6e 65 variable pane
40600 32 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 2. variable p
40610 61 6e 65 33 0a 20 20 20 20 76 61 72 69 61 62 6c ane3. variabl
40620 65 20 69 73 77 69 6e 63 65 0a 20 20 20 20 76 61 e iswince. va
40630 72 69 61 62 6c 65 20 62 69 67 5f 69 63 6f 6e 73 riable big_icons
40640 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 6e . variable in
40650 73 69 64 65 5f 67 69 64 0a 20 20 20 20 76 61 72 side_gid. var
40660 69 61 62 6c 65 20 4c 69 6e 65 4e 75 6d 5f 6c 61 iable LineNum_la
40670 62 65 6c 0a 0a 20 20 20 20 69 66 20 7b 20 5b 20 bel.. if { [
40680 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 47 49 info exists ::GI
40690 44 44 45 46 41 55 4c 54 5d 7d 20 7b 0a 09 73 65 DDEFAULT]} {..se
406a0 74 20 69 6e 73 69 64 65 5f 67 69 64 20 31 0a 20 t inside_gid 1.
406b0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 } else {..set
406c0 20 69 6e 73 69 64 65 5f 67 69 64 20 30 0a 20 20 inside_gid 0.
406d0 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 }.. if { !$
406e0 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09 70 72 6f iswince } {..pro
406f0 63 20 3a 3a 62 67 65 72 72 6f 72 20 7b 20 65 72 c ::bgerror { er
40700 72 73 74 72 69 6e 67 20 7d 20 7b 0a 09 20 20 20 rstring } {..
40710 20 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d if { [info comm
40720 61 6e 64 73 20 52 61 6d 44 65 62 75 67 67 65 72 ands RamDebugger
40730 3a 3a 54 65 78 74 4f 75 74 52 61 69 73 65 5d 20 ::TextOutRaise]
40740 21 3d 20 22 22 20 7d 20 7b 0a 09 09 52 61 6d 44 != "" } {...RamD
40750 65 62 75 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 ebugger::TextOut
40760 52 61 69 73 65 0a 09 09 52 61 6d 44 65 62 75 67 Raise...RamDebug
40770 67 65 72 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 ger::TextOutInse
40780 72 74 52 65 64 20 22 2d 2d 2d 2d 2d 2d 2d 2d 2d rtRed "---------
40790 2d 2d 2d 2d 45 52 52 4f 52 20 46 52 4f 4d 20 52 ----ERROR FROM R
407a0 41 4d 44 45 42 55 47 47 45 52 2d 2d 2d 2d 2d 2d AMDEBUGGER------
407b0 2d 2d 2d 2d 2d 5c 6e 22 0a 09 09 52 61 6d 44 65 -----\n"...RamDe
407c0 62 75 67 67 65 72 3a 3a 54 65 78 74 4f 75 74 49 bugger::TextOutI
407d0 6e 73 65 72 74 52 65 64 20 24 3a 3a 65 72 72 6f nsertRed $::erro
407e0 72 49 6e 66 6f 0a 09 09 52 61 6d 44 65 62 75 67 rInfo...RamDebug
407f0 67 65 72 3a 3a 54 65 78 74 4f 75 74 49 6e 73 65 ger::TextOutInse
40800 72 74 52 65 64 20 22 2d 2d 2d 2d 2d 2d 2d 2d 2d rtRed "---------
40810 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
40820 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
40830 2d 2d 2d 2d 2d 5c 6e 22 0a 09 09 57 61 72 6e 57 -----\n"...WarnW
40840 69 6e 20 24 65 72 72 73 74 72 69 6e 67 0a 09 20 in $errstring..
40850 20 20 20 7d 20 65 6c 73 65 20 7b 20 70 75 74 73 } else { puts
40860 20 22 24 65 72 72 73 74 72 69 6e 67 20 28 24 3a "$errstring ($:
40870 3a 65 72 72 6f 72 49 6e 66 6f 29 22 20 7d 0a 09 :errorInfo)" }..
40880 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 }. } else {..
40890 53 70 6c 61 73 68 0a 09 70 61 63 6b 61 67 65 20 Splash..package
408a0 72 65 71 75 69 72 65 20 68 65 5f 64 69 61 6c 6f require he_dialo
408b0 67 0a 09 70 61 63 6b 61 67 65 20 72 65 71 75 69 g..package requi
408c0 72 65 20 77 63 65 0a 20 20 20 20 7d 0a 20 20 20 re wce. }.
408d0 20 23 20 64 69 72 74 79 20 74 72 69 63 6b 20 74 # dirty trick t
408e0 6f 20 61 76 6f 69 64 20 63 6f 6e 66 6c 69 63 74 o avoid conflict
408f0 73 20 77 69 74 68 20 6f 74 68 65 72 20 62 77 69 s with other bwi
40900 64 67 65 74 20 70 61 63 6b 61 67 65 73 0a 20 20 dget packages.
40910 20 20 23 20 6f 6e 6c 79 20 6e 65 63 65 73 73 61 # only necessa
40920 72 79 20 77 68 65 6e 20 77 6f 72 6b 69 6e 67 20 ry when working
40930 69 6e 73 69 64 65 20 61 20 6d 61 73 74 65 72 0a inside a master.
40940 20 20 20 20 23 61 75 74 6f 5f 6c 6f 61 64 20 43 #auto_load C
40950 6f 6d 62 6f 42 6f 78 0a 0a 20 20 20 20 23 72 65 omboBox.. #re
40960 71 75 69 72 65 20 42 57 69 64 67 65 74 52 2c 20 quire BWidgetR,
40970 61 20 42 57 69 64 67 65 74 20 77 69 74 68 20 73 a BWidget with s
40980 6f 6d 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e ome modification
40990 73 2c 20 6d 61 72 6b 65 64 20 77 69 74 68 20 52 s, marked with R
409a0 41 4d 53 41 4e 0a 20 20 20 20 23 69 6e 73 69 64 AMSAN. #insid
409b0 65 20 74 68 65 20 47 69 44 20 73 63 72 69 70 74 e the GiD script
409c0 73 20 42 57 69 64 67 65 74 20 69 73 20 72 65 61 s BWidget is rea
409d0 6c 6c 79 20 42 57 69 64 67 65 74 52 2c 20 74 6f lly BWidgetR, to
409e0 20 61 76 6f 69 64 20 64 75 70 6c 69 63 61 74 65 avoid duplicate
409f0 20 69 74 0a 20 20 20 20 69 66 20 7b 20 5b 63 61 it. if { [ca
40a00 74 63 68 20 7b 70 61 63 6b 61 67 65 20 72 65 71 tch {package req
40a10 75 69 72 65 20 42 57 69 64 67 65 74 52 7d 5d 20 uire BWidgetR}]
40a20 7d 20 7b 0a 09 23 70 75 74 73 20 22 63 6f 75 6c } {..#puts "coul
40a30 64 20 6e 6f 74 20 6c 6f 61 64 20 70 61 63 6b 61 d not load packa
40a40 67 65 20 42 57 69 64 67 65 74 52 2e 20 4c 6f 61 ge BWidgetR. Loa
40a50 64 69 6e 67 20 70 61 63 6b 61 67 65 20 42 57 69 ding package BWi
40a60 64 67 65 74 2e 20 53 6f 6d 65 20 70 72 6f 62 6c dget. Some probl
40a70 65 6d 73 20 77 69 74 68 20 61 63 63 65 6c 65 72 ems with acceler
40a80 61 74 6f 72 73 20 6d 61 79 20 61 70 70 65 61 72 ators may appear
40a90 2c 20 73 70 65 63 69 61 6c 6c 79 20 6f 6e 20 4d , specially on M
40aa0 61 63 4f 53 58 22 0a 09 70 61 63 6b 61 67 65 20 acOSX"..package
40ab0 72 65 71 75 69 72 65 20 42 57 69 64 67 65 74 0a require BWidget.
40ac0 20 20 20 20 7d 0a 20 20 20 0a 20 20 20 20 23 20 }. . #
40ad0 64 69 72 74 79 20 74 72 69 63 6b 20 74 6f 20 61 dirty trick to a
40ae0 76 6f 69 64 20 63 6f 6e 66 6c 69 63 74 73 20 77 void conflicts w
40af0 69 74 68 20 6f 74 68 65 72 20 62 77 69 64 67 65 ith other bwidge
40b00 74 20 70 61 63 6b 61 67 65 73 0a 20 20 20 20 61 t packages. a
40b10 75 74 6f 5f 6c 6f 61 64 20 43 6f 6d 62 6f 42 6f uto_load ComboBo
40b20 78 0a 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 x. package re
40b30 71 75 69 72 65 20 73 75 70 65 72 67 72 69 64 0a quire supergrid.
40b40 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 package requ
40b50 69 72 65 20 73 75 70 65 72 74 65 78 74 0a 20 20 ire supertext.
40b60 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 package requir
40b70 65 20 64 69 61 6c 6f 67 77 69 6e 0a 20 20 20 20 e dialogwin.
40b80 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
40b90 74 65 78 74 75 74 69 6c 0a 20 20 20 20 70 61 63 textutil. pac
40ba0 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6f 6f kage require too
40bb0 6c 74 69 70 0a 20 20 20 20 23 6b 69 6b 65 3a 20 ltip. #kike:
40bc0 63 61 74 63 68 20 70 6f 72 71 75 65 20 6e 6f 20 catch porque no
40bd0 73 65 20 70 6f 72 71 75 65 20 64 61 20 65 72 72 se porque da err
40be0 6f 72 20 74 63 6c 20 61 6c 20 61 72 72 61 6e 63 or tcl al arranc
40bf0 61 72 20 64 65 73 64 65 20 47 69 44 20 71 75 65 ar desde GiD que
40c00 20 79 61 20 74 69 65 6e 65 20 69 6d 67 3a 3a 70 ya tiene img::p
40c10 6e 67 20 69 6e 74 65 72 6e 6f 0a 20 20 20 20 63 ng interno. c
40c20 61 74 63 68 20 7b 70 61 63 6b 61 67 65 20 72 65 atch {package re
40c30 71 75 69 72 65 20 69 6d 67 3a 3a 70 6e 67 7d 0a quire img::png}.
40c40 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 21 5b . if { ![
40c50 63 61 74 63 68 20 7b 20 70 61 63 6b 61 67 65 20 catch { package
40c60 76 63 6f 6d 70 61 72 65 20 5b 70 61 63 6b 61 67 vcompare [packag
40c70 65 20 70 72 6f 76 69 64 65 20 54 6b 5d 20 38 2e e provide Tk] 8.
40c80 35 20 7d 20 72 65 74 5d 20 26 26 20 24 72 65 74 5 } ret] && $ret
40c90 20 3c 20 30 7d 20 7b 0a 09 69 6e 74 65 72 70 20 < 0} {..interp
40ca0 61 6c 69 61 73 20 22 22 20 74 74 6b 3a 3a 73 74 alias "" ttk::st
40cb0 79 6c 65 20 22 22 20 73 74 79 6c 65 0a 20 20 20 yle "" style.
40cc0 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 }. if { [inf
40cd0 6f 20 65 78 69 73 74 73 20 3a 3a 69 73 70 6f 63 o exists ::ispoc
40ce0 6b 65 74 5d 20 7d 20 7b 0a 09 73 65 74 20 69 73 ket] } {..set is
40cf0 70 6f 63 6b 65 74 20 24 3a 3a 69 73 70 6f 63 6b pocket $::ispock
40d00 65 74 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 et. } elseif
40d10 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 { $::tcl_platfor
40d20 6d 28 6f 73 29 20 65 71 20 22 57 69 6e 64 6f 77 m(os) eq "Window
40d30 73 20 43 45 22 20 7d 20 7b 0a 09 73 65 74 20 69 s CE" } {..set i
40d40 73 70 6f 63 6b 65 74 20 31 0a 20 20 20 20 7d 20 spocket 1. }
40d50 65 6c 73 65 20 7b 0a 09 73 65 74 20 69 73 70 6f else {..set ispo
40d60 63 6b 65 74 20 30 0a 20 20 20 20 7d 0a 09 0a 20 cket 0. }...
40d70 20 20 20 69 66 20 7b 20 21 24 69 6e 73 69 64 65 if { !$inside
40d80 5f 67 69 64 20 7d 20 7b 0a 09 69 66 20 7b 20 5b _gid } {..if { [
40d90 74 6b 20 77 69 6e 64 6f 77 69 6e 67 73 79 73 74 tk windowingsyst
40da0 65 6d 5d 20 65 71 20 22 78 31 31 22 20 7c 7c 20 em] eq "x11" ||
40db0 24 69 73 70 6f 63 6b 65 74 20 7d 20 7b 0a 09 20 $ispocket } {..
40dc0 20 20 20 74 74 6b 3a 3a 73 74 79 6c 65 20 74 68 ttk::style th
40dd0 65 6d 65 20 75 73 65 20 63 6c 61 6d 0a 09 20 20 eme use clam..
40de0 20 20 74 74 6b 3a 3a 73 74 79 6c 65 20 74 68 65 ttk::style the
40df0 6d 65 20 73 65 74 74 69 6e 67 73 20 63 6c 61 6d me settings clam
40e00 20 7b 0a 09 09 74 74 6b 3a 3a 73 74 79 6c 65 20 {...ttk::style
40e10 63 6f 6e 66 69 67 75 72 65 20 54 42 75 74 74 6f configure TButto
40e20 6e 20 2d 70 61 64 64 69 6e 67 20 31 0a 09 09 74 n -padding 1...t
40e30 74 6b 3a 3a 73 74 79 6c 65 20 63 6f 6e 66 69 67 tk::style config
40e40 75 72 65 20 54 4d 65 6e 75 62 75 74 74 6f 6e 20 ure TMenubutton
40e50 2d 70 61 64 64 69 6e 67 20 31 0a 09 09 74 74 6b -padding 1...ttk
40e60 3a 3a 73 74 79 6c 65 20 6d 61 70 20 54 6f 6f 6c ::style map Tool
40e70 62 75 74 74 6f 6e 20 2d 62 61 63 6b 67 72 6f 75 button -backgrou
40e80 6e 64 20 22 66 6f 63 75 73 20 67 72 65 79 20 5b nd "focus grey [
40e90 74 74 6b 3a 3a 73 74 79 6c 65 20 6d 61 70 20 54 ttk::style map T
40ea0 6f 6f 6c 62 75 74 74 6f 6e 20 2d 62 61 63 6b 67 oolbutton -backg
40eb0 72 6f 75 6e 64 5d 22 0a 09 20 20 20 20 7d 0a 09 round]".. }..
40ec0 20 20 20 20 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 ..} else {..
40ed0 20 20 20 20 63 61 74 63 68 20 7b 0a 09 09 74 74 catch {...tt
40ee0 6b 3a 3a 73 74 79 6c 65 20 74 68 65 6d 65 20 73 k::style theme s
40ef0 65 74 74 69 6e 67 73 20 77 69 6e 6e 61 74 69 76 ettings winnativ
40f00 65 20 7b 0a 09 09 20 20 20 20 74 74 6b 3a 3a 73 e {... ttk::s
40f10 74 79 6c 65 20 63 6f 6e 66 69 67 75 72 65 20 54 tyle configure T
40f20 6f 6f 6c 62 75 74 74 6f 6e 20 2d 70 61 64 64 69 oolbutton -paddi
40f30 6e 67 20 31 0a 09 09 7d 0a 09 20 20 20 20 7d 0a ng 1...}.. }.
40f40 09 7d 0a 20 20 20 20 7d 20 3b 23 20 69 66 20 21 .}. } ;# if !
40f50 69 6e 73 69 64 65 5f 67 69 64 0a 20 20 20 20 23 inside_gid. #
40f60 6e 65 65 64 65 64 20 61 20 63 61 74 63 68 20 66 needed a catch f
40f70 6f 72 20 77 69 6e 63 65 0a 20 20 20 20 63 61 74 or wince. cat
40f80 63 68 20 7b 20 70 61 63 6b 61 67 65 20 72 65 71 ch { package req
40f90 75 69 72 65 20 74 6b 64 6e 64 20 7d 20 3b 23 20 uire tkdnd } ;#
40fa0 6f 6e 6c 79 20 69 66 20 69 74 20 69 73 20 63 6f only if it is co
40fb0 6d 70 69 6c 65 64 0a 20 20 20 20 63 61 74 63 68 mpiled. catch
40fc0 20 7b 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 { package requi
40fd0 72 65 20 66 75 6c 6c 74 6b 74 72 65 65 20 7d 0a re fulltktree }.
40fe0 0a 20 20 20 20 69 66 20 7b 20 5b 70 61 63 6b 61 . if { [packa
40ff0 67 65 20 76 63 6f 6d 70 61 72 65 20 5b 70 61 63 ge vcompare [pac
41000 6b 61 67 65 20 70 72 65 73 65 6e 74 20 54 63 6c kage present Tcl
41010 5d 20 38 2e 35 5d 20 3e 3d 20 30 20 7d 20 7b 0a ] 8.5] >= 0 } {.
41020 09 6f 70 74 69 6f 6e 20 61 64 64 20 2a 50 61 6e .option add *Pan
41030 65 64 77 69 6e 64 6f 77 2e 53 74 72 65 74 63 68 edwindow.Stretch
41040 20 61 6c 77 61 79 73 0a 20 20 20 20 7d 20 65 6c always. } el
41050 73 65 20 7b 0a 09 62 69 6e 64 20 50 61 6e 65 64 se {..bind Paned
41060 77 69 6e 64 6f 77 20 3c 43 6f 6e 66 69 67 75 72 window <Configur
41070 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 e> [list RamDebu
41080 67 67 65 72 3a 3a 52 65 73 69 7a 65 50 61 6e 65 gger::ResizePane
41090 64 57 69 6e 64 6f 77 20 25 57 5d 0a 20 20 20 20 dWindow %W].
410a0 7d 0a 0a 20 20 20 20 43 72 65 61 74 65 49 6d 61 }.. CreateIma
410b0 67 65 73 0a 20 20 20 20 54 6b 42 61 63 6b 43 6f ges. TkBackCo
410c0 6d 70 61 74 69 62 69 6c 69 74 79 0a 20 20 20 20 mpatibility.
410d0 43 72 65 61 74 65 4d 6f 64 69 66 79 46 6f 6e 74 CreateModifyFont
410e0 73 0a 20 20 20 20 49 6e 69 74 4f 70 74 69 6f 6e s. InitOption
410f0 73 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 74 s. . set t
41100 6b 74 61 62 6c 65 74 5f 6f 6b 20 5b 65 78 70 72 ktablet_ok [expr
41110 20 7b 21 5b 63 61 74 63 68 20 7b 20 70 61 63 6b {![catch { pack
41120 61 67 65 20 72 65 71 75 69 72 65 20 74 6b 74 61 age require tkta
41130 62 6c 65 74 20 7d 5d 7d 5d 0a 0a 20 20 20 20 69 blet }]}].. i
41140 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 f { $::tcl_platf
41150 6f 72 6d 28 6f 73 29 20 65 71 20 22 44 61 72 77 orm(os) eq "Darw
41160 69 6e 22 20 7d 20 7b 0a 09 73 65 74 20 74 6b 74 in" } {..set tkt
41170 61 62 6c 65 74 5f 6f 6b 20 30 20 0a 20 20 20 20 ablet_ok 0 .
41180 7d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 }. . if {
41190 21 24 69 73 77 69 6e 63 65 20 26 26 20 24 74 6b !$iswince && $tk
411a0 74 61 62 6c 65 74 5f 6f 6b 20 26 26 20 5b 69 6e tablet_ok && [in
411b0 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 3a 3a 74 6b fo commands ::tk
411c0 74 61 62 6c 65 74 3a 3a 69 6e 69 74 5f 69 6e 70 tablet::init_inp
411d0 75 74 5f 70 61 6e 65 6c 5d 20 6e 65 20 22 22 20 ut_panel] ne ""
411e0 7d 20 7b 0a 09 74 6b 74 61 62 6c 65 74 3a 3a 69 } {..tktablet::i
411f0 6e 69 74 5f 69 6e 70 75 74 5f 70 61 6e 65 6c 0a nit_input_panel.
41200 09 74 6b 74 61 62 6c 65 74 3a 3a 69 6e 69 74 5f .tktablet::init_
41210 69 6e 70 75 74 5f 70 61 6e 65 6c 5f 74 65 78 74 input_panel_text
41220 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
41230 24 69 73 77 69 6e 63 65 20 7d 20 7b 20 70 6f 63 $iswince } { poc
41240 6b 65 74 70 63 3a 3a 69 6e 69 74 20 7d 0a 0a 20 ketpc::init }..
41250 20 20 20 69 66 20 7b 20 24 74 6f 70 6c 65 76 65 if { $topleve
41260 6c 75 73 65 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 luse == "" } {..
41270 74 6f 70 6c 65 76 65 6c 20 24 77 20 2d 63 6c 61 toplevel $w -cla
41280 73 73 20 24 3a 3a 63 6c 61 73 73 4e 61 6d 65 0a ss $::className.
41290 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 74 6f } else {..to
412a0 70 6c 65 76 65 6c 20 24 77 20 2d 75 73 65 20 24 plevel $w -use $
412b0 74 6f 70 6c 65 76 65 6c 75 73 65 0a 09 75 70 64 topleveluse..upd
412c0 61 74 65 20 69 64 6c 65 74 61 73 6b 73 20 3b 23 ate idletasks ;#
412d0 20 64 6f 65 73 6e 27 74 20 77 6f 72 6b 20 69 66 doesn't work if
412e0 20 74 68 69 73 20 69 73 20 72 65 6d 6f 76 65 64 this is removed
412f0 3b 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 ; does not work
41300 77 69 74 68 20 69 74 20 65 69 74 68 65 72 0a 20 with it either.
41310 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 74 }. if { $t
41320 6f 70 6c 65 76 65 6c 75 73 65 20 3d 3d 20 22 22 opleveluse == ""
41330 20 7d 20 7b 0a 09 77 6d 20 77 69 74 68 64 72 61 } {..wm withdra
41340 77 20 24 77 0a 09 77 6d 20 67 65 6f 6d 20 24 77 w $w..wm geom $w
41350 20 38 30 30 78 36 30 30 2b 30 2b 30 0a 20 20 20 800x600+0+0.
41360 20 7d 20 65 6c 73 65 20 7b 20 75 70 64 61 74 65 } else { update
41370 20 7d 0a 0a 20 20 20 20 77 6d 20 74 69 74 6c 65 }.. wm title
41380 20 24 77 20 52 61 6d 44 65 62 75 67 67 65 72 0a $w RamDebugger.
41390 20 20 20 20 77 6d 20 70 72 6f 74 6f 63 6f 6c 20 wm protocol
413a0 24 77 20 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e $w WM_DELETE_WIN
413b0 44 4f 57 20 22 52 61 6d 44 65 62 75 67 67 65 72 DOW "RamDebugger
413c0 3a 3a 45 78 69 74 47 55 49 22 0a 20 20 20 20 23 ::ExitGUI". #
413d0 20 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 69 6e ApplyDropBindin
413e0 67 20 24 77 20 5b 6c 69 73 74 20 52 61 6d 44 65 g $w [list RamDe
413f0 62 75 67 67 65 72 3a 3a 44 72 6f 70 42 69 6e 64 bugger::DropBind
41400 69 6e 67 44 6f 6e 65 20 25 44 5d 0a 20 20 20 20 ingDone %D].
41410 0a 20 20 20 20 73 65 74 20 64 65 73 63 6d 65 6e . set descmen
41420 75 20 22 22 0a 20 20 20 20 69 66 20 7b 20 5b 20 u "". if { [
41430 74 6b 20 77 69 6e 64 6f 77 69 6e 67 73 79 73 74 tk windowingsyst
41440 65 6d 5d 20 65 71 20 22 61 71 75 61 22 20 26 26 em] eq "aqua" &&
41450 20 5b 20 69 6e 66 6f 20 65 78 69 73 74 73 20 3a [ info exists :
41460 3a 47 49 44 44 45 46 41 55 4c 54 5d 20 7d 20 7b :GIDDEFAULT] } {
41470 0a 09 70 72 6f 63 20 3a 3a 74 6b 3a 3a 6d 61 63 ..proc ::tk::mac
41480 3a 3a 53 68 6f 77 50 72 65 66 65 72 65 6e 63 65 ::ShowPreference
41490 73 20 7b 7d 20 7b 0a 09 20 20 20 20 61 66 74 65 s {} {.. afte
414a0 72 20 69 64 6c 65 20 52 61 6d 44 65 62 75 67 67 r idle RamDebugg
414b0 65 72 3a 3a 50 72 65 66 65 72 65 6e 63 65 73 57 er::PreferencesW
414c0 69 6e 64 6f 77 0a 09 7d 0a 23 20 20 20 20 20 20 indow..}.#
414d0 20 20 20 70 72 6f 63 20 3a 3a 74 6b 41 62 6f 75 proc ::tkAbou
414e0 74 44 69 61 6c 6f 67 20 7b 7d 20 7b 0a 23 20 20 tDialog {} {.#
414f0 20 20 20 20 20 20 20 20 20 20 20 52 61 6d 44 65 RamDe
41500 62 75 67 67 65 72 3a 3a 41 62 6f 75 74 57 69 6e bugger::AboutWin
41510 64 6f 77 0a 23 20 20 20 20 20 20 20 20 20 7d 0a dow.# }.
41520 09 6c 61 70 70 65 6e 64 20 64 65 73 63 6d 65 6e .lappend descmen
41530 75 20 5c 0a 09 20 20 20 20 52 61 6d 64 65 62 75 u \.. Ramdebu
41540 67 67 65 72 20 61 6c 6c 20 61 70 70 6c 65 20 30 gger all apple 0
41550 20 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c 69 73 74 [list \...[list
41560 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 41 62 6f command [_ "Abo
41570 75 74 20 52 61 6d 64 65 62 75 67 67 65 72 22 5d ut Ramdebugger"]
41580 20 7b 7d 20 5b 5f 20 22 41 62 6f 75 74 22 5d 20 {} [_ "About"]
41590 22 22 20 5c 0a 09 09 20 20 20 20 2d 63 6f 6d 6d "" \... -comm
415a0 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
415b0 3a 3a 41 62 6f 75 74 57 69 6e 64 6f 77 22 5d 20 ::AboutWindow"]
415c0 5c 0a 09 09 5d 0a 20 20 20 20 7d 0a 20 20 20 20 \...]. }.
415d0 6c 61 70 70 65 6e 64 20 64 65 73 63 6d 65 6e 75 lappend descmenu
415e0 20 5c 0a 09 09 26 5b 5f 20 22 46 69 6c 65 22 5d \...&[_ "File"]
415f0 20 61 6c 6c 20 66 69 6c 65 20 30 20 5b 6c 69 73 all file 0 [lis
41600 74 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d t \...[list comm
41610 61 6e 64 20 26 5b 5f 20 22 4e 65 77 22 5d 20 7b and &[_ "New"] {
41620 7d 20 5b 5f 20 22 42 65 67 69 6e 20 6e 65 77 20 } [_ "Begin new
41630 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63 file"] "" \...-c
41640 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
41650 67 65 72 3a 3a 4e 65 77 46 69 6c 65 22 5d 20 5c ger::NewFile"] \
41660 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
41670 20 26 5b 5f 20 22 4f 70 65 6e 22 5d 20 7b 7d 20 &[_ "Open"] {}
41680 5b 5f 20 22 53 65 6c 65 63 74 20 73 6f 75 72 63 [_ "Select sourc
41690 65 20 66 69 6c 65 22 5d 20 22 43 74 72 6c 20 6f e file"] "Ctrl o
416a0 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 " \...-command "
416b0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 RamDebugger::Ope
416c0 6e 46 69 6c 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 nFile"] \...[lis
416d0 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 4f 70 t command [_ "Op
416e0 65 6e 20 28 4e 65 77 20 77 69 6e 29 22 5d 20 7b en (New win)"] {
416f0 7d 20 5b 5f 20 22 4f 70 65 6e 20 6e 65 77 20 77 } [_ "Open new w
41700 69 6e 64 6f 77 20 61 6e 64 20 73 65 6c 65 63 74 indow and select
41710 20 73 6f 75 72 63 65 20 66 69 6c 65 22 5d 20 22 source file"] "
41720 53 68 69 66 74 43 74 72 6c 20 6f 22 20 5c 0a 09 ShiftCtrl o" \..
41730 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
41740 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 bugger::OpenFile
41750 49 6e 4e 65 77 57 69 6e 64 6f 77 22 5d 20 5c 0a InNewWindow"] \.
41760 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 ..[list command
41770 26 5b 5f 20 22 53 61 76 65 22 5d 20 7b 7d 20 5b &[_ "Save"] {} [
41780 5f 20 22 53 61 76 65 20 66 69 6c 65 22 5d 20 22 _ "Save file"] "
41790 43 74 72 6c 20 73 22 20 5c 0a 09 09 2d 63 6f 6d Ctrl s" \...-com
417a0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
417b0 72 3a 3a 53 61 76 65 46 69 6c 65 20 73 61 76 65 r::SaveFile save
417c0 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d "] \...[list com
417d0 6d 61 6e 64 20 5b 5f 20 22 53 61 76 65 20 26 61 mand [_ "Save &a
417e0 73 22 5d 20 7b 7d 20 5b 5f 20 22 53 61 76 65 20 s"] {} [_ "Save
417f0 66 69 6c 65 20 61 73 22 5d 20 22 22 20 5c 0a 09 file as"] "" \..
41800 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
41810 62 75 67 67 65 72 3a 3a 53 61 76 65 46 69 6c 65 bugger::SaveFile
41820 20 73 61 76 65 61 73 22 5d 20 5c 0a 09 09 5b 6c saveas"] \...[l
41830 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 ist command &[_
41840 22 43 6c 6f 73 65 22 5d 20 7b 7d 20 5b 5f 20 22 "Close"] {} [_ "
41850 43 6c 6f 73 65 20 63 75 72 72 65 6e 74 20 66 69 Close current fi
41860 6c 65 22 5d 20 22 43 74 72 6c 20 46 34 22 20 5c le"] "Ctrl F4" \
41870 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d ...-command "Ram
41880 44 65 62 75 67 67 65 72 3a 3a 43 6c 6f 73 65 46 Debugger::CloseF
41890 69 6c 65 22 5d 20 5c 0a 09 09 73 65 70 61 72 61 ile"] \...separa
418a0 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 61 tor \...[list ca
418b0 73 63 61 64 20 26 5b 5f 20 22 44 65 62 75 67 20 scad &[_ "Debug
418c0 6f 6e 22 5d 20 7b 7d 20 61 63 74 69 76 65 70 72 on"] {} activepr
418d0 6f 67 72 61 6d 73 20 30 20 7b 7d 5d 20 5c 0a 09 ograms 0 {}] \..
418e0 09 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b .separator \...[
418f0 6c 69 73 74 20 63 61 73 63 61 64 20 26 5b 5f 20 list cascad &[_
41900 22 52 65 76 69 73 69 6f 6e 73 22 5d 20 7b 7d 20 "Revisions"] {}
41910 72 65 76 69 73 69 6f 6e 73 20 30 20 5b 6c 69 73 revisions 0 [lis
41920 74 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d t \...[list comm
41930 61 6e 64 20 26 5b 5f 20 22 53 61 76 65 20 72 65 and &[_ "Save re
41940 76 69 73 69 6f 6e 22 5d 20 7b 7d 20 5b 5f 20 22 vision"] {} [_ "
41950 53 61 76 65 73 20 61 20 72 65 76 69 73 69 6f 6e Saves a revision
41960 20 6f 66 20 74 68 65 20 66 69 6c 65 22 5d 20 22 of the file"] "
41970 53 68 69 66 74 43 74 72 6c 20 73 22 20 5c 0a 09 ShiftCtrl s" \..
41980 09 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e . -comman
41990 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a d "RamDebugger::
419a0 56 43 53 3a 3a 53 61 76 65 52 65 76 69 73 69 6f VCS::SaveRevisio
419b0 6e 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f n"] \...[list co
419c0 6d 6d 61 6e 64 20 26 5b 5f 20 22 4f 70 65 6e 20 mmand &[_ "Open
419d0 72 65 76 69 73 69 6f 6e 73 20 6c 69 73 74 22 5d revisions list"]
419e0 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20 72 65 76 {} [_ "Open rev
419f0 69 73 69 6f 6e 73 20 6c 69 73 74 20 66 6f 72 20 isions list for
41a00 63 75 72 72 65 6e 74 20 66 69 6c 65 22 5d 20 22 current file"] "
41a10 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 63 " \... -c
41a20 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
41a30 67 65 72 3a 3a 56 43 53 3a 3a 4f 70 65 6e 52 65 ger::VCS::OpenRe
41a40 76 69 73 69 6f 6e 73 22 5d 20 5c 0a 09 09 73 65 visions"] \...se
41a50 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 parator \...[lis
41a60 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 56 t command &[_ "V
41a70 69 65 77 20 72 65 76 69 73 65 64 20 66 69 6c 65 iew revised file
41a80 73 22 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 s"] {} \...
41a90 5b 5f 20 22 56 69 65 77 20 61 6c 6c 20 66 69 6c [_ "View all fil
41aa0 65 73 20 75 6e 64 65 72 20 72 65 76 69 73 69 6f es under revisio
41ab0 6e 20 63 6f 6e 74 72 6f 6c 22 5d 20 22 22 20 5c n control"] "" \
41ac0 0a 09 09 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 ... -command
41ad0 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 "RamDebugger::V
41ae0 43 53 3a 3a 53 68 6f 77 41 6c 6c 46 69 6c 65 73 CS::ShowAllFiles
41af0 22 5d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 "] \...
41b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
41b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
41b20 20 20 20 20 5d 5d 20 5c 0a 09 09 5b 6c 69 73 74 ]] \...[list
41b30 20 63 61 73 63 61 64 20 26 5b 5f 20 22 52 65 63 cascad &[_ "Rec
41b40 65 6e 74 20 66 69 6c 65 73 22 5d 20 7b 7d 20 72 ent files"] {} r
41b50 65 63 65 6e 74 66 69 6c 65 73 20 30 20 7b 7d 5d ecentfiles 0 {}]
41b60 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c \...separator \
41b70 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
41b80 20 26 5b 5f 20 22 51 75 69 74 22 5d 20 7b 7d 20 &[_ "Quit"] {}
41b90 5b 5f 20 22 45 78 69 74 20 70 72 6f 67 72 61 6d [_ "Exit program
41ba0 22 5d 20 22 43 74 72 6c 20 71 22 20 5c 0a 09 09 "] "Ctrl q" \...
41bb0 2d 63 6f 6d 6d 61 6e 64 20 52 61 6d 44 65 62 75 -command RamDebu
41bc0 67 67 65 72 3a 3a 45 78 69 74 47 55 49 5d 20 5c gger::ExitGUI] \
41bd0 0a 09 09 5d 20 5c 0a 09 09 26 5b 5f 20 22 45 64 ...] \...&[_ "Ed
41be0 69 74 22 5d 20 61 6c 6c 20 65 64 69 74 20 30 20 it"] all edit 0
41bf0 5b 6c 69 73 74 20 5c 0a 09 09 5b 6c 69 73 74 20 [list \...[list
41c00 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 55 6e 64 command &[_ "Und
41c10 6f 22 5d 20 7b 7d 20 5b 5f 20 22 55 6e 64 6f 20 o"] {} [_ "Undo
41c20 70 72 65 76 69 6f 75 73 20 69 6e 73 65 72 74 2f previous insert/
41c30 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e delete operation
41c40 22 5d 20 22 43 74 72 6c 20 7a 22 20 5c 0a 09 09 "] "Ctrl z" \...
41c50 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
41c60 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 ugger::CutCopyPa
41c70 73 74 65 54 65 78 74 20 75 6e 64 6f 22 5d 20 5c steText undo"] \
41c80 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 ...separator \..
41c90 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 .[list command &
41ca0 5b 5f 20 22 43 75 74 22 5d 20 7b 7d 20 5b 5f 20 [_ "Cut"] {} [_
41cb0 22 43 75 74 20 73 65 6c 65 63 74 65 64 20 74 65 "Cut selected te
41cc0 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 22 xt to clipboard"
41cd0 5d 20 22 43 74 72 6c 20 78 22 20 5c 0a 09 09 2d ] "Ctrl x" \...-
41ce0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
41cf0 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 gger::CutCopyPas
41d00 74 65 54 65 78 74 20 63 75 74 22 5d 20 5c 0a 09 teText cut"] \..
41d10 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b .[list command [
41d20 5f 20 22 43 26 6f 70 79 22 5d 20 7b 7d 20 5b 5f _ "C&opy"] {} [_
41d30 20 22 43 6f 70 79 20 73 65 6c 65 63 74 65 64 20 "Copy selected
41d40 74 65 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72 text to clipboar
41d50 64 22 5d 20 22 43 74 72 6c 20 63 22 20 5c 0a 09 d"] "Ctrl c" \..
41d60 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
41d70 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 bugger::CutCopyP
41d80 61 73 74 65 54 65 78 74 20 63 6f 70 79 22 5d 20 asteText copy"]
41d90 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e \...[list comman
41da0 64 20 26 5b 5f 20 22 50 61 73 74 65 22 5d 20 7b d &[_ "Paste"] {
41db0 7d 20 5b 5f 20 22 50 61 73 74 65 20 74 65 78 74 } [_ "Paste text
41dc0 20 66 72 6f 6d 20 63 6c 69 70 62 6f 61 72 64 22 from clipboard"
41dd0 5d 20 22 43 74 72 6c 20 76 22 20 5c 0a 09 09 2d ] "Ctrl v" \...-
41de0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
41df0 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 gger::CutCopyPas
41e00 74 65 54 65 78 74 20 70 61 73 74 65 22 5d 20 5c teText paste"] \
41e10 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
41e20 20 22 26 50 61 73 74 65 20 73 74 61 63 6b 22 20 "&Paste stack"
41e30 7b 7d 20 22 50 61 73 74 20 74 65 78 74 20 66 72 {} "Past text fr
41e40 6f 6d 20 70 72 65 76 69 6f 75 73 20 70 61 73 74 om previous past
41e50 65 73 22 20 22 53 68 69 66 74 43 74 72 6c 20 76 es" "ShiftCtrl v
41e60 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 " \...-command "
41e70 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 74 RamDebugger::Cut
41e80 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 70 61 CopyPasteText pa
41e90 73 74 65 5f 73 74 61 63 6b 22 5d 20 5c 0a 09 09 ste_stack"] \...
41ea0 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c separator \...[l
41eb0 69 73 74 20 63 61 73 63 61 64 20 26 5b 5f 20 22 ist cascad &[_ "
41ec0 41 64 76 61 6e 63 65 64 22 5d 20 7b 7d 20 65 64 Advanced"] {} ed
41ed0 69 74 61 64 76 61 6e 63 65 64 20 30 20 5b 6c 69 itadvanced 0 [li
41ee0 73 74 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 st \... [list
41ef0 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 49 6e command &[_ "In
41f00 64 65 6e 74 20 72 65 67 69 6f 6e 22 5d 20 7b 7d dent region"] {}
41f10 20 5b 5f 20 22 49 6e 64 65 6e 74 20 73 65 6c 65 [_ "Indent sele
41f20 63 74 65 64 20 72 65 67 69 6f 6e 20 6f 72 20 6c cted region or l
41f30 69 6e 65 22 5d 20 22 50 72 69 6e 74 20 54 61 62 ine"] "Print Tab
41f40 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 63 " \... -c
41f50 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
41f60 67 65 72 3a 3a 49 6e 64 65 6e 74 22 5d 20 5c 0a ger::Indent"] \.
41f70 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d .. [list comm
41f80 61 6e 64 20 26 5b 5f 20 22 54 72 69 6d 20 72 65 and &[_ "Trim re
41f90 67 69 6f 6e 20 6c 69 6e 65 73 22 5d 20 7b 7d 20 gion lines"] {}
41fa0 5b 5f 20 22 54 72 69 6d 20 6c 6f 6e 67 20 6c 69 [_ "Trim long li
41fb0 6e 65 73 20 69 6e 20 73 70 61 63 65 73 22 5d 20 nes in spaces"]
41fc0 22 41 6c 74 20 71 22 20 5c 0a 09 09 20 20 20 20 "Alt q" \...
41fd0 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 -command "Ra
41fe0 6d 44 65 62 75 67 67 65 72 3a 3a 54 72 69 6d 4c mDebugger::TrimL
41ff0 69 6e 65 73 22 5d 20 5c 0a 09 09 20 20 20 20 5b ines"] \... [
42000 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f list command &[_
42010 20 22 43 6f 6d 6d 65 6e 74 20 72 65 67 69 6f 6e "Comment region
42020 22 5d 20 7b 7d 20 5b 5f 20 22 43 6f 6d 6d 65 6e "] {} [_ "Commen
42030 74 20 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f t selected regio
42040 6e 22 5d 20 22 46 36 22 20 5c 0a 09 09 20 20 20 n"] "F6" \...
42050 20 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e -comman
42060 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a d "RamDebugger::
42070 43 6f 6d 6d 65 6e 74 53 65 6c 65 63 74 69 6f 6e CommentSelection
42080 20 74 6f 67 67 6c 65 22 5d 20 5c 0a 09 09 20 20 toggle"] \...
42090 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 [list command
420a0 26 5b 5f 20 22 55 6e 63 6f 6d 6d 65 6e 74 20 72 &[_ "Uncomment r
420b0 65 67 69 6f 6e 22 5d 20 7b 7d 20 5b 5f 20 22 55 egion"] {} [_ "U
420c0 6e 2d 63 6f 6d 6d 65 6e 74 20 73 65 6c 65 63 74 n-comment select
420d0 65 64 20 72 65 67 69 6f 6e 22 5d 20 22 53 68 69 ed region"] "Shi
420e0 66 74 20 46 36 22 20 5c 0a 09 09 20 20 20 20 20 ft F6" \...
420f0 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d -command "Ram
42100 44 65 62 75 67 67 65 72 3a 3a 43 6f 6d 6d 65 6e Debugger::Commen
42110 74 53 65 6c 65 63 74 69 6f 6e 20 6f 66 66 22 5d tSelection off"]
42120 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 \... [list c
42130 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 49 6e 73 65 ommand &[_ "Inse
42140 72 74 20 62 72 61 63 65 73 2f 62 72 61 63 6b 65 rt braces/bracke
42150 74 73 22 5d 20 7b 7d 20 5b 5f 20 22 49 6e 73 65 ts"] {} [_ "Inse
42160 72 74 73 20 20 70 61 69 72 73 20 6f 66 20 62 72 rts pairs of br
42170 61 63 6b 65 74 73 2c 20 62 72 61 63 65 73 20 6f ackets, braces o
42180 72 20 71 75 6f 74 65 73 22 5d 20 22 43 74 72 6c r quotes"] "Ctrl
42190 20 6c 65 73 73 22 20 5c 0a 09 09 20 20 20 20 20 less" \...
421a0 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 -command [lis
421b0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 69 t RamDebugger::i
421c0 6e 73 65 72 74 5f 62 72 61 63 6b 65 74 73 5f 62 nsert_brackets_b
421d0 72 61 63 65 73 5d 5d 20 5c 0a 09 09 20 20 20 20 races]] \...
421e0 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 20 20 separator \...
421f0 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 [list command
42200 5b 5f 20 22 43 65 6e 74 65 72 20 64 69 73 70 6c [_ "Center displ
42210 61 79 22 5d 20 7b 7d 20 5b 5f 20 22 43 65 6e 74 ay"] {} [_ "Cent
42220 65 72 20 74 65 78 74 20 64 69 73 70 6c 61 79 22 er text display"
42230 5d 20 22 43 74 72 6c 20 6c 22 20 5c 0a 09 09 20 ] "Ctrl l" \...
42240 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 -command
42250 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 65 "RamDebugger::Ce
42260 6e 74 65 72 44 69 73 70 6c 61 79 22 5d 20 5c 0a nterDisplay"] \.
42270 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d .. [list comm
42280 61 6e 64 20 5b 5f 20 22 53 65 61 72 63 68 20 69 and [_ "Search i
42290 6e 20 66 69 6c 65 73 22 5d 20 7b 7d 20 5b 5f 20 n files"] {} [_
422a0 22 53 65 61 72 63 68 20 66 6f 72 20 70 61 74 74 "Search for patt
422b0 65 72 6e 20 69 6e 20 67 69 76 65 6e 20 66 69 6c ern in given fil
422c0 65 73 22 5d 20 5c 0a 09 09 20 20 20 20 22 53 68 es"] \... "Sh
422d0 69 66 74 43 74 72 6c 20 66 22 20 5c 0a 09 09 20 iftCtrl f" \...
422e0 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 -command
422f0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 "RamDebugger::Se
42300 61 72 63 68 49 6e 46 69 6c 65 73 22 5d 20 5c 0a archInFiles"] \.
42310 09 09 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 .. separator
42320 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f \... [list co
42330 6d 6d 61 6e 64 20 26 5b 5f 20 22 53 61 76 65 2f mmand &[_ "Save/
42340 63 6c 65 61 72 20 70 6f 73 69 74 69 6f 6e 22 5d clear position"]
42350 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 20 20 20 {} \...
42360 5b 5f 20 22 53 61 76 65 20 70 6f 73 69 74 69 6f [_ "Save positio
42370 6e 20 74 6f 20 73 74 61 63 6b 20 6f 72 20 63 6c n to stack or cl
42380 65 61 72 20 70 6f 73 69 74 69 6f 6e 22 5d 20 22 ear position"] "
42390 53 68 69 66 74 20 46 32 22 20 5c 0a 09 09 20 20 Shift F2" \...
423a0 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 -command "
423b0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 RamDebugger::Pos
423c0 69 74 69 6f 6e 73 53 74 61 63 6b 20 73 61 76 65 itionsStack save
423d0 22 5d 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 "] \... [list
423e0 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 47 6f command &[_ "Go
423f0 20 74 6f 20 70 6f 73 69 74 69 6f 6e 22 5d 20 7b to position"] {
42400 7d 20 5b 5f 20 22 52 65 63 6f 76 65 72 20 70 6f } [_ "Recover po
42410 73 69 74 69 6f 6e 20 66 72 6f 6d 20 73 74 61 63 sition from stac
42420 6b 22 5d 20 22 46 32 22 20 5c 0a 09 09 20 20 20 k"] "F2" \...
42430 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 -command "R
42440 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69 amDebugger::Posi
42450 74 69 6f 6e 73 53 74 61 63 6b 20 67 6f 22 5d 20 tionsStack go"]
42460 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 6f \... [list co
42470 6d 6d 61 6e 64 20 26 5b 5f 20 22 47 6f 20 74 6f mmand &[_ "Go to
42480 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 66 69 6c position in fil
42490 65 22 5d 20 7b 7d 20 5b 5f 20 22 52 65 63 6f 76 e"] {} [_ "Recov
424a0 65 72 20 70 6f 73 69 74 69 6f 6e 20 66 72 6f 6d er position from
424b0 20 73 74 61 63 6b 20 69 6e 20 63 75 72 72 65 6e stack in curren
424c0 74 20 66 69 6c 65 22 5d 20 22 43 74 72 6c 20 46 t file"] "Ctrl F
424d0 32 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 2" \... -
424e0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
424f0 67 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e 73 53 gger::PositionsS
42500 74 61 63 6b 20 67 6f 5f 73 61 6d 65 5f 66 69 6c tack go_same_fil
42510 65 22 5d 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 e"] \... [lis
42520 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 44 t command &[_ "D
42530 69 73 70 6c 61 79 20 70 6f 73 69 74 69 6f 6e 73 isplay positions
42540 20 73 74 61 63 6b 22 5d 20 7b 7d 20 5b 5f 20 22 stack"] {} [_ "
42550 44 69 73 70 6c 61 79 20 70 6f 73 69 74 69 6f 6e Display position
42560 73 20 73 74 61 63 6b 22 5d 20 22 22 20 5c 0a 09 s stack"] "" \..
42570 09 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e . -comman
42580 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a d "RamDebugger::
42590 44 69 73 70 6c 61 79 50 6f 73 69 74 69 6f 6e 73 DisplayPositions
425a0 53 74 61 63 6b 22 5d 20 5c 0a 09 09 20 20 20 20 Stack"] \...
425b0 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 20 20 separator \...
425c0 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 [list command
425d0 26 5b 5f 20 22 47 6f 20 74 6f 20 70 72 6f 63 22 &[_ "Go to proc"
425e0 5d 20 7b 7d 20 5c 0a 09 09 20 20 20 20 20 20 20 ] {} \...
425f0 20 5b 5f 20 22 47 6f 20 74 6f 20 70 72 6f 63 20 [_ "Go to proc
42600 64 65 66 69 6e 69 74 69 6f 6e 20 69 6e 20 63 75 definition in cu
42610 72 72 65 6e 74 20 66 69 6c 65 22 5d 20 22 53 68 rrent file"] "Sh
42620 69 66 74 43 74 72 6c 20 67 22 20 5c 0a 09 09 20 iftCtrl g" \...
42630 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 20 -command
42640 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 67 6f "RamDebugger::go
42650 5f 74 6f 5f 70 72 6f 63 22 5d 20 5c 0a 09 09 20 _to_proc"] \...
42660 20 20 5d 20 5c 0a 09 09 5d 20 5c 0a 09 09 5b 6c ] \...] \...[l
42670 69 73 74 20 63 61 73 63 61 64 20 26 5b 5f 20 22 ist cascad &[_ "
42680 4d 61 63 72 6f 73 22 5d 20 7b 7d 20 6d 61 63 72 Macros"] {} macr
42690 6f 73 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 20 os 0 [list \...
426a0 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 [list command
426b0 20 5b 5f 20 22 4d 61 63 72 6f 73 22 5d 2e 2e 2e [_ "Macros"]...
426c0 20 7b 7d 20 5b 5f 20 22 4d 6f 64 69 66 79 20 6f {} [_ "Modify o
426d0 72 20 65 78 65 63 75 74 65 20 6d 61 63 72 6f 73 r execute macros
426e0 22 5d 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 "] "" \...
426f0 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 -command "RamD
42700 65 62 75 67 67 65 72 3a 3a 4d 61 63 72 6f 73 20 ebugger::Macros
42710 24 77 22 5d 20 5c 0a 09 09 20 20 20 5d 20 5c 0a $w"] \... ] \.
42720 09 09 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f ..] \...separato
42730 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d r \...[list comm
42740 61 6e 64 20 5b 5f 20 22 53 65 61 72 63 68 22 5d and [_ "Search"]
42750 2e 2e 2e 20 7b 7d 20 5b 5f 20 22 53 65 61 72 63 ... {} [_ "Searc
42760 68 20 74 65 78 74 20 69 6e 20 73 6f 75 72 63 65 h text in source
42770 20 66 69 6c 65 22 5d 20 22 43 74 72 6c 20 66 22 file"] "Ctrl f"
42780 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 \...-command "R
42790 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 amDebugger::Sear
427a0 63 68 57 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5b chWindow"] \...[
427b0 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 list command [_
427c0 22 43 6f 6e 74 69 6e 75 65 20 73 65 61 72 63 68 "Continue search
427d0 22 5d 20 7b 7d 20 5b 5f 20 22 43 6f 6e 74 69 6e "] {} [_ "Contin
427e0 75 65 20 73 65 61 72 63 68 69 6e 67 20 74 65 78 ue searching tex
427f0 74 22 5d 20 22 46 33 22 20 5c 0a 09 09 2d 63 6f t"] "F3" \...-co
42800 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 mmand "RamDebugg
42810 65 72 3a 3a 53 65 61 72 63 68 20 24 77 20 61 6e er::Search $w an
42820 79 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f y"] \...[list co
42830 6d 6d 61 6e 64 20 5b 5f 20 22 49 73 65 61 72 63 mmand [_ "Isearc
42840 68 20 66 6f 72 77 61 72 64 22 5d 20 7b 7d 20 5b h forward"] {} [
42850 5f 20 22 49 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 _ "Incrementally
42860 20 73 65 61 72 63 68 20 66 6f 72 77 61 72 64 22 search forward"
42870 5d 20 22 43 74 72 6c 20 69 22 20 5c 0a 09 09 2d ] "Ctrl i" \...-
42880 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
42890 67 67 65 72 3a 3a 53 65 61 72 63 68 20 24 77 20 gger::Search $w
428a0 69 66 6f 72 77 61 72 64 22 5d 20 5c 0a 09 09 5b iforward"] \...[
428b0 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 list command [_
428c0 22 49 73 65 61 72 63 68 20 66 6f 72 77 61 72 64 "Isearch forward
428d0 20 73 65 6c 65 63 74 65 64 22 5d 20 7b 7d 20 5b selected"] {} [
428e0 5f 20 22 49 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 _ "Incrementally
428f0 20 73 65 61 72 63 68 20 66 6f 72 77 61 72 64 2e search forward.
42900 20 42 65 67 69 6e 20 77 69 74 68 20 73 65 6c 65 Begin with sele
42910 63 74 65 64 20 74 65 78 74 20 6f 72 20 77 69 74 cted text or wit
42920 68 20 74 65 78 74 20 61 74 20 63 75 72 73 6f 72 h text at cursor
42930 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 "] "" \...-comma
42940 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a nd "RamDebugger:
42950 3a 53 65 61 72 63 68 20 24 77 20 69 66 6f 72 77 :Search $w iforw
42960 61 72 64 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 ard"] \...[list
42970 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 49 73 65 61 command [_ "Isea
42980 72 63 68 20 62 61 63 6b 77 61 72 64 22 5d 20 7b rch backward"] {
42990 7d 20 5b 5f 20 22 49 6e 63 72 65 6d 65 6e 74 61 } [_ "Incrementa
429a0 6c 6c 79 20 73 65 61 72 63 68 20 62 61 63 6b 77 lly search backw
429b0 61 72 64 22 5d 20 22 43 74 72 6c 20 72 22 20 5c ard"] "Ctrl r" \
429c0 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d ...-command "Ram
429d0 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68 Debugger::Search
429e0 20 24 77 20 69 62 61 63 6b 77 61 72 64 22 5d 20 $w ibackward"]
429f0 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e \...[list comman
42a00 64 20 26 5b 5f 20 22 52 65 70 6c 61 63 65 22 5d d &[_ "Replace"]
42a10 2e 2e 2e 20 7b 7d 20 5b 5f 20 22 52 65 70 6c 61 ... {} [_ "Repla
42a20 63 65 20 74 65 78 74 20 69 6e 20 73 6f 75 72 63 ce text in sourc
42a30 65 20 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 09 e file"] "" \...
42a40 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
42a50 75 67 67 65 72 3a 3a 53 65 61 72 63 68 57 69 6e ugger::SearchWin
42a60 64 6f 77 20 2d 72 65 70 6c 61 63 65 20 31 22 5d dow -replace 1"]
42a70 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 \...[list comma
42a80 6e 64 20 26 5b 5f 20 22 47 6f 74 6f 20 6c 69 6e nd &[_ "Goto lin
42a90 65 22 5d 20 7b 7d 20 5b 5f 20 22 47 6f 20 74 6f e"] {} [_ "Go to
42aa0 20 74 68 65 20 67 69 76 65 6e 20 6c 69 6e 65 22 the given line"
42ab0 5d 20 22 43 74 72 6c 20 67 22 20 5c 0a 09 09 2d ] "Ctrl g" \...-
42ac0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
42ad0 67 67 65 72 3a 3a 47 6f 74 6f 4c 69 6e 65 22 5d gger::GotoLine"]
42ae0 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c \...separator \
42af0 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
42b00 20 26 5b 5f 20 22 50 72 65 66 65 72 65 6e 63 65 &[_ "Preference
42b10 73 22 5d 20 7b 7d 20 5b 5f 20 22 43 68 6f 6f 73 s"] {} [_ "Choos
42b20 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 66 6f e preferences fo
42b30 72 20 52 61 6d 44 65 62 75 67 67 65 72 22 5d 20 r RamDebugger"]
42b40 22 43 74 72 6c 20 70 22 20 5c 0a 09 09 2d 63 6f "Ctrl p" \...-co
42b50 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 mmand "RamDebugg
42b60 65 72 3a 3a 50 72 65 66 65 72 65 6e 63 65 73 57 er::PreferencesW
42b70 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5d 20 5c 0a indow"] \...] \.
42b80 09 09 26 5b 5f 20 22 56 69 65 77 22 5d 20 61 6c ..&[_ "View"] al
42b90 6c 20 76 69 65 77 20 30 20 5b 6c 69 73 74 20 5c l view 0 [list \
42ba0 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
42bb0 20 26 5b 5f 20 22 56 69 65 77 20 74 65 78 74 2f &[_ "View text/
42bc0 61 6c 6c 22 5d 20 7b 7d 20 5c 0a 09 09 5b 5f 20 all"] {} \...[_
42bd0 22 54 6f 67 67 6c 65 20 62 65 74 77 65 65 6e 20 "Toggle between
42be0 76 69 65 77 69 6e 67 20 61 6c 6c 20 77 69 6e 64 viewing all wind
42bf0 6f 77 73 20 6f 72 20 6f 6e 6c 79 20 74 65 78 74 ows or only text
42c00 20 77 69 6e 64 6f 77 22 5d 20 22 43 74 72 6c 20 window"] "Ctrl
42c10 74 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 t" \...-command
42c20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 69 "RamDebugger::Vi
42c30 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 22 ewOnlyTextOrAll"
42c40 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 68 65 63 ] \...[list chec
42c50 6b 62 75 74 74 6f 6e 20 26 5b 5f 20 22 56 69 65 kbutton &[_ "Vie
42c60 77 20 66 69 6c 65 73 20 70 61 6e 65 22 5d 20 7b w files pane"] {
42c70 7d 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c 65 } \...[_ "Toggle
42c80 20 62 65 74 77 65 65 6e 20 76 69 65 77 69 6e 67 between viewing
42c90 20 74 68 65 20 66 69 6c 65 20 6c 69 73 74 20 70 the file list p
42ca0 61 6e 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f ane"] "" \...-co
42cb0 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 mmand "RamDebugg
42cc0 65 72 3a 3a 43 68 65 63 6b 4c 69 73 74 46 69 6c er::CheckListFil
42cd0 65 73 50 61 6e 65 22 20 5c 0a 09 09 2d 76 61 72 esPane" \...-var
42ce0 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 iable RamDebugge
42cf0 72 3a 3a 6f 70 74 69 6f 6e 73 28 6c 69 73 74 66 r::options(listf
42d00 69 6c 65 73 70 61 6e 65 29 5d 20 5c 0a 09 09 73 ilespane)] \...s
42d10 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 eparator \...[li
42d20 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 st command &[_ "
42d30 53 65 63 6f 6e 64 61 72 79 20 76 69 65 77 22 5d Secondary view"]
42d40 20 7b 7d 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 {} \...[_ "Togg
42d50 6c 65 20 62 65 74 77 65 65 6e 20 61 63 74 69 76 le between activ
42d60 61 74 69 6e 67 20 61 20 73 65 63 6f 6e 64 61 72 ating a secondar
42d70 79 20 76 69 65 77 20 66 6f 72 20 66 69 6c 65 73 y view for files
42d80 22 5d 20 22 43 74 72 6c 20 33 22 20 5c 0a 09 09 "] "Ctrl 3" \...
42d90 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
42da0 75 67 67 65 72 3a 3a 56 69 65 77 53 65 63 6f 6e ugger::ViewSecon
42db0 64 54 65 78 74 22 5d 20 5c 0a 09 09 5b 6c 69 73 dText"] \...[lis
42dc0 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 54 t command &[_ "T
42dd0 6f 67 67 6c 65 20 66 6f 63 75 73 22 5d 20 7b 7d oggle focus"] {}
42de0 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c 65 20 \...[_ "Toggle
42df0 62 65 74 77 65 65 6e 20 61 63 74 69 76 61 74 69 between activati
42e00 6e 67 20 74 68 65 20 6d 61 69 6e 20 6f 72 20 74 ng the main or t
42e10 68 65 20 73 65 63 6f 6e 64 61 72 79 20 76 69 65 he secondary vie
42e20 77 22 5d 20 22 43 74 72 6c 20 34 22 20 5c 0a 09 w"] "Ctrl 4" \..
42e30 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
42e40 62 75 67 67 65 72 3a 3a 46 6f 63 75 73 53 65 63 bugger::FocusSec
42e50 6f 6e 64 54 65 78 74 54 6f 67 67 6c 65 22 5d 20 ondTextToggle"]
42e60 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e \...[list comman
42e70 64 20 26 5b 5f 20 22 54 6f 67 67 6c 65 20 76 69 d &[_ "Toggle vi
42e80 65 77 73 22 5d 20 7b 7d 20 5c 0a 09 09 5b 5f 20 ews"] {} \...[_
42e90 22 54 6f 67 67 6c 65 20 66 69 6c 65 73 20 62 65 "Toggle files be
42ea0 74 77 65 65 6e 20 74 68 65 20 6d 61 69 6e 20 61 tween the main a
42eb0 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 61 72 79 nd the secondary
42ec0 20 76 69 65 77 22 5d 20 22 22 20 5c 0a 09 09 2d view"] "" \...-
42ed0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
42ee0 67 67 65 72 3a 3a 54 6f 67 67 6c 65 56 69 65 77 gger::ToggleView
42ef0 73 22 5d 20 5c 0a 09 20 20 20 20 73 65 70 61 72 s"] \.. separ
42f00 61 74 6f 72 20 5c 0a 09 20 20 20 20 5b 6c 69 73 ator \.. [lis
42f10 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 44 t command &[_ "D
42f20 65 63 72 65 61 73 65 20 66 6f 6e 74 22 5d 20 7b ecrease font"] {
42f30 7d 20 5c 0a 09 09 5b 5f 20 22 44 65 63 72 65 61 } \...[_ "Decrea
42f40 73 65 20 6d 61 69 6e 20 74 65 78 74 20 66 6f 6e se main text fon
42f50 74 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d t"] "" \...-comm
42f60 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
42f70 3a 3a 69 6e 63 72 65 61 73 65 5f 64 65 63 72 65 ::increase_decre
42f80 61 73 65 5f 74 65 78 74 5f 66 6f 6e 74 20 64 65 ase_text_font de
42f90 63 72 65 61 73 65 22 5d 20 5c 0a 09 20 20 20 20 crease"] \..
42fa0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b [list command &[
42fb0 5f 20 22 49 6e 63 72 65 61 73 65 20 66 6f 6e 74 _ "Increase font
42fc0 22 5d 20 7b 7d 20 5c 0a 09 09 5b 5f 20 22 49 6e "] {} \...[_ "In
42fd0 63 72 65 61 73 65 20 6d 61 69 6e 20 74 65 78 74 crease main text
42fe0 20 66 6f 6e 74 22 5d 20 22 22 20 5c 0a 09 09 2d font"] "" \...-
42ff0 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 command "RamDebu
43000 67 67 65 72 3a 3a 69 6e 63 72 65 61 73 65 5f 64 gger::increase_d
43010 65 63 72 65 61 73 65 5f 74 65 78 74 5f 66 6f 6e ecrease_text_fon
43020 74 20 69 6e 63 72 65 61 73 65 22 5d 20 5c 0a 09 t increase"] \..
43030 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e [list comman
43040 64 20 26 5b 5f 20 22 57 72 61 70 20 74 65 78 74 d &[_ "Wrap text
43050 20 77 6f 72 64 73 22 5d 20 7b 7d 20 5c 0a 09 09 words"] {} \...
43060 5b 5f 20 22 54 6f 67 67 6c 65 20 77 72 61 70 20 [_ "Toggle wrap
43070 6f 66 20 74 65 78 74 20 6c 6f 6e 67 20 6c 69 6e of text long lin
43080 65 73 22 5d 20 22 41 6c 74 20 77 22 20 5c 0a 09 es"] "Alt w" \..
43090 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
430a0 62 75 67 67 65 72 3a 3a 54 6f 67 67 6c 65 54 65 bugger::ToggleTe
430b0 78 74 57 72 61 70 22 5d 20 5c 0a 09 20 20 20 20 xtWrap"] \..
430c0 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 20 20 20 separator \..
430d0 20 5b 6c 69 73 74 20 63 68 65 63 6b 62 75 74 74 [list checkbutt
430e0 6f 6e 20 5b 5f 20 22 53 74 61 74 75 73 20 62 61 on [_ "Status ba
430f0 72 22 5d 20 7b 7d 20 5c 0a 09 09 20 5b 5f 20 22 r"] {} \... [_ "
43100 56 69 65 77 2f 68 69 64 65 20 73 74 61 74 75 73 View/hide status
43110 20 62 61 72 22 5d 20 22 22 20 5c 0a 09 09 2d 76 bar"] "" \...-v
43120 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 ariable RamDebug
43130 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 73 68 6f ger::options(sho
43140 77 73 74 61 74 75 73 62 61 72 29 20 2d 63 6f 6d wstatusbar) -com
43150 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 mand RamDebugger
43160 3a 3a 53 68 6f 77 53 74 61 74 75 73 42 61 72 5d ::ShowStatusBar]
43170 20 5c 0a 09 09 5b 6c 69 73 74 20 63 68 65 63 6b \...[list check
43180 62 75 74 74 6f 6e 20 5b 5f 20 22 42 75 74 74 6f button [_ "Butto
43190 6e 73 20 74 6f 6f 6c 62 61 72 22 5d 20 7b 7d 20 ns toolbar"] {}
431a0 5c 0a 09 09 20 5b 5f 20 22 56 69 65 77 2f 68 69 \... [_ "View/hi
431b0 64 65 20 62 75 74 74 6f 6e 73 20 74 6f 6f 6c 62 de buttons toolb
431c0 61 72 22 5d 20 22 22 20 5c 0a 09 09 2d 76 61 72 ar"] "" \...-var
431d0 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 iable RamDebugge
431e0 72 3a 3a 6f 70 74 69 6f 6e 73 28 73 68 6f 77 62 r::options(showb
431f0 75 74 74 6f 6e 73 74 6f 6f 6c 62 61 72 29 20 2d uttonstoolbar) -
43200 63 6f 6d 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 command RamDebug
43210 67 65 72 3a 3a 53 68 6f 77 42 75 74 74 6f 6e 73 ger::ShowButtons
43220 54 6f 6f 6c 42 61 72 5d 20 5c 0a 09 09 5b 6c 69 ToolBar] \...[li
43230 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 st command &[_ "
43240 54 6f 67 67 6c 65 20 74 6f 6f 62 61 72 73 20 61 Toggle toobars a
43250 6e 64 20 73 74 61 74 75 73 62 61 72 22 5d 20 7b nd statusbar"] {
43260 7d 20 5c 0a 09 09 5b 5f 20 22 54 6f 67 67 6c 65 } \...[_ "Toggle
43270 20 74 68 65 20 76 69 65 77 20 6f 66 20 74 68 65 the view of the
43280 20 74 6f 6f 6c 62 61 72 20 61 6e 64 20 74 68 65 toolbar and the
43290 20 73 74 61 74 75 73 62 61 72 22 5d 20 22 22 20 statusbar"] ""
432a0 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 \...-command "Ra
432b0 6d 44 65 62 75 67 67 65 72 3a 3a 54 6f 6f 67 6c mDebugger::Toogl
432c0 65 54 6f 6f 6c 62 61 72 73 53 74 61 74 75 73 62 eToolbarsStatusb
432d0 61 72 22 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 ar"] \...separat
432e0 6f 72 20 5c 0a 09 09 5d 20 5c 0a 09 09 26 5b 5f or \...] \...&[_
432f0 20 22 44 65 62 75 67 22 5d 20 61 6c 6c 20 64 65 "Debug"] all de
43300 62 75 67 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 bug 0 [list \...
43310 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b [list command &[
43320 5f 20 22 43 6f 6e 74 69 6e 75 65 2f 47 6f 22 5d _ "Continue/Go"]
43330 20 64 65 62 75 67 65 6e 74 72 79 20 5b 5f 20 22 debugentry [_ "
43340 62 65 67 69 6e 2f 63 6f 6e 74 69 6e 75 65 20 65 begin/continue e
43350 78 65 63 75 74 69 6f 6e 22 5d 20 22 46 35 22 20 xecution"] "F5"
43360 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 \...-command "Ra
43370 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e mDebugger::ContN
43380 65 78 74 47 55 49 20 72 63 6f 6e 74 22 5d 20 5c extGUI rcont"] \
43390 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
433a0 20 5b 5f 20 22 53 65 74 2f 75 6e 73 65 74 20 26 [_ "Set/unset &
433b0 62 72 65 61 6b 70 6f 69 6e 74 22 5d 20 64 65 62 breakpoint"] deb
433c0 75 67 65 6e 74 72 79 20 5b 5f 20 22 53 65 74 2f ugentry [_ "Set/
433d0 75 6e 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 unset breakpoint
433e0 22 5d 20 22 46 39 22 20 5c 0a 09 09 2d 63 6f 6d "] "F9" \...-com
433f0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
43400 72 3a 3a 53 65 74 47 55 49 42 72 65 61 6b 70 6f r::SetGUIBreakpo
43410 69 6e 74 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 int"] \...[list
43420 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 4e 65 78 command &[_ "Nex
43430 74 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20 5b t"] debugentry [
43440 5f 20 22 63 6f 6e 74 69 6e 75 65 20 6f 6e 65 20 _ "continue one
43450 63 6f 6d 6d 61 6e 64 22 5d 20 22 46 31 30 22 20 command"] "F10"
43460 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 \...-command "Ra
43470 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e mDebugger::ContN
43480 65 78 74 47 55 49 20 72 6e 65 78 74 22 5d 20 5c extGUI rnext"] \
43490 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
434a0 20 26 5b 5f 20 22 53 74 65 70 22 5d 20 64 65 62 &[_ "Step"] deb
434b0 75 67 65 6e 74 72 79 20 5b 5f 20 22 63 6f 6e 74 ugentry [_ "cont
434c0 69 6e 75 65 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 inue one command
434d0 2c 20 65 6e 74 65 72 69 6e 67 20 69 6e 20 73 75 , entering in su
434e0 62 63 6f 6d 6d 61 6e 64 73 22 5d 20 22 46 31 31 bcommands"] "F11
434f0 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 " \...-command "
43500 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e RamDebugger::Con
43510 74 4e 65 78 74 47 55 49 20 72 73 74 65 70 22 5d tNextGUI rstep"]
43520 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 \...[list comma
43530 6e 64 20 5b 5f 20 22 42 72 65 61 6b 22 5d 20 64 nd [_ "Break"] d
43540 65 62 75 67 65 6e 74 72 79 20 5b 5f 20 22 42 72 ebugentry [_ "Br
43550 65 61 6b 20 65 78 65 63 75 74 69 6f 6e 20 61 73 eak execution as
43560 20 66 61 73 74 20 61 73 20 70 6f 73 73 69 62 6c fast as possibl
43570 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d e"] "" \...-comm
43580 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
43590 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 6e ::ContNextGUI rn
435a0 65 78 74 66 75 6c 6c 22 5d 20 5c 0a 09 09 5b 6c extfull"] \...[l
435b0 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 ist command [_ "
435c0 52 65 74 75 72 6e 22 5d 20 64 65 62 75 67 65 6e Return"] debugen
435d0 74 72 79 20 5b 5f 20 22 4d 61 6b 65 73 20 74 68 try [_ "Makes th
435e0 65 20 63 6f 64 65 20 72 65 74 75 72 6e 20 66 72 e code return fr
435f0 6f 6d 20 70 72 6f 63 20 77 69 74 68 6f 75 74 20 om proc without
43600 66 69 6e 69 73 68 69 6e 67 20 65 78 65 63 75 74 finishing execut
43610 69 6f 6e 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f ion"] "" \...-co
43620 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 mmand "RamDebugg
43630 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 er::ContNextGUI
43640 72 6e 65 78 74 72 65 74 75 72 6e 22 5d 20 5c 0a rnextreturn"] \.
43650 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 ..[list command
43660 5b 5f 20 22 53 74 6f 70 20 64 65 62 75 67 67 69 [_ "Stop debuggi
43670 6e 67 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20 ng"] debugentry
43680 5b 5f 20 22 53 74 6f 70 20 63 75 72 72 65 6e 74 [_ "Stop current
43690 20 64 65 62 75 67 67 69 6e 67 22 5d 20 22 53 68 debugging"] "Sh
436a0 69 66 74 20 46 35 22 20 5c 0a 09 09 20 20 20 20 ift F5" \...
436b0 20 2d 63 6f 6d 6d 61 6e 64 20 52 61 6d 44 65 62 -command RamDeb
436c0 75 67 67 65 72 3a 3a 44 69 73 63 6f 6e 6e 65 63 ugger::Disconnec
436d0 74 53 74 6f 70 5d 20 5c 0a 09 09 73 65 70 61 72 tStop] \...separ
436e0 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 ator \...[list c
436f0 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43 6f 6e 74 69 ommand [_ "Conti
43700 6e 75 65 20 26 74 6f 22 5d 20 64 65 62 75 67 65 nue &to"] debuge
43710 6e 74 72 79 20 5b 5f 20 22 63 6f 6e 74 69 6e 75 ntry [_ "continu
43720 65 20 74 6f 20 73 65 6c 65 63 74 65 64 20 6c 69 e to selected li
43730 6e 65 22 5d 20 22 43 74 72 6c 20 46 35 22 20 5c ne"] "Ctrl F5" \
43740 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d ...-command "Ram
43750 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e 74 4e 65 Debugger::ContNe
43760 78 74 47 55 49 20 72 63 6f 6e 74 74 6f 22 5d 20 xtGUI rcontto"]
43770 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e \...[list comman
43780 64 20 5b 5f 20 22 43 6f 6e 74 69 6e 75 65 20 6f d [_ "Continue o
43790 75 74 20 6c 6f 6f 70 22 5d 20 64 65 62 75 67 65 ut loop"] debuge
437a0 6e 74 72 79 20 5b 5f 20 22 63 6f 6e 74 69 6e 75 ntry [_ "continu
437b0 65 20 74 6f 20 6a 75 73 74 20 61 66 74 65 72 20 e to just after
437c0 63 75 72 72 65 6e 74 20 6c 6f 6f 70 22 5d 20 22 current loop"] "
437d0 43 74 72 6c 20 46 31 30 22 20 5c 0a 09 09 2d 63 Ctrl F10" \...-c
437e0 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
437f0 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 ger::ContNextGUI
43800 20 72 63 6f 6e 74 6f 75 74 6c 6f 6f 70 22 5d 20 rcontoutloop"]
43810 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a \...separator \.
43820 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 ..[list command
43830 26 5b 5f 20 22 45 78 70 72 65 73 73 69 6f 6e 73 &[_ "Expressions
43840 22 5d 2e 2e 2e 20 64 65 62 75 67 65 6e 74 72 79 "]... debugentry
43850 20 5c 0a 09 09 20 20 20 20 5b 5f 20 22 4f 70 65 \... [_ "Ope
43860 6e 20 61 20 77 69 6e 64 6f 77 20 74 6f 20 76 69 n a window to vi
43870 73 75 61 6c 69 7a 65 20 65 78 70 72 65 73 69 6f sualize expresio
43880 6e 73 20 6f 72 20 76 61 72 69 61 62 6c 65 73 22 ns or variables"
43890 5d 20 22 46 31 32 22 20 5c 0a 09 09 2d 63 6f 6d ] "F12" \...-com
438a0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
438b0 72 3a 3a 44 69 73 70 6c 61 79 56 61 72 57 69 6e r::DisplayVarWin
438c0 64 6f 77 20 24 77 22 5d 20 5c 0a 09 09 5b 6c 69 dow $w"] \...[li
438d0 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 42 st command [_ "B
438e0 72 65 61 6b 70 6f 69 6e 74 73 22 5d 2e 2e 2e 20 reakpoints"]...
438f0 64 65 62 75 67 65 6e 74 72 79 20 5c 0a 09 09 20 debugentry \...
43900 20 20 20 5b 5f 20 22 4f 70 65 6e 20 61 20 77 69 [_ "Open a wi
43910 6e 64 6f 77 20 74 6f 20 76 69 73 75 61 6c 69 7a ndow to visualiz
43920 65 20 74 68 65 20 62 72 65 61 6b 70 6f 69 6e 74 e the breakpoint
43930 73 20 6c 69 73 74 22 5d 20 22 41 6c 74 20 46 39 s list"] "Alt F9
43940 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 " \...-command "
43950 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73 RamDebugger::Dis
43960 70 6c 61 79 42 72 65 61 6b 70 6f 69 6e 74 73 57 playBreakpointsW
43970 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5b 6c 69 73 indow"] \...[lis
43980 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 54 t command &[_ "T
43990 69 6d 69 6e 67 20 63 6f 6e 74 72 6f 6c 22 5d 2e iming control"].
439a0 2e 2e 20 64 65 62 75 67 65 6e 74 72 79 20 5c 0a .. debugentry \.
439b0 09 09 20 20 20 20 5b 5f 20 22 4f 70 65 6e 20 61 .. [_ "Open a
439c0 20 77 69 6e 64 6f 77 20 74 6f 20 63 6f 6e 74 72 window to contr
439d0 6f 6c 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d ol execution tim
439e0 65 73 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d es"] "" \...-com
439f0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
43a00 72 3a 3a 44 69 73 70 6c 61 79 54 69 6d 65 73 57 r::DisplayTimesW
43a10 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 5b 6c 69 73 indow"] \...[lis
43a20 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 50 t command &[_ "P
43a30 72 6f 66 69 6c 65 20 70 72 6f 63 65 64 75 72 65 rofile procedure
43a40 73 22 5d 20 64 65 62 75 67 65 6e 74 72 79 20 5c s"] debugentry \
43a50 0a 09 09 20 20 20 20 5b 5f 20 22 4f 70 65 6e 20 ... [_ "Open
43a60 61 20 77 69 6e 64 6f 77 20 74 6f 20 70 72 6f 66 a window to prof
43a70 69 6c 65 20 65 78 65 63 75 74 69 6f 6e 20 74 69 ile execution ti
43a80 6d 65 20 6f 66 20 70 72 6f 63 73 22 5d 20 22 22 me of procs"] ""
43a90 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 70 \...-command "p
43aa0 72 6f 66 69 6c 65 70 72 6f 63 73 3a 3a 4f 70 65 rofileprocs::Ope
43ab0 6e 47 55 49 22 5d 20 5c 0a 09 09 73 65 70 61 72 nGUI"] \...separ
43ac0 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 63 ator \...[list c
43ad0 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 52 65 69 6e ommand &[_ "Rein
43ae0 73 74 72 75 6d 65 6e 74 22 5d 20 64 65 62 75 67 strument"] debug
43af0 65 6e 74 72 79 20 5c 0a 09 09 5b 5f 20 22 52 65 entry \...[_ "Re
43b00 69 6e 73 74 72 75 6d 65 6e 74 20 61 6e 64 20 72 instrument and r
43b10 65 63 6f 6c 6f 72 69 7a 65 20 61 20 66 69 6c 65 ecolorize a file
43b20 22 5d 20 22 53 68 69 66 74 43 74 72 6c 20 52 22 "] "ShiftCtrl R"
43b30 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 \...-command "R
43b40 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 69 6e amDebugger::Rein
43b50 73 74 72 75 6d 65 6e 74 43 75 72 72 65 6e 74 46 strumentCurrentF
43b60 69 6c 65 22 5d 20 5c 0a 09 09 5d 20 5c 0a 09 09 ile"] \...] \...
43b70 26 5b 5f 20 22 43 2b 2b 20 70 72 6f 6a 65 63 74 &[_ "C++ project
43b80 22 5d 20 61 6c 6c 20 63 2b 2b 20 30 20 5b 6c 69 "] all c++ 0 [li
43b90 73 74 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d st \...[list com
43ba0 6d 61 6e 64 20 26 5b 5f 20 22 43 72 65 61 74 65 mand &[_ "Create
43bb0 2f 45 64 69 74 22 5d 20 63 2b 2b 65 6e 74 72 79 /Edit"] c++entry
43bc0 20 5b 5f 20 22 43 72 65 61 74 65 20 6f 72 20 65 [_ "Create or e
43bd0 64 69 74 20 61 20 63 2b 2b 20 63 6f 6d 70 69 6c dit a c++ compil
43be0 65 20 70 72 6f 6a 65 63 74 22 5d 20 22 41 6c 74 e project"] "Alt
43bf0 20 46 37 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e F7" \...-comman
43c00 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 d "cproject::Cre
43c10 61 74 65 20 24 77 22 5d 20 5c 0a 09 09 5b 6c 69 ate $w"] \...[li
43c20 73 74 20 63 61 73 63 61 64 20 5b 5f 20 22 43 26 st cascad [_ "C&
43c30 6f 6e 66 69 67 75 72 61 74 69 6f 6e 22 5d 20 7b onfiguration"] {
43c40 7d 20 61 63 74 69 76 65 63 6f 6e 66 69 67 75 72 } activeconfigur
43c50 61 74 69 6f 6e 20 30 20 5b 6c 69 73 74 20 5c 0a ation 0 [list \.
43c60 09 09 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 .. [list radi
43c70 6f 62 75 74 74 6f 6e 20 5b 5f 20 22 44 65 62 75 obutton [_ "Debu
43c80 67 22 5d 20 61 63 74 69 76 65 63 6f 6e 66 69 67 g"] activeconfig
43c90 75 72 61 74 69 6f 6e 20 5b 5f 20 22 43 6f 6d 70 uration [_ "Comp
43ca0 69 6c 65 20 64 65 62 75 67 20 76 65 72 73 69 6f ile debug versio
43cb0 6e 22 5d 20 22 22 20 5c 0a 09 09 20 20 20 20 20 n"] "" \...
43cc0 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d -variable Ram
43cd0 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e Debugger::option
43ce0 73 28 64 65 62 75 67 72 65 6c 65 61 73 65 29 20 s(debugrelease)
43cf0 2d 76 61 6c 75 65 20 64 65 62 75 67 20 2d 73 65 -value debug -se
43d00 6c 65 63 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d lectcolor black]
43d10 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 72 \... [list r
43d20 61 64 69 6f 62 75 74 74 6f 6e 20 5b 5f 20 22 52 adiobutton [_ "R
43d30 65 6c 65 61 73 65 22 5d 20 61 63 74 69 76 65 63 elease"] activec
43d40 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 5b 5f 20 onfiguration [_
43d50 22 43 6f 6d 70 69 6c 65 20 72 65 6c 65 61 73 65 "Compile release
43d60 20 76 65 72 73 69 6f 6e 22 5d 20 22 22 20 5c 0a version"] "" \.
43d70 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69 61 .. -varia
43d80 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72 3a ble RamDebugger:
43d90 3a 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 72 65 :options(debugre
43da0 6c 65 61 73 65 29 20 2d 76 61 6c 75 65 20 72 65 lease) -value re
43db0 6c 65 61 73 65 20 5c 0a 09 09 20 20 20 20 20 20 lease \...
43dc0 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 -selectcolor b
43dd0 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 73 65 lack] \... se
43de0 70 61 72 61 74 6f 72 20 5c 0a 09 09 20 20 20 20 parator \...
43df0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f [list command [_
43e00 20 22 54 6f 67 67 6c 65 22 5d 20 61 63 74 69 76 "Toggle"] activ
43e10 65 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 5b econfiguration [
43e20 5f 20 22 54 6f 67 67 6c 65 20 64 65 62 75 67 20 _ "Toggle debug
43e30 72 65 6c 65 61 73 65 20 76 65 72 73 69 6f 6e 22 release version"
43e40 5d 20 22 43 74 72 6c 20 46 37 22 20 5c 0a 09 09 ] "Ctrl F7" \...
43e50 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 6e 64 -command
43e60 20 22 63 70 72 6f 6a 65 63 74 3a 3a 54 6f 67 67 "cproject::Togg
43e70 6c 65 44 65 62 75 67 52 65 6c 65 61 73 65 22 5d leDebugRelease"]
43e80 20 5c 0a 09 09 20 20 20 20 20 20 20 20 5d 20 5c \... ] \
43e90 0a 09 09 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 ...] \...[list c
43ea0 6f 6d 6d 61 6e 64 20 5b 5f 20 22 43 6f 26 6d 70 ommand [_ "Co&mp
43eb0 69 6c 65 22 5d 20 63 2b 2b 65 6e 74 72 79 20 5b ile"] c++entry [
43ec0 5f 20 22 43 6f 6d 70 69 6c 65 20 70 72 6f 6a 65 _ "Compile proje
43ed0 63 74 22 5d 20 22 46 37 22 20 5c 0a 09 09 2d 63 ct"] "F7" \...-c
43ee0 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 ommand "cproject
43ef0 3a 3a 43 6f 6d 70 69 6c 65 20 24 77 22 5d 20 5c ::Compile $w"] \
43f00 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
43f10 20 5b 5f 20 22 43 6f 6d 26 70 69 6c 65 20 6e 6f [_ "Com&pile no
43f20 6e 20 73 74 6f 70 22 5d 20 63 2b 2b 65 6e 74 72 n stop"] c++entr
43f30 79 20 5b 5f 20 22 43 6f 6d 70 69 6c 65 20 70 72 y [_ "Compile pr
43f40 6f 6a 65 63 74 2c 20 64 6f 20 6e 6f 74 20 73 74 oject, do not st
43f50 6f 70 20 6f 6e 20 65 72 72 6f 72 73 22 5d 20 5c op on errors"] \
43f60 0a 09 09 22 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 ..."" -command "
43f70 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c cproject::Compil
43f80 65 4e 6f 53 74 6f 70 20 24 77 22 5d 20 5c 0a 09 eNoStop $w"] \..
43f90 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 5b .[list command [
43fa0 5f 20 22 43 6f 6d 70 69 6c 65 20 61 6c 6c 22 5d _ "Compile all"]
43fb0 20 63 2b 2b 65 6e 74 72 79 20 5b 5f 20 22 43 6f c++entry [_ "Co
43fc0 6d 70 69 6c 65 20 70 72 6f 6a 65 63 74 2c 20 61 mpile project, a
43fd0 6c 6c 20 74 61 72 67 65 74 73 22 5d 20 22 22 20 ll targets"] ""
43fe0 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 \...-command "cp
43ff0 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c 65 41 roject::CompileA
44000 6c 6c 20 24 77 22 5d 20 5c 0a 09 09 73 65 70 61 ll $w"] \...sepa
44010 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 73 74 20 rator \...[list
44020 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 54 6f 75 command &[_ "Tou
44030 63 68 20 66 69 6c 65 73 22 5d 20 63 2b 2b 65 6e ch files"] c++en
44040 74 72 79 20 5b 5f 20 22 41 63 74 75 61 6c 69 7a try [_ "Actualiz
44050 65 20 64 61 74 65 20 66 6f 72 20 61 6c 6c 20 63 e date for all c
44060 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 69 6c 65 73 ompilation files
44070 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 "] "" \...-comma
44080 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 54 6f nd "cproject::To
44090 75 63 68 46 69 6c 65 73 20 24 77 22 5d 20 5c 0a uchFiles $w"] \.
440a0 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 ..[list command
440b0 5b 5f 20 22 43 6c 26 65 61 6e 22 5d 20 63 2b 2b [_ "Cl&ean"] c++
440c0 65 6e 74 72 79 20 5b 5f 20 22 43 6c 65 61 6e 20 entry [_ "Clean
440d0 63 6f 6d 70 69 6c 65 64 20 70 72 6f 6a 65 63 74 compiled project
440e0 20 66 69 6c 65 73 22 5d 20 22 22 20 5c 0a 09 09 files"] "" \...
440f0 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 -command "cproje
44100 63 74 3a 3a 43 6c 65 61 6e 43 6f 6d 70 69 6c 65 ct::CleanCompile
44110 64 46 69 6c 65 73 20 24 77 22 5d 20 5c 0a 09 09 dFiles $w"] \...
44120 5d 20 5c 0a 09 09 26 5b 5f 20 22 55 74 69 6c 69 ] \...&[_ "Utili
44130 74 69 65 73 22 5d 20 61 6c 6c 20 75 74 69 6c 69 ties"] all utili
44140 74 69 65 73 20 30 20 5b 6c 69 73 74 20 5c 0a 09 ties 0 [list \..
44150 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 .[list command &
44160 5b 5f 20 22 4f 70 65 6e 20 63 6f 6e 73 6f 6c 65 [_ "Open console
44170 22 5d 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20 63 "] {} [_ "Open c
44180 6f 6e 73 6f 6c 65 22 5d 20 22 22 20 5c 0a 09 09 onsole"] "" \...
44190 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 -command "RamDeb
441a0 75 67 67 65 72 3a 3a 4f 70 65 6e 43 6f 6e 73 6f ugger::OpenConso
441b0 6c 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 le"] \...[list c
441c0 6f 6d 6d 61 6e 64 20 5b 5f 20 22 4f 26 70 65 6e ommand [_ "O&pen
441d0 20 56 69 73 75 61 6c 52 65 67 65 78 70 22 5d 20 VisualRegexp"]
441e0 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20 56 69 73 75 {} [_ "Open Visu
441f0 61 6c 52 65 67 65 78 70 22 5d 20 22 22 20 5c 0a alRegexp"] "" \.
44200 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 ..-command "RamD
44210 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 50 72 6f ebugger::OpenPro
44220 67 72 61 6d 20 76 69 73 75 61 6c 72 65 67 65 78 gram visualregex
44230 70 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f p"] \...[list co
44240 6d 6d 61 6e 64 20 5b 5f 20 22 4f 70 65 6e 20 54 mmand [_ "Open T
44250 6b 64 69 66 66 22 5d 20 7b 7d 20 5b 5f 20 22 4f kdiff"] {} [_ "O
44260 70 65 6e 20 54 6b 64 69 66 66 22 5d 20 22 22 20 pen Tkdiff"] ""
44270 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 \...-command "Ra
44280 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 50 mDebugger::OpenP
44290 72 6f 67 72 61 6d 20 74 6b 64 69 66 66 22 5d 20 rogram tkdiff"]
442a0 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e \...[list comman
442b0 64 20 5b 5f 20 22 4f 70 65 6e 20 54 6b 63 76 73 d [_ "Open Tkcvs
442c0 22 5d 20 7b 7d 20 5b 5f 20 22 4f 70 65 6e 20 54 "] {} [_ "Open T
442d0 6b 63 76 73 22 5d 20 22 22 20 5c 0a 09 09 20 20 kcvs"] "" \...
442e0 20 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 -command "RamD
442f0 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 50 72 6f ebugger::OpenPro
44300 67 72 61 6d 20 74 6b 63 76 73 22 5d 20 5c 0a 09 gram tkcvs"] \..
44310 09 20 20 20 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 . [list comma
44320 6e 64 20 5b 5f 20 22 56 65 72 73 69 6f 6e 20 63 nd [_ "Version c
44330 6f 6e 74 72 6f 6c 20 73 79 73 74 65 6d 22 5d 2e ontrol system"].
44340 2e 2e 20 7b 7d 20 5c 0a 09 09 20 20 20 20 5b 5f .. {} \... [_
44350 20 22 4f 70 65 6e 20 56 65 72 73 69 6f 6e 20 63 "Open Version c
44360 6f 6e 74 72 6f 6c 20 73 79 73 74 65 6d 20 77 69 ontrol system wi
44370 6e 64 6f 77 20 77 69 74 68 20 63 76 73 20 6f 72 ndow with cvs or
44380 20 66 6f 73 73 69 6c 22 5d 20 22 43 74 72 6c 20 fossil"] "Ctrl
44390 37 22 20 5c 0a 09 09 20 20 20 2d 63 6f 6d 6d 61 7" \... -comma
443a0 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a nd "RamDebugger:
443b0 3a 56 43 53 3a 3a 75 70 64 61 74 65 5f 72 65 63 :VCS::update_rec
443c0 75 72 73 69 76 65 20 2e 20 6c 61 73 74 22 5d 20 ursive . last"]
443d0 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a \...separator \.
443e0 09 20 20 20 20 20 20 20 5b 6c 69 73 74 20 63 61 . [list ca
443f0 73 63 61 64 20 5b 5f 20 22 46 69 6c 65 20 74 79 scad [_ "File ty
44400 70 65 22 5d 20 7b 7d 20 66 69 6c 65 74 79 70 65 pe"] {} filetype
44410 20 30 20 5b 6c 69 73 74 20 5c 0a 09 09 20 20 20 0 [list \...
44420 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75 74 74 [list radiobutt
44430 6f 6e 20 5b 5f 20 22 41 75 74 6f 6d 61 74 69 63 on [_ "Automatic
44440 22 5d 20 66 69 6c 65 74 79 70 65 20 5b 5f 20 22 "] filetype [_ "
44450 53 65 6c 65 63 74 69 6f 6e 20 69 73 20 6d 61 64 Selection is mad
44460 65 20 62 61 73 65 64 20 6f 6e 20 65 78 74 65 6e e based on exten
44470 73 69 6f 6e 22 5d 20 22 22 20 5c 0a 09 09 20 20 sion"] "" \...
44480 20 20 20 20 20 20 2d 76 61 72 69 61 62 6c 65 20 -variable
44490 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
444a0 69 6f 6e 73 28 66 69 6c 65 74 79 70 65 29 20 2d ions(filetype) -
444b0 76 61 6c 75 65 20 61 75 74 6f 20 2d 73 65 6c 65 value auto -sele
444c0 63 74 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c ctcolor black] \
444d0 0a 09 09 20 20 20 20 73 65 70 61 72 61 74 6f 72 ... separator
444e0 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 72 \... [list r
444f0 61 64 69 6f 62 75 74 74 6f 6e 20 5b 5f 20 22 54 adiobutton [_ "T
44500 43 4c 22 5d 20 66 69 6c 65 74 79 70 65 20 22 22 CL"] filetype ""
44510 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 "" \...
44520 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 -variable RamDeb
44530 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 66 ugger::options(f
44540 69 6c 65 74 79 70 65 29 20 2d 76 61 6c 75 65 20 iletype) -value
44550 54 43 4c 20 5c 0a 09 09 20 20 20 20 20 20 20 20 TCL \...
44560 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 -command [list R
44570 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e amDebugger::Chan
44580 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09 geFileType] \...
44590 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 -selectc
445a0 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 olor black] \...
445b0 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 [list radiob
445c0 75 74 74 6f 6e 20 5b 5f 20 22 43 2f 43 2b 2b 22 utton [_ "C/C++"
445d0 5d 20 66 69 6c 65 74 79 70 65 20 22 22 20 22 22 ] filetype "" ""
445e0 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 \... -va
445f0 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 riable RamDebugg
44600 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 er::options(file
44610 74 79 70 65 29 20 2d 76 61 6c 75 65 20 43 2f 43 type) -value C/C
44620 2b 2b 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d ++ \... -
44630 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 command [list Ra
44640 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67 mDebugger::Chang
44650 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09 20 eFileType] \...
44660 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 6f -selectco
44670 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 20 lor black] \...
44680 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75 [list radiobu
44690 74 74 6f 6e 20 5b 5f 20 22 58 4d 4c 22 5d 20 66 tton [_ "XML"] f
446a0 69 6c 65 74 79 70 65 20 22 22 20 22 22 20 5c 0a iletype "" "" \.
446b0 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69 61 .. -varia
446c0 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72 3a ble RamDebugger:
446d0 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 :options(filetyp
446e0 65 29 20 2d 76 61 6c 75 65 20 58 4d 4c 20 5c 0a e) -value XML \.
446f0 09 09 20 20 20 20 20 20 20 20 2d 63 6f 6d 6d 61 .. -comma
44700 6e 64 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 nd [list RamDebu
44710 67 67 65 72 3a 3a 43 68 61 6e 67 65 46 69 6c 65 gger::ChangeFile
44720 54 79 70 65 5d 20 5c 0a 09 09 20 20 20 20 20 20 Type] \...
44730 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 -selectcolor b
44740 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5b 6c lack] \... [l
44750 69 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e 20 ist radiobutton
44760 5b 5f 20 22 4d 61 6b 65 66 69 6c 65 22 5d 20 66 [_ "Makefile"] f
44770 69 6c 65 74 79 70 65 20 22 22 20 22 22 20 5c 0a iletype "" "" \.
44780 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 69 61 .. -varia
44790 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72 3a ble RamDebugger:
447a0 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 74 79 70 :options(filetyp
447b0 65 29 20 2d 76 61 6c 75 65 20 4d 61 6b 65 66 69 e) -value Makefi
447c0 6c 65 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d le \... -
447d0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 command [list Ra
447e0 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67 mDebugger::Chang
447f0 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09 20 eFileType] \...
44800 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 6f -selectco
44810 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 20 lor black] \...
44820 20 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75 [list radiobu
44830 74 74 6f 6e 20 5b 5f 20 22 47 69 44 20 42 41 53 tton [_ "GiD BAS
44840 20 66 69 6c 65 22 5d 20 66 69 6c 65 74 79 70 65 file"] filetype
44850 20 22 22 20 22 22 20 5c 0a 09 09 20 20 20 20 20 "" "" \...
44860 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d -variable Ram
44870 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e Debugger::option
44880 73 28 66 69 6c 65 74 79 70 65 29 20 2d 76 61 6c s(filetype) -val
44890 75 65 20 22 47 69 44 20 42 41 53 20 66 69 6c 65 ue "GiD BAS file
448a0 22 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 63 " \... -c
448b0 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d ommand [list Ram
448c0 44 65 62 75 67 67 65 72 3a 3a 43 68 61 6e 67 65 Debugger::Change
448d0 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 09 20 20 FileType] \...
448e0 20 20 20 20 20 20 2d 73 65 6c 65 63 74 63 6f 6c -selectcol
448f0 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 or black] \...
44900 20 20 5b 6c 69 73 74 20 72 61 64 69 6f 62 75 74 [list radiobut
44910 74 6f 6e 20 5b 5f 20 22 47 69 44 20 64 61 74 61 ton [_ "GiD data
44920 20 66 69 6c 65 73 22 5d 20 66 69 6c 65 74 79 70 files"] filetyp
44930 65 20 22 22 20 22 22 20 5c 0a 09 09 20 20 20 20 e "" "" \...
44940 20 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 -variable Ra
44950 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f mDebugger::optio
44960 6e 73 28 66 69 6c 65 74 79 70 65 29 20 2d 76 61 ns(filetype) -va
44970 6c 75 65 20 22 47 69 44 20 64 61 74 61 20 66 69 lue "GiD data fi
44980 6c 65 73 22 20 5c 0a 09 09 20 20 20 20 20 20 20 les" \...
44990 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 -command [list
449a0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 61 RamDebugger::Cha
449b0 6e 67 65 46 69 6c 65 54 79 70 65 5d 20 5c 0a 09 ngeFileType] \..
449c0 09 20 20 20 20 20 20 20 20 2d 73 65 6c 65 63 74 . -select
449d0 63 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 color black] \..
449e0 09 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 5c . separator \
449f0 0a 09 09 20 20 20 20 5b 6c 69 73 74 20 63 68 65 ... [list che
44a00 63 6b 62 75 74 74 6f 6e 20 5b 5f 20 22 4f 6e 6c ckbutton [_ "Onl
44a10 79 20 66 6f 72 20 74 68 69 73 20 66 69 6c 65 22 y for this file"
44a20 5d 20 66 69 6c 65 74 79 70 65 20 22 22 20 22 22 ] filetype "" ""
44a30 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 \... -va
44a40 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 riable RamDebugg
44a50 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 66 69 6c 65 er::options(file
44a60 74 79 70 65 5f 6f 6e 6c 79 5f 74 68 69 73 5f 66 type_only_this_f
44a70 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 20 20 ile) \...
44a80 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 6c -selectcolor bl
44a90 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5d 20 5c ack] \... ] \
44aa0 0a 09 09 5d 20 5c 0a 09 20 20 20 20 5b 6c 69 73 ...] \.. [lis
44ab0 74 20 63 61 73 63 61 64 20 5b 5f 20 22 46 69 6c t cascad [_ "Fil
44ac0 65 20 6c 69 6e 65 73 20 65 6e 64 22 5d 20 7b 7d e lines end"] {}
44ad0 20 66 69 6c 65 6c 69 6e 65 65 6e 64 20 30 20 5b filelineend 0 [
44ae0 6c 69 73 74 20 5c 0a 09 09 20 20 20 20 5b 6c 69 list \... [li
44af0 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e 20 5b st radiobutton [
44b00 5f 20 22 41 75 74 6f 6d 61 74 69 63 22 5d 20 66 _ "Automatic"] f
44b10 69 6c 65 6c 69 6e 65 65 6e 64 20 5b 5f 20 22 4e ilelineend [_ "N
44b20 61 74 69 76 65 20 6c 69 6e 65 20 65 6e 64 73 20 ative line ends
44b30 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 6f for the active o
44b40 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 22 perating system"
44b50 5d 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 20 ] "" \...
44b60 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65 -variable RamDe
44b70 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e 74 66 bugger::currentf
44b80 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 2d 76 61 6c ile_endline -val
44b90 75 65 20 61 75 74 6f 20 2d 73 65 6c 65 63 74 63 ue auto -selectc
44ba0 6f 6c 6f 72 20 62 6c 61 63 6b 5d 20 5c 0a 09 09 olor black] \...
44bb0 20 20 20 20 73 65 70 61 72 61 74 6f 72 20 5c 0a separator \.
44bc0 09 09 20 20 20 20 5b 6c 69 73 74 20 72 61 64 69 .. [list radi
44bd0 6f 62 75 74 74 6f 6e 20 5b 5f 20 22 55 6e 69 78 obutton [_ "Unix
44be0 22 5d 20 66 69 6c 65 6c 69 6e 65 65 6e 64 20 22 "] filelineend "
44bf0 22 20 22 22 20 5c 0a 09 09 20 20 20 20 20 20 20 " "" \...
44c00 20 2d 76 61 72 69 61 62 6c 65 20 52 61 6d 44 65 -variable RamDe
44c10 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e 74 66 bugger::currentf
44c20 69 6c 65 5f 65 6e 64 6c 69 6e 65 20 2d 76 61 6c ile_endline -val
44c30 75 65 20 6c 66 20 5c 0a 09 09 20 20 20 20 20 20 ue lf \...
44c40 20 20 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 -selectcolor b
44c50 6c 61 63 6b 5d 20 5c 0a 09 09 20 20 20 20 5b 6c lack] \... [l
44c60 69 73 74 20 72 61 64 69 6f 62 75 74 74 6f 6e 20 ist radiobutton
44c70 5b 5f 20 22 57 69 6e 64 6f 77 73 22 5d 20 66 69 [_ "Windows"] fi
44c80 6c 65 6c 69 6e 65 65 6e 64 20 22 22 20 22 22 20 lelineend "" ""
44c90 5c 0a 09 09 20 20 20 20 20 20 20 20 2d 76 61 72 \... -var
44ca0 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 67 65 iable RamDebugge
44cb0 72 3a 3a 63 75 72 72 65 6e 74 66 69 6c 65 5f 65 r::currentfile_e
44cc0 6e 64 6c 69 6e 65 20 2d 76 61 6c 75 65 20 63 72 ndline -value cr
44cd0 6c 66 20 5c 0a 09 09 20 20 20 20 20 20 20 20 2d lf \... -
44ce0 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 6c 61 63 selectcolor blac
44cf0 6b 5d 20 5c 0a 09 09 20 20 20 20 5d 20 5c 0a 09 k] \... ] \..
44d00 09 5d 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 .] \...separator
44d10 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 \...[list comma
44d20 6e 64 20 26 5b 5f 20 22 56 69 65 77 20 69 6e 73 nd &[_ "View ins
44d30 74 72 75 6d 65 6e 74 65 64 20 66 69 6c 65 20 50 trumented file P
44d40 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20 69 "] {} [_ "View i
44d50 6e 73 74 72 75 6d 65 6e 74 65 64 20 66 69 6c 65 nstrumented file
44d60 20 50 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d P"] "" \...-com
44d70 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
44d80 72 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d 65 6e r::ViewInstrumen
44d90 74 65 64 46 69 6c 65 20 69 6e 73 74 72 75 6d 65 tedFile instrume
44da0 6e 74 65 64 50 22 5d 20 5c 0a 09 09 5b 6c 69 73 ntedP"] \...[lis
44db0 74 20 63 6f 6d 6d 61 6e 64 20 5b 5f 20 22 56 69 t command [_ "Vi
44dc0 65 77 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 ew instrumented
44dd0 66 69 6c 65 20 52 22 5d 20 7b 7d 20 5b 5f 20 22 file R"] {} [_ "
44de0 56 69 65 77 20 69 6e 73 74 72 75 6d 65 6e 74 65 View instrumente
44df0 64 20 66 69 6c 65 20 52 22 5d 20 22 22 20 5c 0a d file R"] "" \.
44e00 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 ..-command "RamD
44e10 65 62 75 67 67 65 72 3a 3a 56 69 65 77 49 6e 73 ebugger::ViewIns
44e20 74 72 75 6d 65 6e 74 65 64 46 69 6c 65 20 69 6e trumentedFile in
44e30 73 74 72 75 6d 65 6e 74 65 64 52 22 5d 20 5c 0a strumentedR"] \.
44e40 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 ..[list command
44e50 5b 5f 20 22 56 69 65 77 20 69 6e 73 74 72 75 6d [_ "View instrum
44e60 65 6e 74 65 64 20 69 6e 66 6f 20 66 69 6c 65 22 ented info file"
44e70 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20 69 6e ] {} [_ "View in
44e80 73 74 72 75 6d 65 6e 74 65 64 20 69 6e 66 6f 20 strumented info
44e90 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63 file"] "" \...-c
44ea0 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
44eb0 67 65 72 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d ger::ViewInstrum
44ec0 65 6e 74 65 64 46 69 6c 65 20 69 6e 66 6f 22 5d entedFile info"]
44ed0 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 \...[list comma
44ee0 6e 64 20 5b 5f 20 22 56 69 65 77 20 69 6e 73 74 nd [_ "View inst
44ef0 72 75 6d 65 6e 74 65 64 20 74 69 6d 65 20 66 69 rumented time fi
44f00 6c 65 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 le"] {} [_ "View
44f10 20 69 6e 73 74 72 75 6d 65 6e 74 65 64 20 74 69 instrumented ti
44f20 6d 65 20 66 69 6c 65 22 5d 20 22 22 20 5c 0a 09 me file"] "" \..
44f30 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 .-command "RamDe
44f40 62 75 67 67 65 72 3a 3a 56 69 65 77 49 6e 73 74 bugger::ViewInst
44f50 72 75 6d 65 6e 74 65 64 46 69 6c 65 20 74 69 6d rumentedFile tim
44f60 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f e"] \...[list co
44f70 6d 6d 61 6e 64 20 5b 5f 20 22 56 69 65 77 20 67 mmand [_ "View g
44f80 64 62 20 6c 6f 67 22 5d 20 7b 7d 20 5c 0a 09 09 db log"] {} \...
44f90 20 20 5b 5f 20 22 56 69 65 77 20 61 6c 6c 20 63 [_ "View all c
44fa0 6f 6d 6d 61 6e 64 73 20 74 72 61 6e 73 66 65 72 ommands transfer
44fb0 72 65 64 20 66 72 6f 6d 2f 74 6f 20 67 64 62 2c red from/to gdb,
44fc0 20 69 66 20 64 65 62 75 67 67 69 6e 67 20 63 2b if debugging c+
44fd0 2b 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d +"] "" \...-comm
44fe0 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
44ff0 3a 3a 56 69 65 77 49 6e 73 74 72 75 6d 65 6e 74 ::ViewInstrument
45000 65 64 46 69 6c 65 20 67 64 62 22 5d 20 5c 0a 09 edFile gdb"] \..
45010 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 .[list command &
45020 5b 5f 20 22 43 6f 75 6e 74 20 4c 4f 43 22 5d 20 [_ "Count LOC"]
45030 7b 7d 20 5b 5f 20 22 43 6f 75 6e 74 20 6e 75 6d {} [_ "Count num
45040 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 6f 66 20 ber of lines of
45050 63 6f 64 65 22 5d 20 22 22 20 5c 0a 09 09 2d 63 code"] "" \...-c
45060 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 ommand "RamDebug
45070 67 65 72 3a 3a 43 6f 75 6e 74 4c 4f 43 49 6e 46 ger::CountLOCInF
45080 69 6c 65 73 20 24 77 22 5d 20 5c 0a 09 20 20 20 iles $w"] \..
45090 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 [list command &
450a0 5b 5f 20 22 53 68 6f 77 20 70 72 6f 63 65 73 73 [_ "Show process
450b0 65 73 22 5d 20 7b 7d 20 5b 5f 20 22 53 68 6f 77 es"] {} [_ "Show
450c0 20 72 75 6e 6e 69 6e 67 20 70 72 6f 63 65 73 73 running process
450d0 65 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 75 74 es in the comput
450e0 65 72 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d er"] "" \...-com
450f0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
45100 72 3a 3a 73 68 6f 77 5f 70 72 6f 63 65 73 73 65 r::show_processe
45110 73 5f 77 69 6e 64 6f 77 22 5d 20 5c 0a 09 09 73 s_window"] \...s
45120 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 5b 6c 69 eparator \...[li
45130 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 st command &[_ "
45140 57 69 6e 64 6f 77 73 20 68 69 65 72 61 72 63 68 Windows hierarch
45150 79 22 5d 20 7b 7d 20 5b 5f 20 22 56 69 65 77 20 y"] {} [_ "View
45160 77 69 6e 64 6f 77 73 20 68 69 65 72 61 72 63 68 windows hierarch
45170 79 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d y"] "" \...-comm
45180 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 and "RamDebugger
45190 3a 3a 44 69 73 70 6c 61 79 57 69 6e 64 6f 77 73 ::DisplayWindows
451a0 48 69 65 72 61 72 63 68 79 22 5d 20 5c 0a 09 09 Hierarchy"] \...
451b0 5d 20 5c 0a 09 09 26 5b 5f 20 22 48 65 6c 70 22 ] \...&[_ "Help"
451c0 5d 20 61 6c 6c 20 68 65 6c 70 20 30 20 5b 6c 69 ] all help 0 [li
451d0 73 74 20 5c 0a 09 09 5b 6c 69 73 74 20 63 6f 6d st \...[list com
451e0 6d 61 6e 64 20 26 5b 5f 20 22 48 65 6c 70 22 5d mand &[_ "Help"]
451f0 20 7b 7d 20 5b 5f 20 22 47 69 76 65 73 20 68 65 {} [_ "Gives he
45200 6c 70 22 5d 20 22 43 74 72 6c 20 68 22 20 5c 0a lp"] "Ctrl h" \.
45210 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 ..-command "RamD
45220 65 62 75 67 67 65 72 3a 3a 56 69 65 77 48 65 6c ebugger::ViewHel
45230 70 46 69 6c 65 22 5d 20 5c 0a 09 09 5b 6c 69 73 pFile"] \...[lis
45240 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 43 t command &[_ "C
45250 6f 6e 74 65 78 74 75 61 6c 20 68 65 6c 70 22 5d ontextual help"]
45260 20 7b 7d 20 5b 5f 20 22 47 69 76 65 73 20 68 65 {} [_ "Gives he
45270 6c 70 20 66 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 lp for commands
45280 69 6e 20 65 64 69 74 6f 72 22 5d 20 22 46 31 22 in editor"] "F1"
45290 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 \...-command "R
452a0 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77 amDebugger::View
452b0 48 65 6c 70 46 6f 72 57 6f 72 64 22 5d 20 5c 0a HelpForWord"] \.
452c0 09 09 73 65 70 61 72 61 74 6f 72 20 5c 0a 09 09 ..separator \...
452d0 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b [list command &[
452e0 5f 20 22 45 78 74 72 61 63 74 20 65 78 61 6d 70 _ "Extract examp
452f0 6c 65 73 22 5d 20 22 65 78 74 72 61 63 74 65 78 les"] "extractex
45300 61 6d 70 6c 65 73 22 20 5c 0a 09 09 20 20 20 20 amples" \...
45310 20 5b 5f 20 22 45 78 74 72 61 63 74 73 20 65 78 [_ "Extracts ex
45320 61 6d 70 6c 65 73 20 64 69 72 65 63 74 6f 72 79 amples directory
45330 20 74 6f 20 61 20 75 73 65 72 2d 73 65 6c 65 63 to a user-selec
45340 74 61 62 6c 65 20 64 69 72 65 63 74 6f 72 79 22 table directory"
45350 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e ] "" \...-comman
45360 64 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a d "RamDebugger::
45370 45 78 74 72 61 63 74 45 78 61 6d 70 6c 65 73 44 ExtractExamplesD
45380 69 72 22 5d 20 5c 0a 09 09 5b 6c 69 73 74 20 63 ir"] \...[list c
45390 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 52 65 67 69 ommand &[_ "Regi
453a0 73 74 65 72 20 63 6d 64 20 65 78 74 65 6e 73 69 ster cmd extensi
453b0 6f 6e 22 5d 2e 2e 2e 20 72 65 67 69 73 74 65 72 on"]... register
453c0 65 78 74 65 6e 73 69 6f 6e 20 5c 0a 09 09 20 20 extension \...
453d0 20 20 20 5b 5f 20 22 52 65 67 69 73 74 65 72 20 [_ "Register
453e0 52 61 6d 44 65 62 75 67 67 65 72 20 61 73 20 63 RamDebugger as c
453f0 6f 6d 6d 61 6e 64 20 69 6e 20 74 68 65 20 2e 74 ommand in the .t
45400 63 6c 20 65 78 74 65 6e 73 69 6f 6e 22 5d 20 22 cl extension"] "
45410 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 6e 64 20 22 " \...-command "
45420 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 52 65 67 RamDebugger::Reg
45430 69 73 74 65 72 45 78 74 65 6e 73 69 6f 6e 22 5d isterExtension"]
45440 20 5c 0a 09 09 73 65 70 61 72 61 74 6f 72 20 5c \...separator \
45450 0a 09 09 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64 ...[list command
45460 20 26 5b 5f 20 22 41 62 6f 75 74 22 5d 20 7b 7d &[_ "About"] {}
45470 20 5b 5f 20 22 49 6e 66 6f 72 6d 61 74 69 6f 6e [_ "Information
45480 20 61 62 6f 75 74 20 74 68 65 20 70 72 6f 67 72 about the progr
45490 61 6d 22 5d 20 22 22 20 5c 0a 09 09 2d 63 6f 6d am"] "" \...-com
454a0 6d 61 6e 64 20 22 52 61 6d 44 65 62 75 67 67 65 mand "RamDebugge
454b0 72 3a 3a 41 62 6f 75 74 57 69 6e 64 6f 77 22 5d r::AboutWindow"]
454c0 20 5c 0a 09 09 5d 0a 20 20 20 20 0a 23 20 20 20 \...]. .#
454d0 20 20 5b 6c 69 73 74 20 63 68 65 63 6b 62 75 74 [list checkbut
454e0 74 6f 6e 20 26 5b 5f 20 22 56 69 65 77 20 76 61 ton &[_ "View va
454f0 72 69 61 62 6c 65 73 20 70 61 6e 65 22 5d 20 7b riables pane"] {
45500 7d 20 5c 0a 23 20 20 20 20 20 20 20 20 20 20 20 } \.#
45510 20 20 20 20 20 20 5b 5f 20 22 54 6f 67 67 6c 65 [_ "Toggle
45520 20 62 65 74 77 65 65 6e 20 76 69 65 77 69 6e 67 between viewing
45530 20 74 68 65 76 69 65 77 20 76 61 72 69 61 62 6c theview variabl
45540 65 73 20 70 61 6e 65 22 5d 20 22 22 20 5c 0a 23 es pane"] "" \.#
45550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
45560 20 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 6d 44 65 -command "RamDe
45570 62 75 67 67 65 72 3a 3a 43 68 65 63 6b 56 69 65 bugger::CheckVie
45580 77 56 61 72 69 61 62 6c 65 73 50 61 6e 65 22 20 wVariablesPane"
45590 5c 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 \.#
455a0 20 20 20 20 2d 76 61 72 69 61 62 6c 65 20 52 61 -variable Ra
455b0 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f mDebugger::optio
455c0 6e 73 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 ns(viewvariables
455d0 70 61 6e 65 56 32 29 5d 20 5c 0a 0a 20 20 20 20 paneV2)] \..
455e0 0a 20 20 20 20 69 66 20 7b 20 5b 20 74 6b 20 77 . if { [ tk w
455f0 69 6e 64 6f 77 69 6e 67 73 79 73 74 65 6d 5d 20 indowingsystem]
45600 65 71 20 22 61 71 75 61 22 20 26 26 20 5b 20 69 eq "aqua" && [ i
45610 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 47 49 44 nfo exists ::GID
45620 44 45 46 41 55 4c 54 5d 20 7d 20 7b 0a 09 73 65 DEFAULT] } {..se
45630 74 20 64 65 73 63 6d 65 6e 75 5f 6f 6c 64 20 24 t descmenu_old $
45640 64 65 73 63 6d 65 6e 75 0a 09 73 65 74 20 64 65 descmenu..set de
45650 73 63 6d 65 6e 75 20 22 22 0a 09 73 65 74 20 62 scmenu ""..set b
45660 61 64 20 5b 6c 69 73 74 20 26 5b 5f 20 22 50 72 ad [list &[_ "Pr
45670 65 66 65 72 65 6e 63 65 73 22 5d 20 26 5b 5f 20 eferences"] &[_
45680 22 41 62 6f 75 74 22 5d 20 26 5b 5f 20 22 45 78 "About"] &[_ "Ex
45690 74 72 61 63 74 20 65 78 61 6d 70 6c 65 73 22 5d tract examples"]
456a0 20 5c 0a 09 09 26 5b 5f 20 22 52 65 67 69 73 74 \...&[_ "Regist
456b0 65 72 20 63 6d 64 20 65 78 74 65 6e 73 69 6f 6e er cmd extension
456c0 22 5d 2e 2e 2e 5d 0a 09 66 6f 72 65 61 63 68 20 "]...]..foreach
456d0 22 6d 65 6e 75 6e 61 6d 65 20 74 61 67 73 20 6d "menuname tags m
456e0 65 6e 75 49 64 20 74 65 61 72 6f 66 66 20 6d 65 enuId tearoff me
456f0 6e 75 65 6e 74 72 69 65 73 22 20 24 64 65 73 63 nuentries" $desc
45700 6d 65 6e 75 5f 6f 6c 64 20 7b 0a 09 20 20 20 20 menu_old {..
45710 73 65 74 20 6d 65 6e 75 65 6e 74 72 69 65 73 4e set menuentriesN
45720 20 22 22 0a 09 20 20 20 20 66 6f 72 65 61 63 68 "".. foreach
45730 20 69 20 24 6d 65 6e 75 65 6e 74 72 69 65 73 20 i $menuentries
45740 7b 0a 09 09 69 66 20 7b 20 5b 6c 69 6e 64 65 78 {...if { [lindex
45750 20 24 69 20 31 5d 20 69 6e 20 24 62 61 64 20 7d $i 1] in $bad }
45760 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 6c {... if { [l
45770 69 6e 64 65 78 20 24 6d 65 6e 75 65 6e 74 72 69 index $menuentri
45780 65 73 4e 20 65 6e 64 5d 20 65 71 20 22 73 65 70 esN end] eq "sep
45790 61 72 61 74 6f 72 22 20 7d 20 7b 0a 09 09 20 20 arator" } {...
457a0 20 20 20 20 20 20 73 65 74 20 6d 65 6e 75 65 6e set menuen
457b0 74 72 69 65 73 4e 20 5b 6c 72 61 6e 67 65 20 24 triesN [lrange $
457c0 6d 65 6e 75 65 6e 74 72 69 65 73 4e 20 30 20 65 menuentriesN 0 e
457d0 6e 64 2d 31 5d 0a 09 09 20 20 20 20 7d 0a 09 09 nd-1]... }...
457e0 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 09 09 7d continue...}
457f0 0a 09 09 6c 61 70 70 65 6e 64 20 6d 65 6e 75 65 ...lappend menue
45800 6e 74 72 69 65 73 4e 20 24 69 0a 09 20 20 20 20 ntriesN $i..
45810 7d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 }.. lappend d
45820 65 73 63 6d 65 6e 75 20 24 6d 65 6e 75 6e 61 6d escmenu $menunam
45830 65 20 24 74 61 67 73 20 24 6d 65 6e 75 49 64 20 e $tags $menuId
45840 24 74 65 61 72 6f 66 66 20 24 6d 65 6e 75 65 6e $tearoff $menuen
45850 74 72 69 65 73 4e 0a 09 7d 0a 20 20 20 20 7d 0a triesN..}. }.
45860 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e 63 if { $iswinc
45870 65 20 7d 20 7b 0a 09 73 65 74 20 64 65 73 63 6d e } {..set descm
45880 65 6e 75 5f 6f 6c 64 20 24 64 65 73 63 6d 65 6e enu_old $descmen
45890 75 0a 09 73 65 74 20 6d 65 6e 75 65 6e 74 72 69 u..set menuentri
458a0 65 73 47 20 22 22 0a 09 66 6f 72 65 61 63 68 20 esG ""..foreach
458b0 22 6d 65 6e 75 6e 61 6d 65 20 74 61 67 73 20 6d "menuname tags m
458c0 65 6e 75 49 64 20 74 65 61 72 6f 66 66 20 6d 65 enuId tearoff me
458d0 6e 75 65 6e 74 72 69 65 73 22 20 24 64 65 73 63 nuentries" $desc
458e0 6d 65 6e 75 5f 6f 6c 64 20 7b 0a 09 20 20 20 20 menu_old {..
458f0 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 2d 65 if { [lsearch -e
45900 78 61 63 74 20 5b 6c 69 73 74 20 64 65 62 75 67 xact [list debug
45910 20 63 2b 2b 5d 20 24 6d 65 6e 75 49 64 5d 20 21 c++] $menuId] !
45920 3d 20 2d 31 20 7d 20 7b 20 63 6f 6e 74 69 6e 75 = -1 } { continu
45930 65 20 7d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 e }.. lappend
45940 20 6d 65 6e 75 65 6e 74 72 69 65 73 47 20 5b 6c menuentriesG [l
45950 69 73 74 20 63 61 73 63 61 64 20 24 6d 65 6e 75 ist cascad $menu
45960 6e 61 6d 65 20 24 74 61 67 73 20 24 6d 65 6e 75 name $tags $menu
45970 49 64 20 30 20 24 6d 65 6e 75 65 6e 74 72 69 65 Id 0 $menuentrie
45980 73 5d 0a 09 7d 0a 09 6c 61 70 70 65 6e 64 20 6d s]..}..lappend m
45990 65 6e 75 65 6e 74 72 69 65 73 47 20 73 65 70 61 enuentriesG sepa
459a0 72 61 74 6f 72 20 5c 0a 09 20 20 20 20 5b 6c 69 rator \.. [li
459b0 73 74 20 63 6f 6d 6d 61 6e 64 20 26 5b 5f 20 22 st command &[_ "
459c0 51 75 69 74 22 5d 20 7b 7d 20 5b 5f 20 22 45 78 Quit"] {} [_ "Ex
459d0 69 74 20 70 72 6f 67 72 61 6d 22 5d 20 22 43 74 it program"] "Ct
459e0 72 6c 20 71 22 20 5c 0a 09 09 2d 63 6f 6d 6d 61 rl q" \...-comma
459f0 6e 64 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a nd RamDebugger::
45a00 45 78 69 74 47 55 49 5d 0a 09 73 65 74 20 64 65 ExitGUI]..set de
45a10 73 63 6d 65 6e 75 20 5b 6c 69 73 74 20 26 5b 5f scmenu [list &[_
45a20 20 22 4d 65 6e 75 22 5d 20 61 6c 6c 20 6d 65 6e "Menu"] all men
45a30 75 20 30 20 24 6d 65 6e 75 65 6e 74 72 69 65 73 u 0 $menuentries
45a40 47 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 G]. }. set
45a50 20 6d 61 69 6e 66 72 61 6d 65 20 5b 4d 61 69 6e mainframe [Main
45a60 46 72 61 6d 65 20 24 77 2e 6d 61 69 6e 66 72 61 Frame $w.mainfra
45a70 6d 65 20 5c 0a 09 09 20 20 20 20 20 20 20 2d 74 me \... -t
45a80 65 78 74 76 61 72 69 61 62 6c 65 20 52 61 6d 44 extvariable RamD
45a90 65 62 75 67 67 65 72 3a 3a 73 74 61 74 75 73 20 ebugger::status
45aa0 5c 0a 09 09 20 20 20 20 20 20 20 2d 70 72 6f 67 \... -prog
45ab0 72 65 73 73 76 61 72 20 52 61 6d 44 65 62 75 67 ressvar RamDebug
45ac0 67 65 72 3a 3a 70 72 6f 67 72 65 73 73 76 61 72 ger::progressvar
45ad0 20 2d 70 72 6f 67 72 65 73 73 6d 61 78 20 31 30 -progressmax 10
45ae0 30 20 5c 0a 09 09 20 20 20 20 20 20 20 2d 70 72 0 \... -pr
45af0 6f 67 72 65 73 73 74 79 70 65 20 6e 6f 72 6d 61 ogresstype norma
45b00 6c 20 2d 6d 65 6e 75 20 24 64 65 73 63 6d 65 6e l -menu $descmen
45b10 75 20 2d 67 72 69 64 20 30 5d 0a 20 20 20 20 23 u -grid 0]. #
45b20 24 6d 61 69 6e 66 72 61 6d 65 20 73 68 6f 77 73 $mainframe shows
45b30 74 61 74 75 73 62 61 72 20 70 72 6f 67 72 65 73 tatusbar progres
45b40 73 69 6f 6e 20 0a 0a 20 20 20 20 69 66 20 7b 20 sion .. if {
45b50 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
45b60 70 6c 61 74 66 6f 72 6d 29 20 6e 65 20 22 77 69 platform) ne "wi
45b70 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 24 6d 61 69 ndows" } {..$mai
45b80 6e 66 72 61 6d 65 20 73 65 74 6d 65 6e 75 73 74 nframe setmenust
45b90 61 74 65 20 72 65 67 69 73 74 65 72 65 78 74 65 ate registerexte
45ba0 6e 73 69 6f 6e 20 64 69 73 61 62 6c 65 64 0a 20 nsion disabled.
45bb0 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 }.. if { !
45bc0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 73 [info exists ::s
45bd0 74 61 72 6b 69 74 3a 3a 74 6f 70 64 69 72 5d 20 tarkit::topdir]
45be0 7d 20 7b 0a 09 24 6d 61 69 6e 66 72 61 6d 65 20 } {..$mainframe
45bf0 73 65 74 6d 65 6e 75 73 74 61 74 65 20 65 78 74 setmenustate ext
45c00 72 61 63 74 65 78 61 6d 70 6c 65 73 20 64 69 73 ractexamples dis
45c10 61 62 6c 65 64 0a 20 20 20 20 7d 0a 20 20 20 20 abled. }.
45c20 0a 20 20 20 20 73 65 74 20 76 69 65 77 5f 6d 65 . set view_me
45c30 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 nu [$mainframe g
45c40 65 74 6d 65 6e 75 20 76 69 65 77 5d 0a 20 20 20 etmenu view].
45c50 20 73 65 74 20 69 70 6f 73 20 5b 24 76 69 65 77 set ipos [$view
45c60 5f 6d 65 6e 75 20 69 6e 64 65 78 20 5b 5f 20 22 _menu index [_ "
45c70 44 65 63 72 65 61 73 65 20 66 6f 6e 74 22 5d 5d Decrease font"]]
45c80 0a 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73 20 . if { $ipos
45c90 21 3d 20 2d 31 20 7d 20 7b 0a 09 24 76 69 65 77 != -1 } {..$view
45ca0 5f 6d 65 6e 75 20 65 6e 74 72 79 63 6f 6e 66 69 _menu entryconfi
45cb0 67 75 72 65 20 24 69 70 6f 73 20 2d 61 63 63 65 gure $ipos -acce
45cc0 6c 65 72 61 74 6f 72 20 22 43 74 72 6c 2d 75 20 lerator "Ctrl-u
45cd0 43 74 72 6c 2d 2d 22 0a 20 20 20 20 7d 0a 20 20 Ctrl--". }.
45ce0 20 20 73 65 74 20 69 70 6f 73 20 5b 24 76 69 65 set ipos [$vie
45cf0 77 5f 6d 65 6e 75 20 69 6e 64 65 78 20 5b 5f 20 w_menu index [_
45d00 22 49 6e 63 72 65 61 73 65 20 66 6f 6e 74 22 5d "Increase font"]
45d10 5d 0a 20 20 20 20 69 66 20 7b 20 24 69 70 6f 73 ]. if { $ipos
45d20 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 24 76 69 65 != -1 } {..$vie
45d30 77 5f 6d 65 6e 75 20 65 6e 74 72 79 63 6f 6e 66 w_menu entryconf
45d40 69 67 75 72 65 20 24 69 70 6f 73 20 2d 61 63 63 igure $ipos -acc
45d50 65 6c 65 72 61 74 6f 72 20 22 43 74 72 6c 2d 75 elerator "Ctrl-u
45d60 20 43 74 72 6c 2d 2b 22 0a 20 20 20 20 7d 0a 0a Ctrl-+". }..
45d70 20 20 20 20 73 65 74 20 63 76 73 5f 69 6e 64 69 set cvs_indi
45d80 63 61 74 6f 72 5f 66 72 61 6d 65 20 5b 24 6d 61 cator_frame [$ma
45d90 69 6e 66 72 61 6d 65 20 61 64 64 69 6e 64 69 63 inframe addindic
45da0 61 74 6f 72 20 2d 77 69 64 74 68 20 31 30 20 5c ator -width 10 \
45db0 0a 09 20 20 20 20 2d 61 6e 63 68 6f 72 20 65 20 .. -anchor e
45dc0 2d 70 61 64 78 20 33 5d 0a 20 20 20 20 52 61 6d -padx 3]. Ram
45dd0 44 65 62 75 67 67 65 72 3a 3a 56 43 53 3a 3a 69 Debugger::VCS::i
45de0 6e 64 69 63 61 74 6f 72 5f 69 6e 69 74 20 24 63 ndicator_init $c
45df0 76 73 5f 69 6e 64 69 63 61 74 6f 72 5f 66 72 61 vs_indicator_fra
45e00 6d 65 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 me. . set
45e10 6c 61 62 65 6c 20 5b 24 6d 61 69 6e 66 72 61 6d label [$mainfram
45e20 65 20 61 64 64 69 6e 64 69 63 61 74 6f 72 20 2d e addindicator -
45e30 74 65 78 74 76 61 72 69 61 62 6c 65 20 52 61 6d textvariable Ram
45e40 44 65 62 75 67 67 65 72 3a 3a 64 65 62 75 67 67 Debugger::debugg
45e50 65 72 73 74 61 74 65 20 2d 77 69 64 74 68 20 36 erstate -width 6
45e60 20 5c 0a 09 20 20 20 20 2d 61 6e 63 68 6f 72 20 \.. -anchor
45e70 65 20 2d 70 61 64 78 20 33 5d 0a 0a 20 20 20 20 e -padx 3]..
45e80 62 69 6e 64 20 24 6c 61 62 65 6c 20 3c 31 3e 20 bind $label <1>
45e90 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
45ea0 72 3a 3a 44 69 73 70 6c 61 79 54 69 6d 65 73 57 r::DisplayTimesW
45eb0 69 6e 64 6f 77 4d 65 6e 75 20 24 6c 61 62 65 6c indowMenu $label
45ec0 20 25 58 20 25 59 5d 0a 0a 20 20 20 20 73 65 74 %X %Y].. set
45ed0 20 6c 61 62 65 6c 20 5b 24 6d 61 69 6e 66 72 61 label [$mainfra
45ee0 6d 65 20 61 64 64 69 6e 64 69 63 61 74 6f 72 20 me addindicator
45ef0 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 52 61 -textvariable Ra
45f00 6d 44 65 62 75 67 67 65 72 3a 3a 4c 69 6e 65 4e mDebugger::LineN
45f10 75 6d 20 2d 77 69 64 74 68 20 36 20 5c 0a 09 20 um -width 6 \..
45f20 20 20 20 2d 61 6e 63 68 6f 72 20 65 20 2d 70 61 -anchor e -pa
45f30 64 78 20 33 5d 0a 20 20 20 20 73 65 74 20 4c 69 dx 3]. set Li
45f40 6e 65 4e 75 6d 5f 6c 61 62 65 6c 20 24 6c 61 62 neNum_label $lab
45f50 65 6c 0a 0a 20 20 20 20 62 69 6e 64 20 24 6c 61 el.. bind $la
45f60 62 65 6c 20 3c 31 3e 20 52 61 6d 44 65 62 75 67 bel <1> RamDebug
45f70 67 65 72 3a 3a 47 6f 74 6f 4c 69 6e 65 0a 20 20 ger::GotoLine.
45f80 20 20 73 65 74 20 6c 61 62 65 6c 20 5b 24 6d 61 set label [$ma
45f90 69 6e 66 72 61 6d 65 20 61 64 64 69 6e 64 69 63 inframe addindic
45fa0 61 74 6f 72 20 2d 74 65 78 74 76 61 72 69 61 62 ator -textvariab
45fb0 6c 65 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a le RamDebugger::
45fc0 72 65 6d 6f 74 65 73 65 72 76 65 72 20 2d 77 69 remoteserver -wi
45fd0 64 74 68 20 31 35 20 5c 0a 09 09 20 20 20 2d 61 dth 15 \... -a
45fe0 6e 63 68 6f 72 20 65 20 2d 70 61 64 78 20 33 20 nchor e -padx 3
45ff0 2d 61 6e 63 68 6f 72 20 77 5d 0a 20 20 20 20 73 -anchor w]. s
46000 65 74 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 et menu [$mainfr
46010 61 6d 65 20 67 65 74 6d 65 6e 75 20 61 63 74 69 ame getmenu acti
46020 76 65 70 72 6f 67 72 61 6d 73 5d 0a 20 20 20 20 veprograms].
46030 73 65 74 20 6d 65 6e 75 31 20 5b 6d 65 6e 75 20 set menu1 [menu
46040 24 77 2e 61 63 74 75 61 6c 69 7a 65 70 72 6f 67 $w.actualizeprog
46050 72 61 6d 73 6d 65 6e 75 20 2d 74 65 61 72 6f 66 ramsmenu -tearof
46060 66 20 30 5d 0a 20 20 20 20 24 6d 65 6e 75 31 20 f 0]. $menu1
46070 63 6f 6e 66 69 67 75 72 65 20 2d 70 6f 73 74 63 configure -postc
46080 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d ommand [list Ram
46090 44 65 62 75 67 67 65 72 3a 3a 41 63 74 75 61 6c Debugger::Actual
460a0 69 7a 65 41 63 74 69 76 65 50 72 6f 67 72 61 6d izeActiveProgram
460b0 73 20 24 6d 65 6e 75 31 20 31 5d 0a 0a 20 20 20 s $menu1 1]..
460c0 20 62 69 6e 64 20 24 6c 61 62 65 6c 20 3c 31 3e bind $label <1>
460d0 20 22 74 6b 5f 70 6f 70 75 70 20 24 6d 65 6e 75 "tk_popup $menu
460e0 31 20 25 58 20 25 59 22 0a 20 20 20 20 73 65 74 1 %X %Y". set
460f0 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d menu [$mainfram
46100 65 20 67 65 74 6d 65 6e 75 20 76 69 65 77 5d 0a e getmenu view].
46110 20 20 20 20 24 6d 65 6e 75 20 63 6f 6e 66 69 67 $menu config
46120 75 72 65 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 ure -postcommand
46130 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
46140 65 72 3a 3a 41 63 74 75 61 6c 69 7a 65 56 69 65 er::ActualizeVie
46150 77 4d 65 6e 75 20 24 6d 65 6e 75 5d 0a 0a 20 20 wMenu $menu]..
46160 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61 69 set menu [$mai
46170 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 72 nframe getmenu r
46180 65 63 65 6e 74 66 69 6c 65 73 5d 0a 20 20 20 20 ecentfiles].
46190 24 6d 65 6e 75 20 63 6f 6e 66 69 67 75 72 65 20 $menu configure
461a0 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 5b 6c 69 -postcommand [li
461b0 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
461c0 41 64 64 52 65 63 65 6e 74 66 69 6c 65 73 54 6f AddRecentfilesTo
461d0 4d 65 6e 75 20 24 6d 65 6e 75 5d 0a 0a 20 20 20 Menu $menu]..
461e0 20 23 20 76 65 72 79 20 64 69 72 74 79 2e 20 57 # very dirty. W
461f0 69 74 68 6f 75 74 20 69 74 2c 20 74 68 65 20 72 ithout it, the r
46200 61 64 69 6f 62 75 74 74 6f 6e 20 69 6e 64 69 63 adiobutton indic
46210 61 74 6f 72 20 69 73 20 6e 6f 74 20 64 72 61 77 ator is not draw
46220 6e 2e 20 57 68 79 3f 3f 3f 0a 20 20 20 20 73 65 n. Why???. se
46230 74 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 t menu [$mainfra
46240 6d 65 20 67 65 74 6d 65 6e 75 20 61 63 74 69 76 me getmenu activ
46250 65 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 0a econfiguration].
46260 20 20 20 20 63 61 74 63 68 20 7b 20 24 6d 65 6e catch { $men
46270 75 20 63 6f 6e 66 20 2d 70 6f 73 74 63 6f 6d 6d u conf -postcomm
46280 61 6e 64 20 22 24 6d 65 6e 75 20 63 6f 6e 66 20 and "$menu conf
46290 2d 73 65 6c 65 63 74 63 6f 6c 6f 72 20 62 6c 61 -selectcolor bla
462a0 63 6b 22 20 7d 0a 0a 20 20 20 20 0a 20 20 20 20 ck" }.. .
462b0 70 6c 61 63 65 20 5b 74 74 6b 3a 3a 73 69 7a 65 place [ttk::size
462c0 67 72 69 70 20 24 6c 61 62 65 6c 2e 73 67 5d 20 grip $label.sg]
462d0 2d 72 65 6c 78 20 31 20 2d 72 65 6c 79 20 31 20 -relx 1 -rely 1
462e0 2d 61 6e 63 68 6f 72 20 73 65 0a 20 20 20 20 0a -anchor se. .
462f0 20 20 20 20 73 65 74 20 66 20 5b 24 6d 61 69 6e set f [$main
46300 66 72 61 6d 65 20 67 65 74 66 72 61 6d 65 5d 0a frame getframe].
46310 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 . ###########
46320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
46330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
46340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
46350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
46360 23 23 23 23 23 0a 20 20 20 20 23 20 20 20 20 20 #####. #
46370 54 68 65 20 74 6f 6f 6c 62 61 72 0a 20 20 20 20 The toolbar.
46380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
46390 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
463a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
463b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
463c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
463d0 0a 0a 20 20 20 20 69 66 20 7b 20 21 24 69 73 77 .. if { !$isw
463e0 69 6e 63 65 20 7d 20 7b 0a 09 73 65 74 20 74 20 ince } {..set t
463f0 5b 24 6d 61 69 6e 66 72 61 6d 65 20 61 64 64 74 [$mainframe addt
46400 6f 6f 6c 62 61 72 5d 0a 09 73 65 74 20 74 6f 6f oolbar]..set too
46410 6c 62 61 72 20 5b 74 74 6b 3a 3a 66 72 61 6d 65 lbar [ttk::frame
46420 20 24 74 2e 74 6f 6f 6c 62 61 72 5d 0a 09 70 6c $t.toolbar]..pl
46430 61 63 65 20 24 74 6f 6f 6c 62 61 72 20 2d 61 6e ace $toolbar -an
46440 63 68 6f 72 20 6e 77 20 2d 72 65 6c 78 20 30 20 chor nw -relx 0
46450 2d 79 20 30 0a 09 62 69 6e 64 20 24 74 6f 6f 6c -y 0..bind $tool
46460 62 61 72 20 3c 43 6f 6e 66 69 67 75 72 65 3e 20 bar <Configure>
46470 7b 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 { [winfo parent
46480 25 57 5d 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 %W] configure -h
46490 65 69 67 68 74 20 5b 65 78 70 72 20 7b 5b 77 69 eight [expr {[wi
464a0 6e 66 6f 20 68 65 69 67 68 74 20 25 57 5d 2b 34 nfo height %W]+4
464b0 7d 5d 20 7d 0a 09 62 69 6e 64 20 24 74 6f 6f 6c }] }..bind $tool
464c0 62 61 72 20 3c 42 75 74 74 6f 6e 50 72 65 73 73 bar <ButtonPress
464d0 2d 31 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 -1> [list RamDeb
464e0 75 67 67 65 72 3a 3a 6d 6f 76 65 5f 74 6f 6f 6c ugger::move_tool
464f0 62 61 72 20 42 50 31 20 25 57 20 24 74 6f 6f 6c bar BP1 %W $tool
46500 62 61 72 20 25 58 5d 0a 09 62 69 6e 64 20 24 74 bar %X]..bind $t
46510 6f 6f 6c 62 61 72 20 3c 42 31 2d 4d 6f 74 69 6f oolbar <B1-Motio
46520 6e 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 n> [list RamDebu
46530 67 67 65 72 3a 3a 6d 6f 76 65 5f 74 6f 6f 6c 62 gger::move_toolb
46540 61 72 20 42 4d 31 20 25 57 20 24 74 6f 6f 6c 62 ar BM1 %W $toolb
46550 61 72 20 25 58 5d 0a 09 62 69 6e 64 20 24 74 6f ar %X]..bind $to
46560 6f 6c 62 61 72 20 3c 41 6c 74 2d 4c 65 66 74 3e olbar <Alt-Left>
46570 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
46580 65 72 3a 3a 6d 6f 76 65 5f 74 6f 6f 6c 62 61 72 er::move_toolbar
46590 20 6c 65 66 74 20 25 57 20 24 74 6f 6f 6c 62 61 left %W $toolba
465a0 72 20 25 58 5d 0a 09 62 69 6e 64 20 24 74 6f 6f r %X]..bind $too
465b0 6c 62 61 72 20 3c 41 6c 74 2d 52 69 67 68 74 3e lbar <Alt-Right>
465c0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
465d0 65 72 3a 3a 6d 6f 76 65 5f 74 6f 6f 6c 62 61 72 er::move_toolbar
465e0 20 72 69 67 68 74 20 25 57 20 24 74 6f 6f 6c 62 right %W $toolb
465f0 61 72 20 25 58 5d 0a 20 20 20 20 7d 20 65 6c 73 ar %X]. } els
46600 65 20 7b 0a 09 24 6d 61 69 6e 66 72 61 6d 65 20 e {..$mainframe
46610 61 64 64 74 6f 6f 6c 62 61 72 0a 09 73 65 74 20 addtoolbar..set
46620 74 6f 6f 6c 62 61 72 20 5b 74 74 6b 3a 3a 66 72 toolbar [ttk::fr
46630 61 6d 65 20 24 66 2e 74 6f 6f 6c 62 61 72 5d 0a ame $f.toolbar].
46640 09 67 72 69 64 20 24 74 6f 6f 6c 62 61 72 20 2d .grid $toolbar -
46650 73 74 69 63 6b 79 20 77 20 2d 72 6f 77 20 31 20 sticky w -row 1
46660 2d 63 6f 6c 75 6d 6e 20 30 0a 0a 20 20 20 20 7d -column 0.. }
46670 0a 20 20 20 20 24 6d 61 69 6e 66 72 61 6d 65 20 . $mainframe
46680 61 64 64 74 6f 6f 6c 62 61 72 20 3b 23 20 73 65 addtoolbar ;# se
46690 61 72 63 68 0a 20 20 20 20 24 6d 61 69 6e 66 72 arch. $mainfr
466a0 61 6d 65 20 73 68 6f 77 74 6f 6f 6c 62 61 72 20 ame showtoolbar
466b0 31 20 30 0a 20 20 20 20 24 6d 61 69 6e 66 72 61 1 0. $mainfra
466c0 6d 65 20 61 64 64 74 6f 6f 6c 62 61 72 20 3b 23 me addtoolbar ;#
466d0 20 67 65 74 66 69 6c 65 0a 20 20 20 20 24 6d 61 getfile. $ma
466e0 69 6e 66 72 61 6d 65 20 73 68 6f 77 74 6f 6f 6c inframe showtool
466f0 62 61 72 20 32 20 30 0a 09 0a 20 20 20 20 69 66 bar 2 0... if
46700 20 7b 20 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a { $iswince } {.
46710 09 23 77 69 6e 63 65 0a 09 73 65 74 20 64 61 74 .#wince..set dat
46720 61 20 5b 6c 69 73 74 20 5c 0a 09 09 66 69 6c 65 a [list \...file
46730 6e 65 77 31 36 20 5b 5f 20 22 42 65 67 69 6e 20 new16 [_ "Begin
46740 6e 65 77 20 66 69 6c 65 22 5d 20 22 52 61 6d 44 new file"] "RamD
46750 65 62 75 67 67 65 72 3a 3a 4e 65 77 46 69 6c 65 ebugger::NewFile
46760 22 20 5c 0a 09 09 66 69 6c 65 6f 70 65 6e 31 36 " \...fileopen16
46770 20 5b 5f 20 22 4f 70 65 6e 20 73 6f 75 72 63 65 [_ "Open source
46780 20 66 69 6c 65 22 5d 20 22 52 61 6d 44 65 62 75 file"] "RamDebu
46790 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 20 2d gger::OpenFile -
467a0 66 6f 72 63 65 5f 62 72 6f 77 73 65 72 20 31 22 force_browser 1"
467b0 20 5c 0a 09 09 66 69 6c 65 73 61 76 65 31 36 20 \...filesave16
467c0 5b 5f 20 22 53 61 76 65 20 66 69 6c 65 22 5d 20 [_ "Save file"]
467d0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 61 "RamDebugger::Sa
467e0 76 65 46 69 6c 65 20 2d 66 6f 72 63 65 5f 62 72 veFile -force_br
467f0 6f 77 73 65 72 20 31 20 73 61 76 65 22 20 5c 0a owser 1 save" \.
46800 09 09 2d 20 2d 20 2d 20 5c 0a 09 09 75 6e 64 6f ..- - - \...undo
46810 2d 31 36 20 5b 5f 20 22 55 6e 64 6f 20 70 72 65 -16 [_ "Undo pre
46820 76 69 6f 75 73 20 69 6e 73 65 72 74 2f 64 65 6c vious insert/del
46830 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 22 5d 20 ete operation"]
46840 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 "RamDebugger::Cu
46850 74 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 75 tCopyPasteText u
46860 6e 64 6f 22 20 5c 0a 09 09 65 64 69 74 63 75 74 ndo" \...editcut
46870 2d 31 36 20 5b 5f 20 22 43 75 74 20 73 65 6c 65 -16 [_ "Cut sele
46880 63 74 65 64 20 74 65 78 74 20 74 6f 20 63 6c 69 cted text to cli
46890 70 62 6f 61 72 64 22 5d 20 22 52 61 6d 44 65 62 pboard"] "RamDeb
468a0 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 ugger::CutCopyPa
468b0 73 74 65 54 65 78 74 20 63 75 74 22 20 5c 0a 09 steText cut" \..
468c0 09 65 64 69 74 63 6f 70 79 2d 31 36 20 5b 5f 20 .editcopy-16 [_
468d0 22 43 6f 70 79 20 73 65 6c 65 63 74 65 64 20 74 "Copy selected t
468e0 65 78 74 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 ext to clipboard
468f0 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a "] "RamDebugger:
46900 3a 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 78 :CutCopyPasteTex
46910 74 20 63 6f 70 79 22 20 5c 0a 09 09 65 64 69 74 t copy" \...edit
46920 70 61 73 74 65 2d 31 36 20 5b 5f 20 22 50 61 73 paste-16 [_ "Pas
46930 74 65 20 74 65 78 74 20 66 72 6f 6d 20 63 6c 69 te text from cli
46940 70 62 6f 61 72 64 22 5d 20 22 52 61 6d 44 65 62 pboard"] "RamDeb
46950 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 ugger::CutCopyPa
46960 73 74 65 54 65 78 74 20 70 61 73 74 65 22 20 5c steText paste" \
46970 0a 09 09 66 69 6e 64 2d 31 36 20 5b 5f 20 22 53 ...find-16 [_ "S
46980 65 61 72 63 68 20 74 65 78 74 20 69 6e 20 73 6f earch text in so
46990 75 72 63 65 20 66 69 6c 65 22 5d 20 22 52 61 6d urce file"] "Ram
469a0 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 63 68 Debugger::Search
469b0 57 69 6e 64 6f 77 22 20 5c 0a 09 09 2d 20 2d 20 Window" \...- -
469c0 2d 20 5c 0a 09 09 5d 0a 09 73 65 74 20 74 6b 74 - \...]..set tkt
469d0 61 62 6c 65 74 5f 6f 6b 20 30 0a 09 69 66 20 7b ablet_ok 0..if {
469e0 20 24 74 6b 74 61 62 6c 65 74 5f 6f 6b 20 7d 20 $tktablet_ok }
469f0 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 64 {.. lappend d
46a00 61 74 61 20 22 22 20 5b 5f 20 22 41 63 74 69 76 ata "" [_ "Activ
46a10 61 74 65 20 6d 6f 75 73 65 20 64 72 61 67 20 66 ate mouse drag f
46a20 6f 72 20 74 6f 75 63 68 73 63 72 65 65 6e 73 22 or touchscreens"
46a30 5d 20 22 22 0a 09 7d 0a 09 6c 61 70 70 65 6e 64 ] ""..}..lappend
46a40 20 64 61 74 61 20 63 6f 6c 6f 72 69 7a 65 2d 31 data colorize-1
46a50 36 20 5b 5f 20 22 52 65 69 6e 73 74 72 75 6d 65 6 [_ "Reinstrume
46a60 6e 74 20 61 6e 64 20 72 65 63 6f 6c 6f 72 69 7a nt and recoloriz
46a70 65 20 63 6f 64 65 22 5d 20 22 52 61 6d 44 65 62 e code"] "RamDeb
46a80 75 67 67 65 72 3a 3a 52 65 69 6e 73 74 72 75 6d ugger::Reinstrum
46a90 65 6e 74 43 75 72 72 65 6e 74 46 69 6c 65 22 0a entCurrentFile".
46aa0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
46ab0 74 20 64 61 74 61 20 5b 6c 69 73 74 20 5c 0a 09 t data [list \..
46ac0 09 66 69 6c 65 6e 65 77 32 32 20 5b 5f 20 22 42 .filenew22 [_ "B
46ad0 65 67 69 6e 20 6e 65 77 20 66 69 6c 65 22 5d 20 egin new file"]
46ae0 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4e 65 "RamDebugger::Ne
46af0 77 46 69 6c 65 22 20 5c 0a 09 09 66 69 6c 65 6f wFile" \...fileo
46b00 70 65 6e 32 32 20 5b 5f 20 22 4f 70 65 6e 20 73 pen22 [_ "Open s
46b10 6f 75 72 63 65 20 66 69 6c 65 22 5d 20 22 52 61 ource file"] "Ra
46b20 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 mDebugger::OpenF
46b30 69 6c 65 20 2d 66 6f 72 63 65 5f 62 72 6f 77 73 ile -force_brows
46b40 65 72 20 31 22 20 5c 0a 09 09 66 69 6c 65 73 61 er 1" \...filesa
46b50 76 65 32 32 20 5b 5f 20 22 53 61 76 65 20 66 69 ve22 [_ "Save fi
46b60 6c 65 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 le"] "RamDebugge
46b70 72 3a 3a 53 61 76 65 46 69 6c 65 20 2d 66 6f 72 r::SaveFile -for
46b80 63 65 5f 62 72 6f 77 73 65 72 20 31 20 73 61 76 ce_browser 1 sav
46b90 65 22 20 5c 0a 09 09 2d 20 2d 20 2d 20 5c 0a 09 e" \...- - - \..
46ba0 09 61 63 74 75 6e 64 6f 32 32 20 5b 5f 20 22 55 .actundo22 [_ "U
46bb0 6e 64 6f 20 70 72 65 76 69 6f 75 73 20 69 6e 73 ndo previous ins
46bc0 65 72 74 2f 64 65 6c 65 74 65 20 6f 70 65 72 61 ert/delete opera
46bd0 74 69 6f 6e 22 5d 20 22 52 61 6d 44 65 62 75 67 tion"] "RamDebug
46be0 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 74 ger::CutCopyPast
46bf0 65 54 65 78 74 20 75 6e 64 6f 22 20 5c 0a 09 09 eText undo" \...
46c00 65 64 69 74 63 75 74 32 32 20 5b 5f 20 22 43 75 editcut22 [_ "Cu
46c10 74 20 73 65 6c 65 63 74 65 64 20 74 65 78 74 20 t selected text
46c20 74 6f 20 63 6c 69 70 62 6f 61 72 64 22 5d 20 22 to clipboard"] "
46c30 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 74 RamDebugger::Cut
46c40 43 6f 70 79 50 61 73 74 65 54 65 78 74 20 63 75 CopyPasteText cu
46c50 74 22 20 5c 0a 09 09 65 64 69 74 63 6f 70 79 2d t" \...editcopy-
46c60 32 32 20 5b 5f 20 22 43 6f 70 79 20 73 65 6c 65 22 [_ "Copy sele
46c70 63 74 65 64 20 74 65 78 74 20 74 6f 20 63 6c 69 cted text to cli
46c80 70 62 6f 61 72 64 22 5d 20 22 52 61 6d 44 65 62 pboard"] "RamDeb
46c90 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 ugger::CutCopyPa
46ca0 73 74 65 54 65 78 74 20 63 6f 70 79 22 20 5c 0a steText copy" \.
46cb0 09 09 65 64 69 74 70 61 73 74 65 32 32 20 5b 5f ..editpaste22 [_
46cc0 20 22 50 61 73 74 65 20 74 65 78 74 20 66 72 6f "Paste text fro
46cd0 6d 20 63 6c 69 70 62 6f 61 72 64 22 5d 20 5c 0a m clipboard"] \.
46ce0 09 09 20 20 20 20 5b 6c 69 73 74 20 6d 65 6e 75 .. [list menu
46cf0 62 75 74 74 6f 6e 5f 62 75 74 74 6f 6e 20 22 52 button_button "R
46d00 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 74 43 amDebugger::CutC
46d10 6f 70 79 50 61 73 74 65 54 65 78 74 20 70 61 73 opyPasteText pas
46d20 74 65 22 20 22 52 61 6d 44 65 62 75 67 67 65 72 te" "RamDebugger
46d30 3a 3a 43 75 74 43 6f 70 79 50 61 73 74 65 54 65 ::CutCopyPasteTe
46d40 78 74 20 70 61 73 74 65 5f 73 74 61 63 6b 20 25 xt paste_stack %
46d50 57 22 5d 20 5c 0a 09 09 66 69 6e 64 2d 32 32 20 W"] \...find-22
46d60 5b 5f 20 22 53 65 61 72 63 68 20 74 65 78 74 20 [_ "Search text
46d70 69 6e 20 73 6f 75 72 63 65 20 66 69 6c 65 22 5d in source file"]
46d80 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 "RamDebugger::S
46d90 65 61 72 63 68 57 69 6e 64 6f 77 22 20 5c 0a 09 earchWindow" \..
46da0 09 63 6f 6c 6f 72 69 7a 65 2d 32 32 20 5b 5f 20 .colorize-22 [_
46db0 22 52 65 69 6e 73 74 72 75 6d 65 6e 74 20 61 6e "Reinstrument an
46dc0 64 20 72 65 63 6f 6c 6f 72 69 7a 65 20 63 6f 64 d recolorize cod
46dd0 65 22 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 e"] "RamDebugger
46de0 3a 3a 52 65 69 6e 73 74 72 75 6d 65 6e 74 43 75 ::ReinstrumentCu
46df0 72 72 65 6e 74 46 69 6c 65 22 20 5c 0a 09 09 2d rrentFile" \...-
46e00 20 2d 20 2d 20 5c 0a 09 09 70 6c 61 79 65 72 5f - - \...player_
46e10 65 6e 64 2d 32 32 20 5b 5f 20 22 62 65 67 69 6e end-22 [_ "begin
46e20 2f 63 6f 6e 74 69 6e 75 65 20 65 78 65 63 75 74 /continue execut
46e30 69 6f 6e 22 5d 20 22 52 61 6d 44 65 62 75 67 67 ion"] "RamDebugg
46e40 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 er::ContNextGUI
46e50 72 63 6f 6e 74 22 20 5c 0a 09 09 70 6c 61 79 65 rcont" \...playe
46e60 72 5f 73 74 6f 70 2d 32 32 20 5b 5f 20 22 53 65 r_stop-22 [_ "Se
46e70 74 2f 75 6e 73 65 74 20 26 62 72 65 61 6b 70 6f t/unset &breakpo
46e80 69 6e 74 22 5d 20 22 52 61 6d 44 65 62 75 67 67 int"] "RamDebugg
46e90 65 72 3a 3a 53 65 74 47 55 49 42 72 65 61 6b 70 er::SetGUIBreakp
46ea0 6f 69 6e 74 22 20 5c 0a 09 09 66 69 6e 69 73 68 oint" \...finish
46eb0 2d 32 32 20 5b 5f 20 22 63 6f 6e 74 69 6e 75 65 -22 [_ "continue
46ec0 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 22 5d 20 22 one command"] "
46ed0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f 6e RamDebugger::Con
46ee0 74 4e 65 78 74 47 55 49 20 72 6e 65 78 74 22 20 tNextGUI rnext"
46ef0 5c 0a 09 09 64 6f 77 6e 2d 32 32 20 5b 5f 20 22 \...down-22 [_ "
46f00 63 6f 6e 74 69 6e 75 65 20 6f 6e 65 20 63 6f 6d continue one com
46f10 6d 61 6e 64 2c 20 65 6e 74 65 72 69 6e 67 20 69 mand, entering i
46f20 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 73 22 5d 20 n subcommands"]
46f30 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 6f "RamDebugger::Co
46f40 6e 74 4e 65 78 74 47 55 49 20 72 73 74 65 70 22 ntNextGUI rstep"
46f50 20 5c 0a 09 09 73 74 6f 70 2d 32 32 20 5b 5f 20 \...stop-22 [_
46f60 22 73 74 6f 70 20 64 65 62 75 67 67 69 6e 67 22 "stop debugging"
46f70 5d 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a ] "RamDebugger::
46f80 44 69 73 63 6f 6e 6e 65 63 74 53 74 6f 70 22 20 DisconnectStop"
46f90 5c 0a 09 09 2d 20 2d 20 2d 20 5c 0a 09 09 6e 61 \...- - - \...na
46fa0 76 62 61 63 6b 32 32 20 5b 5f 20 22 47 6f 20 74 vback22 [_ "Go t
46fb0 6f 20 70 6f 73 69 74 69 6f 6e 22 5d 20 22 52 61 o position"] "Ra
46fc0 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69 74 mDebugger::Posit
46fd0 69 6f 6e 73 53 74 61 63 6b 20 67 6f 22 20 5c 0a ionsStack go" \.
46fe0 09 09 61 63 74 62 6f 6f 6b 6d 61 72 6b 32 32 20 ..actbookmark22
46ff0 5b 5f 20 22 53 61 76 65 2f 63 6c 65 61 72 20 70 [_ "Save/clear p
47000 6f 73 69 74 69 6f 6e 22 5d 20 22 52 61 6d 44 65 osition"] "RamDe
47010 62 75 67 67 65 72 3a 3a 50 6f 73 69 74 69 6f 6e bugger::Position
47020 73 53 74 61 63 6b 20 73 61 76 65 22 20 5c 0a 09 sStack save" \..
47030 09 2d 20 2d 20 2d 20 5c 0a 09 09 5d 0a 09 69 66 .- - - \...]..if
47040 20 7b 20 24 74 6b 74 61 62 6c 65 74 5f 6f 6b 20 { $tktablet_ok
47050 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 } {.. lappend
47060 20 64 61 74 61 20 22 22 20 5b 5f 20 22 41 63 74 data "" [_ "Act
47070 69 76 61 74 65 20 6d 6f 75 73 65 20 64 72 61 67 ivate mouse drag
47080 20 66 6f 72 20 74 6f 75 63 68 73 63 72 65 65 6e for touchscreen
47090 73 22 5d 20 22 22 0a 09 7d 0a 20 20 20 20 7d 0a s"] ""..}. }.
470a0 20 20 20 20 69 66 20 7b 24 62 69 67 5f 69 63 6f if {$big_ico
470b0 6e 73 20 7d 20 7b 0a 09 73 65 74 20 73 74 79 6c ns } {..set styl
470c0 65 20 22 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 e "". } else
470d0 7b 0a 09 73 65 74 20 73 74 79 6c 65 20 22 54 6f {..set style "To
470e0 6f 6c 62 75 74 74 6f 6e 22 0a 20 20 20 20 7d 0a olbutton". }.
470f0 20 20 20 20 73 65 74 20 69 64 78 20 30 0a 20 20 set idx 0.
47100 20 20 66 6f 72 65 61 63 68 20 22 69 6d 67 20 68 foreach "img h
47110 65 6c 70 20 63 6d 64 22 20 24 64 61 74 61 20 7b elp cmd" $data {
47120 0a 09 69 66 20 7b 20 24 62 69 67 5f 69 63 6f 6e ..if { $big_icon
47130 73 20 26 26 20 24 69 6d 67 20 6e 65 20 22 2d 22 s && $img ne "-"
47140 20 26 26 20 24 69 6d 67 20 6e 65 20 22 22 20 7d && $img ne "" }
47150 20 7b 0a 09 20 20 20 20 23 70 61 63 6b 61 67 65 {.. #package
47160 20 72 65 71 75 69 72 65 20 63 6f 6d 70 61 73 73 require compass
47170 5f 75 74 69 6c 73 3a 3a 69 6d 67 0a 09 20 20 20 _utils::img..
47180 20 73 65 74 20 69 6d 67 30 20 24 69 6d 67 0a 09 set img0 $img..
47190 20 20 20 20 73 65 74 20 69 6d 67 20 5b 69 6d 61 set img [ima
471a0 67 65 20 63 72 65 61 74 65 20 70 68 6f 74 6f 20 ge create photo
471b0 2d 77 69 64 74 68 20 34 38 20 2d 68 65 69 67 68 -width 48 -heigh
471c0 74 20 34 38 5d 0a 09 20 20 20 20 24 69 6d 67 20 t 48].. $img
471d0 63 6f 70 79 20 24 69 6d 67 30 20 2d 74 6f 20 31 copy $img0 -to 1
471e0 36 20 31 36 0a 09 20 20 20 20 23 63 75 3a 3a 69 6 16.. #cu::i
471f0 6d 67 3a 3a 7a 6f 6f 6d 20 24 69 6d 67 20 24 69 mg::zoom $img $i
47200 6d 67 30 20 4c 61 6e 63 7a 6f 73 33 0a 09 20 20 mg0 Lanczos3..
47210 20 20 69 6d 61 67 65 20 64 65 6c 65 74 65 20 24 image delete $
47220 69 6d 67 30 0a 09 7d 20 20 20 20 20 20 20 20 0a img0..} .
47230 09 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 6d 61 .if { [string ma
47240 74 63 68 20 22 6d 65 6e 75 62 75 74 74 6f 6e 5f tch "menubutton_
47250 62 75 74 74 6f 6e 20 2a 22 20 24 63 6d 64 5d 20 button *" $cmd]
47260 7d 20 7b 0a 09 20 20 20 20 63 75 3a 3a 6d 65 6e } {.. cu::men
47270 75 62 75 74 74 6f 6e 5f 62 75 74 74 6f 6e 20 24 ubutton_button $
47280 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78 toolbar.bbox$idx
47290 20 2d 69 6d 61 67 65 20 24 69 6d 67 20 2d 73 74 -image $img -st
472a0 79 6c 65 20 24 73 74 79 6c 65 20 5c 0a 09 09 2d yle $style \...-
472b0 63 6f 6d 6d 61 6e 64 20 5b 6c 69 6e 64 65 78 20 command [lindex
472c0 24 63 6d 64 20 31 5d 20 2d 6d 65 6e 75 20 24 74 $cmd 1] -menu $t
472d0 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78 2e oolbar.bbox$idx.
472e0 6d 20 5c 0a 09 09 2d 74 61 6b 65 66 6f 63 75 73 m \...-takefocus
472f0 20 30 0a 09 20 20 20 20 73 65 74 20 63 20 5b 73 0.. set c [s
47300 74 72 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 tring map [list
47310 25 57 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 %W $toolbar.bbox
47320 24 69 64 78 2e 6d 5d 20 5b 6c 69 6e 64 65 78 20 $idx.m] [lindex
47330 24 63 6d 64 20 32 5d 5d 0a 09 20 20 20 20 6d 65 $cmd 2]].. me
47340 6e 75 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 nu $toolbar.bbox
47350 24 69 64 78 2e 6d 20 2d 74 65 61 72 6f 66 66 20 $idx.m -tearoff
47360 30 20 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 24 0 -postcommand $
47370 63 0a 09 20 20 20 20 74 6f 6f 6c 74 69 70 3a 3a c.. tooltip::
47380 74 6f 6f 6c 74 69 70 20 24 74 6f 6f 6c 62 61 72 tooltip $toolbar
47390 2e 62 62 6f 78 24 69 64 78 20 24 68 65 6c 70 0a .bbox$idx $help.
473a0 09 7d 20 65 6c 73 65 69 66 20 7b 20 24 69 6d 67 .} elseif { $img
473b0 20 6e 65 20 22 2d 22 20 7d 20 7b 0a 09 20 20 20 ne "-" } {..
473c0 20 74 74 6b 3a 3a 62 75 74 74 6f 6e 20 24 74 6f ttk::button $to
473d0 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78 20 2d olbar.bbox$idx -
473e0 69 6d 61 67 65 20 24 69 6d 67 20 2d 73 74 79 6c image $img -styl
473f0 65 20 24 73 74 79 6c 65 20 2d 63 6f 6d 6d 61 6e e $style -comman
47400 64 20 24 63 6d 64 20 5c 0a 09 09 2d 74 61 6b 65 d $cmd \...-take
47410 66 6f 63 75 73 20 30 0a 09 20 20 20 20 74 6f 6f focus 0.. too
47420 6c 74 69 70 3a 3a 74 6f 6f 6c 74 69 70 20 24 74 ltip::tooltip $t
47430 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 78 20 oolbar.bbox$idx
47440 24 68 65 6c 70 0a 09 7d 20 65 6c 73 65 20 7b 0a $help..} else {.
47450 09 20 20 20 20 74 74 6b 3a 3a 73 65 70 61 72 61 . ttk::separa
47460 74 6f 72 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f tor $toolbar.bbo
47470 78 24 69 64 78 20 2d 6f 72 69 65 6e 74 20 76 65 x$idx -orient ve
47480 72 74 69 63 61 6c 0a 09 7d 0a 09 67 72 69 64 20 rtical..}..grid
47490 24 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 $toolbar.bbox$id
474a0 78 20 2d 72 6f 77 20 30 20 2d 63 6f 6c 75 6d 6e x -row 0 -column
474b0 20 24 69 64 78 20 2d 73 74 69 63 6b 79 20 6e 73 $idx -sticky ns
474c0 0a 09 62 69 6e 64 74 61 67 73 20 24 74 6f 6f 6c ..bindtags $tool
474d0 62 61 72 2e 62 62 6f 78 24 69 64 78 20 5b 6c 69 bar.bbox$idx [li
474e0 6e 73 65 72 74 20 5b 62 69 6e 64 74 61 67 73 20 nsert [bindtags
474f0 24 74 6f 6f 6c 62 61 72 2e 62 62 6f 78 24 69 64 $toolbar.bbox$id
47500 78 5d 20 32 20 24 74 6f 6f 6c 62 61 72 5d 0a 09 x] 2 $toolbar]..
47510 69 6e 63 72 20 69 64 78 0a 20 20 20 20 7d 0a 20 incr idx. }.
47520 20 20 20 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f grid columnco
47530 6e 66 69 67 75 72 65 20 24 74 6f 6f 6c 62 61 72 nfigure $toolbar
47540 20 24 69 64 78 20 2d 77 65 69 67 68 74 20 31 0a $idx -weight 1.
47550 20 20 20 20 69 66 20 7b 20 24 74 6b 74 61 62 6c if { $tktabl
47560 65 74 5f 6f 6b 20 7d 20 7b 0a 09 73 65 74 20 74 et_ok } {..set t
47570 61 62 6c 65 74 50 43 5f 64 72 61 67 5f 62 75 74 abletPC_drag_but
47580 74 6f 6e 20 24 74 6f 6f 6c 62 61 72 2e 62 62 6f ton $toolbar.bbo
47590 78 5b 65 78 70 72 20 7b 24 69 64 78 2d 31 7d 5d x[expr {$idx-1}]
475a0 0a 20 20 20 20 7d 0a 20 20 20 20 23 23 23 23 23 . }. #####
475b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
475c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
475d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
475e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
475f0 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 ###########.
47600 23 20 74 68 65 20 68 6f 72 69 7a 6f 6e 74 61 6c # the horizontal
47610 20 33 20 6c 65 76 65 6c 73 20 70 61 6e 65 0a 20 3 levels pane.
47620 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 #############
47630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47650 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47660 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47670 23 23 23 0a 0a 20 20 20 20 23 73 65 74 20 70 77 ###.. #set pw
47680 20 5b 50 61 6e 65 64 57 69 6e 64 6f 77 20 24 66 [PanedWindow $f
47690 2e 70 77 20 2d 73 69 64 65 20 74 6f 70 20 2d 70 .pw -side top -p
476a0 61 64 20 30 20 2d 77 65 69 67 68 74 73 20 61 76 ad 0 -weights av
476b0 61 69 6c 61 62 6c 65 20 2d 61 63 74 69 76 61 74 ailable -activat
476c0 6f 72 20 6c 69 6e 65 5d 0a 20 20 20 20 73 65 74 or line]. set
476d0 20 70 77 20 5b 70 61 6e 65 64 77 69 6e 64 6f 77 pw [panedwindow
476e0 20 24 66 2e 70 77 20 2d 6f 72 69 65 6e 74 20 68 $f.pw -orient h
476f0 6f 72 69 7a 6f 6e 74 61 6c 5d 0a 0a 20 20 20 20 orizontal]..
47700 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 5b 4d if { [llength [M
47710 61 6e 61 67 65 50 61 6e 65 73 20 24 70 77 20 68 anagePanes $pw h
47720 20 22 33 30 30 20 31 30 30 22 5d 5d 20 3d 3d 20 "300 100"]] ==
47730 33 20 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 22 3 } {..foreach "
47740 77 65 69 67 68 74 31 20 77 65 69 67 68 74 32 20 weight1 weight2
47750 77 65 69 67 68 74 33 22 20 5b 4d 61 6e 61 67 65 weight3" [Manage
47760 50 61 6e 65 73 20 24 70 77 20 68 20 22 31 30 30 Panes $pw h "100
47770 20 33 30 30 20 31 30 30 22 5d 20 62 72 65 61 6b 300 100"] break
47780 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
47790 65 74 20 77 65 69 67 68 74 31 20 32 0a 09 66 6f et weight1 2..fo
477a0 72 65 61 63 68 20 22 77 65 69 67 68 74 32 20 77 reach "weight2 w
477b0 65 69 67 68 74 33 22 20 5b 4d 61 6e 61 67 65 50 eight3" [ManageP
477c0 61 6e 65 73 20 24 70 77 20 68 20 22 33 30 30 20 anes $pw h "300
477d0 31 30 30 22 5d 20 62 72 65 61 6b 0a 20 20 20 20 100"] break.
477e0 7d 0a 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e }.. if { ![in
477f0 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e fo exists option
47800 73 28 64 65 66 61 75 6c 74 64 69 72 29 5d 20 7d s(defaultdir)] }
47810 20 7b 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 {..set options(
47820 64 65 66 61 75 6c 74 64 69 72 29 20 5b 70 77 64 defaultdir) [pwd
47830 5d 0a 20 20 20 20 7d 0a 20 20 20 20 23 73 65 74 ]. }. #set
47840 20 70 61 6e 65 31 20 5b 24 70 77 20 61 64 64 20 pane1 [$pw add
47850 2d 77 65 69 67 68 74 20 24 77 65 69 67 68 74 31 -weight $weight1
47860 5d 0a 0a 20 20 20 20 73 65 74 20 6c 69 73 74 62 ].. set listb
47870 6f 78 6c 61 62 65 6c 66 72 61 6d 65 20 5b 66 72 oxlabelframe [fr
47880 61 6d 65 20 24 66 2e 6c 66 6c 66 5d 0a 20 20 20 ame $f.lflf].
47890 20 73 65 74 20 70 61 6e 65 31 20 24 6c 69 73 74 set pane1 $list
478a0 62 6f 78 6c 61 62 65 6c 66 72 61 6d 65 0a 0a 20 boxlabelframe..
478b0 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 if { $options
478c0 28 6c 69 73 74 66 69 6c 65 73 70 61 6e 65 29 20 (listfilespane)
478d0 7d 20 7b 0a 09 24 70 77 20 61 64 64 20 24 66 2e } {..$pw add $f.
478e0 6c 66 6c 66 20 2d 73 74 69 63 6b 79 20 6e 73 65 lflf -sticky nse
478f0 77 20 2d 77 69 64 74 68 20 24 77 65 69 67 68 74 w -width $weight
47900 31 20 2d 6d 69 6e 73 69 7a 65 20 31 30 30 0a 20 1 -minsize 100.
47910 20 20 20 7d 0a 0a 23 20 20 20 20 20 67 72 69 64 }..# grid
47920 20 24 66 2e 6c 66 6c 66 20 2d 69 6e 20 24 70 61 $f.lflf -in $pa
47930 6e 65 31 20 2d 72 6f 77 20 30 20 2d 63 6f 6c 75 ne1 -row 0 -colu
47940 6d 6e 20 30 20 2d 73 74 69 63 6b 79 20 6e 73 65 mn 0 -sticky nse
47950 77 0a 23 20 20 20 20 20 67 72 69 64 20 63 6f 6c w.# grid col
47960 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 70 61 umnconfigure $pa
47970 6e 65 31 20 30 20 2d 77 65 69 67 68 74 20 31 0a ne1 0 -weight 1.
47980 23 20 20 20 20 20 67 72 69 64 20 72 6f 77 63 6f # grid rowco
47990 6e 66 69 67 75 72 65 20 24 70 61 6e 65 31 20 30 nfigure $pane1 0
479a0 20 2d 77 65 69 67 68 74 20 31 0a 0a 20 20 20 20 -weight 1..
479b0 73 65 74 20 6c 69 73 74 62 6f 78 6c 61 62 65 6c set listboxlabel
479c0 20 5b 4c 61 62 65 6c 20 24 6c 69 73 74 62 6f 78 [Label $listbox
479d0 6c 61 62 65 6c 66 72 61 6d 65 2e 6c 20 2d 61 6e labelframe.l -an
479e0 63 68 6f 72 20 65 20 2d 72 65 6c 69 65 66 20 72 chor e -relief r
479f0 61 69 73 65 64 20 2d 62 64 20 31 20 5c 0a 09 2d aised -bd 1 \..-
47a00 70 61 64 78 20 35 20 2d 67 72 69 64 20 22 30 20 padx 5 -grid "0
47a10 65 77 22 5d 0a 20 20 20 20 62 69 6e 64 20 24 6c ew"]. bind $l
47a20 69 73 74 62 6f 78 6c 61 62 65 6c 20 3c 43 6f 6e istboxlabel <Con
47a30 66 69 67 75 72 65 3e 20 22 52 61 6d 44 65 62 75 figure> "RamDebu
47a40 67 67 65 72 3a 3a 43 6f 6e 66 69 67 75 72 65 4c gger::ConfigureL
47a50 61 62 65 6c 20 24 6c 69 73 74 62 6f 78 6c 61 62 abel $listboxlab
47a60 65 6c 22 0a 0a 20 20 20 20 62 69 6e 64 20 24 6c el".. bind $l
47a70 69 73 74 62 6f 78 6c 61 62 65 6c 20 3c 42 75 74 istboxlabel <But
47a80 74 6f 6e 50 72 65 73 73 2d 31 3e 20 22 52 61 6d tonPress-1> "Ram
47a90 44 65 62 75 67 67 65 72 3a 3a 4c 69 73 74 42 6f Debugger::ListBo
47aa0 78 4c 61 62 65 6c 4d 65 6e 75 20 24 6c 69 73 74 xLabelMenu $list
47ab0 62 6f 78 6c 61 62 65 6c 20 25 58 20 25 59 22 0a boxlabel %X %Y".
47ac0 20 20 20 20 62 69 6e 64 20 24 6c 69 73 74 62 6f bind $listbo
47ad0 78 6c 61 62 65 6c 20 3c 3c 43 6f 6e 74 65 78 74 xlabel <<Context
47ae0 75 61 6c 3e 3e 20 22 52 61 6d 44 65 62 75 67 67 ual>> "RamDebugg
47af0 65 72 3a 3a 4c 69 73 74 42 6f 78 4c 61 62 65 6c er::ListBoxLabel
47b00 4d 65 6e 75 20 24 6c 69 73 74 62 6f 78 6c 61 62 Menu $listboxlab
47b10 65 6c 20 25 58 20 25 59 22 0a 0a 20 20 20 20 73 el %X %Y".. s
47b20 65 74 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 et sw [ScrolledW
47b30 69 6e 64 6f 77 20 24 6c 69 73 74 62 6f 78 6c 61 indow $listboxla
47b40 62 65 6c 66 72 61 6d 65 2e 6c 66 20 2d 72 65 6c belframe.lf -rel
47b50 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 ief sunken -bord
47b60 65 72 77 69 64 74 68 20 30 20 2d 67 72 69 64 20 erwidth 0 -grid
47b70 30 5d 0a 20 20 20 20 73 65 74 20 6c 69 73 74 62 0]. set listb
47b80 6f 78 20 5b 4c 69 73 74 42 6f 78 20 24 73 77 2e ox [ListBox $sw.
47b90 6c 62 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 77 lb -background w
47ba0 68 69 74 65 20 2d 6d 75 6c 74 69 63 6f 6c 75 6d hite -multicolum
47bb0 6e 20 30 20 2d 73 65 6c 65 63 74 6d 6f 64 65 20 n 0 -selectmode
47bc0 73 69 6e 67 6c 65 5d 0a 20 20 20 20 24 73 77 20 single]. $sw
47bd0 73 65 74 77 69 64 67 65 74 20 24 6c 69 73 74 62 setwidget $listb
47be0 6f 78 0a 0a 20 20 20 20 24 73 77 2e 6c 62 20 63 ox.. $sw.lb c
47bf0 6f 6e 66 69 67 75 72 65 20 2d 64 65 6c 74 61 79 onfigure -deltay
47c00 20 5b 65 78 70 72 20 5b 66 6f 6e 74 20 6d 65 74 [expr [font met
47c10 72 69 63 73 20 5b 24 73 77 2e 6c 62 20 63 67 65 rics [$sw.lb cge
47c20 74 20 2d 66 6f 6e 74 5d 20 2d 6c 69 6e 65 73 70 t -font] -linesp
47c30 61 63 65 5d 5d 0a 20 20 20 20 4c 69 73 74 42 6f ace]]. ListBo
47c40 78 45 76 65 6e 74 73 20 24 6c 69 73 74 62 6f 78 xEvents $listbox
47c50 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4c 69 RamDebugger::Li
47c60 73 74 42 6f 78 44 6f 75 62 6c 65 31 20 52 61 6d stBoxDouble1 Ram
47c70 44 65 62 75 67 67 65 72 3a 3a 4c 69 73 74 62 6f Debugger::Listbo
47c80 78 4d 65 6e 75 0a 20 20 20 20 73 75 70 65 72 67 xMenu. superg
47c90 72 69 64 3a 3a 67 6f 20 24 66 2e 6c 66 6c 66 0a rid::go $f.lflf.
47ca0 0a 20 20 20 20 23 73 65 74 20 70 61 6e 65 32 20 . #set pane2
47cb0 5b 24 70 77 20 61 64 64 20 2d 77 65 69 67 68 74 [$pw add -weight
47cc0 20 24 77 65 69 67 68 74 32 5d 0a 20 20 20 20 73 $weight2]. s
47cd0 65 74 20 70 61 6e 65 32 20 5b 66 72 61 6d 65 20 et pane2 [frame
47ce0 24 70 77 2e 70 61 6e 65 32 5d 0a 20 20 20 20 24 $pw.pane2]. $
47cf0 70 77 20 61 64 64 20 24 70 61 6e 65 32 20 2d 73 pw add $pane2 -s
47d00 74 69 63 6b 79 20 6e 73 65 77 20 2d 77 69 64 74 ticky nsew -widt
47d10 68 20 24 77 65 69 67 68 74 32 0a 0a 20 20 20 20 h $weight2..
47d20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47d30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47d40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47d50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47d60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47d70 0a 20 20 20 20 23 20 74 68 65 20 76 65 72 74 69 . # the verti
47d80 63 61 6c 20 65 64 69 74 20 77 69 6e 64 6f 77 20 cal edit window
47d90 61 6e 64 20 73 74 61 63 6b 20 74 72 61 63 65 0a and stack trace.
47da0 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 ############
47db0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47dc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47dd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47de0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
47df0 23 23 23 23 0a 0a 20 20 20 20 73 65 74 20 70 77 ####.. set pw
47e00 69 6e 20 5b 70 61 6e 65 64 77 69 6e 64 6f 77 20 in [panedwindow
47e10 24 70 61 6e 65 32 2e 70 77 20 2d 6f 72 69 65 6e $pane2.pw -orien
47e20 74 20 76 65 72 74 69 63 61 6c 20 2d 67 72 69 64 t vertical -grid
47e30 20 30 5d 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 0].. foreach
47e40 20 22 77 65 69 67 68 74 31 69 6e 20 77 65 69 67 "weight1in weig
47e50 68 74 32 69 6e 22 20 5b 4d 61 6e 61 67 65 50 61 ht2in" [ManagePa
47e60 6e 65 73 20 24 70 77 69 6e 20 76 20 22 33 30 30 nes $pwin v "300
47e70 20 31 30 30 22 5d 20 62 72 65 61 6b 0a 0a 20 20 100"] break..
47e80 20 20 23 73 65 74 20 70 61 6e 65 32 69 6e 31 20 #set pane2in1
47e90 5b 24 70 77 69 6e 20 61 64 64 20 2d 77 65 69 67 [$pwin add -weig
47ea0 68 74 20 24 77 65 69 67 68 74 31 69 6e 5d 0a 20 ht $weight1in].
47eb0 20 20 20 73 65 74 20 70 61 6e 65 32 69 6e 31 20 set pane2in1
47ec0 5b 66 72 61 6d 65 20 24 70 77 69 6e 2e 70 61 6e [frame $pwin.pan
47ed0 65 32 69 6e 31 5d 0a 20 20 20 20 24 70 77 69 6e e2in1]. $pwin
47ee0 20 61 64 64 20 24 70 61 6e 65 32 69 6e 31 20 2d add $pane2in1 -
47ef0 68 65 69 67 68 74 20 24 77 65 69 67 68 74 31 69 height $weight1i
47f00 6e 0a 0a 20 20 20 20 73 65 74 20 66 75 6c 6c 74 n.. set fullt
47f10 65 78 74 20 5b 66 72 61 6d 65 20 24 66 2e 66 75 ext [frame $f.fu
47f20 6c 6c 74 65 78 74 20 2d 67 72 69 64 20 6e 6f 20 lltext -grid no
47f30 2d 62 64 20 31 20 2d 72 65 6c 69 65 66 20 73 75 -bd 1 -relief su
47f40 6e 6b 65 6e 5d 0a 20 20 20 20 67 72 69 64 20 24 nken]. grid $
47f50 66 75 6c 6c 74 65 78 74 20 2d 69 6e 20 24 70 61 fulltext -in $pa
47f60 6e 65 32 69 6e 31 20 2d 73 74 69 63 6b 79 20 6e ne2in1 -sticky n
47f70 73 65 77 0a 20 20 20 20 67 72 69 64 20 72 6f 77 sew. grid row
47f80 63 6f 6e 66 20 24 70 61 6e 65 32 69 6e 31 20 30 conf $pane2in1 0
47f90 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20 67 -weight 1. g
47fa0 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 20 24 rid columnconf $
47fb0 70 61 6e 65 32 69 6e 31 20 30 20 2d 77 65 69 67 pane2in1 0 -weig
47fc0 68 74 20 31 0a 0a 20 20 20 20 73 65 74 20 6d 61 ht 1.. set ma
47fd0 72 6b 65 72 20 5b 63 61 6e 76 61 73 20 24 66 75 rker [canvas $fu
47fe0 6c 6c 74 65 78 74 2e 63 61 6e 20 2d 62 67 20 67 lltext.can -bg g
47ff0 72 65 79 39 30 20 2d 67 72 69 64 20 22 30 20 77 rey90 -grid "0 w
48000 6e 73 22 20 2d 77 69 64 74 68 20 31 34 20 2d 62 ns" -width 14 -b
48010 64 20 30 20 5c 0a 09 20 20 20 20 2d 68 69 67 68 d 0 \.. -high
48020 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 lightthickness 0
48030 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 ]. . if {
48040 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
48050 70 6c 61 74 66 6f 72 6d 29 20 65 71 20 22 77 69 platform) eq "wi
48060 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 65 76 65 6e ndows" } {..even
48070 74 20 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 t add <<Contextu
48080 61 6c 50 72 65 73 73 3e 3e 20 3c 42 75 74 74 6f alPress>> <Butto
48090 6e 50 72 65 73 73 2d 33 3e 0a 09 65 76 65 6e 74 nPress-3>..event
480a0 20 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61 add <<Contextua
480b0 6c 3e 3e 20 3c 42 75 74 74 6f 6e 52 65 6c 65 61 l>> <ButtonRelea
480c0 73 65 2d 33 3e 0a 09 65 76 65 6e 74 20 61 64 64 se-3>..event add
480d0 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 3e 3e 20 <<Contextual>>
480e0 3c 41 70 70 3e 0a 09 73 65 74 20 3a 3a 63 6f 6e <App>..set ::con
480f0 74 72 6f 6c 20 43 6f 6e 74 72 6f 6c 0a 09 73 65 trol Control..se
48100 74 20 3a 3a 63 6f 6e 74 72 6f 6c 5f 74 78 74 20 t ::control_txt
48110 43 74 72 6c 0a 09 73 65 74 20 3a 3a 61 6c 74 20 Ctrl..set ::alt
48120 41 6c 74 0a 09 73 65 74 20 3a 3a 61 6c 74 5f 74 Alt..set ::alt_t
48130 78 74 20 41 6c 74 0a 20 20 20 20 7d 20 65 6c 73 xt Alt. } els
48140 65 69 66 20 7b 20 5b 74 6b 20 77 69 6e 64 6f 77 eif { [tk window
48150 69 6e 67 73 79 73 74 65 6d 5d 20 65 71 20 22 61 ingsystem] eq "a
48160 71 75 61 22 20 7d 20 7b 0a 09 65 76 65 6e 74 20 qua" } {..event
48170 61 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c add <<Contextual
48180 50 72 65 73 73 3e 3e 20 3c 42 75 74 74 6f 6e 50 Press>> <ButtonP
48190 72 65 73 73 2d 32 3e 0a 09 65 76 65 6e 74 20 61 ress-2>..event a
481a0 64 64 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 3e dd <<Contextual>
481b0 3e 20 3c 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 > <ButtonRelease
481c0 2d 32 3e 0a 09 73 65 74 20 3a 3a 63 6f 6e 74 72 -2>..set ::contr
481d0 6f 6c 20 43 6f 6d 6d 61 6e 64 0a 09 73 65 74 20 ol Command..set
481e0 3a 3a 63 6f 6e 74 72 6f 6c 5f 74 78 74 20 43 6f ::control_txt Co
481f0 6d 6d 61 6e 64 0a 09 73 65 74 20 3a 3a 61 6c 74 mmand..set ::alt
48200 20 43 6f 6e 74 72 6f 6c 0a 09 73 65 74 20 3a 3a Control..set ::
48210 61 6c 74 5f 74 78 74 20 43 74 72 6c 0a 09 0a 09 alt_txt Ctrl....
48220 66 6f 72 65 61 63 68 20 65 76 20 5b 62 69 6e 64 foreach ev [bind
48230 20 54 65 78 74 5d 20 7b 0a 09 20 20 20 20 69 66 Text] {.. if
48240 20 7b 20 5b 72 65 67 73 75 62 20 7b 43 6f 6e 74 { [regsub {Cont
48250 72 6f 6c 7d 20 24 65 76 20 7b 43 6f 6d 6d 61 6e rol} $ev {Comman
48260 64 7d 20 65 76 43 5d 20 7d 20 7b 0a 09 09 62 69 d} evC] } {...bi
48270 6e 64 20 54 65 78 74 20 24 65 76 43 20 5b 62 69 nd Text $evC [bi
48280 6e 64 20 54 65 78 74 20 24 65 76 5d 0a 09 20 20 nd Text $ev]..
48290 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 }..}. } els
482a0 65 20 7b 0a 09 65 76 65 6e 74 20 61 64 64 20 3c e {..event add <
482b0 3c 43 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 <ContextualPress
482c0 3e 3e 20 3c 42 75 74 74 6f 6e 50 72 65 73 73 2d >> <ButtonPress-
482d0 33 3e 0a 09 65 76 65 6e 74 20 61 64 64 20 3c 3c 3>..event add <<
482e0 43 6f 6e 74 65 78 74 75 61 6c 3e 3e 20 3c 42 75 Contextual>> <Bu
482f0 74 74 6f 6e 52 65 6c 65 61 73 65 2d 33 3e 0a 09 ttonRelease-3>..
48300 65 76 65 6e 74 20 61 64 64 20 3c 3c 43 6f 6e 74 event add <<Cont
48310 65 78 74 75 61 6c 50 72 65 73 73 3e 3e 20 3c 4b extualPress>> <K
48320 65 79 50 72 65 73 73 2d 4d 65 6e 75 3e 0a 09 65 eyPress-Menu>..e
48330 76 65 6e 74 20 61 64 64 20 3c 3c 43 6f 6e 74 65 vent add <<Conte
48340 78 74 75 61 6c 3e 3e 20 3c 4b 65 79 52 65 6c 65 xtual>> <KeyRele
48350 61 73 65 2d 4d 65 6e 75 3e 0a 09 73 65 74 20 3a ase-Menu>..set :
48360 3a 63 6f 6e 74 72 6f 6c 20 43 6f 6e 74 72 6f 6c :control Control
48370 0a 09 73 65 74 20 3a 3a 63 6f 6e 74 72 6f 6c 5f ..set ::control_
48380 74 78 74 20 43 74 72 6c 0a 09 73 65 74 20 3a 3a txt Ctrl..set ::
48390 61 6c 74 20 41 6c 74 0a 09 73 65 74 20 3a 3a 61 alt Alt..set ::a
483a0 6c 74 5f 74 78 74 20 41 6c 74 0a 20 20 20 20 7d lt_txt Alt. }
483b0 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 72 6b 65 . bind $marke
483c0 72 20 3c 3c 43 6f 6e 74 65 78 74 75 61 6c 50 72 r <<ContextualPr
483d0 65 73 73 3e 3e 20 5b 6c 69 73 74 20 52 61 6d 44 ess>> [list RamD
483e0 65 62 75 67 67 65 72 3a 3a 4d 61 72 6b 65 72 43 ebugger::MarkerC
483f0 6f 6e 74 65 78 74 75 61 6c 53 75 62 6d 65 6e 75 ontextualSubmenu
48400 20 25 57 20 25 78 20 25 79 20 25 58 20 25 59 5d %W %x %y %X %Y]
48410 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 74 65 . . set te
48420 78 74 20 5b 73 75 70 65 72 74 65 78 74 3a 3a 74 xt [supertext::t
48430 65 78 74 20 24 66 75 6c 6c 74 65 78 74 2e 74 65 ext $fulltext.te
48440 78 74 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 77 xt -background w
48450 68 69 74 65 20 2d 66 6f 72 65 67 72 6f 75 6e 64 hite -foreground
48460 20 62 6c 61 63 6b 20 5c 0a 09 09 20 20 2d 77 72 black \... -wr
48470 61 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68 20 38 ap none -width 8
48480 30 20 2d 68 65 69 67 68 74 20 34 30 20 5c 0a 09 0 -height 40 \..
48490 09 20 20 2d 65 78 70 6f 72 74 73 65 6c 65 63 74 . -exportselect
484a0 69 6f 6e 20 30 20 2d 66 6f 6e 74 20 46 69 78 65 ion 0 -font Fixe
484b0 64 46 6f 6e 74 20 2d 68 69 67 68 6c 69 67 68 74 dFont -highlight
484c0 74 68 69 63 6b 6e 65 73 73 20 30 20 2d 65 64 69 thickness 0 -edi
484d0 74 61 62 6c 65 20 30 20 5c 0a 09 09 20 20 2d 70 table 0 \... -p
484e0 72 65 70 72 6f 63 20 52 61 6d 44 65 62 75 67 67 reproc RamDebugg
484f0 65 72 3a 3a 43 68 65 63 6b 54 65 78 74 42 65 66 er::CheckTextBef
48500 6f 72 65 20 5c 0a 09 09 20 20 2d 70 6f 73 74 70 ore \... -postp
48510 72 6f 63 20 52 61 6d 44 65 62 75 67 67 65 72 3a roc RamDebugger:
48520 3a 55 70 64 61 74 65 4c 69 6e 65 4e 75 6d 20 2d :UpdateLineNum -
48530 62 64 20 30 20 2d 67 72 69 64 20 31 20 5c 0a 09 bd 0 -grid 1 \..
48540 09 20 20 2d 75 6e 64 6f 63 61 6c 6c 62 61 63 6b . -undocallback
48550 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 55 "RamDebugger::U
48560 6e 64 6f 43 61 6c 6c 62 61 63 6b 22 20 5c 0a 09 ndoCallback" \..
48570 09 20 20 2d 78 73 63 72 6f 6c 6c 63 6f 6d 6d 61 . -xscrollcomma
48580 6e 64 20 5b 6c 69 73 74 20 24 66 75 6c 6c 74 65 nd [list $fullte
48590 78 74 2e 78 73 63 72 6f 6c 6c 20 73 65 74 5d 20 xt.xscroll set]
485a0 5c 0a 09 09 20 20 2d 79 73 63 72 6f 6c 6c 63 6f \... -yscrollco
485b0 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 52 61 6d 44 mmand [list RamD
485c0 65 62 75 67 67 65 72 3a 3a 53 63 72 6f 6c 6c 53 ebugger::ScrollS
485d0 63 72 6f 6c 6c 41 6e 64 43 61 6e 76 61 73 20 24 crollAndCanvas $
485e0 66 75 6c 6c 74 65 78 74 2e 74 65 78 74 20 5c 0a fulltext.text \.
485f0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
48600 20 20 20 20 20 20 20 20 20 24 66 75 6c 6c 74 65 $fullte
48610 78 74 2e 79 73 63 72 6f 6c 6c 20 24 66 75 6c 6c xt.yscroll $full
48620 74 65 78 74 2e 63 61 6e 5d 5d 0a 20 20 20 20 73 text.can]]. s
48630 63 72 6f 6c 6c 62 61 72 20 24 66 75 6c 6c 74 65 crollbar $fullte
48640 78 74 2e 79 73 63 72 6f 6c 6c 20 2d 6f 72 69 65 xt.yscroll -orie
48650 6e 74 20 76 65 72 74 69 63 61 6c 20 2d 67 72 69 nt vertical -gri
48660 64 20 32 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 d 2 -command \..
48670 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 [list RamDebugge
48680 72 3a 3a 53 63 72 6f 6c 6c 54 65 78 74 41 6e 64 r::ScrollTextAnd
48690 43 61 6e 76 61 73 20 24 66 75 6c 6c 74 65 78 74 Canvas $fulltext
486a0 2e 74 65 78 74 20 24 66 75 6c 6c 74 65 78 74 2e .text $fulltext.
486b0 63 61 6e 5d 0a 20 20 20 20 73 63 72 6f 6c 6c 62 can]. scrollb
486c0 61 72 20 24 66 75 6c 6c 74 65 78 74 2e 78 73 63 ar $fulltext.xsc
486d0 72 6f 6c 6c 20 2d 6f 72 69 65 6e 74 20 68 6f 72 roll -orient hor
486e0 69 7a 6f 6e 74 61 6c 20 2d 67 72 69 64 20 22 30 izontal -grid "0
486f0 20 32 22 20 2d 63 6f 6d 6d 61 6e 64 20 22 24 66 2" -command "$f
48700 75 6c 6c 74 65 78 74 2e 74 65 78 74 20 78 76 69 ulltext.text xvi
48710 65 77 22 0a 20 20 20 20 0a 20 20 20 20 69 66 20 ew". . if
48720 7b 20 24 62 69 67 5f 69 63 6f 6e 73 20 7d 20 7b { $big_icons } {
48730 0a 09 24 66 75 6c 6c 74 65 78 74 2e 79 73 63 72 ..$fulltext.yscr
48740 6f 6c 6c 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 oll configure -w
48750 69 64 74 68 20 32 32 0a 20 20 20 20 7d 0a 0a 23 idth 22. }..#
48760 20 20 20 20 67 72 69 64 20 24 66 75 6c 6c 74 65 grid $fullte
48770 78 74 2e 63 61 6e 20 24 66 75 6c 6c 74 65 78 74 xt.can $fulltext
48780 2e 74 65 78 74 20 24 66 75 6c 6c 74 65 78 74 2e .text $fulltext.
48790 79 73 63 72 6f 6c 6c 20 2d 73 74 69 63 6b 79 20 yscroll -sticky
487a0 77 6e 73 0a 20 20 20 20 0a 23 20 20 20 20 67 72 wns. .# gr
487b0 69 64 20 24 66 75 6c 6c 74 65 78 74 2e 63 61 6e id $fulltext.can
487c0 20 2d 62 67 20 67 72 65 79 39 30 20 2d 67 72 69 -bg grey90 -gri
487d0 64 20 22 30 20 77 6e 73 22 0a 20 20 20 20 0a 20 d "0 wns". .
487e0 20 20 20 41 70 70 6c 79 43 6f 6c 6f 72 50 72 65 ApplyColorPre
487f0 66 73 20 24 74 65 78 74 0a 20 20 20 20 0a 20 20 fs $text. .
48800 20 20 69 66 20 7b 20 21 24 69 73 77 69 6e 63 65 if { !$iswince
48810 20 7d 20 7b 0a 09 73 65 74 20 72 65 73 20 32 30 } {..set res 20
48820 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
48830 65 74 20 72 65 73 20 31 36 0a 20 20 20 20 7d 0a et res 16. }.
48840 0a 20 20 20 20 69 66 20 7b 20 24 74 6b 74 61 62 . if { $tktab
48850 6c 65 74 5f 6f 6b 20 26 26 20 5b 69 6e 66 6f 20 let_ok && [info
48860 65 78 69 73 74 73 20 74 61 62 6c 65 74 50 43 5f exists tabletPC_
48870 64 72 61 67 5f 62 75 74 74 6f 6e 5d 20 7d 20 7b drag_button] } {
48880 0a 09 74 6b 74 61 62 6c 65 74 3a 3a 64 72 61 67 ..tktablet::drag
48890 5f 6d 6f 64 65 20 24 74 65 78 74 20 24 74 61 62 _mode $text $tab
488a0 6c 65 74 50 43 5f 64 72 61 67 5f 62 75 74 74 6f letPC_drag_butto
488b0 6e 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f n RamDebugger::o
488c0 70 74 69 6f 6e 73 28 54 61 62 6c 65 74 50 43 6d ptions(TabletPCm
488d0 6f 64 65 29 20 5c 0a 09 20 20 20 20 24 72 65 73 ode) \.. $res
488e0 20 24 62 69 67 5f 69 63 6f 6e 73 0a 20 20 20 20 $big_icons.
488f0 7d 0a 0a 20 20 20 20 23 73 65 74 20 70 61 6e 65 }.. #set pane
48900 32 69 6e 32 20 5b 24 70 77 69 6e 20 61 64 64 20 2in2 [$pwin add
48910 2d 77 65 69 67 68 74 20 24 77 65 69 67 68 74 32 -weight $weight2
48920 69 6e 5d 0a 20 20 20 20 73 65 74 20 70 61 6e 65 in]. set pane
48930 32 69 6e 32 20 5b 66 72 61 6d 65 20 24 70 77 69 2in2 [frame $pwi
48940 6e 2e 70 61 6e 65 32 69 6e 32 5d 0a 20 20 20 20 n.pane2in2].
48950 24 70 77 69 6e 20 61 64 64 20 24 70 61 6e 65 32 $pwin add $pane2
48960 69 6e 32 20 2d 68 65 69 67 68 74 20 24 77 65 69 in2 -height $wei
48970 67 68 74 32 69 6e 0a 0a 20 20 20 20 4e 6f 74 65 ght2in.. Note
48980 42 6f 6f 6b 20 24 70 61 6e 65 32 69 6e 32 2e 6e Book $pane2in2.n
48990 62 20 2d 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 31 b -homogeneous 1
489a0 20 2d 62 64 20 31 20 2d 69 6e 74 65 72 6e 61 6c -bd 1 -internal
489b0 62 6f 72 64 65 72 77 69 64 74 68 20 30 20 5c 0a borderwidth 0 \.
489c0 09 20 20 20 20 2d 67 72 69 64 20 22 30 20 70 79 . -grid "0 py
489d0 32 22 20 2d 73 69 64 65 20 62 6f 74 74 6f 6d 0a 2" -side bottom.
489e0 0a 20 20 20 20 73 65 74 20 66 31 20 5b 24 70 61 . set f1 [$pa
489f0 6e 65 32 69 6e 32 2e 6e 62 20 69 6e 73 65 72 74 ne2in2.nb insert
48a00 20 65 6e 64 20 73 74 61 63 6b 74 72 61 63 65 20 end stacktrace
48a10 2d 74 65 78 74 20 5b 5f 20 22 53 74 61 63 6b 20 -text [_ "Stack
48a20 74 72 61 63 65 22 5d 5d 0a 20 0a 20 20 20 20 73 trace"]]. . s
48a30 65 74 20 73 77 32 20 5b 53 63 72 6f 6c 6c 65 64 et sw2 [Scrolled
48a40 57 69 6e 64 6f 77 20 24 66 31 2e 6c 66 32 20 2d Window $f1.lf2 -
48a50 72 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 relief sunken -b
48a60 6f 72 64 65 72 77 69 64 74 68 20 30 20 2d 67 72 orderwidth 0 -gr
48a70 69 64 20 22 30 22 20 5c 0a 09 20 20 20 20 2d 73 id "0" \.. -s
48a80 63 72 6f 6c 6c 62 61 72 20 62 6f 74 68 20 2d 61 crollbar both -a
48a90 75 74 6f 20 62 6f 74 68 5d 0a 20 20 20 20 73 65 uto both]. se
48aa0 74 20 74 65 78 74 53 54 20 5b 74 65 78 74 20 24 t textST [text $
48ab0 73 77 32 2e 74 65 78 74 32 20 2d 62 61 63 6b 67 sw2.text2 -backg
48ac0 72 6f 75 6e 64 20 77 68 69 74 65 20 2d 77 72 61 round white -wra
48ad0 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68 20 38 30 p none -width 80
48ae0 20 2d 68 65 69 67 68 74 20 34 20 5c 0a 09 20 20 -height 4 \..
48af0 20 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 -highlightthic
48b00 6b 6e 65 73 73 20 30 20 2d 65 78 70 6f 72 74 73 kness 0 -exports
48b10 65 6c 65 63 74 69 6f 6e 20 30 5d 0a 20 20 20 20 election 0].
48b20 24 73 77 32 20 73 65 74 77 69 64 67 65 74 20 24 $sw2 setwidget $
48b30 74 65 78 74 53 54 0a 0a 20 20 20 20 73 75 70 65 textST.. supe
48b40 72 67 72 69 64 3a 3a 67 6f 20 24 66 31 0a 0a 20 rgrid::go $f1..
48b50 20 20 20 73 65 74 20 66 32 20 5b 24 70 61 6e 65 set f2 [$pane
48b60 32 69 6e 32 2e 6e 62 20 69 6e 73 65 72 74 20 65 2in2.nb insert e
48b70 6e 64 20 6f 75 74 70 75 74 20 2d 74 65 78 74 20 nd output -text
48b80 5b 5f 20 22 4f 75 74 70 75 74 22 5d 5d 0a 0a 20 [_ "Output"]]..
48b90 20 20 20 73 65 74 20 73 77 32 20 5b 53 63 72 6f set sw2 [Scro
48ba0 6c 6c 65 64 57 69 6e 64 6f 77 20 24 66 32 2e 6c lledWindow $f2.l
48bb0 66 32 20 2d 72 65 6c 69 65 66 20 73 75 6e 6b 65 f2 -relief sunke
48bc0 6e 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 30 n -borderwidth 0
48bd0 20 2d 67 72 69 64 20 22 30 22 20 5c 0a 09 20 20 -grid "0" \..
48be0 20 20 2d 73 63 72 6f 6c 6c 62 61 72 20 62 6f 74 -scrollbar bot
48bf0 68 20 2d 61 75 74 6f 20 62 6f 74 68 5d 0a 20 20 h -auto both].
48c00 20 20 73 65 74 20 74 65 78 74 4f 55 54 20 5b 74 set textOUT [t
48c10 65 78 74 20 24 73 77 32 2e 74 65 78 74 32 20 2d ext $sw2.text2 -
48c20 62 61 63 6b 67 72 6f 75 6e 64 20 77 68 69 74 65 background white
48c30 20 2d 77 72 61 70 20 6e 6f 6e 65 20 2d 77 69 64 -wrap none -wid
48c40 74 68 20 38 30 20 2d 68 65 69 67 68 74 20 34 20 th 80 -height 4
48c50 5c 0a 09 20 20 20 20 2d 68 69 67 68 6c 69 67 68 \.. -highligh
48c60 74 74 68 69 63 6b 6e 65 73 73 20 30 20 2d 65 78 tthickness 0 -ex
48c70 70 6f 72 74 73 65 6c 65 63 74 69 6f 6e 20 30 5d portselection 0]
48c80 0a 20 20 20 20 24 73 77 32 20 73 65 74 77 69 64 . $sw2 setwid
48c90 67 65 74 20 24 74 65 78 74 4f 55 54 0a 0a 20 20 get $textOUT..
48ca0 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 supergrid::go
48cb0 24 66 32 0a 0a 20 20 20 20 73 65 74 20 66 33 20 $f2.. set f3
48cc0 5b 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 69 6e [$pane2in2.nb in
48cd0 73 65 72 74 20 65 6e 64 20 63 6f 6d 70 69 6c 65 sert end compile
48ce0 20 2d 74 65 78 74 20 5b 5f 20 22 43 6f 6d 70 69 -text [_ "Compi
48cf0 6c 65 22 5d 5d 0a 0a 20 20 20 20 73 65 74 20 73 le"]].. set s
48d00 77 32 20 5b 53 63 72 6f 6c 6c 65 64 57 69 6e 64 w2 [ScrolledWind
48d10 6f 77 20 24 66 33 2e 6c 66 33 20 2d 72 65 6c 69 ow $f3.lf3 -reli
48d20 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 65 ef sunken -borde
48d30 72 77 69 64 74 68 20 30 20 2d 67 72 69 64 20 22 rwidth 0 -grid "
48d40 30 22 20 5c 0a 09 20 20 20 20 2d 73 63 72 6f 6c 0" \.. -scrol
48d50 6c 62 61 72 20 62 6f 74 68 20 2d 61 75 74 6f 20 lbar both -auto
48d60 62 6f 74 68 5d 0a 20 20 20 20 73 65 74 20 74 65 both]. set te
48d70 78 74 43 4f 4d 50 20 5b 74 65 78 74 20 24 73 77 xtCOMP [text $sw
48d80 32 2e 74 65 78 74 32 20 2d 62 61 63 6b 67 72 6f 2.text2 -backgro
48d90 75 6e 64 20 77 68 69 74 65 20 2d 77 72 61 70 20 und white -wrap
48da0 6e 6f 6e 65 20 2d 77 69 64 74 68 20 38 30 20 2d none -width 80 -
48db0 68 65 69 67 68 74 20 34 20 5c 0a 09 20 20 20 20 height 4 \..
48dc0 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e -highlightthickn
48dd0 65 73 73 20 30 20 2d 65 78 70 6f 72 74 73 65 6c ess 0 -exportsel
48de0 65 63 74 69 6f 6e 20 30 5d 0a 20 20 20 20 24 73 ection 0]. $s
48df0 77 32 20 73 65 74 77 69 64 67 65 74 20 24 74 65 w2 setwidget $te
48e00 78 74 43 4f 4d 50 0a 0a 20 20 20 20 73 75 70 65 xtCOMP.. supe
48e10 72 67 72 69 64 3a 3a 67 6f 20 24 66 33 0a 0a 20 rgrid::go $f3..
48e20 20 20 20 73 65 74 20 66 34 20 5b 24 70 61 6e 65 set f4 [$pane
48e30 32 69 6e 32 2e 6e 62 20 69 6e 73 65 72 74 20 65 2in2.nb insert e
48e40 6e 64 20 76 61 72 69 61 62 6c 65 73 20 2d 74 65 nd variables -te
48e50 78 74 20 5b 5f 20 22 56 61 72 69 61 62 6c 65 73 xt [_ "Variables
48e60 22 5d 5d 0a 0a 20 20 20 20 23 24 70 61 6e 65 32 "]].. #$pane2
48e70 69 6e 32 2e 6e 62 20 63 6f 6d 70 75 74 65 5f 73 in2.nb compute_s
48e80 69 7a 65 0a 20 20 20 20 24 70 61 6e 65 32 69 6e ize. $pane2in
48e90 32 2e 6e 62 20 72 61 69 73 65 20 73 74 61 63 6b 2.nb raise stack
48ea0 74 72 61 63 65 0a 0a 20 20 20 20 70 72 6f 63 20 trace.. proc
48eb0 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75 70 4d 65 6e NoteBookPopupMen
48ec0 75 20 7b 20 66 20 78 20 79 20 70 61 67 65 20 7d u { f x y page }
48ed0 20 7b 0a 0a 09 63 61 74 63 68 20 7b 20 64 65 73 {...catch { des
48ee0 74 72 6f 79 20 24 66 2e 6d 20 7d 0a 09 6d 65 6e troy $f.m }..men
48ef0 75 20 24 66 2e 6d 0a 09 73 77 69 74 63 68 20 24 u $f.m..switch $
48f00 70 61 67 65 20 7b 0a 09 20 20 20 20 73 74 61 63 page {.. stac
48f10 6b 74 72 61 63 65 20 7b 20 0a 09 09 73 65 74 20 ktrace { ...set
48f20 78 74 20 5b 65 78 70 72 20 7b 24 78 2d 5b 77 69 xt [expr {$x-[wi
48f30 6e 66 6f 20 72 6f 6f 74 78 20 24 66 5d 7d 5d 0a nfo rootx $f]}].
48f40 09 09 73 65 74 20 79 74 20 5b 65 78 70 72 20 7b ..set yt [expr {
48f50 24 79 2d 5b 77 69 6e 66 6f 20 72 6f 6f 74 79 20 $y-[winfo rooty
48f60 24 66 5d 7d 5d 0a 09 09 24 66 2e 6d 20 61 64 64 $f]}]...$f.m add
48f70 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 command -label
48f80 5b 5f 20 22 41 63 74 69 76 61 74 65 20 73 74 61 [_ "Activate sta
48f90 63 6b 20 6c 65 76 65 6c 22 5d 20 2d 63 6f 6d 6d ck level"] -comm
48fa0 61 6e 64 20 5c 0a 09 09 20 20 20 20 5b 6c 69 73 and \... [lis
48fb0 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 t RamDebugger::S
48fc0 74 61 63 6b 44 6f 75 62 6c 65 31 20 24 66 20 40 tackDouble1 $f @
48fd0 24 78 74 2c 24 79 74 5d 0a 09 09 24 66 2e 6d 20 $xt,$yt]...$f.m
48fe0 61 64 64 20 63 68 65 63 6b 62 75 74 74 6f 6e 20 add checkbutton
48ff0 2d 6c 61 62 65 6c 20 5b 5f 20 22 41 75 74 6f 20 -label [_ "Auto
49000 72 61 69 73 65 20 73 74 61 63 6b 20 74 72 61 63 raise stack trac
49010 65 22 5d 20 2d 76 61 72 69 61 62 6c 65 20 5c 0a e"] -variable \.
49020 09 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
49030 72 3a 3a 6f 70 74 69 6f 6e 73 28 61 75 74 6f 5f r::options(auto_
49040 72 61 69 73 65 5f 73 74 61 63 6b 5f 74 72 61 63 raise_stack_trac
49050 65 29 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 6f e).. }.. o
49060 75 74 70 75 74 20 7b 0a 09 09 24 66 2e 6d 20 61 utput {...$f.m a
49070 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 dd command -labe
49080 6c 20 5b 5f 20 22 43 6c 65 61 72 22 5d 20 2d 63 l [_ "Clear"] -c
49090 6f 6d 6d 61 6e 64 20 52 61 6d 44 65 62 75 67 67 ommand RamDebugg
490a0 65 72 3a 3a 54 65 78 74 4f 75 74 43 6c 65 61 72 er::TextOutClear
490b0 0a 09 09 24 66 2e 6d 20 61 64 64 20 63 68 65 63 ...$f.m add chec
490c0 6b 62 75 74 74 6f 6e 20 2d 6c 61 62 65 6c 20 5b kbutton -label [
490d0 5f 20 22 41 75 74 6f 20 72 61 69 73 65 20 73 74 _ "Auto raise st
490e0 61 63 6b 20 74 72 61 63 65 22 5d 20 2d 76 61 72 ack trace"] -var
490f0 69 61 62 6c 65 20 5c 0a 09 09 20 20 20 20 52 61 iable \... Ra
49100 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f mDebugger::optio
49110 6e 73 28 61 75 74 6f 5f 72 61 69 73 65 5f 73 74 ns(auto_raise_st
49120 61 63 6b 5f 74 72 61 63 65 29 0a 09 20 20 20 20 ack_trace)..
49130 7d 0a 09 20 20 20 20 63 6f 6d 70 69 6c 65 20 7b }.. compile {
49140 0a 09 09 73 65 74 20 78 74 20 5b 65 78 70 72 20 ...set xt [expr
49150 7b 24 78 2d 5b 77 69 6e 66 6f 20 72 6f 6f 74 78 {$x-[winfo rootx
49160 20 24 66 5d 7d 5d 0a 09 09 73 65 74 20 79 74 20 $f]}]...set yt
49170 5b 65 78 70 72 20 7b 24 79 2d 5b 77 69 6e 66 6f [expr {$y-[winfo
49180 20 72 6f 6f 74 79 20 24 66 5d 7d 5d 0a 09 09 24 rooty $f]}]...$
49190 66 2e 6d 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 f.m add command
491a0 2d 6c 61 62 65 6c 20 5b 5f 20 22 41 63 74 69 76 -label [_ "Activ
491b0 61 74 65 20 73 74 61 63 6b 20 6c 65 76 65 6c 22 ate stack level"
491c0 5d 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a 09 09 20 ] -command \...
491d0 20 20 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 [list RamDebu
491e0 67 67 65 72 3a 3a 53 74 61 63 6b 44 6f 75 62 6c gger::StackDoubl
491f0 65 31 20 24 66 20 40 24 78 74 2c 24 79 74 5d 0a e1 $f @$xt,$yt].
49200 09 09 24 66 2e 6d 20 61 64 64 20 63 6f 6d 6d 61 ..$f.m add comma
49210 6e 64 20 2d 6c 61 62 65 6c 20 5b 5f 20 22 43 6c nd -label [_ "Cl
49220 65 61 72 22 5d 20 2d 63 6f 6d 6d 61 6e 64 20 52 ear"] -command R
49230 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 amDebugger::Text
49240 43 6f 6d 70 43 6c 65 61 72 0a 09 20 20 20 20 7d CompClear.. }
49250 0a 09 7d 0a 09 74 6b 5f 70 6f 70 75 70 20 24 66 ..}..tk_popup $f
49260 2e 6d 20 24 78 20 24 79 0a 20 20 20 20 7d 0a 20 .m $x $y. }.
49270 20 20 20 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 $pane2in2.nb
49280 62 69 6e 64 74 61 62 73 20 3c 3c 43 6f 6e 74 65 bindtabs <<Conte
49290 78 74 75 61 6c 50 72 65 73 73 3e 3e 20 5b 6c 69 xtualPress>> [li
492a0 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
492b0 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75 70 4d 65 6e NoteBookPopupMen
492c0 75 20 25 57 20 25 58 20 25 59 5d 0a 20 20 20 20 u %W %X %Y].
492d0 62 69 6e 64 20 24 74 65 78 74 53 54 20 3c 3c 43 bind $textST <<C
492e0 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 3e 3e ontextualPress>>
492f0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
49300 65 72 3a 3a 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75 er::NoteBookPopu
49310 70 4d 65 6e 75 20 25 57 20 25 58 20 25 59 20 73 pMenu %W %X %Y s
49320 74 61 63 6b 74 72 61 63 65 5d 0a 20 20 20 20 62 tacktrace]. b
49330 69 6e 64 20 24 74 65 78 74 4f 55 54 20 3c 3c 43 ind $textOUT <<C
49340 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 3e 3e ontextualPress>>
49350 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
49360 65 72 3a 3a 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75 er::NoteBookPopu
49370 70 4d 65 6e 75 20 25 57 20 25 58 20 25 59 20 6f pMenu %W %X %Y o
49380 75 74 70 75 74 5d 0a 20 20 20 20 62 69 6e 64 20 utput]. bind
49390 24 74 65 78 74 43 4f 4d 50 20 3c 3c 43 6f 6e 74 $textCOMP <<Cont
493a0 65 78 74 75 61 6c 50 72 65 73 73 3e 3e 20 5b 6c extualPress>> [l
493b0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
493c0 3a 4e 6f 74 65 42 6f 6f 6b 50 6f 70 75 70 4d 65 :NoteBookPopupMe
493d0 6e 75 20 25 57 20 25 58 20 25 59 20 63 6f 6d 70 nu %W %X %Y comp
493e0 69 6c 65 5d 0a 0a 0a 20 20 20 20 70 72 6f 63 20 ile]... proc
493f0 54 65 78 74 53 74 61 63 6b 54 72 61 63 65 52 61 TextStackTraceRa
49400 69 73 65 20 7b 7d 20 22 63 61 74 63 68 20 7b 20 ise {} "catch {
49410 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 72 61 69 $pane2in2.nb rai
49420 73 65 20 73 74 61 63 6b 74 72 61 63 65 20 7d 22 se stacktrace }"
49430 0a 20 20 20 20 70 72 6f 63 20 54 65 78 74 4f 75 . proc TextOu
49440 74 52 61 69 73 65 20 7b 7d 20 5b 6c 69 73 74 20 tRaise {} [list
49450 54 65 78 74 4f 75 74 52 61 69 73 65 44 6f 20 24 TextOutRaiseDo $
49460 70 61 6e 65 32 69 6e 32 2e 6e 62 5d 0a 20 20 20 pane2in2.nb].
49470 20 70 72 6f 63 20 54 65 78 74 43 6f 6d 70 52 61 proc TextCompRa
49480 69 73 65 20 7b 7d 20 22 63 61 74 63 68 20 7b 20 ise {} "catch {
49490 24 70 61 6e 65 32 69 6e 32 2e 6e 62 20 72 61 69 $pane2in2.nb rai
494a0 73 65 20 63 6f 6d 70 69 6c 65 20 7d 22 0a 0a 0a se compile }"...
494b0 20 20 20 20 23 73 65 74 20 70 61 6e 65 33 20 5b #set pane3 [
494c0 24 70 77 20 61 64 64 20 2d 77 65 69 67 68 74 20 $pw add -weight
494d0 24 77 65 69 67 68 74 33 5d 0a 20 20 20 20 73 65 $weight3]. se
494e0 74 20 70 61 6e 65 33 20 5b 66 72 61 6d 65 20 24 t pane3 [frame $
494f0 70 77 2e 70 61 6e 65 33 5d 0a 20 20 20 20 0a 20 pw.pane3]. .
49500 20 20 20 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 if { $options
49510 28 76 69 65 77 76 61 72 69 61 62 6c 65 73 70 61 (viewvariablespa
49520 6e 65 56 32 29 20 7d 20 7b 0a 09 24 70 77 20 61 neV2) } {..$pw a
49530 64 64 20 24 70 61 6e 65 33 20 2d 73 74 69 63 6b dd $pane3 -stick
49540 79 20 6e 73 65 77 20 2d 77 69 64 74 68 20 24 77 y nsew -width $w
49550 65 69 67 68 74 33 0a 20 20 20 20 7d 0a 20 20 20 eight3. }.
49560 20 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 . ##########
49570 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49590 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
495a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
495b0 23 23 23 23 23 23 0a 20 20 20 20 23 20 74 68 65 ######. # the
495c0 20 76 65 72 74 69 63 61 6c 20 75 73 65 72 20 64 vertical user d
495d0 65 66 69 6e 65 64 20 2d 20 6c 6f 63 61 6c 0a 20 efined - local.
495e0 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 #############
495f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49630 23 23 23 0a 0a 20 20 20 20 23 73 65 74 20 70 77 ###.. #set pw
49640 31 20 5b 70 61 6e 65 64 77 69 6e 64 6f 77 20 24 1 [panedwindow $
49650 70 61 6e 65 33 2e 70 77 20 2d 6f 72 69 65 6e 74 pane3.pw -orient
49660 20 76 65 72 74 69 63 61 6c 20 2d 67 72 69 64 20 vertical -grid
49670 22 30 22 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 "0"]. . se
49680 74 20 70 77 31 20 5b 70 61 6e 65 64 77 69 6e 64 t pw1 [panedwind
49690 6f 77 20 24 66 34 2e 70 77 20 2d 6f 72 69 65 6e ow $f4.pw -orien
496a0 74 20 68 6f 72 69 7a 6f 6e 74 61 6c 5d 0a 20 20 t horizontal].
496b0 20 20 67 72 69 64 20 24 70 77 31 20 2d 73 74 69 grid $pw1 -sti
496c0 63 6b 79 20 6e 73 65 77 0a 20 20 20 20 67 72 69 cky nsew. gri
496d0 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 d columnconfigur
496e0 65 20 24 66 34 20 30 20 2d 77 65 69 67 68 74 20 e $f4 0 -weight
496f0 31 0a 20 20 20 20 67 72 69 64 20 72 6f 77 63 6f 1. grid rowco
49700 6e 66 69 67 75 72 65 20 24 66 34 20 30 20 2d 77 nfigure $f4 0 -w
49710 65 69 67 68 74 20 31 0a 0a 20 20 20 20 66 6f 72 eight 1.. for
49720 65 61 63 68 20 22 77 65 69 67 68 74 33 69 6e 31 each "weight3in1
49730 20 77 65 69 67 68 74 33 69 6e 32 22 20 5b 4d 61 weight3in2" [Ma
49740 6e 61 67 65 50 61 6e 65 73 20 24 70 77 31 20 68 nagePanes $pw1 h
49750 20 22 31 30 30 20 31 30 30 22 5d 20 62 72 65 61 "100 100"] brea
49760 6b 0a 0a 20 20 20 20 23 73 65 74 20 70 61 6e 65 k.. #set pane
49770 33 69 6e 31 20 5b 24 70 77 31 20 61 64 64 20 2d 3in1 [$pw1 add -
49780 77 65 69 67 68 74 20 24 77 65 69 67 68 74 33 69 weight $weight3i
49790 6e 31 5d 0a 20 20 20 20 73 65 74 20 70 61 6e 65 n1]. set pane
497a0 33 69 6e 31 20 5b 66 72 61 6d 65 20 24 70 77 31 3in1 [frame $pw1
497b0 2e 70 61 6e 65 33 69 6e 31 5d 0a 20 20 20 20 24 .pane3in1]. $
497c0 70 77 31 20 61 64 64 20 24 70 61 6e 65 33 69 6e pw1 add $pane3in
497d0 31 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 2d 1 -sticky nsew -
497e0 68 65 69 67 68 74 20 24 77 65 69 67 68 74 33 69 height $weight3i
497f0 6e 31 0a 0a 20 20 20 20 6c 61 62 65 6c 20 24 70 n1.. label $p
49800 61 6e 65 33 69 6e 31 2e 6c 31 20 2d 74 65 78 74 ane3in1.l1 -text
49810 20 5b 5f 20 22 55 73 65 72 20 64 65 66 69 6e 65 [_ "User define
49820 64 20 76 61 72 69 61 62 6c 65 73 22 5d 20 2d 72 d variables"] -r
49830 65 6c 69 65 66 20 72 61 69 73 65 64 20 2d 62 64 elief raised -bd
49840 20 31 20 2d 67 72 69 64 20 22 30 20 65 77 22 0a 1 -grid "0 ew".
49850 0a 20 20 20 20 73 65 74 20 73 77 20 5b 53 63 72 . set sw [Scr
49860 6f 6c 6c 65 64 57 69 6e 64 6f 77 20 24 70 61 6e olledWindow $pan
49870 65 33 69 6e 31 2e 73 77 20 2d 62 6f 72 64 65 72 e3in1.sw -border
49880 77 69 64 74 68 20 30 20 2d 62 64 20 31 20 2d 72 width 0 -bd 1 -r
49890 65 6c 69 65 66 20 72 61 69 73 65 64 20 2d 67 72 elief raised -gr
498a0 69 64 20 22 30 20 6e 73 77 65 22 5d 0a 20 20 20 id "0 nswe"].
498b0 20 73 65 74 20 73 66 20 5b 53 63 72 6f 6c 6c 61 set sf [Scrolla
498c0 62 6c 65 46 72 61 6d 65 20 24 73 77 2e 66 20 2d bleFrame $sw.f -
498d0 63 6f 6e 73 74 72 61 69 6e 65 64 77 69 64 74 68 constrainedwidth
498e0 20 31 5d 0a 20 20 20 20 24 73 77 20 73 65 74 77 1]. $sw setw
498f0 69 64 67 65 74 20 24 73 66 0a 20 20 20 20 73 65 idget $sf. se
49900 74 20 66 31 20 5b 24 73 66 20 67 65 74 66 72 61 t f1 [$sf getfra
49910 6d 65 5d 0a 0a 0a 20 20 20 20 23 23 23 23 23 23 me]... ######
49920 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49960 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
49970 20 74 68 65 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 the horizontal
49980 75 73 65 72 20 64 65 66 69 6e 65 64 20 76 61 72 user defined var
49990 73 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 s. ##########
499a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
499b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
499c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
499d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
499e0 23 23 23 23 23 23 0a 0a 20 20 20 20 73 65 74 20 ######.. set
499f0 70 77 20 5b 70 61 6e 65 64 77 69 6e 64 6f 77 20 pw [panedwindow
49a00 24 66 31 2e 70 77 20 2d 6f 72 69 65 6e 74 20 68 $f1.pw -orient h
49a10 6f 72 69 7a 6f 6e 74 61 6c 20 2d 67 72 69 64 20 orizontal -grid
49a20 22 30 20 6e 73 22 5d 0a 0a 20 20 20 20 66 6f 72 "0 ns"].. for
49a30 65 61 63 68 20 22 77 65 69 67 68 74 31 20 77 65 each "weight1 we
49a40 69 67 68 74 32 22 20 5b 4d 61 6e 61 67 65 50 61 ight2" [ManagePa
49a50 6e 65 73 20 24 70 77 20 68 20 22 31 30 30 20 31 nes $pw h "100 1
49a60 30 30 22 5d 20 62 72 65 61 6b 0a 0a 23 20 20 20 00"] break..#
49a70 20 20 73 65 74 20 70 61 6e 65 31 5f 76 61 72 73 set pane1_vars
49a80 20 5b 24 70 77 20 61 64 64 20 2d 77 65 69 67 68 [$pw add -weigh
49a90 74 20 24 77 65 69 67 68 74 31 5d 0a 23 20 20 20 t $weight1].#
49aa0 20 20 73 65 74 20 70 61 6e 65 32 5f 76 61 72 73 set pane2_vars
49ab0 20 5b 24 70 77 20 61 64 64 20 2d 77 65 69 67 68 [$pw add -weigh
49ac0 74 20 24 77 65 69 67 68 74 32 5d 0a 20 20 20 20 t $weight2].
49ad0 73 65 74 20 70 61 6e 65 31 5f 76 61 72 73 20 5b set pane1_vars [
49ae0 66 72 61 6d 65 20 24 70 77 2e 70 61 6e 65 31 5f frame $pw.pane1_
49af0 76 61 72 73 5d 0a 20 20 20 20 24 70 77 20 61 64 vars]. $pw ad
49b00 64 20 24 70 61 6e 65 31 5f 76 61 72 73 20 2d 73 d $pane1_vars -s
49b10 74 69 63 6b 79 20 6e 73 65 77 20 2d 77 69 64 74 ticky nsew -widt
49b20 68 20 24 77 65 69 67 68 74 31 0a 20 20 20 20 73 h $weight1. s
49b30 65 74 20 70 61 6e 65 32 5f 76 61 72 73 20 5b 66 et pane2_vars [f
49b40 72 61 6d 65 20 24 70 77 2e 70 61 6e 65 32 5f 76 rame $pw.pane2_v
49b50 61 72 73 5d 0a 20 20 20 20 24 70 77 20 61 64 64 ars]. $pw add
49b60 20 24 70 61 6e 65 32 5f 76 61 72 73 20 2d 73 74 $pane2_vars -st
49b70 69 63 6b 79 20 6e 73 65 77 20 2d 77 69 64 74 68 icky nsew -width
49b80 20 24 77 65 69 67 68 74 32 0a 0a 20 20 20 20 6c $weight2.. l
49b90 61 62 65 6c 20 24 70 61 6e 65 31 5f 76 61 72 73 abel $pane1_vars
49ba0 2e 6c 20 2d 74 65 78 74 20 56 61 72 69 61 62 6c .l -text Variabl
49bb0 65 73 20 2d 72 65 6c 69 65 66 20 72 61 69 73 65 es -relief raise
49bc0 64 20 2d 62 64 20 31 0a 20 20 20 20 6c 61 62 65 d -bd 1. labe
49bd0 6c 20 24 70 61 6e 65 32 5f 76 61 72 73 2e 6c 20 l $pane2_vars.l
49be0 2d 74 65 78 74 20 56 61 6c 75 65 73 20 2d 72 65 -text Values -re
49bf0 6c 69 65 66 20 72 61 69 73 65 64 20 2d 62 64 20 lief raised -bd
49c00 31 0a 0a 20 20 20 20 67 72 69 64 20 24 70 61 6e 1.. grid $pan
49c10 65 31 5f 76 61 72 73 2e 6c 20 2d 73 74 69 63 6b e1_vars.l -stick
49c20 79 20 65 77 0a 20 20 20 20 67 72 69 64 20 24 70 y ew. grid $p
49c30 61 6e 65 32 5f 76 61 72 73 2e 6c 20 2d 73 74 69 ane2_vars.l -sti
49c40 63 6b 79 20 65 77 0a 0a 20 20 20 20 43 72 65 61 cky ew.. Crea
49c50 74 65 50 61 6e 65 64 45 6e 74 72 69 65 73 20 31 tePanedEntries 1
49c60 32 20 24 70 61 6e 65 31 5f 76 61 72 73 20 24 70 2 $pane1_vars $p
49c70 61 6e 65 32 5f 76 61 72 73 20 22 22 0a 0a 20 20 ane2_vars ""..
49c80 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 if { [info exi
49c90 73 74 73 20 6f 70 74 69 6f 6e 73 28 77 61 74 63 sts options(watc
49ca0 68 65 64 76 61 72 73 29 5d 20 7d 20 7b 0a 09 73 hedvars)] } {..s
49cb0 65 74 20 69 20 30 0a 09 66 6f 72 65 61 63 68 20 et i 0..foreach
49cc0 6a 20 24 6f 70 74 69 6f 6e 73 28 77 61 74 63 68 j $options(watch
49cd0 65 64 76 61 72 73 29 20 7b 0a 09 20 20 20 20 69 edvars) {.. i
49ce0 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d f { [string trim
49cf0 20 24 6a 5d 20 3d 3d 20 22 22 20 7d 20 7b 20 63 $j] == "" } { c
49d00 6f 6e 74 69 6e 75 65 20 7d 0a 09 20 20 20 20 73 ontinue }.. s
49d10 65 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a et RamDebugger::
49d20 45 76 61 6c 45 6e 74 72 69 65 73 28 24 69 2c 6c EvalEntries($i,l
49d30 65 66 74 29 20 24 6a 0a 09 20 20 20 20 69 6e 63 eft) $j.. inc
49d40 72 20 69 0a 09 20 20 20 20 69 66 20 7b 20 24 69 r i.. if { $i
49d50 20 3e 20 31 32 20 7d 20 7b 0a 09 09 43 72 65 61 > 12 } {...Crea
49d60 74 65 50 61 6e 65 64 45 6e 74 72 69 65 73 20 24 tePanedEntries $
49d70 69 20 24 70 61 6e 65 31 5f 76 61 72 73 20 24 70 i $pane1_vars $p
49d80 61 6e 65 32 5f 76 61 72 73 20 22 22 0a 09 20 20 ane2_vars ""..
49d90 20 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a 23 20 }..}. }..#
49da0 20 20 20 20 73 65 74 20 70 61 6e 65 33 69 6e 32 set pane3in2
49db0 20 5b 24 70 77 31 20 61 64 64 20 2d 77 65 69 67 [$pw1 add -weig
49dc0 68 74 20 24 77 65 69 67 68 74 33 69 6e 32 5d 0a ht $weight3in2].
49dd0 20 20 20 20 73 65 74 20 70 61 6e 65 33 69 6e 32 set pane3in2
49de0 20 5b 66 72 61 6d 65 20 24 70 77 31 2e 70 61 6e [frame $pw1.pan
49df0 65 33 69 6e 32 5d 0a 20 20 20 20 24 70 77 31 20 e3in2]. $pw1
49e00 61 64 64 20 24 70 61 6e 65 33 69 6e 32 20 2d 73 add $pane3in2 -s
49e10 74 69 63 6b 79 20 6e 73 65 77 20 2d 68 65 69 67 ticky nsew -heig
49e20 68 74 20 24 77 65 69 67 68 74 33 69 6e 32 0a 0a ht $weight3in2..
49e30 20 20 20 20 63 68 65 63 6b 62 75 74 74 6f 6e 20 checkbutton
49e40 24 70 61 6e 65 33 69 6e 32 2e 6c 31 20 2d 74 65 $pane3in2.l1 -te
49e50 78 74 20 5b 5f 20 22 4c 6f 63 61 6c 20 76 61 72 xt [_ "Local var
49e60 69 61 62 6c 65 73 22 5d 20 2d 72 65 6c 69 65 66 iables"] -relief
49e70 20 72 61 69 73 65 64 20 2d 62 64 20 31 20 2d 67 raised -bd 1 -g
49e80 72 69 64 20 22 30 20 65 77 22 20 5c 0a 09 2d 76 rid "0 ew" \..-v
49e90 61 72 69 61 62 6c 65 20 52 61 6d 44 65 62 75 67 ariable RamDebug
49ea0 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 56 69 65 ger::options(Vie
49eb0 77 4c 6f 63 61 6c 56 61 72 69 61 62 6c 65 73 29 wLocalVariables)
49ec0 20 5c 0a 09 2d 63 6f 6d 6d 61 6e 64 20 22 52 61 \..-command "Ra
49ed0 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 65 63 6b mDebugger::Check
49ee0 45 76 61 6c 45 6e 74 72 69 65 73 4c 20 64 6f 22 EvalEntriesL do"
49ef0 0a 0a 20 20 20 20 73 65 74 20 73 77 20 5b 53 63 .. set sw [Sc
49f00 72 6f 6c 6c 65 64 57 69 6e 64 6f 77 20 24 70 61 rolledWindow $pa
49f10 6e 65 33 69 6e 32 2e 73 77 20 2d 62 6f 72 64 65 ne3in2.sw -borde
49f20 72 77 69 64 74 68 20 30 20 2d 62 64 20 31 20 2d rwidth 0 -bd 1 -
49f30 72 65 6c 69 65 66 20 72 61 69 73 65 64 20 2d 67 relief raised -g
49f40 72 69 64 20 22 30 20 6e 73 77 65 22 5d 0a 20 20 rid "0 nswe"].
49f50 20 20 73 65 74 20 73 66 20 5b 53 63 72 6f 6c 6c set sf [Scroll
49f60 61 62 6c 65 46 72 61 6d 65 20 24 73 77 2e 66 20 ableFrame $sw.f
49f70 2d 63 6f 6e 73 74 72 61 69 6e 65 64 77 69 64 74 -constrainedwidt
49f80 68 20 31 5d 0a 20 20 20 20 24 73 77 20 73 65 74 h 1]. $sw set
49f90 77 69 64 67 65 74 20 24 73 66 0a 20 20 20 20 73 widget $sf. s
49fa0 65 74 20 66 31 4c 20 5b 24 73 66 20 67 65 74 66 et f1L [$sf getf
49fb0 72 61 6d 65 5d 0a 0a 0a 20 20 20 20 23 23 23 23 rame]... ####
49fc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49fd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49fe0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
49ff0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a000 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
4a010 20 23 20 74 68 65 20 68 6f 72 69 7a 6f 6e 74 61 # the horizonta
4a020 6c 20 6c 6f 63 61 6c 20 76 61 72 73 0a 20 20 20 l local vars.
4a030 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ###############
4a040 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a050 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a060 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a070 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a080 23 0a 0a 20 20 20 20 73 65 74 20 70 77 4c 20 5b #.. set pwL [
4a090 70 61 6e 65 64 77 69 6e 64 6f 77 20 24 66 31 4c panedwindow $f1L
4a0a0 2e 70 77 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69 .pw -orient hori
4a0b0 7a 6f 6e 74 61 6c 20 2d 67 72 69 64 20 22 30 20 zontal -grid "0
4a0c0 6e 73 22 5d 0a 0a 20 20 20 20 66 6f 72 65 61 63 ns"].. foreac
4a0d0 68 20 22 77 65 69 67 68 74 31 20 77 65 69 67 68 h "weight1 weigh
4a0e0 74 32 22 20 5b 4d 61 6e 61 67 65 50 61 6e 65 73 t2" [ManagePanes
4a0f0 20 24 70 77 4c 20 68 20 22 31 30 30 20 31 30 30 $pwL h "100 100
4a100 22 5d 20 62 72 65 61 6b 0a 0a 23 20 20 20 20 20 "] break..#
4a110 73 65 74 20 70 61 6e 65 31 5f 76 61 72 73 4c 20 set pane1_varsL
4a120 5b 24 70 77 4c 20 61 64 64 20 2d 77 65 69 67 68 [$pwL add -weigh
4a130 74 20 24 77 65 69 67 68 74 31 5d 0a 23 20 20 20 t $weight1].#
4a140 20 20 73 65 74 20 70 61 6e 65 32 5f 76 61 72 73 set pane2_vars
4a150 4c 20 5b 24 70 77 4c 20 61 64 64 20 2d 77 65 69 L [$pwL add -wei
4a160 67 68 74 20 24 77 65 69 67 68 74 32 5d 0a 20 20 ght $weight2].
4a170 20 20 73 65 74 20 70 61 6e 65 31 5f 76 61 72 73 set pane1_vars
4a180 4c 20 5b 66 72 61 6d 65 20 24 70 77 4c 2e 70 61 L [frame $pwL.pa
4a190 6e 65 31 5f 76 61 72 73 4c 5d 0a 20 20 20 20 24 ne1_varsL]. $
4a1a0 70 77 4c 20 61 64 64 20 24 70 61 6e 65 31 5f 76 pwL add $pane1_v
4a1b0 61 72 73 4c 20 2d 73 74 69 63 6b 79 20 6e 73 65 arsL -sticky nse
4a1c0 77 20 2d 77 69 64 74 68 20 24 77 65 69 67 68 74 w -width $weight
4a1d0 31 0a 20 20 20 20 73 65 74 20 70 61 6e 65 32 5f 1. set pane2_
4a1e0 76 61 72 73 4c 20 5b 66 72 61 6d 65 20 24 70 77 varsL [frame $pw
4a1f0 4c 2e 70 61 6e 65 32 5f 76 61 72 73 4c 5d 0a 20 L.pane2_varsL].
4a200 20 20 20 24 70 77 4c 20 61 64 64 20 24 70 61 6e $pwL add $pan
4a210 65 32 5f 76 61 72 73 4c 20 2d 73 74 69 63 6b 79 e2_varsL -sticky
4a220 20 6e 73 65 77 20 2d 77 69 64 74 68 20 24 77 65 nsew -width $we
4a230 69 67 68 74 32 0a 0a 20 20 20 20 6c 61 62 65 6c ight2.. label
4a240 20 24 70 61 6e 65 31 5f 76 61 72 73 4c 2e 6c 20 $pane1_varsL.l
4a250 2d 74 65 78 74 20 56 61 72 69 61 62 6c 65 73 20 -text Variables
4a260 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64 20 2d -relief raised -
4a270 62 64 20 31 20 2d 67 72 69 64 20 22 30 20 65 77 bd 1 -grid "0 ew
4a280 22 0a 20 20 20 20 6c 61 62 65 6c 20 24 70 61 6e ". label $pan
4a290 65 32 5f 76 61 72 73 4c 2e 6c 20 2d 74 65 78 74 e2_varsL.l -text
4a2a0 20 56 61 6c 75 65 73 20 2d 72 65 6c 69 65 66 20 Values -relief
4a2b0 72 61 69 73 65 64 20 2d 62 64 20 31 20 2d 67 72 raised -bd 1 -gr
4a2c0 69 64 20 22 30 20 65 77 22 0a 0a 20 20 20 20 67 id "0 ew".. g
4a2d0 72 69 64 20 24 70 61 6e 65 31 5f 76 61 72 73 4c rid $pane1_varsL
4a2e0 2e 6c 20 2d 73 74 69 63 6b 79 20 65 77 0a 20 20 .l -sticky ew.
4a2f0 20 20 67 72 69 64 20 24 70 61 6e 65 32 5f 76 61 grid $pane2_va
4a300 72 73 4c 2e 6c 20 2d 73 74 69 63 6b 79 20 65 77 rsL.l -sticky ew
4a310 0a 0a 20 20 20 20 43 72 65 61 74 65 50 61 6e 65 .. CreatePane
4a320 64 45 6e 74 72 69 65 73 20 31 32 20 24 70 61 6e dEntries 12 $pan
4a330 65 31 5f 76 61 72 73 4c 20 24 70 61 6e 65 32 5f e1_varsL $pane2_
4a340 76 61 72 73 4c 20 4c 0a 0a 20 20 20 20 23 23 23 varsL L.. ###
4a350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a360 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a370 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a390 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
4a3a0 20 20 23 20 74 68 65 20 6e 69 63 65 20 73 75 70 # the nice sup
4a3b0 65 72 67 72 69 64 0a 20 20 20 20 23 23 23 23 23 ergrid. #####
4a3c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a3d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a3e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a3f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a400 23 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 ###########..
4a410 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 supergrid::go $
4a420 70 61 6e 65 33 69 6e 31 0a 20 20 20 20 73 75 70 pane3in1. sup
4a430 65 72 67 72 69 64 3a 3a 67 6f 20 24 70 61 6e 65 ergrid::go $pane
4a440 33 69 6e 32 0a 20 20 20 20 73 75 70 65 72 67 72 3in2. supergr
4a450 69 64 3a 3a 67 6f 20 24 66 31 0a 20 20 20 20 73 id::go $f1. s
4a460 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 31 upergrid::go $f1
4a470 4c 0a 20 20 20 20 73 75 70 65 72 67 72 69 64 3a L. supergrid:
4a480 3a 67 6f 20 24 66 75 6c 6c 74 65 78 74 0a 20 20 :go $fulltext.
4a490 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 supergrid::go
4a4a0 24 70 61 6e 65 32 69 6e 32 0a 20 20 20 20 23 69 $pane2in2. #i
4a4b0 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
4a4c0 20 70 61 6e 65 31 5d 20 7d 20 7b 20 73 75 70 65 pane1] } { supe
4a4d0 72 67 72 69 64 3a 3a 67 6f 20 24 70 61 6e 65 31 rgrid::go $pane1
4a4e0 20 7d 0a 20 20 20 20 73 75 70 65 72 67 72 69 64 }. supergrid
4a4f0 3a 3a 67 6f 20 24 70 61 6e 65 32 0a 20 20 20 20 ::go $pane2.
4a500 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 70 supergrid::go $p
4a510 61 6e 65 33 0a 0a 20 20 20 20 67 72 69 64 20 24 ane3.. grid $
4a520 66 2e 70 77 20 2d 73 74 69 63 6b 79 20 6e 73 65 f.pw -sticky nse
4a530 77 20 2d 63 6f 6c 75 6d 6e 20 30 20 2d 72 6f 77 w -column 0 -row
4a540 20 30 0a 20 20 20 20 67 72 69 64 20 63 6f 6c 75 0. grid colu
4a550 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 66 20 30 mnconfigure $f 0
4a560 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20 67 -weight 1. g
4a570 72 69 64 20 72 6f 77 63 6f 6e 66 69 67 75 72 65 rid rowconfigure
4a580 20 24 66 20 30 20 2d 77 65 69 67 68 74 20 31 0a $f 0 -weight 1.
4a590 20 20 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 supergrid::g
4a5a0 6f 20 24 77 0a 0a 20 20 20 20 23 23 23 23 23 23 o $w.. ######
4a5b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a5c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a5d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a5e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a5f0 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
4a600 20 74 68 65 20 62 69 6e 64 69 6e 67 73 0a 20 20 the bindings.
4a610 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ##############
4a620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a650 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4a660 23 23 0a 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 ##.. if {[str
4a670 69 6e 67 20 65 71 75 61 6c 20 22 75 6e 69 78 22 ing equal "unix"
4a680 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d $::tcl_platform
4a690 28 70 6c 61 74 66 6f 72 6d 29 5d 7d 20 7b 0a 09 (platform)]} {..
4a6a0 66 6f 72 65 61 63 68 20 22 62 75 74 20 75 6e 69 foreach "but uni
4a6b0 74 73 22 20 5b 6c 69 73 74 20 34 20 2d 31 20 35 ts" [list 4 -1 5
4a6c0 20 31 5d 20 7b 0a 09 20 20 20 20 73 65 74 20 63 1] {.. set c
4a6d0 6f 6d 6d 20 7b 0a 09 09 73 65 74 20 77 20 25 57 omm {...set w %W
4a6e0 0a 09 09 77 68 69 6c 65 20 7b 20 24 77 20 21 3d ...while { $w !=
4a6f0 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c [winfo toplevel
4a700 20 24 77 5d 20 7d 20 7b 0a 09 09 20 20 20 20 63 $w] } {... c
4a710 61 74 63 68 20 7b 0a 09 09 20 20 20 20 20 20 20 atch {...
4a720 20 73 65 74 20 79 63 6f 6d 6d 20 5b 24 77 20 63 set ycomm [$w c
4a730 67 65 74 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d get -yscrollcomm
4a740 61 6e 64 5d 0a 09 09 20 20 20 20 20 20 20 20 69 and]... i
4a750 66 20 7b 20 24 79 63 6f 6d 6d 20 21 3d 20 22 22 f { $ycomm != ""
4a760 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 } {...
4a770 20 20 20 24 77 20 79 76 69 65 77 20 73 63 72 6f $w yview scro
4a780 6c 6c 20 24 75 6e 69 74 73 20 75 6e 69 74 73 0a ll $units units.
4a790 09 09 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .. br
4a7a0 65 61 6b 0a 09 09 20 20 20 20 20 20 20 20 7d 0a eak... }.
4a7b0 09 09 20 20 20 20 7d 0a 09 09 20 20 20 20 73 65 .. }... se
4a7c0 74 20 77 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e t w [winfo paren
4a7d0 74 20 24 77 5d 0a 09 09 7d 0a 09 20 20 20 20 7d t $w]...}.. }
4a7e0 0a 09 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c .. regsub -al
4a7f0 6c 20 7b 28 3f 71 29 24 75 6e 69 74 73 7d 20 24 l {(?q)$units} $
4a800 63 6f 6d 6d 20 24 75 6e 69 74 73 20 63 6f 6d 6d comm $units comm
4a810 0a 09 20 20 20 20 62 69 6e 64 20 54 65 78 74 20 .. bind Text
4a820 3c 42 75 74 74 6f 6e 2d 24 62 75 74 3e 20 22 22 <Button-$but> ""
4a830 0a 09 20 20 20 20 62 69 6e 64 20 61 6c 6c 20 3c .. bind all <
4a840 42 75 74 74 6f 6e 2d 24 62 75 74 3e 20 24 63 6f Button-$but> $co
4a850 6d 6d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 mm..}. } else
4a860 20 7b 0a 09 62 69 6e 64 20 54 65 78 74 20 3c 4d {..bind Text <M
4a870 6f 75 73 65 57 68 65 65 6c 3e 20 22 22 0a 09 62 ouseWheel> ""..b
4a880 69 6e 64 20 61 6c 6c 20 3c 4d 6f 75 73 65 57 68 ind all <MouseWh
4a890 65 65 6c 3e 20 7b 0a 09 20 20 20 20 73 65 74 20 eel> {.. set
4a8a0 77 20 25 57 0a 09 20 20 20 20 77 68 69 6c 65 20 w %W.. while
4a8b0 7b 20 24 77 20 21 3d 20 5b 77 69 6e 66 6f 20 74 { $w != [winfo t
4a8c0 6f 70 6c 65 76 65 6c 20 24 77 5d 20 7d 20 7b 0a oplevel $w] } {.
4a8d0 09 09 63 61 74 63 68 20 7b 0a 09 09 20 20 20 20 ..catch {...
4a8e0 73 65 74 20 79 63 6f 6d 6d 20 5b 24 77 20 63 67 set ycomm [$w cg
4a8f0 65 74 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d 61 et -yscrollcomma
4a900 6e 64 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 24 nd]... if { $
4a910 79 63 6f 6d 6d 20 21 3d 20 22 22 20 7d 20 7b 0a ycomm != "" } {.
4a920 09 09 20 20 20 20 20 20 20 20 24 77 20 79 76 69 .. $w yvi
4a930 65 77 20 73 63 72 6f 6c 6c 20 5b 65 78 70 72 20 ew scroll [expr
4a940 69 6e 74 28 2d 31 2a 25 44 2f 33 36 29 5d 20 75 int(-1*%D/36)] u
4a950 6e 69 74 73 0a 09 09 20 20 20 20 20 20 20 20 62 nits... b
4a960 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 09 7d reak... }...}
4a970 0a 09 09 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 ...set w [winfo
4a980 70 61 72 65 6e 74 20 24 77 5d 0a 09 20 20 20 20 parent $w]..
4a990 7d 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 }..}. }..
4a9a0 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 set menu [$mainf
4a9b0 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 64 65 62 rame getmenu deb
4a9c0 75 67 5d 0a 20 20 20 20 69 66 20 7b 20 24 6d 65 ug]. if { $me
4a9d0 6e 75 20 65 71 20 22 22 20 7d 20 7b 0a 09 73 65 nu eq "" } {..se
4a9e0 74 20 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 t menu [$mainfra
4a9f0 6d 65 20 67 65 74 6d 65 6e 75 20 65 64 69 74 5d me getmenu edit]
4aa00 20 20 20 0a 20 20 20 20 7d 0a 20 20 20 20 62 69 . }. bi
4aa10 6e 64 20 24 74 65 78 74 20 3c 31 3e 20 5b 6c 69 nd $text <1> [li
4aa20 73 74 20 66 6f 63 75 73 20 24 74 65 78 74 5d 0a st focus $text].
4aa30 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c bind $text <
4aa40 3c 43 6f 6e 74 65 78 74 75 61 6c 50 72 65 73 73 <ContextualPress
4aa50 3e 3e 20 22 25 57 20 6d 61 72 6b 20 73 65 74 20 >> "%W mark set
4aa60 69 6e 73 65 72 74 20 40 25 78 2c 25 79 20 3b 20 insert @%x,%y ;
4aa70 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
4aa80 74 4d 6f 74 69 6f 6e 20 2d 31 20 2d 31 20 2d 31 tMotion -1 -1 -1
4aa90 20 2d 31 3b 5c 0a 09 20 20 20 20 74 6b 5f 70 6f -1;\.. tk_po
4aaa0 70 75 70 20 24 6d 65 6e 75 20 25 58 20 25 59 22 pup $menu %X %Y"
4aab0 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e . if { $iswin
4aac0 63 65 20 7d 20 7b 20 70 6f 63 6b 65 74 70 63 3a ce } { pocketpc:
4aad0 3a 61 64 64 20 24 74 65 78 74 20 7d 0a 0a 20 20 :add $text }..
4aae0 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 44 6f bind $text <Do
4aaf0 75 62 6c 65 2d 31 3e 20 22 52 61 6d 44 65 62 75 uble-1> "RamDebu
4ab00 67 67 65 72 3a 3a 53 65 61 72 63 68 42 72 61 63 gger::SearchBrac
4ab10 65 73 20 25 78 20 25 79 20 3b 62 72 65 61 6b 22 es %x %y ;break"
4ab20 20 0a 20 20 20 20 0a 20 20 20 20 24 74 65 78 74 . . $text
4ab30 53 54 20 63 6f 6e 66 20 2d 73 74 61 74 65 20 64 ST conf -state d
4ab40 69 73 61 62 6c 65 64 0a 20 20 20 20 62 69 6e 64 isabled. bind
4ab50 20 24 74 65 78 74 53 54 20 3c 31 3e 20 7b 20 66 $textST <1> { f
4ab60 6f 63 75 73 20 25 57 20 7d 0a 20 20 20 20 62 69 ocus %W }. bi
4ab70 6e 64 20 24 74 65 78 74 53 54 20 3c 44 6f 75 62 nd $textST <Doub
4ab80 6c 65 2d 31 3e 20 7b 20 52 61 6d 44 65 62 75 67 le-1> { RamDebug
4ab90 67 65 72 3a 3a 53 74 61 63 6b 44 6f 75 62 6c 65 ger::StackDouble
4aba0 31 20 25 57 20 40 25 78 2c 25 79 20 7d 0a 0a 20 1 %W @%x,%y }..
4abb0 20 20 20 24 74 65 78 74 4f 55 54 20 63 6f 6e 66 $textOUT conf
4abc0 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 -state disabled
4abd0 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 4f . bind $textO
4abe0 55 54 20 3c 31 3e 20 7b 20 66 6f 63 75 73 20 25 UT <1> { focus %
4abf0 57 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 74 65 W }. bind $te
4ac00 78 74 4f 55 54 20 3c 44 6f 75 62 6c 65 2d 31 3e xtOUT <Double-1>
4ac10 20 7b 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a { RamDebugger::
4ac20 53 74 61 63 6b 44 6f 75 62 6c 65 31 20 25 57 20 StackDouble1 %W
4ac30 40 25 78 2c 25 79 20 7d 0a 20 20 20 20 0a 20 20 @%x,%y }. .
4ac40 20 20 24 74 65 78 74 43 4f 4d 50 20 63 6f 6e 66 $textCOMP conf
4ac50 20 2d 73 74 61 74 65 20 64 69 73 61 62 6c 65 64 -state disabled
4ac60 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 43 . bind $textC
4ac70 4f 4d 50 20 3c 31 3e 20 7b 20 66 6f 63 75 73 20 OMP <1> { focus
4ac80 25 57 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 74 %W }. bind $t
4ac90 65 78 74 43 4f 4d 50 20 3c 44 6f 75 62 6c 65 2d extCOMP <Double-
4aca0 31 3e 20 7b 20 52 61 6d 44 65 62 75 67 67 65 72 1> { RamDebugger
4acb0 3a 3a 53 74 61 63 6b 44 6f 75 62 6c 65 31 20 25 ::StackDouble1 %
4acc0 57 20 40 25 78 2c 25 79 20 7d 0a 0a 20 20 20 20 W @%x,%y }..
4acd0 62 69 6e 64 20 61 6c 6c 20 3c 46 34 3e 20 22 52 bind all <F4> "R
4ace0 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 72 65 76 amDebugger::Prev
4acf0 4e 65 78 74 43 6f 6d 70 69 6c 65 45 72 72 6f 72 NextCompileError
4ad00 20 6e 65 78 74 22 0a 20 20 20 20 62 69 6e 64 20 next". bind
4ad10 61 6c 6c 20 3c 53 68 69 66 74 2d 46 34 3e 20 22 all <Shift-F4> "
4ad20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 50 72 65 RamDebugger::Pre
4ad30 76 4e 65 78 74 43 6f 6d 70 69 6c 65 45 72 72 6f vNextCompileErro
4ad40 72 20 70 72 65 76 22 0a 20 20 20 20 62 69 6e 64 r prev". bind
4ad50 20 24 74 65 78 74 20 3c 4d 6f 74 69 6f 6e 3e 20 $text <Motion>
4ad60 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 "RamDebugger::Te
4ad70 78 74 4d 6f 74 69 6f 6e 20 25 58 20 25 59 20 25 xtMotion %X %Y %
4ad80 78 20 25 79 22 0a 20 20 20 20 23 20 69 6e 20 6c x %y". # in l
4ad90 69 6e 75 78 2c 20 46 31 30 20 6d 61 6b 65 73 20 inux, F10 makes
4ada0 73 6f 6d 65 20 73 74 75 70 69 64 20 74 68 69 6e some stupid thin
4adb0 67 0a 20 20 20 20 62 69 6e 64 20 61 6c 6c 20 3c g. bind all <
4adc0 46 31 30 3e 20 22 22 0a 0a 20 20 20 20 62 69 6e F10> "".. bin
4add0 64 20 24 74 65 78 74 20 3c 24 3a 3a 61 6c 74 2d d $text <$::alt-
4ade0 4c 65 66 74 3e 20 22 52 61 6d 44 65 62 75 67 67 Left> "RamDebugg
4adf0 65 72 3a 3a 47 6f 74 6f 50 72 65 76 69 6f 75 73 er::GotoPrevious
4ae00 4e 65 78 74 49 6e 57 69 6e 4c 69 73 74 20 70 72 NextInWinList pr
4ae10 65 76 20 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 ev ; break".
4ae20 62 69 6e 64 20 24 74 65 78 74 20 3c 43 6f 6e 74 bind $text <Cont
4ae30 72 6f 6c 2d 54 61 62 3e 20 22 5b 6c 69 73 74 20 rol-Tab> "[list
4ae40 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 68 6f RamDebugger::Cho
4ae50 6f 73 65 56 69 65 77 46 69 6c 65 20 73 74 61 72 oseViewFile star
4ae60 74 5d 20 3b 20 62 72 65 61 6b 22 0a 0a 23 20 20 t] ; break"..#
4ae70 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 43 bind $text <C
4ae80 6f 6e 74 72 6f 6c 2d 54 61 62 3e 20 22 52 61 6d ontrol-Tab> "Ram
4ae90 44 65 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 Debugger::GotoPr
4aea0 65 76 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c eviousNextInWinL
4aeb0 69 73 74 20 70 72 65 76 20 3b 20 62 72 65 61 6b ist prev ; break
4aec0 22 0a 23 20 20 20 20 20 62 69 6e 64 20 24 74 65 ".# bind $te
4aed0 78 74 20 3c 43 6f 6e 74 72 6f 6c 2d 53 68 69 66 xt <Control-Shif
4aee0 74 2d 54 61 62 3e 20 22 52 61 6d 44 65 62 75 67 t-Tab> "RamDebug
4aef0 67 65 72 3a 3a 47 6f 74 6f 50 72 65 76 69 6f 75 ger::GotoPreviou
4af00 73 4e 65 78 74 49 6e 57 69 6e 4c 69 73 74 20 6e sNextInWinList n
4af10 65 78 74 20 3b 20 62 72 65 61 6b 22 0a 20 20 20 ext ; break".
4af20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a bind $text <$::
4af30 61 6c 74 2d 52 69 67 68 74 3e 20 22 52 61 6d 44 alt-Right> "RamD
4af40 65 62 75 67 67 65 72 3a 3a 47 6f 74 6f 50 72 65 ebugger::GotoPre
4af50 76 69 6f 75 73 4e 65 78 74 49 6e 57 69 6e 4c 69 viousNextInWinLi
4af60 73 74 20 6e 65 78 74 20 3b 20 62 72 65 61 6b 22 st next ; break"
4af70 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 . bind $text
4af80 3c 54 61 62 3e 20 22 52 61 6d 44 65 62 75 67 67 <Tab> "RamDebugg
4af90 65 72 3a 3a 49 6e 64 65 6e 74 20 3b 20 62 72 65 er::Indent ; bre
4afa0 61 6b 22 0a 20 20 20 20 62 69 6e 64 20 24 74 65 ak". bind $te
4afb0 78 74 20 3c 52 65 74 75 72 6e 3e 20 22 5b 62 69 xt <Return> "[bi
4afc0 6e 64 20 54 65 78 74 20 3c 52 65 74 75 72 6e 3e nd Text <Return>
4afd0 5d 20 3b 20 52 61 6d 44 65 62 75 67 67 65 72 3a ] ; RamDebugger:
4afe0 3a 49 6e 64 65 6e 74 4c 69 6e 65 20 7b 7d 20 3b :IndentLine {} ;
4aff0 20 62 72 65 61 6b 22 0a 0a 20 20 20 20 73 65 74 break".. set
4b000 20 63 20 5b 6c 69 73 74 20 24 74 65 78 74 20 6d c [list $text m
4b010 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 22 ark set insert "
4b020 69 6e 73 65 72 74 2d 31 63 22 5d 0a 20 20 20 20 insert-1c"].
4b030 61 70 70 65 6e 64 20 63 20 22 3b 62 72 65 61 6b append c ";break
4b040 22 0a 20 20 20 20 23 62 69 6e 64 20 24 74 65 78 ". #bind $tex
4b050 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 t <$::control-Ke
4b060 79 2d 32 3e 20 22 5b 6c 69 73 74 20 74 6b 3a 3a y-2> "[list tk::
4b070 54 65 78 74 49 6e 73 65 72 74 20 24 74 65 78 74 TextInsert $text
4b080 20 7b 22 22 7d 5d 3b 24 63 22 0a 0a 20 20 20 20 {""}];$c"..
4b090 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 bind $text <$::c
4b0a0 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 31 3e 20 5b 6c ontrol-Key-1> [l
4b0b0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4b0c0 3a 50 6f 73 69 74 69 6f 6e 73 53 74 61 63 6b 20 :PositionsStack
4b0d0 73 61 76 65 5d 0a 20 20 20 20 62 69 6e 64 20 24 save]. bind $
4b0e0 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c text <$::control
4b0f0 2d 4b 65 79 2d 32 3e 20 5b 6c 69 73 74 20 52 61 -Key-2> [list Ra
4b100 6d 44 65 62 75 67 67 65 72 3a 3a 50 6f 73 69 74 mDebugger::Posit
4b110 69 6f 6e 73 53 74 61 63 6b 20 67 6f 5d 0a 0a 20 ionsStack go]..
4b120 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 bind $text <$
4b130 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 36 3e ::control-Key-6>
4b140 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 "RamDebugger::C
4b150 6f 6d 6d 65 6e 74 53 65 6c 65 63 74 69 6f 6e 20 ommentSelection
4b160 74 6f 67 67 6c 65 22 0a 20 20 20 20 23 62 69 6e toggle". #bin
4b170 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 d $text <$::cont
4b180 72 6f 6c 2d 4b 65 79 2d 39 3e 20 22 5b 6c 69 73 rol-Key-9> "[lis
4b190 74 20 74 6b 3a 3a 54 65 78 74 49 6e 73 65 72 74 t tk::TextInsert
4b1a0 20 24 74 65 78 74 20 7b 28 29 7d 5d 3b 24 63 22 $text {()}];$c"
4b1b0 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 . bind $text
4b1c0 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 70 6c 75 73 <$::control-plus
4b1d0 3e 20 22 5b 6c 69 73 74 20 74 6b 3a 3a 54 65 78 > "[list tk::Tex
4b1e0 74 49 6e 73 65 72 74 20 24 74 65 78 74 20 7b 5b tInsert $text {[
4b1f0 5d 7d 5d 3b 24 63 22 0a 20 20 20 20 62 69 6e 64 ]}];$c". bind
4b200 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 $text <$::contr
4b210 6f 6c 2d 62 72 61 63 6b 65 74 72 69 67 68 74 3e ol-bracketright>
4b220 20 22 5b 6c 69 73 74 20 74 6b 3a 3a 54 65 78 74 "[list tk::Text
4b230 49 6e 73 65 72 74 20 24 74 65 78 74 20 7b 5b 5d Insert $text {[]
4b240 7d 5d 3b 24 63 22 0a 20 20 20 20 62 69 6e 64 20 }];$c". bind
4b250 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f $text <$::contro
4b260 6c 2d 53 68 69 66 74 2d 70 6c 75 73 3e 20 5b 6c l-Shift-plus> [l
4b270 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4b280 3a 69 6e 73 65 72 74 5f 74 72 61 6e 73 6c 61 74 :insert_translat
4b290 69 6f 6e 5f 63 6d 64 5d 0a 20 20 20 20 62 69 6e ion_cmd]. bin
4b2a0 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 d $text <$::cont
4b2b0 72 6f 6c 2d 61 73 74 65 72 69 73 6b 3e 20 5b 6c rol-asterisk> [l
4b2c0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4b2d0 3a 69 6e 73 65 72 74 5f 74 72 61 6e 73 6c 61 74 :insert_translat
4b2e0 69 6f 6e 5f 63 6d 64 5d 0a 20 20 20 20 62 69 6e ion_cmd]. bin
4b2f0 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 d $text <$::cont
4b300 72 6f 6c 2d 63 63 65 64 69 6c 6c 61 3e 20 22 5b rol-ccedilla> "[
4b310 6c 69 73 74 20 74 6b 3a 3a 54 65 78 74 49 6e 73 list tk::TextIns
4b320 65 72 74 20 24 74 65 78 74 20 7b 7b 7d 7d 5d 3b ert $text {{}}];
4b330 24 63 22 0a 0a 20 20 20 20 23 20 73 6f 6d 65 20 $c".. # some
4b340 6f 66 20 74 68 65 73 65 20 6b 65 79 73 20 61 72 of these keys ar
4b350 65 20 66 6f 72 20 55 62 75 6e 74 75 20 6f 6e 20 e for Ubuntu on
4b360 41 73 75 73 20 74 72 61 6e 73 66 6f 72 6d 65 72 Asus transformer
4b370 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 . bind $text
4b380 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d <$::control-Key-
4b390 35 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 5> [list RamDebu
4b3a0 67 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 gger::ContNextGU
4b3b0 49 20 72 63 6f 6e 74 5d 0a 20 20 20 20 62 69 6e I rcont]. bin
4b3c0 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 d $text <$::cont
4b3d0 72 6f 6c 2d 4b 65 79 2d 39 3e 20 5b 6c 69 73 74 rol-Key-9> [list
4b3e0 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 RamDebugger::Se
4b3f0 74 47 55 49 42 72 65 61 6b 70 6f 69 6e 74 5d 0a tGUIBreakpoint].
4b400 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c bind $text <
4b410 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 30 $::control-Key-0
4b420 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 > [list RamDebug
4b430 67 65 72 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 ger::ContNextGUI
4b440 20 72 6e 65 78 74 5d 0a 20 20 20 20 23 62 69 6e rnext]. #bin
4b450 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 d $text <$::cont
4b460 72 6f 6c 2d 4b 65 79 2d 6d 69 6e 75 73 3e 20 5b rol-Key-minus> [
4b470 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
4b480 3a 3a 43 6f 6e 74 4e 65 78 74 47 55 49 20 72 73 ::ContNextGUI rs
4b490 74 65 70 5d 0a 20 20 20 20 0a 20 20 20 20 63 75 tep]. . cu
4b4a0 3a 3a 74 65 78 74 5f 65 6e 74 72 79 5f 62 69 6e ::text_entry_bin
4b4b0 64 69 6e 67 73 20 24 74 65 78 74 0a 0a 20 20 20 dings $text..
4b4c0 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a bind $text <$::
4b4d0 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 61 3e 20 22 control-Key-a> "
4b4e0 74 6b 3a 3a 54 65 78 74 53 65 74 43 75 72 73 6f tk::TextSetCurso
4b4f0 72 20 25 57 20 7b 69 6e 73 65 72 74 20 64 69 73 r %W {insert dis
4b500 70 6c 61 79 20 6c 69 6e 65 73 74 61 72 74 7d 3b play linestart};
4b510 20 62 72 65 61 6b 22 0a 20 20 20 20 62 69 6e 64 break". bind
4b520 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 $text <$::contr
4b530 6f 6c 2d 4b 65 79 2d 65 3e 20 22 74 6b 3a 3a 54 ol-Key-e> "tk::T
4b540 65 78 74 53 65 74 43 75 72 73 6f 72 20 25 57 20 extSetCursor %W
4b550 7b 69 6e 73 65 72 74 20 64 69 73 70 6c 61 79 20 {insert display
4b560 6c 69 6e 65 65 6e 64 7d 3b 20 62 72 65 61 6b 22 lineend}; break"
4b570 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 . bind $text
4b580 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 41 3e 20 5b <$::control-A> [
4b590 6c 69 73 74 20 74 6b 3a 3a 54 65 78 74 53 65 74 list tk::TextSet
4b5a0 43 75 72 73 6f 72 20 25 57 20 31 2e 30 5d 0a 20 Cursor %W 1.0].
4b5b0 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 bind $text <$
4b5c0 3a 3a 63 6f 6e 74 72 6f 6c 2d 45 3e 20 5b 6c 69 ::control-E> [li
4b5d0 73 74 20 74 6b 3a 3a 54 65 78 74 53 65 74 43 75 st tk::TextSetCu
4b5e0 72 73 6f 72 20 25 57 20 7b 65 6e 64 20 2d 20 31 rsor %W {end - 1
4b5f0 20 69 6e 64 69 63 65 73 7d 5d 0a 20 20 20 20 0a indices}]. .
4b600 20 20 20 20 73 65 74 20 63 6d 64 20 7b 0a 09 69 set cmd {..i
4b610 66 20 7b 20 22 25 41 22 20 65 71 20 22 5c 7d 22 f { "%A" eq "\}"
4b620 20 7d 20 7b 0a 09 20 20 20 20 25 4f 4c 44 5f 43 } {.. %OLD_C
4b630 4d 44 25 0a 09 20 20 20 20 52 61 6d 44 65 62 75 MD%.. RamDebu
4b640 67 67 65 72 3a 3a 49 6e 64 65 6e 74 4c 69 6e 65 gger::IndentLine
4b650 20 7b 7d 0a 09 20 20 20 20 62 72 65 61 6b 0a 09 {}.. break..
4b660 7d 0a 20 20 20 20 7d 0a 20 20 20 20 62 69 6e 64 }. }. bind
4b670 20 24 74 65 78 74 20 3c 4b 65 79 50 72 65 73 73 $text <KeyPress
4b680 3e 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b 6c > [string map [l
4b690 69 73 74 20 25 4f 4c 44 5f 43 4d 44 25 20 5b 62 ist %OLD_CMD% [b
4b6a0 69 6e 64 20 54 65 78 74 20 3c 4b 65 79 50 72 65 ind Text <KeyPre
4b6b0 73 73 3e 5d 5d 20 24 63 6d 64 5d 0a 20 20 20 0a ss>]] $cmd]. .
4b6c0 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c bind $text <
4b6d0 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 78 3e 20 22 52 $::control-x> "R
4b6e0 61 6d 44 65 62 75 67 67 65 72 3a 3a 43 75 74 43 amDebugger::CutC
4b6f0 6f 70 79 50 61 73 74 65 54 65 78 74 20 63 75 74 opyPasteText cut
4b700 20 20 20 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 ; break".
4b710 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 bind $text <$::c
4b720 6f 6e 74 72 6f 6c 2d 63 3e 20 22 52 61 6d 44 65 ontrol-c> "RamDe
4b730 62 75 67 67 65 72 3a 3a 43 75 74 43 6f 70 79 50 bugger::CutCopyP
4b740 61 73 74 65 54 65 78 74 20 63 6f 70 79 20 20 3b asteText copy ;
4b750 20 62 72 65 61 6b 22 0a 20 20 20 20 62 69 6e 64 break". bind
4b760 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 $text <$::contr
4b770 6f 6c 2d 76 3e 20 22 52 61 6d 44 65 62 75 67 67 ol-v> "RamDebugg
4b780 65 72 3a 3a 43 75 74 43 6f 70 79 50 61 73 74 65 er::CutCopyPaste
4b790 54 65 78 74 20 70 61 73 74 65 20 3b 20 62 72 65 Text paste ; bre
4b7a0 61 6b 22 0a 20 20 20 20 62 69 6e 64 20 24 74 65 ak". bind $te
4b7b0 78 74 20 3c 24 3a 3a 61 6c 74 2d 42 61 63 6b 53 xt <$::alt-BackS
4b7c0 70 61 63 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 pace> [list RamD
4b7d0 65 62 75 67 67 65 72 3a 3a 44 65 6c 65 74 65 50 ebugger::DeleteP
4b7e0 72 65 76 69 6f 75 73 57 6f 72 64 5d 0a 20 20 20 reviousWord].
4b7f0 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a bind $text <$::
4b800 63 6f 6e 74 72 6f 6c 2d 42 61 63 6b 53 70 61 63 control-BackSpac
4b810 65 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 e> [list RamDebu
4b820 67 67 65 72 3a 3a 44 65 6c 65 74 65 50 72 65 76 gger::DeletePrev
4b830 69 6f 75 73 57 6f 72 64 5d 0a 20 20 20 20 62 69 iousWord]. bi
4b840 6e 64 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 nd [winfo toplev
4b850 65 6c 20 24 74 65 78 74 5d 20 3c 24 3a 3a 63 6f el $text] <$::co
4b860 6e 74 72 6f 6c 2d 76 3e 20 22 22 0a 20 20 20 20 ntrol-v> "".
4b870 62 69 6e 64 20 5b 77 69 6e 66 6f 20 74 6f 70 6c bind [winfo topl
4b880 65 76 65 6c 20 24 74 65 78 74 5d 20 3c 54 61 62 evel $text] <Tab
4b890 3e 20 22 22 0a 20 20 20 20 62 69 6e 64 20 24 74 > "". bind $t
4b8a0 65 78 74 20 3c 46 6f 63 75 73 49 6e 3e 20 5b 6c ext <FocusIn> [l
4b8b0 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4b8c0 3a 53 65 61 72 63 68 57 69 6e 64 6f 77 20 2d 61 :SearchWindow -a
4b8d0 75 74 6f 5f 63 6c 6f 73 65 20 31 5d 0a 20 20 20 uto_close 1].
4b8e0 20 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a bind $text <$::
4b8f0 63 6f 6e 74 72 6f 6c 2d 49 3e 20 5b 6c 69 73 74 control-I> [list
4b900 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 RamDebugger::Se
4b910 61 72 63 68 20 24 77 20 69 66 6f 72 77 61 72 64 arch $w iforward
4b920 5f 67 65 74 5f 69 6e 73 65 72 74 5d 0a 20 20 20 _get_insert].
4b930 20 62 69 6e 64 20 24 74 65 78 74 20 3c 45 73 63 bind $text <Esc
4b940 61 70 65 3e 3c 69 3e 20 22 5b 6c 69 73 74 20 52 ape><i> "[list R
4b950 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 61 72 amDebugger::Sear
4b960 63 68 20 24 77 20 69 66 6f 72 77 61 72 64 5f 67 ch $w iforward_g
4b970 65 74 5f 69 6e 73 65 72 74 5d 20 3b 62 72 65 61 et_insert] ;brea
4b980 6b 22 0a 20 20 20 20 62 69 6e 64 20 24 77 20 3c k". bind $w <
4b990 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 73 6c 61 73 68 $::control-slash
4b9a0 3e 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 > [list RamDebug
4b9b0 67 65 72 3a 3a 56 43 53 3a 3a 75 70 64 61 74 65 ger::VCS::update
4b9c0 5f 72 65 63 75 72 73 69 76 65 20 2e 20 63 75 72 _recursive . cur
4b9d0 72 65 6e 74 5d 20 3b 23 20 63 6f 6e 74 72 6f 6c rent] ;# control
4b9e0 2d 73 68 69 66 74 2d 37 0a 20 20 20 20 62 69 6e -shift-7. bin
4b9f0 64 20 24 77 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c d $w <$::control
4ba00 2d 4b 65 79 2d 38 3e 20 5b 6c 69 73 74 20 52 61 -Key-8> [list Ra
4ba10 6d 44 65 62 75 67 67 65 72 3a 3a 56 43 53 3a 3a mDebugger::VCS::
4ba20 75 70 64 61 74 65 5f 72 65 63 75 72 73 69 76 65 update_recursive
4ba30 5f 63 6d 64 20 22 22 20 6f 70 65 6e 5f 70 72 6f _cmd "" open_pro
4ba40 67 72 61 6d 20 66 6f 73 73 69 6c 5f 75 69 20 22 gram fossil_ui "
4ba50 22 20 63 75 72 72 65 6e 74 5d 0a 20 20 20 20 62 " current]. b
4ba60 69 6e 64 20 24 77 20 3c 24 3a 3a 63 6f 6e 74 72 ind $w <$::contr
4ba70 6f 6c 2d 53 68 69 66 74 2d 44 3e 20 5b 6c 69 73 ol-Shift-D> [lis
4ba80 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 56 t RamDebugger::V
4ba90 43 53 3a 3a 64 69 66 66 65 72 65 6e 63 65 73 20 CS::differences
4baa0 66 6f 73 73 69 6c 5f 64 69 66 66 5f 74 6b 5d 0a fossil_diff_tk].
4bab0 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c bind $text <
4bac0 43 6f 6e 74 72 6f 6c 2d 75 3e 3c 43 6f 6e 74 72 Control-u><Contr
4bad0 6f 6c 2d 6d 69 6e 75 73 3e 20 5b 6c 69 73 74 20 ol-minus> [list
4bae0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 69 6e 63 RamDebugger::inc
4baf0 72 65 61 73 65 5f 64 65 63 72 65 61 73 65 5f 74 rease_decrease_t
4bb00 65 78 74 5f 66 6f 6e 74 20 64 65 63 72 65 61 73 ext_font decreas
4bb10 65 5d 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 e]. bind $tex
4bb20 74 20 3c 43 6f 6e 74 72 6f 6c 2d 75 3e 3c 43 6f t <Control-u><Co
4bb30 6e 74 72 6f 6c 2d 70 6c 75 73 3e 20 5b 6c 69 73 ntrol-plus> [lis
4bb40 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 69 t RamDebugger::i
4bb50 6e 63 72 65 61 73 65 5f 64 65 63 72 65 61 73 65 ncrease_decrease
4bb60 5f 74 65 78 74 5f 66 6f 6e 74 20 69 6e 63 72 65 _text_font incre
4bb70 61 73 65 5d 0a 20 20 20 20 62 69 6e 64 20 24 74 ase]. bind $t
4bb80 65 78 74 20 3c 43 6f 6e 74 72 6f 6c 2d 4d 6f 75 ext <Control-Mou
4bb90 73 65 57 68 65 65 6c 3e 20 22 5b 6c 69 73 74 20 seWheel> "[list
4bba0 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 69 6e 63 RamDebugger::inc
4bbb0 72 65 61 73 65 5f 64 65 63 72 65 61 73 65 5f 74 rease_decrease_t
4bbc0 65 78 74 5f 66 6f 6e 74 20 77 68 65 65 6c 20 25 ext_font wheel %
4bbd0 44 5d 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 62 D]; break". b
4bbe0 69 6e 64 20 24 74 65 78 74 20 3c 43 6f 6e 74 72 ind $text <Contr
4bbf0 6f 6c 2d 42 75 74 74 6f 6e 2d 34 3e 20 22 5b 6c ol-Button-4> "[l
4bc00 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4bc10 3a 69 6e 63 72 65 61 73 65 5f 64 65 63 72 65 61 :increase_decrea
4bc20 73 65 5f 74 65 78 74 5f 66 6f 6e 74 20 77 68 65 se_text_font whe
4bc30 65 6c 20 31 32 30 5d 3b 20 62 72 65 61 6b 22 0a el 120]; break".
4bc40 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 3c bind $text <
4bc50 43 6f 6e 74 72 6f 6c 2d 42 75 74 74 6f 6e 2d 35 Control-Button-5
4bc60 3e 20 22 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 > "[list RamDebu
4bc70 67 67 65 72 3a 3a 69 6e 63 72 65 61 73 65 5f 64 gger::increase_d
4bc80 65 63 72 65 61 73 65 5f 74 65 78 74 5f 66 6f 6e ecrease_text_fon
4bc90 74 20 77 68 65 65 6c 20 2d 31 32 30 5d 3b 20 62 t wheel -120]; b
4bca0 72 65 61 6b 22 0a 20 20 20 20 62 69 6e 64 20 24 reak". bind $
4bcb0 74 65 78 74 20 3c 43 6f 6e 74 72 6f 6c 2d 77 3e text <Control-w>
4bcc0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
4bcd0 65 72 3a 3a 45 78 69 74 47 55 49 5d 0a 20 20 20 er::ExitGUI].
4bce0 20 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 74 20 . for { set
4bcf0 69 20 30 20 7d 20 7b 20 24 69 20 3c 3d 39 20 7d i 0 } { $i <=9 }
4bd00 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 62 { incr i } {..b
4bd10 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 6f ind $text <$::co
4bd20 6e 74 72 6f 6c 2d 75 3e 3c 24 3a 3a 63 6f 6e 74 ntrol-u><$::cont
4bd30 72 6f 6c 2d 4b 65 79 2d 24 69 3e 20 22 5b 6c 69 rol-Key-$i> "[li
4bd40 73 74 20 65 76 65 6e 74 20 67 65 6e 65 72 61 74 st event generat
4bd50 65 20 24 74 65 78 74 20 3c 46 24 69 3e 5d 3b 20 e $text <F$i>];
4bd60 62 72 65 61 6b 22 0a 09 62 69 6e 64 20 24 74 65 break"..bind $te
4bd70 78 74 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 75 xt <$::control-u
4bd80 3e 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 73 3e 3c ><$::control-s><
4bd90 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 24 $::control-Key-$
4bda0 69 3e 20 5c 0a 09 20 20 20 20 22 5b 6c 69 73 74 i> \.. "[list
4bdb0 20 65 76 65 6e 74 20 67 65 6e 65 72 61 74 65 20 event generate
4bdc0 24 74 65 78 74 20 3c 53 68 69 66 74 2d 46 24 69 $text <Shift-F$i
4bdd0 3e 5d 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 7d >]; break". }
4bde0 0a 20 20 20 20 62 69 6e 64 20 24 74 65 78 74 20 . bind $text
4bdf0 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 75 3e 3c 24 <$::control-u><$
4be00 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d 31 3e ::control-Key-1>
4be10 20 22 5b 6c 69 73 74 20 65 76 65 6e 74 20 67 65 "[list event ge
4be20 6e 65 72 61 74 65 20 24 74 65 78 74 20 3c 46 31 nerate $text <F1
4be30 31 3e 5d 3b 20 62 72 65 61 6b 22 0a 20 20 20 20 1>]; break".
4be40 62 69 6e 64 20 24 74 65 78 74 20 3c 24 3a 3a 63 bind $text <$::c
4be50 6f 6e 74 72 6f 6c 2d 75 3e 3c 24 3a 3a 63 6f 6e ontrol-u><$::con
4be60 74 72 6f 6c 2d 73 3e 3c 24 3a 3a 63 6f 6e 74 72 trol-s><$::contr
4be70 6f 6c 2d 4b 65 79 2d 31 3e 20 5c 0a 09 22 5b 6c ol-Key-1> \.."[l
4be80 69 73 74 20 65 76 65 6e 74 20 67 65 6e 65 72 61 ist event genera
4be90 74 65 20 24 74 65 78 74 20 3c 53 68 69 66 74 2d te $text <Shift-
4bea0 46 31 31 3e 5d 3b 20 62 72 65 61 6b 22 0a 0a 20 F11>]; break"..
4beb0 20 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 6d 61 set menu [$ma
4bec0 69 6e 66 72 61 6d 65 20 67 65 74 6d 65 6e 75 20 inframe getmenu
4bed0 65 64 69 74 5d 0a 20 20 20 20 24 6d 65 6e 75 20 edit]. $menu
4bee0 65 6e 74 72 79 63 6f 6e 66 69 67 75 72 65 20 5b entryconfigure [
4bef0 5f 20 22 49 73 65 61 72 63 68 20 66 6f 72 77 61 _ "Isearch forwa
4bf00 72 64 20 73 65 6c 65 63 74 65 64 22 5d 20 2d 61 rd selected"] -a
4bf10 63 63 20 22 43 74 72 6c 2b 53 68 69 66 74 2b 49 cc "Ctrl+Shift+I
4bf20 22 0a 0a 0a 20 20 20 20 62 69 6e 64 20 24 77 20 "... bind $w
4bf30 3c 53 68 69 66 74 2d 4b 65 79 2d 46 35 3e 20 22 <Shift-Key-F5> "
4bf40 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73 RamDebugger::Dis
4bf50 63 6f 6e 6e 65 63 74 53 74 6f 70 20 3b 62 72 65 connectStop ;bre
4bf60 61 6b 22 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 ak".. foreach
4bf70 20 69 20 5b 62 69 6e 64 20 24 77 5d 20 7b 0a 09 i [bind $w] {..
4bf80 62 69 6e 64 20 24 74 65 78 74 20 24 69 20 22 5b bind $text $i "[
4bf90 62 69 6e 64 20 24 77 20 24 69 5d 20 3b 62 72 65 bind $w $i] ;bre
4bfa0 61 6b 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20 62 ak". }.. b
4bfb0 69 6e 64 20 24 6d 61 72 6b 65 72 20 3c 44 6f 75 ind $marker <Dou
4bfc0 62 6c 65 2d 31 3e 20 5b 6c 69 73 74 20 52 61 6d ble-1> [list Ram
4bfd0 44 65 62 75 67 67 65 72 3a 3a 73 65 74 5f 62 72 Debugger::set_br
4bfe0 65 61 6b 70 6f 69 6e 74 20 25 78 20 25 79 5d 0a eakpoint %x %y].
4bff0 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 72 6b 65 . bind $marke
4c000 72 20 3c 31 3e 20 7b 0a 09 63 61 74 63 68 20 7b r <1> {..catch {
4c010 20 64 65 73 74 72 6f 79 20 5b 77 69 6e 66 6f 20 destroy [winfo
4c020 74 6f 70 6c 65 76 65 6c 20 25 57 5d 2e 73 65 61 toplevel %W].sea
4c030 72 63 68 20 7d 0a 09 74 6b 3a 3a 54 65 78 74 42 rch }..tk::TextB
4c040 75 74 74 6f 6e 31 20 24 52 61 6d 44 65 62 75 67 utton1 $RamDebug
4c050 67 65 72 3a 3a 74 65 78 74 20 30 20 25 79 0a 09 ger::text 0 %y..
4c060 20 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 73 65 set tk::Priv(se
4c070 6c 65 63 74 4d 6f 64 65 29 20 6c 69 6e 65 0a 09 lectMode) line..
4c080 20 74 6b 3a 3a 54 65 78 74 53 65 6c 65 63 74 54 tk::TextSelectT
4c090 6f 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a o $RamDebugger::
4c0a0 74 65 78 74 20 30 20 25 79 0a 23 20 0a 23 20 20 text 0 %y.# .#
4c0b0 20 20 20 20 20 20 20 73 65 74 20 74 6b 50 72 69 set tkPri
4c0c0 76 28 78 29 20 30 0a 23 20 20 20 20 20 20 20 20 v(x) 0.#
4c0d0 20 73 65 74 20 74 6b 50 72 69 76 28 79 29 20 25 set tkPriv(y) %
4c0e0 79 0a 23 20 20 20 20 20 20 20 20 20 73 65 74 20 y.# set
4c0f0 74 6b 50 72 69 76 28 6d 6f 75 73 65 4d 6f 76 65 tkPriv(mouseMove
4c100 64 29 20 30 0a 23 20 20 20 20 20 20 20 20 20 73 d) 0.# s
4c110 65 74 20 74 6b 50 72 69 76 28 70 72 65 73 73 58 et tkPriv(pressX
4c120 29 20 30 0a 23 20 20 20 20 20 20 20 20 20 73 65 ) 0.# se
4c130 74 20 74 6b 3a 3a 50 72 69 76 28 6d 6f 75 73 65 t tk::Priv(mouse
4c140 4d 6f 76 65 64 29 20 30 0a 23 20 20 20 20 20 20 Moved) 0.#
4c150 20 20 20 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 set tk::Priv(
4c160 70 72 65 73 73 58 29 20 30 0a 23 20 20 20 20 20 pressX) 0.#
4c170 20 20 20 20 73 65 74 20 74 6b 3a 3a 50 72 69 76 set tk::Priv
4c180 28 78 29 20 30 0a 23 20 20 20 20 20 20 20 20 20 (x) 0.#
4c190 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 79 29 20 set tk::Priv(y)
4c1a0 25 79 0a 23 20 20 20 20 20 20 20 20 20 24 52 61 %y.# $Ra
4c1b0 6d 44 65 62 75 67 67 65 72 3a 3a 74 65 78 74 20 mDebugger::text
4c1c0 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 mark set insert
4c1d0 5b 74 6b 54 65 78 74 43 6c 6f 73 65 73 74 47 61 [tkTextClosestGa
4c1e0 70 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a p $RamDebugger::
4c1f0 74 65 78 74 20 30 20 25 79 5d 0a 23 20 20 20 20 text 0 %y].#
4c200 20 20 20 20 20 24 52 61 6d 44 65 62 75 67 67 65 $RamDebugge
4c210 72 3a 3a 74 65 78 74 20 6d 61 72 6b 20 73 65 74 r::text mark set
4c220 20 61 6e 63 68 6f 72 20 69 6e 73 65 72 74 0a 23 anchor insert.#
4c230 20 0a 23 20 20 20 20 20 20 20 20 20 73 65 74 20 .# set
4c240 69 6e 69 20 5b 24 52 61 6d 44 65 62 75 67 67 65 ini [$RamDebugge
4c250 72 3a 3a 74 65 78 74 20 69 6e 64 65 78 20 22 40 r::text index "@
4c260 30 2c 25 79 20 6c 69 6e 65 73 74 61 72 74 22 5d 0,%y linestart"]
4c270 0a 23 20 20 20 20 20 20 20 20 20 73 65 74 20 65 .# set e
4c280 6e 64 20 5b 24 52 61 6d 44 65 62 75 67 67 65 72 nd [$RamDebugger
4c290 3a 3a 74 65 78 74 20 69 6e 64 65 78 20 22 40 30 ::text index "@0
4c2a0 2c 25 79 20 6c 69 6e 65 65 6e 64 22 5d 0a 23 20 ,%y lineend"].#
4c2b0 20 20 20 20 20 20 20 20 24 52 61 6d 44 65 62 75 $RamDebu
4c2c0 67 67 65 72 3a 3a 74 65 78 74 20 74 61 67 20 72 gger::text tag r
4c2d0 65 6d 6f 76 65 20 73 65 6c 20 31 2e 30 20 65 6e emove sel 1.0 en
4c2e0 64 0a 23 20 20 20 20 20 20 20 20 20 24 52 61 6d d.# $Ram
4c2f0 44 65 62 75 67 67 65 72 3a 3a 74 65 78 74 20 74 Debugger::text t
4c300 61 67 20 61 64 64 20 73 65 6c 20 24 69 6e 69 20 ag add sel $ini
4c310 24 65 6e 64 0a 23 20 20 20 20 20 20 20 20 20 73 $end.# s
4c320 65 74 20 74 6b 50 72 69 76 28 73 65 6c 65 63 74 et tkPriv(select
4c330 4d 6f 64 65 29 20 6c 69 6e 65 0a 20 20 20 20 7d Mode) line. }
4c340 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 72 6b 65 . bind $marke
4c350 72 20 3c 42 31 2d 4d 6f 74 69 6f 6e 3e 20 7b 0a r <B1-Motion> {.
4c360 09 73 65 74 20 74 6b 50 72 69 76 28 78 29 20 30 .set tkPriv(x) 0
4c370 0a 09 73 65 74 20 74 6b 50 72 69 76 28 79 29 20 ..set tkPriv(y)
4c380 25 79 0a 09 73 65 74 20 74 6b 3a 3a 50 72 69 76 %y..set tk::Priv
4c390 28 78 29 20 30 0a 09 73 65 74 20 74 6b 3a 3a 50 (x) 0..set tk::P
4c3a0 72 69 76 28 79 29 20 25 79 0a 09 74 6b 3a 3a 54 riv(y) %y..tk::T
4c3b0 65 78 74 53 65 6c 65 63 74 54 6f 20 24 52 61 6d extSelectTo $Ram
4c3c0 44 65 62 75 67 67 65 72 3a 3a 74 65 78 74 20 30 Debugger::text 0
4c3d0 20 25 79 0a 20 20 20 20 7d 0a 20 20 20 20 62 69 %y. }. bi
4c3e0 6e 64 20 24 6d 61 72 6b 65 72 20 3c 42 31 2d 4c nd $marker <B1-L
4c3f0 65 61 76 65 3e 20 7b 0a 09 73 65 74 20 74 6b 50 eave> {..set tkP
4c400 72 69 76 28 78 29 20 30 0a 09 73 65 74 20 74 6b riv(x) 0..set tk
4c410 50 72 69 76 28 79 29 20 25 79 0a 09 73 65 74 20 Priv(y) %y..set
4c420 74 6b 3a 3a 50 72 69 76 28 78 29 20 25 78 0a 09 tk::Priv(x) %x..
4c430 73 65 74 20 74 6b 3a 3a 50 72 69 76 28 79 29 20 set tk::Priv(y)
4c440 25 79 0a 09 74 6b 3a 3a 54 65 78 74 41 75 74 6f %y..tk::TextAuto
4c450 53 63 61 6e 20 24 52 61 6d 44 65 62 75 67 67 65 Scan $RamDebugge
4c460 72 3a 3a 74 65 78 74 0a 20 20 20 20 7d 0a 20 20 r::text. }.
4c470 20 20 62 69 6e 64 20 24 6d 61 72 6b 65 72 20 3c bind $marker <
4c480 42 31 2d 45 6e 74 65 72 3e 20 7b 0a 09 74 6b 3a B1-Enter> {..tk:
4c490 3a 43 61 6e 63 65 6c 52 65 70 65 61 74 0a 20 20 :CancelRepeat.
4c4a0 20 20 7d 0a 20 20 20 20 62 69 6e 64 20 24 6d 61 }. bind $ma
4c4b0 72 6b 65 72 20 3c 42 75 74 74 6f 6e 52 65 6c 65 rker <ButtonRele
4c4c0 61 73 65 2d 31 3e 20 7b 0a 09 74 6b 3a 3a 43 61 ase-1> {..tk::Ca
4c4d0 6e 63 65 6c 52 65 70 65 61 74 0a 20 20 20 20 7d ncelRepeat. }
4c4e0 0a 0a 20 20 20 20 23 62 69 6e 64 20 61 6c 6c 20 .. #bind all
4c4f0 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 4b 65 79 2d <$::control-Key-
4c500 31 3e 20 22 52 61 6d 44 65 62 75 67 67 65 72 3a 1> "RamDebugger:
4c510 3a 44 69 73 70 6c 61 79 57 69 6e 64 6f 77 73 48 :DisplayWindowsH
4c520 69 65 72 61 72 63 68 79 20 3b 62 72 65 61 6b 22 ierarchy ;break"
4c530 0a 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24 . . if { $
4c540 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f ::tcl_platform(o
4c550 73 29 20 3d 3d 20 22 44 61 72 77 69 6e 22 7d 20 s) == "Darwin"}
4c560 7b 0a 09 23 20 6d 61 79 20 62 65 20 77 69 74 68 {..# may be with
4c570 20 74 68 69 73 20 69 73 20 65 6e 6f 75 67 68 20 this is enough
4c580 3f 0a 09 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 ?..ApplyDropBind
4c590 69 6e 67 20 24 6d 61 69 6e 66 72 61 6d 65 20 5b ing $mainframe [
4c5a0 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 list RamDebugger
4c5b0 3a 3a 44 72 6f 70 42 69 6e 64 69 6e 67 44 6f 6e ::DropBindingDon
4c5c0 65 20 25 44 5d 0a 09 23 20 73 68 6f 75 6c 64 20 e %D]..# should
4c5d0 69 74 20 62 65 20 74 68 65 20 74 65 78 74 20 3f it be the text ?
4c5e0 0a 09 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 69 ..ApplyDropBindi
4c5f0 6e 67 20 24 74 65 78 74 20 5b 6c 69 73 74 20 52 ng $text [list R
4c600 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 72 6f 70 amDebugger::Drop
4c610 42 69 6e 64 69 6e 67 44 6f 6e 65 20 25 44 5d 0a BindingDone %D].
4c620 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 24 } elseif { $
4c630 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f ::tcl_platform(o
4c640 73 29 20 3d 3d 20 22 4c 69 6e 75 78 22 7d 20 7b s) == "Linux"} {
4c650 0a 09 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 69 ..ApplyDropBindi
4c660 6e 67 20 24 6d 61 69 6e 66 72 61 6d 65 20 5b 6c ng $mainframe [l
4c670 69 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a ist RamDebugger:
4c680 3a 44 72 6f 70 42 69 6e 64 69 6e 67 44 6f 6e 65 :DropBindingDone
4c690 20 25 44 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 %D]. } else
4c6a0 7b 0a 09 41 70 70 6c 79 44 72 6f 70 42 69 6e 64 {..ApplyDropBind
4c6b0 69 6e 67 20 24 77 20 5b 6c 69 73 74 20 52 61 6d ing $w [list Ram
4c6c0 44 65 62 75 67 67 65 72 3a 3a 44 72 6f 70 42 69 Debugger::DropBi
4c6d0 6e 64 69 6e 67 44 6f 6e 65 20 25 44 5d 0a 20 20 ndingDone %D].
4c6e0 20 20 7d 0a 0a 20 20 20 20 23 20 42 57 69 64 67 }.. # BWidg
4c6f0 65 74 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c ets automaticall
4c700 79 20 73 65 74 73 20 74 68 65 73 65 20 62 65 63 y sets these bec
4c710 61 75 73 65 20 74 68 65 79 20 61 72 65 20 69 6e ause they are in
4c720 20 74 68 65 20 6d 61 69 6e 20 6d 61 69 6e 0a 20 the main main.
4c730 20 20 20 23 20 77 65 20 6f 6e 6c 79 20 77 61 6e # we only wan
4c740 74 20 74 68 65 6d 20 69 6e 64 69 76 69 64 75 61 t them individua
4c750 6c 6c 79 20 69 6e 20 65 76 65 72 79 20 77 69 64 lly in every wid
4c760 67 65 74 0a 20 20 20 20 62 69 6e 64 20 24 77 20 get. bind $w
4c770 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 63 3e 20 22 <$::control-c> "
4c780 22 0a 20 20 20 20 62 69 6e 64 20 24 77 20 3c 24 ". bind $w <$
4c790 3a 3a 63 6f 6e 74 72 6f 6c 2d 76 3e 20 22 22 0a ::control-v> "".
4c7a0 0a 20 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c . if { $::tcl
4c7b0 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f _platform(platfo
4c7c0 72 6d 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 rm) eq "windows"
4c7d0 20 7d 20 7b 0a 09 65 76 65 6e 74 20 64 65 6c 65 } {..event dele
4c7e0 74 65 20 3c 3c 50 61 73 74 65 53 65 6c 65 63 74 te <<PasteSelect
4c7f0 69 6f 6e 3e 3e 0a 20 20 20 20 7d 0a 20 20 20 20 ion>>. }.
4c800 0a 20 20 20 20 69 66 20 7b 20 24 69 73 77 69 6e . if { $iswin
4c810 63 65 20 7d 20 7b 20 70 6f 63 6b 65 74 70 63 3a ce } { pocketpc:
4c820 3a 61 64 64 20 24 6d 61 72 6b 65 72 20 7d 0a 0a :add $marker }..
4c830 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 ############
4c840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c850 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c880 23 23 23 23 0a 20 20 20 20 23 20 73 74 61 72 74 ####. # start
4c890 20 75 70 20 6f 70 74 69 6f 6e 73 0a 20 20 20 20 up options.
4c8a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c8b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c8c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c8d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c8e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4c8f0 0a 0a 20 20 20 20 69 66 20 7b 20 24 56 69 65 77 .. if { $View
4c900 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 3d 3d OnlyTextOrAll ==
4c910 20 22 4f 6e 6c 79 54 65 78 74 22 20 7d 20 7b 0a "OnlyText" } {.
4c920 09 73 65 74 20 6f 70 74 69 6f 6e 73 28 56 69 65 .set options(Vie
4c930 77 4f 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 29 20 wOnlyTextOrAll)
4c940 22 4f 6e 6c 79 54 65 78 74 22 0a 20 20 20 20 7d "OnlyText". }
4c950 0a 20 20 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 . set geomkey
4c960 20 6d 61 69 6e 67 65 6f 6d 65 74 72 79 5f 24 6f maingeometry_$o
4c970 70 74 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 ptions(ViewOnlyT
4c980 65 78 74 4f 72 41 6c 6c 29 0a 0a 20 20 20 20 69 extOrAll).. i
4c990 66 20 7b 20 24 67 65 6f 6d 65 74 72 79 20 21 3d f { $geometry !=
4c9a0 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 6f 70 74 "" } {..set opt
4c9b0 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 20 24 ions($geomkey) $
4c9c0 67 65 6f 6d 65 74 72 79 0a 20 20 20 20 7d 20 65 geometry. } e
4c9d0 6c 73 65 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 lseif { ![info e
4c9e0 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 24 67 xists options($g
4c9f0 65 6f 6d 6b 65 79 29 5d 20 7d 20 7b 0a 09 73 65 eomkey)] } {..se
4ca00 74 20 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d 6b t options($geomk
4ca10 65 79 29 20 38 30 30 78 36 30 30 2b 30 2b 30 0a ey) 800x600+0+0.
4ca20 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 20 }.. if {
4ca30 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 [info exists opt
4ca40 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 ions(ViewOnlyTex
4ca50 74 4f 72 41 6c 6c 29 5d 20 26 26 20 24 6f 70 74 tOrAll)] && $opt
4ca60 69 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 ions(ViewOnlyTex
4ca70 74 4f 72 41 6c 6c 29 20 3d 3d 20 22 4f 6e 6c 79 tOrAll) == "Only
4ca80 54 65 78 74 22 20 7d 20 7b 0a 09 52 61 6d 44 65 Text" } {..RamDe
4ca90 62 75 67 67 65 72 3a 3a 56 69 65 77 4f 6e 6c 79 bugger::ViewOnly
4caa0 54 65 78 74 4f 72 41 6c 6c 0a 20 20 20 20 7d 0a TextOrAll. }.
4cab0 0a 20 20 20 20 23 20 74 72 69 63 6b 20 74 6f 20 . # trick to
4cac0 6b 6e 6f 77 20 69 66 20 77 65 20 61 72 65 20 64 know if we are d
4cad0 65 62 75 67 67 69 6e 67 20 52 61 6d 44 65 62 75 ebugging RamDebu
4cae0 67 67 65 72 0a 20 20 20 20 69 66 20 7b 20 5b 69 gger. if { [i
4caf0 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 73 65 6e nfo commands sen
4cb00 64 6d 61 73 74 65 72 5d 20 21 3d 20 22 22 20 7d dmaster] != "" }
4cb10 20 7b 0a 09 69 66 20 7b 20 5b 72 65 67 65 78 70 {..if { [regexp
4cb20 20 7b 28 5c 64 2b 29 78 28 5c 64 2b 29 5b 2b 5d {(\d+)x(\d+)[+]
4cb30 28 5b 2d 5c 64 5d 2b 29 5b 2b 5d 28 5b 2d 5c 64 ([-\d]+)[+]([-\d
4cb40 5d 2b 29 7d 20 24 6f 70 74 69 6f 6e 73 28 24 67 ]+)} $options($g
4cb50 65 6f 6d 6b 65 79 29 20 7b 7d 20 77 69 20 68 65 eomkey) {} wi he
4cb60 20 78 70 6f 73 20 79 70 6f 73 5d 20 7d 20 7b 0a xpos ypos] } {.
4cb70 09 20 20 20 20 69 6e 63 72 20 78 70 6f 73 20 32 . incr xpos 2
4cb80 30 0a 09 20 20 20 20 69 6e 63 72 20 79 70 6f 73 0.. incr ypos
4cb90 20 32 30 0a 09 20 20 20 20 63 75 3a 3a 73 65 74 20.. cu::set
4cba0 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 _window_geometry
4cbb0 20 24 77 20 24 7b 77 69 7d 78 24 68 65 2b 24 78 $w ${wi}x$he+$x
4cbc0 70 6f 73 2b 24 79 70 6f 73 0a 09 20 20 20 20 69 pos+$ypos.. i
4cbd0 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
4cbe0 20 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 options(current
4cbf0 66 69 6c 65 29 5d 20 26 26 20 5c 0a 09 09 20 20 file)] && \...
4cc00 20 20 20 5b 41 72 65 46 69 6c 65 73 45 71 75 61 [AreFilesEqua
4cc10 6c 20 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 l $options(curre
4cc20 6e 74 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 ntfile) \...
4cc30 20 20 20 20 20 20 5b 73 65 6e 64 6d 61 73 74 65 [sendmaste
4cc40 72 20 73 65 74 20 3a 3a 52 61 6d 44 65 62 75 67 r set ::RamDebug
4cc50 67 65 72 3a 3a 63 75 72 72 65 6e 74 66 69 6c 65 ger::currentfile
4cc60 5d 5d 20 7d 20 7b 0a 09 09 0a 09 09 73 65 74 20 ]] } {......set
4cc70 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 options(currentf
4cc80 69 6c 65 29 20 22 22 0a 09 09 66 6f 72 20 7b 20 ile) ""...for {
4cc90 73 65 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c set i 0 } { $i <
4cca0 20 5b 6c 6c 65 6e 67 74 68 20 24 6f 70 74 69 6f [llength $optio
4ccb0 6e 73 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 ns(RecentFilesL)
4ccc0 5d 20 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b ] } { incr i } {
4ccd0 0a 09 09 20 20 20 20 73 65 74 20 6f 70 74 69 6f ... set optio
4cce0 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 29 20 ns(currentfile)
4ccf0 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69 6f 6e 73 [lindex $options
4cd00 28 52 65 63 65 6e 74 46 69 6c 65 73 4c 29 20 24 (RecentFilesL) $
4cd10 69 20 30 5d 0a 09 09 20 20 20 20 69 66 20 7b 20 i 0]... if {
4cd20 21 5b 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 ![AreFilesEqual
4cd30 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 $options(current
4cd40 66 69 6c 65 29 20 5c 0a 09 09 20 20 20 20 20 20 file) \...
4cd50 20 20 20 20 20 20 20 20 20 5b 73 65 6e 64 6d 61 [sendma
4cd60 73 74 65 72 20 73 65 74 20 3a 3a 52 61 6d 44 65 ster set ::RamDe
4cd70 62 75 67 67 65 72 3a 3a 63 75 72 72 65 6e 74 66 bugger::currentf
4cd80 69 6c 65 5d 5d 20 7d 20 7b 0a 09 09 20 20 20 20 ile]] } {...
4cd90 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20 20 20 break...
4cda0 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 6f 70 74 } else { set opt
4cdb0 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 ions(currentfile
4cdc0 29 20 22 22 20 7d 0a 09 09 7d 0a 09 20 20 20 20 ) "" }...}..
4cdd0 7d 0a 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 }..}. } else
4cde0 7b 0a 09 69 66 20 7b 20 24 6f 70 74 69 6f 6e 73 {..if { $options
4cdf0 28 24 67 65 6f 6d 6b 65 79 29 20 65 71 20 22 7a ($geomkey) eq "z
4ce00 6f 6f 6d 65 64 22 20 7d 20 7b 0a 09 20 20 20 20 oomed" } {..
4ce10 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 if { $::tcl_plat
4ce20 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 65 form(platform) e
4ce30 71 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a q "windows" } {.
4ce40 09 09 77 6d 20 73 74 61 74 65 20 24 77 20 7a 6f ..wm state $w zo
4ce50 6f 6d 65 64 0a 09 20 20 20 20 7d 20 65 6c 73 65 omed.. } else
4ce60 20 7b 0a 09 09 63 61 74 63 68 20 7b 20 77 6d 20 {...catch { wm
4ce70 61 74 74 72 69 62 75 74 65 73 20 24 77 20 2d 7a attributes $w -z
4ce80 6f 6f 6d 65 64 20 31 20 7d 0a 09 20 20 20 20 7d oomed 1 }.. }
4ce90 0a 09 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 .. wm geometr
4cea0 79 20 24 77 20 38 30 30 78 36 30 30 2b 30 2b 30 y $w 800x600+0+0
4ceb0 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 ..} else {..
4cec0 63 75 3a 3a 73 65 74 5f 77 69 6e 64 6f 77 5f 67 cu::set_window_g
4ced0 65 6f 6d 65 74 72 79 20 24 77 20 24 6f 70 74 69 eometry $w $opti
4cee0 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 0a 09 7d ons($geomkey)..}
4cef0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b . }.. if {
4cf00 20 24 69 73 77 69 6e 63 65 20 7d 20 7b 0a 09 23 $iswince } {..#
4cf10 20 77 69 6e 63 65 0a 09 77 6d 20 67 65 6f 6d 65 wince..wm geome
4cf20 74 72 79 20 24 77 20 32 34 30 78 32 36 38 2b 2d try $w 240x268+-
4cf30 32 2b 32 36 0a 09 3a 3a 65 74 63 6c 3a 3a 61 75 2+26..::etcl::au
4cf40 74 6f 66 69 74 20 24 77 0a 09 62 69 6e 64 20 24 tofit $w..bind $
4cf50 77 20 3c 43 6f 6e 66 69 67 75 72 65 52 65 71 75 w <ConfigureRequ
4cf60 65 73 74 3e 20 7b 3a 3a 65 74 63 6c 3a 3a 61 75 est> {::etcl::au
4cf70 74 6f 66 69 74 20 25 57 7d 0a 20 20 20 20 7d 0a tofit %W}. }.
4cf80 20 20 20 20 0a 20 20 20 20 73 65 74 20 6d 65 6e . set men
4cf90 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 20 67 65 u [$mainframe ge
4cfa0 74 6d 65 6e 75 20 61 63 74 69 76 65 70 72 6f 67 tmenu activeprog
4cfb0 72 61 6d 73 5d 0a 20 20 20 20 69 66 20 7b 20 5b rams]. if { [
4cfc0 20 74 6b 20 77 69 6e 64 6f 77 69 6e 67 73 79 73 tk windowingsys
4cfd0 74 65 6d 5d 20 65 71 20 22 61 71 75 61 22 20 7d tem] eq "aqua" }
4cfe0 20 7b 0a 09 41 63 74 75 61 6c 69 7a 65 41 63 74 {..ActualizeAct
4cff0 69 76 65 50 72 6f 67 72 61 6d 73 20 24 6d 65 6e ivePrograms $men
4d000 75 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 u. } else {..
4d010 24 6d 65 6e 75 20 63 6f 6e 66 69 67 75 72 65 20 $menu configure
4d020 2d 70 6f 73 74 63 6f 6d 6d 61 6e 64 20 5b 6c 69 -postcommand [li
4d030 73 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a st RamDebugger::
4d040 41 63 74 75 61 6c 69 7a 65 41 63 74 69 76 65 50 ActualizeActiveP
4d050 72 6f 67 72 61 6d 73 20 24 6d 65 6e 75 20 31 5d rograms $menu 1]
4d060 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20 . }.. set
4d070 6d 65 6e 75 20 5b 24 6d 61 69 6e 66 72 61 6d 65 menu [$mainframe
4d080 20 67 65 74 6d 65 6e 75 20 6d 61 63 72 6f 73 5d getmenu macros]
4d090 0a 20 20 20 20 41 64 64 41 63 74 69 76 65 4d 61 . AddActiveMa
4d0a0 63 72 6f 73 54 6f 4d 65 6e 75 20 24 6d 61 69 6e crosToMenu $main
4d0b0 66 72 61 6d 65 20 24 6d 65 6e 75 0a 0a 20 20 20 frame $menu..
4d0c0 20 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 if { [info exis
4d0d0 74 73 20 6f 70 74 69 6f 6e 73 28 62 72 65 61 6b ts options(break
4d0e0 70 6f 69 6e 74 73 29 5d 20 7d 20 7b 0a 09 69 66 points)] } {..if
4d0f0 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 5b 6c 69 6e { [llength [lin
4d100 64 65 78 20 24 6f 70 74 69 6f 6e 73 28 62 72 65 dex $options(bre
4d110 61 6b 70 6f 69 6e 74 73 29 20 30 5d 5d 20 3d 3d akpoints) 0]] ==
4d120 20 34 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 4 } {.. set
4d130 62 72 65 61 6b 70 6f 69 6e 74 73 20 22 22 0a 09 breakpoints ""..
4d140 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 6f foreach i $o
4d150 70 74 69 6f 6e 73 28 62 72 65 61 6b 70 6f 69 6e ptions(breakpoin
4d160 74 73 29 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 ts) {...lappend
4d170 62 72 65 61 6b 70 6f 69 6e 74 73 20 5b 63 6f 6e breakpoints [con
4d180 63 61 74 20 5b 6c 69 73 74 20 5b 6c 69 6e 64 65 cat [list [linde
4d190 78 20 24 69 20 30 5d 5d 20 31 20 5b 6c 72 61 6e x $i 0]] 1 [lran
4d1a0 67 65 20 24 69 20 31 20 33 5d 5d 0a 09 20 20 20 ge $i 1 3]]..
4d1b0 20 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 }..} else {..
4d1c0 20 20 73 65 74 20 62 72 65 61 6b 70 6f 69 6e 74 set breakpoint
4d1d0 73 20 24 6f 70 74 69 6f 6e 73 28 62 72 65 61 6b s $options(break
4d1e0 70 6f 69 6e 74 73 29 0a 09 7d 0a 20 20 20 20 7d points)..}. }
4d1f0 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f 20 . if { [info
4d200 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 54 exists options(T
4d210 69 6d 65 4d 65 61 73 75 72 65 44 61 74 61 29 5d imeMeasureData)]
4d220 20 7d 20 7b 0a 09 73 65 74 20 54 69 6d 65 4d 65 } {..set TimeMe
4d230 61 73 75 72 65 44 61 74 61 20 24 6f 70 74 69 6f asureData $optio
4d240 6e 73 28 54 69 6d 65 4d 65 61 73 75 72 65 44 61 ns(TimeMeasureDa
4d250 74 61 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 ta). }.. i
4d260 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
4d270 20 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 67 65 options(debugge
4d280 72 73 74 61 74 65 29 5d 20 26 26 20 24 6f 70 74 rstate)] && $opt
4d290 69 6f 6e 73 28 64 65 62 75 67 67 65 72 73 74 61 ions(debuggersta
4d2a0 74 65 29 20 3d 3d 20 22 74 69 6d 65 22 20 7d 20 te) == "time" }
4d2b0 7b 0a 09 73 65 74 20 64 65 62 75 67 67 65 72 73 {..set debuggers
4d2c0 74 61 74 65 20 24 6f 70 74 69 6f 6e 73 28 64 65 tate $options(de
4d2d0 62 75 67 67 65 72 73 74 61 74 65 29 0a 09 23 52 buggerstate)..#R
4d2e0 61 6d 44 65 62 75 67 67 65 72 3a 3a 44 69 73 70 amDebugger::Disp
4d2f0 6c 61 79 54 69 6d 65 73 57 69 6e 64 6f 77 0a 20 layTimesWindow.
4d300 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 69 }. if { [i
4d310 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 69 6f nfo exists optio
4d320 6e 73 28 53 65 61 72 63 68 54 6f 6f 6c 62 61 72 ns(SearchToolbar
4d330 29 5d 20 26 26 20 5b 6c 69 6e 64 65 78 20 24 6f )] && [lindex $o
4d340 70 74 69 6f 6e 73 28 53 65 61 72 63 68 54 6f 6f ptions(SearchToo
4d350 6c 62 61 72 29 20 30 5d 20 26 26 20 5c 0a 09 28 lbar) 0] && \..(
4d360 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 ![info exists op
4d370 74 69 6f 6e 73 28 53 65 61 72 63 68 54 6f 6f 6c tions(SearchTool
4d380 62 61 72 5f 61 75 74 6f 63 6c 6f 73 65 29 5d 20 bar_autoclose)]
4d390 7c 7c 20 21 24 6f 70 74 69 6f 6e 73 28 53 65 61 || !$options(Sea
4d3a0 72 63 68 54 6f 6f 6c 62 61 72 5f 61 75 74 6f 63 rchToolbar_autoc
4d3b0 6c 6f 73 65 29 29 20 7d 20 7b 0a 09 53 65 61 72 lose)) } {..Sear
4d3c0 63 68 57 69 6e 64 6f 77 20 2d 72 65 70 6c 61 63 chWindow -replac
4d3d0 65 20 5b 6c 69 6e 64 65 78 20 24 6f 70 74 69 6f e [lindex $optio
4d3e0 6e 73 28 53 65 61 72 63 68 54 6f 6f 6c 62 61 72 ns(SearchToolbar
4d3f0 29 20 31 5d 0a 20 20 20 20 7d 0a 20 20 20 20 53 ) 1]. }. S
4d400 68 6f 77 53 74 61 74 75 73 42 61 72 0a 20 20 20 howStatusBar.
4d410 20 53 68 6f 77 42 75 74 74 6f 6e 73 54 6f 6f 6c ShowButtonsTool
4d420 42 61 72 0a 0a 20 20 20 20 0a 23 20 20 20 20 20 Bar.. .#
4d430 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 if { [info exist
4d440 73 20 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 s options(remote
4d450 73 65 72 76 65 72 54 79 70 65 29 5d 20 26 26 20 serverType)] &&
4d460 24 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 73 $options(remotes
4d470 65 72 76 65 72 54 79 70 65 29 20 3d 3d 20 22 72 erverType) == "r
4d480 65 6d 6f 74 65 22 20 26 26 20 5c 0a 23 20 20 20 emote" && \.#
4d490 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 65 78 69 [info exi
4d4a0 73 74 73 20 6f 70 74 69 6f 6e 73 28 72 65 6d 6f sts options(remo
4d4b0 74 65 73 65 72 76 65 72 29 5d 20 7d 20 7b 0a 23 teserver)] } {.#
4d4c0 20 20 20 20 20 20 20 20 20 53 65 74 4d 65 73 73 SetMess
4d4d0 61 67 65 20 22 43 6f 6e 6e 65 63 74 69 6e 67 20 age "Connecting
4d4e0 72 65 6d 6f 74 65 73 65 72 76 65 72 20 24 6f 70 remoteserver $op
4d4f0 74 69 6f 6e 73 28 72 65 6d 6f 74 65 73 65 72 76 tions(remoteserv
4d500 65 72 29 2e 2e 2e 22 0a 23 20 20 20 20 20 20 20 er)...".#
4d510 20 20 63 61 74 63 68 20 7b 20 72 64 65 62 75 67 catch { rdebug
4d520 20 24 6f 70 74 69 6f 6e 73 28 72 65 6d 6f 74 65 $options(remote
4d530 73 65 72 76 65 72 29 20 7d 0a 23 20 20 20 20 20 server) }.#
4d540 20 20 20 20 53 65 74 4d 65 73 73 61 67 65 20 22 SetMessage "
4d550 22 0a 23 20 20 20 20 20 7d 0a 0a 20 20 20 20 4e ".# }.. N
4d560 65 77 46 69 6c 65 0a 20 20 20 20 0a 20 20 20 20 ewFile. .
4d570 66 6f 63 75 73 20 2d 66 6f 72 63 65 20 24 74 65 focus -force $te
4d580 78 74 0a 20 20 20 20 63 70 72 6f 6a 65 63 74 3a xt. cproject:
4d590 3a 49 6e 69 74 20 24 77 0a 0a 20 20 20 20 23 20 :Init $w.. #
4d5a0 66 6f 72 20 74 6b 63 6f 6e 0a 20 20 20 20 72 65 for tkcon. re
4d5b0 6e 61 6d 65 20 3a 3a 65 78 69 74 20 3a 3a 65 78 name ::exit ::ex
4d5c0 69 74 5f 66 69 6e 61 6c 0a 20 20 20 20 70 72 6f it_final. pro
4d5d0 63 20 3a 3a 65 78 69 74 20 7b 20 61 72 67 73 20 c ::exit { args
4d5e0 7d 20 7b 7d 0a 0a 20 20 20 20 23 20 66 6f 72 20 } {}.. # for
4d5f0 64 65 66 69 6e 69 6e 67 20 77 68 61 74 20 69 73 defining what is
4d600 20 61 20 77 6f 72 64 20 66 6f 72 20 74 65 78 74 a word for text
4d610 20 77 69 64 67 65 74 73 0a 20 20 20 20 61 75 74 widgets. aut
4d620 6f 5f 6c 6f 61 64 20 74 63 6c 5f 77 6f 72 64 42 o_load tcl_wordB
4d630 72 65 61 6b 41 66 74 65 72 0a 20 20 20 20 73 65 reakAfter. se
4d640 74 20 3a 3a 74 63 6c 5f 77 6f 72 64 63 68 61 72 t ::tcl_wordchar
4d650 73 20 22 5c 5c 77 22 0a 20 20 20 20 73 65 74 20 s "\\w". set
4d660 3a 3a 74 63 6c 5f 6e 6f 6e 77 6f 72 64 63 68 61 ::tcl_nonwordcha
4d670 72 73 20 22 5c 5c 57 22 0a 20 20 20 20 0a 20 20 rs "\\W". .
4d680 20 20 20 23 64 6f 20 74 68 65 20 73 61 6d 65 20 #do the same
4d690 69 6e 20 77 69 6e 64 6f 77 73 20 74 68 61 6e 20 in windows than
4d6a0 69 6e 20 6c 69 6e 75 78 0a 20 20 20 20 20 69 66 in linux. if
4d6b0 20 7b 5b 74 6b 20 77 69 6e 64 6f 77 69 6e 67 73 {[tk windowings
4d6c0 79 73 74 65 6d 5d 20 65 71 20 22 77 69 6e 33 32 ystem] eq "win32
4d6d0 22 7d 20 20 7b 0a 09 20 20 20 20 20 70 72 6f 63 "} {.. proc
4d6e0 20 3a 3a 74 6b 3a 3a 54 65 78 74 4e 65 78 74 57 ::tk::TextNextW
4d6f0 6f 72 64 20 7b 77 20 73 74 61 72 74 7d 20 7b 0a ord {w start} {.
4d700 09 09 20 54 65 78 74 4e 65 78 74 50 6f 73 20 24 .. TextNextPos $
4d710 77 20 24 73 74 61 72 74 20 74 63 6c 5f 65 6e 64 w $start tcl_end
4d720 4f 66 57 6f 72 64 0a 09 20 20 20 20 20 7d 0a 20 OfWord.. }.
4d730 20 20 20 20 7d 0a 20 20 20 20 0a 23 20 20 20 20 }. .#
4d740 20 73 65 74 20 3a 3a 74 63 6c 5f 77 6f 72 64 63 set ::tcl_wordc
4d750 68 61 72 73 20 7b 5c 53 7d 0a 23 20 20 20 20 20 hars {\S}.#
4d760 73 65 74 20 3a 3a 74 63 6c 5f 6e 6f 6e 77 6f 72 set ::tcl_nonwor
4d770 64 63 68 61 72 73 20 7b 5c 73 7d 0a 0a 20 20 20 dchars {\s}..
4d780 20 23 20 69 74 20 69 73 20 64 6f 6e 65 20 69 6e # it is done in
4d790 20 74 68 69 73 20 77 61 79 20 62 65 63 61 75 73 this way becaus
4d7a0 65 20 69 66 20 6e 6f 74 2c 20 74 68 65 20 64 65 e if not, the de
4d7b0 66 69 6e 69 74 69 6f 6e 20 67 65 74 73 20 72 65 finition gets re
4d7c0 6c 6f 61 64 0a 20 20 20 20 70 72 6f 63 20 3a 3a load. proc ::
4d7d0 74 6b 54 61 62 54 6f 57 69 6e 64 6f 77 20 7b 20 tkTabToWindow {
4d7e0 77 20 7d 20 7b 20 61 66 74 65 72 20 31 30 30 20 w } { after 100
4d7f0 57 69 64 67 65 74 3a 3a 74 72 61 76 65 72 73 65 Widget::traverse
4d800 54 6f 20 24 77 20 7d 0a 23 20 20 20 20 20 75 70 To $w }.# up
4d810 6c 65 76 65 6c 20 5c 23 30 20 7b 0a 23 20 20 20 level \#0 {.#
4d820 20 20 20 20 20 20 70 72 6f 63 20 74 6b 54 61 62 proc tkTab
4d830 54 6f 57 69 6e 64 6f 77 20 7b 77 7d 20 7b 0a 23 ToWindow {w} {.#
4d840 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 63 foc
4d850 75 73 20 24 77 0a 23 20 20 20 20 20 20 20 20 20 us $w.#
4d860 20 20 20 20 61 66 74 65 72 20 31 30 30 20 7b 0a after 100 {.
4d870 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
4d880 20 20 73 65 74 20 77 20 5b 66 6f 63 75 73 5d 0a set w [focus].
4d890 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
4d8a0 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 65 71 if {[string eq
4d8b0 75 61 6c 20 5b 77 69 6e 66 6f 20 63 6c 61 73 73 ual [winfo class
4d8c0 20 24 77 5d 20 45 6e 74 72 79 5d 7d 20 7b 0a 23 $w] Entry]} {.#
4d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4d8e0 20 20 20 20 20 24 77 20 73 65 6c 65 63 74 69 6f $w selectio
4d8f0 6e 20 72 61 6e 67 65 20 30 20 65 6e 64 0a 23 20 n range 0 end.#
4d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4d910 20 20 20 20 24 77 20 69 63 75 72 73 6f 72 20 65 $w icursor e
4d920 6e 64 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 nd.#
4d930 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 20 }.#
4d940 20 20 20 20 20 7d 0a 23 20 20 20 20 20 20 20 20 }.#
4d950 20 7d 0a 23 20 20 20 20 20 7d 0a 0a 20 20 20 20 }.# }..
4d960 23 20 69 66 20 77 65 20 64 6f 20 69 74 20 61 74 # if we do it at
4d970 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 2c 20 the beginning,
4d980 61 6e 20 75 67 6c 79 20 75 70 64 61 74 65 20 69 an ugly update i
4d990 73 20 6d 61 64 65 0a 20 20 20 20 69 66 20 7b 20 s made. if {
4d9a0 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
4d9b0 70 6c 61 74 66 6f 72 6d 29 20 6e 65 20 22 77 69 platform) ne "wi
4d9c0 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 73 65 74 20 ndows" } {..set
4d9d0 69 6d 67 20 5b 69 6d 61 67 65 20 63 72 65 61 74 img [image creat
4d9e0 65 20 70 68 6f 74 6f 20 2d 66 69 6c 65 20 5b 66 e photo -file [f
4d9f0 69 6c 65 20 6a 6f 69 6e 20 24 74 6f 70 64 69 72 ile join $topdir
4da00 20 61 64 64 6f 6e 73 20 72 61 6d 64 65 62 75 67 addons ramdebug
4da10 67 65 72 2e 70 6e 67 5d 5d 0a 09 77 6d 20 69 63 ger.png]]..wm ic
4da20 6f 6e 70 68 6f 74 6f 20 24 77 20 2d 64 65 66 61 onphoto $w -defa
4da30 75 6c 74 20 24 69 6d 67 0a 09 23 77 6d 20 69 63 ult $img..#wm ic
4da40 6f 6e 62 69 74 6d 61 70 20 24 77 20 40 24 74 6f onbitmap $w @$to
4da50 70 64 69 72 2f 61 64 64 6f 6e 73 2f 72 61 6d 64 pdir/addons/ramd
4da60 65 62 75 67 67 65 72 2e 78 62 6d 0a 20 20 20 20 ebugger.xbm.
4da70 7d 20 65 6c 73 65 69 66 20 7b 20 21 24 69 73 77 } elseif { !$isw
4da80 69 6e 63 65 20 7d 20 7b 0a 09 77 6d 20 69 63 6f ince } {..wm ico
4da90 6e 62 69 74 6d 61 70 20 24 77 20 24 74 6f 70 64 nbitmap $w $topd
4daa0 69 72 2f 61 64 64 6f 6e 73 2f 72 61 6d 64 65 62 ir/addons/ramdeb
4dab0 75 67 67 65 72 2e 69 63 6f 0a 09 69 66 20 7b 20 ugger.ico..if {
4dac0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a ![info exists ::
4dad0 69 73 5f 70 61 63 6b 61 67 65 5d 20 7c 7c 20 21 is_package] || !
4dae0 24 3a 3a 69 73 5f 70 61 63 6b 61 67 65 20 7d 20 $::is_package }
4daf0 7b 0a 09 20 20 20 20 63 61 74 63 68 20 7b 20 77 {.. catch { w
4db00 6d 20 69 63 6f 6e 62 69 74 6d 61 70 20 24 77 20 m iconbitmap $w
4db10 2d 64 65 66 61 75 6c 74 20 24 74 6f 70 64 69 72 -default $topdir
4db20 2f 61 64 64 6f 6e 73 2f 72 61 6d 64 65 62 75 67 /addons/ramdebug
4db30 67 65 72 2e 69 63 6f 20 7d 0a 09 7d 0a 20 20 20 ger.ico }..}.
4db40 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 24 69 73 }. if { !$is
4db50 77 69 6e 63 65 20 7d 20 7b 0a 09 52 61 6d 44 65 wince } {..RamDe
4db60 62 75 67 67 65 72 3a 3a 56 43 53 3a 3a 4d 61 6e bugger::VCS::Man
4db70 61 67 65 41 75 74 6f 53 61 76 65 0a 20 20 20 20 ageAutoSave.
4db80 7d 0a 20 20 20 20 75 70 64 61 74 65 20 69 64 6c }. update idl
4db90 65 74 61 73 6b 73 0a 0a 20 20 20 20 45 6e 64 53 etasks.. EndS
4dba0 70 6c 61 73 68 0a 0a 20 20 20 20 69 66 20 7b 20 plash.. if {
4dbb0 5b 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c [[winfo toplevel
4dbc0 20 24 77 5d 20 63 67 65 74 20 2d 75 73 65 5d 20 $w] cget -use]
4dbd0 3d 3d 20 22 22 20 7d 20 7b 0a 09 77 6d 20 64 65 == "" } {..wm de
4dbe0 69 63 6f 6e 69 66 79 20 24 77 0a 09 66 6f 63 75 iconify $w..focu
4dbf0 73 20 2d 66 6f 72 63 65 20 24 74 65 78 74 0a 20 s -force $text.
4dc00 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 69 }. if { $i
4dc10 73 77 69 6e 63 65 20 7d 20 7b 0a 09 73 65 74 20 swince } {..set
4dc20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 3a 3a 65 err [catch { ::e
4dc30 74 63 6c 3a 3a 61 75 74 6f 66 69 74 20 24 77 20 tcl::autofit $w
4dc40 7d 5d 0a 09 69 66 20 7b 20 24 65 72 72 20 7d 20 }]..if { $err }
4dc50 7b 0a 09 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 {.. wm geomet
4dc60 72 79 20 24 77 20 32 34 30 78 32 36 38 2b 2d 32 ry $w 240x268+-2
4dc70 2b 32 36 0a 09 7d 20 20 20 0a 20 20 20 20 7d 0a +26..} . }.
4dc80 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 65 62 75 67 }..proc RamDebug
4dc90 67 65 72 3a 3a 69 6e 73 65 72 74 5f 74 72 61 6e ger::insert_tran
4dca0 73 6c 61 74 69 6f 6e 5f 63 6d 64 20 7b 7d 20 7b slation_cmd {} {
4dcb0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 . variable te
4dcc0 78 74 0a 20 20 20 20 0a 20 20 20 20 73 65 74 20 xt. . set
4dcd0 6f 6c 64 53 65 70 61 72 61 74 6f 72 20 5b 24 74 oldSeparator [$t
4dce0 65 78 74 20 63 67 65 74 20 2d 61 75 74 6f 73 65 ext cget -autose
4dcf0 70 61 72 61 74 6f 72 73 5d 0a 20 20 20 20 69 66 parators]. if
4dd00 20 7b 24 6f 6c 64 53 65 70 61 72 61 74 6f 72 7d {$oldSeparator}
4dd10 20 7b 0a 09 24 74 65 78 74 20 63 6f 6e 66 69 67 {..$text config
4dd20 75 72 65 20 2d 61 75 74 6f 73 65 70 61 72 61 74 ure -autoseparat
4dd30 6f 72 73 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 ors 0. }.
4dd40 24 74 65 78 74 20 65 64 69 74 20 73 65 70 61 72 $text edit separ
4dd50 61 74 6f 72 0a 20 0a 20 20 20 20 69 66 20 7b 5b ator. . if {[
4dd60 6c 6c 65 6e 67 74 68 20 5b 73 65 74 20 72 61 6e llength [set ran
4dd70 67 65 20 5b 24 74 65 78 74 20 74 61 67 20 72 61 ge [$text tag ra
4dd80 6e 67 65 73 20 73 65 6c 5d 5d 5d 7d 20 7b 0a 09 nges sel]]]} {..
4dd90 6c 61 73 73 69 67 6e 20 24 72 61 6e 67 65 20 73 lassign $range s
4dda0 31 20 73 32 0a 09 69 66 20 7b 20 5b 24 74 65 78 1 s2..if { [$tex
4ddb0 74 20 67 65 74 20 22 24 73 31 2d 31 63 22 5d 20 t get "$s1-1c"]
4ddc0 65 71 20 7b 22 7d 20 7d 20 7b 0a 09 20 20 20 20 eq {"} } {..
4ddd0 73 65 74 20 73 31 20 5b 24 74 65 78 74 20 69 6e set s1 [$text in
4dde0 64 65 78 20 22 24 73 31 2d 31 63 22 5d 0a 09 7d dex "$s1-1c"]..}
4ddf0 0a 09 69 66 20 7b 20 5b 24 74 65 78 74 20 67 65 ..if { [$text ge
4de00 74 20 22 24 73 32 22 5d 20 65 71 20 7b 22 7d 20 t "$s2"] eq {"}
4de10 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 73 32 20 } {.. set s2
4de20 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 24 73 [$text index "$s
4de30 32 2b 31 63 22 5d 0a 09 7d 0a 20 20 20 20 7d 20 2+1c"]..}. }
4de40 65 6c 73 65 20 7b 0a 09 73 65 74 20 69 20 5b 24 else {..set i [$
4de50 74 65 78 74 20 69 6e 64 65 78 20 69 6e 73 65 72 text index inser
4de60 74 5d 0a 09 6c 61 73 73 69 67 6e 20 5b 6c 69 73 t]..lassign [lis
4de70 74 20 24 69 20 24 69 5d 20 73 31 20 73 32 0a 09 t $i $i] s1 s2..
4de80 73 65 74 20 73 31 5f 73 61 76 65 20 24 73 31 0a set s1_save $s1.
4de90 09 77 68 69 6c 65 20 7b 20 5b 24 74 65 78 74 20 .while { [$text
4dea0 63 6f 6d 70 61 72 65 20 24 73 31 20 3e 20 22 24 compare $s1 > "$
4deb0 73 31 20 6c 69 6e 65 73 74 61 72 74 22 5d 20 26 s1 linestart"] &
4dec0 26 20 5b 72 65 67 65 78 70 20 7b 5b 5c 77 5c 73 & [regexp {[\w\s
4ded0 5c 22 25 5d 7d 20 5b 24 74 65 78 74 20 67 65 74 \"%]} [$text get
4dee0 20 22 24 73 31 2d 31 63 22 5d 5d 20 7d 20 7b 0a "$s1-1c"]] } {.
4def0 09 20 20 20 20 69 66 20 7b 20 24 73 31 20 6e 65 . if { $s1 ne
4df00 20 24 73 31 5f 73 61 76 65 20 26 26 20 5b 24 74 $s1_save && [$t
4df10 65 78 74 20 67 65 74 20 24 73 31 5d 20 65 71 20 ext get $s1] eq
4df20 7b 22 7d 20 7d 20 7b 20 62 72 65 61 6b 20 7d 0a {"} } { break }.
4df30 09 20 20 20 20 73 65 74 20 73 31 20 5b 24 74 65 . set s1 [$te
4df40 78 74 20 69 6e 64 65 78 20 22 24 73 31 2d 31 63 xt index "$s1-1c
4df50 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 24 74 65 "]..}..if { [$te
4df60 78 74 20 67 65 74 20 24 73 31 5d 20 6e 65 20 7b xt get $s1] ne {
4df70 22 7d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 "} } {.. set
4df80 73 31 20 24 73 31 5f 73 61 76 65 0a 09 20 20 20 s1 $s1_save..
4df90 20 77 68 69 6c 65 20 7b 20 5b 24 74 65 78 74 20 while { [$text
4dfa0 63 6f 6d 70 61 72 65 20 24 73 31 20 3e 20 22 24 compare $s1 > "$
4dfb0 73 31 20 6c 69 6e 65 73 74 61 72 74 22 5d 20 26 s1 linestart"] &
4dfc0 26 20 5b 72 65 67 65 78 70 20 7b 5b 5c 77 5c 22 & [regexp {[\w\"
4dfd0 25 5d 7d 20 5b 24 74 65 78 74 20 67 65 74 20 22 %]} [$text get "
4dfe0 24 73 31 2d 31 63 22 5d 5d 20 7d 20 7b 0a 09 09 $s1-1c"]] } {...
4dff0 73 65 74 20 73 31 20 5b 24 74 65 78 74 20 69 6e set s1 [$text in
4e000 64 65 78 20 22 24 73 31 2d 31 63 22 5d 0a 09 20 dex "$s1-1c"]..
4e010 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 72 65 }.. set re
4e020 78 20 7b 5b 5c 77 25 5d 7d 0a 09 7d 20 65 6c 73 x {[\w%]}..} els
4e030 65 20 7b 0a 09 20 20 20 20 73 65 74 20 72 65 78 e {.. set rex
4e040 20 7b 5b 5c 77 5c 73 25 5c 22 5d 7d 0a 09 7d 0a {[\w\s%\"]}..}.
4e050 09 77 68 69 6c 65 20 7b 20 5b 24 74 65 78 74 20 .while { [$text
4e060 63 6f 6d 70 61 72 65 20 24 73 32 20 3c 20 22 24 compare $s2 < "$
4e070 73 32 20 6c 69 6e 65 65 6e 64 22 5d 20 26 26 20 s2 lineend"] &&
4e080 5b 72 65 67 65 78 70 20 24 72 65 78 20 5b 24 74 [regexp $rex [$t
4e090 65 78 74 20 67 65 74 20 22 24 73 32 22 5d 5d 20 ext get "$s2"]]
4e0a0 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 5b 24 } {.. if { [$
4e0b0 74 65 78 74 20 67 65 74 20 24 73 32 5d 20 65 71 text get $s2] eq
4e0c0 20 7b 22 7d 20 7d 20 7b 20 62 72 65 61 6b 20 7d {"} } { break }
4e0d0 0a 09 20 20 20 20 73 65 74 20 73 32 20 5b 24 74 .. set s2 [$t
4e0e0 65 78 74 20 69 6e 64 65 78 20 22 24 73 32 2b 31 ext index "$s2+1
4e0f0 63 22 5d 0a 09 7d 0a 09 69 66 20 7b 20 5b 24 74 c"]..}..if { [$t
4e100 65 78 74 20 67 65 74 20 24 73 31 5d 20 65 71 20 ext get $s1] eq
4e110 7b 22 7d 20 26 26 20 5b 24 74 65 78 74 20 67 65 {"} && [$text ge
4e120 74 20 24 73 32 5d 20 6e 65 20 7b 22 7d 20 7d 20 t $s2] ne {"} }
4e130 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 5b {.. lassign [
4e140 6c 69 73 74 20 24 69 20 24 69 5d 20 73 31 20 73 list $i $i] s1 s
4e150 32 0a 09 7d 20 65 6c 73 65 69 66 20 7b 20 5b 24 2..} elseif { [$
4e160 74 65 78 74 20 67 65 74 20 24 73 32 5d 20 65 71 text get $s2] eq
4e170 20 7b 22 7d 20 26 26 20 5b 24 74 65 78 74 20 67 {"} && [$text g
4e180 65 74 20 24 73 31 5d 20 6e 65 20 7b 22 7d 20 7d et $s1] ne {"} }
4e190 20 7b 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 {.. lassign
4e1a0 5b 6c 69 73 74 20 24 69 20 24 69 5d 20 73 31 20 [list $i $i] s1
4e1b0 73 32 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 s2..}. }.
4e1c0 69 66 20 7b 20 5b 24 74 65 78 74 20 67 65 74 20 if { [$text get
4e1d0 22 24 73 31 22 5d 20 6e 65 20 7b 22 7d 20 7d 20 "$s1"] ne {"} }
4e1e0 7b 0a 09 24 74 65 78 74 20 69 6e 73 65 72 74 20 {..$text insert
4e1f0 24 73 31 20 7b 22 7d 0a 09 73 65 74 20 73 32 20 $s1 {"}..set s2
4e200 5b 24 74 65 78 74 20 69 6e 64 65 78 20 22 24 73 [$text index "$s
4e210 32 2b 31 63 22 5d 0a 20 20 20 20 7d 20 65 6c 73 2+1c"]. } els
4e220 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b 5c eif { [regexp {\
4e230 5b 28 5b 5f 3d 5d 29 5c 73 2b 7d 20 5b 24 74 65 [([_=])\s+} [$te
4e240 78 74 20 67 65 74 20 22 24 73 31 2d 33 63 22 20 xt get "$s1-3c"
4e250 24 73 31 5d 20 7b 7d 20 63 6d 64 5d 20 7d 20 7b $s1] {} cmd] } {
4e260 0a 09 73 77 69 74 63 68 20 2d 2d 20 24 63 6d 64 ..switch -- $cmd
4e270 20 7b 0a 09 20 20 20 20 22 5f 22 20 7b 20 24 74 {.. "_" { $t
4e280 65 78 74 20 72 65 70 6c 61 63 65 20 22 24 73 31 ext replace "$s1
4e290 2d 32 63 22 20 22 24 73 31 2d 31 63 22 20 22 3d -2c" "$s1-1c" "=
4e2a0 22 20 7d 0a 09 20 20 20 20 22 3d 22 20 7b 20 24 " }.. "=" { $
4e2b0 74 65 78 74 20 72 65 70 6c 61 63 65 20 22 24 73 text replace "$s
4e2c0 31 2d 32 63 22 20 22 24 73 31 2d 31 63 22 20 22 1-2c" "$s1-1c" "
4e2d0 5f 22 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a _" }..}..return.
4e2e0 20 20 20 20 7d 0a 20 20 20 20 24 74 65 78 74 20 }. $text
4e2f0 69 6e 73 65 72 74 20 24 73 31 20 22 5c 5b 5f 20 insert $s1 "\[_
4e300 22 0a 20 20 20 20 73 65 74 20 73 32 20 5b 24 74 ". set s2 [$t
4e310 65 78 74 20 69 6e 64 65 78 20 22 24 73 32 2b 33 ext index "$s2+3
4e320 63 22 5d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 c"]. . if
4e330 7b 20 5b 24 74 65 78 74 20 67 65 74 20 22 24 73 { [$text get "$s
4e340 32 20 2d 31 63 22 5d 20 6e 65 20 22 5c 22 22 20 2 -1c"] ne "\""
4e350 7c 7c 20 5b 24 74 65 78 74 20 63 6f 6d 70 61 72 || [$text compar
4e360 65 20 22 24 73 31 2b 34 63 22 20 3d 3d 20 24 73 e "$s1+4c" == $s
4e370 32 5d 20 7d 20 7b 0a 09 24 74 65 78 74 20 69 6e 2] } {..$text in
4e380 73 65 72 74 20 24 73 32 20 7b 22 7d 0a 09 73 65 sert $s2 {"}..se
4e390 74 20 73 32 20 5b 24 74 65 78 74 20 69 6e 64 65 t s2 [$text inde
4e3a0 78 20 22 24 73 32 2b 31 63 22 5d 0a 20 20 20 20 x "$s2+1c"].
4e3b0 7d 0a 20 20 20 20 24 74 65 78 74 20 69 6e 73 65 }. $text inse
4e3c0 72 74 20 24 73 32 20 22 5c 5d 22 0a 20 20 20 20 rt $s2 "\]".
4e3d0 24 74 65 78 74 20 6d 61 72 6b 20 73 65 74 20 69 $text mark set i
4e3e0 6e 73 65 72 74 20 22 24 73 32 2d 31 63 22 0a 20 nsert "$s2-1c".
4e3f0 20 20 20 0a 20 20 20 20 24 74 65 78 74 20 73 65 . $text se
4e400 65 20 69 6e 73 65 72 74 0a 20 20 20 20 24 74 65 e insert. $te
4e410 78 74 20 65 64 69 74 20 73 65 70 61 72 61 74 6f xt edit separato
4e420 72 0a 20 20 20 20 69 66 20 7b 24 6f 6c 64 53 65 r. if {$oldSe
4e430 70 61 72 61 74 6f 72 7d 20 7b 0a 09 24 74 65 78 parator} {..$tex
4e440 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 61 75 74 t configure -aut
4e450 6f 73 65 70 61 72 61 74 6f 72 73 20 31 0a 20 20 oseparators 1.
4e460 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 }.}..proc RamD
4e470 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c ebugger::OpenFil
4e480 65 49 6e 4e 65 77 57 69 6e 64 6f 77 20 7b 20 61 eInNewWindow { a
4e490 72 67 73 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 rgs } {. vari
4e4a0 61 62 6c 65 20 69 6e 66 6f 5f 73 63 72 69 70 74 able info_script
4e4b0 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 65 . variable te
4e4c0 78 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 xt. variable
4e4d0 6f 70 74 69 6f 6e 73 0a 20 20 20 20 0a 20 20 20 options. .
4e4e0 20 73 65 74 20 6f 70 74 69 6f 6e 61 6c 20 7b 0a set optional {.
4e4f0 09 7b 20 2d 61 73 6b 5f 66 6f 72 5f 66 69 6c 65 .{ -ask_for_file
4e500 20 62 6f 6f 6c 65 61 6e 20 31 20 7d 0a 20 20 20 boolean 1 }.
4e510 20 7d 0a 20 20 20 20 73 65 74 20 63 6f 6d 70 75 }. set compu
4e520 6c 73 6f 72 79 20 22 22 0a 20 20 20 20 70 61 72 lsory "". par
4e530 73 65 5f 61 72 67 73 20 24 6f 70 74 69 6f 6e 61 se_args $optiona
4e540 6c 20 24 63 6f 6d 70 75 6c 73 6f 72 79 20 24 61 l $compulsory $a
4e550 72 67 73 0a 0a 0a 20 20 20 20 73 65 74 20 77 20 rgs... set w
4e560 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c 20 [winfo toplevel
4e570 24 74 65 78 74 5d 0a 20 20 20 20 73 65 74 20 67 $text]. set g
4e580 65 6f 6d 6b 65 79 20 6d 61 69 6e 67 65 6f 6d 65 eomkey maingeome
4e590 74 72 79 5f 6e 65 77 77 69 6e 5f 24 6f 70 74 69 try_newwin_$opti
4e5a0 6f 6e 73 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 ons(ViewOnlyText
4e5b0 4f 72 41 6c 6c 29 0a 20 20 20 20 69 66 20 7b 20 OrAll). if {
4e5c0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f 70 74 [info exists opt
4e5d0 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 5d 20 ions($geomkey)]
4e5e0 7d 20 7b 0a 09 73 65 74 20 67 65 6f 6d 65 74 72 } {..set geometr
4e5f0 79 20 24 6f 70 74 69 6f 6e 73 28 24 67 65 6f 6d y $options($geom
4e600 6b 65 79 29 0a 20 20 20 20 7d 20 65 6c 73 65 20 key). } else
4e610 7b 0a 09 61 70 70 65 6e 64 20 67 65 6f 6d 65 74 {..append geomet
4e620 72 79 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f ry [expr {[winfo
4e630 20 77 69 64 74 68 20 24 77 5d 2d 34 30 7d 5d 78 width $w]-40}]x
4e640 20 5c 0a 09 20 20 20 20 5b 65 78 70 72 20 7b 5b \.. [expr {[
4e650 77 69 6e 66 6f 20 68 65 69 67 68 74 20 24 77 5d winfo height $w]
4e660 2d 34 30 7d 5d 2b 20 5c 0a 09 20 20 20 20 5b 65 -40}]+ \.. [e
4e670 78 70 72 20 7b 5b 77 69 6e 66 6f 20 72 6f 6f 74 xpr {[winfo root
4e680 78 20 24 77 5d 2b 34 30 7d 5d 2b 20 5c 0a 09 20 x $w]+40}]+ \..
4e690 20 20 20 5b 65 78 70 72 20 7b 5b 77 69 6e 66 6f [expr {[winfo
4e6a0 20 72 6f 6f 74 79 20 24 77 5d 2b 34 30 7d 5d 0a rooty $w]+40}].
4e6b0 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 69 64 }. set id
4e6c0 78 20 32 0a 20 20 20 20 77 68 69 6c 65 20 7b 20 x 2. while {
4e6d0 5b 69 6e 74 65 72 70 20 65 78 69 73 74 73 20 72 [interp exists r
4e6e0 61 6d 64 65 62 75 67 67 65 72 24 69 64 78 5d 20 amdebugger$idx]
4e6f0 7d 20 7b 20 69 6e 63 72 20 69 64 78 20 7d 0a 20 } { incr idx }.
4e700 20 20 20 73 65 74 20 69 70 20 72 61 6d 64 65 62 set ip ramdeb
4e710 75 67 67 65 72 24 69 64 78 0a 20 20 20 20 69 6e ugger$idx. in
4e720 74 65 72 70 20 63 72 65 61 74 65 20 24 69 70 0a terp create $ip.
4e730 20 20 20 20 63 61 74 63 68 20 7b 20 24 69 70 20 catch { $ip
4e740 65 76 61 6c 20 70 61 63 6b 61 67 65 20 72 65 71 eval package req
4e750 75 69 72 65 20 74 6b 64 6e 64 20 7d 20 3b 23 20 uire tkdnd } ;#
4e760 6f 6e 6c 79 20 69 66 20 69 74 20 69 73 20 63 6f only if it is co
4e770 6d 70 69 6c 65 64 0a 20 20 20 20 24 69 70 20 65 mpiled. $ip e
4e780 76 61 6c 20 5b 6c 69 73 74 20 73 65 74 20 61 75 val [list set au
4e790 74 6f 5f 70 61 74 68 20 24 3a 3a 61 75 74 6f 5f to_path $::auto_
4e7a0 70 61 74 68 5d 0a 20 20 20 20 24 69 70 20 65 76 path]. $ip ev
4e7b0 61 6c 20 5b 6c 69 73 74 20 73 65 74 20 61 72 67 al [list set arg
4e7c0 76 30 20 24 3a 3a 61 72 67 76 30 5d 0a 20 20 20 v0 $::argv0].
4e7d0 20 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 $ip eval [list
4e7e0 73 65 74 20 61 72 67 63 20 30 5d 0a 20 20 20 20 set argc 0].
4e7f0 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 73 $ip eval [list s
4e800 65 74 20 61 72 67 76 20 5b 6c 69 73 74 20 2d 72 et argv [list -r
4e810 67 65 6f 6d 65 74 72 79 20 24 67 65 6f 6d 65 74 geometry $geomet
4e820 72 79 20 2d 6e 6f 70 72 65 66 73 77 72 69 74 65 ry -noprefswrite
4e830 20 5c 0a 09 09 2d 6e 6f 6f 70 65 6e 64 65 66 61 \...-noopendefa
4e840 75 6c 74 5d 5d 0a 20 20 20 20 69 6e 74 65 72 70 ult]]. interp
4e850 20 61 6c 69 61 73 20 24 69 70 20 65 78 69 74 20 alias $ip exit
4e860 22 22 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a "" RamDebugger::
4e870 4f 70 65 6e 46 69 6c 65 49 6e 4e 65 77 57 69 6e OpenFileInNewWin
4e880 64 6f 77 5f 65 78 69 74 20 24 69 70 0a 20 20 20 dow_exit $ip.
4e890 20 23 20 74 72 79 69 6e 67 20 62 6f 74 68 20 77 # trying both w
4e8a0 61 79 73 20 6f 66 20 6c 6f 61 64 69 6e 67 20 54 ays of loading T
4e8b0 6b 20 62 65 63 61 75 73 65 20 74 68 65 79 20 64 k because they d
4e8c0 65 70 65 6e 64 20 6f 6e 20 73 79 73 74 65 6d 20 epend on system
4e8d0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 20 20 configuration.
4e8e0 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 set err [catch
4e8f0 20 7b 20 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 { $ip eval [lis
4e900 74 20 6c 6f 61 64 20 7b 7d 20 54 6b 5d 20 7d 5d t load {} Tk] }]
4e910 0a 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d . if { $err }
4e920 20 7b 0a 09 24 69 70 20 65 76 61 6c 20 5b 6c 69 {..$ip eval [li
4e930 73 74 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 st package requi
4e940 72 65 20 54 6b 5d 0a 20 20 20 20 7d 0a 20 20 20 re Tk]. }.
4e950 20 24 69 70 20 65 76 61 6c 20 5b 6c 69 73 74 20 $ip eval [list
4e960 73 6f 75 72 63 65 20 24 69 6e 66 6f 5f 73 63 72 source $info_scr
4e970 69 70 74 5d 0a 20 20 20 20 24 69 70 20 65 76 61 ipt]. $ip eva
4e980 6c 20 5b 6c 69 73 74 20 61 72 72 61 79 20 73 65 l [list array se
4e990 74 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f t RamDebugger::o
4e9a0 70 74 69 6f 6e 73 20 5b 61 72 72 61 79 20 67 65 ptions [array ge
4e9b0 74 20 6f 70 74 69 6f 6e 73 5d 5d 0a 20 20 20 20 t options]].
4e9c0 69 66 20 7b 20 24 61 73 6b 5f 66 6f 72 5f 66 69 if { $ask_for_fi
4e9d0 6c 65 20 7d 20 7b 0a 09 24 69 70 20 65 76 61 6c le } {..$ip eval
4e9e0 20 5b 6c 69 73 74 20 61 66 74 65 72 20 31 30 30 [list after 100
4e9f0 20 5b 6c 69 73 74 20 52 61 6d 44 65 62 75 67 67 [list RamDebugg
4ea00 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 5d 5d 0a 20 er::OpenFile]].
4ea10 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 }. return
4ea20 24 69 70 0a 7d 0a 0a 70 72 6f 63 20 52 61 6d 44 $ip.}..proc RamD
4ea30 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c ebugger::OpenFil
4ea40 65 49 6e 4e 65 77 57 69 6e 64 6f 77 5f 65 78 69 eInNewWindow_exi
4ea50 74 20 7b 20 69 70 20 7d 20 7b 0a 20 20 20 20 76 t { ip } {. v
4ea60 61 72 69 61 62 6c 65 20 6f 70 74 69 6f 6e 73 0a ariable options.
4ea70 0a 20 20 20 20 73 65 74 20 67 65 6f 6d 6b 65 79 . set geomkey
4ea80 20 6d 61 69 6e 67 65 6f 6d 65 74 72 79 5f 6e 65 maingeometry_ne
4ea90 77 77 69 6e 5f 5b 24 69 70 20 65 76 61 6c 20 5b wwin_[$ip eval [
4eaa0 6c 69 73 74 20 73 65 74 20 6f 70 74 69 6f 6e 73 list set options
4eab0 28 56 69 65 77 4f 6e 6c 79 54 65 78 74 4f 72 41 (ViewOnlyTextOrA
4eac0 6c 6c 29 5d 5d 0a 20 20 20 20 73 65 74 20 6f 70 ll)]]. set op
4ead0 74 69 6f 6e 73 28 24 67 65 6f 6d 6b 65 79 29 20 tions($geomkey)
4eae0 5b 24 69 70 20 65 76 61 6c 20 7b 0a 09 20 20 20 [$ip eval {..
4eaf0 20 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 74 6f set w [winfo to
4eb00 70 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a 09 20 plevel $text]..
4eb10 20 20 20 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 if { $::tcl_p
4eb20 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d latform(platform
4eb30 29 20 65 71 20 22 77 69 6e 64 6f 77 73 22 20 26 ) eq "windows" &
4eb40 26 20 5b 77 6d 20 73 74 61 74 65 20 24 77 5d 20 & [wm state $w]
4eb50 65 71 20 22 7a 6f 6f 6d 65 64 22 20 7d 20 7b 0a eq "zoomed" } {.
4eb60 09 09 73 65 74 20 7a 6f 6f 6d 65 64 20 31 0a 09 ..set zoomed 1..
4eb70 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 21 } elseif { !
4eb80 5b 63 61 74 63 68 20 7b 20 77 6d 20 61 74 74 72 [catch { wm attr
4eb90 69 62 75 74 65 73 20 24 77 20 2d 7a 6f 6f 6d 65 ibutes $w -zoome
4eba0 64 20 7d 20 72 65 74 5d 20 26 26 20 24 72 65 74 d } ret] && $ret
4ebb0 20 7d 20 7b 0a 09 09 73 65 74 20 7a 6f 6f 6d 65 } {...set zoome
4ebc0 64 20 31 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 d 1.. } else
4ebd0 7b 0a 09 09 73 65 74 20 7a 6f 6f 6d 65 64 20 30 {...set zoomed 0
4ebe0 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 .. }.. if
4ebf0 7b 20 24 7a 6f 6f 6d 65 64 20 7d 20 7b 0a 09 09 { $zoomed } {...
4ec00 73 65 74 20 72 65 74 20 7a 6f 6f 6d 65 64 0a 09 set ret zoomed..
4ec10 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 } else {...s
4ec20 65 74 20 72 65 74 20 5b 63 75 3a 3a 67 69 76 65 et ret [cu::give
4ec30 5f 77 69 6e 64 6f 77 5f 67 65 6f 6d 65 74 72 79 _window_geometry
4ec40 20 24 77 5d 0a 09 20 20 20 20 7d 0a 09 7d 5d 20 $w].. }..}]
4ec50 0a 20 20 20 20 69 6e 74 65 72 70 20 64 65 6c 65 . interp dele
4ec60 74 65 20 24 69 70 0a 7d 0a 0a 70 72 6f 63 20 52 te $ip.}..proc R
4ec70 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 6e amDebugger::Open
4ec80 44 65 66 61 75 6c 74 46 69 6c 65 20 7b 7d 20 7b DefaultFile {} {
4ec90 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6f 70 . variable op
4eca0 74 69 6f 6e 73 0a 20 20 20 20 76 61 72 69 61 62 tions. variab
4ecb0 6c 65 20 74 65 78 74 0a 0a 20 20 20 20 69 66 20 le text.. if
4ecc0 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6f { [info exists o
4ecd0 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 ptions(currentfi
4ece0 6c 65 29 5d 20 26 26 20 24 6f 70 74 69 6f 6e 73 le)] && $options
4ecf0 28 63 75 72 72 65 6e 74 66 69 6c 65 29 20 21 3d (currentfile) !=
4ed00 20 22 22 20 20 26 26 20 5c 0a 09 20 20 20 20 20 "" && \..
4ed10 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 6f 70 [file exists $op
4ed20 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c tions(currentfil
4ed30 65 29 5d 20 7d 20 7b 0a 09 53 65 74 4d 65 73 73 e)] } {..SetMess
4ed40 61 67 65 20 5b 5f 20 22 4f 70 65 6e 69 6e 67 20 age [_ "Opening
4ed50 66 69 6c 65 20 27 25 73 27 22 20 24 6f 70 74 69 file '%s'" $opti
4ed60 6f 6e 73 28 63 75 72 72 65 6e 74 66 69 6c 65 29 ons(currentfile)
4ed70 5d 2e 2e 2e 0a 09 4f 70 65 6e 46 69 6c 65 46 20 ].....OpenFileF
4ed80 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 $options(current
4ed90 66 69 6c 65 29 0a 09 46 69 6c 6c 4c 69 73 74 42 file)..FillListB
4eda0 6f 78 0a 09 0a 09 69 66 20 7b 20 5b 69 6e 66 6f ox....if { [info
4edb0 20 65 78 69 73 74 73 20 6f 70 74 69 6f 6e 73 28 exists options(
4edc0 63 75 72 72 65 6e 74 69 64 78 29 5d 20 7d 20 7b currentidx)] } {
4edd0 0a 09 20 20 20 20 24 74 65 78 74 20 73 65 65 20 .. $text see
4ede0 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 $options(current
4edf0 69 64 78 29 0a 09 20 20 20 20 24 74 65 78 74 20 idx).. $text
4ee00 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74 20 mark set insert
4ee10 24 6f 70 74 69 6f 6e 73 28 63 75 72 72 65 6e 74 $options(current
4ee20 69 64 78 29 0a 09 7d 0a 09 53 65 74 4d 65 73 73 idx)..}..SetMess
4ee30 61 67 65 20 22 22 0a 20 20 20 20 7d 0a 7d 0a 0a age "". }.}..
4ee40 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 if { ![info exis
4ee50 74 73 20 53 6b 69 70 52 61 6d 44 65 62 75 67 67 ts SkipRamDebugg
4ee60 65 72 49 6e 69 74 5d 20 7d 20 7b 0a 20 20 20 20 erInit] } {.
4ee70 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 if { [info comma
4ee80 6e 64 73 20 6d 61 73 74 65 72 5d 20 21 3d 20 22 nds master] != "
4ee90 22 20 7d 20 7b 0a 09 73 65 74 20 72 65 67 69 73 " } {..set regis
4eea0 74 65 72 61 73 72 65 6d 6f 74 65 20 30 0a 20 20 terasremote 0.
4eeb0 20 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 72 } else { set r
4eec0 65 67 69 73 74 65 72 61 73 72 65 6d 6f 74 65 20 egisterasremote
4eed0 31 20 7d 0a 20 20 20 20 0a 20 20 20 20 69 66 20 1 }. . if
4eee0 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 { $::tcl_platfor
4eef0 6d 28 6f 73 29 20 65 71 20 22 44 61 72 77 69 6e m(os) eq "Darwin
4ef00 22 20 7d 20 7b 0a 09 69 66 20 7b 5b 73 74 72 69 " } {..if {[stri
4ef10 6e 67 20 66 69 72 73 74 20 22 2d 70 73 6e 22 20 ng first "-psn"
4ef20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 30 5d [lindex $argv 0]
4ef30 5d 20 3d 3d 20 30 7d 20 7b 0a 09 20 20 20 20 73 ] == 0} {.. s
4ef40 65 74 20 61 72 67 76 20 5b 6c 72 61 6e 67 65 20 et argv [lrange
4ef50 24 61 72 67 76 20 31 20 65 6e 64 5d 0a 09 7d 0a $argv 1 end]..}.
4ef60 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 72 65 }. set re
4ef70 61 64 77 72 69 74 65 70 72 65 66 73 20 79 65 73 adwriteprefs yes
4ef80 0a 20 20 20 20 69 66 20 7b 20 5b 73 65 74 20 69 . if { [set i
4ef90 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 24 61 72 pos [lsearch $ar
4efa0 67 76 20 22 2d 6e 6f 70 72 65 66 73 22 5d 5d 20 gv "-noprefs"]]
4efb0 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 72 != -1 } {..set r
4efc0 65 61 64 77 72 69 74 65 70 72 65 66 73 20 6e 6f eadwriteprefs no
4efd0 72 65 61 64 77 72 69 74 65 0a 09 73 65 74 20 61 readwrite..set a
4efe0 72 67 76 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 rgv [lreplace $a
4eff0 72 67 76 20 24 69 70 6f 73 20 24 69 70 6f 73 5d rgv $ipos $ipos]
4f000 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
4f010 5b 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 [set ipos [lsear
4f020 63 68 20 24 61 72 67 76 20 22 2d 6e 6f 70 72 65 ch $argv "-nopre
4f030 66 73 77 72 69 74 65 22 5d 5d 20 21 3d 20 2d 31 fswrite"]] != -1
4f040 20 7d 20 7b 0a 09 73 65 74 20 72 65 61 64 77 72 } {..set readwr
4f050 69 74 65 70 72 65 66 73 20 6e 6f 77 72 69 74 65 iteprefs nowrite
4f060 0a 09 73 65 74 20 61 72 67 76 20 5b 6c 72 65 70 ..set argv [lrep
4f070 6c 61 63 65 20 24 61 72 67 76 20 24 69 70 6f 73 lace $argv $ipos
4f080 20 24 69 70 6f 73 5d 0a 20 20 20 20 7d 0a 20 20 $ipos]. }.
4f090 20 20 73 65 74 20 70 72 65 66 73 5f 67 72 6f 75 set prefs_grou
4f0a0 70 20 22 22 0a 20 20 20 20 69 66 20 7b 20 5b 73 p "". if { [s
4f0b0 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 et ipos [lsearch
4f0c0 20 24 61 72 67 76 20 22 2d 70 72 65 66 73 5f 67 $argv "-prefs_g
4f0d0 72 6f 75 70 22 5d 5d 20 21 3d 20 2d 31 20 7d 20 roup"]] != -1 }
4f0e0 7b 0a 09 73 65 74 20 70 72 65 66 73 5f 67 72 6f {..set prefs_gro
4f0f0 75 70 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 up [lindex $argv
4f100 20 24 69 70 6f 73 2b 31 5d 0a 09 73 65 74 20 61 $ipos+1]..set a
4f110 72 67 76 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 rgv [lreplace $a
4f120 72 67 76 20 24 69 70 6f 73 20 24 69 70 6f 73 2b rgv $ipos $ipos+
4f130 31 5d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 1]. }. if
4f140 7b 20 5b 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 { [set ipos [lse
4f150 61 72 63 68 20 24 61 72 67 76 20 22 2d 6f 6e 6c arch $argv "-onl
4f160 79 74 65 78 74 22 5d 5d 20 21 3d 20 2d 31 20 7d ytext"]] != -1 }
4f170 20 7b 0a 09 73 65 74 20 56 69 65 77 4f 6e 6c 79 {..set ViewOnly
4f180 54 65 78 74 4f 72 41 6c 6c 20 4f 6e 6c 79 54 65 TextOrAll OnlyTe
4f190 78 74 0a 09 73 65 74 20 61 72 67 76 20 5b 6c 72 xt..set argv [lr
4f1a0 65 70 6c 61 63 65 20 24 61 72 67 76 20 24 69 70 eplace $argv $ip
4f1b0 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 7d 20 os $ipos]. }
4f1c0 65 6c 73 65 20 7b 20 73 65 74 20 56 69 65 77 4f else { set ViewO
4f1d0 6e 6c 79 54 65 78 74 4f 72 41 6c 6c 20 22 22 20 nlyTextOrAll ""
4f1e0 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 65 74 20 }. if { [set
4f1f0 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 24 61 ipos [lsearch $a
4f200 72 67 76 20 22 2d 6e 6f 6f 70 65 6e 64 65 66 61 rgv "-noopendefa
4f210 75 6c 74 22 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b ult"]] != -1 } {
4f220 0a 09 73 65 74 20 6f 70 65 6e 64 65 66 61 75 6c ..set opendefaul
4f230 74 20 30 0a 09 73 65 74 20 61 72 67 76 20 5b 6c t 0..set argv [l
4f240 72 65 70 6c 61 63 65 20 24 61 72 67 76 20 24 69 replace $argv $i
4f250 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 20 7d pos $ipos]. }
4f260 20 65 6c 73 65 20 7b 20 73 65 74 20 6f 70 65 6e else { set open
4f270 64 65 66 61 75 6c 74 20 31 20 7d 0a 0a 20 20 20 default 1 }..
4f280 20 69 66 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 if { [set ipos
4f290 5b 6c 73 65 61 72 63 68 20 24 61 72 67 76 20 22 [lsearch $argv "
4f2a0 2d 72 67 65 6f 6d 2a 22 5d 5d 20 21 3d 20 2d 31 -rgeom*"]] != -1
4f2b0 20 7d 20 7b 0a 09 73 65 74 20 69 70 6f 73 6d 31 } {..set iposm1
4f2c0 20 5b 65 78 70 72 20 7b 24 69 70 6f 73 2b 31 7d [expr {$ipos+1}
4f2d0 5d 0a 09 73 65 74 20 67 65 6f 6d 65 74 72 79 20 ]..set geometry
4f2e0 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 24 69 [lindex $argv $i
4f2f0 70 6f 73 6d 31 5d 0a 09 73 65 74 20 61 72 67 76 posm1]..set argv
4f300 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 67 76 [lreplace $argv
4f310 20 24 69 70 6f 73 20 24 69 70 6f 73 6d 31 5d 0a $ipos $iposm1].
4f320 09 69 66 20 7b 20 24 67 65 6f 6d 65 74 72 79 20 .if { $geometry
4f330 65 71 20 22 2d 22 20 7d 20 7b 0a 09 20 20 20 20 eq "-" } {..
4f340 73 65 74 20 67 65 6f 6d 65 74 72 79 20 22 22 0a set geometry "".
4f350 09 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a .}. } else {.
4f360 09 73 65 74 20 67 65 6f 6d 65 74 72 79 20 22 22 .set geometry ""
4f370 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 . }. .
4f380 69 66 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 5b if { [set ipos [
4f390 6c 73 65 61 72 63 68 20 24 61 72 67 76 20 22 2d lsearch $argv "-
4f3a0 72 75 73 65 22 5d 5d 20 21 3d 20 2d 31 20 7d 20 ruse"]] != -1 }
4f3b0 7b 0a 09 73 65 74 20 69 70 6f 73 6d 31 20 5b 65 {..set iposm1 [e
4f3c0 78 70 72 20 7b 24 69 70 6f 73 2b 31 7d 5d 0a 09 xpr {$ipos+1}]..
4f3d0 73 65 74 20 74 6f 70 6c 65 76 65 6c 75 73 65 20 set topleveluse
4f3e0 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 24 69 [lindex $argv $i
4f3f0 70 6f 73 6d 31 5d 0a 09 73 65 74 20 61 72 67 76 posm1]..set argv
4f400 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 67 76 [lreplace $argv
4f410 20 24 69 70 6f 73 20 24 69 70 6f 73 6d 31 5d 0a $ipos $iposm1].
4f420 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 } else {..se
4f430 74 20 74 6f 70 6c 65 76 65 6c 75 73 65 20 22 22 t topleveluse ""
4f440 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 . }. if {
4f450 5b 73 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 [set ipos [lsear
4f460 63 68 20 24 61 72 67 76 20 22 2d 66 6f 6e 74 5f ch $argv "-font_
4f470 69 6e 63 72 65 61 73 65 5f 64 65 63 72 65 61 73 increase_decreas
4f480 65 22 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 e"]] != -1 } {..
4f490 73 65 74 20 69 70 6f 73 6d 31 20 5b 65 78 70 72 set iposm1 [expr
4f4a0 20 7b 24 69 70 6f 73 2b 31 7d 5d 0a 09 73 65 74 {$ipos+1}]..set
4f4b0 20 66 6f 6e 74 5f 69 6e 63 72 65 61 73 65 5f 64 font_increase_d
4f4c0 65 63 72 65 61 73 65 20 5b 6c 69 6e 64 65 78 20 ecrease [lindex
4f4d0 24 61 72 67 76 20 24 69 70 6f 73 6d 31 5d 0a 09 $argv $iposm1]..
4f4e0 73 65 74 20 61 72 67 76 20 5b 6c 72 65 70 6c 61 set argv [lrepla
4f4f0 63 65 20 24 61 72 67 76 20 24 69 70 6f 73 20 24 ce $argv $ipos $
4f500 69 70 6f 73 6d 31 5d 0a 20 20 20 20 7d 20 65 6c iposm1]. } el
4f510 73 65 20 7b 0a 09 73 65 74 20 66 6f 6e 74 5f 69 se {..set font_i
4f520 6e 63 72 65 61 73 65 5f 64 65 63 72 65 61 73 65 ncrease_decrease
4f530 20 22 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 "". }. if
4f540 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 5b 6c 73 { [set ipos [ls
4f550 65 61 72 63 68 20 24 61 72 67 76 20 22 2d 62 69 earch $argv "-bi
4f560 67 5f 69 63 6f 6e 73 22 5d 5d 20 21 3d 20 2d 31 g_icons"]] != -1
4f570 20 7d 20 7b 0a 09 73 65 74 20 69 70 6f 73 6d 31 } {..set iposm1
4f580 20 5b 65 78 70 72 20 7b 24 69 70 6f 73 2b 31 7d [expr {$ipos+1}
4f590 5d 0a 09 73 65 74 20 62 69 67 5f 69 63 6f 6e 73 ]..set big_icons
4f5a0 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 24 [lindex $argv $
4f5b0 69 70 6f 73 6d 31 5d 0a 09 73 65 74 20 61 72 67 iposm1]..set arg
4f5c0 76 20 5b 6c 72 65 70 6c 61 63 65 20 24 61 72 67 v [lreplace $arg
4f5d0 76 20 24 69 70 6f 73 20 24 69 70 6f 73 6d 31 5d v $ipos $iposm1]
4f5e0 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 73 . } else {..s
4f5f0 65 74 20 62 69 67 5f 69 63 6f 6e 73 20 30 0a 20 et big_icons 0.
4f600 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 73 }. if { [s
4f610 65 74 20 69 70 6f 73 20 5b 6c 73 65 61 72 63 68 et ipos [lsearch
4f620 20 24 61 72 67 76 20 22 2d 63 6c 61 73 73 5f 6e $argv "-class_n
4f630 61 6d 65 22 5d 5d 20 21 3d 20 2d 31 20 7d 20 7b ame"]] != -1 } {
4f640 0a 09 73 65 74 20 69 70 6f 73 6d 31 20 5b 65 78 ..set iposm1 [ex
4f650 70 72 20 7b 24 69 70 6f 73 2b 31 7d 5d 0a 09 73 pr {$ipos+1}]..s
4f660 65 74 20 63 6c 61 73 73 4e 61 6d 65 20 5b 6c 69 et className [li
4f670 6e 64 65 78 20 24 61 72 67 76 20 24 69 70 6f 73 ndex $argv $ipos
4f680 6d 31 5d 0a 09 73 65 74 20 61 72 67 76 20 5b 6c m1]..set argv [l
4f690 72 65 70 6c 61 63 65 20 24 61 72 67 76 20 24 69 replace $argv $i
4f6a0 70 6f 73 20 24 69 70 6f 73 6d 31 5d 0a 20 20 20 pos $iposm1].
4f6b0 20 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 63 } else {..set c
4f6c0 6c 61 73 73 4e 61 6d 65 20 52 61 6d 44 65 62 75 lassName RamDebu
4f6d0 67 67 65 72 0a 20 20 20 20 7d 0a 20 20 20 20 69 gger. }. i
4f6e0 66 20 7b 20 5b 73 65 74 20 69 70 6f 73 20 5b 6c f { [set ipos [l
4f6f0 73 65 61 72 63 68 20 24 61 72 67 76 20 22 2d 63 search $argv "-c
4f700 68 65 63 6b 5f 72 65 6d 6f 74 65 73 22 5d 5d 20 heck_remotes"]]
4f710 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 65 74 20 69 != -1 } {..set i
4f720 70 6f 73 6d 31 20 5b 65 78 70 72 20 7b 24 69 70 posm1 [expr {$ip
4f730 6f 73 2b 31 7d 5d 0a 09 73 65 74 20 63 68 65 63 os+1}]..set chec
4f740 6b 5f 72 65 6d 6f 74 65 73 20 5b 6c 69 6e 64 65 k_remotes [linde
4f750 78 20 24 61 72 67 76 20 24 69 70 6f 73 6d 31 5d x $argv $iposm1]
4f760 0a 09 73 65 74 20 61 72 67 76 20 5b 6c 72 65 70 ..set argv [lrep
4f770 6c 61 63 65 20 24 61 72 67 76 20 24 69 70 6f 73 lace $argv $ipos
4f780 20 24 69 70 6f 73 6d 31 5d 0a 20 20 20 20 7d 20 $iposm1]. }
4f790 65 6c 73 65 20 7b 0a 09 73 65 74 20 63 68 65 63 else {..set chec
4f7a0 6b 5f 72 65 6d 6f 74 65 73 20 31 0a 20 20 20 20 k_remotes 1.
4f7b0 7d 0a 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 }.. RamDebugg
4f7c0 65 72 3a 3a 49 6e 69 74 20 24 72 65 61 64 77 72 er::Init $readwr
4f7d0 69 74 65 70 72 65 66 73 20 24 70 72 65 66 73 5f iteprefs $prefs_
4f7e0 67 72 6f 75 70 20 24 72 65 67 69 73 74 65 72 61 group $registera
4f7f0 73 72 65 6d 6f 74 65 20 24 62 69 67 5f 69 63 6f sremote $big_ico
4f800 6e 73 20 24 63 68 65 63 6b 5f 72 65 6d 6f 74 65 ns $check_remote
4f810 73 0a 09 0a 20 20 20 20 0a 20 20 20 20 23 23 23 s... . ###
4f820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f830 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f850 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f860 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
4f870 20 20 23 20 20 20 20 20 49 6e 69 74 20 74 68 65 # Init the
4f880 20 47 55 49 20 70 61 72 74 0a 20 20 20 20 23 23 GUI part. ##
4f890 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f8a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f8b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f8c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4f8d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 ##############.
4f8e0 20 20 20 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e . if { [in
4f8f0 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 77 6d 5d 20 fo commands wm]
4f900 21 3d 20 22 22 20 26 26 20 5b 69 6e 66 6f 20 63 != "" && [info c
4f910 6f 6d 6d 61 6e 64 73 20 74 6b 63 6f 6e 5f 70 75 ommands tkcon_pu
4f920 74 73 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 77 ts] == "" } {..w
4f930 6d 20 77 69 74 68 64 72 61 77 20 2e 0a 0a 09 52 m withdraw ....R
4f940 61 6d 44 65 62 75 67 67 65 72 3a 3a 49 6e 69 74 amDebugger::Init
4f950 47 55 49 20 2e 67 75 69 20 24 67 65 6f 6d 65 74 GUI .gui $geomet
4f960 72 79 20 24 56 69 65 77 4f 6e 6c 79 54 65 78 74 ry $ViewOnlyText
4f970 4f 72 41 6c 6c 20 24 74 6f 70 6c 65 76 65 6c 75 OrAll $toplevelu
4f980 73 65 0a 0a 09 69 66 20 7b 20 24 66 6f 6e 74 5f se...if { $font_
4f990 69 6e 63 72 65 61 73 65 5f 64 65 63 72 65 61 73 increase_decreas
4f9a0 65 20 6e 69 20 5b 6c 69 73 74 20 22 22 20 22 2d e ni [list "" "-
4f9b0 22 5d 20 7d 20 7b 0a 09 20 20 20 20 52 61 6d 44 "] } {.. RamD
4f9c0 65 62 75 67 67 65 72 3a 3a 69 6e 63 72 65 61 73 ebugger::increas
4f9d0 65 5f 64 65 63 72 65 61 73 65 5f 74 65 78 74 5f e_decrease_text_
4f9e0 66 6f 6e 74 20 24 66 6f 6e 74 5f 69 6e 63 72 65 font $font_incre
4f9f0 61 73 65 5f 64 65 63 72 65 61 73 65 0a 09 7d 0a ase_decrease..}.
4fa00 0a 09 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 ..if { [llength
4fa10 24 61 72 67 76 5d 20 7d 20 7b 0a 09 20 20 20 20 $argv] } {..
4fa20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4f 70 65 RamDebugger::Ope
4fa30 6e 46 69 6c 65 46 20 5b 66 69 6c 65 20 6e 6f 72 nFileF [file nor
4fa40 6d 61 6c 69 7a 65 20 5b 6c 69 6e 64 65 78 20 24 malize [lindex $
4fa50 61 72 67 76 20 30 5d 5d 0a 09 7d 20 65 6c 73 65 argv 0]]..} else
4fa60 69 66 20 7b 20 24 6f 70 65 6e 64 65 66 61 75 6c if { $opendefaul
4fa70 74 20 7d 20 7b 0a 09 20 20 20 20 52 61 6d 44 65 t } {.. RamDe
4fa80 62 75 67 67 65 72 3a 3a 4f 70 65 6e 44 65 66 61 bugger::OpenDefa
4fa90 75 6c 74 46 69 6c 65 0a 09 7d 0a 09 70 72 6f 63 ultFile..}..proc
4faa0 20 52 65 6c 6f 61 64 53 63 72 69 70 74 20 7b 7d ReloadScript {}
4fab0 20 7b 0a 09 20 20 20 20 73 6f 75 72 63 65 20 5b {.. source [
4fac0 69 6e 66 6f 20 73 63 72 69 70 74 5d 0a 09 20 20 info script]..
4fad0 20 20 57 61 72 6e 57 69 6e 20 5b 5f 20 22 52 65 WarnWin [_ "Re
4fae0 6c 6f 61 64 22 5d 0a 09 7d 0a 09 62 69 6e 64 20 load"]..}..bind
4faf0 61 6c 6c 20 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d all <$::control-
4fb00 78 3e 3c 24 3a 3a 63 6f 6e 74 72 6f 6c 2d 6c 3e x><$::control-l>
4fb10 20 52 65 6c 6f 61 64 53 63 72 69 70 74 0a 09 0a ReloadScript...
4fb20 09 69 66 20 7b 20 5b 69 6e 66 6f 20 63 6f 6d 6d .if { [info comm
4fb30 61 6e 64 73 20 6d 61 73 74 65 72 5d 20 21 3d 20 ands master] !=
4fb40 22 22 20 7d 20 7b 0a 09 20 20 20 20 23 52 61 6d "" } {.. #Ram
4fb50 44 65 62 75 67 67 65 72 3a 3a 72 64 65 62 75 67 Debugger::rdebug
4fb60 20 2d 6d 61 73 74 65 72 0a 09 7d 0a 20 20 20 20 -master..}.
4fb70 7d 0a 7d 20 0a 20 20 20 20 0a }.} . .