Hex Artifact Content
Not logged in

Artifact b4f2d71b1d2898257906a1cbace7ccc138b32eaf:


0000: 23 21 2f 75 73 72 2f 6c 6f 63 61 6c 2f 62 69 6e  #!/usr/local/bin
0010: 2f 74 63 6c 73 68 0a 23 0a 23 20 46 49 4c 45 3a  /tclsh.#.# FILE:
0020: 20 22 2f 68 6f 6d 65 2f 6a 6f 7a 65 2f 73 72 63   "/home/joze/src
0030: 2f 74 63 6c 72 65 61 64 6c 69 6e 65 2f 74 63 6c  /tclreadline/tcl
0040: 72 65 61 64 6c 69 6e 65 53 65 74 75 70 2e 74 63  readlineSetup.tc
0050: 6c 22 0a 23 20 4c 41 53 54 20 4d 4f 44 49 46 49  l".# LAST MODIFI
0060: 45 44 3a 20 22 53 75 6e 20 46 65 62 20 32 38 20  ED: "Sun Feb 28 
0070: 31 37 3a 34 33 3a 34 32 20 31 39 39 39 20 28 6a  17:43:42 1999 (j
0080: 6f 7a 65 29 22 0a 23 20 28 43 29 20 31 39 39 38  oze)".# (C) 1998
0090: 2c 20 31 39 39 39 20 62 79 20 4a 6f 68 61 6e 6e  , 1999 by Johann
00a0: 65 73 20 5a 65 6c 6c 6e 65 72 0a 23 20 4a 6f 68  es Zellner.# Joh
00b0: 61 6e 6e 65 73 2e 5a 65 6c 6c 6e 65 72 40 70 68  annes.Zellner@ph
00c0: 79 73 69 6b 2e 75 6e 69 2d 6b 61 72 6c 73 72 75  ysik.uni-karlsru
00d0: 68 65 2e 64 65 0a 23 20 24 49 64 24 0a 23 20 2d  he.de.# $Id$.# -
00e0: 2d 2d 0a 23 0a 23 20 74 63 6c 72 65 61 64 6c 69  --.#.# tclreadli
00f0: 6e 65 20 2d 2d 20 67 6e 75 20 72 65 61 64 6c 69  ne -- gnu readli
0100: 6e 65 20 66 6f 72 20 74 63 6c 0a 23 20 43 6f 70  ne for tcl.# Cop
0110: 79 72 69 67 68 74 20 28 43 29 20 31 39 39 39 20  yright (C) 1999 
0120: 20 4a 6f 68 61 6e 6e 65 73 20 5a 65 6c 6c 6e 65   Johannes Zellne
0130: 72 0a 23 0a 23 20 54 68 69 73 20 70 72 6f 67 72  r.#.# This progr
0140: 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77  am is free softw
0150: 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64  are; you can red
0160: 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64  istribute it and
0170: 2f 6f 72 0a 23 20 6d 6f 64 69 66 79 20 69 74 20  /or.# modify it 
0180: 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20  under the terms 
0190: 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72  of the GNU Gener
01a0: 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73  al Public Licens
01b0: 65 0a 23 20 61 73 20 70 75 62 6c 69 73 68 65 64  e.# as published
01c0: 20 62 79 20 74 68 65 20 46 72 65 65 20 53 6f 66   by the Free Sof
01d0: 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e  tware Foundation
01e0: 3b 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e  ; either version
01f0: 20 32 0a 23 20 6f 66 20 74 68 65 20 4c 69 63 65   2.# of the Lice
0200: 6e 73 65 2c 20 6f 72 20 28 61 74 20 79 6f 75 72  nse, or (at your
0210: 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74   option) any lat
0220: 65 72 20 76 65 72 73 69 6f 6e 2e 0a 23 0a 23 20  er version..#.# 
0230: 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20  This program is 
0240: 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74  distributed in t
0250: 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20  he hope that it 
0260: 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a  will be useful,.
0270: 23 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e  # but WITHOUT AN
0280: 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68  Y WARRANTY; with
0290: 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70  out even the imp
02a0: 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66  lied warranty of
02b0: 0a 23 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49  .# MERCHANTABILI
02c0: 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f  TY or FITNESS FO
02d0: 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50  R A PARTICULAR P
02e0: 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65  URPOSE.  See the
02f0: 0a 23 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50  .# GNU General P
0300: 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f  ublic License fo
0310: 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a  r more details..
0320: 23 0a 23 20 59 6f 75 20 73 68 6f 75 6c 64 20 68  #.# You should h
0330: 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63  ave received a c
0340: 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47  opy of the GNU G
0350: 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69  eneral Public Li
0360: 63 65 6e 73 65 0a 23 20 61 6c 6f 6e 67 20 77 69  cense.# along wi
0370: 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 3b  th this program;
0380: 20 69 66 20 6e 6f 74 2c 20 77 72 69 74 65 20 74   if not, write t
0390: 6f 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77  o the Free Softw
03a0: 61 72 65 0a 23 20 46 6f 75 6e 64 61 74 69 6f 6e  are.# Foundation
03b0: 2c 20 49 6e 63 2e 2c 20 35 39 20 54 65 6d 70 6c  , Inc., 59 Templ
03c0: 65 20 50 6c 61 63 65 20 2d 20 53 75 69 74 65 20  e Place - Suite 
03d0: 33 33 30 2c 20 42 6f 73 74 6f 6e 2c 20 4d 41 20  330, Boston, MA 
03e0: 20 30 32 31 31 31 2d 31 33 30 37 2c 20 55 53 41   02111-1307, USA
03f0: 2e 0a 23 0a 23 20 4a 6f 68 61 6e 6e 65 73 2e 5a  ..#.# Johannes.Z
0400: 65 6c 6c 6e 65 72 40 70 68 79 73 69 6b 2e 75 6e  ellner@physik.un
0410: 69 2d 6b 61 72 6c 73 72 75 68 65 2e 64 65 0a 23  i-karlsruhe.de.#
0420: 20 68 74 74 70 3a 2f 2f 6b 72 69 73 61 6c 2e 70   http://krisal.p
0430: 68 79 73 69 6b 2e 75 6e 69 2d 6b 61 72 6c 73 72  hysik.uni-karlsr
0440: 75 68 65 2e 64 65 2f 7e 6a 6f 7a 65 0a 23 0a 23  uhe.de/~joze.#.#
0450: 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d   ===============
0460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0490: 3d 3d 3d 20 0a 0a 70 61 63 6b 61 67 65 20 70 72  === ..package pr
04a0: 6f 76 69 64 65 20 74 63 6c 72 65 61 64 6c 69 6e  ovide tclreadlin
04b0: 65 20 40 54 43 4c 52 45 41 44 4c 49 4e 45 5f 56  e @TCLREADLINE_V
04c0: 45 52 53 49 4f 4e 40 0a 0a 70 72 6f 63 20 75 6e  ERSION@..proc un
04d0: 6b 6e 6f 77 6e 20 61 72 67 73 20 7b 0a 0a 20 20  known args {..  
04e0: 20 20 67 6c 6f 62 61 6c 20 61 75 74 6f 5f 6e 6f    global auto_no
04f0: 65 78 65 63 20 61 75 74 6f 5f 6e 6f 6c 6f 61 64  exec auto_noload
0500: 20 65 6e 76 20 75 6e 6b 6e 6f 77 6e 5f 70 65 6e   env unknown_pen
0510: 64 69 6e 67 20 74 63 6c 5f 69 6e 74 65 72 61 63  ding tcl_interac
0520: 74 69 76 65 0a 20 20 20 20 67 6c 6f 62 61 6c 20  tive.    global 
0530: 65 72 72 6f 72 43 6f 64 65 20 65 72 72 6f 72 49  errorCode errorI
0540: 6e 66 6f 0a 0a 20 20 20 20 23 20 53 61 76 65 20  nfo..    # Save 
0550: 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 65 72  the values of er
0560: 72 6f 72 43 6f 64 65 20 61 6e 64 20 65 72 72 6f  rorCode and erro
0570: 72 49 6e 66 6f 20 76 61 72 69 61 62 6c 65 73 2c  rInfo variables,
0580: 20 73 69 6e 63 65 20 74 68 65 79 0a 20 20 20 20   since they.    
0590: 23 20 6d 61 79 20 67 65 74 20 6d 6f 64 69 66 69  # may get modifi
05a0: 65 64 20 69 66 20 63 61 75 67 68 74 20 65 72 72  ed if caught err
05b0: 6f 72 73 20 6f 63 63 75 72 20 62 65 6c 6f 77 2e  ors occur below.
05c0: 20 20 54 68 65 20 76 61 72 69 61 62 6c 65 73 20    The variables 
05d0: 77 69 6c 6c 0a 20 20 20 20 23 20 62 65 20 72 65  will.    # be re
05e0: 73 74 6f 72 65 64 20 6a 75 73 74 20 62 65 66 6f  stored just befo
05f0: 72 65 20 72 65 2d 65 78 65 63 75 74 69 6e 67 20  re re-executing 
0600: 74 68 65 20 6d 69 73 73 69 6e 67 20 63 6f 6d 6d  the missing comm
0610: 61 6e 64 2e 0a 0a 20 20 20 20 73 65 74 20 73 61  and...    set sa
0620: 76 65 64 45 72 72 6f 72 43 6f 64 65 20 24 65 72  vedErrorCode $er
0630: 72 6f 72 43 6f 64 65 0a 20 20 20 20 73 65 74 20  rorCode.    set 
0640: 73 61 76 65 64 45 72 72 6f 72 49 6e 66 6f 20 24  savedErrorInfo $
0650: 65 72 72 6f 72 49 6e 66 6f 0a 20 20 20 20 73 65  errorInfo.    se
0660: 74 20 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20 24  t name [lindex $
0670: 61 72 67 73 20 30 5d 0a 20 20 20 20 69 66 20 21  args 0].    if !
0680: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 61 75 74  [info exists aut
0690: 6f 5f 6e 6f 6c 6f 61 64 5d 20 7b 0a 20 20 20 20  o_noload] {.    
06a0: 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20      #.        # 
06b0: 4d 61 6b 65 20 73 75 72 65 20 77 65 27 72 65 20  Make sure we're 
06c0: 6e 6f 74 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f  not trying to lo
06d0: 61 64 20 74 68 65 20 73 61 6d 65 20 70 72 6f 63  ad the same proc
06e0: 20 74 77 69 63 65 2e 0a 20 20 20 20 20 20 20 20   twice..        
06f0: 23 0a 20 20 20 20 20 20 20 20 69 66 20 5b 69 6e  #.        if [in
0700: 66 6f 20 65 78 69 73 74 73 20 75 6e 6b 6e 6f 77  fo exists unknow
0710: 6e 5f 70 65 6e 64 69 6e 67 28 24 6e 61 6d 65 29  n_pending($name)
0720: 5d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ] {.            
0730: 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72  return -code err
0740: 6f 72 20 22 73 65 6c 66 2d 72 65 66 65 72 65 6e  or "self-referen
0750: 74 69 61 6c 20 72 65 63 75 72 73 69 6f 6e 20 69  tial recursion i
0760: 6e 20 5c 22 75 6e 6b 6e 6f 77 6e 5c 22 20 66 6f  n \"unknown\" fo
0770: 72 20 63 6f 6d 6d 61 6e 64 20 5c 22 24 6e 61 6d  r command \"$nam
0780: 65 5c 22 22 3b 0a 20 20 20 20 20 20 20 20 7d 0a  e\"";.        }.
0790: 20 20 20 20 20 20 20 20 73 65 74 20 75 6e 6b 6e          set unkn
07a0: 6f 77 6e 5f 70 65 6e 64 69 6e 67 28 24 6e 61 6d  own_pending($nam
07b0: 65 29 20 70 65 6e 64 69 6e 67 3b 0a 20 20 20 20  e) pending;.    
07c0: 20 20 20 20 73 65 74 20 72 65 74 20 5b 63 61 74      set ret [cat
07d0: 63 68 20 7b 61 75 74 6f 5f 6c 6f 61 64 20 24 6e  ch {auto_load $n
07e0: 61 6d 65 20 5b 75 70 6c 65 76 65 6c 20 31 20 7b  ame [uplevel 1 {
07f0: 6e 61 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e  namespace curren
0800: 74 7d 5d 7d 20 6d 73 67 5d 0a 20 20 20 20 20 20  t}]} msg].      
0810: 20 20 75 6e 73 65 74 20 75 6e 6b 6e 6f 77 6e 5f    unset unknown_
0820: 70 65 6e 64 69 6e 67 28 24 6e 61 6d 65 29 3b 0a  pending($name);.
0830: 20 20 20 20 20 20 20 20 69 66 20 7b 24 72 65 74          if {$ret
0840: 20 21 3d 20 30 7d 20 7b 0a 20 20 20 20 20 20 20   != 0} {.       
0850: 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 6f 64       return -cod
0860: 65 20 24 72 65 74 20 2d 65 72 72 6f 72 63 6f 64  e $ret -errorcod
0870: 65 20 24 65 72 72 6f 72 43 6f 64 65 20 5c 0a 20  e $errorCode \. 
0880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
0890: 65 72 72 6f 72 20 77 68 69 6c 65 20 61 75 74 6f  error while auto
08a0: 6c 6f 61 64 69 6e 67 20 5c 22 24 6e 61 6d 65 5c  loading \"$name\
08b0: 22 3a 20 24 6d 73 67 22 0a 20 20 20 20 20 20 20  ": $msg".       
08c0: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 21 5b   }.        if ![
08d0: 61 72 72 61 79 20 73 69 7a 65 20 75 6e 6b 6e 6f  array size unkno
08e0: 77 6e 5f 70 65 6e 64 69 6e 67 5d 20 7b 0a 20 20  wn_pending] {.  
08f0: 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74 20            unset 
0900: 75 6e 6b 6e 6f 77 6e 5f 70 65 6e 64 69 6e 67 0a  unknown_pending.
0910: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
0920: 20 20 69 66 20 24 6d 73 67 20 7b 0a 20 20 20 20    if $msg {.    
0930: 20 20 20 20 20 20 20 20 73 65 74 20 65 72 72 6f          set erro
0940: 72 43 6f 64 65 20 24 73 61 76 65 64 45 72 72 6f  rCode $savedErro
0950: 72 43 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20  rCode.          
0960: 20 20 73 65 74 20 65 72 72 6f 72 49 6e 66 6f 20    set errorInfo 
0970: 24 73 61 76 65 64 45 72 72 6f 72 49 6e 66 6f 0a  $savedErrorInfo.
0980: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
0990: 63 6f 64 65 20 5b 63 61 74 63 68 20 7b 75 70 6c  code [catch {upl
09a0: 65 76 65 6c 20 31 20 24 61 72 67 73 7d 20 6d 73  evel 1 $args} ms
09b0: 67 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  g].            i
09c0: 66 20 7b 24 63 6f 64 65 20 3d 3d 20 20 31 7d 20  f {$code ==  1} 
09d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
09e0: 20 20 23 0a 20 20 20 20 20 20 20 20 20 20 20 20    #.            
09f0: 20 20 20 20 23 20 53 74 72 69 70 20 74 68 65 20      # Strip the 
0a00: 6c 61 73 74 20 66 69 76 65 20 6c 69 6e 65 73 20  last five lines 
0a10: 6f 66 66 20 74 68 65 20 65 72 72 6f 72 20 73 74  off the error st
0a20: 61 63 6b 20 28 74 68 65 79 27 72 65 0a 20 20 20  ack (they're.   
0a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66               # f
0a40: 72 6f 6d 20 74 68 65 20 22 75 70 6c 65 76 65 6c  rom the "uplevel
0a50: 22 20 63 6f 6d 6d 61 6e 64 29 2e 0a 20 20 20 20  " command)..    
0a60: 20 20 20 20 20 20 20 20 20 20 20 20 23 0a 0a 20              #.. 
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
0a80: 65 74 20 6e 65 77 20 5b 73 70 6c 69 74 20 24 65  et new [split $e
0a90: 72 72 6f 72 49 6e 66 6f 20 5c 6e 5d 0a 20 20 20  rrorInfo \n].   
0aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
0ab0: 20 6e 65 77 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e   new [join [lran
0ac0: 67 65 20 24 6e 65 77 20 30 20 5b 65 78 70 72 20  ge $new 0 [expr 
0ad0: 5b 6c 6c 65 6e 67 74 68 20 24 6e 65 77 5d 20 2d  [llength $new] -
0ae0: 20 36 5d 5d 20 5c 6e 5d 0a 20 20 20 20 20 20 20   6]] \n].       
0af0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
0b00: 2d 63 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72  -code error -err
0b10: 6f 72 63 6f 64 65 20 24 65 72 72 6f 72 43 6f 64  orcode $errorCod
0b20: 65 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  e \.            
0b30: 20 20 20 20 20 20 20 20 20 20 20 20 2d 65 72 72              -err
0b40: 6f 72 69 6e 66 6f 20 24 6e 65 77 20 24 6d 73 67  orinfo $new $msg
0b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
0b60: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
0b70: 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 6f        return -co
0b80: 64 65 20 24 63 6f 64 65 20 24 6d 73 67 0a 20 20  de $code $msg.  
0b90: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
0ba0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
0bb0: 20 23 20 52 45 4d 4f 56 45 44 20 54 48 45 20 5b   # REMOVED THE [
0bc0: 69 6e 66 6f 20 73 63 72 69 70 74 5d 20 54 45 53  info script] TES
0bd0: 54 20 28 6a 6f 7a 65 2c 20 53 45 50 20 39 38 29  T (joze, SEP 98)
0be0: 0a 20 20 20 20 69 66 20 7b 28 5b 69 6e 66 6f 20  .    if {([info 
0bf0: 6c 65 76 65 6c 5d 20 3d 3d 20 31 29 20 5c 0a 20  level] == 1) \. 
0c00: 20 20 20 20 20 20 20 20 20 20 20 26 26 20 5b 69             && [i
0c10: 6e 66 6f 20 65 78 69 73 74 73 20 74 63 6c 5f 69  nfo exists tcl_i
0c20: 6e 74 65 72 61 63 74 69 76 65 5d 20 26 26 20 24  nteractive] && $
0c30: 74 63 6c 5f 69 6e 74 65 72 61 63 74 69 76 65 7d  tcl_interactive}
0c40: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 21 5b   {.        if ![
0c50: 69 6e 66 6f 20 65 78 69 73 74 73 20 61 75 74 6f  info exists auto
0c60: 5f 6e 6f 65 78 65 63 5d 20 7b 0a 20 20 20 20 20  _noexec] {.     
0c70: 20 20 20 20 20 20 20 73 65 74 20 6e 65 77 20 5b         set new [
0c80: 61 75 74 6f 5f 65 78 65 63 6f 6b 20 24 6e 61 6d  auto_execok $nam
0c90: 65 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  e].            i
0ca0: 66 20 7b 24 6e 65 77 20 21 3d 20 22 22 7d 20 7b  f {$new != ""} {
0cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0cc0: 20 73 65 74 20 65 72 72 6f 72 43 6f 64 65 20 24   set errorCode $
0cd0: 73 61 76 65 64 45 72 72 6f 72 43 6f 64 65 0a 20  savedErrorCode. 
0ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
0cf0: 65 74 20 65 72 72 6f 72 49 6e 66 6f 20 24 73 61  et errorInfo $sa
0d00: 76 65 64 45 72 72 6f 72 49 6e 66 6f 0a 20 20 20  vedErrorInfo.   
0d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
0d20: 20 72 65 64 69 72 20 22 22 0a 20 20 20 20 20 20   redir "".      
0d30: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69            if {[i
0d40: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 63 6f 6e  nfo commands con
0d50: 73 6f 6c 65 5d 20 3d 3d 20 22 22 7d 20 7b 0a 20  sole] == ""} {. 
0d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d70: 20 20 20 73 65 74 20 72 65 64 69 72 20 22 3e 26     set redir ">&
0d80: 40 73 74 64 6f 75 74 20 3c 40 73 74 64 69 6e 22  @stdout <@stdin"
0d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0da0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
0db0: 20 20 20 23 20 4c 4f 4f 4b 20 46 4f 52 20 47 4c     # LOOK FOR GL
0dc0: 4f 42 20 53 54 55 46 46 20 49 4e 20 24 41 52 47  OB STUFF IN $ARG
0dd0: 53 20 28 6a 6f 7a 65 2c 20 53 45 50 20 39 38 29  S (joze, SEP 98)
0de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0df0: 20 72 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c   return [uplevel
0e00: 20 65 76 61 6c 20 65 78 65 63 20 24 72 65 64 69   eval exec $redi
0e10: 72 20 24 6e 65 77 20 5c 0a 20 20 20 20 20 20 20  r $new \.       
0e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 3a 3a               [::
0e30: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 47 6c 6f  tclreadline::Glo
0e40: 62 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 73 20  b [lrange $args 
0e50: 31 20 65 6e 64 5d 5d 5d 0a 20 20 20 20 20 20 20  1 end]]].       
0e60: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
0e70: 0a 20 20 20 20 20 20 20 20 73 65 74 20 65 72 72  .        set err
0e80: 6f 72 43 6f 64 65 20 24 73 61 76 65 64 45 72 72  orCode $savedErr
0e90: 6f 72 43 6f 64 65 0a 20 20 20 20 20 20 20 20 73  orCode.        s
0ea0: 65 74 20 65 72 72 6f 72 49 6e 66 6f 20 24 73 61  et errorInfo $sa
0eb0: 76 65 64 45 72 72 6f 72 49 6e 66 6f 0a 20 20 20  vedErrorInfo.   
0ec0: 20 20 20 20 20 69 66 20 7b 24 6e 61 6d 65 20 3d       if {$name =
0ed0: 3d 20 22 21 21 22 7d 20 7b 0a 20 20 20 20 20 20  = "!!"} {.      
0ee0: 20 20 20 20 20 20 73 65 74 20 6e 65 77 63 6d 64        set newcmd
0ef0: 20 5b 68 69 73 74 6f 72 79 20 65 76 65 6e 74 5d   [history event]
0f00: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69  .        } elsei
0f10: 66 20 7b 5b 72 65 67 65 78 70 20 7b 5e 21 28 2e  f {[regexp {^!(.
0f20: 2b 29 24 7d 20 24 6e 61 6d 65 20 64 75 6d 6d 79  +)$} $name dummy
0f30: 20 65 76 65 6e 74 5d 7d 20 7b 0a 20 20 20 20 20   event]} {.     
0f40: 20 20 20 20 20 20 20 73 65 74 20 6e 65 77 63 6d         set newcm
0f50: 64 20 5b 68 69 73 74 6f 72 79 20 65 76 65 6e 74  d [history event
0f60: 20 24 65 76 65 6e 74 5d 0a 20 20 20 20 20 20 20   $event].       
0f70: 20 7d 20 65 6c 73 65 69 66 20 7b 5b 72 65 67 65   } elseif {[rege
0f80: 78 70 20 7b 5e 5c 5e 28 5b 5e 5e 5d 2a 29 5c 5e  xp {^\^([^^]*)\^
0f90: 28 5b 5e 5e 5d 2a 29 5c 5e 3f 24 7d 20 24 6e 61  ([^^]*)\^?$} $na
0fa0: 6d 65 20 64 75 6d 6d 79 20 6f 6c 64 20 6e 65 77  me dummy old new
0fb0: 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ]} {.           
0fc0: 20 73 65 74 20 6e 65 77 63 6d 64 20 5b 68 69 73   set newcmd [his
0fd0: 74 6f 72 79 20 65 76 65 6e 74 20 2d 31 5d 0a 20  tory event -1]. 
0fe0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
0ff0: 20 7b 72 65 67 73 75 62 20 2d 61 6c 6c 20 2d 2d   {regsub -all --
1000: 20 24 6f 6c 64 20 24 6e 65 77 63 6d 64 20 24 6e   $old $newcmd $n
1010: 65 77 20 6e 65 77 63 6d 64 7d 0a 20 20 20 20 20  ew newcmd}.     
1020: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20     }.        if 
1030: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 65 77  [info exists new
1040: 63 6d 64 5d 20 7b 0a 20 20 20 20 20 20 20 20 20  cmd] {.         
1050: 20 20 20 74 63 6c 4c 6f 67 20 24 6e 65 77 63 6d     tclLog $newcm
1060: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 69  d.            hi
1070: 73 74 6f 72 79 20 63 68 61 6e 67 65 20 24 6e 65  story change $ne
1080: 77 63 6d 64 20 30 0a 20 20 20 20 20 20 20 20 20  wcmd 0.         
1090: 20 20 20 72 65 74 75 72 6e 20 5b 75 70 6c 65 76     return [uplev
10a0: 65 6c 20 24 6e 65 77 63 6d 64 5d 0a 20 20 20 20  el $newcmd].    
10b0: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 73      }..        s
10c0: 65 74 20 72 65 74 20 5b 63 61 74 63 68 20 7b 73  et ret [catch {s
10d0: 65 74 20 63 6d 64 73 20 5b 69 6e 66 6f 20 63 6f  et cmds [info co
10e0: 6d 6d 61 6e 64 73 20 24 6e 61 6d 65 2a 5d 7d 20  mmands $name*]} 
10f0: 6d 73 67 5d 0a 20 20 20 20 20 20 20 20 69 66 20  msg].        if 
1100: 7b 5b 73 74 72 69 6e 67 20 63 6f 6d 70 61 72 65  {[string compare
1110: 20 24 6e 61 6d 65 20 22 3a 3a 22 5d 20 3d 3d 20   $name "::"] == 
1120: 30 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  0} {.           
1130: 20 73 65 74 20 6e 61 6d 65 20 22 22 0a 20 20 20   set name "".   
1140: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69       }.        i
1150: 66 20 7b 24 72 65 74 20 21 3d 20 30 7d 20 7b 0a  f {$ret != 0} {.
1160: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1170: 72 6e 20 2d 63 6f 64 65 20 24 72 65 74 20 2d 65  rn -code $ret -e
1180: 72 72 6f 72 63 6f 64 65 20 24 65 72 72 6f 72 43  rrorcode $errorC
1190: 6f 64 65 20 5c 0a 20 20 20 20 20 20 20 20 20 20  ode \.          
11a0: 20 20 20 20 20 20 22 65 72 72 6f 72 20 69 6e 20        "error in 
11b0: 75 6e 6b 6e 6f 77 6e 20 77 68 69 6c 65 20 63 68  unknown while ch
11c0: 65 63 6b 69 6e 67 20 69 66 20 5c 22 24 6e 61 6d  ecking if \"$nam
11d0: 65 5c 22 20 69 73 20 61 20 75 6e 69 71 75 65 20  e\" is a unique 
11e0: 63 6f 6d 6d 61 6e 64 20 61 62 62 72 65 76 69 61  command abbrevia
11f0: 74 69 6f 6e 3a 20 24 6d 73 67 22 0a 20 20 20 20  tion: $msg".    
1200: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66      }.        if
1210: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 63 6d 64 73   {[llength $cmds
1220: 5d 20 3d 3d 20 31 7d 20 7b 0a 20 20 20 20 20 20  ] == 1} {.      
1230: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 75 70        return [up
1240: 6c 65 76 65 6c 20 5b 6c 72 65 70 6c 61 63 65 20  level [lreplace 
1250: 24 61 72 67 73 20 30 20 30 20 24 63 6d 64 73 5d  $args 0 0 $cmds]
1260: 5d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ].        }.    
1270: 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68      if {[llength
1280: 20 24 63 6d 64 73 5d 20 21 3d 20 30 7d 20 7b 0a   $cmds] != 0} {.
1290: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b              if {
12a0: 24 6e 61 6d 65 20 3d 3d 20 22 22 7d 20 7b 0a 20  $name == ""} {. 
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12c0: 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f  eturn -code erro
12d0: 72 20 22 65 6d 70 74 79 20 63 6f 6d 6d 61 6e 64  r "empty command
12e0: 20 6e 61 6d 65 20 5c 22 5c 22 22 0a 20 20 20 20   name \"\"".    
12f0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
1300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1310: 20 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72   return -code er
1320: 72 6f 72 20 5c 0a 20 20 20 20 20 20 20 20 20 20  ror \.          
1330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61                "a
1340: 6d 62 69 67 75 6f 75 73 20 63 6f 6d 6d 61 6e 64  mbiguous command
1350: 20 6e 61 6d 65 20 5c 22 24 6e 61 6d 65 5c 22 3a   name \"$name\":
1360: 20 5b 6c 73 6f 72 74 20 24 63 6d 64 73 5d 22 0a   [lsort $cmds]".
1370: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
1380: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20        }.    }.  
1390: 20 20 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65    return -code e
13a0: 72 72 6f 72 20 22 69 6e 76 61 6c 69 64 20 63 6f  rror "invalid co
13b0: 6d 6d 61 6e 64 20 6e 61 6d 65 20 5c 22 24 6e 61  mmand name \"$na
13c0: 6d 65 5c 22 22 0a 7d 0a 0a 6e 61 6d 65 73 70 61  me\"".}..namespa
13d0: 63 65 20 65 76 61 6c 20 74 63 6c 72 65 61 64 6c  ce eval tclreadl
13e0: 69 6e 65 3a 3a 20 7b 0a 20 20 20 20 6e 61 6d 65  ine:: {.    name
13f0: 73 70 61 63 65 20 65 78 70 6f 72 74 20 53 65 74  space export Set
1400: 75 70 20 47 6c 6f 62 20 4c 6f 6f 70 20 49 6e 69  up Glob Loop Ini
1410: 74 43 6d 64 73 20 49 6e 69 74 54 63 6c 43 6d 64  tCmds InitTclCmd
1420: 73 20 49 6e 69 74 54 6b 43 6d 64 73 20 50 72 69  s InitTkCmds Pri
1430: 6e 74 0a 7d 0a 0a 0a 70 72 6f 63 20 3a 3a 74 63  nt.}...proc ::tc
1440: 6c 72 65 61 64 6c 69 6e 65 3a 3a 53 65 74 75 70  lreadline::Setup
1450: 20 7b 7d 20 7b 0a 0a 0a 20 20 20 20 75 70 6c 65   {} {...    uple
1460: 76 65 6c 20 23 30 20 7b 0a 0a 20 20 20 20 20 20  vel #0 {..      
1470: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 63 6f 6d 6d    if {[info comm
1480: 61 6e 64 73 20 3a 3a 74 63 6c 72 65 61 64 6c 69  ands ::tclreadli
1490: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 5d 20 3d 3d  ne::readline] ==
14a0: 20 22 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 20   ""} {.         
14b0: 20 20 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65     ::tclreadline
14c0: 3a 3a 49 6e 69 74 0a 20 20 20 20 20 20 20 20 7d  ::Init.        }
14d0: 0a 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63  ..        if {[c
14e0: 61 74 63 68 20 7b 73 65 74 20 61 20 5b 3a 3a 74  atch {set a [::t
14f0: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 70 72 6f 6d  clreadline::prom
1500: 70 74 31 5d 7d 5d 20 5c 0a 20 20 20 20 20 20 20  pt1]}] \.       
1510: 20 20 20 20 20 26 26 20 5b 69 6e 66 6f 20 6e 61       && [info na
1520: 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 20  meofexecutable] 
1530: 21 3d 20 22 22 7d 20 7b 0a 0a 20 20 20 20 20 20  != ""} {..      
1540: 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20        namespace 
1550: 65 76 61 6c 20 3a 3a 74 63 6c 72 65 61 64 6c 69  eval ::tclreadli
1560: 6e 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ne {.           
1570: 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 72       variable pr
1580: 6f 6d 70 74 5f 73 74 72 69 6e 67 0a 20 20 20 20  ompt_string.    
1590: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
15a0: 62 61 73 65 20 5b 66 69 6c 65 20 74 61 69 6c 20  base [file tail 
15b0: 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65 78 65 63  [info nameofexec
15c0: 75 74 61 62 6c 65 5d 5d 0a 0a 20 20 20 20 20 20  utable]]..      
15d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 24 62            if {$b
15e0: 61 73 65 20 3d 3d 20 22 74 63 6c 73 68 22 20 26  ase == "tclsh" &
15f0: 26 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  & [info exists t
1600: 63 6c 5f 76 65 72 73 69 6f 6e 5d 7d 20 7b 0a 20  cl_version]} {. 
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 20 20 20 73 65 74 20 70 72 6f 6d 70 74 5f 73 74     set prompt_st
1630: 72 69 6e 67 20 5c 0a 20 20 20 20 20 20 20 20 20  ring \.         
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1650: 01 1b 5c 5b 30 3b 39 31 6d 02 24 62 61 73 65 24  ..\[0;91m.$base$
1660: 74 63 6c 5f 76 65 72 73 69 6f 6e 01 1b 5c 5b 30  tcl_version..\[0
1670: 6d 02 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  m.".            
1680: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 62      } elseif {$b
1690: 61 73 65 20 3d 3d 20 22 77 69 73 68 22 20 26 26  ase == "wish" &&
16a0: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 6b   [info exists tk
16b0: 5f 76 65 72 73 69 6f 6e 5d 7d 20 7b 0a 20 20 20  _version]} {.   
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 73 65 74 20 70 72 6f 6d 70 74 5f 73 74 72 69   set prompt_stri
16e0: 6e 67 20 22 01 1b 5c 5b 30 3b 39 34 6d 02 24 62  ng "..\[0;94m.$b
16f0: 61 73 65 24 74 6b 5f 76 65 72 73 69 6f 6e 01 1b  ase$tk_version..
1700: 5c 5b 30 6d 02 22 0a 20 20 20 20 20 20 20 20 20  \[0m.".         
1710: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1730: 20 20 20 20 73 65 74 20 70 72 6f 6d 70 74 5f 73      set prompt_s
1740: 74 72 69 6e 67 20 22 01 1b 5c 5b 30 3b 39 31 6d  tring "..\[0;91m
1750: 02 24 62 61 73 65 01 1b 5c 5b 30 6d 02 22 0a 20  .$base..\[0m.". 
1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1770: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ..            }.
1780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f  .            pro
1790: 63 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  c ::tclreadline:
17a0: 3a 70 72 6f 6d 70 74 31 20 7b 7d 20 7b 0a 20 20  :prompt1 {} {.  
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
17c0: 72 69 61 62 6c 65 20 70 72 6f 6d 70 74 5f 73 74  riable prompt_st
17d0: 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20  ring.           
17e0: 20 20 20 20 20 67 6c 6f 62 61 6c 20 65 6e 76 0a       global env.
17f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1800: 73 65 74 20 70 77 64 20 5b 70 77 64 5d 0a 0a 20  set pwd [pwd].. 
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1820: 66 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 65  f [info exists e
1830: 6e 76 28 48 4f 4d 45 29 5d 20 7b 0a 20 20 20 20  nv(HOME)] {.    
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 72 65 67 73 75 62 20 24 65 6e 76 28 48 4f 4d 45  regsub $env(HOME
1860: 29 20 24 70 77 64 20 22 7e 22 20 70 77 64 0a 20  ) $pwd "~" pwd. 
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1890: 20 72 65 74 75 72 6e 20 22 24 70 72 6f 6d 70 74   return "$prompt
18a0: 5f 73 74 72 69 6e 67 20 5c 5b 24 70 77 64 5c 5d  _string \[$pwd\]
18b0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ".            }.
18c0: 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20          }..     
18d0: 20 20 20 70 72 6f 63 20 6c 73 20 7b 61 72 67 73     proc ls {args
18e0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  } {.            
18f0: 69 66 20 7b 5b 65 78 65 63 20 75 6e 61 6d 65 20  if {[exec uname 
1900: 2d 73 5d 20 3d 3d 20 22 4c 69 6e 75 78 22 7d 20  -s] == "Linux"} 
1910: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
1920: 20 20 65 76 61 6c 20 65 78 65 63 20 6c 73 20 2d    eval exec ls -
1930: 2d 63 6f 6c 6f 72 20 2d 46 43 20 5b 3a 3a 74 63  -color -FC [::tc
1940: 6c 72 65 61 64 6c 69 6e 65 3a 3a 47 6c 6f 62 20  lreadline::Glob 
1950: 24 61 72 67 73 5d 0a 20 20 20 20 20 20 20 20 20  $args].         
1960: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
1970: 20 20 20 20 20 20 20 20 20 20 20 20 65 76 61 6c              eval
1980: 20 65 78 65 63 20 6c 73 20 2d 46 43 20 5b 3a 3a   exec ls -FC [::
1990: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 47 6c 6f  tclreadline::Glo
19a0: 62 20 24 61 72 67 73 5d 0a 20 20 20 20 20 20 20  b $args].       
19b0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
19c0: 0a 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69  ..        if {[i
19d0: 6e 66 6f 20 70 72 6f 63 73 20 63 64 5d 20 3d 3d  nfo procs cd] ==
19e0: 20 22 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 20   ""} {.         
19f0: 20 20 20 63 61 74 63 68 20 7b 72 65 6e 61 6d 65     catch {rename
1a00: 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a   ::tclreadline::
1a10: 43 64 20 22 22 7d 0a 20 20 20 20 20 20 20 20 20  Cd ""}.         
1a20: 20 20 20 72 65 6e 61 6d 65 20 63 64 20 3a 3a 74     rename cd ::t
1a30: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 43 64 0a 20  clreadline::Cd. 
1a40: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 20             proc 
1a50: 63 64 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20  cd {args} {.    
1a60: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b              if {
1a70: 5b 63 61 74 63 68 20 7b 65 76 61 6c 20 3a 3a 74  [catch {eval ::t
1a80: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 43 64 20 24  clreadline::Cd $
1a90: 61 72 67 73 7d 20 6d 65 73 73 61 67 65 5d 7d 20  args} message]} 
1aa0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
1ab0: 20 20 20 20 20 20 70 75 74 73 20 73 74 64 65 72        puts stder
1ac0: 72 20 22 24 6d 65 73 73 61 67 65 22 0a 20 20 20  r "$message".   
1ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1af0: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  s.            }.
1b00: 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20          }..     
1b10: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 70 72 6f     if {[info pro
1b20: 63 73 20 65 78 69 74 5d 20 3d 3d 20 22 22 7d 20  cs exit] == ""} 
1b30: 7b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
1b40: 61 74 63 68 20 7b 72 65 6e 61 6d 65 20 3a 3a 74  atch {rename ::t
1b50: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 45 78 69 74  clreadline::Exit
1b60: 20 22 22 7d 0a 20 20 20 20 20 20 20 20 20 20 20   ""}.           
1b70: 20 72 65 6e 61 6d 65 20 65 78 69 74 20 3a 3a 74   rename exit ::t
1b80: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 45 78 69 74  clreadline::Exit
1b90: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
1ba0: 6f 63 20 65 78 69 74 20 7b 61 72 67 73 7d 20 7b  oc exit {args} {
1bb0: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bc0: 20 20 63 61 74 63 68 20 7b 0a 20 20 20 20 20 20    catch {.      
1bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a                ::
1be0: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
1bf0: 64 6c 69 6e 65 20 77 72 69 74 65 20 5c 0a 20 20  dline write \.  
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c10: 20 20 5b 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65    [::tclreadline
1c20: 3a 3a 48 69 73 74 6f 72 79 46 69 6c 65 47 65 74  ::HistoryFileGet
1c30: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ].              
1c40: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c50: 20 20 20 20 20 69 66 20 5b 63 61 74 63 68 20 22       if [catch "
1c60: 65 76 61 6c 20 3a 3a 74 63 6c 72 65 61 64 6c 69  eval ::tclreadli
1c70: 6e 65 3a 3a 45 78 69 74 20 24 61 72 67 73 22 20  ne::Exit $args" 
1c80: 6d 65 73 73 61 67 65 5d 20 7b 0a 20 20 20 20 20  message] {.     
1c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
1ca0: 75 74 73 20 73 74 64 65 72 72 20 22 65 72 72 6f  uts stderr "erro
1cb0: 72 3a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:".            
1cc0: 20 20 20 20 20 20 20 20 70 75 74 73 20 73 74 64          puts std
1cd0: 65 72 72 20 22 24 6d 65 73 73 61 67 65 22 0a 20  err "$message". 
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1cf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d00: 20 23 20 4e 4f 54 52 45 41 43 48 45 44 0a 20 20   # NOTREACHED.  
1d10: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
1d20: 20 20 20 20 7d 0a 0a 20 20 20 20 7d 0a 0a 0a 0a      }..    }....
1d30: 20 20 20 20 67 6c 6f 62 61 6c 20 70 69 0a 20 20      global pi.  
1d40: 20 20 73 65 74 20 70 69 20 33 2e 31 34 31 35 39    set pi 3.14159
1d50: 32 36 35 33 35 38 39 37 39 33 31 0a 20 20 20 20  26535897931.    
1d60: 73 65 74 20 74 63 6c 5f 70 72 65 63 69 73 69 6f  set tcl_precisio
1d70: 6e 20 31 37 0a 0a 0a 0a 20 20 20 20 67 6c 6f 62  n 17....    glob
1d80: 61 6c 20 65 6e 76 0a 20 20 20 20 76 61 72 69 61  al env.    varia
1d90: 62 6c 65 20 68 69 73 74 6f 72 79 66 69 6c 65 0a  ble historyfile.
1da0: 0a 0a 20 20 20 20 69 66 20 5b 69 6e 66 6f 20 65  ..    if [info e
1db0: 78 69 73 74 73 20 65 6e 76 28 48 4f 4d 45 29 5d  xists env(HOME)]
1dc0: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20 68   {.        set h
1dd0: 69 73 74 6f 72 79 66 69 6c 65 20 20 24 65 6e 76  istoryfile  $env
1de0: 28 48 4f 4d 45 29 2f 2e 74 63 6c 73 68 2d 68 69  (HOME)/.tclsh-hi
1df0: 73 74 6f 72 79 0a 20 20 20 20 7d 20 65 6c 73 65  story.    } else
1e00: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20 68   {.        set h
1e10: 69 73 74 6f 72 79 66 69 6c 65 20 20 2e 74 63 6c  istoryfile  .tcl
1e20: 73 68 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 7d  sh-history.    }
1e30: 0a 20 20 20 20 73 65 74 20 6d 73 67 20 5b 3a 3a  .    set msg [::
1e40: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
1e50: 64 6c 69 6e 65 20 69 6e 69 74 69 61 6c 69 7a 65  dline initialize
1e60: 20 24 68 69 73 74 6f 72 79 66 69 6c 65 5d 0a 20   $historyfile]. 
1e70: 20 20 20 69 66 20 7b 24 6d 73 67 20 21 3d 20 22     if {$msg != "
1e80: 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 70 75 74  "} {.        put
1e90: 73 20 73 74 64 65 72 72 20 22 24 6d 73 67 22 0a  s stderr "$msg".
1ea0: 20 20 20 20 7d 0a 0a 20 20 20 20 3a 3a 74 63 6c      }..    ::tcl
1eb0: 72 65 61 64 6c 69 6e 65 3a 3a 49 6e 69 74 43 6d  readline::InitCm
1ec0: 64 73 0a 0a 20 20 20 20 72 65 6e 61 6d 65 20 3a  ds..    rename :
1ed0: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 53 65  :tclreadline::Se
1ee0: 74 75 70 20 22 22 0a 7d 0a 0a 70 72 6f 63 20 3a  tup "".}..proc :
1ef0: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 48 69  :tclreadline::Hi
1f00: 73 74 6f 72 79 46 69 6c 65 47 65 74 20 7b 7d 20  storyFileGet {} 
1f10: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 68  {.    variable h
1f20: 69 73 74 6f 72 79 66 69 6c 65 0a 20 20 20 20 72  istoryfile.    r
1f30: 65 74 75 72 6e 20 24 68 69 73 74 6f 72 79 66 69  eturn $historyfi
1f40: 6c 65 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 74 63 6c  le.}..proc ::tcl
1f50: 72 65 61 64 6c 69 6e 65 3a 3a 47 6c 6f 62 20 7b  readline::Glob {
1f60: 73 74 72 69 6e 67 7d 20 7b 0a 0a 20 20 20 20 73  string} {..    s
1f70: 65 74 20 63 6f 6d 6d 61 6e 64 73 74 72 69 6e 67  et commandstring
1f80: 20 22 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20   "".    foreach 
1f90: 6e 61 6d 65 20 24 73 74 72 69 6e 67 20 7b 0a 20  name $string {. 
1fa0: 20 20 20 20 20 20 20 73 65 74 20 72 65 70 6c 61         set repla
1fb0: 63 65 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70  ce [glob -nocomp
1fc0: 6c 61 69 6e 20 2d 2d 20 24 6e 61 6d 65 5d 0a 20  lain -- $name]. 
1fd0: 20 20 20 20 20 20 20 69 66 20 7b 24 72 65 70 6c         if {$repl
1fe0: 61 63 65 20 3d 3d 20 22 22 7d 20 7b 0a 20 20 20  ace == ""} {.   
1ff0: 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64           lappend
2000: 20 63 6f 6d 6d 61 6e 64 73 74 72 69 6e 67 20 24   commandstring $
2010: 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 7d 20 65  name.        } e
2020: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
2030: 20 20 6c 61 70 70 65 6e 64 20 63 6f 6d 6d 61 6e    lappend comman
2040: 64 73 74 72 69 6e 67 20 24 72 65 70 6c 61 63 65  dstring $replace
2050: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
2060: 0a 20 20 20 20 72 65 74 75 72 6e 20 24 63 6f 6d  .    return $com
2070: 6d 61 6e 64 73 74 72 69 6e 67 0a 7d 0a 0a 0a 0a  mandstring.}....
2080: 70 72 6f 63 20 3a 3a 74 63 6c 72 65 61 64 6c 69  proc ::tclreadli
2090: 6e 65 3a 3a 4c 6f 6f 70 20 7b 7d 20 7b 0a 0a 20  ne::Loop {} {.. 
20a0: 20 20 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65     ::tclreadline
20b0: 3a 3a 53 65 74 75 70 0a 0a 20 20 20 20 75 70 6c  ::Setup..    upl
20c0: 65 76 65 6c 20 23 30 20 7b 0a 0a 20 20 20 20 20  evel #0 {..     
20d0: 20 20 20 77 68 69 6c 65 20 7b 31 7d 20 7b 0a 0a     while {1} {..
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
20f0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 63 6c 5f  info exists tcl_
2100: 70 72 6f 6d 70 74 32 5d 20 7b 0a 20 20 20 20 20  prompt2] {.     
2110: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 3a             set :
2120: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 70 72  :tclreadline::pr
2130: 6f 6d 70 74 32 20 24 74 63 6c 5f 70 72 6f 6d 70  ompt2 $tcl_promp
2140: 74 32 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  t2.            }
2150: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
2160: 20 20 20 20 20 20 20 20 73 65 74 20 3a 3a 74 63          set ::tc
2170: 6c 72 65 61 64 6c 69 6e 65 3a 3a 70 72 6f 6d 70  lreadline::promp
2180: 74 32 20 22 3e 22 0a 20 20 20 20 20 20 20 20 20  t2 ">".         
2190: 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20     }..          
21a0: 20 20 69 66 20 7b 5b 6e 61 6d 65 73 70 61 63 65    if {[namespace
21b0: 20 65 76 61 6c 20 3a 3a 74 63 6c 72 65 61 64 6c   eval ::tclreadl
21c0: 69 6e 65 20 7b 5b 69 6e 66 6f 20 70 72 6f 63 73  ine {[info procs
21d0: 20 70 72 6f 6d 70 74 31 5d 7d 5d 20 21 3d 20 22   prompt1]}] != "
21e0: 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  "} {.           
21f0: 20 20 20 20 20 73 65 74 20 3a 3a 74 63 6c 72 65       set ::tclre
2200: 61 64 6c 69 6e 65 3a 3a 4c 49 4e 45 20 5b 3a 3a  adline::LINE [::
2210: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
2220: 64 6c 69 6e 65 20 72 65 61 64 20 5c 0a 20 20 20  dline read \.   
2230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2240: 20 5b 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a   [::tclreadline:
2250: 3a 70 72 6f 6d 70 74 31 5d 5d 0a 20 20 20 20 20  :prompt1]].     
2260: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a         } else {.
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 73 65 74 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  set ::tclreadlin
2290: 65 3a 3a 4c 49 4e 45 20 5b 3a 3a 74 63 6c 72 65  e::LINE [::tclre
22a0: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
22b0: 20 72 65 61 64 20 25 5d 0a 20 20 20 20 20 20 20   read %].       
22c0: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20       }..        
22d0: 20 20 20 20 77 68 69 6c 65 20 7b 21 5b 3a 3a 74      while {![::t
22e0: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64  clreadline::read
22f0: 6c 69 6e 65 20 63 6f 6d 70 6c 65 74 65 20 24 3a  line complete $:
2300: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 4c 49  :tclreadline::LI
2310: 4e 45 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20  NE]} {.         
2320: 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 3a 3a         append ::
2330: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 4c 49 4e  tclreadline::LIN
2340: 45 20 22 3b 22 0a 20 20 20 20 20 20 20 20 20 20  E ";".          
2350: 20 20 20 20 20 20 61 70 70 65 6e 64 20 3a 3a 74        append ::t
2360: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 4c 49 4e 45  clreadline::LINE
2370: 20 5b 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a   [::tclreadline:
2380: 3a 72 65 61 64 6c 69 6e 65 20 72 65 61 64 20 5c  :readline read \
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a0: 20 20 20 20 20 24 7b 3a 3a 74 63 6c 72 65 61 64       ${::tclread
23b0: 6c 69 6e 65 3a 3a 70 72 6f 6d 70 74 32 7d 5d 0a  line::prompt2}].
23c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 0a              }...
23d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
23e0: 63 61 74 63 68 20 7b 0a 20 20 20 20 20 20 20 20  catch {.        
23f0: 20 20 20 20 20 20 20 20 73 65 74 20 72 65 73 75          set resu
2400: 6c 74 20 5b 65 76 61 6c 20 24 3a 3a 74 63 6c 72  lt [eval $::tclr
2410: 65 61 64 6c 69 6e 65 3a 3a 4c 49 4e 45 5d 0a 20  eadline::LINE]. 
2420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2430: 66 20 7b 24 72 65 73 75 6c 74 20 21 3d 20 22 22  f {$result != ""
2440: 20 26 26 20 5b 3a 3a 74 63 6c 72 65 61 64 6c 69   && [::tclreadli
2450: 6e 65 3a 3a 50 72 69 6e 74 5d 7d 20 7b 0a 20 20  ne::Print]} {.  
2460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2470: 20 20 70 75 74 73 20 24 72 65 73 75 6c 74 0a 20    puts $result. 
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a0: 20 73 65 74 20 72 65 73 75 6c 74 20 22 22 0a 20   set result "". 
24b0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 6d 73 67             } msg
24c0: 5d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ] {.            
24d0: 20 20 20 20 70 75 74 73 20 73 74 64 65 72 72 20      puts stderr 
24e0: 24 6d 73 67 0a 20 20 20 20 20 20 20 20 20 20 20  $msg.           
24f0: 20 7d 0a 0a 20 20 20 20 20 20 20 20 7d 0a 20 20   }..        }.  
2500: 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 74 63    }.}..proc ::tc
2510: 6c 72 65 61 64 6c 69 6e 65 3a 3a 50 72 69 6e 74  lreadline::Print
2520: 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20 76 61   {args} {.    va
2530: 72 69 61 62 6c 65 20 50 52 49 4e 54 0a 20 20 20  riable PRINT.   
2540: 20 69 66 20 21 5b 69 6e 66 6f 20 65 78 69 73 74   if ![info exist
2550: 73 20 50 52 49 4e 54 5d 20 7b 0a 20 20 20 20 20  s PRINT] {.     
2560: 20 20 20 73 65 74 20 3a 3a 74 63 6c 72 65 61 64     set ::tclread
2570: 6c 69 6e 65 3a 3a 50 52 49 4e 54 20 79 65 73 0a  line::PRINT yes.
2580: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 5b 72 65      }.    if [re
2590: 67 65 78 70 20 2d 6e 6f 63 61 73 65 20 5c 28 74  gexp -nocase \(t
25a0: 72 75 65 5c 7c 79 65 73 5c 7c 31 5c 29 20 24 61  rue\|yes\|1\) $a
25b0: 72 67 73 5d 20 7b 0a 20 20 20 20 20 20 20 20 73  rgs] {.        s
25c0: 65 74 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  et ::tclreadline
25d0: 3a 3a 50 52 49 4e 54 20 79 65 73 0a 20 20 20 20  ::PRINT yes.    
25e0: 7d 20 65 6c 73 65 69 66 20 5b 72 65 67 65 78 70  } elseif [regexp
25f0: 20 2d 6e 6f 63 61 73 65 20 5c 28 66 61 6c 73 65   -nocase \(false
2600: 5c 7c 6e 6f 5c 7c 30 5c 29 20 24 61 72 67 73 5d  \|no\|0\) $args]
2610: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20 3a   {.        set :
2620: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 50 52  :tclreadline::PR
2630: 49 4e 54 20 6e 6f 0a 20 20 20 20 7d 0a 20 20 20  INT no.    }.   
2640: 20 72 65 74 75 72 6e 20 24 50 52 49 4e 54 0a 7d   return $PRINT.}
2650: 0a 0a 70 72 6f 63 20 3a 3a 74 63 6c 72 65 61 64  ..proc ::tclread
2660: 6c 69 6e 65 3a 3a 49 6e 69 74 43 6d 64 73 20 7b  line::InitCmds {
2670: 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 74  } {.    global t
2680: 63 6c 5f 76 65 72 73 69 6f 6e 20 74 6b 5f 76 65  cl_version tk_ve
2690: 72 73 69 6f 6e 0a 20 20 20 20 69 66 20 7b 5b 69  rsion.    if {[i
26a0: 6e 66 6f 20 65 78 69 73 74 73 20 74 63 6c 5f 76  nfo exists tcl_v
26b0: 65 72 73 69 6f 6e 5d 7d 20 7b 0a 20 20 20 20 20  ersion]} {.     
26c0: 20 20 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65     ::tclreadline
26d0: 3a 3a 49 6e 69 74 54 63 6c 43 6d 64 73 0a 20 20  ::InitTclCmds.  
26e0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66    }.    if {[inf
26f0: 6f 20 65 78 69 73 74 73 20 74 6b 5f 76 65 72 73  o exists tk_vers
2700: 69 6f 6e 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20  ion]} {.        
2710: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 49  ::tclreadline::I
2720: 6e 69 74 54 6b 43 6d 64 73 0a 20 20 20 20 7d 0a  nitTkCmds.    }.
2730: 20 20 20 20 72 65 6e 61 6d 65 20 74 63 6c 72 65      rename tclre
2740: 61 64 6c 69 6e 65 3a 3a 49 6e 69 74 43 6d 64 73  adline::InitCmds
2750: 20 22 22 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 74 63   "".}..proc ::tc
2760: 6c 72 65 61 64 6c 69 6e 65 3a 3a 49 6e 69 74 54  lreadline::InitT
2770: 63 6c 43 6d 64 73 20 7b 7d 20 7b 0a 3a 3a 74 63  clCmds {} {.::tc
2780: 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c  lreadline::readl
2790: 69 6e 65 20 61 64 64 20 22 61 66 74 65 72 20 6f  ine add "after o
27a0: 70 74 69 6f 6e 20 3f 61 72 67 20 61 72 67 20 2e  ption ?arg arg .
27b0: 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  ..?".::tclreadli
27c0: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
27d0: 20 22 61 70 70 65 6e 64 20 76 61 72 4e 61 6d 65   "append varName
27e0: 20 3f 76 61 6c 75 65 20 76 61 6c 75 65 20 2e 2e   ?value value ..
27f0: 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  .?".::tclreadlin
2800: 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20  e::readline add 
2810: 22 61 72 72 61 79 20 6f 70 74 69 6f 6e 20 61 72  "array option ar
2820: 72 61 79 4e 61 6d 65 20 3f 61 72 67 20 2e 2e 2e  rayName ?arg ...
2830: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
2840: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
2850: 62 69 6e 61 72 79 20 6f 70 74 69 6f 6e 20 3f 61  binary option ?a
2860: 72 67 20 61 72 67 20 2e 2e 2e 3f 22 0a 3a 3a 74  rg arg ...?".::t
2870: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64  clreadline::read
2880: 6c 69 6e 65 20 61 64 64 20 22 63 61 74 63 68 20  line add "catch 
2890: 63 6f 6d 6d 61 6e 64 20 3f 76 61 72 4e 61 6d 65  command ?varName
28a0: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
28b0: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
28c0: 63 6c 6f 63 6b 20 6f 70 74 69 6f 6e 20 3f 61 72  clock option ?ar
28d0: 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61  g ...?".::tclrea
28e0: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
28f0: 61 64 64 20 22 63 6c 6f 73 65 20 63 68 61 6e 6e  add "close chann
2900: 65 6c 49 64 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  elId".::tclreadl
2910: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
2920: 64 20 22 65 6f 66 20 63 68 61 6e 6e 65 6c 49 64  d "eof channelId
2930: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
2940: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 65  :readline add "e
2950: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 3f 65 72  rror message ?er
2960: 72 6f 72 49 6e 66 6f 3f 20 3f 65 72 72 6f 72 43  rorInfo? ?errorC
2970: 6f 64 65 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  ode?".::tclreadl
2980: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
2990: 64 20 22 65 76 61 6c 20 61 72 67 20 3f 61 72 67  d "eval arg ?arg
29a0: 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64   ...?".::tclread
29b0: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
29c0: 64 64 20 22 65 78 65 63 20 3f 73 77 69 74 63 68  dd "exec ?switch
29d0: 65 73 3f 20 61 72 67 20 3f 61 72 67 20 2e 2e 2e  es? arg ?arg ...
29e0: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
29f0: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
2a00: 65 78 70 72 20 61 72 67 20 3f 61 72 67 20 2e 2e  expr arg ?arg ..
2a10: 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  .?".::tclreadlin
2a20: 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20  e::readline add 
2a30: 22 66 62 6c 6f 63 6b 65 64 20 63 68 61 6e 6e 65  "fblocked channe
2a40: 6c 49 64 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  lId".::tclreadli
2a50: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
2a60: 20 22 66 63 6f 6e 66 69 67 75 72 65 20 63 68 61   "fconfigure cha
2a70: 6e 6e 65 6c 49 64 20 3f 6f 70 74 69 6f 6e 4e 61  nnelId ?optionNa
2a80: 6d 65 3f 20 3f 76 61 6c 75 65 3f 20 3f 6f 70 74  me? ?value? ?opt
2a90: 69 6f 6e 4e 61 6d 65 20 76 61 6c 75 65 3f 2e 2e  ionName value?..
2aa0: 2e 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  .".::tclreadline
2ab0: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
2ac0: 66 63 6f 70 79 20 69 6e 70 75 74 20 6f 75 74 70  fcopy input outp
2ad0: 75 74 20 3f 2d 73 69 7a 65 20 73 69 7a 65 3f 20  ut ?-size size? 
2ae0: 3f 2d 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 62 61  ?-command callba
2af0: 63 6b 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  ck?".::tclreadli
2b00: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
2b10: 20 22 66 69 6c 65 20 6f 70 74 69 6f 6e 20 3f 61   "file option ?a
2b20: 72 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65  rg ...?".::tclre
2b30: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
2b40: 20 61 64 64 20 22 66 69 6c 65 65 76 65 6e 74 20   add "fileevent 
2b50: 63 68 61 6e 6e 65 6c 49 64 20 65 76 65 6e 74 20  channelId event 
2b60: 3f 73 63 72 69 70 74 3f 22 0a 3a 3a 74 63 6c 72  ?script?".::tclr
2b70: 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e  eadline::readlin
2b80: 65 20 61 64 64 20 22 66 6c 75 73 68 20 63 68 61  e add "flush cha
2b90: 6e 6e 65 6c 49 64 22 0a 3a 3a 74 63 6c 72 65 61  nnelId".::tclrea
2ba0: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
2bb0: 61 64 64 20 22 66 6f 72 20 73 74 61 72 74 20 74  add "for start t
2bc0: 65 73 74 20 6e 65 78 74 20 63 6f 6d 6d 61 6e 64  est next command
2bd0: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
2be0: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 66  :readline add "f
2bf0: 6f 72 65 61 63 68 20 76 61 72 4c 69 73 74 20 6c  oreach varList l
2c00: 69 73 74 20 3f 76 61 72 4c 69 73 74 20 6c 69 73  ist ?varList lis
2c10: 74 20 2e 2e 2e 3f 20 63 6f 6d 6d 61 6e 64 22 0a  t ...? command".
2c20: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
2c30: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 66 6f 72  eadline add "for
2c40: 6d 61 74 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  mat formatString
2c50: 20 3f 61 72 67 20 61 72 67 20 2e 2e 2e 3f 22 0a   ?arg arg ...?".
2c60: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
2c70: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 67 65 74  eadline add "get
2c80: 73 20 63 68 61 6e 6e 65 6c 49 64 20 3f 76 61 72  s channelId ?var
2c90: 4e 61 6d 65 3f 22 0a 3a 3a 74 63 6c 72 65 61 64  Name?".::tclread
2ca0: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
2cb0: 64 64 20 22 67 6c 6f 62 20 3f 73 77 69 74 63 68  dd "glob ?switch
2cc0: 65 73 3f 20 6e 61 6d 65 20 3f 6e 61 6d 65 20 2e  es? name ?name .
2cd0: 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  ..?".::tclreadli
2ce0: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
2cf0: 20 22 67 6c 6f 62 61 6c 20 76 61 72 4e 61 6d 65   "global varName
2d00: 20 3f 76 61 72 4e 61 6d 65 20 2e 2e 2e 3f 22 0a   ?varName ...?".
2d10: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
2d20: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 69 6e 63  eadline add "inc
2d30: 72 20 76 61 72 4e 61 6d 65 20 3f 69 6e 63 72 65  r varName ?incre
2d40: 6d 65 6e 74 3f 22 0a 3a 3a 74 63 6c 72 65 61 64  ment?".::tclread
2d50: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
2d60: 64 64 20 22 69 6e 66 6f 20 6f 70 74 69 6f 6e 20  dd "info option 
2d70: 3f 61 72 67 20 61 72 67 20 2e 2e 2e 3f 22 0a 3a  ?arg arg ...?".:
2d80: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65  :tclreadline::re
2d90: 61 64 6c 69 6e 65 20 61 64 64 20 22 69 6e 74 65  adline add "inte
2da0: 72 70 20 63 6d 64 20 3f 61 72 67 20 2e 2e 2e 3f  rp cmd ?arg ...?
2db0: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
2dc0: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 6a  :readline add "j
2dd0: 6f 69 6e 20 6c 69 73 74 20 3f 6a 6f 69 6e 53 74  oin list ?joinSt
2de0: 72 69 6e 67 3f 22 0a 3a 3a 74 63 6c 72 65 61 64  ring?".::tclread
2df0: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
2e00: 64 64 20 22 6c 61 70 70 65 6e 64 20 76 61 72 4e  dd "lappend varN
2e10: 61 6d 65 20 3f 76 61 6c 75 65 20 76 61 6c 75 65  ame ?value value
2e20: 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64   ...?".::tclread
2e30: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
2e40: 64 64 20 22 6c 69 6e 64 65 78 20 6c 69 73 74 20  dd "lindex list 
2e50: 69 6e 64 65 78 22 0a 3a 3a 74 63 6c 72 65 61 64  index".::tclread
2e60: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
2e70: 64 64 20 22 6c 69 6e 73 65 72 74 20 6c 69 73 74  dd "linsert list
2e80: 20 69 6e 64 65 78 20 65 6c 65 6d 65 6e 74 20 3f   index element ?
2e90: 65 6c 65 6d 65 6e 74 20 2e 2e 2e 3f 22 0a 3a 3a  element ...?".::
2ea0: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
2eb0: 64 6c 69 6e 65 20 61 64 64 20 22 6c 6c 65 6e 67  dline add "lleng
2ec0: 74 68 20 6c 69 73 74 22 0a 3a 3a 74 63 6c 72 65  th list".::tclre
2ed0: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
2ee0: 20 61 64 64 20 22 6c 6f 61 64 20 66 69 6c 65 4e   add "load fileN
2ef0: 61 6d 65 20 3f 70 61 63 6b 61 67 65 4e 61 6d 65  ame ?packageName
2f00: 3f 20 3f 69 6e 74 65 72 70 3f 22 0a 3a 3a 74 63  ? ?interp?".::tc
2f10: 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c  lreadline::readl
2f20: 69 6e 65 20 61 64 64 20 22 6c 72 61 6e 67 65 20  ine add "lrange 
2f30: 6c 69 73 74 20 66 69 72 73 74 20 6c 61 73 74 22  list first last"
2f40: 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a  .::tclreadline::
2f50: 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 6c 72  readline add "lr
2f60: 65 70 6c 61 63 65 20 6c 69 73 74 20 66 69 72 73  eplace list firs
2f70: 74 20 6c 61 73 74 20 3f 65 6c 65 6d 65 6e 74 20  t last ?element 
2f80: 65 6c 65 6d 65 6e 74 20 2e 2e 2e 3f 22 0a 3a 3a  element ...?".::
2f90: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
2fa0: 64 6c 69 6e 65 20 61 64 64 20 22 6c 73 65 61 72  dline add "lsear
2fb0: 63 68 20 3f 6d 6f 64 65 3f 20 6c 69 73 74 20 70  ch ?mode? list p
2fc0: 61 74 74 65 72 6e 22 0a 3a 3a 74 63 6c 72 65 61  attern".::tclrea
2fd0: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
2fe0: 61 64 64 20 22 6c 73 6f 72 74 20 3f 6f 70 74 69  add "lsort ?opti
2ff0: 6f 6e 73 3f 20 6c 69 73 74 22 0a 3a 3a 74 63 6c  ons? list".::tcl
3000: 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69  readline::readli
3010: 6e 65 20 61 64 64 20 22 6e 61 6d 65 73 70 61 63  ne add "namespac
3020: 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72  e subcommand ?ar
3030: 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61  g ...?".::tclrea
3040: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
3050: 61 64 64 20 22 6f 70 65 6e 20 66 69 6c 65 4e 61  add "open fileNa
3060: 6d 65 20 3f 61 63 63 65 73 73 3f 20 3f 70 65 72  me ?access? ?per
3070: 6d 69 73 73 69 6f 6e 73 3f 22 0a 3a 3a 74 63 6c  missions?".::tcl
3080: 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69  readline::readli
3090: 6e 65 20 61 64 64 20 22 70 61 63 6b 61 67 65 20  ne add "package 
30a0: 6f 70 74 69 6f 6e 20 3f 61 72 67 20 61 72 67 20  option ?arg arg 
30b0: 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  ...?".::tclreadl
30c0: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
30d0: 64 20 22 70 72 6f 63 20 6e 61 6d 65 20 61 72 67  d "proc name arg
30e0: 73 20 62 6f 64 79 22 0a 3a 3a 74 63 6c 72 65 61  s body".::tclrea
30f0: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
3100: 61 64 64 20 22 70 75 74 73 20 3f 2d 6e 6f 6e 65  add "puts ?-none
3110: 77 6c 69 6e 65 3f 20 3f 63 68 61 6e 6e 65 6c 49  wline? ?channelI
3120: 64 3f 20 73 74 72 69 6e 67 22 0a 3a 3a 74 63 6c  d? string".::tcl
3130: 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69  readline::readli
3140: 6e 65 20 61 64 64 20 22 72 65 61 64 20 3f 2d 6e  ne add "read ?-n
3150: 6f 6e 65 77 6c 69 6e 65 3f 20 63 68 61 6e 6e 65  onewline? channe
3160: 6c 49 64 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  lId".::tclreadli
3170: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
3180: 20 22 72 65 67 65 78 70 20 3f 73 77 69 74 63 68   "regexp ?switch
3190: 65 73 3f 20 65 78 70 20 73 74 72 69 6e 67 20 3f  es? exp string ?
31a0: 6d 61 74 63 68 56 61 72 3f 20 3f 73 75 62 4d 61  matchVar? ?subMa
31b0: 74 63 68 56 61 72 20 73 75 62 4d 61 74 63 68 56  tchVar subMatchV
31c0: 61 72 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65  ar ...?".::tclre
31d0: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
31e0: 20 61 64 64 20 22 72 65 67 73 75 62 20 3f 73 77   add "regsub ?sw
31f0: 69 74 63 68 65 73 3f 20 65 78 70 20 73 74 72 69  itches? exp stri
3200: 6e 67 20 73 75 62 53 70 65 63 20 76 61 72 4e 61  ng subSpec varNa
3210: 6d 65 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  me".::tclreadlin
3220: 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20  e::readline add 
3230: 22 72 65 6e 61 6d 65 20 6f 6c 64 4e 61 6d 65 20  "rename oldName 
3240: 6e 65 77 4e 61 6d 65 22 0a 3a 3a 74 63 6c 72 65  newName".::tclre
3250: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3260: 20 61 64 64 20 22 73 63 61 6e 20 73 74 72 69 6e   add "scan strin
3270: 67 20 66 6f 72 6d 61 74 20 3f 76 61 72 4e 61 6d  g format ?varNam
3280: 65 20 76 61 72 4e 61 6d 65 20 2e 2e 2e 3f 22 0a  e varName ...?".
3290: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
32a0: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 73 65 65  eadline add "see
32b0: 6b 20 63 68 61 6e 6e 65 6c 49 64 20 6f 66 66 73  k channelId offs
32c0: 65 74 20 3f 6f 72 69 67 69 6e 3f 22 0a 3a 3a 74  et ?origin?".::t
32d0: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64  clreadline::read
32e0: 6c 69 6e 65 20 61 64 64 20 22 73 65 74 20 76 61  line add "set va
32f0: 72 4e 61 6d 65 20 3f 6e 65 77 56 61 6c 75 65 3f  rName ?newValue?
3300: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
3310: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 73  :readline add "s
3320: 6f 63 6b 65 74 20 3f 2d 6d 79 61 64 64 72 20 61  ocket ?-myaddr a
3330: 64 64 72 3f 20 3f 2d 6d 79 70 6f 72 74 20 6d 79  ddr? ?-myport my
3340: 70 6f 72 74 3f 20 3f 2d 61 73 79 6e 63 3f 20 68  port? ?-async? h
3350: 6f 73 74 20 70 6f 72 74 22 0a 3a 3a 74 63 6c 72  ost port".::tclr
3360: 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e  eadline::readlin
3370: 65 20 61 64 64 20 22 73 6f 63 6b 65 74 20 2d 73  e add "socket -s
3380: 65 72 76 65 72 20 63 6f 6d 6d 61 6e 64 20 3f 2d  erver command ?-
3390: 6d 79 61 64 64 72 20 61 64 64 72 3f 20 70 6f 72  myaddr addr? por
33a0: 74 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  t".::tclreadline
33b0: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
33c0: 73 6f 75 72 63 65 20 66 69 6c 65 4e 61 6d 65 22  source fileName"
33d0: 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a  .::tclreadline::
33e0: 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 73 70  readline add "sp
33f0: 6c 69 74 20 73 74 72 69 6e 67 20 3f 73 70 6c 69  lit string ?spli
3400: 74 43 68 61 72 73 3f 22 0a 3a 3a 74 63 6c 72 65  tChars?".::tclre
3410: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3420: 20 61 64 64 20 22 73 74 72 69 6e 67 20 6f 70 74   add "string opt
3430: 69 6f 6e 20 61 72 67 20 3f 61 72 67 20 2e 2e 2e  ion arg ?arg ...
3440: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
3450: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3460: 73 75 62 73 74 20 3f 2d 6e 6f 62 61 63 6b 73 6c  subst ?-nobacksl
3470: 61 73 68 65 73 3f 20 3f 2d 6e 6f 63 6f 6d 6d 61  ashes? ?-nocomma
3480: 6e 64 73 3f 20 3f 2d 6e 6f 76 61 72 69 61 62 6c  nds? ?-novariabl
3490: 65 73 3f 20 73 74 72 69 6e 67 22 0a 3a 3a 74 63  es? string".::tc
34a0: 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c  lreadline::readl
34b0: 69 6e 65 20 61 64 64 20 22 73 77 69 74 63 68 20  ine add "switch 
34c0: 3f 73 77 69 74 63 68 65 73 3f 20 73 74 72 69 6e  ?switches? strin
34d0: 67 20 70 61 74 74 65 72 6e 20 62 6f 64 79 20 2e  g pattern body .
34e0: 2e 2e 20 3f 64 65 66 61 75 6c 74 20 62 6f 64 79  .. ?default body
34f0: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
3500: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3510: 74 65 6c 6c 20 63 68 61 6e 6e 65 6c 49 64 22 0a  tell channelId".
3520: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3530: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 74 69 6d  eadline add "tim
3540: 65 20 63 6f 6d 6d 61 6e 64 20 3f 63 6f 75 6e 74  e command ?count
3550: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
3560: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3570: 74 72 61 63 65 20 6f 70 74 69 6f 6e 20 5c 5b 61  trace option \[a
3580: 72 67 20 61 72 67 20 2e 2e 2e 5c 5d 22 0a 3a 3a  rg arg ...\]".::
3590: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
35a0: 64 6c 69 6e 65 20 61 64 64 20 22 75 6e 73 65 74  dline add "unset
35b0: 20 76 61 72 4e 61 6d 65 20 3f 76 61 72 4e 61 6d   varName ?varNam
35c0: 65 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61  e ...?".::tclrea
35d0: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
35e0: 61 64 64 20 22 75 70 6c 65 76 65 6c 20 3f 6c 65  add "uplevel ?le
35f0: 76 65 6c 3f 20 63 6f 6d 6d 61 6e 64 20 3f 61 72  vel? command ?ar
3600: 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61  g ...?".::tclrea
3610: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
3620: 61 64 64 20 22 75 70 76 61 72 20 3f 6c 65 76 65  add "upvar ?leve
3630: 6c 3f 20 6f 74 68 65 72 56 61 72 20 6c 6f 63 61  l? otherVar loca
3640: 6c 56 61 72 20 3f 6f 74 68 65 72 56 61 72 20 6c  lVar ?otherVar l
3650: 6f 63 61 6c 56 61 72 20 2e 2e 2e 3f 22 0a 3a 3a  ocalVar ...?".::
3660: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
3670: 64 6c 69 6e 65 20 61 64 64 20 22 76 77 61 69 74  dline add "vwait
3680: 20 6e 61 6d 65 22 0a 3a 3a 74 63 6c 72 65 61 64   name".::tclread
3690: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
36a0: 64 64 20 22 77 68 69 6c 65 20 74 65 73 74 20 63  dd "while test c
36b0: 6f 6d 6d 61 6e 64 22 0a 72 65 6e 61 6d 65 20 74  ommand".rename t
36c0: 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 49 6e 69 74  clreadline::Init
36d0: 54 63 6c 43 6d 64 73 20 22 22 0a 0a 7d 0a 0a 70  TclCmds ""..}..p
36e0: 72 6f 63 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  roc ::tclreadlin
36f0: 65 3a 3a 49 6e 69 74 54 6b 43 6d 64 73 20 7b 7d  e::InitTkCmds {}
3700: 20 7b 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65   {.::tclreadline
3710: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3720: 62 69 6e 64 20 77 69 6e 64 6f 77 20 3f 70 61 74  bind window ?pat
3730: 74 65 72 6e 3f 20 3f 63 6f 6d 6d 61 6e 64 3f 22  tern? ?command?"
3740: 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a  .::tclreadline::
3750: 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 62 69  readline add "bi
3760: 6e 64 74 61 67 73 20 77 69 6e 64 6f 77 20 3f 74  ndtags window ?t
3770: 61 67 73 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  ags?".::tclreadl
3780: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
3790: 64 20 22 62 75 74 74 6f 6e 20 70 61 74 68 4e 61  d "button pathNa
37a0: 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a 3a 3a  me ?options?".::
37b0: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
37c0: 64 6c 69 6e 65 20 61 64 64 20 22 63 61 6e 76 61  dline add "canva
37d0: 73 20 70 61 74 68 4e 61 6d 65 20 3f 6f 70 74 69  s pathName ?opti
37e0: 6f 6e 73 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  ons?".::tclreadl
37f0: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
3800: 64 20 22 63 68 65 63 6b 62 75 74 74 6f 6e 20 70  d "checkbutton p
3810: 61 74 68 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e 73  athName ?options
3820: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
3830: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3840: 63 6c 69 70 62 6f 61 72 64 20 6f 70 74 69 6f 6e  clipboard option
3850: 20 3f 61 72 67 20 61 72 67 20 2e 2e 2e 3f 22 0a   ?arg arg ...?".
3860: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3870: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 65 6e 74  eadline add "ent
3880: 72 79 20 70 61 74 68 4e 61 6d 65 20 3f 6f 70 74  ry pathName ?opt
3890: 69 6f 6e 73 3f 22 0a 3a 3a 74 63 6c 72 65 61 64  ions?".::tclread
38a0: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
38b0: 64 64 20 22 65 76 65 6e 74 20 6f 70 74 69 6f 6e  dd "event option
38c0: 20 3f 61 72 67 31 3f 22 0a 3a 3a 74 63 6c 72 65   ?arg1?".::tclre
38d0: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
38e0: 20 61 64 64 20 22 66 6f 6e 74 20 6f 70 74 69 6f   add "font optio
38f0: 6e 20 3f 61 72 67 3f 22 0a 3a 3a 74 63 6c 72 65  n ?arg?".::tclre
3900: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3910: 20 61 64 64 20 22 66 72 61 6d 65 20 70 61 74 68   add "frame path
3920: 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a  Name ?options?".
3930: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3940: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 67 72 61  eadline add "gra
3950: 62 20 6f 70 74 69 6f 6e 20 3f 61 72 67 20 61 72  b option ?arg ar
3960: 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61  g ...?".::tclrea
3970: 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20  dline::readline 
3980: 61 64 64 20 22 67 72 69 64 20 6f 70 74 69 6f 6e  add "grid option
3990: 20 61 72 67 20 3f 61 72 67 20 2e 2e 2e 3f 22 0a   arg ?arg ...?".
39a0: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
39b0: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 69 6d 61  eadline add "ima
39c0: 67 65 20 6f 70 74 69 6f 6e 20 3f 61 72 67 73 3f  ge option ?args?
39d0: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
39e0: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 6c  :readline add "l
39f0: 61 62 65 6c 20 70 61 74 68 4e 61 6d 65 20 3f 6f  abel pathName ?o
3a00: 70 74 69 6f 6e 73 3f 22 0a 3a 3a 74 63 6c 72 65  ptions?".::tclre
3a10: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3a20: 20 61 64 64 20 22 6c 69 73 74 62 6f 78 20 70 61   add "listbox pa
3a30: 74 68 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f  thName ?options?
3a40: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
3a50: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 6c  :readline add "l
3a60: 6f 77 65 72 20 77 69 6e 64 6f 77 20 3f 62 65 6c  ower window ?bel
3a70: 6f 77 54 68 69 73 3f 22 0a 3a 3a 74 63 6c 72 65  owThis?".::tclre
3a80: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3a90: 20 61 64 64 20 22 6d 65 6e 75 20 70 61 74 68 4e   add "menu pathN
3aa0: 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a 3a  ame ?options?".:
3ab0: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65  :tclreadline::re
3ac0: 61 64 6c 69 6e 65 20 61 64 64 20 22 6d 65 6e 75  adline add "menu
3ad0: 62 75 74 74 6f 6e 20 70 61 74 68 4e 61 6d 65 20  button pathName 
3ae0: 3f 6f 70 74 69 6f 6e 73 3f 22 0a 3a 3a 74 63 6c  ?options?".::tcl
3af0: 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69  readline::readli
3b00: 6e 65 20 61 64 64 20 22 6d 65 73 73 61 67 65 20  ne add "message 
3b10: 70 61 74 68 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e  pathName ?option
3b20: 73 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e  s?".::tclreadlin
3b30: 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20  e::readline add 
3b40: 22 6f 70 74 69 6f 6e 20 63 6d 64 20 61 72 67 20  "option cmd arg 
3b50: 3f 61 72 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c  ?arg ...?".::tcl
3b60: 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69  readline::readli
3b70: 6e 65 20 61 64 64 20 22 70 61 63 6b 20 6f 70 74  ne add "pack opt
3b80: 69 6f 6e 20 61 72 67 20 3f 61 72 67 20 2e 2e 2e  ion arg ?arg ...
3b90: 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  ?".::tclreadline
3ba0: 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22  ::readline add "
3bb0: 72 61 64 69 6f 62 75 74 74 6f 6e 20 70 61 74 68  radiobutton path
3bc0: 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a  Name ?options?".
3bd0: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3be0: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 72 61 69  eadline add "rai
3bf0: 73 65 20 77 69 6e 64 6f 77 20 3f 61 62 6f 76 65  se window ?above
3c00: 54 68 69 73 3f 22 0a 3a 3a 74 63 6c 72 65 61 64  This?".::tclread
3c10: 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61  line::readline a
3c20: 64 64 20 22 73 63 61 6c 65 20 70 61 74 68 4e 61  dd "scale pathNa
3c30: 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a 3a 3a  me ?options?".::
3c40: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61  tclreadline::rea
3c50: 64 6c 69 6e 65 20 61 64 64 20 22 73 63 72 6f 6c  dline add "scrol
3c60: 6c 62 61 72 20 70 61 74 68 4e 61 6d 65 20 3f 6f  lbar pathName ?o
3c70: 70 74 69 6f 6e 73 3f 22 0a 3a 3a 74 63 6c 72 65  ptions?".::tclre
3c80: 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65  adline::readline
3c90: 20 61 64 64 20 22 73 65 6c 65 63 74 69 6f 6e 20   add "selection 
3ca0: 6f 70 74 69 6f 6e 20 3f 61 72 67 20 61 72 67 20  option ?arg arg 
3cb0: 2e 2e 2e 3f 22 0a 3a 3a 74 63 6c 72 65 61 64 6c  ...?".::tclreadl
3cc0: 69 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64  ine::readline ad
3cd0: 64 20 22 73 65 6e 64 20 3f 6f 70 74 69 6f 6e 73  d "send ?options
3ce0: 3f 20 69 6e 74 65 72 70 4e 61 6d 65 20 61 72 67  ? interpName arg
3cf0: 20 3f 61 72 67 20 2e 2e 2e 3f 22 0a 3a 3a 74 63   ?arg ...?".::tc
3d00: 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c  lreadline::readl
3d10: 69 6e 65 20 61 64 64 20 22 74 65 78 74 20 70 61  ine add "text pa
3d20: 74 68 4e 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f  thName ?options?
3d30: 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a  ".::tclreadline:
3d40: 3a 72 65 61 64 6c 69 6e 65 20 61 64 64 20 22 74  :readline add "t
3d50: 6b 20 6f 70 74 69 6f 6e 20 3f 61 72 67 3f 22 0a  k option ?arg?".
3d60: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3d70: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 74 6b 77  eadline add "tkw
3d80: 61 69 74 20 76 61 72 69 61 62 6c 65 7c 76 69 73  ait variable|vis
3d90: 69 62 69 6c 69 74 79 7c 77 69 6e 64 6f 77 20 6e  ibility|window n
3da0: 61 6d 65 22 0a 3a 3a 74 63 6c 72 65 61 64 6c 69  ame".::tclreadli
3db0: 6e 65 3a 3a 72 65 61 64 6c 69 6e 65 20 61 64 64  ne::readline add
3dc0: 20 22 74 6f 70 6c 65 76 65 6c 20 70 61 74 68 4e   "toplevel pathN
3dd0: 61 6d 65 20 3f 6f 70 74 69 6f 6e 73 3f 22 0a 3a  ame ?options?".:
3de0: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72 65  :tclreadline::re
3df0: 61 64 6c 69 6e 65 20 61 64 64 20 22 77 69 6e 66  adline add "winf
3e00: 6f 20 6f 70 74 69 6f 6e 20 3f 61 72 67 3f 22 0a  o option ?arg?".
3e10: 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 72  ::tclreadline::r
3e20: 65 61 64 6c 69 6e 65 20 61 64 64 20 22 77 6d 20  eadline add "wm 
3e30: 6f 70 74 69 6f 6e 20 77 69 6e 64 6f 77 20 3f 61  option window ?a
3e40: 72 67 20 2e 2e 2e 3f 22 0a 72 65 6e 61 6d 65 20  rg ...?".rename 
3e50: 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 49 6e 69  tclreadline::Ini
3e60: 74 54 6b 43 6d 64 73 20 22 22 0a 7d 0a 0a        tTkCmds "".}..