tkcon - Tk console replacement
tkcon [{option value | tcl_script}
...]
TkCon is a replacement for the standard console that comes with Tk
(on Windows/Mac, but also works on Unix). The console itself provides many
more features than the standard console. TkCon works on all platforms where
Tcl/Tk is available. It is meant primarily to aid one when working with the
little details inside Tcl and Tk, giving Unix users the GUI console provided
by default in the Mac and Windows Tk.
- tkcon [{option
value | tcl_script} ...]
Except for -rcfile, command line arguments are handled
after the TkCon resource file is sourced, but before the slave interpreter
or the TkCon user interface is initialized.
-rcfile is handled right before it would be sourced,
allowing you to specify any alternate file. Command line arguments are
passed to each new console and will be evaluated by each. To prevent this
from happening, you have to say
tkcon main set argv {}; tkcon main set argc 0
For these options, any unique substring is allowed.
- -argv (also
--)
- Causes TkCon to stop evaluating arguments and set the remaining args to be
argv/argc (with -- prepended). This carries over for any further
consoles. This is meant only for wrapping TkCon around programs that
require their own arguments.
- -color-<color>
color
- Sets the requested color type to the specified color for tkcon. See
tkconrc(5) for the recognized <color> names.
- -eval tcl_script
(also -main or -e)
- A Tcl script to eval in each main interpreter. This is evaluated after the
resource file is loaded and the slave interpreter is created. Multiple
-eval switches will be recognized (in order).
- -exec
slavename
- Sets the named slave that tkcon operates in. In general, this is only
useful to set to "" (empty), indicating to tkcon to avoid
the multi-interpreter model and operate in the main environment. When this
is empty, any further arguments will be only used in the first tkcon
console and not passed onto further new consoles. This is useful when
using tkcon as a console for extended wish executables that don't load
there commands into slave interpreters.
- -font
font
- Sets the font that tkcon uses for its text windows. If this isn't a fixed
width font, tkcon will override it.
- -nontcl
TCL_BOOLEAN
- Sets ::tkcon::OPT(nontcl) to TCL_BOOLEAN (see
tkconrc(5)). Needed when attaching to non-Tcl interpreters.
- -package
package_name (also -load)
- Packages to automatically load into the slave interpreters (i.e.
"Tk").
- -rcfile
filename
- Specify an alternate tkcon resource file name.
- -root
widgetname
- Makes the named widget the root name of all consoles (i.e. .tkcon).
- -slave
tcl_script
- A Tcl script to eval in each slave interpreter. This will append the one
specified in the tkcon resource file, if any.
Most of the bindings are the same as for the text widget.
Some have been modified to make sure that the integrity of the console is
maintained. Others have been added to enhance the usefulness of the console.
Only the modified or new bindings are listed here.
- Control-x or
Cut (on Sparc5 keyboards)
- Cut.
- Control-c or
Copy (on Sparc5 keyboards)
- Copy.
- Control-v or
Paste (on Sparc5 keyboards)
- Paste.
- Insert
- Insert (duh).
- Up
- Goes up one level in the commands line history when cursor is on the
prompt line, otherwise it moves through the buffer.
- Down
- Goes down one level in the commands line history when cursor is on the
last line of the buffer, otherwise it moves through the buffer.
- Control-p
- Goes up one level in the commands line history.
- Control-n
- Goes down one level in the commands line history.
- Tab
- Tries to expand file path names, then variable names, then proc
names.
- Escape
- Tries to expand file path names.
- Control-P
- Tries to expand procedure names. The procedure names will be those that
are actually in the attached interpreter (unless nontcl is specified, in
which case it always does the lookup in the default slave
interpreter).
- Control-V
- Tries to expand variable names (those returned by [info vars]). It's
search behavior is like that for procedure names.
- Return or
Enter
- Evaluates the current command line if it is a complete command, otherwise
it just goes to a new line.
- Control-a
- Go to the beginning of the current command line.
- Control-l
- Clear the entire console buffer.
- Control-r
- Searches backwards in the history for any command that contains the string
in the current command line. Repeatable to search farther back. The
matching substring off the found command will blink.
- Control-s
- As above, but searches forward (only useful if you searched too far
back).
- Control-t
- Transposes characters.
- Control-u
- Clears the current command line.
- Control-z
- Saves current command line in a buffer that can be retrieved with another
Control-z. If the current command line is empty, then any saved
command is retrieved without being overwritten, otherwise the current
contents get swapped with what's in the saved command buffer.
- Control-Key-1
- Attaches console to the console's slave interpreter.
- Control-Key-2
- Attaches console to the console's master interpreter.
- Control-Key-3
- Attaches console to main TkCon interpreter.
- Control-A
- Pops up the "About" dialog.
- Control-N
- Creates a new console. Each console has separate state, including it's own
widget hierarchy (it's a slave interpreter).
- Control-q
- Close the current console OR Quit the program (depends on the value of
::tkcon::TKCON(slaveexit)).
- Control-w
- Closes the current console. Closing the main console will exit the program
(something has to control all the slaves...).
TkCon also has electric bracing (similar to that in emacs). It
will highlight matching pairs of {}'s, []'s, ()'s and ""'s. For
the first three, if there is no matching left element for the right, then it
blinks the entire current command line. For the double quote, if there is no
proper match then it just blinks the current double quote character. It does
properly recognize most escaping (except escaped escapes), but does not look
for commenting (why would you interactively put comments in?).
There are several new procedures introduced in TkCon to improve
productivity and/or account for lost functionality in the Tcl environment
that users are used to in native environments. There are also some redefined
procedures. Here is a non-comprehensive list:
- alias
?sourceCmd targetCmd ?arg arg ...??
- Simple alias mechanism. It will overwrite existing commands. When called
without args, it returns current aliases. Note that TkCon makes some
aliases for you (in slaves). Don't delete those.
- clear
?percentage?
- Clears the text widget. Same as the <Control-l> binding,
except this will accept a percentage of the buffer to clear (1-100, 100
default).
- dir ?-all?
?-full? ?-long? ?pattern pattern ...?
- Cheap way to get directory listings. Uses glob style pattern
matching.
- dump type
?-nocomplain? ?-filter pattern? ?--? pattern
?pattern ...?
- The dump command provides a way for the user to spit out state information
about the interpreter in a Tcl readable (and human readable) form. See
dump(3tk) for details.
- echo ?arg
arg ...?
- Concatenates the args and spits the result to the console (stdout).
- edit ?-type
type? ?-find str? ?-attach interp? arg
- Opens an editor with the data from arg. The optional type argument can be
one of: proc, var or file. For proc or var, the arg
may be a pattern.
- idebug
command ?args?
- Interactive debugging command. See idebug(3tk) for details.
- lremove
?-all? ?-regexp -glob? list
items
- Removes one or more items from a list and returns the new list. If
-all is specified, it removes all instances of each item in the
list. If -regexp or -glob is specified, it interprets each
item in the items list as a regexp or glob pattern to match against.
- less
- Aliased to edit.
- ls
- Aliased to dir -full.
- more
- Aliased to edit.
- observe
type ?args?
- This command provides passive runtime debugging output for variables and
commands. See observe(3tk) for details.
- puts (same options as
always)
- Redefined to put the output into TkCon.
- tkcon
method ?args?
- Multi-purpose command. See tkcon(3tk) for details.
- tclindex
?-extensions patternlist? ?-index TCL_BOOLEAN? ?-package TCL_BOOLEAN?
?dir1 dir2 ...?
- Convenience proc to update the "tclIndex" (controlled by
-index switch) and/or "pkgIndex.tcl" (controlled
by -package switch) file in the named directories based on the
given pattern for files. It defaults to creating the
"tclIndex" but not the "pkgIndex.tcl"
file, with the directory defaulting to [pwd]. The extension defaults to
*.tcl, with *.[info sharelibextension] added when -package is
true.
- unalias
cmd
- unaliases command.
- what
string
- The what command will identify the word given in string in the Tcl
environment and return a list of types that it was recognized as. Possible
types are: alias, procedure, command, array variable, scalar variable,
directory, file, widget, and executable. Used by procedures dump and
which.
- which
command
- Like the which command of Unix shells, this will tell you if a
particular command is known, and if so, whether it is internal or external
to the interpreter. If it is an internal command and there is a slot in
auto_index for it, it tells you the file that auto_index
would load. This does not necessarily mean that that is where the file
came from, but if it were not in the interpreter previously, then that is
where the command was found.
There are several procedures that I use as helpers that some may
find helpful in there coding (i.e. expanding pathnames). Feel free to lift
them from the code (but do assign proper attribution).
Some examples of tkcon command line startup situations:
megawish /usr/bin/tkcon -exec "" -root .tkcon mainfile.tcl
Use tkcon as a console for your megawish application. You can avoid
starting the line with megawish if that is the default wish that TkCon
would use. The -root ensures that tkcon will not conflict with the
application root window.
tkcon -font "Courier 12" -load Tk
Use the courier font for TkCon and always load Tk in slave interpreters at
startup.
tkcon -rcfile ~/.wishrc -color-bg white
Use the ~/.wishrc file as the resource file, and a white background for TkCon's
text widgets.
TkCon will search for a resource file in
"~/.tkconrc". TkCon never sources the
"~/.wishrc" file. The resource file is sourced by each new
instance of the console. An example resource file is provided in
tkconrc(5).
Copyright (c) Jeffrey Hobbs (jeff at hobbs.org)