text.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:78k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1992 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: text.n,v 1.15.2.5 2006/04/12 02:20:47 das Exp $
  9. '" 
  10. .so man.macros
  11. .TH text n 8.4 Tk "Tk Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. text, tk_textCopy, tk_textCut, tk_textPaste - Create and manipulate text widgets
  16. .SH SYNOPSIS
  17. .nf
  18. fBtextfR fIpathName fR?fIoptionsfR?
  19. .VS 8.4
  20. fBtk_textCopyfR fIpathNamefR
  21. fBtk_textCutfR fIpathNamefR
  22. fBtk_textPastefR fIpathNamefR
  23. .VE 8.4
  24. .SO
  25. -background -highlightthickness -relief
  26. -borderwidth -insertbackground -selectbackground
  27. -cursor -insertborderwidth -selectborderwidth
  28. -exportselection -insertofftime -selectforeground
  29. -font -insertontime -setgrid
  30. -foreground -insertwidth -takefocus
  31. -highlightbackground -padx -xscrollcommand
  32. -highlightcolor -pady -yscrollcommand
  33. .SE
  34. .SH "WIDGET-SPECIFIC OPTIONS"
  35. .OP -autoseparators autoSeparators AutoSeparators
  36. .VS 8.4
  37. Specifies a boolean that says whether separators are automatically
  38. inserted in the undo stack. Only meaningful when the fB-undofR
  39. option is true.
  40. .VE 8.4
  41. .OP -height height Height
  42. Specifies the desired height for the window, in units of characters
  43. in the font given by the fB-fontfR option.
  44. Must be at least one.
  45. .OP -maxundo maxUndo MaxUndo
  46. .VS 8.4
  47. Specifies the maximum number of compound undo actions on the undo
  48. stack. A zero or a negative value imply an unlimited undo stack.
  49. .VE 8.4
  50. .OP -spacing1 spacing1 Spacing1
  51. Requests additional space above each text line in the widget,
  52. using any of the standard forms for screen distances.
  53. If a line wraps, this option only applies to the first line
  54. on the display.
  55. This option may be overridden with fB-spacing1fR options in
  56. tags.
  57. .OP -spacing2 spacing2 Spacing2
  58. For lines that wrap (so that they cover more than one line on the
  59. display) this option specifies additional space to provide between
  60. the display lines that represent a single line of text.
  61. The value may have any of the standard forms for screen distances.
  62. This option may be overridden with fB-spacing2fR options in
  63. tags.
  64. .OP -spacing3 spacing3 Spacing3
  65. Requests additional space below each text line in the widget,
  66. using any of the standard forms for screen distances.
  67. If a line wraps, this option only applies to the last line
  68. on the display.
  69. This option may be overridden with fB-spacing3fR options in
  70. tags.
  71. .OP -state state State
  72. Specifies one of two states for the text:  fBnormalfR or fBdisabledfR.
  73. If the text is disabled then characters may not be inserted or deleted
  74. and no insertion cursor will be displayed, even if the input focus is
  75. in the widget.
  76. .OP -tabs tabs Tabs
  77. Specifies a set of tab stops for the window.  The option's value consists
  78. of a list of screen distances giving the positions of the tab stops,
  79. each of which is a distance relative to the left edge of the widget
  80. (excluding borders, padding, etc).  Each
  81. position may optionally be followed in the next list element
  82. by one of the keywords fBleftfR, fBrightfR, fBcenterfR,
  83. or fBnumericfR, which specifies how to justify
  84. text relative to the tab stop.  fBLeftfR is the default; it causes
  85. the text following the tab character to be positioned with its left edge
  86. at the tab position.  fBRightfR means that the right edge of the text
  87. following the tab character is positioned at the tab position, and
  88. fBcenterfR means that the text is centered at the tab position.
  89. fBNumericfR means that the decimal point in the text is positioned
  90. at the tab position;  if there is no decimal point then the least
  91. significant digit of the number is positioned just to the left of the
  92. tab position;  if there is no number in the text then the text is
  93. right-justified at the tab position.
  94. For example, fB-tabs {2c left 4c 6c center}fR creates three
  95. tab stops at two-centimeter intervals;  the first two use left
  96. justification and the third uses center justification.
  97. If the list of tab stops does not have enough elements to cover all
  98. of the tabs in a text line, then Tk extrapolates new tab stops using
  99. the spacing and alignment from the last tab stop in the list.  Tab
  100. distances must be strictly positive, and must always increase from one 
  101. tab stop to the next (if not, an error is thrown).
  102. The value of the fBtabsfR option may be overridden by fB-tabsfR
  103. options in tags.
  104. If no fB-tabsfR option is specified, or if it is specified as
  105. an empty list, then Tk uses default tabs spaced every eight
  106. (average size) characters.
  107. .OP -undo undo Undo
  108. .VS 8.4
  109. Specifies a boolean that says whether the undo mechanism is active or
  110. not.
  111. .VE 8.4
  112. .OP -width width Width
  113. Specifies the desired width for the window in units of characters
  114. in the font given by the fB-fontfR option.
  115. If the font doesn't have a uniform width then the width of the
  116. character ``0'' is used in translating from character units to
  117. screen units.
  118. .OP -wrap wrap Wrap
  119. Specifies how to handle lines in the text that are too long to be
  120. displayed in a single line of the text's window.
  121. The value must be fBnonefR or fBcharfR or fBwordfR.
  122. A wrap mode of fBnonefR means that each line of text appears as
  123. exactly one line on the screen;  extra characters that don't fit
  124. on the screen are not displayed.
  125. In the other modes each line of text will be broken up into several
  126. screen lines if necessary to keep all the characters visible.
  127. In fBcharfR mode a screen line break may occur after any character;
  128. in fBwordfR mode a line break will only be made at word boundaries.
  129. .BE
  130. .SH DESCRIPTION
  131. .PP
  132. The fBtextfR command creates a new window (given by the
  133. fIpathNamefR argument) and makes it into a text widget.
  134. Additional
  135. options, described above, may be specified on the command line
  136. or in the option database
  137. to configure aspects of the text such as its default background color
  138. and relief.  The fBtextfR command returns the
  139. path name of the new window.
  140. .PP
  141. A text widget displays one or more lines of text and allows that
  142. text to be edited.
  143. Text widgets support four different kinds of annotations on the
  144. text, called tags, marks, embedded windows or embedded images.
  145. Tags allow different portions of the text
  146. to be displayed with different fonts and colors.
  147. In addition, Tcl commands can be associated with tags so
  148. that scripts are invoked when particular actions such as keystrokes
  149. and mouse button presses occur in particular ranges of the text.
  150. See fBTAGSfR below for more details.
  151. .PP
  152. The second form of annotation consists of floating markers in the text
  153. called "marks".
  154. Marks are used to keep track of various interesting positions in the
  155. text as it is edited.
  156. See fBMARKSfR below for more details.
  157. .PP
  158. The third form of annotation allows arbitrary windows to be
  159. embedded in a text widget.
  160. See fBEMBEDDED WINDOWSfR below for more details.
  161. .PP
  162. The fourth form of annotation allows Tk images to be embedded in a text
  163. widget.
  164. See fBEMBEDDED IMAGESfR below for more details.
  165. .PP
  166. .VS 8.4
  167. The text widget also has a built-in undo/redo mechanism.
  168. See fBTHE UNDO MECHANISMfR below for more details.
  169. .VE 8.4
  170. .SH INDICES
  171. .PP
  172. Many of the widget commands for texts take one or more indices
  173. as arguments.
  174. An index is a string used to indicate a particular place within
  175. a text, such as a place to insert characters or one endpoint of a
  176. range of characters to delete.
  177. Indices have the syntax
  178. .CS
  179. fIbase modifier modifier modifier ...fR
  180. .CE
  181. Where fIbasefR gives a starting point and the fImodifierfRs
  182. adjust the index from the starting point (e.g. move forward or
  183. backward one character).  Every index must contain a fIbasefR,
  184. but the fImodifierfRs are optional.
  185. .PP
  186. The fIbasefR for an index must have one of the following forms:
  187. .TP 12
  188. fIlinefB.fIcharfR
  189. Indicates fIcharfR'th character on line fIlinefR.
  190. Lines are numbered from 1 for consistency with other UNIX programs
  191. that use this numbering scheme.
  192. Within a line, characters are numbered from 0.
  193. If fIcharfR is fBendfR then it refers to the newline character
  194. that ends the line.
  195. .TP 12
  196. fB@fIxfB,fIyfR
  197. Indicates the character that covers the pixel whose x and y coordinates
  198. within the text's window are fIxfR and fIyfR.
  199. .TP 12
  200. fBendfR
  201. Indicates the end of the text (the character just after the last
  202. newline).
  203. .TP 12
  204. fImarkfR
  205. Indicates the character just after the mark whose name is fImarkfR.
  206. .TP 12
  207. fItagfB.firstfR
  208. Indicates the first character in the text that has been tagged with
  209. fItagfR.
  210. This form generates an error if no characters are currently tagged
  211. with fItagfR.
  212. .TP 12
  213. fItagfB.lastfR
  214. Indicates the character just after the last one in the text that has
  215. been tagged with fItagfR.
  216. This form generates an error if no characters are currently tagged
  217. with fItagfR.
  218. .TP 12
  219. fIpathNamefR
  220. Indicates the position of the embedded window whose name is
  221. fIpathNamefR.
  222. This form generates an error if there is no embedded window
  223. by the given name.
  224. .TP 12
  225. fIimageNamefR
  226. Indicates the position of the embedded image whose name is
  227. fIimageNamefR.
  228. This form generates an error if there is no embedded image
  229. by the given name.
  230. .PP
  231. If the fIbasefP could match more than one of the above forms, such
  232. as a fImarkfP and fIimageNamefP both having the same value, then
  233. the form earlier in the above list takes precedence.
  234. If modifiers follow the base index, each one of them must have one
  235. of the forms listed below.  Keywords such as fBcharsfR and fBwordendfR
  236. may be abbreviated as long as the abbreviation is unambiguous.
  237. .TP
  238. fB+ fIcountfB charsfR
  239. Adjust the index forward by fIcountfR characters, moving to later
  240. lines in the text if necessary.  If there are fewer than fIcountfR
  241. characters in the text after the current index, then set the index
  242. to the last character in the text.
  243. Spaces on either side of fIcountfR are optional.
  244. .TP
  245. fB- fIcountfB charsfR
  246. Adjust the index backward by fIcountfR characters, moving to earlier
  247. lines in the text if necessary.  If there are fewer than fIcountfR
  248. characters in the text before the current index, then set the index
  249. to the first character in the text.
  250. Spaces on either side of fIcountfR are optional.
  251. .TP
  252. fB+ fIcountfB linesfR
  253. Adjust the index forward by fIcountfR lines, retaining the same
  254. character position within the line.  If there are fewer than fIcountfR
  255. lines after the line containing the current index, then set the index
  256. to refer to the same character position on the last line of the text.
  257. Then, if the line is not long enough to contain a character at the indicated
  258. character position, adjust the character position to refer to the last
  259. character of the line (the newline).
  260. Spaces on either side of fIcountfR are optional.
  261. .TP
  262. fB- fIcountfB linesfR
  263. Adjust the index backward by fIcountfR lines, retaining the same
  264. character position within the line.  If there are fewer than fIcountfR
  265. lines before the line containing the current index, then set the index
  266. to refer to the same character position on the first line of the text.
  267. Then, if the line is not long enough to contain a character at the indicated
  268. character position, adjust the character position to refer to the last
  269. character of the line (the newline).
  270. Spaces on either side of fIcountfR are optional.
  271. .TP
  272. fBlinestartfR
  273. Adjust the index to refer to the first character on the line.
  274. .TP
  275. fBlineendfR
  276. Adjust the index to refer to the last character on the line (the newline).
  277. .TP
  278. fBwordstartfR
  279. Adjust the index to refer to the first character of the word containing
  280. the current index.  A word consists of any number of adjacent characters
  281. that are letters, digits, or underscores, or a single character that
  282. is not one of these.
  283. .TP
  284. fBwordendfR
  285. Adjust the index to refer to the character just after the last one of the
  286. word containing the current index.  If the current index refers to the last
  287. character of the text then it is not modified.
  288. .PP
  289. If more than one modifier is present then they are applied in
  290. left-to-right order.  For example, the index ``fBend - 1 charsfR''
  291. refers to the next-to-last character in the text and
  292. ``fBinsert wordstart - 1 cfR'' refers to the character just before
  293. the first one in the word containing the insertion cursor.  Modifiers
  294. are applied one by one in this left to right order, and after each step
  295. the resulting index is constrained to be a valid index in the text 
  296. widget.  So, for example, the index ``fB1.0 -1c +1cfR'' refers to the 
  297. index ``fB2.0fR''.
  298. .SH TAGS
  299. .PP
  300. The first form of annotation in text widgets is a tag.
  301. A tag is a textual string that is associated with some of the characters
  302. in a text.
  303. Tags may contain arbitrary characters, but it is probably best to
  304. avoid using the characters `` '' (space), fB+fR, or fB-fR:
  305. these characters have special meaning in indices, so tags containing
  306. them can't be used as indices.
  307. There may be any number of tags associated with characters in a
  308. text.
  309. Each tag may refer to a single character, a range of characters, or
  310. several ranges of characters.
  311. An individual character may have any number of tags associated with it.
  312. .PP
  313. A priority order is defined among tags, and this order is used in
  314. implementing some of the tag-related functions described below.
  315. When a tag is defined (by associating it with characters or setting
  316. its display options or binding commands to it), it is given
  317. a priority higher than any existing tag.
  318. The priority order of tags may be redefined using the
  319. ``fIpathName fBtag raisefR'' and ``fIpathName fBtag lowerfR''
  320. widget commands.
  321. .PP
  322. Tags serve three purposes in text widgets.
  323. First, they control the way information is displayed on the screen.
  324. By default, characters are displayed as determined by the
  325. fBbackgroundfR, fBfontfR, and fBforegroundfR options for the
  326. text widget.
  327. However, display options may be associated with individual tags
  328. using the ``fIpathName fBtag configurefR'' widget command.
  329. If a character has been tagged, then the display options associated
  330. with the tag override the default display style.
  331. The following options are currently supported for tags:
  332. .TP
  333. fB-background fIcolorfR
  334. fIColorfR specifies the background color to use for characters
  335. associated with the tag.
  336. It may have any of the forms accepted by fBTk_GetColorfR.
  337. .TP
  338. fB-bgstipple fIbitmapfR
  339. fIBitmapfR specifies a bitmap that is used as a stipple pattern
  340. for the background.
  341. It may have any of the forms accepted by fBTk_GetBitmapfR.
  342. If fIbitmapfR hasn't been specified, or if it is specified
  343. as an empty string, then a solid fill will be used for the
  344. background.
  345. .TP
  346. fB-borderwidth fIpixelsfR
  347. fIPixelsfR specifies the width of a 3-D border to draw around
  348. the background.
  349. It may have any of the forms accepted by fBTk_GetPixelsfR.
  350. This option is used in conjunction with the fB-relieffR
  351. option to give a 3-D appearance to the background for characters;
  352. it is ignored unless the fB-backgroundfR option
  353. has been set for the tag.
  354. .TP
  355. fB-elide fIbooleanfR
  356. fIElidefR specifies whether the data should be elided.
  357. Elided data is not displayed and takes no space on screen, but further
  358. on behaves just as normal data.
  359. .TP
  360. fB-fgstipple fIbitmapfR
  361. fIBitmapfR specifies a bitmap that is used as a stipple pattern
  362. when drawing text and other foreground information such as
  363. underlines.
  364. It may have any of the forms accepted by fBTk_GetBitmapfR.
  365. If fIbitmapfR hasn't been specified, or if it is specified
  366. as an empty string, then a solid fill will be used.
  367. .TP
  368. fB-font fIfontNamefR
  369. fIFontNamefR is the name of a font to use for drawing characters.
  370. It may have any of the forms accepted by fBTk_GetFontfR.
  371. .TP
  372. fB-foreground fIcolorfR
  373. fIColorfR specifies the color to use when drawing text and other
  374. foreground information such as underlines.
  375. It may have any of the forms accepted by fBTk_GetColorfR.
  376. .TP
  377. fB-justify fIjustifyfR
  378. If the first character of a display line has a tag for which this
  379. option has been specified, then fIjustifyfR determines how to
  380. justify the line.
  381. It must be one of fBleftfR, fBrightfR, or fBcenterfR.
  382. If a line wraps, then the justification for each line on the
  383. display is determined by the first character of that display line.
  384. .TP
  385. fB-lmargin1 fIpixelsfR
  386. If the first character of a text line has a tag for which this
  387. option has been specified, then fIpixelsfR specifies how
  388. much the line should be indented from the left edge of the
  389. window.
  390. fIPixelsfR may have any of the standard forms for screen
  391. distances.
  392. If a line of text wraps, this option only applies to the
  393. first line on the display;  the fB-lmargin2fR option controls
  394. the indentation for subsequent lines.
  395. .TP
  396. fB-lmargin2 fIpixelsfR
  397. If the first character of a display line has a tag for which this
  398. option has been specified, and if the display line is not the
  399. first for its text line (i.e., the text line has wrapped), then
  400. fIpixelsfR specifies how much the line should be indented from
  401. the left edge of the window.
  402. fIPixelsfR may have any of the standard forms for screen
  403. distances.
  404. This option is only used when wrapping is enabled, and it only
  405. applies to the second and later display lines for a text line.
  406. .TP
  407. fB-offset fIpixelsfR
  408. fIPixelsfR specifies an amount by which the text's baseline
  409. should be offset vertically from the baseline of the overall
  410. line, in pixels.
  411. For example, a positive offset can be used for superscripts
  412. and a negative offset can be used for subscripts.
  413. fIPixelsfR may have any of the standard forms for screen
  414. distances.
  415. .TP
  416. fB-overstrike fIbooleanfR
  417. Specifies whether or not to draw a horizontal rule through
  418. the middle of characters.
  419. fIBooleanfR may have any of the forms accepted by fBTcl_GetBooleanfR.
  420. .TP
  421. fB-relief fIrelieffR
  422. fIRelieffR specifies the 3-D relief to use for drawing backgrounds,
  423. in any of the forms accepted by fBTk_GetRelieffR.
  424. This option is used in conjunction with the fB-borderwidthfR
  425. option to give a 3-D appearance to the background for characters;
  426. it is ignored unless the fB-backgroundfR option
  427. has been set for the tag.
  428. .TP
  429. fB-rmargin fIpixelsfR
  430. If the first character of a display line has a tag for which this
  431. option has been specified, then fIpixelsfR specifies how wide
  432. a margin to leave between the end of the line and the right
  433. edge of the window.
  434. fIPixelsfR may have any of the standard forms for screen
  435. distances.
  436. This option is only used when wrapping is enabled.
  437. If a text line wraps, the right margin for each line on the
  438. display is determined by the first character of that display
  439. line.
  440. .TP
  441. fB-spacing1 fIpixelsfR
  442. fIPixelsfR specifies how much additional space should be
  443. left above each text line, using any of the standard forms for
  444. screen distances.
  445. If a line wraps, this option only applies to the first
  446. line on the display.
  447. .TP
  448. fB-spacing2 fIpixelsfR
  449. For lines that wrap, this option specifies how much additional
  450. space to leave between the display lines for a single text line.
  451. fIPixelsfR may have any of the standard forms for screen
  452. distances.
  453. .TP
  454. fB-spacing3 fIpixelsfR
  455. fIPixelsfR specifies how much additional space should be
  456. left below each text line, using any of the standard forms for
  457. screen distances.
  458. If a line wraps, this option only applies to the last
  459. line on the display.
  460. .TP
  461. fB-tabs fItabListfR
  462. fITabListfR specifies a set of tab stops in the same form
  463. as for the fB-tabsfR option for the text widget.  This
  464. option only applies to a display line if it applies to the
  465. first character on that display line.
  466. If this option is specified as an empty string, it cancels
  467. the option, leaving it unspecified for the tag (the default).
  468. If the option is specified as a non-empty string that is
  469. an empty list, such as fB-tags{}fR, then it requests
  470. default 8-character tabs as described for the fBtagsfR
  471. widget option.
  472. .TP
  473. fB-underline fIbooleanfR
  474. fIBooleanfR specifies whether or not to draw an underline underneath
  475. characters.
  476. It may have any of the forms accepted by fBTcl_GetBooleanfR.
  477. .TP
  478. fB-wrap fImodefR
  479. fIModefR specifies how to handle lines that are wider than the
  480. text's window.
  481. It has the same legal values as the fB-wrapfR option
  482. for the text widget:  fBnonefR, fBcharfR, or fBwordfR.
  483. If this tag option is specified, it overrides the fB-wrapfR option
  484. for the text widget.
  485. .PP
  486. If a character has several tags associated with it, and if their
  487. display options conflict, then the options of the highest priority
  488. tag are used.
  489. If a particular display option hasn't been specified for a
  490. particular tag, or if it is specified as an empty string, then
  491. that option will never be used;  the next-highest-priority
  492. tag's option will used instead.
  493. If no tag specifies a particular display option, then the default
  494. style for the widget will be used.
  495. .PP
  496. The second purpose for tags is event bindings.
  497. You can associate bindings with a tag in much the same way you can
  498. associate bindings with a widget class:  whenever particular X
  499. events occur on characters with the given tag, a given
  500. Tcl command will be executed.
  501. Tag bindings can be used to give behaviors to ranges of characters;
  502. among other things, this allows hypertext-like
  503. features to be implemented.
  504. For details, see the description of the fBtag bindfR widget
  505. command below.
  506. .PP
  507. The third use for tags is in managing the selection.
  508. See fBTHE SELECTIONfR below.
  509. .SH MARKS
  510. .PP
  511. The second form of annotation in text widgets is a mark.
  512. Marks are used for remembering particular places in a text.
  513. They are something like tags, in that they have names and
  514. they refer to places in the file, but a mark isn't associated
  515. with particular characters.
  516. Instead, a mark is associated with the gap between two characters.
  517. Only a single position may be associated with a mark at any given
  518. time.
  519. If the characters around a mark are deleted the mark will still
  520. remain;  it will just have new neighbor characters.
  521. In contrast, if the characters containing a tag are deleted then
  522. the tag will no longer have an association with characters in
  523. the file.
  524. Marks may be manipulated with the ``fIpathName fBmarkfR'' widget
  525. command, and their current locations may be determined by using the
  526. mark name as an index in widget commands.
  527. .PP
  528. Each mark also has a "gravity", which is either fBleftfR or
  529. fBrightfR.
  530. The gravity for a mark specifies what happens to the mark when
  531. text is inserted at the point of the mark.
  532. If a mark has left gravity, then the mark is treated as if it
  533. were attached to the character on its left, so the mark will
  534. remain to the left of any text inserted at the mark position.
  535. If the mark has right gravity, new text inserted at the mark
  536. position will appear to the left of the mark (so that the mark
  537. remains rightmost).  The gravity for a mark defaults to fBrightfR.
  538. .PP
  539. The name space for marks is different from that for tags:  the
  540. same name may be used for both a mark and a tag, but they will refer
  541. to different things.
  542. .PP
  543. Two marks have special significance.
  544. First, the mark fBinsertfR is associated with the insertion cursor,
  545. as described under fBTHE INSERTION CURSORfR below.
  546. Second, the mark fBcurrentfR is associated with the character
  547. closest to the mouse and is adjusted automatically to track the
  548. mouse position and any changes to the text in the widget (one
  549. exception:  fBcurrentfR is not updated in response to mouse
  550. motions if a mouse button is down;  the update will be deferred
  551. until all mouse buttons have been released).
  552. Neither of these special marks may be deleted.
  553. .SH "EMBEDDED WINDOWS"
  554. .PP
  555. The third form of annotation in text widgets is an embedded window.
  556. Each embedded window annotation causes a window to be displayed
  557. at a particular point in  the text.
  558. There may be any number of embedded windows in a text widget,
  559. and any widget may be used as an embedded window (subject to the
  560. usual rules for geometry management, which require the text window
  561. to be the parent of the embedded window or a descendant of its
  562. parent).
  563. The embedded window's position on the screen will be updated as the
  564. text is modified or scrolled, and it will be mapped and unmapped as
  565. it moves into and out of the visible area of the text widget.
  566. Each embedded window occupies one character's worth of index space
  567. in the text widget, and it may be referred to either by the name
  568. of its embedded window or by its position in the widget's
  569. index space.
  570. If the range of text containing the embedded window is deleted then
  571. the window is destroyed.
  572. .PP
  573. When an embedded window is added to a text widget with the
  574. fBwindow createfR widget command, several configuration
  575. options may be associated with it.
  576. These options may be  modified later with the fBwindow configurefR
  577. widget command.
  578. The following options are currently supported:
  579. .TP
  580. fB-align fIwherefR
  581. If the window is not as tall as the line in which it is displayed,
  582. this option determines where the window is displayed in the line.
  583. fIWherefR must have one of the values fBtopfR (align the top of the window
  584. with the top of the line), fBcenterfR (center the window
  585. within the range of the line), fBbottomfR (align the bottom of the
  586. window with the bottom of the line's area),
  587. or fBbaselinefR (align the bottom of the window with the baseline
  588. of the line).
  589. .TP
  590. fB-create fIscriptfR
  591. Specifies a Tcl script that may be evaluated to create the window
  592. for the annotation.
  593. If no fB-windowfR option has been specified for the annotation
  594. this script will be evaluated when the annotation is about to
  595. be displayed on the screen.
  596. fIScriptfR must create a window for the annotation and return
  597. the name of that window as its result.
  598. If the annotation's window should ever be deleted, fIscriptfR
  599. will be evaluated again the next time the annotation is displayed.
  600. .TP
  601. fB-padx fIpixelsfR
  602. fIPixelsfR specifies the amount of extra space to leave on
  603. each side of the embedded window.
  604. It may have any of the usual forms defined for a screen distance.
  605. .TP
  606. fB-pady fIpixelsfR
  607. fIPixelsfR specifies the amount of extra space to leave on
  608. the top and on the bottom of the embedded window.
  609. It may have any of the usual forms defined for a screen distance.
  610. .TP
  611. fB-stretch fIbooleanfR
  612. If the requested height of the embedded window is less than the
  613. height of the line in which it is displayed, this option can be
  614. used to specify whether the window should be stretched vertically
  615. to fill its line.
  616. If the fB-padyfR option has been specified as well, then the
  617. requested padding will be retained even if the window is
  618. stretched.
  619. .TP
  620. fB-window fIpathNamefR
  621. Specifies the name of a window to display in the annotation.
  622. .SH "EMBEDDED IMAGES"
  623. .PP
  624. The final form of annotation in text widgets is an embedded image.
  625. Each embedded image annotation causes an image to be displayed
  626. at a particular point in  the text.
  627. There may be any number of embedded images in a text widget,
  628. and a particular image may be embedded in multiple places in the same
  629. text widget.
  630. The embedded image's position on the screen will be updated as the
  631. text is modified or scrolled.
  632. Each embedded image occupies one character's worth of index space
  633. in the text widget, and it may be referred to either by
  634. its position in the widget's index space, or the name it is assigned
  635. when the image is inserted into the text widget with fBimage createfP.
  636. If the range of text containing the embedded image is deleted then
  637. that copy of the image is removed from the screen.
  638. .PP
  639. When an embedded image is added to a text widget with the fBimage
  640. createfR widget command, a name unique to this instance of the image
  641. is returned.  This name may then be used to refer to this image
  642. instance.  The name is taken to be the value of the fB-namefP option
  643. (described below).  If the fB-namefP option is not provided, the
  644. fB-imagefP name is used instead.  If the fIimageNamefP is already
  645. in use in the text widget, then fB#fInnfR is added to the end of the
  646. fIimageNamefP, where fInnfP is an arbitrary integer.  This insures
  647. the fIimageNamefP is unique.
  648. Once this name is assigned to this instance of the image, it does not 
  649. change, even though the fB-imagefP or fB-namefP values can be changed
  650. with fBimage configurefP.
  651. .PP
  652. When an embedded image is added to a text widget with the
  653. fBimage createfR widget command, several configuration
  654. options may be associated with it.
  655. These options may be modified later with the fBimage configurefR
  656. widget command.
  657. The following options are currently supported:
  658. .TP
  659. fB-align fIwherefR
  660. If the image is not as tall as the line in which it is displayed,
  661. this option determines where the image is displayed in the line.
  662. fIWherefR must have one of the values fBtopfR (align the top of the image
  663. with the top of the line), fBcenterfR (center the image
  664. within the range of the line), fBbottomfR (align the bottom of the
  665. image with the bottom of the line's area),
  666. or fBbaselinefR (align the bottom of the image with the baseline
  667. of the line).
  668. .TP
  669. fB-image fIimagefR
  670. Specifies the name of the Tk image to display in the annotation.
  671. If fIimagefP is not a valid Tk image, then an error is returned.
  672. .TP
  673. fB-name fIImageNamefR
  674. Specifies the name by which this image instance may be referenced in
  675. the text widget. If fIImageNamefP is not supplied, then the
  676. name of the Tk image is used instead.
  677. If the fIimageNamefP is already in use, fI#nnfP is appended to
  678. the end of the name as described above.
  679. .TP
  680. fB-padx fIpixelsfR
  681. fIPixelsfR specifies the amount of extra space to leave on
  682. each side of the embedded image.
  683. It may have any of the usual forms defined for a screen distance.
  684. .TP
  685. fB-pady fIpixelsfR
  686. fIPixelsfR specifies the amount of extra space to leave on
  687. the top and on the bottom of the embedded image.
  688. It may have any of the usual forms defined for a screen distance.
  689. .SH "THE SELECTION"
  690. .PP
  691. Selection support is implemented via tags.
  692. If the fBexportSelectionfR option for the text widget is true
  693. then the fBselfR tag will be associated with the selection:
  694. .IP [1]
  695. Whenever characters are tagged with fBselfR the text widget
  696. will claim ownership of the selection.
  697. .IP [2]
  698. Attempts to retrieve the
  699. selection will be serviced by the text widget, returning all the
  700. characters with the fBselfR tag.
  701. .IP [3]
  702. If the selection is claimed away by another application or by another
  703. window within this application, then the fBselfR tag will be removed
  704. from all characters in the text.
  705. .IP [4]
  706. Whenever the fBselfR tag range changes a virtual event 
  707. fB<<Selection>>fR is generated.
  708. .PP
  709. The fBselfR tag is automatically defined when a text widget is
  710. created, and it may not be deleted with the ``fIpathName fBtag deletefR''
  711. widget command.  Furthermore, the fBselectBackgroundfR,
  712. fBselectBorderWidthfR, and fBselectForegroundfR options for
  713. the text widget are tied to the fB-backgroundfR,
  714. fB-borderwidthfR, and fB-foregroundfR options for the fBselfR
  715. tag:  changes in either will automatically be reflected in the
  716. other.
  717. .SH "THE INSERTION CURSOR"
  718. .PP
  719. The mark named fBinsertfR has special significance in text widgets.
  720. It is defined automatically when a text widget is created and it
  721. may not be unset with the ``fIpathName fBmark unsetfR'' widget
  722. command.
  723. The fBinsertfR mark represents the position of the insertion
  724. cursor, and the insertion cursor will automatically be drawn at
  725. this point whenever the text widget has the input focus.
  726. .SH "THE MODIFIED FLAG"
  727. The text widget can keep track of changes to the content of the widget
  728. by means of the modified flag. Inserting or deleting text will set
  729. this flag. The flag can be queried, set and cleared programmatically
  730. as well. Whenever the flag changes state a fB<<Modified>>fR virtual 
  731. event is generated. See the fBedit modifiedfR widget command for 
  732. more details.
  733. .SH "THE UNDO MECHANISM"
  734. .PP
  735. .VS 8.4
  736. The text widget has an unlimited undo and redo mechanism (when the
  737. fB-undofR widget option is true) which records every insert and
  738. delete action on a stack.
  739. .PP
  740. Boundaries (called "separators") are inserted between edit actions.  The
  741. purpose of these separators is to group inserts, deletes and replaces
  742. into one compound edit action.  When undoing a change everything between
  743. two separators will be undone.  The undone changes are then moved to the
  744. redo stack, so that an undone edit can be redone again.  The redo stack
  745. is cleared whenever new edit actions are recorded on the undo stack.  The
  746. undo and redo stacks can be cleared to keep their depth under control.
  747. .PP
  748. Separators are inserted automatically when the fB-autoseparatorsfR
  749. widget option is true.  You can insert separators programmatically as
  750. well.  If a separator is already present at the top of the undo stack
  751. no other will be inserted.  That means that two separators on the undo
  752. stack are always separated by at least one insert or delete action.
  753. .PP
  754. The undo mechanism is also linked to the modified flag.  This means
  755. that undoing or redoing changes can take a modified text widget back
  756. to the unmodified state or vice versa.  The modified flag will be set
  757. automatically to the appropriate state.  This automatic coupling
  758. does not work when the modified flag has been set by the user, until
  759. the flag has been reset again.
  760. .PP
  761. See below for the fBeditfR widget command that controls the undo
  762. mechanism.
  763. .VE 8.4
  764. .SH "WIDGET COMMAND"
  765. .PP
  766. The fBtextfR command creates a new Tcl command whose
  767. name is the same as the path name of the text's window.  This
  768. command may be used to invoke various
  769. operations on the widget.  It has the following general form:
  770. .CS
  771. fIpathName option fR?fIarg arg ...fR?
  772. .CE
  773. fIPathNamefR is the name of the command, which is the same as
  774. the text widget's path name.  fIOptionfR and the fIargfRs
  775. determine the exact behavior of the command.  The following
  776. commands are possible for text widgets:
  777. .TP
  778. fIpathName fBbbox fIindexfR
  779. Returns a list of four elements describing the screen area
  780. of the character given by fIindexfR.
  781. The first two elements of the list give the x and y coordinates
  782. of the upper-left corner of the area occupied by the
  783. character, and the last two elements give the width and height
  784. of the area.
  785. If the character is only partially visible on the screen, then
  786. the return value reflects just the visible part.
  787. If the character is not visible on the screen then the return
  788. value is an empty list.
  789. .TP
  790. fIpathName fBcgetfR fIoptionfR
  791. Returns the current value of the configuration option given
  792. by fIoptionfR.
  793. fIOptionfR may have any of the values accepted by the fBtextfR
  794. command.
  795. .TP
  796. fIpathName fBcomparefR fIindex1 op index2fR
  797. Compares the indices given by fIindex1fR and fIindex2fR according
  798. to the relational operator given by fIopfR, and returns 1 if
  799. the relationship is satisfied and 0 if it isn't.
  800. fIOpfR must be one of the operators <, <=, ==, >=, >, or !=.
  801. If fIopfR is == then 1 is returned if the two indices refer to
  802. the same character, if fIopfR is < then 1 is returned if fIindex1fR
  803. refers to an earlier character in the text than fIindex2fR, and
  804. so on.
  805. .TP
  806. fIpathName fBconfigurefR ?fIoptionfR? fI?value option value ...fR?
  807. Query or modify the configuration options of the widget.
  808. If no fIoptionfR is specified, returns a list describing all of
  809. the available options for fIpathNamefR (see fBTk_ConfigureInfofR for
  810. information on the format of this list).  If fIoptionfR is specified
  811. with no fIvaluefR, then the command returns a list describing the
  812. one named option (this list will be identical to the corresponding
  813. sublist of the value returned if no fIoptionfR is specified).  If
  814. one or more fIoption-valuefR pairs are specified, then the command
  815. modifies the given widget option(s) to have the given value(s);  in
  816. this case the command returns an empty string.
  817. fIOptionfR may have any of the values accepted by the fBtextfR
  818. command.
  819. .TP
  820. fIpathName fBdebug fR?fIbooleanfR?
  821. If fIbooleanfR is specified, then it must have one of the true or
  822. false values accepted by Tcl_GetBoolean.
  823. If the value is a true one then internal consistency checks will be
  824. turned on in the B-tree code associated with text widgets.
  825. If fIbooleanfR has a false value then the debugging checks will
  826. be turned off.
  827. In either case the command returns an empty string.
  828. If fIbooleanfR is not specified then the command returns fBonfR
  829. or fBofffR to indicate whether or not debugging is turned on.
  830. There is a single debugging switch shared by all text widgets:  turning
  831. debugging on or off in any widget turns it on or off for all widgets.
  832. For widgets with large amounts of text, the consistency checks may
  833. cause a noticeable slow-down.
  834. .PP
  835. .VS 8.4
  836. When debugging is turned on, the drawing routines of the text widget
  837. set the global variables fBtk_textRedrawfR and fBtk_textRelayoutfR
  838. to the lists of indices that are redrawn.  The values of these variables
  839. are tested by Tk's test suite.
  840. .VE 8.4
  841. .TP
  842. fIpathName fBdelete fIindex1 fR?fIindex2 ...fR?
  843. Delete a range of characters from the text.
  844. If both fIindex1fR and fIindex2fR are specified, then delete
  845. all the characters starting with the one given by fIindex1fR
  846. and stopping just before fIindex2fR (i.e. the character at
  847. fIindex2fR is not deleted).
  848. If fIindex2fR doesn't specify a position later in the text
  849. than fIindex1fR then no characters are deleted.
  850. If fIindex2fR isn't specified then the single character at
  851. fIindex1fR is deleted.
  852. It is not allowable to delete characters in a way that would leave
  853. the text without a newline as the last character.
  854. The command returns an empty string.
  855. .VS 8.4
  856. If more indices are given, multiple ranges of text will be deleted.
  857. All indices are first checked for validity before any deletions are made.
  858. They are sorted and the text is removed from the last range to the
  859. first range to deleted text does not cause an undesired index shifting
  860. side-effects.  If multiple ranges with the same start index are given,
  861. then the longest range is used.  If overlapping ranges are given, then
  862. they will be merged into spans that do not cause deletion of text
  863. outside the given ranges due to text shifted during deletion.
  864. .VE 8.4
  865. .TP
  866. fIpathName fBdlineinfo fIindexfR
  867. Returns a list with five elements describing the area occupied
  868. by the display line containing fIindexfR.
  869. The first two elements of the list give the x and y coordinates
  870. of the upper-left corner of the area occupied by the
  871. line, the third and fourth elements give the width and height
  872. of the area, and the fifth element gives the position of the baseline
  873. for the line, measured down from the top of the area.
  874. All of this information is measured in pixels.
  875. If the current wrap mode is fBnonefR and the line extends beyond
  876. the boundaries of the window,
  877. the area returned reflects the entire area of the line, including the
  878. portions that are out of the window.
  879. If the line is shorter than the full width of the window then the
  880. area returned reflects just the portion of the line that is occupied
  881. by characters and embedded windows.
  882. If the display line containing fIindexfR is not visible on
  883. the screen then the return value is an empty list.
  884. .TP
  885. fIpathName fBdump fR?fIswitchesfR? fIindex1 fR?fIindex2fR?
  886. Return the contents of the text widget from fIindex1fR up to,
  887. but not including fIindex2fR,
  888. including the text and
  889. information about marks, tags, and embedded windows.
  890. If fIindex2fR is not specified, then it defaults to
  891. one character past fIindex1fR.  The information is returned
  892. in the following format:
  893. .LP
  894. .RS
  895. fIkey1 value1 index1 key2 value2 index2fR ...
  896. .LP
  897. The possible fIkeyfP values are fBtextfP, fBmarkfP,
  898. fBtagonfP, fBtagofffP, fBimagefP, and fBwindowfP.  The corresponding
  899. fIvaluefP is the text, mark name, tag name, image name, or window name.
  900. The fIindexfP information is the index of the
  901. start of the text, mark, tag transition, image or window.
  902. One or more of the following switches (or abbreviations thereof)
  903. may be specified to control the dump:
  904. .TP
  905. fB-allfR
  906. Return information about all elements: text, marks, tags, images and windows.
  907. This is the default.
  908. .TP
  909. fB-command fIcommandfR
  910. Instead of returning the information as the result of the dump operation,
  911. invoke the fIcommandfR on each element of the text widget within the range.
  912. The command has three arguments appended to it before it is evaluated:
  913. the fIkeyfP, fIvaluefP, and fIindexfP.
  914. .TP
  915. fB-imagefR
  916. Include information about images in the dump results.
  917. .TP
  918. fB-markfR
  919. Include information about marks in the dump results.
  920. .TP
  921. fB-tagfR
  922. Include information about tag transitions in the dump results. Tag
  923. information is returned as fBtagonfP and fBtagofffP elements that
  924. indicate the begin and end of each range of each tag, respectively.
  925. .TP
  926. fB-textfR
  927. Include information about text in the dump results.  The value is the
  928. text up to the next element or the end of range indicated by fIindex2fR.
  929. A text element does not span newlines.  A multi-line block of text that
  930. contains no marks or tag transitions will still be dumped as a set
  931. of text segments that each end with a newline.  The newline is part
  932. of the value.
  933. .TP
  934. fB-windowfR
  935. Include information about embedded windows in the dump results.
  936. The value of a window is its Tk pathname, unless the window
  937. has not been created yet.  (It must have a create script.)
  938. In this case an empty string is returned, and you must query the
  939. window by its index position to get more information.
  940. .RE
  941. .TP
  942. fIpathName fBedit fIoption fR?fIarg arg ...fR?
  943. .VS 8.4
  944. This command controls the undo mechanism and the modified flag.  The
  945. exact behavior of the command depends on the fIoptionfR argument
  946. that follows the fBeditfR argument.  The following forms of the
  947. command are currently supported:
  948. .RS
  949. .TP
  950. fIpathName fBedit modified ?fIbooleanfR?
  951. If fIbooleanfR is not specified, returns the modified flag of the
  952. widget. The insert, delete, edit undo and edit redo commands or the
  953. user can set or clear the modified flag.  If fIbooleanfR is
  954. specified, sets the modified flag of the widget to fIbooleanfR.
  955. .TP
  956. fIpathName fBedit redofR
  957. When the fB-undofR option is true, reapplies the last undone edits
  958. provided no other edits were done since then. Generates an error when
  959. the redo stack is empty.  Does nothing when the fB-undofR option is
  960. false.
  961. .TP
  962. fIpathName fBedit resetfR
  963. Clears the undo and redo stacks.
  964. .TP
  965. fIpathName fBedit separatorfR
  966. Inserts a separator (boundary) on the undo stack. Does nothing when
  967. the fB-undofR option is false.
  968. .TP
  969. fIpathName fBedit undofR
  970. Undoes the last edit action when the fB-undofR option is true.  An
  971. edit action is defined as all the insert and delete commands that are
  972. recorded on the undo stack in between two separators. Generates an
  973. error when the undo stack is empty.  Does nothing when the fB-undofR
  974. option is false.
  975. .RE
  976. .VE 8.4
  977. .TP
  978. fIpathName fBget fIindex1 fR?fIindex2 ...fR?
  979. Return a range of characters from the text.
  980. The return value will be all the characters in the text starting
  981. with the one whose index is fIindex1fR and ending just before
  982. the one whose index is fIindex2fR (the character at fIindex2fR
  983. will not be returned).
  984. If fIindex2fR is omitted then the single character at fIindex1fR
  985. is returned.
  986. If there are no characters in the specified range (e.g. fIindex1fR
  987. is past the end of the file or fIindex2fR is less than or equal
  988. to fIindex1fR) then an empty string is returned.
  989. If the specified range contains embedded windows, no information
  990. about them is included in the returned string.
  991. .VS 8.4
  992. If multiple index pairs are given, multiple ranges of text will be returned
  993. in a list.  Invalid ranges will not be represented with empty strings in
  994. the list.  The ranges are returned in the order passed to fBgetfR.
  995. .VE 8.4
  996. .TP
  997. fIpathName fBimage fIoption fR?fIarg arg ...fR?
  998. This command is used to manipulate embedded images.
  999. The behavior of the command depends on the fIoptionfR argument
  1000. that follows the fBtagfR argument.
  1001. The following forms of the command are currently supported:
  1002. .RS
  1003. .TP
  1004. fIpathName fBimage cgetfR fIindex optionfR
  1005. Returns the value of a configuration option for an embedded image.
  1006. fIIndexfR identifies the embedded image, and fIoptionfR
  1007. specifies a particular configuration option, which must be one of
  1008. the ones listed in the section fBEMBEDDED IMAGESfR.
  1009. .TP
  1010. fIpathName fBimage configure fIindexfR ?fIoption value ...fR?
  1011. Query or modify the configuration options for an embedded image.
  1012. If no fIoptionfR is specified, returns a list describing all of
  1013. the available options for the embedded image at fIindexfR
  1014. (see fBTk_ConfigureInfofR for information on the format of this list).
  1015. If fIoptionfR is specified with no fIvaluefR, then the command
  1016. returns a list describing the one named option (this list will be
  1017. identical to the corresponding sublist of the value returned if no
  1018. fIoptionfR is specified).
  1019. If one or more fIoption-valuefR pairs are specified, then the command
  1020. modifies the given option(s) to have the given value(s);  in
  1021. this case the command returns an empty string.
  1022. See fBEMBEDDED IMAGESfR for information on the options that
  1023. are supported.
  1024. .TP
  1025. fIpathName fBimage create fIindexfR ?fIoption value ...fR?
  1026. This command creates a new image annotation, which will appear
  1027. in the text at the position given by fIindexfR.
  1028. Any number of fIoption-valuefR pairs may be specified to
  1029. configure the annotation.
  1030. Returns a unique identifier that may be used as an index to refer to
  1031. this image.
  1032. See fBEMBEDDED IMAGESfR for information on the options that
  1033. are supported, and a description of the identifier returned.
  1034. .TP
  1035. fIpathName fBimage namesfR
  1036. Returns a list whose elements are the names of all image instances currently
  1037. embedded in fIwindowfR.
  1038. .RE
  1039. .TP
  1040. fIpathName fBindex fIindexfR
  1041. Returns the position corresponding to fIindexfR in the form
  1042. fIline.charfR where fIlinefR is the line number and fIcharfR
  1043. is the character number.
  1044. fIIndexfR may have any of the forms described under fBINDICESfR above.
  1045. .TP
  1046. fIpathName fBinsert fIindex chars fR?fItagList chars tagList ...fR?
  1047. Inserts all of the fIcharsfR arguments just before the character at
  1048. fIindexfR.
  1049. If fIindexfR refers to the end of the text (the character after
  1050. the last newline) then the new text is inserted just before the
  1051. last newline instead.
  1052. If there is a single fIcharsfR argument and no fItagListfR, then
  1053. the new text will receive any tags that are present on both the
  1054. character before and the character after the insertion point; if a tag
  1055. is present on only one of these characters then it will not be
  1056. applied to the new text.
  1057. If fItagListfR is specified then it consists of a list of
  1058. tag names;  the new characters will receive all of the tags in
  1059. this list and no others, regardless of the tags present around
  1060. the insertion point.
  1061. If multiple fIcharsfR-fItagListfR argument pairs are present,
  1062. they produce the same effect as if a separate fBinsertfR widget
  1063. command had been issued for each pair, in order.
  1064. The last fItagListfR argument may be omitted.
  1065. .TP
  1066. fIpathName fBmark fIoption fR?fIarg arg ...fR?
  1067. This command is used to manipulate marks.  The exact behavior of
  1068. the command depends on the fIoptionfR argument that follows
  1069. the fBmarkfR argument.  The following forms of the command
  1070. are currently supported:
  1071. .RS
  1072. .TP
  1073. fIpathName fBmark gravity fImarkNamefR ?fIdirectionfR?
  1074. If fIdirectionfR is not specified, returns fBleftfR or fBrightfR
  1075. to indicate which of its adjacent characters fImarkNamefR is attached
  1076. to.
  1077. If fIdirectionfR is specified, it must be fBleftfR or fBrightfR;
  1078. the gravity of fImarkNamefR is set to the given value.
  1079. .TP
  1080. fIpathName fBmark namesfR
  1081. Returns a list whose elements are the names of all the marks that
  1082. are currently set.
  1083. .TP
  1084. fIpathName fBmark next fIindexfR
  1085. Returns the name of the next mark at or after fIindexfR.
  1086. If fIindexfR is specified in numerical form, then the search for
  1087. the next mark begins at that index.
  1088. If fIindexfR is the name of a mark, then the search for
  1089. the next mark begins immediately after that mark.
  1090. This can still return a mark at the same position if
  1091. there are multiple marks at the same index.
  1092. These semantics mean that the fBmark nextfP operation can be used to
  1093. step through all the marks in a text widget in the same order
  1094. as the mark information returned by the fBdumpfP operation.
  1095. If a mark has been set to the special fBendfP index,
  1096. then it appears to be fIafterfP fBendfP with respect to the fBmark nextfP operation.
  1097. An empty string is returned if there are no marks after fIindexfR.
  1098. .TP
  1099. fIpathName fBmark previous fIindexfR
  1100. Returns the name of the mark at or before fIindexfR.
  1101. If fIindexfR is specified in numerical form, then the search for
  1102. the previous mark begins with the character just before that index.
  1103. If fIindexfR is the name of a mark, then the search for
  1104. the next mark begins immediately before that mark.
  1105. This can still return a mark at the same position if
  1106. there are multiple marks at the same index.
  1107. These semantics mean that the fBmark previousfP operation can be used to
  1108. step through all the marks in a text widget in the reverse order
  1109. as the mark information returned by the fBdumpfP operation.
  1110. An empty string is returned if there are no marks before fIindexfR.
  1111. .TP
  1112. fIpathName fBmark set fImarkName indexfR
  1113. Sets the mark named fImarkNamefR to a position just before the
  1114. character at fIindexfR.
  1115. If fImarkNamefR already exists, it is moved from its old position;
  1116. if it doesn't exist, a new mark is created.
  1117. This command returns an empty string.
  1118. .TP
  1119. fIpathName fBmark unset fImarkName fR?fImarkName markName ...fR?
  1120. Remove the mark corresponding to each of the fImarkNamefR arguments.
  1121. The removed marks will not be usable in indices and will not be
  1122. returned by future calls to ``fIpathName fBmark namesfR''.
  1123. This command returns an empty string.
  1124. .RE
  1125. .TP
  1126. fIpathName fBscanfR fIoption argsfR
  1127. This command is used to implement scanning on texts.  It has
  1128. two forms, depending on fIoptionfR:
  1129. .RS
  1130. .TP
  1131. fIpathName fBscan mark fIx yfR
  1132. Records fIxfR and fIyfR and the current view in the text window,
  1133. for use in conjunction with later fBscan dragtofR commands.
  1134. Typically this command is associated with a mouse button press in
  1135. the widget.  It returns an empty string.
  1136. .TP
  1137. fIpathName fBscan dragto fIx yfR
  1138. This command computes the difference between its fIxfR and fIyfR
  1139. arguments and the fIxfR and fIyfR arguments to the last
  1140. fBscan markfR command for the widget.
  1141. It then adjusts the view by 10 times the difference in coordinates.
  1142. This command is typically associated
  1143. with mouse motion events in the widget, to produce the effect of
  1144. dragging the text at high speed through the window.  The return
  1145. value is an empty string.
  1146. .RE
  1147. .TP
  1148. fIpathName fBsearch fR?fIswitchesfR? fIpattern index fR?fIstopIndexfR?
  1149. Searches the text in fIpathNamefR starting at fIindexfR for a range
  1150. of characters that matches fIpatternfR.
  1151. If a match is found, the index of the first character in the match is
  1152. returned as result;  otherwise an empty string is returned.
  1153. One or more of the following switches (or abbreviations thereof)
  1154. may be specified to control the search:
  1155. .RS
  1156. .TP
  1157. fB-forwardsfR
  1158. The search will proceed forward through the text, finding the first
  1159. matching range starting at or after the position given by fIindexfR.
  1160. This is the default.
  1161. .TP
  1162. fB-backwardsfR
  1163. The search will proceed backward through the text, finding the
  1164. matching range closest to fIindexfR whose first character
  1165. is before fIindexfR.
  1166. .TP
  1167. fB-exactfR
  1168. Use exact matching:  the characters in the matching range must be
  1169. identical to those in fIpatternfR.
  1170. This is the default.
  1171. .TP
  1172. fB-regexpfR
  1173. Treat fIpatternfR as a regular expression and match it against
  1174. the text using the rules for regular expressions (see the fBregexpfR
  1175. command for details).
  1176. .TP
  1177. fB-nocasefR
  1178. Ignore case differences between the pattern and the text.
  1179. .TP
  1180. fB-countfI varNamefR
  1181. The argument following fB-countfR gives the name of a variable;
  1182. if a match is found, the number of index positions between beginning and
  1183. end of the matching range will be stored in the variable.  If there are no
  1184. embedded images or windows in the matching range (and there are no
  1185. elided characters if fB-elidefR is not given), this is equivalent to the
  1186. number of characters matched.  In either case, the range fImatchIdxfR to
  1187. fImatchIdx + $count charsfR will return the entire matched text.
  1188. .TP
  1189. fB-elidefR
  1190. Find elided (hidden) text as well. By default only displayed text is
  1191. searched.
  1192. .TP
  1193. fB-|-fR
  1194. This switch has no effect except to terminate the list of switches:
  1195. the next argument will be treated as fIpatternfR even if it starts
  1196. with fB-fR.
  1197. .LP
  1198. The matching range must be entirely within a single line of text.
  1199. For regular expression matching the newlines are removed from the ends
  1200. of the lines before matching:  use the fB$fR feature in regular
  1201. expressions to match the end of a line.
  1202. For exact matching the newlines are retained.
  1203. If fIstopIndexfR is specified, the search stops at that index:
  1204. for forward searches, no match at or after fIstopIndexfR will
  1205. be considered;  for backward searches, no match earlier in the
  1206. text than fIstopIndexfR will be considered.
  1207. If fIstopIndexfR is omitted, the entire text will be searched:
  1208. when the beginning or end of the text is reached, the search
  1209. continues at the other end until the starting location is reached
  1210. again;  if fIstopIndexfR is specified, no wrap-around will occur.
  1211. .RE
  1212. .TP
  1213. fIpathName fBsee fIindexfR
  1214. Adjusts the view in the window so that the character given by fIindexfR
  1215. is completely visible.
  1216. If fIindexfR is already visible then the command does nothing.
  1217. If fIindexfR is a short distance out of view, the command
  1218. adjusts the view just enough to make fIindexfR visible at the
  1219. edge of the window.
  1220. If fIindexfR is far out of view, then the command centers
  1221. fIindexfR in the window.
  1222. .TP
  1223. fIpathName fBtag fIoption fR?fIarg arg ...fR?
  1224. This command is used to manipulate tags.  The exact behavior of the
  1225. command depends on the fIoptionfR argument that follows the
  1226. fBtagfR argument.  The following forms of the command are currently
  1227. supported:
  1228. .RS
  1229. .TP
  1230. fIpathName fBtag add fItagName index1 fR?fIindex2 index1 index2 ...fR?
  1231. Associate the tag fItagNamefR with all of the characters starting
  1232. with fIindex1fR and ending just before
  1233. fIindex2fR (the character at fIindex2fR isn't tagged).
  1234. A single command may contain any number of fIindex1fR-fIindex2fR
  1235. pairs.
  1236. If the last fIindex2fR is omitted then the single character at
  1237. fIindex1fR is tagged.
  1238. If there are no characters in the specified range (e.g. fIindex1fR
  1239. is past the end of the file or fIindex2fR is less than or equal
  1240. to fIindex1fR) then the command has no effect.
  1241. .TP
  1242. fIpathName fBtag bind fItagNamefR ?fIsequencefR? ?fIscriptfR?
  1243. This command associates fIscriptfR with the tag given by
  1244. fItagNamefR.
  1245. Whenever the event sequence given by fIsequencefR occurs for a
  1246. character that has been tagged with fItagNamefR,
  1247. the script will be invoked.
  1248. This widget command is similar to the fBbindfR command except that
  1249. it operates on characters in a text rather than entire widgets.
  1250. See the fBbindfR manual entry for complete details
  1251. on the syntax of fIsequencefR and the substitutions performed
  1252. on fIscriptfR before invoking it.
  1253. If all arguments are specified then a new binding is created, replacing
  1254. any existing binding for the same fIsequencefR and fItagNamefR
  1255. (if the first character of fIscriptfR is ``+'' then fIscriptfR
  1256. augments an existing binding rather than replacing it).
  1257. In this case the return value is an empty string.
  1258. If fIscriptfR is omitted then the command returns the fIscriptfR
  1259. associated with fItagNamefR and fIsequencefR (an error occurs
  1260. if there is no such binding).
  1261. If both fIscriptfR and fIsequencefR are omitted then the command
  1262. returns a list of all the sequences for which bindings have been
  1263. defined for fItagNamefR.
  1264. .RS
  1265. .PP
  1266. .VS
  1267. The only events for which bindings may be specified are those related
  1268. to the mouse and keyboard (such as fBEnterfR, fBLeavefR, 
  1269. fBButtonPressfR, fBMotionfR, and fBKeyPressfR) or virtual events.
  1270. Event bindings for a text widget use the fBcurrentfR mark described
  1271. under fBMARKSfR above.  An fBEnterfR event triggers for a tag when the tag
  1272. first becomes present on the current character, and a fBLeavefR event
  1273. triggers for a tag when it ceases to be present on the current character.
  1274. fBEnterfR and fBLeavefR events can happen either because the
  1275. fBcurrentfR mark moved or because the character at that position
  1276. changed.  Note that these events are different than fBEnterfR and
  1277. fBLeavefR events for windows.  Mouse and keyboard events are directed
  1278. to the current character.  If a virtual event is used in a binding, that
  1279. binding can trigger only if the virtual event is defined by an underlying
  1280. mouse-related or keyboard-related event.
  1281. .VE
  1282. .PP
  1283. It is possible for the current character to have multiple tags,
  1284. and for each of them to have a binding for a particular event
  1285. sequence.
  1286. When this occurs, one binding is invoked for each tag, in order
  1287. from lowest-priority to highest priority.
  1288. If there are multiple matching bindings for a single tag, then
  1289. the most specific binding is chosen (see the manual entry for
  1290. the fBbindfR command for details).
  1291. fBcontinuefR and fBbreakfR commands within binding scripts
  1292. are processed in the same way as for bindings created with
  1293. the fBbindfR command.
  1294. .PP
  1295. If bindings are created for the widget as a whole using the
  1296. fBbindfR command, then those bindings will supplement the
  1297. tag bindings.
  1298. The tag bindings will be invoked first, followed by bindings
  1299. for the window as a whole.
  1300. .RE
  1301. .TP
  1302. fIpathName fBtag cgetfR fItagName optionfR
  1303. This command returns the current value of the option named fIoptionfR
  1304. associated with the tag given by fItagNamefR.
  1305. fIOptionfR may have any of the values accepted by the fBtag configurefR
  1306. widget command.
  1307. .TP
  1308. fIpathName fBtag configure fItagNamefR ?fIoptionfR? ?fIvaluefR? ?fIoption value ...fR?
  1309. This command is similar to the fBconfigurefR widget command except
  1310. that it modifies options associated with the tag given by fItagNamefR
  1311. instead of modifying options for the overall text widget.
  1312. If no fIoptionfR is specified, the command returns a list describing
  1313. all of the available options for fItagNamefR (see fBTk_ConfigureInfofR
  1314. for information on the format of this list).
  1315. If fIoptionfR is specified with no fIvaluefR, then the command returns
  1316. a list describing the one named option (this list will be identical to
  1317. the corresponding sublist of the value returned if no fIoptionfR
  1318. is specified).
  1319. If one or more fIoption-valuefR pairs are specified, then the command
  1320. modifies the given option(s) to have the given value(s) in fItagNamefR;
  1321. in this case the command returns an empty string.
  1322. See fBTAGSfR above for details on the options available for tags.
  1323. .TP
  1324. fIpathName fBtag delete fItagName fR?fItagName ...fR?
  1325. Deletes all tag information for each of the fItagNamefR
  1326. arguments.
  1327. The command removes the tags from all characters in the file
  1328. and also deletes any other information associated with the tags,
  1329. such as bindings and display information.
  1330. The command returns an empty string.
  1331. .TP
  1332. fIpathNamefB tag lower fItagName fR?fIbelowThisfR?
  1333. Changes the priority of tag fItagNamefR so that it is just lower
  1334. in priority than the tag whose name is fIbelowThisfR.
  1335. If fIbelowThisfR is omitted, then fItagNamefR's priority
  1336. is changed to make it lowest priority of all tags.
  1337. .TP
  1338. fIpathName fBtag names fR?fIindexfR?
  1339. Returns a list whose elements are the names of all the tags that
  1340. are active at the character position given by fIindexfR.
  1341. If fIindexfR is omitted, then the return value will describe
  1342. all of the tags that exist for the text (this includes all tags
  1343. that have been named in a ``fIpathName fBtagfR'' widget
  1344. command but haven't been deleted by a ``fIpathName fBtag deletefR''
  1345. widget command, even if no characters are currently marked with
  1346. the tag).
  1347. The list will be sorted in order from lowest priority to highest
  1348. priority.
  1349. .TP
  1350. fIpathName fBtag nextrange fItagName index1 fR?fIindex2fR?
  1351. This command searches the text for a range of characters tagged
  1352. with fItagNamefR where the first character of the range is
  1353. no earlier than the character at fIindex1fR and no later than
  1354. the character just before fIindex2fR (a range starting at
  1355. fIindex2fR will not be considered).
  1356. If several matching ranges exist, the first one is chosen.
  1357. The command's return value is a list containing
  1358. two elements, which are the index of the first character of the
  1359. range and the index of the character just after the last one in
  1360. the range.
  1361. If no matching range is found then the return value is an
  1362. empty string.
  1363. If fIindex2fR is not given then it defaults to the end of the text.
  1364. .TP
  1365. fIpathName fBtag prevrange fItagName index1 fR?fIindex2fR?
  1366. This command searches the text for a range of characters tagged
  1367. with fItagNamefR where the first character of the range is
  1368. before the character at fIindex1fR and no earlier than
  1369. the character at fIindex2fR (a range starting at
  1370. fIindex2fR will be considered).
  1371. If several matching ranges exist, the one closest to fIindex1fR is chosen.
  1372. The command's return value is a list containing
  1373. two elements, which are the index of the first character of the
  1374. range and the index of the character just after the last one in
  1375. the range.
  1376. If no matching range is found then the return value is an
  1377. empty string.
  1378. If fIindex2fR is not given then it defaults to the beginning of the text.
  1379. .TP
  1380. fIpathNamefB tag raise fItagName fR?fIaboveThisfR?
  1381. Changes the priority of tag fItagNamefR so that it is just higher
  1382. in priority than the tag whose name is fIaboveThisfR.
  1383. If fIaboveThisfR is omitted, then fItagNamefR's priority
  1384. is changed to make it highest priority of all tags.
  1385. .TP
  1386. fIpathName fBtag ranges fItagNamefR
  1387. Returns a list describing all of the ranges of text that have been
  1388. tagged with fItagNamefR.
  1389. The first two elements of the list describe the first tagged range
  1390. in the text, the next two elements describe the second range, and
  1391. so on.
  1392. The first element of each pair contains the index of the first
  1393. character of the range, and the second element of the pair contains
  1394. the index of the character just after the last one in the
  1395. range.
  1396. If there are no characters tagged with fItagfR then an
  1397. empty string is returned.
  1398. .TP
  1399. fIpathName fBtag remove fItagName index1 fR?fIindex2 index1 index2 ...fR?
  1400. Remove the tag fItagNamefR from all of the characters starting
  1401. at fIindex1fR and ending just before
  1402. fIindex2fR (the character at fIindex2fR isn't affected).
  1403. A single command may contain any number of fIindex1fR-fIindex2fR
  1404. pairs.
  1405. If the last fIindex2fR is omitted then the single character at
  1406. fIindex1fR is tagged.
  1407. If there are no characters in the specified range (e.g. fIindex1fR
  1408. is past the end of the file or fIindex2fR is less than or equal
  1409. to fIindex1fR) then the command has no effect.
  1410. This command returns an empty string.
  1411. .RE
  1412. .TP
  1413. fIpathName fBwindow fIoption fR?fIarg arg ...fR?
  1414. This command is used to manipulate embedded windows.
  1415. The behavior of the command depends on the fIoptionfR argument
  1416. that follows the fBtagfR argument.
  1417. The following forms of the command are currently supported:
  1418. .RS
  1419. .TP
  1420. fIpathName fBwindow cgetfR fIindex optionfR
  1421. Returns the value of a configuration option for an embedded window.
  1422. fIIndexfR identifies the embedded window, and fIoptionfR
  1423. specifies a particular configuration option, which must be one of
  1424. the ones listed in the section fBEMBEDDED WINDOWSfR.
  1425. .TP
  1426. fIpathName fBwindow configure fIindexfR ?fIoption value ...fR?
  1427. Query or modify the configuration options for an embedded window.
  1428. If no fIoptionfR is specified, returns a list describing all of
  1429. the available options for the embedded window at fIindexfR
  1430. (see fBTk_ConfigureInfofR for information on the format of this list).
  1431. If fIoptionfR is specified with no fIvaluefR, then the command
  1432. returns a list describing the one named option (this list will be
  1433. identical to the corresponding sublist of the value returned if no
  1434. fIoptionfR is specified).
  1435. If one or more fIoption-valuefR pairs are specified, then the command
  1436. modifies the given option(s) to have the given value(s);  in
  1437. this case the command returns an empty string.
  1438. See fBEMBEDDED WINDOWSfR for information on the options that
  1439. are supported.
  1440. .TP
  1441. fIpathName fBwindow create fIindexfR ?fIoption value ...fR?
  1442. This command creates a new window annotation, which will appear
  1443. in the text at the position given by fIindexfR.
  1444. Any number of fIoption-valuefR pairs may be specified to
  1445. configure the annotation.
  1446. See fBEMBEDDED WINDOWSfR for information on the options that
  1447. are supported.
  1448. Returns an empty string.
  1449. .TP
  1450. fIpathName fBwindow namesfR
  1451. Returns a list whose elements are the names of all windows currently
  1452. embedded in fIwindowfR.
  1453. .RE
  1454. .TP
  1455. fIpathName fBxview fIoption argsfR
  1456. This command is used to query and change the horizontal position of the
  1457. text in the widget's window.  It can take any of the following
  1458. forms:
  1459. .RS
  1460. .TP
  1461. fIpathName fBxviewfR
  1462. Returns a list containing two elements.
  1463. Each element is a real fraction between 0 and 1;  together they describe
  1464. the portion of the document's horizontal span that is visible in
  1465. the window.
  1466. For example, if the first element is .2 and the second element is .6,
  1467. 20% of the text is off-screen to the left, the middle 40% is visible
  1468. in the window, and 40% of the text is off-screen to the right.
  1469. The fractions refer only to the lines that are actually visible in the
  1470. window:  if the lines in the window are all very short, so that they
  1471. are entirely visible, the returned fractions will be 0 and 1,
  1472. even if there are other lines in the text that are
  1473. much wider than the window.
  1474. These are the same values passed to scrollbars via the fB-xscrollcommandfR
  1475. option.
  1476. .TP
  1477. fIpathName fBxview movetofI fractionfR
  1478. Adjusts the view in the window so that fIfractionfR of the horizontal
  1479. span of the text is off-screen to the left.
  1480. fIFractionfR is a fraction between 0 and 1.
  1481. .TP
  1482. fIpathName fBxview scroll fInumber whatfR
  1483. This command shifts the view in the window left or right according to
  1484. fInumberfR and fIwhatfR.
  1485. fINumberfR must be an integer.
  1486. fIWhatfR must be either fBunitsfR or fBpagesfR or an abbreviation
  1487. of one of these.
  1488. If fIwhatfR is fBunitsfR, the view adjusts left or right by
  1489. fInumberfR average-width characters on the display;  if it is
  1490. fBpagesfR then the view adjusts by fInumberfR screenfuls.
  1491. If fInumberfR is negative then characters farther to the left
  1492. become visible;  if it is positive then characters farther to the right
  1493. become visible.
  1494. .RE
  1495. .TP
  1496. fIpathName fByview fI?argsfR?
  1497. This command is used to query and change the vertical position of the
  1498. text in the widget's window.
  1499. It can take any of the following forms:
  1500. .RS
  1501. .TP
  1502. fIpathName fByviewfR
  1503. Returns a list containing two elements, both of which are real fractions
  1504. between 0 and 1.
  1505. The first element gives the position of the first character in the
  1506. top line in the window, relative to the text as a whole (0.5 means
  1507. it is halfway through the text, for example).
  1508. The second element gives the position of the character just after
  1509. the last one in the bottom line of the window,
  1510. relative to the text as a whole.
  1511. These are the same values passed to scrollbars via the fB-yscrollcommandfR
  1512. option.
  1513. .TP
  1514. fIpathName fByview movetofI fractionfR
  1515. Adjusts the view in the window so that the character given by fIfractionfR
  1516. appears on the top line of the window.
  1517. fIFractionfR is a fraction between 0 and 1;  0 indicates the first
  1518. character in the text, 0.33 indicates the character one-third the
  1519. way through the text, and so on.
  1520. .TP
  1521. fIpathName fByview scroll fInumber whatfR
  1522. This command adjust the view in the window up or down according to
  1523. fInumberfR and fIwhatfR.
  1524. fINumberfR must be an integer.
  1525. fIWhatfR must be either fBunitsfR or fBpagesfR.
  1526. If fIwhatfR is fBunitsfR, the view adjusts up or down by
  1527. fInumberfR lines on the display;  if it is fBpagesfR then
  1528. the view adjusts by fInumberfR screenfuls.
  1529. If fInumberfR is negative then earlier positions in the text
  1530. become visible;  if it is positive then later positions in the text
  1531. become visible.
  1532. .TP
  1533. fIpathName fByview fR?fB-pickplacefR? fIindexfR
  1534. Changes the view in the widget's window to make fIindexfR visible.
  1535. If the fB-pickplacefR option isn't specified then fIindexfR will
  1536. appear at the top of the window.
  1537. If fB-pickplacefR is specified then the widget chooses where
  1538. fIindexfR appears in the window:
  1539. .RS
  1540. .IP [1]
  1541. If fIindexfR is already visible somewhere in the window then the
  1542. command does nothing.
  1543. .IP [2]
  1544. If fIindexfR is only a few lines off-screen above the window then
  1545. it will be positioned at the top of the window.
  1546. .IP [3]
  1547. If fIindexfR is only a few lines off-screen below the window then
  1548. it will be positioned at the bottom of the window.
  1549. .IP [4]
  1550. Otherwise, fIindexfR will be centered in the window.
  1551. .LP
  1552. The fB-pickplacefR option has been obsoleted by the fBseefR widget
  1553. command (fBseefR handles both x- and y-motion to make a location
  1554. visible, whereas fB-pickplacefR only handles motion in y).
  1555. .RE
  1556. .TP
  1557. fIpathName fByview fInumberfR
  1558. This command makes the first character on the line after
  1559. the one given by fInumberfR visible at the top of the window.
  1560. fINumberfR must be an integer.
  1561. This command used to be used for scrolling, but now it is obsolete.
  1562. .RE
  1563. .SH BINDINGS
  1564. .PP
  1565. Tk automatically creates class bindings for texts that give them
  1566. the following default behavior.
  1567. In the descriptions below, ``word'' is dependent on the value of
  1568. the fBtcl_wordcharsfR variable.  See tclvars(n).
  1569. .IP [1]
  1570. Clicking mouse button 1 positions the insertion cursor
  1571. just before the character underneath the mouse cursor, sets the
  1572. input focus to this widget, and clears any selection in the widget.
  1573. Dragging with mouse button 1 strokes out a selection between
  1574. the insertion cursor and the character under the mouse.
  1575. .IP [2]
  1576. Double-clicking with mouse button 1 selects the word under the mouse
  1577. and positions the insertion cursor at the end of the word.
  1578. Dragging after a double click will stroke out a selection consisting
  1579. of whole words.
  1580. .IP [3]
  1581. Triple-clicking with mouse button 1 selects the line under the mouse
  1582. and positions the insertion cursor at the end of the line.
  1583. Dragging after a triple click will stroke out a selection consisting
  1584. of whole lines.
  1585. .IP [4]
  1586. The ends of the selection can be adjusted by dragging with mouse
  1587. button 1 while the Shift key is down;  this will adjust the end
  1588. of the selection that was nearest to the mouse cursor when button
  1589. 1 was pressed.
  1590. If the button is double-clicked before dragging then the selection
  1591. will be adjusted in units of whole words;  if it is triple-clicked
  1592. then the selection will be adjusted in units of whole lines.
  1593. .IP [5]
  1594. Clicking mouse button 1 with the Control key down will reposition the
  1595. insertion cursor without affecting the selection.
  1596. .IP [6]
  1597. If any normal printing characters are typed, they are
  1598. inserted at the point of the insertion cursor.
  1599. .IP [7]
  1600. The view in the widget can be adjusted by dragging with mouse button 2.
  1601. If mouse button 2 is clicked without moving the mouse, the selection
  1602. is copied into the text at the position of the mouse cursor.
  1603. The Insert key also inserts the selection, but at the position of
  1604. the insertion cursor.
  1605. .IP [8]
  1606. If the mouse is dragged out of the widget
  1607. while button 1 is pressed, the entry will automatically scroll to
  1608. make more text visible (if there is more text off-screen on the side
  1609. where the mouse left the window).
  1610. .IP [9]
  1611. The Left and Right keys move the insertion cursor one character to the
  1612. left or right;  they also clear any selection in the text.
  1613. If Left or Right is typed with the Shift key down, then the insertion
  1614. cursor moves and the selection is extended to include the new character.
  1615. Control-Left and Control-Right move the insertion cursor by words, and
  1616. Control-Shift-Left and Control-Shift-Right move the insertion cursor
  1617. by words and also extend the selection.
  1618. Control-b and Control-f behave the same as Left and Right, respectively.
  1619. Meta-b and Meta-f behave the same as Control-Left and Control-Right,
  1620. respectively.
  1621. .IP [10]
  1622. The Up and Down keys move the insertion cursor one line up or
  1623. down and clear any selection in the text.
  1624. If Up or Right is typed with the Shift key down, then the insertion
  1625. cursor moves and the selection is extended to include the new character.
  1626. Control-Up and Control-Down move the insertion cursor by paragraphs (groups
  1627. of lines separated by blank lines), and
  1628. Control-Shift-Up and Control-Shift-Down move the insertion cursor
  1629. by paragraphs and also extend the selection.
  1630. Control-p and Control-n behave the same as Up and Down, respectively.
  1631. .IP [11]
  1632. The Next and Prior keys move the insertion cursor forward or backwards
  1633. by one screenful and clear any selection in the text.
  1634. If the Shift key is held down while Next or Prior is typed, then
  1635. the selection is extended to include the new character.
  1636. Control-v moves the view down one screenful without moving the
  1637. insertion cursor or adjusting the selection.
  1638. .IP [12]
  1639. Control-Next and Control-Prior scroll the view right or left by one page
  1640. without moving the insertion cursor or affecting the selection.
  1641. .IP [13]
  1642. Home and Control-a move the insertion cursor to the
  1643. beginning of its line and clear any selection in the widget.
  1644. Shift-Home moves the insertion cursor to the beginning of the line
  1645. and also extends the selection to that point.
  1646. .IP [14]
  1647. End and Control-e move the insertion cursor to the
  1648. end of the line and clear any selection in the widget.
  1649. Shift-End moves the cursor to the end of the line and extends the selection
  1650. to that point.
  1651. .IP [15]
  1652. Control-Home and Meta-< move the insertion cursor to the beginning of
  1653. the text and clear any selection in the widget.
  1654. Control-Shift-Home moves the insertion cursor to the beginning of the text
  1655. and also extends the selection to that point.
  1656. .IP [16]
  1657. Control-End and Meta-> move the insertion cursor to the end of the
  1658. text and clear any selection in the widget.
  1659. Control-Shift-End moves the cursor to the end of the text and extends
  1660. the selection to that point.
  1661. .IP [17]
  1662. The Select key and Control-Space set the selection anchor to the position
  1663. of the insertion cursor.  They don't affect the current selection.
  1664. Shift-Select and Control-Shift-Space adjust the selection to the
  1665. current position of the insertion cursor, selecting from the anchor
  1666. to the insertion cursor if there was not any selection previously.
  1667. .IP [18]
  1668. Control-/ selects the entire contents of the widget.
  1669. .IP [19]
  1670. Control-e clears any selection in the widget.
  1671. .IP [20]
  1672. The F16 key (labelled Copy on many Sun workstations) or Meta-w
  1673. copies the selection in the widget to the clipboard, if there is a selection.
  1674. .VS 8.4
  1675. This action is carried out by the command fBtk_textCopyfR.
  1676. .VE 8.4
  1677. .IP [21]
  1678. The F20 key (labelled Cut on many Sun workstations) or Control-w
  1679. copies the selection in the widget to the clipboard and deletes
  1680. the selection.
  1681. .VS 8.4
  1682. This action is carried out by the command fBtk_textCutfR.
  1683. .VE 8.4
  1684. If there is no selection in the widget then these keys have no effect.
  1685. .IP [22]
  1686. The F18 key (labelled Paste on many Sun workstations) or Control-y
  1687. inserts the contents of the clipboard at the position of the
  1688. insertion cursor.
  1689. .VS 8.4
  1690. This action is carried out by the command fBtk_textPastefR.
  1691. .VE 8.4
  1692. .IP [23]
  1693. The Delete key deletes the selection, if there is one in the widget.
  1694. If there is no selection, it deletes the character to the right of
  1695. the insertion cursor.
  1696. .IP [24]
  1697. Backspace and Control-h delete the selection, if there is one
  1698. in the widget.
  1699. If there is no selection, they delete the character to the left of
  1700. the insertion cursor.
  1701. .IP [25]
  1702. Control-d deletes the character to the right of the insertion cursor.
  1703. .IP [26]
  1704. Meta-d deletes the word to the right of the insertion cursor.
  1705. .IP [27]
  1706. Control-k deletes from the insertion cursor to the end of its line;
  1707. if the insertion cursor is already at the end of a line, then
  1708. Control-k deletes the newline character.
  1709. .IP [28]
  1710. Control-o opens a new line by inserting a newline character in
  1711. front of the insertion cursor without moving the insertion cursor.
  1712. .IP [29]
  1713. Meta-backspace and Meta-Delete delete the word to the left of the
  1714. insertion cursor.
  1715. .IP [30]
  1716. Control-x deletes whatever is selected in the text widget
  1717. after copying it to the clipboard.
  1718. .IP [31]
  1719. Control-t reverses the order of the two characters to the right of
  1720. the insertion cursor. 
  1721. .IP [32]
  1722. .VS 8.4
  1723. Control-z (and Control-underscore on UNIX when fBtk_strictMotiffR is
  1724. true) undoes the last edit action if the fB-undofR option is true.
  1725. Does nothing otherwise.
  1726. .IP [33]
  1727. Control-Z (or Control-y on Windows) reapplies the last undone edit
  1728. action if the fB-undofR option is true. Does nothing otherwise.
  1729. .VE 8.4
  1730. .PP
  1731. If the widget is disabled using the fB-statefR option, then its
  1732. view can still be adjusted and text can still be selected,
  1733. but no insertion cursor will be displayed and no text modifications will
  1734. take place.
  1735. .PP
  1736. The behavior of texts can be changed by defining new bindings for
  1737. individual widgets or by redefining the class bindings.
  1738. .SH "PERFORMANCE ISSUES"
  1739. .PP
  1740. Text widgets should run efficiently under a variety
  1741. of conditions.  The text widget uses about 2-3 bytes of
  1742. main memory for each byte of text, so texts containing a megabyte
  1743. or more should be practical on most workstations.
  1744. Text is represented internally with a modified B-tree structure
  1745. that makes operations relatively efficient even with large texts.
  1746. Tags are included in the B-tree structure in a way that allows
  1747. tags to span large ranges or have many disjoint smaller ranges
  1748. without loss of efficiency.
  1749. Marks are also implemented in a way that allows large numbers of
  1750. marks.
  1751. In most cases it is fine to have large numbers of unique tags,
  1752. or a tag that has many distinct ranges.
  1753. .PP
  1754. One performance problem can arise if you have hundreds or thousands
  1755. of different tags that all have the following characteristics:
  1756. the first and last ranges of each tag are near the beginning and
  1757. end of the text, respectively,
  1758. or a single tag range covers most of the text widget.
  1759. The cost of adding and deleting tags like this is proportional
  1760. to the number of other tags with the same properties.
  1761. In contrast, there is no problem with having thousands of distinct
  1762. tags if their overall ranges are localized and spread uniformly throughout
  1763. the text.
  1764. .PP
  1765. Very long text lines can be expensive,
  1766. especially if they have many marks and tags within them.
  1767. .PP
  1768. The display line with the insert cursor is redrawn each time the
  1769. cursor blinks, which causes a steady stream of graphics traffic.
  1770. Set the fBinsertOffTimefP attribute to 0 avoid this.
  1771. .SH "SEE ALSO"
  1772. entry(n), scrollbar(n)
  1773. .SH KEYWORDS
  1774. text, widget, tkvars