Attachment "ctext.man" to
ticket [1172924fff]
added by
mic42
2005-03-30 07:41:53.
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin ctext n 3.1]
[copyright {George Peter Staplin <[email protected]>}]
[moddesc {Ctext a text widget with highlighting support}]
[titledesc {Ctext a text widget with highlighting support}]
[require Tk]
[require ctext [opt 3.1]]
[description]
The [package ctext] package provides the ctext widget which
is an enhanced text widget with support for configurable syntax
highlighting and some extra commands.
[para]
Ctext overloads the text widget and provides
new commands, named [method highlight], [method copy], [method paste],[method cut],
[method append], and [method edit]. It also provides several
commands that allow you to define classes.
Each class corresponds to a tag in the widget.
[section COMMANDS]
[list_begin definitions]
[call [cmd ctext] [arg pathName] [opt [arg options]]]
Creates and configures a ctext widget.
[list_end]
[section {HIGHLIGHTING}]
Highlighting is controlled with text widget tags, that are called highlight classes.
The [arg class] is a tag name and can be configured like any text widget tag.
Four types of highlight classes are supported. All highlight classes are automatically used
by the [method highlight] method of the widget.
[list_begin definitions]
[call [cmd ::ctext::addHighlightClass] [arg pathName] [arg class] [arg color] [arg keywordlist]]
Add a highlighting class [arg class] to the ctext widget [arg pathName].
The highligthing will be done with the color [arg color]. All words in the [arg keywordlist] will be
highlighted.
[example {
# highlight some tcl keywords
::ctext::addHighlightClass .t tclkeywords red [list set info interp uplevel upvar]]
}]
[call [cmd ::ctext::addHighlightClassWithOnlyCharStart] [arg pathName] [arg class] [arg color] [arg char]]
Add a highlighting class [arg class] to the ctext widget [arg pathName].
The highligthing will be done with the color [arg color]. All words starting with [arg char] will be
highlighted.
[example {
::ctext::addHighlightClassWithOnlyCharStart .t vars blue \$
}]
[call [cmd ::ctext::addHighlightClassForSpecialChars] [arg pathName] [arg class] [arg color] [arg charstring]]
Add a highlighting class [arg class] to the ctext widget [arg pathName].
The highligthing will be done with the color [arg color]. All chars in [arg charstring] will be
highlighted.
[call [cmd ::ctext::addHighlightClassForRegexp] [arg pathName] [arg class] [arg color] [arg pattern]]
Add a highlighting class [arg class] to the ctext widget [arg pathName].
The highligthing will be done with the color [arg color]. All text parts matching the regexp [arg pattern]
will be highligthed.
[call [cmd ::ctext::clearHighlightClasses] [arg pathName]]
Remove all highlight classes from the widget [arg pathName].
[call [cmd ::ctext::getHighlightClasses] [arg pathName]]
List all highlight classes for the widget [arg pathName].
[call [cmd ::ctext::deleteHighlightClass] [arg pathName] [arg class]]
Delete the highlight class [arg class] from the widget [arg pathName]
[call [cmd ::ctext::enableComments] [arg enable]]
Enable C comment highlighting. The [arg class] for c-style comments is [const _cComment].
The C comment highlighting is disabled by default.
[call [cmd ::ctext::disableComments] [arg enable]]
Disable C comment highlighting.
[list_end]
[section {WIDGET COMMANDS}]
Each ctext widget created with the above command supports the following
commands and options in addition to the standard text widget commands and
options.
[list_begin definitions]
[call [arg pathName] [method highlight] [arg startIndex] [arg endIndex]]
Highlight the text between [arg startIndex] and [arg endIndex].
[call [arg pathName] [method fastdelete] [arg index1] [opt [arg index2]]]
Delete text range without updating the highlighting. Arguments
are identical to the [arg pathName] [method delete] command inherited from
the standard text widget.
[call [arg pathName] [method fastinsert] ]
Insert text without updating the highlighting. Arguments
are identical to the [arg pathName] [method insert] command inherited from
the standard text widget.
[call [arg pathName] [method copy] ]
Call [cmd tk_textCopy] for the ctext instance.
[call [arg pathName] [method cut] ]
Call [cmd tk_textCut] for the ctext instance.
[call [arg pathName] [method paste] ]
Call [cmd tk_textPaste] for the ctext instance.
[call [arg pathName] [method append] ]
Append the current selection to the clipboard.
[list_end]
[section {WIDGET OPTIONS}]
[list_begin tkoption]
[tkoption_def -linemap "" ""]
Creates a line number list on the left of the widget
[tkoption_def -linemapfg "" ""]
Changes the foreground of the linemap.
The default is the same color as the main text
widget.
[tkoption_def -linemapbg "" ""]
Changes the background of the linemap.
The default is the same color as the main text
widget.
[tkoption_def -linemap_select_fg "" ""]
Changes the selected
line foreground. The default is black.
[tkoption_def -linemap_select_bg "" ""]
Changes the selected line
background. The default is yellow.
[tkoption_def -linemap_mark_command "" ""]
Calls a procedure or command
with the [arg pathName] of the ctext window, the [arg type] which is
either [const marked] or [const unmarked], and finally the line
number selected.
The proc prototype is:
[example {
proc linemark_cmd {win type line}.
}]
See also
ctext_test_interactive.tcl
[tkoption_def -highlight "" ""]
Takes a boolean value which defines
whether or not to highlight text which is inserted
or deleted. The default is 1.
[tkoption_def -linemap_markable "" ""]
Takes a boolean value which
specifies whether or not lines in the linemap
are markable with the mouse. The default is 1.
[list_end]
[section EXAMPLE]
[example {
package require Tk
package require ctext
proc main {} {
pack [frame .f] -fill both -expand 1
pack [scrollbar .f.s -command {.f.t yview}] -side right -fill y
pack [ctext .f.t -bg black -fg white -insertbackground yellow \
-yscrollcommand {.f.s set}] -fill both -expand 1
ctext::addHighlightClass .f.t widgets purple [list ctext button label text frame toplevel \
scrollbar checkbutton canvas listbox menu menubar menubutton \
radiobutton scale entry message tk_chooseDir tk_getSaveFile \
tk_getOpenFile tk_chooseColor tk_optionMenu]
ctext::addHighlightClass .f.t flags orange [list -text -command -yscrollcommand \
-xscrollcommand -background -foreground -fg -bg \
-highlightbackground -y -x -highlightcolor -relief -width \
-height -wrap -font -fill -side -outline -style -insertwidth \
-textvariable -activebackground -activeforeground -insertbackground \
-anchor -orient -troughcolor -nonewline -expand -type -message \
-title -offset -in -after -yscroll -xscroll -forward -regexp -count \
-exact -padx -ipadx -filetypes -all -from -to -label -value -variable \
-regexp -backwards -forwards -bd -pady -ipady -state -row -column \
-cursor -highlightcolors -linemap -menu -tearoff -displayof -cursor \
-underline -tags -tag]
ctext::addHighlightClass .f.t stackControl red {proc uplevel namespace while for foreach if else}
ctext::addHighlightClassWithOnlyCharStart .f.t vars mediumspringgreen "\$"
ctext::addHighlightClass .f.t variable_funcs gold {set global variable unset}
ctext::addHighlightClassForSpecialChars .f.t brackets green {[]{}}
ctext::addHighlightClassForRegexp .f.t paths lightblue {\.[a-zA-Z0-9\_\-]+}
ctext::addHighlightClassForRegexp .f.t comments khaki {#[^\n\r]*}
.f.t fastinsert end [info body main]
pack [frame .f1] -fill x
.f.t highlight 1.0 end
pack [button .f1.exit -text Exit -command exit] -side left
pack [entry .e] -side bottom -fill x
.e insert end "ctext::deleteHighlightClass .f.t "
bind .e <Return> {eval [.e get]}
}
main
}]
Further examples are in the source package for ctext.
[section THANKS]
Kevin Kenny, Neil Madden, Jeffrey Hobbs, Richard Suchenwirth,
Johan Bengtsson, Mac Cody, Günther, and Andreas Sievers.
[see_also text re_syntax]
[keywords text widget "syntax highlighting"]
[manpage_end]