Version 100 of MJ

Updated 2009-10-30 18:09:26 by MJ

Real name Mark Janssen (Tcl Chatroom nick: mjanssen). I have been using Tcl since 2004 and I love it.


There are several reasons I love Tcl:

  • It supports Unicode in code and GUI
  • The community is great
  • It is truly interactive: Open a console in your application and see what is really going on
  • Tclkit or Starkit deployment is very, very convenient
  • It is very easy to install libraries without changing config files all over the place
  • The community is great
  • Very simple syntax and everything is a string: This allows for some funky stuff like redefining proc
  • The C-API is one of the easiest of any of the ones I have seen (Perl, Python, Ruby) this makes it very easy to wrap C libraries. See for an example readline
  • The community is great

Current projects

  • Embedding tcc in a Tcl extension. It can compile an example Tcl extension at the moment tdom and supports VFS

Pages I contributed to

Random ideas I like to pursue

TODO

  • Tcl frontend to fossil db's
  • Caching in the Self extension using epoch counters

Autoexpansion of leading word

Until I find a better spot to put this, the following patch will change Tcl so it will autoexpand leading words (at least to a point where you can experiment with it)

diff --git a/tcl/generic/tclParse.c b/tcl/generic/tclParse.c
index b06b106..02b126f 100644
--- a/tcl/generic/tclParse.c
+++ b/tcl/generic/tclParse.c
@@ -266,6 +266,8 @@ Tcl_ParseCommand(
     const char *termPtr;        /* Set by Tcl_ParseBraces/QuotedString to
                                  * point to char after terminating one. */
     int scanned;
+    int expandWord;
+    int firstWord;
 
     if ((start == NULL) && (numBytes != 0)) {
         if (interp != NULL) {
@@ -307,8 +309,14 @@ Tcl_ParseCommand(
      */
 
     parsePtr->commandStart = src;
+    firstWord = 1;
     while (1) {
-        int expandWord = 0;
+        if (firstWord) {
+           expandWord = 1;
+           firstWord = 0;
+        } else {
+           expandWord = 0;
+        }
 
         /*
          * Create the token for the word.
diff --git a/tcl/library/clock.tcl b/tcl/library/clock.tcl
index 7411fd6..6d1bb7a 100644
--- a/tcl/library/clock.tcl
+++ b/tcl/library/clock.tcl
@@ -693,7 +693,7 @@ proc ::tcl::clock::format { args } {
             [ParseClockFormatFormat $procName $format $locale]
     }
     
-    return [$procName $clockval $timezone]
+    return [[list $procName] $clockval $timezone]
 }
 
 #----------------------------------------------------------------------


Everything I post on the wiki is in the public domain unless explicitly marked otherwise. I would love to hear if some of it was useful to you though.