diff options
Diffstat (limited to 'tk8.6/doc/text.n')
-rw-r--r-- | tk8.6/doc/text.n | 2285 |
1 files changed, 0 insertions, 2285 deletions
diff --git a/tk8.6/doc/text.n b/tk8.6/doc/text.n deleted file mode 100644 index ae9b857..0000000 --- a/tk8.6/doc/text.n +++ /dev/null @@ -1,2285 +0,0 @@ -'\" -'\" Copyright (c) 1992 The Regents of the University of California. -'\" Copyright (c) 1994-1996 Sun Microsystems, Inc. -'\" -'\" See the file "license.terms" for information on usage and redistribution -'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. -'\" -.TH text n 8.5 Tk "Tk Built-In Commands" -.so man.macros -.BS -'\" Note: do not modify the .SH NAME line immediately below! -.SH NAME -text, tk_textCopy, tk_textCut, tk_textPaste \- Create and manipulate 'text' hypertext editing widgets -.SH SYNOPSIS -.nf -\fBtext\fR \fIpathName \fR?\fIoptions\fR? -\fBtk_textCopy\fR \fIpathName\fR -\fBtk_textCut\fR \fIpathName\fR -\fBtk_textPaste\fR \fIpathName\fR -.SO -\-background \-highlightthickness \-relief -\-borderwidth \-insertbackground \-selectbackground -\-cursor \-insertborderwidth \-selectborderwidth -\-exportselection \-insertofftime \-selectforeground -\-font \-insertontime \-setgrid -\-foreground \-insertwidth \-takefocus -\-highlightbackground \-padx \-xscrollcommand -\-highlightcolor \-pady \-yscrollcommand -.SE -.SH "WIDGET-SPECIFIC OPTIONS" -.OP \-autoseparators autoSeparators AutoSeparators -Specifies a boolean that says whether separators are automatically inserted in -the undo stack. Only meaningful when the \fB\-undo\fR option is true. -.OP \-blockcursor blockCursor BlockCursor -Specifies a boolean that says whether the blinking insertion cursor should be -drawn as a character-sized rectangular block. If false (the default) a thin -vertical line is used for the insertion cursor. -.OP \-endline endLine EndLine -Specifies an integer line index representing the line of the underlying -textual data store that should be just after the last line contained in -the widget. This allows a text widget to reflect only a portion of a -larger piece of text. Instead of an integer, the empty string can be -provided to this configuration option, which will configure the widget -to end at the very last line in the textual data store. -.OP \-height height Height -Specifies the desired height for the window, in units of characters in the -font given by the \fB\-font\fR option. Must be at least one. -.OP \-inactiveselectbackground inactiveSelectBackground Foreground -Specifies the colour to use for the selection (the \fBsel\fR tag) when the -window does not have the input focus. If empty, \fB{}\fR, then no selection is -shown when the window does not have the focus. -.OP \-insertunfocussed insertUnfocussed InsertUnfocussed -.VS 8.6 -Specifies how to display the insertion cursor when the widget does not have -the focus. Must be \fBnone\fR (the default) which means to not display the -cursor, \fBhollow\fR which means to display a hollow box, or \fBsolid\fR which -means to display a solid box. Note that \fBhollow\fR and \fBsolid\fR will -appear very similar when the \fB\-blockcursor\fR option is false. -.VE 8.6 -.OP \-maxundo maxUndo MaxUndo -Specifies the maximum number of compound undo actions on the undo stack. A -zero or a negative value imply an unlimited undo stack. -.OP \-spacing1 spacing1 Spacing1 -Requests additional space above each text line in the widget, using any of the -standard forms for screen distances. If a line wraps, this option only applies -to the first line on the display. This option may be overridden with -\fB\-spacing1\fR options in tags. -.OP \-spacing2 spacing2 Spacing2 -For lines that wrap (so that they cover more than one line on the display) -this option specifies additional space to provide between the display lines -that represent a single line of text. The value may have any of the standard -forms for screen distances. This option may be overridden with -\fB\-spacing2\fR options in tags. -.OP \-spacing3 spacing3 Spacing3 -Requests additional space below each text line in the widget, using any of the -standard forms for screen distances. If a line wraps, this option only applies -to the last line on the display. This option may be overridden with -\fB\-spacing3\fR options in tags. -.OP \-startline startLine StartLine -Specifies an integer line index representing the first line of the underlying -textual data store that should be contained in the widget. This allows a text -widget to reflect only a portion of a larger piece of text. Instead of an -integer, the empty string can be provided to this configuration option, which -will configure the widget to start at the very first line in the textual data -store. -.OP \-state state State -Specifies one of two states for the text: \fBnormal\fR or \fBdisabled\fR. If -the text is disabled then characters may not be inserted or deleted and no -insertion cursor will be displayed, even if the input focus is in the widget. -.OP \-tabs tabs Tabs -Specifies a set of tab stops for the window. The option's value consists of a -list of screen distances giving the positions of the tab stops, each of which -is a distance relative to the left edge of the widget (excluding borders, -padding, etc). Each position may optionally be followed in the next list -element by one of the keywords \fBleft\fR, \fBright\fR, \fBcenter\fR, or -\fBnumeric\fR, which specifies how to justify text relative to the tab stop. -\fBLeft\fR is the default; it causes the text following the tab character to -be positioned with its left edge at the tab position. \fBRight\fR means that -the right edge of the text following the tab character is positioned at the -tab position, and \fBcenter\fR means that the text is centered at the tab -position. \fBNumeric\fR means that the decimal point in the text is positioned -at the tab position; if there is no decimal point then the least significant -digit of the number is positioned just to the left of the tab position; if -there is no number in the text then the text is right-justified at the tab -position. For example, -.QW "\fB\-tabs {2c left 4c 6c center}\fR" -creates three tab stops at two-centimeter intervals; the first two use left -justification and the third uses center justification. -.RS -.PP -If the list of tab stops does not have enough elements to cover all of the -tabs in a text line, then Tk extrapolates new tab stops using the spacing and -alignment from the last tab stop in the list. Tab distances must be strictly -positive, and must always increase from one tab stop to the next (if not, an -error is thrown). The value of the \fB\-tabs\fR option may be overridden by -\fB\-tabs\fR options in tags. -.PP -If no \fB\-tabs\fR option is specified, or if it is specified as an empty -list, then Tk uses default tabs spaced every eight (average size) characters. -To achieve a different standard spacing, for example every 4 characters, -simply configure the widget with -.QW "\fB\-tabs \N'34'[expr {4 * [font measure $font 0]}] left\N'34' \-tabstyle wordprocessor\fR" . -.RE -.OP \-tabstyle tabStyle TabStyle -Specifies how to interpret the relationship between tab stops on a line and -tabs in the text of that line. The value must be \fBtabular\fR (the default) -or \fBwordprocessor\fR. Note that tabs are interpreted as they are encountered -in the text. If the tab style is \fBtabular\fR then the \fIn\fR'th tab -character in the line's text will be associated with the \fIn\fR'th tab stop -defined for that line. If the tab character's x coordinate falls to the right -of the \fIn\fR'th tab stop, then a gap of a single space will be inserted as a -fallback. If the tab style is \fBwordprocessor\fR then any tab character being -laid out will use (and be defined by) the first tab stop to the right of the -preceding characters already laid out on that line. The value of the -\fB\-tabstyle\fR option may be overridden by \fB\-tabstyle\fR options in tags. -.OP \-undo undo Undo -Specifies a boolean that says whether the undo mechanism is active or not. -.OP \-width width Width -Specifies the desired width for the window in units of characters in the font -given by the \fB\-font\fR option. If the font does not have a uniform width -then the width of the character -.QW 0 -is used in translating from character units to screen units. -.OP \-wrap wrap Wrap -Specifies how to handle lines in the text that are too long to be displayed in -a single line of the text's window. The value must be \fBnone\fR or \fBchar\fR -or \fBword\fR. A wrap mode of \fBnone\fR means that each line of text appears -as exactly one line on the screen; extra characters that do not fit on the -screen are not displayed. In the other modes each line of text will be broken -up into several screen lines if necessary to keep all the characters visible. -In \fBchar\fR mode a screen line break may occur after any character; in -\fBword\fR mode a line break will only be made at word boundaries. -.BE -.SH DESCRIPTION -.PP -The \fBtext\fR command creates a new window (given by the \fIpathName\fR -argument) and makes it into a text widget. Additional options, described -above, may be specified on the command line or in the option database to -configure aspects of the text such as its default background color and relief. -The \fBtext\fR command returns the path name of the new window. -.PP -A text widget displays one or more lines of text and allows that text to be -edited. Text widgets support four different kinds of annotations on the text, -called tags, marks, embedded windows or embedded images. Tags allow different -portions of the text to be displayed with different fonts and colors. In -addition, Tcl commands can be associated with tags so that scripts are invoked -when particular actions such as keystrokes and mouse button presses occur in -particular ranges of the text. See \fBTAGS\fR below for more details. -.PP -The second form of annotation consists of floating markers in the text called -.QW marks . -Marks are used to keep track of various interesting positions in the text as -it is edited. See \fBMARKS\fR below for more details. -.PP -The third form of annotation allows arbitrary windows to be embedded in a text -widget. See \fBEMBEDDED WINDOWS\fR below for more details. -.PP -The fourth form of annotation allows Tk images to be embedded in a text -widget. See \fBEMBEDDED IMAGES\fR below for more details. -.PP -The text widget also has a built-in undo/redo mechanism. See -\fBTHE UNDO MECHANISM\fR below for more details. -.PP -The text widget allows for the creation of peer widgets. These are other text -widgets which share the same underlying data (text, marks, tags, images, etc). -See \fBPEER WIDGETS\fR below for more details. -.SH INDICES -.PP -Many of the widget commands for texts take one or more indices as arguments. -An index is a string used to indicate a particular place within a text, such -as a place to insert characters or one endpoint of a range of characters to -delete. Indices have the syntax -.CS -\fIbase modifier modifier modifier ...\fR -.CE -Where \fIbase\fR gives a starting point and the \fImodifier\fRs adjust the -index from the starting point (e.g. move forward or backward one character). -Every index must contain a \fIbase\fR, but the \fImodifier\fRs are optional. -Most modifiers (as documented below) allow an optional submodifier. Valid -submodifiers are \fBany\fR and \fBdisplay\fR. If the submodifier is -abbreviated, then it must be followed by whitespace, but otherwise there need -be no space between the submodifier and the following \fImodifier\fR. -Typically the \fBdisplay\fR submodifier adjusts the meaning of the following -\fImodifier\fR to make it refer to visual or non-elided units rather than -logical units, but this is explained for each relevant case below. Lastly, -where \fIcount\fR is used as part of a modifier, it can be positive or -negative, so -.QW "\fIbase\fR \- \-3 lines" -is perfectly valid (and equivalent to -.QW "\fIbase\fR +3lines" ). -.PP -The \fIbase\fR for an index must have one of the following forms: -.TP 12 -\fIline\fB.\fIchar\fR -. -Indicates \fIchar\fR'th character on line \fIline\fR. Lines are numbered from -1 for consistency with other UNIX programs that use this numbering scheme. -Within a line, characters are numbered from 0. If \fIchar\fR is \fBend\fR then -it refers to the newline character that ends the line. -.TP 12 -\fB@\fIx\fB,\fIy\fR -. -Indicates the character that covers the pixel whose x and y coordinates within -the text's window are \fIx\fR and \fIy\fR. -.TP 12 -\fBend\fR -. -Indicates the end of the text (the character just after the last newline). -.TP 12 -\fImark\fR -. -Indicates the character just after the mark whose name is \fImark\fR. -.TP 12 -\fItag\fB.first\fR -. -Indicates the first character in the text that has been tagged with \fItag\fR. -This form generates an error if no characters are currently tagged with -\fItag\fR. -.TP 12 -\fItag\fB.last\fR -. -Indicates the character just after the last one in the text that has been -tagged with \fItag\fR. This form generates an error if no characters are -currently tagged with \fItag\fR. -.TP 12 -\fIpathName\fR -. -Indicates the position of the embedded window whose name is \fIpathName\fR. -This form generates an error if there is no embedded window by the given name. -.TP 12 -\fIimageName\fR -. -Indicates the position of the embedded image whose name is \fIimageName\fR. -This form generates an error if there is no embedded image by the given name. -.PP -If the \fIbase\fR could match more than one of the above forms, such as a -\fImark\fR and \fIimageName\fR both having the same value, then the form -earlier in the above list takes precedence. If modifiers follow the base -index, each one of them must have one of the forms listed below. Keywords such -as \fBchars\fR and \fBwordend\fR may be abbreviated as long as the -abbreviation is unambiguous. -.TP -\fB+ \fIcount\fR ?\fIsubmodifier\fR? \fBchars\fR -. -Adjust the index forward by \fIcount\fR characters, moving to later lines in -the text if necessary. If there are fewer than \fIcount\fR characters in the -text after the current index, then set the index to the last index in the -text. Spaces on either side of \fIcount\fR are optional. If the \fBdisplay\fR -submodifier is given, elided characters are skipped over without being -counted. If \fBany\fR is given, then all characters are counted. For -historical reasons, if neither modifier is given then the count actually takes -place in units of index positions (see \fBINDICES\fR for details). This -behaviour may be changed in a future major release, so if you need an index -count, you are encouraged to use \fBindices\fR instead wherever possible. -.TP -\fB\- \fIcount\fR ?\fIsubmodifier\fR? \fBchars\fR -. -Adjust the index backward by \fIcount\fR characters, moving to earlier lines -in the text if necessary. If there are fewer than \fIcount\fR characters in -the text before the current index, then set the index to the first index in -the text (1.0). Spaces on either side of \fIcount\fR are optional. If the -\fBdisplay\fR submodifier is given, elided characters are skipped over without -being counted. If \fBany\fR is given, then all characters are counted. For -historical reasons, if neither modifier is given then the count actually takes -place in units of index positions (see \fBINDICES\fR for details). This -behavior may be changed in a future major release, so if you need an index -count, you are encouraged to use \fBindices\fR instead wherever possible. -.TP -\fB+ \fIcount\fR ?\fIsubmodifier\fR? \fBindices\fR -. -Adjust the index forward by \fIcount\fR index positions, moving to later lines -in the text if necessary. If there are fewer than \fIcount\fR index positions -in the text after the current index, then set the index to the last index -position in the text. Spaces on either side of \fIcount\fR are optional. Note -that an index position is either a single character or a single embedded image -or embedded window. If the \fBdisplay\fR submodifier is given, elided indices -are skipped over without being counted. If \fBany\fR is given, then all -indices are counted; this is also the default behaviour if no modifier is -given. -.TP -\fB\- \fIcount\fR ?\fIsubmodifier\fR? \fBindices\fR -. -Adjust the index backward by \fIcount\fR index positions, moving to earlier -lines in the text if necessary. If there are fewer than \fIcount\fR index -positions in the text before the current index, then set the index to the -first index position (1.0) in the text. Spaces on either side of \fIcount\fR -are optional. If the \fBdisplay\fR submodifier is given, elided indices are -skipped over without being counted. If \fBany\fR is given, then all indices -are counted; this is also the default behaviour if no modifier is given. -.TP -\fB+ \fIcount\fR ?\fIsubmodifier\fR? \fBlines\fR -. -Adjust the index forward by \fIcount\fR lines, retaining the same character -position within the line. If there are fewer than \fIcount\fR lines after the -line containing the current index, then set the index to refer to the same -character position on the last line of the text. Then, if the line is not long -enough to contain a character at the indicated character position, adjust the -character position to refer to the last character of the line (the newline). -Spaces on either side of \fIcount\fR are optional. If the \fBdisplay\fR -submodifier is given, then each visual display line is counted separately. -Otherwise, if \fBany\fR (or no modifier) is given, then each logical line (no -matter how many times it is visually wrapped) counts just once. If the -relevant lines are not wrapped, then these two methods of counting are -equivalent. -.TP -\fB\- \fIcount\fR ?\fIsubmodifier\fR? \fBlines\fR -. -Adjust the index backward by \fIcount\fR logical lines, retaining the same -character position within the line. If there are fewer than \fIcount\fR lines -before the line containing the current index, then set the index to refer to -the same character position on the first line of the text. Then, if the line -is not long enough to contain a character at the indicated character position, -adjust the character position to refer to the last character of the line (the -newline). Spaces on either side of \fIcount\fR are optional. If the -\fBdisplay\fR submodifier is given, then each visual display line is counted -separately. Otherwise, if \fBany\fR (or no modifier) is given, then each -logical line (no matter how many times it is visually wrapped) counts just -once. If the relevant lines are not wrapped, then these two methods of -counting are equivalent. -.TP -?\fIsubmodifier\fR? \fBlinestart\fR -. -Adjust the index to refer to the first index on the line. If the \fBdisplay\fR -submodifier is given, this is the first index on the display line, otherwise -on the logical line. -.TP -?\fIsubmodifier\fR? \fBlineend\fR -. -Adjust the index to refer to the last index on the line (the newline). If the -\fBdisplay\fR submodifier is given, this is the last index on the display -line, otherwise on the logical line. -.TP -?\fIsubmodifier\fR? \fBwordstart\fR -. -Adjust the index to refer to the first character of the word containing the -current index. A word consists of any number of adjacent characters that are -letters, digits, or underscores, or a single character that is not one of -these. If the \fBdisplay\fR submodifier is given, this only examines -non-elided characters, otherwise all characters (elided or not) are examined. -.TP -?\fIsubmodifier\fR? \fBwordend\fR -. -Adjust the index to refer to the character just after the last one of the word -containing the current index. If the current index refers to the last -character of the text then it is not modified. If the \fBdisplay\fR -submodifier is given, this only examines non-elided characters, otherwise all -characters (elided or not) are examined. -.PP -If more than one modifier is present then they are applied in left-to-right -order. For example, the index -.QW "\fBend \- 1 chars\fR" -refers to the next-to-last character in the text and -.QW "\fBinsert wordstart \- 1 c\fR" -refers to the character just before the first one in the word containing the -insertion cursor. Modifiers are applied one by one in this left to right -order, and after each step the resulting index is constrained to be a valid -index in the text widget. So, for example, the index -.QW "\fB1.0 \-1c +1c\fR" -refers to the index -.QW \fB2.0\fR . -.PP -Where modifiers result in index changes by display lines, display chars or -display indices, and the \fIbase\fR refers to an index inside an elided tag, -that base index is considered to be equivalent to the first following -non-elided index. -.SH TAGS -.PP -The first form of annotation in text widgets is a tag. A tag is a textual -string that is associated with some of the characters in a text. Tags may -contain arbitrary characters, but it is probably best to avoid using the -characters -.QW " " -(space), \fB+\fR, or \fB\-\fR: these characters have special meaning in -indices, so tags containing them cannot be used as indices. There may be any -number of tags associated with characters in a text. Each tag may refer to a -single character, a range of characters, or several ranges of characters. An -individual character may have any number of tags associated with it. -.PP -A priority order is defined among tags, and this order is used in implementing -some of the tag-related functions described below. When a tag is defined (by -associating it with characters or setting its display options or binding -commands to it), it is given a priority higher than any existing tag. The -priority order of tags may be redefined using the -.QW "\fIpathName \fBtag raise\fR" -and -.QW "\fIpathName \fBtag lower\fR" -widget commands. -.PP -Tags serve three purposes in text widgets. First, they control the way -information is displayed on the screen. By default, characters are displayed -as determined by the \fB\-background\fR, \fB\-font\fR, and \fB\-foreground\fR -options for the text widget. However, display options may be associated with -individual tags using the -.QW "\fIpathName \fBtag configure\fR" -widget command. If a character has been tagged, then the display options -associated with the tag override the default display style. The following -options are currently supported for tags: -.TP -\fB\-background \fIcolor\fR -. -\fIColor\fR specifies the background color to use for characters associated -with the tag. It may have any of the forms accepted by \fBTk_GetColor\fR. -.TP -\fB\-bgstipple \fIbitmap\fR -. -\fIBitmap\fR specifies a bitmap that is used as a stipple pattern for the -background. It may have any of the forms accepted by \fBTk_GetBitmap\fR. If -\fIbitmap\fR has not been specified, or if it is specified as an empty string, -then a solid fill will be used for the background. -.TP -\fB\-borderwidth \fIpixels\fR -. -\fIPixels\fR specifies the width of a border to draw around the tag using any -of the forms accepted by \fBTk_GetPixels\fR. This option should be used in -conjunction with the \fB\-relief\fR option to provide the desired border. -.TP -\fB\-elide \fIboolean\fR -. -\fIElide\fR specifies whether the data should be elided. Elided data -(characters, images, embedded windows, etc.) is not displayed and takes no -space on screen, but further on behaves just as normal data. -.TP -\fB\-fgstipple \fIbitmap\fR -. -\fIBitmap\fR specifies a bitmap that is used as a stipple pattern when drawing -text and other foreground information such as underlines. It may have any of -the forms accepted by \fBTk_GetBitmap\fR. If \fIbitmap\fR has not been -specified, or if it is specified as an empty string, then a solid fill will be -used. -.TP -\fB\-font \fIfontName\fR -. -\fIFontName\fR is the name of a font to use for drawing characters. It may -have any of the forms accepted by \fBTk_GetFont\fR. -.TP -\fB\-foreground \fIcolor\fR -. -\fIColor\fR specifies the color to use when drawing text and other foreground -information such as underlines. It may have any of the forms accepted by -\fBTk_GetColor\fR. -.TP -\fB\-justify \fIjustify\fR -. -If the first non-elided character of a display line has a tag for which this -option has been specified, then \fIjustify\fR determines how to justify the -line. It must be one of \fBleft\fR, \fBright\fR, or \fBcenter\fR. If a line -wraps, then the justification for each line on the display is determined by -the first non-elided character of that display line. -.TP -\fB\-lmargin1 \fIpixels\fR -. -If the first non-elided character of a text line has a tag for which this -option has been specified, then \fIpixels\fR specifies how much the line -should be indented from the left edge of the window. \fIPixels\fR may have any -of the standard forms for screen distances. If a line of text wraps, this -option only applies to the first line on the display; the \fB\-lmargin2\fR -option controls the indentation for subsequent lines. -.TP -\fB\-lmargin2 \fIpixels\fR -. -If the first non-elided character of a display line has a tag for which this -option has been specified, and if the display line is not the first for its -text line (i.e., the text line has wrapped), then \fIpixels\fR specifies how -much the line should be indented from the left edge of the window. -\fIPixels\fR may have any of the standard forms for screen distances. This -option is only used when wrapping is enabled, and it only applies to the -second and later display lines for a text line. -.TP -\fB\-lmargincolor \fIcolor\fR -. -\fIColor\fR specifies the background color to use in regions that do not -contain characters because they are indented by \fB\-lmargin1\fR or -\fB\-lmargin2\fR. It may have any of the forms accepted by -\fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is -specified as an empty string, then the color used is specified by the -\fB-background\fR tag option (or, if this is also unspecified, by the -\fB-background\fR widget option). -.TP -\fB\-offset \fIpixels\fR -. -\fIPixels\fR specifies an amount by which the text's baseline should be offset -vertically from the baseline of the overall line, in pixels. For example, a -positive offset can be used for superscripts and a negative offset can be used -for subscripts. \fIPixels\fR may have any of the standard forms for screen -distances. -.TP -\fB\-overstrike \fIboolean\fR -. -Specifies whether or not to draw a horizontal rule through the middle of -characters. \fIBoolean\fR may have any of the forms accepted by -\fBTcl_GetBoolean\fR. -.TP -\fB\-overstrikefg \fIcolor\fR -. -\fIColor\fR specifies the color to use when displaying the overstrike. It may -have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not -been specified, or if it is specified as an empty string, then the color -specified by the \fB\-foreground\fR tag option is used. -.TP -\fB\-relief \fIrelief\fR -. -\fIRelief\fR specifies the relief style to use for drawing the border, in any -of the forms accepted by \fBTk_GetRelief\fR. This option is used in -conjunction with the \fB\-borderwidth\fR option to enable to the desired -border appearance. -.TP -\fB\-rmargin \fIpixels\fR -. -If the first non-elided character of a display line has a tag for which this -option has been specified, then \fIpixels\fR specifies how wide a margin to -leave between the end of the line and the right edge of the window. -\fIPixels\fR may have any of the standard forms for screen distances. This -option is only used when wrapping is enabled. If a text line wraps, the right -margin for each line on the display is determined by the first non-elided -character of that display line. -.TP -\fB\-rmargincolor \fIcolor\fR -. -\fIColor\fR specifies the background color to use in regions that do not -contain characters because they are indented by \fB\-rmargin1\fR. It may -have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not -been specified, or if it is specified as an empty string, then the color -used is specified by the \fB-background\fR tag option (or, if this is also -unspecified, by the \fB-background\fR widget option). -.TP -\fB\-selectbackground \fIcolor\fR -\fIColor\fR specifies the background color to use when displaying selected -items. It may have any of the forms accepted by \fBTk_GetColor\fR. If -\fIcolor\fR has not been specified, or if it is specified as an empty -string, then the color specified by the \fB\-background\fR tag option is -used. -.TP -\fB\-selectforeground \fIcolor\fR -\fIColor\fR specifies the foreground color to use when displaying selected -items. It may have any of the forms accepted by \fBTk_GetColor\fR. If -\fIcolor\fR has not been specified, or if it is specified as an empty -string, then the color specified by the \fB\-foreground\fR tag option is -used. -.TP -\fB\-spacing1 \fIpixels\fR -. -\fIPixels\fR specifies how much additional space should be left above each -text line, using any of the standard forms for screen distances. If a line -wraps, this option only applies to the first line on the display. -.TP -\fB\-spacing2 \fIpixels\fR -. -For lines that wrap, this option specifies how much additional space to leave -between the display lines for a single text line. \fIPixels\fR may have any of -the standard forms for screen distances. -.TP -\fB\-spacing3 \fIpixels\fR -. -\fIPixels\fR specifies how much additional space should be left below each -text line, using any of the standard forms for screen distances. If a line -wraps, this option only applies to the last line on the display. -.TP -\fB\-tabs \fItabList\fR -. -\fITabList\fR specifies a set of tab stops in the same form as for the -\fB\-tabs\fR option for the text widget. This option only applies to a display -line if it applies to the first non-elided character on that display line. If -this option is specified as an empty string, it cancels the option, leaving it -unspecified for the tag (the default). If the option is specified as a -non-empty string that is an empty list, such as \fB\-tags\0{\0}\fR, then it -requests default 8-character tabs as described for the \fB\-tags\fR widget -option. -.TP -\fB\-tabstyle \fIstyle\fR -. -\fIStyle\fR specifies either the \fItabular\fR or \fIwordprocessor\fR style of -tabbing to use for the text widget. This option only applies to a display line -if it applies to the first non-elided character on that display line. If this -option is specified as an empty string, it cancels the option, leaving it -unspecified for the tag (the default). -.TP -\fB\-underline \fIboolean\fR -. -\fIBoolean\fR specifies whether or not to draw an underline underneath -characters. It may have any of the forms accepted by \fBTcl_GetBoolean\fR. -.TP -\fB\-underlinefg \fIcolor\fR -. -\fIColor\fR specifies the color to use when displaying the underline. It may -have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not -been specified, or if it is specified as an empty string, then the color -specified by the \fB\-foreground\fR tag option is used. -.TP -\fB\-wrap \fImode\fR -. -\fIMode\fR specifies how to handle lines that are wider than the text's -window. This option only applies to a display line if it applies to the -first non-elided character on that display line. It has the same legal -values as the \fB\-wrap\fR option for the text widget: \fBnone\fR, -\fBchar\fR, or \fBword\fR. If this tag option is specified, it -overrides the \fB\-wrap\fR option for the text widget. -.PP -If a character has several tags associated with it, and if their display -options conflict, then the options of the highest priority tag are used. If a -particular display option has not been specified for a particular tag, or if -it is specified as an empty string, then that option will never be used; the -next-highest-priority tag's option will used instead. If no tag specifies a -particular display option, then the default style for the widget will be used. -.PP -The second purpose for tags is event bindings. You can associate bindings with -a tag in much the same way you can associate bindings with a widget class: -whenever particular X events occur on characters with the given tag, a given -Tcl command will be executed. Tag bindings can be used to give behaviors to -ranges of characters; among other things, this allows hypertext-like features -to be implemented. For details, see the description of the -.QW "\fIpathName \fBtag bind\fR" -widget command below. Tag bindings are shared between all peer widgets -(including any bindings for the special \fBsel\fR tag). -.PP -The third use for tags is in managing the selection. See \fBTHE SELECTION\fR -below. With the exception of the special \fBsel\fR tag, all tags are shared -between peer text widgets, and may be manipulated on an equal basis from any -such widget. The \fBsel\fR tag exists separately and independently in each -peer text widget (but any tag bindings to \fBsel\fR are shared). -.SH MARKS -.PP -The second form of annotation in text widgets is a mark. Marks are used for -remembering particular places in a text. They are something like tags, in that -they have names and they refer to places in the file, but a mark is not -associated with particular characters. Instead, a mark is associated with the -gap between two characters. Only a single position may be associated with a -mark at any given time. If the characters around a mark are deleted the mark -will still remain; it will just have new neighbor characters. In contrast, if -the characters containing a tag are deleted then the tag will no longer have -an association with characters in the file. Marks may be manipulated with the -.QW "\fIpathName \fBmark\fR" -widget command, and their current locations may be determined by using the -mark name as an index in widget commands. -.PP -Each mark also has a -.QW gravity , -which is either \fBleft\fR or \fBright\fR. The gravity for a mark specifies -what happens to the mark when text is inserted at the point of the mark. If a -mark has left gravity, then the mark is treated as if it were attached to the -character on its left, so the mark will remain to the left of any text -inserted at the mark position. If the mark has right gravity, new text -inserted at the mark position will appear to the left of the mark (so that the -mark remains rightmost). The gravity for a mark defaults to \fBright\fR. -.PP -The name space for marks is different from that for tags: the same name may be -used for both a mark and a tag, but they will refer to different things. -.PP -Two marks have special significance. First, the mark \fBinsert\fR is -associated with the insertion cursor, as described under -\fBTHE INSERTION CURSOR\fR -below. Second, the mark \fBcurrent\fR is associated with the -character closest to the mouse and is adjusted automatically to track the -mouse position and any changes to the text in the widget (one exception: -\fBcurrent\fR is not updated in response to mouse motions if a mouse button is -down; the update will be deferred until all mouse buttons have been released). -Neither of these special marks may be deleted. With the exception of these two -special marks, all marks are shared between peer text widgets, and may be -manipulated on an equal basis from any peer. -.SH "EMBEDDED WINDOWS" -.PP -The third form of annotation in text widgets is an embedded window. Each -embedded window annotation causes a window to be displayed at a particular -point in the text. There may be any number of embedded windows in a text -widget, and any widget may be used as an embedded window (subject to the usual -rules for geometry management, which require the text window to be the parent -of the embedded window or a descendant of its parent). -.PP -The embedded window's position on the screen will be updated as the text is -modified or scrolled, and it will be mapped and unmapped as it moves into and -out of the visible area of the text widget. Each embedded window occupies one -unit's worth of index space in the text widget, and it may be referred to -either by the name of its embedded window or by its position in the widget's -index space. If the range of text containing the embedded window is deleted -then the window is destroyed. Similarly if the text widget as a whole is -deleted, then the window is destroyed. -.PP -Eliding an embedded window immediately after scheduling it for creation via -\fIpathName \fBwindow create \fIindex \fB-create\fR will prevent it from being -effectively created. Uneliding an elided embedded window scheduled for creation -via \fIpathName \fBwindow create \fIindex \fB-create\fR will automatically -trigger the associated creation script. After destroying an elided embedded -window, the latter won't get automatically recreated. -.PP -When an embedded window is added to a text widget with the \fIpathName -\fBwindow create\fR widget command, several configuration options may be -associated with it. These options may be modified later with the \fIpathName -\fBwindow configure\fR widget command. The following options are currently -supported: -.TP -\fB\-align \fIwhere\fR -. -If the window is not as tall as the line in which it is displayed, this option -determines where the window is displayed in the line. \fIWhere\fR must have -one of the values \fBtop\fR (align the top of the window with the top of the -line), \fBcenter\fR (center the window within the range of the line), -\fBbottom\fR (align the bottom of the window with the bottom of the line's -area), or \fBbaseline\fR (align the bottom of the window with the baseline of -the line). -.TP -\fB\-create \fIscript\fR -. -Specifies a Tcl script that may be evaluated to create the window for the -annotation. If no \fB\-window\fR option has been specified for the annotation -this script will be evaluated when the annotation is about to be displayed on -the screen. \fIScript\fR must create a window for the annotation and return -the name of that window as its result. Two substitutions will be performed in -\fIscript\fR before evaluation. \fI%W\fR will be substituted by the name of -the parent text widget, and \fI%%\fR will be substituted by a single \fI%\fR. -If the annotation's window should ever be deleted, \fIscript\fR will be -evaluated again the next time the annotation is displayed. -.TP -\fB\-padx \fIpixels\fR -. -\fIPixels\fR specifies the amount of extra space to leave on each side of the -embedded window. It may have any of the usual forms defined for a screen -distance. -.TP -\fB\-pady \fIpixels\fR -. -\fIPixels\fR specifies the amount of extra space to leave on the top and on -the bottom of the embedded window. It may have any of the usual forms defined -for a screen distance. -.TP -\fB\-stretch \fIboolean\fR -. -If the requested height of the embedded window is less than the height of the -line in which it is displayed, this option can be used to specify whether the -window should be stretched vertically to fill its line. If the \fB\-pady\fR -option has been specified as well, then the requested padding will be retained -even if the window is stretched. -.TP -\fB\-window \fIpathName\fR -. -Specifies the name of a window to display in the annotation. Note that if a -\fIpathName\fR has been set, then later configuring a window to the empty -string will not delete the widget corresponding to the old \fIpathName\fR. -Rather it will remove the association between the old \fIpathName\fR and the -text widget. If multiple peer widgets are in use, it is usually simpler to use -the \fB\-create\fR option if embedded windows are desired in each peer. -.SH "EMBEDDED IMAGES" -.PP -The final form of annotation in text widgets is an embedded image. Each -embedded image annotation causes an image to be displayed at a particular -point in the text. There may be any number of embedded images in a text -widget, and a particular image may be embedded in multiple places in the same -text widget. -.PP -The embedded image's position on the screen will be updated as the text is -modified or scrolled. Each embedded image occupies one unit's worth of index -space in the text widget, and it may be referred to either by its position in -the widget's index space, or the name it is assigned when the image is inserted -into the text widget with \fIpathName \fBimage create\fR. If the range of text -containing the embedded image is deleted then that copy of the image is removed -from the screen. -.PP -Eliding an embedded image immediately after scheduling it for creation via -\fIpathName \fBimage create \fIindex \fB-create\fR will prevent it from being -effectively created. Uneliding an elided embedded image scheduled for creation -via \fIpathName \fBimage create \fIindex \fB-create\fR will automatically -trigger the associated creation script. After destroying an elided embedded -image, the latter won't get automatically recreated. -.PP -When an embedded image is added to a text widget with the \fIpathName \fBimage -create\fR widget command, a name unique to this instance of the image is -returned. This name may then be used to refer to this image instance. The name -is taken to be the value of the \fB\-name\fR option (described below). If the -\fB\-name\fR option is not provided, the \fB\-image\fR name is used instead. -If the \fIimageName\fR is already in use in the text widget, then \fB#\fInn\fR -is added to the end of the \fIimageName\fR, where \fInn\fR is an arbitrary -integer. This insures the \fIimageName\fR is unique. Once this name is -assigned to this instance of the image, it does not change, even though the -\fB\-image\fR or \fB\-name\fR values can be changed with \fIpathName \fBimage -configure\fR. -.PP -When an embedded image is added to a text widget with the \fIpathName \fBimage -create\fR widget command, several configuration options may be associated with -it. These options may be modified later with the \fIpathName \fBimage -configure\fR widget command. The following options are currently supported: -.TP -\fB\-align \fIwhere\fR -. -If the image is not as tall as the line in which it is displayed, this option -determines where the image is displayed in the line. \fIWhere\fR must have one -of the values \fBtop\fR (align the top of the image with the top of the line), -\fBcenter\fR (center the image within the range of the line), \fBbottom\fR -(align the bottom of the image with the bottom of the line's area), or -\fBbaseline\fR (align the bottom of the image with the baseline of the line). -.TP -\fB\-image \fIimage\fR -. -Specifies the name of the Tk image to display in the annotation. If -\fIimage\fR is not a valid Tk image, then an error is returned. -.TP -\fB\-name \fIImageName\fR -. -Specifies the name by which this image instance may be referenced in the text -widget. If \fIImageName\fR is not supplied, then the name of the Tk image is -used instead. If the \fIimageName\fR is already in use, \fI#nn\fR is appended -to the end of the name as described above. -.TP -\fB\-padx \fIpixels\fR -. -\fIPixels\fR specifies the amount of extra space to leave on each side of the -embedded image. It may have any of the usual forms defined for a screen -distance. -.TP -\fB\-pady \fIpixels\fR -. -\fIPixels\fR specifies the amount of extra space to leave on the top and on -the bottom of the embedded image. It may have any of the usual forms defined -for a screen distance. -.SH "THE SELECTION" -.PP -Selection support is implemented via tags. If the \fB\-exportselection\fR option -for the text widget is true then the \fBsel\fR tag will be associated with the -selection: -.IP [1] -Whenever characters are tagged with \fBsel\fR the text widget will claim -ownership of the selection. -.IP [2] -Attempts to retrieve the selection will be serviced by the text widget, -returning all the characters with the \fBsel\fR tag. -.IP [3] -If the selection is claimed away by another application or by another window -within this application, then the \fBsel\fR tag will be removed from all -characters in the text. -.IP [4] -Whenever the \fBsel\fR tag range changes a virtual event \fB<<Selection>>\fR -is generated. -.PP -The \fBsel\fR tag is automatically defined when a text widget is created, and -it may not be deleted with the -.QW "\fIpathName \fBtag delete\fR" -widget command. Furthermore, the \fB\-selectbackground\fR, -\fB\-selectborderwidth\fR, and \fB\-selectforeground\fR options for the text -widget are tied to the \fB\-background\fR, \fB\-borderwidth\fR, and -\fB\-foreground\fR options for the \fBsel\fR tag: changes in either will -automatically be reflected in the other. Also the -\fB\-inactiveselectbackground\fR option for the text widget is used instead of -\fB\-selectbackground\fR when the text widget does not have the focus. This -allows programmatic control over the visualization of the \fBsel\fR tag for -foreground and background windows, or to have \fBsel\fR not shown at all (when -\fB\-inactiveselectbackground\fR is empty) for background windows. Each peer -text widget has its own \fBsel\fR tag which can be separately configured and -set. -.SH "THE INSERTION CURSOR" -.PP -The mark named \fBinsert\fR has special significance in text widgets. It is -defined automatically when a text widget is created and it may not be unset -with the -.QW "\fIpathName \fBmark unset\fR" -widget command. The \fBinsert\fR mark represents the position of the insertion -cursor, and the insertion cursor will automatically be drawn at this point -whenever the text widget has the input focus. -.SH "THE MODIFIED FLAG" -.PP -The text widget can keep track of changes to the content of the widget by -means of the modified flag. Inserting or deleting text will set this flag. The -flag can be queried, set and cleared programmatically as well. Whenever the -flag changes state a \fB<<Modified>>\fR virtual event is generated. See the -\fIpathName \fBedit modified\fR widget command for more details. -.SH "THE UNDO MECHANISM" -.PP -The text widget has an unlimited undo and redo mechanism (when the -\fB\-undo\fR widget option is true) which records every insert and delete -action on a stack. -.PP -Boundaries (called -.QW separators ) -are inserted between edit actions. The purpose of these separators is to group -inserts, deletes and replaces into one compound edit action. When undoing a -change everything between two separators will be undone. The undone changes -are then moved to the redo stack, so that an undone edit can be redone again. -The redo stack is cleared whenever new edit actions are recorded on the undo -stack. The undo and redo stacks can be cleared to keep their depth under -control. -.PP -Separators are inserted automatically when the \fB\-autoseparators\fR widget -option is true. You can insert separators programmatically as well. If a -separator is already present at the top of the undo stack no other will be -inserted. That means that two separators on the undo stack are always -separated by at least one insert or delete action. -.PP -The \fB<<UndoStack>>\fR virtual event is generated every time the undo stack -or the redo stack becomes empty or unempty. -.PP -The undo mechanism is also linked to the modified flag. This means that -undoing or redoing changes can take a modified text widget back to the -unmodified state or vice versa. The modified flag will be set automatically to -the appropriate state. This automatic coupling does not work when the modified -flag has been set by the user, until the flag has been reset again. -.PP -See below for the \fIpathName \fBedit\fR widget command that controls the undo -mechanism. -.SH "PEER WIDGETS" -.PP -The text widget has a separate store of all its data concerning each line's -textual contents, marks, tags, images and windows, and the undo stack. -.PP -While this data store cannot be accessed directly (i.e. without a text widget -as an intermediary), multiple text widgets can be created, each of which -present different views on the same underlying data. Such text widgets are -known as peer text widgets. -.PP -As text is added, deleted, edited and coloured in any one widget, and as -images, marks, tags are adjusted, all such changes will be reflected in all -peers. -.PP -All data and markup is shared, except for a few small details. First, the -\fBsel\fR tag may be set and configured (in its display style) differently for -each peer. Second, each peer has its own \fBinsert\fR and \fBcurrent\fR mark -positions (but all other marks are shared). Third, embedded windows, which are -arbitrary other widgets, cannot be shared between peers. This means the -\fB\-window\fR option of embedded windows is independently set for each peer -(it is advisable to use the \fB\-create\fR script capabilities to allow each -peer to create its own embedded windows as needed). Fourth, all of the -configuration options of each peer (e.g. \fB\-font\fR, etc) can be set -independently, with the exception of \fB\-undo\fR, \fB\-maxundo\fR, -\fB\-autoseparators\fR (i.e. all undo, redo and modified state issues are -shared). -.PP -Finally any single peer need not contain all lines from the underlying data -store. When creating a peer, a contiguous range of lines (e.g. only lines 52 -through 125) may be specified. This allows a peer to contain just a small -portion of the overall text. The range of lines will expand and contract as -text is inserted or deleted. The peer will only ever display complete lines of -text (one cannot share just part of a line). If the peer's contents contracts -to nothing (i.e. all complete lines in the peer widget have been deleted from -another widget), then it is impossible for new lines to be inserted. The peer -will simply become an empty shell on which the background can be configured, -but which will never show any content (without manual reconfiguration of the -start and end lines). Note that a peer which does not contain all of the -underlying data store still has indices numbered from -.QW 1.0 -to -.QW end . -It is simply that those indices reflect a subset of the total data, and data -outside the contained range is not accessible to the peer. This means that the -command \fIpeerName \fBindex end\fR may return quite different values in -different peers. Similarly, commands like \fIpeerName \fBtag ranges\fR will -not return index ranges outside that which is meaningful to the peer. The -configuration options \fB\-startline\fR and \fB\-endline\fR may be used to -control how much of the underlying data is contained in any given text widget. -.PP -Note that peers are really peers. Deleting the -.QW original -text widget will not cause any other peers to be deleted, or otherwise -affected. -.PP -See below for the \fIpathName \fBpeer\fR widget command that controls the -creation of peer widgets. -.SH "ASYNCHRONOUS UPDATE OF LINE HEIGHTS" -.PP -In order to maintain a responsive user-experience, the text widget calculates -lines metrics (line heights in pixels) asynchronously. Because of this, some -commands of the text widget may return wrong results if the asynchronous -calculations are not finished at the time of calling. This applies to -\fIpathName \fBcount -ypixels\fR and \fIpathName \fByview\fR. -.PP -Again for performance reasons, it would not be appropriate to let these -commands always wait for the end of the update calculation each time they are -called. In most use cases of these commands a more or less inaccurate result -does not really matter compared to execution speed. -.PP -In case accurate result is needed (and if the text widget is managed by a -geometry manager), one can resort to \fIpathName \fBsync\fR and \fIpathName -\fBpendingsync\fR to control the synchronization of the view of text widgets. -.PP -The \fB<<WidgetViewSync>>\fR virtual event fires when the line heights of the -text widget become obsolete (due to some editing command or configuration -change), and again when the internal data of the text widget are back in sync -with the widget view. The detail field (%d substitution) is either true (when -the widget is in sync) or false (when it is not). -.PP -\fIpathName \fBsync\fR, \fIpathName \fBpendingsync\fR and -\fB<<WidgetViewSync>>\fR apply to each text widget independently of its peers. -.PP -Examples of use: -.CS -## Example 1: -# immediately complete line metrics at any cost (GUI unresponsive) -$w sync -$w yview moveto $fraction - -## Example 2: -# synchronously wait for up-to-date line metrics (GUI responsive) -# before executing the scheduled command, but don't block execution flow -$w sync -command [list $w yview moveto $fraction] - -## Example 3: -# init -set yud($w) 0 -proc updateaction w { -\&set ::yud($w) 1 -\&# any other update action here... -} -# runtime, synchronously wait for up-to-date line metrics (GUI responsive) -$w sync -command [list updateaction $w] -vwait yud($w) -$w yview moveto $fraction - -## Example 4: -# init -set todo($w) {} -proc updateaction w { -\&foreach cmd $::todo($w) {uplevel #0 $cmd} -\&set todo($w) {} -} -# runtime -lappend todo($w) [list $w yview moveto $fraction] -$w sync -command [list updateaction $w] - -## Example 5: -# init -set todo($w) {} -bind $w <<WidgetViewSync>> { -\&if {%d} { -\&\&foreach cmd $todo(%W) {eval $cmd} -\&\&set todo(%W) {} -\&} -} -# runtime -if {![$w pendingsync]} { -\&$w yview moveto $fraction -} else { -\&lappend todo($w) [list $w yview moveto $fraction] -} -.CE -.SH "WIDGET COMMAND" -.PP -The \fBtext\fR command creates a new Tcl command whose name is the same as the -path name of the text's window. This command may be used to invoke various -operations on the widget. It has the following general form: -.CS -\fIpathName option \fR?\fIarg arg ...\fR? -.CE -\fIPathName\fR is the name of the command, which is the same as the text -widget's path name. \fIOption\fR and the \fIarg\fRs determine the exact -behavior of the command. The following commands are possible for text widgets: -.TP -\fIpathName \fBbbox \fIindex\fR -. -Returns a list of four elements describing the screen area of the character -given by \fIindex\fR. The first two elements of the list give the x and y -coordinates of the upper-left corner of the area occupied by the character, -and the last two elements give the width and height of the area. If the -character is only partially visible on the screen, then the return value -reflects just the visible part. If the character is not visible on the screen -then the return value is an empty list. -.TP -\fIpathName \fBcget\fR \fIoption\fR -. -Returns the current value of the configuration option given by \fIoption\fR. -\fIOption\fR may have any of the values accepted by the \fBtext\fR command. -.TP -\fIpathName \fBcompare\fR \fIindex1 op index2\fR -. -Compares the indices given by \fIindex1\fR and \fIindex2\fR according to the -relational operator given by \fIop\fR, and returns 1 if the relationship is -satisfied and 0 if it is not. \fIOp\fR must be one of the operators <, <=, ==, ->=, >, or !=. If \fIop\fR is == then 1 is returned if the two indices refer to -the same character, if \fIop\fR is < then 1 is returned if \fIindex1\fR refers -to an earlier character in the text than \fIindex2\fR, and so on. -.TP -\fIpathName \fBconfigure\fR ?\fIoption\fR? \fI?value option value ...\fR? -. -Query or modify the configuration options of the widget. If no \fIoption\fR is -specified, returns a list describing all of the available options for -\fIpathName\fR (see \fBTk_ConfigureInfo\fR for information on the format of -this list). If \fIoption\fR is specified with no \fIvalue\fR, then the command -returns a list describing the one named option (this list will be identical to -the corresponding sublist of the value returned if no \fIoption\fR is -specified). If one or more \fIoption\-value\fR pairs are specified, then the -command modifies the given widget option(s) to have the given value(s); in -this case the command returns an empty string. \fIOption\fR may have any of -the values accepted by the \fBtext\fR command. -.TP -\fIpathName \fBcount\fR \fI?options\fR? \fIindex1 index2\fR -. -Counts the number of relevant things between the two indices. If \fIindex1\fR -is after \fIindex2\fR, the result will be a negative number (and this holds -for each of the possible options). The actual items which are counted depend -on the options given. The result is a list of integers, one for the result of -each counting option given. Valid counting options are \fB\-chars\fR, -\fB\-displaychars\fR, \fB\-displayindices\fR, \fB\-displaylines\fR, -\fB\-indices\fR, \fB\-lines\fR, \fB\-xpixels\fR and \fB\-ypixels\fR. The -default value, if no option is specified, is \fB\-indices\fR. There is an -additional possible option \fB\-update\fR which is a modifier. If given (and -if the text widget is managed by a geometry manager), then all subsequent -options ensure that any possible out of date information is recalculated. -This currently only has any effect for the \fB\-ypixels\fR count (which, if -\fB\-update\fR is not given, will use the text widget's current cached value -for each line). This \fB\-update\fR option is obsoleted by \fIpathName -\fBsync\fR, \fIpathName \fBpendingsync\fR and \fB<<WidgetViewSync>>\fR. The -count options are interpreted as follows: -.RS -.IP \fB\-chars\fR -count all characters, whether elided or not. Do not count embedded windows or -images. -.IP \fB\-displaychars\fR -count all non-elided characters. -.IP \fB\-displayindices\fR -count all non-elided characters, windows and images. -.IP \fB\-displaylines\fR -count all display lines (i.e. counting one for each time a line wraps) from -the line of the first index up to, but not including the display line of the -second index. Therefore if they are both on the same display line, zero will -be returned. By definition displaylines are visible and therefore this only -counts portions of actual visible lines. -.IP \fB\-indices\fR -count all characters and embedded windows or images (i.e. everything which -counts in text-widget index space), whether they are elided or not. -.IP \fB\-lines\fR -count all logical lines (irrespective of wrapping) from the line of the first -index up to, but not including the line of the second index. Therefore if they -are both on the same line, zero will be returned. Logical lines are counted -whether they are currently visible (non-elided) or not. -.IP \fB\-xpixels\fR -count the number of horizontal pixels from the first pixel of the first index -to (but not including) the first pixel of the second index. To count the total -desired width of the text widget (assuming wrapping is not enabled), first -find the longest line and then use -.QW ".text count \-xpixels \N'34'${line}.0\N'34' \N'34'${line}.0 lineend\N'34'" . -.IP \fB\-ypixels\fR -count the number of vertical pixels from the first pixel of the first index to -(but not including) the first pixel of the second index. If both indices are -on the same display line, zero will be returned. To count the total number of -vertical pixels in the text widget, use -.QW ".text count \-ypixels 1.0 end" , -and to ensure this is up to date, use -.QW ".text count \-update \-ypixels 1.0 end" . -.PP -The command returns a positive or negative integer corresponding to the number -of items counted between the two indices. One such integer is returned for -each counting option given, so a list is returned if more than one option was -supplied. For example -.QW ".text count \-xpixels \-ypixels 1.3 4.5" -is perfectly valid and will return a list of two elements. -.RE -.TP -\fIpathName \fBdebug \fR?\fIboolean\fR? -. -If \fIboolean\fR is specified, then it must have one of the true or false -values accepted by Tcl_GetBoolean. If the value is a true one then internal -consistency checks will be turned on in the B-tree code associated with text -widgets. If \fIboolean\fR has a false value then the debugging checks will be -turned off. In either case the command returns an empty string. If -\fIboolean\fR is not specified then the command returns \fBon\fR or \fBoff\fR -to indicate whether or not debugging is turned on. There is a single debugging -switch shared by all text widgets: turning debugging on or off in any widget -turns it on or off for all widgets. For widgets with large amounts of text, -the consistency checks may cause a noticeable slow-down. -.RS -.PP -When debugging is turned on, the drawing routines of the text widget set the -global variables \fBtk_textRedraw\fR and \fBtk_textRelayout\fR to the lists of -indices that are redrawn. The values of these variables are tested by Tk's -test suite. -.RE -.TP -\fIpathName \fBdelete \fIindex1 \fR?\fIindex2 ...\fR? -. -Delete a range of characters from the text. -If both \fIindex1\fR and \fIindex2\fR are specified, then delete -all the characters starting with the one given by \fIindex1\fR -and stopping just before \fIindex2\fR (i.e. the character at -\fIindex2\fR is not deleted). -If \fIindex2\fR does not specify a position later in the text -than \fIindex1\fR then no characters are deleted. -If \fIindex2\fR is not specified then the single character at -\fIindex1\fR is deleted. -Attempts to delete characters in a way that would leave -the text without a newline as the last character will be tweaked by the -text widget to avoid this. In particular, deletion of complete lines of -text up to the end of the text will also delete the newline character just -before the deleted block so that it is replaced by the new final newline -of the text widget. -The command returns an empty string. -If more indices are given, multiple ranges of text will be deleted. -All indices are first checked for validity before any deletions are made. -They are sorted and the text is removed from the last range to the -first range so deleted text does not cause an undesired index shifting -side-effects. If multiple ranges with the same start index are given, -then the longest range is used. If overlapping ranges are given, then -they will be merged into spans that do not cause deletion of text -outside the given ranges due to text shifted during deletion. -.TP -\fIpathName \fBdlineinfo \fIindex\fR -. -Returns a list with five elements describing the area occupied by the display -line containing \fIindex\fR. The first two elements of the list give the x and -y coordinates of the upper-left corner of the area occupied by the line, the -third and fourth elements give the width and height of the area, and the fifth -element gives the position of the baseline for the line, measured down from -the top of the area. All of this information is measured in pixels. If the -current wrap mode is \fBnone\fR and the line extends beyond the boundaries of -the window, the area returned reflects the entire area of the line, including -the portions that are out of the window. If the line is shorter than the full -width of the window then the area returned reflects just the portion of the -line that is occupied by characters and embedded windows. If the display line -containing \fIindex\fR is not visible on the screen then the return value is -an empty list. -.TP -\fIpathName \fBdump \fR?\fIswitches\fR? \fIindex1 \fR?\fIindex2\fR? -. -Return the contents of the text widget from \fIindex1\fR up to, but not -including \fIindex2\fR, including the text and information about marks, tags, -and embedded windows. If \fIindex2\fR is not specified, then it defaults to -one character past \fIindex1\fR. The information is returned in the following -format: -.RS -.LP -\fIkey1 value1 index1 key2 value2 index2\fR ... -.LP -The possible \fIkey\fR values are \fBtext\fR, \fBmark\fR, \fBtagon\fR, -\fBtagoff\fR, \fBimage\fR, and \fBwindow\fR. The corresponding \fIvalue\fR is -the text, mark name, tag name, image name, or window name. The \fIindex\fR -information is the index of the start of the text, mark, tag transition, image -or window. One or more of the following switches (or abbreviations thereof) -may be specified to control the dump: -.TP -\fB\-all\fR -. -Return information about all elements: text, marks, tags, images and windows. -This is the default. -.TP -\fB\-command \fIcommand\fR -. -Instead of returning the information as the result of the dump operation, -invoke the \fIcommand\fR on each element of the text widget within the range. -The command has three arguments appended to it before it is evaluated: the -\fIkey\fR, \fIvalue\fR, and \fIindex\fR. -.TP -\fB\-image\fR -. -Include information about images in the dump results. -.TP -\fB\-mark\fR -. -Include information about marks in the dump results. -.TP -\fB\-tag\fR -. -Include information about tag transitions in the dump results. Tag information -is returned as \fBtagon\fR and \fBtagoff\fR elements that indicate the begin -and end of each range of each tag, respectively. -.TP -\fB\-text\fR -. -Include information about text in the dump results. The value is the text up -to the next element or the end of range indicated by \fIindex2\fR. A text -element does not span newlines. A multi-line block of text that contains no -marks or tag transitions will still be dumped as a set of text segments that -each end with a newline. The newline is part of the value. -.TP -\fB\-window\fR -. -Include information about embedded windows in the dump results. The value of a -window is its Tk pathname, unless the window has not been created yet. (It -must have a create script.) In this case an empty string is returned, and you -must query the window by its index position to get more information. -.RE -.TP -\fIpathName \fBedit \fIoption \fR?\fIarg arg ...\fR? -. -This command controls the undo mechanism and the modified flag. The exact -behavior of the command depends on the \fIoption\fR argument that follows the -\fBedit\fR argument. The following forms of the command are currently -supported: -.RS -.TP -\fIpathName \fBedit canredo\fR -. -Returns a boolean true if redo is possible, i.e. when the redo stack is not -empty. Otherwise returns false. -.TP -\fIpathName \fBedit canundo\fR -. -Returns a boolean true if undo is possible, i.e. when the undo stack is not -empty. Otherwise returns false. -.TP -\fIpathName \fBedit modified \fR?\fIboolean\fR? -. -If \fIboolean\fR is not specified, returns the modified flag of the widget. -The insert, delete, edit undo and edit redo commands or the user can set or -clear the modified flag. If \fIboolean\fR is specified, sets the modified flag -of the widget to \fIboolean\fR. -.TP -\fIpathName \fBedit redo\fR -. -When the \fB\-undo\fR option is true, reapplies the last undone edits provided -no other edits were done since then. Generates an error when the redo stack is -empty. Does nothing when the \fB\-undo\fR option is false. -.TP -\fIpathName \fBedit reset\fR -. -Clears the undo and redo stacks. -.TP -\fIpathName \fBedit separator\fR -. -Inserts a separator (boundary) on the undo stack. Does nothing when the -\fB\-undo\fR option is false. -.TP -\fIpathName \fBedit undo\fR -. -Undoes the last edit action when the \fB\-undo\fR option is true. An edit -action is defined as all the insert and delete commands that are recorded on -the undo stack in between two separators. Generates an error when the undo -stack is empty. Does nothing when the \fB\-undo\fR option is false. -.RE -.TP -\fIpathName \fBget\fR ?\fB\-displaychars\fR? ?\fB\-\-\fR? \fIindex1\fR ?\fIindex2 ...\fR? -. -Return a range of characters from the text. The return value will be all the -characters in the text starting with the one whose index is \fIindex1\fR and -ending just before the one whose index is \fIindex2\fR (the character at -\fIindex2\fR will not be returned). If \fIindex2\fR is omitted then the single -character at \fIindex1\fR is returned. If there are no characters in the -specified range (e.g. \fIindex1\fR is past the end of the file or \fIindex2\fR -is less than or equal to \fIindex1\fR) then an empty string is returned. If -the specified range contains embedded windows, no information about them is -included in the returned string. If multiple index pairs are given, multiple -ranges of text will be returned in a list. Invalid ranges will not be -represented with empty strings in the list. The ranges are returned in the -order passed to \fIpathName \fBget\fR. If the \fB\-displaychars\fR option is -given, then, within each range, only those characters which are not elided -will be returned. This may have the effect that some of the returned ranges -are empty strings. -.TP -\fIpathName \fBimage \fIoption \fR?\fIarg arg ...\fR? -. -This command is used to manipulate embedded images. The behavior of the -command depends on the \fIoption\fR argument that follows the \fBtag\fR -argument. The following forms of the command are currently supported: -.RS -.TP -\fIpathName \fBimage cget \fIindex option\fR -. -Returns the value of a configuration option for an embedded image. \fIIndex\fR -identifies the embedded image, and \fIoption\fR specifies a particular -configuration option, which must be one of the ones listed in the section -\fBEMBEDDED IMAGES\fR. -.TP -\fIpathName \fBimage configure \fIindex\fR ?\fIoption value ...\fR? -. -Query or modify the configuration options for an embedded image. If no -\fIoption\fR is specified, returns a list describing all of the available -options for the embedded image at \fIindex\fR (see \fBTk_ConfigureInfo\fR for -information on the format of this list). If \fIoption\fR is specified with no -\fIvalue\fR, then the command returns a list describing the one named option -(this list will be identical to the corresponding sublist of the value -returned if no \fIoption\fR is specified). If one or more \fIoption\-value\fR -pairs are specified, then the command modifies the given option(s) to have the -given value(s); in this case the command returns an empty string. See -\fBEMBEDDED IMAGES\fR for information on the options that are supported. -.TP -\fIpathName \fBimage create \fIindex\fR ?\fIoption value ...\fR? -. -This command creates a new image annotation, which will appear in the text at -the position given by \fIindex\fR. Any number of \fIoption\-value\fR pairs may -be specified to configure the annotation. Returns a unique identifier that may -be used as an index to refer to this image. See \fBEMBEDDED IMAGES\fR for -information on the options that are supported, and a description of the -identifier returned. -.TP -\fIpathName \fBimage names\fR -. -Returns a list whose elements are the names of all image instances currently -embedded in \fIwindow\fR. -.RE -.TP -\fIpathName \fBindex \fIindex\fR -. -Returns the position corresponding to \fIindex\fR in the form \fIline.char\fR -where \fIline\fR is the line number and \fIchar\fR is the character number. -\fIIndex\fR may have any of the forms described under \fBINDICES\fR above. -.TP -\fIpathName \fBinsert \fIindex chars \fR?\fItagList chars tagList ...\fR? -. -Inserts all of the \fIchars\fR arguments just before the character at -\fIindex\fR. If \fIindex\fR refers to the end of the text (the character after -the last newline) then the new text is inserted just before the last newline -instead. If there is a single \fIchars\fR argument and no \fItagList\fR, then -the new text will receive any tags that are present on both the character -before and the character after the insertion point; if a tag is present on -only one of these characters then it will not be applied to the new text. If -\fItagList\fR is specified then it consists of a list of tag names; the new -characters will receive all of the tags in this list and no others, regardless -of the tags present around the insertion point. If multiple -\fIchars\fR\-\fItagList\fR argument pairs are present, they produce the same -effect as if a separate \fIpathName \fBinsert\fR widget command had been -issued for each pair, in order. The last \fItagList\fR argument may be -omitted. -.TP -\fIpathName \fBmark \fIoption \fR?\fIarg arg ...\fR? -. -This command is used to manipulate marks. The exact behavior of the command -depends on the \fIoption\fR argument that follows the \fBmark\fR argument. The -following forms of the command are currently supported: -.RS -.TP -\fIpathName \fBmark gravity \fImarkName\fR ?\fIdirection\fR? -. -If \fIdirection\fR is not specified, returns \fBleft\fR or \fBright\fR to -indicate which of its adjacent characters \fImarkName\fR is attached to. If -\fIdirection\fR is specified, it must be \fBleft\fR or \fBright\fR; the -gravity of \fImarkName\fR is set to the given value. -.TP -\fIpathName \fBmark names\fR -. -Returns a list whose elements are the names of all the marks that are -currently set. -.TP -\fIpathName \fBmark next \fIindex\fR -. -Returns the name of the next mark at or after \fIindex\fR. If \fIindex\fR is -specified in numerical form, then the search for the next mark begins at that -index. If \fIindex\fR is the name of a mark, then the search for the next mark -begins immediately after that mark. This can still return a mark at the same -position if there are multiple marks at the same index. These semantics mean -that the \fBmark next\fR operation can be used to step through all the marks -in a text widget in the same order as the mark information returned by the -\fIpathName \fBdump\fR operation. If a mark has been set to the special -\fBend\fR index, then it appears to be \fIafter\fR \fBend\fR with respect to -the \fIpathName \fBmark next\fR operation. An empty string is returned if -there are no marks after \fIindex\fR. -.TP -\fIpathName \fBmark previous \fIindex\fR -. -Returns the name of the mark at or before \fIindex\fR. If \fIindex\fR is -specified in numerical form, then the search for the previous mark begins with -the character just before that index. If \fIindex\fR is the name of a mark, -then the search for the next mark begins immediately before that mark. This -can still return a mark at the same position if there are multiple marks at -the same index. These semantics mean that the \fIpathName \fBmark previous\fR -operation can be used to step through all the marks in a text widget in the -reverse order as the mark information returned by the \fIpathName \fBdump\fR -operation. An empty string is returned if there are no marks before -\fIindex\fR. -.TP -\fIpathName \fBmark set \fImarkName index\fR -. -Sets the mark named \fImarkName\fR to a position just before the character at -\fIindex\fR. If \fImarkName\fR already exists, it is moved from its old -position; if it does not exist, a new mark is created. This command returns an -empty string. -.TP -\fIpathName \fBmark unset \fImarkName \fR?\fImarkName markName ...\fR? -. -Remove the mark corresponding to each of the \fImarkName\fR arguments. The -removed marks will not be usable in indices and will not be returned by future -calls to -.QW "\fIpathName \fBmark names\fR" . -This command returns an empty string. -.RE -.TP -\fIpathName \fBpeer \fIoption args\fR -. -This command is used to create and query widget peers. It has two forms, -depending on \fIoption\fR: -.RS -.TP -\fIpathName \fBpeer create \fInewPathName\fR ?\fIoptions\fR? -. -Creates a peer text widget with the given \fInewPathName\fR, and any optional -standard configuration options (as for the \fItext\fR command). By default the -peer will have the same start and end line as the parent widget, but these can -be overridden with the standard configuration options. -.TP -\fIpathName \fBpeer names\fR -. -Returns a list of peers of this widget (this does not include the widget -itself). The order within this list is undefined. -.RE -.TP -\fIpathName \fBpendingsync\fR -Returns 1 if the line heights calculations are not up-to-date, 0 otherwise. -.TP -\fIpathName \fBreplace\fR \fIindex1 index2 chars\fR ?\fItagList chars tagList ...\fR? -Replaces the range of characters between \fIindex1\fR and \fIindex2\fR -with the given characters and tags. See the section on \fIpathName -\fBinsert\fR for an explanation of the handling of the \fItagList...\fR -arguments, and the section on \fIpathName -\fBdelete\fR for an explanation of the handling of the indices. If -\fIindex2\fR corresponds to an index earlier in the text than -\fIindex1\fR, an error will be generated. -.RS -.PP -The deletion and insertion are arranged so that no unnecessary scrolling of -the window or movement of insertion cursor occurs. In addition the undo/redo -stack are correctly modified, if undo operations are active in the text -widget. The command returns an empty string. -.RE -.TP -\fIpathName \fBscan \fIoption args\fR -. -This command is used to implement scanning on texts. It has two forms, -depending on \fIoption\fR: -.RS -.TP -\fIpathName \fBscan mark \fIx y\fR -. -Records \fIx\fR and \fIy\fR and the current view in the text window, for use -in conjunction with later \fIpathName \fBscan dragto\fR commands. Typically -this command is associated with a mouse button press in the widget. It returns -an empty string. -.TP -\fIpathName \fBscan dragto \fIx y\fR -. -This command computes the difference between its \fIx\fR and \fIy\fR arguments -and the \fIx\fR and \fIy\fR arguments to the last \fIpathName \fBscan mark\fR -command for the widget. It then adjusts the view by 10 times the difference in -coordinates. This command is typically associated with mouse motion events in -the widget, to produce the effect of dragging the text at high speed through -the window. The return value is an empty string. -.RE -.TP -\fIpathName \fBsearch \fR?\fIswitches\fR? \fIpattern index \fR?\fIstopIndex\fR? -. -Searches the text in \fIpathName\fR starting at \fIindex\fR for a range of -characters that matches \fIpattern\fR. If a match is found, the index of the -first character in the match is returned as result; otherwise an empty string -is returned. One or more of the following switches (or abbreviations thereof) -may be specified to control the search: -.RS -.TP -\fB\-forwards\fR -. -The search will proceed forward through the text, finding the first matching -range starting at or after the position given by \fIindex\fR. This is the -default. -.TP -\fB\-backwards\fR -. -The search will proceed backward through the text, finding the matching range -closest to \fIindex\fR whose first character is before \fIindex\fR (it is not -allowed to be at \fIindex\fR). Note that, for a variety of reasons, backwards -searches can be substantially slower than forwards searches (particularly when -using \fB\-regexp\fR), so it is recommended that performance-critical code use -forward searches. -.TP -\fB\-exact\fR -. -Use exact matching: the characters in the matching range must be identical to -those in \fIpattern\fR. This is the default. -.TP -\fB\-regexp\fR -. -Treat \fIpattern\fR as a regular expression and match it against the text -using the rules for regular expressions (see the \fBregexp\fR command -and the \fBre_syntax\fR page for -details). The default matching automatically passes both the -\fB\-lineanchor\fR and \fB\-linestop\fR options to the regexp engine (unless -\fB\-nolinestop\fR is used), so that \fI^$\fR match beginning and end of line, -and \fI.\fR, \fI[^\fR sequences will never match the newline character -\fI\en\fR. -.TP -\fB\-nolinestop\fR -. -This allows \fI.\fR and \fI[^\fR sequences to match the newline character -\fI\en\fR, which they will otherwise not do (see the \fBregexp\fR command for -details). This option is only meaningful if \fB\-regexp\fR is also given, and -an error will be thrown otherwise. For example, to match the entire text, use -.QW "\fIpathName \fBsearch \-nolinestop \-regexp\fR \N'34'.*\N'34' 1.0" . -.TP -\fB\-nocase\fR -. -Ignore case differences between the pattern and the text. -.TP -\fB\-count\fI varName\fR -. -The argument following \fB\-count\fR gives the name of a variable; if a match -is found, the number of index positions between beginning and end of the -matching range will be stored in the variable. If there are no embedded images -or windows in the matching range (and there are no elided characters if -\fB\-elide\fR is not given), this is equivalent to the number of characters -matched. In either case, the range \fImatchIdx\fR to \fImatchIdx + $count -chars\fR will return the entire matched text. -.TP -\fB\-all\fR -. -Find all matches in the given range and return a list of the indices of the -first character of each match. If a \fB\-count\fI varName\fR switch is given, -then \fIvarName\fR is also set to a list containing one element for each -successful match. Note that, even for exact searches, the elements of this -list may be different, if there are embedded images, windows or hidden text. -Searches with \fB\-all\fR behave very similarly to the Tcl command \fBregexp -\-all\fR, in that overlapping matches are not normally returned. For example, -applying an \fB\-all\fR search of the pattern -.QW \ew+ -against -.QW "hello there" -will just match twice, once for each word, and matching -.QW "Z[a\-z]+Z" -against -.QW ZooZooZoo -will just match once. -.TP -\fB\-overlap\fR -. -When performing \fB\-all\fR searches, the normal behaviour is that matches -which overlap an already-found match will not be returned. This switch changes -that behaviour so that all matches which are not totally enclosed within -another match are returned. For example, applying an \fB\-overlap\fR search of -the pattern -.QW \ew+ -against -.QW "hello there" -will just match twice (i.e. no different to just \fB\-all\fR), but matching -.QW Z[a\-z]+Z -against -.QW ZooZooZoo -will now match twice. An error will be thrown if this switch is used without -\fB\-all\fR. -.TP -\fB\-strictlimits\fR -. -When performing any search, the normal behaviour is that the start and stop -limits are checked with respect to the start of the matching text. With the -\fB\-strictlimits\fR flag, the entire matching range must lie inside the start -and stop limits specified for the match to be valid. -.TP -\fB\-elide\fR -. -Find elided (hidden) text as well. By default only displayed text is searched. -.TP -\fB\-\|\-\fR -. -This switch has no effect except to terminate the list of switches: the next -argument will be treated as \fIpattern\fR even if it starts with \fB\-\fR. -.PP -The matching range may be within a single line of text, or run across multiple -lines (if parts of the pattern can match a new-line). For regular expression -matching one can use the various newline-matching features such as \fB$\fR to -match the end of a line, \fB^\fR to match the beginning of a line, and to -control whether \fB.\fR is allowed to match a new-line. If \fIstopIndex\fR is -specified, the search stops at that index: for forward searches, no match at -or after \fIstopIndex\fR will be considered; for backward searches, no match -earlier in the text than \fIstopIndex\fR will be considered. If -\fIstopIndex\fR is omitted, the entire text will be searched: when the -beginning or end of the text is reached, the search continues at the other end -until the starting location is reached again; if \fIstopIndex\fR is specified, -no wrap-around will occur. This means that, for example, if the search is -\fB\-forwards\fR but \fIstopIndex\fR is earlier in the text than -\fIstartIndex\fR, nothing will ever be found. See \fBKNOWN BUGS\fR below for a -number of minor limitations of the \fIpathName \fBsearch\fR command. -.RE -.TP -\fIpathName \fBsee \fIindex\fR -. -Adjusts the view in the window so that the character given by \fIindex\fR is -completely visible. If \fIindex\fR is already visible then the command does -nothing. If \fIindex\fR is a short distance out of view, the command adjusts -the view just enough to make \fIindex\fR visible at the edge of the window. -If \fIindex\fR is far out of view, then the command centers \fIindex\fR in the -window. -.TP -\fIpathName \fBsync\fR ?\fB-command \fIcommand\fR? -Controls the synchronization of the view of the text widget. -.RS -.TP -\fIpathName \fBsync\fR -Immediately brings the line metrics up-to-date by forcing computation of any -outdated line heights. The command returns immediately if there is no such -outdated line heights, otherwise it returns only at the end of the computation. -The command returns an empty string. -.TP -\fIpathName \fBsync -command \fIcommand\fR -Schedules \fIcommand\fR to be executed (by the event loop) exactly once as soon -as all line heights are up-to-date. If there are no pending line metrics -calculations, the scheduling is immediate. The command returns the empty -string. \fBbgerror\fR is called on \fIcommand\fR failure. -.RE -.TP -\fIpathName \fBtag \fIoption \fR?\fIarg arg ...\fR? -. -This command is used to manipulate tags. The exact behavior of the command -depends on the \fIoption\fR argument that follows the \fBtag\fR argument. The -following forms of the command are currently supported: -.RS -.TP -\fIpathName \fBtag add \fItagName index1 \fR?\fIindex2 index1 index2 ...\fR? -. -Associate the tag \fItagName\fR with all of the characters starting with -\fIindex1\fR and ending just before \fIindex2\fR (the character at -\fIindex2\fR is not tagged). A single command may contain any number of -\fIindex1\fR\-\fIindex2\fR pairs. If the last \fIindex2\fR is omitted then the -single character at \fIindex1\fR is tagged. If there are no characters in the -specified range (e.g. \fIindex1\fR is past the end of the file or \fIindex2\fR -is less than or equal to \fIindex1\fR) then the command has no effect. -.TP -\fIpathName \fBtag bind \fItagName\fR ?\fIsequence\fR? ?\fIscript\fR? -. -This command associates \fIscript\fR with the tag given by \fItagName\fR. -Whenever the event sequence given by \fIsequence\fR occurs for a character -that has been tagged with \fItagName\fR, the script will be invoked. This -widget command is similar to the \fBbind\fR command except that it operates on -characters in a text rather than entire widgets. See the \fBbind\fR manual -entry for complete details on the syntax of \fIsequence\fR and the -substitutions performed on \fIscript\fR before invoking it. If all arguments -are specified then a new binding is created, replacing any existing binding -for the same \fIsequence\fR and \fItagName\fR (if the first character of -\fIscript\fR is -.QW + -then \fIscript\fR augments an existing binding rather than replacing it). In -this case the return value is an empty string. If \fIscript\fR is omitted then -the command returns the \fIscript\fR associated with \fItagName\fR and -\fIsequence\fR (an error occurs if there is no such binding). If both -\fIscript\fR and \fIsequence\fR are omitted then the command returns a list of -all the sequences for which bindings have been defined for \fItagName\fR. -.RS -.PP -The only events for which bindings may be specified are those related to the -mouse and keyboard (such as \fBEnter\fR, \fBLeave\fR, \fBButtonPress\fR, -\fBMotion\fR, and \fBKeyPress\fR) or virtual events. Event bindings for a text -widget use the \fBcurrent\fR mark described under \fBMARKS\fR above. An -\fBEnter\fR event triggers for a tag when the tag first becomes present on the -current character, and a \fBLeave\fR event triggers for a tag when it ceases -to be present on the current character. \fBEnter\fR and \fBLeave\fR events can -happen either because the \fBcurrent\fR mark moved or because the character at -that position changed. Note that these events are different than \fBEnter\fR -and \fBLeave\fR events for windows. Mouse and keyboard events are directed to -the current character. If a virtual event is used in a binding, that binding -can trigger only if the virtual event is defined by an underlying -mouse-related or keyboard-related event. -.PP -It is possible for the current character to have multiple tags, and for each -of them to have a binding for a particular event sequence. When this occurs, -one binding is invoked for each tag, in order from lowest-priority to highest -priority. If there are multiple matching bindings for a single tag, then the -most specific binding is chosen (see the manual entry for the \fBbind\fR -command for details). \fBcontinue\fR and \fBbreak\fR commands within binding -scripts are processed in the same way as for bindings created with the -\fBbind\fR command. -.PP -If bindings are created for the widget as a whole using the \fBbind\fR -command, then those bindings will supplement the tag bindings. The tag -bindings will be invoked first, followed by bindings for the window as a -whole. -.RE -.TP -\fIpathName \fBtag cget \fItagName option\fR -. -This command returns the current value of the option named \fIoption\fR -associated with the tag given by \fItagName\fR. \fIOption\fR may have any of -the values accepted by the \fIpathName \fBtag configure\fR widget command. -.TP -\fIpathName \fBtag configure \fItagName\fR ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? -. -This command is similar to the \fIpathName \fBconfigure\fR widget command -except that it modifies options associated with the tag given by \fItagName\fR -instead of modifying options for the overall text widget. If no \fIoption\fR -is specified, the command returns a list describing all of the available -options for \fItagName\fR (see \fBTk_ConfigureInfo\fR for information on the -format of this list). If \fIoption\fR is specified with no \fIvalue\fR, then -the command returns a list describing the one named option (this list will be -identical to the corresponding sublist of the value returned if no -\fIoption\fR is specified). If one or more \fIoption\-value\fR pairs are -specified, then the command modifies the given option(s) to have the given -value(s) in \fItagName\fR; in this case the command returns an empty string. -See \fBTAGS\fR above for details on the options available for tags. -.TP -\fIpathName \fBtag delete \fItagName \fR?\fItagName ...\fR? -. -Deletes all tag information for each of the \fItagName\fR arguments. The -command removes the tags from all characters in the file and also deletes any -other information associated with the tags, such as bindings and display -information. The command returns an empty string. -.TP -\fIpathName\fB tag lower \fItagName \fR?\fIbelowThis\fR? -. -Changes the priority of tag \fItagName\fR so that it is just lower in priority -than the tag whose name is \fIbelowThis\fR. If \fIbelowThis\fR is omitted, -then \fItagName\fR's priority is changed to make it lowest priority of all -tags. -.TP -\fIpathName \fBtag names \fR?\fIindex\fR? -. -Returns a list whose elements are the names of all the tags that are active at -the character position given by \fIindex\fR. If \fIindex\fR is omitted, then -the return value will describe all of the tags that exist for the text (this -includes all tags that have been named in a -.QW "\fIpathName \fBtag\fR" -widget command but have not been deleted by a -.QW "\fIpathName \fBtag delete\fR" -widget command, even if no characters are currently marked with the tag). The -list will be sorted in order from lowest priority to highest priority. -.TP -\fIpathName \fBtag nextrange \fItagName index1 \fR?\fIindex2\fR? -. -This command searches the text for a range of characters tagged with -\fItagName\fR where the first character of the range is no earlier than the -character at \fIindex1\fR and no later than the character just before -\fIindex2\fR (a range starting at \fIindex2\fR will not be considered). If -several matching ranges exist, the first one is chosen. The command's return -value is a list containing two elements, which are the index of the first -character of the range and the index of the character just after the last one -in the range. If no matching range is found then the return value is an empty -string. If \fIindex2\fR is not given then it defaults to the end of the text. -.TP -\fIpathName \fBtag prevrange \fItagName index1 \fR?\fIindex2\fR? -. -This command searches the text for a range of characters tagged with -\fItagName\fR where the first character of the range is before the character -at \fIindex1\fR and no earlier than the character at \fIindex2\fR (a range -starting at \fIindex2\fR will be considered). If several matching ranges -exist, the one closest to \fIindex1\fR is chosen. The command's return value -is a list containing two elements, which are the index of the first character -of the range and the index of the character just after the last one in the -range. If no matching range is found then the return value is an empty string. -If \fIindex2\fR is not given then it defaults to the beginning of the text. -.TP -\fIpathName\fB tag raise \fItagName \fR?\fIaboveThis\fR? -. -Changes the priority of tag \fItagName\fR so that it is just higher in -priority than the tag whose name is \fIaboveThis\fR. If \fIaboveThis\fR is -omitted, then \fItagName\fR's priority is changed to make it highest priority -of all tags. -.TP -\fIpathName \fBtag ranges \fItagName\fR -. -Returns a list describing all of the ranges of text that have been tagged with -\fItagName\fR. The first two elements of the list describe the first tagged -range in the text, the next two elements describe the second range, and so on. -The first element of each pair contains the index of the first character of -the range, and the second element of the pair contains the index of the -character just after the last one in the range. If there are no characters -tagged with \fItag\fR then an empty string is returned. -.TP -\fIpathName \fBtag remove \fItagName index1 \fR?\fIindex2 index1 index2 ...\fR? -. -Remove the tag \fItagName\fR from all of the characters starting at -\fIindex1\fR and ending just before \fIindex2\fR (the character at -\fIindex2\fR is not affected). A single command may contain any number of -\fIindex1\fR\-\fIindex2\fR pairs. If the last \fIindex2\fR is omitted then the -tag is removed from the single character at \fIindex1\fR. If there are no -characters in the specified range (e.g. \fIindex1\fR is past the end of the -file or \fIindex2\fR is less than or equal to \fIindex1\fR) then the command -has no effect. This command returns an empty string. -.RE -.TP -\fIpathName \fBwindow \fIoption \fR?\fIarg arg ...\fR? -. -This command is used to manipulate embedded windows. The behavior of the -command depends on the \fIoption\fR argument that follows the \fBwindow\fR -argument. The following forms of the command are currently supported: -.RS -.TP -\fIpathName \fBwindow cget \fIindex option\fR -. -Returns the value of a configuration option for an embedded window. -\fIIndex\fR identifies the embedded window, and \fIoption\fR specifies a -particular configuration option, which must be one of the ones listed in the -section \fBEMBEDDED WINDOWS\fR. -.TP -\fIpathName \fBwindow configure \fIindex\fR ?\fIoption value ...\fR? -. -Query or modify the configuration options for an embedded window. If no -\fIoption\fR is specified, returns a list describing all of the available -options for the embedded window at \fIindex\fR (see \fBTk_ConfigureInfo\fR for -information on the format of this list). If \fIoption\fR is specified with no -\fIvalue\fR, then the command returns a list describing the one named option -(this list will be identical to the corresponding sublist of the value -returned if no \fIoption\fR is specified). If one or more \fIoption\-value\fR -pairs are specified, then the command modifies the given option(s) to have the -given value(s); in this case the command returns an empty string. See -\fBEMBEDDED WINDOWS\fR for information on the options that are supported. -.TP -\fIpathName \fBwindow create \fIindex\fR ?\fIoption value ...\fR? -. -This command creates a new window annotation, which will appear in the text at -the position given by \fIindex\fR. Any number of \fIoption\-value\fR pairs may -be specified to configure the annotation. See \fBEMBEDDED WINDOWS\fR for -information on the options that are supported. Returns an empty string. -.TP -\fIpathName \fBwindow names\fR -. -Returns a list whose elements are the names of all windows currently embedded -in \fIwindow\fR. -.RE -.TP -\fIpathName \fBxview \fIoption args\fR -. -This command is used to query and change the horizontal position of the text -in the widget's window. It can take any of the following forms: -.RS -.TP -\fIpathName \fBxview\fR -. -Returns a list containing two elements. Each element is a real fraction -between 0 and 1; together they describe the portion of the document's -horizontal span that is visible in the window. For example, if the first -element is .2 and the second element is .6, 20% of the text is off-screen to -the left, the middle 40% is visible in the window, and 40% of the text is -off-screen to the right. The fractions refer only to the lines that are -actually visible in the window: if the lines in the window are all very short, -so that they are entirely visible, the returned fractions will be 0 and 1, -even if there are other lines in the text that are much wider than the window. -These are the same values passed to scrollbars via the \fB\-xscrollcommand\fR -option. -.TP -\fIpathName \fBxview moveto\fI fraction\fR -. -Adjusts the view in the window so that \fIfraction\fR of the horizontal span -of the text is off-screen to the left. \fIFraction\fR is a fraction between 0 -and 1. -.TP -\fIpathName \fBxview scroll \fInumber what\fR -. -This command shifts the view in the window left or right according to -\fInumber\fR and \fIwhat\fR. \fIWhat\fR must be \fBunits\fR, \fBpages\fR or -\fBpixels\fR. If \fIwhat\fR is \fBunits\fR or \fBpages\fR then \fInumber\fR -must be an integer, otherwise number may be specified in any of the forms -acceptable to \fBTk_GetPixels\fR, such as -.QW 2.0c -or -.QW 1i -(the result is rounded to the nearest integer value. If no units are given, -pixels are assumed). If \fIwhat\fR is \fBunits\fR, the view adjusts left or -right by \fInumber\fR average-width characters on the display; if it is -\fBpages\fR then the view adjusts by \fInumber\fR screenfuls; if it is -\fBpixels\fR then the view adjusts by \fInumber\fR pixels. If \fInumber\fR is -negative then characters farther to the left become visible; if it is positive -then characters farther to the right become visible. -.RE -.TP -\fIpathName \fByview \fR?\fIargs\fR? -. -This command is used to query and change the vertical position of the text in -the widget's window. It can take any of the following forms: -.RS -.TP -\fIpathName \fByview\fR -. -Returns a list containing two elements, both of which are real fractions -between 0 and 1. The first element gives the position of the first visible -pixel of the first character (or image, etc) in the top line in the window, -relative to the text as a whole (0.5 means it is halfway through the text, for -example). The second element gives the position of the first pixel just after -the last visible one in the bottom line of the window, relative to the text as -a whole. These are the same values passed to scrollbars via the -\fB\-yscrollcommand\fR option. -.TP -\fIpathName \fByview moveto\fI fraction\fR -. -Adjusts the view in the window so that the pixel given by \fIfraction\fR -appears at the top of the top line of the window. \fIFraction\fR is a fraction -between 0 and 1; 0 indicates the first pixel of the first character in the -text, 0.33 indicates the pixel that is one-third the way through the text; and -so on. Values close to 1 will indicate values close to the last pixel in the -text (1 actually refers to one pixel beyond the last pixel), but in such cases -the widget will never scroll beyond the last pixel, and so a value of 1 will -effectively be rounded back to whatever fraction ensures the last pixel is at -the bottom of the window, and some other pixel is at the top. -.TP -\fIpathName \fByview scroll \fInumber what\fR -. -This command adjust the view in the window up or down according to -\fInumber\fR and \fIwhat\fR. \fIWhat\fR must be \fBunits\fR, \fBpages\fR or -\fBpixels\fR. If \fIwhat\fR is \fBunits\fR or \fBpages\fR then \fInumber\fR -must be an integer, otherwise number may be specified in any of the forms -acceptable to \fBTk_GetPixels\fR, such as -.QW 2.0c -or -.QW 1i -(the result is rounded to the nearest integer value. If no units are given, -pixels are assumed). If \fIwhat\fR is \fBunits\fR, the view adjusts up or down -by \fInumber\fR lines on the display; if it is \fBpages\fR then the view -adjusts by \fInumber\fR screenfuls; if it is \fBpixels\fR then the view -adjusts by \fInumber\fR pixels. If \fInumber\fR is negative then earlier -positions in the text become visible; if it is positive then later positions -in the text become visible. -.TP -\fIpathName \fByview \fR?\fB\-pickplace\fR? \fIindex\fR -. -Changes the view in the widget's window to make \fIindex\fR visible. If the -\fB\-pickplace\fR option is not specified then \fIindex\fR will appear at the -top of the window. If \fB\-pickplace\fR is specified then the widget chooses -where \fIindex\fR appears in the window: -.RS -.IP [1] -If \fIindex\fR is already visible somewhere in the window then the command -does nothing. -.IP [2] -If \fIindex\fR is only a few lines off-screen above the window then it will be -positioned at the top of the window. -.IP [3] -If \fIindex\fR is only a few lines off-screen below the window then it will be -positioned at the bottom of the window. -.IP [4] -Otherwise, \fIindex\fR will be centered in the window. -.PP -The \fB\-pickplace\fR option has been obsoleted by the \fIpathName \fBsee\fR -widget command (\fIpathName \fBsee\fR handles both x- and y-motion to make a -location visible, whereas the \fB\-pickplace\fR mode only handles motion in -y). -.RE -.TP -\fIpathName \fByview \fInumber\fR -. -This command makes the first character on the line after the one given by -\fInumber\fR visible at the top of the window. \fINumber\fR must be an -integer. This command used to be used for scrolling, but now it is obsolete. -.RE -.SH BINDINGS -.PP -Tk automatically creates class bindings for texts that give them the following -default behavior. In the descriptions below, -.QW word -is dependent on the value of the \fBtcl_wordchars\fR variable. See -\fBtclvars\fR(n). -.IP [1] -Clicking mouse button 1 positions the insertion cursor just before the -character underneath the mouse cursor, sets the input focus to this widget, -and clears any selection in the widget. Dragging with mouse button 1 strokes -out a selection between the insertion cursor and the character under the -mouse. -.IP [2] -Double-clicking with mouse button 1 selects the word under the mouse and -positions the insertion cursor at the start of the word. Dragging after a -double click will stroke out a selection consisting of whole words. -.IP [3] -Triple-clicking with mouse button 1 selects the line under the mouse and -positions the insertion cursor at the start of the line. Dragging after a -triple click will stroke out a selection consisting of whole lines. -.IP [4] -The ends of the selection can be adjusted by dragging with mouse button 1 -while the Shift key is down; this will adjust the end of the selection that -was nearest to the mouse cursor when button 1 was pressed. If the button is -double-clicked before dragging then the selection will be adjusted in units of -whole words; if it is triple-clicked then the selection will be adjusted in -units of whole lines. -.IP [5] -Clicking mouse button 1 with the Control key down will reposition the -insertion cursor without affecting the selection. -.IP [6] -If any normal printing characters are typed, they are inserted at the point of -the insertion cursor. -.IP [7] -The view in the widget can be adjusted by dragging with mouse button 2. If -mouse button 2 is clicked without moving the mouse, the selection is copied -into the text at the position of the mouse cursor. The Insert key also inserts -the selection, but at the position of the insertion cursor. -.IP [8] -If the mouse is dragged out of the widget while button 1 is pressed, the entry -will automatically scroll to make more text visible (if there is more text -off-screen on the side where the mouse left the window). -.IP [9] -The Left and Right keys move the insertion cursor one character to the left or -right; they also clear any selection in the text. If Left or Right is typed -with the Shift key down, then the insertion cursor moves and the selection is -extended to include the new character. Control-Left and Control-Right move the -insertion cursor by words, and Control-Shift-Left and Control-Shift-Right move -the insertion cursor by words and also extend the selection. Control-b and -Control-f behave the same as Left and Right, respectively. Meta-b and Meta-f -behave the same as Control-Left and Control-Right, respectively. -.IP [10] -The Up and Down keys move the insertion cursor one line up or down and clear -any selection in the text. If Up or Right is typed with the Shift key down, -then the insertion cursor moves and the selection is extended to include the -new character. Control-Up and Control-Down move the insertion cursor by -paragraphs (groups of lines separated by blank lines), and Control-Shift-Up -and Control-Shift-Down move the insertion cursor by paragraphs and also extend -the selection. Control-p and Control-n behave the same as Up and Down, -respectively. -.IP [11] -The Next and Prior keys move the insertion cursor forward or backwards by one -screenful and clear any selection in the text. If the Shift key is held down -while Next or Prior is typed, then the selection is extended to include the -new character. -.IP [12] -Control-Next and Control-Prior scroll the view right or left by one page -without moving the insertion cursor or affecting the selection. -.IP [13] -Home and Control-a move the insertion cursor to the beginning of its display -line and clear any selection in the widget. Shift-Home moves the insertion -cursor to the beginning of the display line and also extends the selection to -that point. -.IP [14] -End and Control-e move the insertion cursor to the end of the display line and -clear any selection in the widget. Shift-End moves the cursor to the end of -the display line and extends the selection to that point. -.IP [15] -Control-Home and Meta-< move the insertion cursor to the beginning of the text -and clear any selection in the widget. Control-Shift-Home moves the insertion -cursor to the beginning of the text and also extends the selection to that -point. -.IP [16] -Control-End and Meta-> move the insertion cursor to the end of the text and -clear any selection in the widget. Control-Shift-End moves the cursor to the -end of the text and extends the selection to that point. -.IP [17] -The Select key and Control-Space set the selection anchor to the position of -the insertion cursor. They do not affect the current selection. Shift-Select -and Control-Shift-Space adjust the selection to the current position of the -insertion cursor, selecting from the anchor to the insertion cursor if there -was not any selection previously. -.IP [18] -Control-/ selects the entire contents of the widget. -.IP [19] -Control-\e clears any selection in the widget. -.IP [20] -The F16 key (labelled Copy on many Sun workstations) or Meta-w copies the -selection in the widget to the clipboard, if there is a selection. This -action is carried out by the command \fBtk_textCopy\fR. -.IP [21] -The F20 key (labelled Cut on many Sun workstations) or Control-w copies the -selection in the widget to the clipboard and deletes the selection. This -action is carried out by the command \fBtk_textCut\fR. If there is no -selection in the widget then these keys have no effect. -.IP [22] -The F18 key (labelled Paste on many Sun workstations) or Control-y inserts the -contents of the clipboard at the position of the insertion cursor. This action -is carried out by the command \fBtk_textPaste\fR. -.IP [23] -The Delete key deletes the selection, if there is one in the widget. If there -is no selection, it deletes the character to the right of the insertion -cursor. -.IP [24] -Backspace and Control-h delete the selection, if there is one in the widget. -If there is no selection, they delete the character to the left of the -insertion cursor. -.IP [25] -Control-d deletes the character to the right of the insertion cursor. -.IP [26] -Meta-d deletes the word to the right of the insertion cursor. -.IP [27] -Control-k deletes from the insertion cursor to the end of its line; if the -insertion cursor is already at the end of a line, then Control-k deletes the -newline character. -.IP [28] -Control-o opens a new line by inserting a newline character in front of the -insertion cursor without moving the insertion cursor. -.IP [29] -Meta-backspace and Meta-Delete delete the word to the left of the insertion -cursor. -.IP [30] -Control-x deletes whatever is selected in the text widget after copying it to -the clipboard. -.IP [31] -Control-t reverses the order of the two characters to the right of the -insertion cursor. -.IP [32] -Control-z undoes the last edit action if the \fB\-undo\fR option is true. -Does nothing otherwise. -.IP [33] -Control-Z (or Control-y on Windows) reapplies the last undone edit action if -the \fB\-undo\fR option is true. Does nothing otherwise. -.PP -If the widget is disabled using the \fB\-state\fR option, then its view can -still be adjusted and text can still be selected, but no insertion cursor will -be displayed and no text modifications will take place. -.PP -The behavior of texts can be changed by defining new bindings for individual -widgets or by redefining the class bindings. -.SH "KNOWN ISSUES" -.SS "ISSUES CONCERNING CHARS AND INDICES" -.PP -Before Tk 8.5, the widget used the string -.QW chars -to refer to index positions (which included characters, embedded windows and -embedded images). As of Tk 8.5 the text widget deals separately and correctly -with -.QW chars -and -.QW indices . -For backwards compatibility, however, the index modifiers -.QW "+N chars" -and -.QW "\-N chars" -continue to refer to indices. One must use any of the full forms -.QW "+N any chars" -or -.QW "\-N any chars" -etc. to refer to actual character indices. This confusion may be fixed in a -future release by making the widget correctly interpret -.QW "+N chars" -as a synonym for -.QW "+N any chars" . -.SS "PERFORMANCE ISSUES" -.PP -Text widgets should run efficiently under a variety of conditions. The text -widget uses about 2-3 bytes of main memory for each byte of text, so texts -containing a megabyte or more should be practical on most workstations. Text -is represented internally with a modified B-tree structure that makes -operations relatively efficient even with large texts. Tags are included in -the B-tree structure in a way that allows tags to span large ranges or have -many disjoint smaller ranges without loss of efficiency. Marks are also -implemented in a way that allows large numbers of marks. In most cases it is -fine to have large numbers of unique tags, or a tag that has many distinct -ranges. -.PP -One performance problem can arise if you have hundreds or thousands of -different tags that all have the following characteristics: the first and last -ranges of each tag are near the beginning and end of the text, respectively, -or a single tag range covers most of the text widget. The cost of adding and -deleting tags like this is proportional to the number of other tags with the -same properties. In contrast, there is no problem with having thousands of -distinct tags if their overall ranges are localized and spread uniformly -throughout the text. -.PP -Very long text lines can be expensive, especially if they have many marks and -tags within them. -.PP -The display line with the insert cursor is redrawn each time the cursor -blinks, which causes a steady stream of graphics traffic. Set the -\fB\-insertofftime\fR attribute to 0 avoid this. -.SS "KNOWN BUGS" -.PP -The \fIpathName \fBsearch \-regexp\fR sub-command attempts to perform -sophisticated regexp matching across multiple lines in an efficient fashion -(since Tk 8.5), examining each line individually, and then in small groups of -lines, whether searching forwards or backwards. Under certain conditions the -search result might differ from that obtained by applying the same regexp to -the entire text from the widget in one go. For example, when searching with a -greedy regexp, the widget will continue to attempt to add extra lines to the -match as long as one of two conditions are true: either Tcl's regexp library -returns a code to indicate a longer match is possible (but there are known -bugs in Tcl which mean this code is not always correctly returned); or if each -extra line added results in at least a partial match with the pattern. This -means in the case where the first extra line added results in no match and -Tcl's regexp system returns the incorrect code and adding a second extra line -would actually match, the text widget will return the wrong result. In -practice this is a rare problem, but it can occur, for example: -.CS -pack [\fBtext\fR .t] -\&.t insert 1.0 "aaaa\enbbbb\encccc\enbbbb\enaaaa\en" -\&.t search \-regexp \-\- {(a+|b+\enc+\enb+)+\ena+} 1.0 -.CE -will not find a match when one exists of 19 characters starting from the first -.QW b . -.PP -Whenever one possible match is fully enclosed in another, the search command -will attempt to ensure only the larger match is returned. When performing -backwards regexp searches it is possible that Tcl will not always achieve -this, in the case where a match is preceded by one or more short, -non-overlapping matches, all of which are preceded by a large match which -actually encompasses all of them. The search algorithm used by the widget does -not look back arbitrarily far for a possible match which might cover large -portions of the widget. For example: -.CS -pack [\fBtext\fR .t] -\&.t insert 1.0 "aaaa\enbbbb\enbbbb\enbbbb\enbbbb\\n" -\&.t search \-regexp \-backward \-\- {b+\en|a+\en(b+\en)+} end -.CE -matches at -.QW 5.0 -when a true greedy match would match at -.QW 1.0 . -Similarly if we add \fB\-all\fR to this case, it matches at all of -.QW 5.0 , -.QW 4.0 , -.QW 3.0 -and -.QW 1.0 , -when really it should only match at -.QW 1.0 -since that match encloses all the others. -.SH "SEE ALSO" -entry(n), scrollbar(n) -.SH KEYWORDS -text, widget, tkvars -'\" Local Variables: -'\" mode: nroff -'\" End: |