Hex Artifact Content
Not logged in

Artifact d65998f0e16f98aa5cadbfb8e2286839d2c45d7e:


0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 20 46 49 4c 45  #!/bin/sh.# FILE
0010: 3a 20 73 61 6d 70 6c 65 2e 74 63 6c 73 68 72 63  : sample.tclshrc
0020: 0a 23 20 24 49 64 24 0a 23 20 2d 2d 2d 0a 23 20  .# $Id$.# ---.# 
0030: 74 63 6c 72 65 61 64 6c 69 6e 65 20 2d 2d 20 67  tclreadline -- g
0040: 6e 75 20 72 65 61 64 6c 69 6e 65 20 66 6f 72 20  nu readline for 
0050: 74 63 6c 0a 23 20 68 74 74 70 3a 2f 2f 77 77 77  tcl.# http://www
0060: 2e 7a 65 6c 6c 6e 65 72 2e 6f 72 67 2f 74 63 6c  .zellner.org/tcl
0070: 72 65 61 64 6c 69 6e 65 2f 0a 23 20 43 6f 70 79  readline/.# Copy
0080: 72 69 67 68 74 20 28 63 29 20 31 39 39 38 20 2d  right (c) 1998 -
0090: 20 32 30 31 34 2c 20 4a 6f 68 61 6e 6e 65 73 20   2014, Johannes 
00a0: 5a 65 6c 6c 6e 65 72 20 3c 6a 6f 68 61 6e 6e 65  Zellner <johanne
00b0: 73 40 7a 65 6c 6c 6e 65 72 2e 6f 72 67 3e 0a 23  s@zellner.org>.#
00c0: 20 54 68 69 73 20 73 6f 66 74 77 61 72 65 20 69   This software i
00d0: 73 20 63 6f 70 79 72 69 67 68 74 20 75 6e 64 65  s copyright unde
00e0: 72 20 74 68 65 20 42 53 44 20 6c 69 63 65 6e 73  r the BSD licens
00f0: 65 2e 0a 23 20 2d 2d 2d 0a 0a 23 20 65 78 65 63  e..# ---..# exec
0100: 20 77 69 74 68 20 74 63 6c 73 68 20 5c 0a 65 78   with tclsh \.ex
0110: 65 63 20 74 63 6c 73 68 20 22 24 30 22 20 22 24  ec tclsh "$0" "$
0120: 40 22 0a 0a 0a 69 66 20 7b 24 74 63 6c 5f 69 6e  @"...if {$tcl_in
0130: 74 65 72 61 63 74 69 76 65 7d 20 7b 0a 0a 20 20  teractive} {..  
0140: 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72    package requir
0150: 65 20 74 63 6c 72 65 61 64 6c 69 6e 65 0a 0a 20  e tclreadline.. 
0160: 20 20 20 23 20 75 6e 63 6f 6d 6d 65 6e 74 20 74     # uncomment t
0170: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 66 20  he following if 
0180: 62 6c 6f 63 6b 2c 20 69 66 20 79 6f 75 0a 20 20  block, if you.  
0190: 20 20 23 20 77 61 6e 74 20 60 6c 73 27 20 65 78    # want `ls' ex
01a0: 65 63 75 74 65 64 20 61 66 74 65 72 20 65 76 65  ecuted after eve
01b0: 72 79 20 60 63 64 27 2e 20 28 54 68 69 73 20 77  ry `cd'. (This w
01c0: 61 73 0a 20 20 20 20 23 20 74 68 65 20 64 65 66  as.    # the def
01d0: 61 75 6c 74 20 75 70 20 74 6f 20 30 2e 38 20 3d  ault up to 0.8 =
01e0: 3d 20 74 63 6c 72 65 61 64 6c 69 6e 65 5f 76 65  = tclreadline_ve
01f0: 72 73 69 6f 6e 2e 29 0a 20 20 20 20 23 0a 20 20  rsion.).    #.  
0200: 20 20 23 20 69 66 20 7b 22 22 20 3d 3d 20 5b 69    # if {"" == [i
0210: 6e 66 6f 20 70 72 6f 63 73 20 63 64 5d 7d 20 7b  nfo procs cd]} {
0220: 0a 20 20 20 20 23 20 20 20 20 20 63 61 74 63 68  .    #     catch
0230: 20 7b 72 65 6e 61 6d 65 20 3a 3a 74 63 6c 72 65   {rename ::tclre
0240: 61 64 6c 69 6e 65 3a 3a 43 64 20 22 22 7d 0a 20  adline::Cd ""}. 
0250: 20 20 20 23 20 20 20 20 20 72 65 6e 61 6d 65 20     #     rename 
0260: 63 64 20 3a 3a 74 63 6c 72 65 61 64 6c 69 6e 65  cd ::tclreadline
0270: 3a 3a 43 64 0a 20 20 20 20 23 20 20 20 20 20 70  ::Cd.    #     p
0280: 72 6f 63 20 63 64 20 7b 61 72 67 73 7d 20 7b 0a  roc cd {args} {.
0290: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 69 66      #         if
02a0: 20 7b 5b 63 61 74 63 68 20 7b 65 76 61 6c 20 3a   {[catch {eval :
02b0: 3a 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 43 64  :tclreadline::Cd
02c0: 20 24 61 72 67 73 7d 20 6d 65 73 73 61 67 65 5d   $args} message]
02d0: 7d 20 7b 0a 20 20 20 20 23 20 20 20 20 20 20 20  } {.    #       
02e0: 20 20 20 20 20 20 70 75 74 73 20 73 74 64 65 72        puts stder
02f0: 72 20 22 24 6d 65 73 73 61 67 65 22 0a 20 20 20  r "$message".   
0300: 20 23 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20   #         }.   
0310: 20 23 20 20 20 20 20 20 20 20 20 74 63 6c 72 65   #         tclre
0320: 61 64 6c 69 6e 65 3a 3a 6c 73 0a 20 20 20 20 23  adline::ls.    #
0330: 20 20 20 20 20 7d 0a 20 20 20 20 23 20 7d 0a 0a       }.    # }..
0340: 20 20 20 20 23 20 75 6e 63 6f 6d 6d 65 6e 74 20      # uncomment 
0350: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69  the following li
0360: 6e 65 20 74 6f 20 75 73 65 0a 20 20 20 20 23 20  ne to use.    # 
0370: 74 63 6c 72 65 61 64 6c 69 6e 65 27 73 20 66 61  tclreadline's fa
0380: 6e 63 79 20 6c 73 20 70 72 6f 63 2e 0a 20 20 20  ncy ls proc..   
0390: 20 23 0a 20 20 20 20 23 20 6e 61 6d 65 73 70 61   #.    # namespa
03a0: 63 65 20 69 6d 70 6f 72 74 20 74 63 6c 72 65 61  ce import tclrea
03b0: 64 6c 69 6e 65 3a 3a 6c 73 0a 0a 20 20 20 20 23  dline::ls..    #
03c0: 20 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 50 72   tclreadline::Pr
03d0: 69 6e 74 20 69 73 20 6f 6e 20 28 60 79 65 73 27  int is on (`yes'
03e0: 29 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20  ) by default..  
03f0: 20 20 23 20 54 68 69 73 20 6d 69 6d 69 63 73 20    # This mimics 
0400: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 65 63 68 6f  the command echo
0410: 69 6e 67 20 6c 69 6b 65 20 69 6e 20 74 68 65 0a  ing like in the.
0420: 20 20 20 20 23 20 6e 6f 6e 2d 72 65 61 64 6c 69      # non-readli
0430: 6e 65 20 69 6e 74 65 72 61 63 74 69 76 65 20 74  ne interactive t
0440: 63 6c 73 68 2e 0a 20 20 20 20 23 20 49 66 20 79  clsh..    # If y
0450: 6f 75 20 64 6f 6e 27 74 20 6c 69 6b 65 20 74 68  ou don't like th
0460: 69 73 2c 20 75 6e 63 6f 6d 6d 65 6e 74 20 74 68  is, uncomment th
0470: 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 20 20 20 20  e following.    
0480: 23 20 6c 69 6e 65 2e 0a 20 20 20 20 23 0a 20 20  # line..    #.  
0490: 20 20 23 20 74 63 6c 72 65 61 64 6c 69 6e 65 3a    # tclreadline:
04a0: 3a 50 72 69 6e 74 20 6e 6f 0a 0a 20 20 20 20 23  :Print no..    #
04b0: 20 75 6e 63 6f 6d 6d 65 6e 74 20 74 68 65 20 66   uncomment the f
04c0: 6f 6c 6c 69 6e 67 20 6c 69 6e 65 2c 20 69 66 20  olling line, if 
04d0: 79 6f 75 20 77 61 6e 74 0a 20 20 20 20 23 20 74  you want.    # t
04e0: 6f 20 63 68 61 6e 67 65 20 74 63 6c 72 65 61 64  o change tclread
04f0: 6c 69 6e 65 27 73 20 70 72 69 6e 74 20 62 65 68  line's print beh
0500: 61 76 69 6f 75 72 0a 20 20 20 20 23 20 66 72 65  aviour.    # fre
0510: 71 75 65 6e 74 6c 79 20 77 69 74 68 20 6c 65 73  quently with les
0520: 73 20 74 79 70 69 6e 67 2e 0a 20 20 20 20 23 0a  s typing..    #.
0530: 20 20 20 20 23 20 6e 61 6d 65 73 70 61 63 65 20      # namespace 
0540: 69 6d 70 6f 72 74 20 74 63 6c 72 65 61 64 6c 69  import tclreadli
0550: 6e 65 3a 3a 50 72 69 6e 74 0a 0a 20 20 20 20 23  ne::Print..    #
0560: 20 73 74 6f 72 65 20 6d 61 78 69 6d 61 6c 20 74   store maximal t
0570: 68 69 73 20 6d 75 63 68 20 6c 69 6e 65 73 20 69  his much lines i
0580: 6e 20 74 68 65 20 68 69 73 74 6f 72 79 20 66 69  n the history fi
0590: 6c 65 0a 20 20 20 20 23 0a 20 20 20 20 73 65 74  le.    #.    set
05a0: 20 74 63 6c 72 65 61 64 6c 69 6e 65 3a 3a 68 69   tclreadline::hi
05b0: 73 74 6f 72 79 4c 65 6e 67 74 68 20 32 30 30 0a  storyLength 200.
05c0: 0a 20 20 20 20 23 20 64 69 73 61 62 6c 65 20 74  .    # disable t
05d0: 63 6c 72 65 61 64 6c 69 6e 65 27 73 20 73 63 72  clreadline's scr
05e0: 69 70 74 20 63 6f 6d 70 6c 65 74 65 72 0a 20 20  ipt completer.  
05f0: 20 20 23 0a 20 20 20 20 23 20 3a 3a 74 63 6c 72    #.    # ::tclr
0600: 65 61 64 6c 69 6e 65 3a 3a 72 65 61 64 6c 69 6e  eadline::readlin
0610: 65 20 63 75 73 74 6f 6d 63 6f 6d 70 6c 65 74 65  e customcomplete
0620: 72 20 22 22 0a 0a 20 20 20 20 23 20 67 6f 20 74  r ""..    # go t
0630: 6f 20 74 63 6c 72 65 61 6c 64 69 6e 65 27 73 20  o tclrealdine's 
0640: 6d 61 69 6e 20 6c 6f 6f 70 2e 0a 20 20 20 20 23  main loop..    #
0650: 0a 20 20 20 20 74 63 6c 72 65 61 64 6c 69 6e 65  .    tclreadline
0660: 3a 3a 4c 6f 6f 70 0a 7d 0a 0a 23 20 76 69 6d 3a  ::Loop.}..# vim:
0670: 73 65 74 20 66 74 3d 74 63 6c 3a 0a              set ft=tcl:.