The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

Tk::Text::SuperText - An improved text widget for Perl/Tk

SYNOPSIS

$super_text = $paren->SuperText(?options?);

STANDARD OPTIONS

-background -highlightbackground -insertontime -selectborderwidth -borderwidth -highlightcolor -insertwidth -selectforeground -cursor -highlightthickness -padx -setgrid -exportselection -insertbackground -pady -takefocus -font -insertborderwidth -relief -xscrollcommand -foreground -insertofftime -selectbackground -yscrollcommand -ansicolor

See Tk::options for details of the standard options.

-height -spacing1 -spacing2 -spacing3 -state -tabs -width -wrap

See Tk::Text for details of theis options.

WIDGET-SPECIFIC OPTIONS

Name: indentMode
Class: IndentMode
Switch: -indentmode

Specifies how to indent when a new line is inserted in the text. The possible modes are none for no indent at all or auto for positioning the insertion cursor right below the first non-white space character of the previous line.

Name: undoDepth
Class: UndoDepth
Switch: -undodepth

Sets the maximum depth for the undo buffer:a number specifies the numbers of insert or delete operations that can be stored in the buffer before the oldest one is poped out and forgotten; 0 stops the undo feature, undef sets unlimited depth.

Name: redoDepth
Class: RedoDepth
Switch: -redodepth

Sets the maximum depth for the redo buffer:a number specifies the numbers of undo operations that can be stored in the buffer before the oldest one is poped out and forgotten; 0 stops the redo feature, undef sets unlimited depth.

Name: showMatching
Class: ShowMatching
Switch: -showmatching

With a value of 1 activates the matching parentheses feature.0 deactivates it.

Name: matchHighlightTime
Class: MatchHighlightTime
Switch: -matchhighlighttime

Sets the number of milliseconds the match highlight stays visible; with a value of 0 the highlight stays on till next match.

Name: matchForeground
Class: MatchForeground
Switch: -matchforeground

Set the foreground color for the char hilighted by the match-parentheses command.

Name: matchBackground
Class: MatchBackground
Switch: -matchbackground

Set the background color for the char hilighted by the match-parentheses command.

Name: matchingCouples
Class: MatchingCouples
Switch: -matchingcouples

Sets the chars that are searched for a matching counterpart. The format is a simple string with matching chars coupled in left-right order; here's an example: {}[]()"" . For double couples ("") the match is done only on the forwarding chars.

Name: insertMode
Class: InsertMode
Switch: -insertmode

Sets the default insert mode: insert or overwrite .

Name: ansiColor
Class: AnsiColor
Switch: -ansicolor

Enables or disables use of Tk::TextANSIColor module. This option was implemented by Jim Turner (THANKS for the support!)

DESCRIPTION

Tk::Text::SuperText implements many new features over the standard Tk::Text widget while supporting all its standard features. It's used simply as the Tk::Text widget. New Features:

  • Unlimited undo/redo.

    So you can undo and redo whatever you deleted/inserted whenever you want. To reset the undo and redo buffers call this method: $w->resetUndo;

  • Rectangular selections.

    Rectangular text zones can be selected, copied, deleted, shifted with the mouse or with the keyboard.

  • Selection right/left char and tab shift.

    Text selections can be shifted left/right of one or more chars or a tabs.

  • Normal and 'inline' selection paste.

    The 'normal' paste is the normal text paste you know:

    Paste Buffer:

    line x

    line y

    Text Buffer:

    line 1

    line2

    Normal paste at line 1:

    line x

    line y

    line 1

    line 2

    The 'inline' paste works like this:
    Inline paste at line 1:

    line x line 1

    line y line 2

  • Parentheses matching.

    To help you inspect nested parentheses, brackets, and other characters, SuperText has both an automatic parenthesis matching mode, and a find matching command. Automatic parenthesis matching is activated when you type or when you move the insertion cursor after a parenthesis. It momentarily highlights the matching character if that character is visible in the window. To find a matching character anywhere in the file, position the cursor after the it, and call the find matching command.

  • Auto-indenting.

    When you press the Return or Enter key, spaces and tabs are inserted to line up the insert point under the start of the previous line.

  • Control codes insertion.

    You can directly insert a non-printable control character in the text.

  • Commands are managed via virtual events.

    Every SuperText command is bound to a virtual event, so to call it or to bind it to a key sequence use the Tk::event functions. I used this format for key bind so there's no direct key-to-command bind, and this gives me more flexibility; however, you can use normal binds.

    Example: $w->eventAdd('Tk::Text::SuperText','<<SelectAll>>','<Control-a>');

    To set default event bindings use this method: $w->bindDefault;

  • Default key bindings are redefined (not really a feature :).

    Every virtual event has an associated public method with the same name of the event but with the first char in lower case (e.g.: <<MouseSelect>> event has a corresponding $super_text->mouseSelect method).

    Virtual Event/Command Default Key Binding
    MouseSetInsert <Button1>
    MouseSelect <B1-Motion>
    MouseSelectWord <Double-1>
    MouseSelectLine <Triple-1>
    MouseSelectAdd <Shift-1>
    MouseSelectAddWord <Double-Shift-1>
    MouseSelectAddLine <Triple-Shift-1>
    MouseSelectAutoScan <B1-Leave>
    MouseSelectAutoScanStop <B1-Enter>,<ButtonRelease-1>
    MouseMoveInsert <Alt-1>
    MouseRectSelection <Control-B1-Motion>
    MouseMovePageTo <2>
    MouseMovePage <B2-Motion>
    MousePasteSelection <ButtonRelease-2>
    MoveLeft <Left>
    SelectLeft <Shift-Left>
    SelectRectLeft <Shift-Alt-Left>
    MoveLeftWord <Control-Left>
    SelectLeftWord <Shift-Control-Left>
    MoveRight <Right>
    SelectRight <Shift-Right>
    SelectRectRight <Shift-Alt-Right>
    MoveRightWord <Control-Right>
    SelectRightWord <Shift-Control-Right>
    MoveUp <Up>
    SelectUp <Shift-Up>
    SelectRectUp <Shift-Alt-Up>
    MoveUpParagraph <Control-Up>
    SelectUpParagraph <Shift-Control-Up>
    MoveDown <Down>
    SelectDown <Shift-Down>
    SelectRectDown <Shift-Alt-Down>
    MoveDownParagraph <Control-Down>
    SelectDownParagraph <Shift-Control-Down>
    MoveLineStart <Home>
    SelectToLineStart <Shift-Home>
    MoveTextStart <Control-Home>
    SelectToTextStart <Shift-Control-Home>
    MoveLineEnd <End>
    SelectToLineEnd <Shift-End>
    MoveTextEnd <Control-End>
    SelectToTextEnd <Shift-Control-End>
    MovePageUp <Prior>
    SelectToPageUp <Shift-Prior>
    MovePageLeft <Control-Prior>
    MovePageDown <Next>
    SelectToPageDown <Shift-Next>
    MovePageRight <Control-Next>
    SetSelectionMark <Control-space>,<Select>
    SelectToMark <Shift-Control-space>,<Shift-Select>
    SelectAll <Control-a>
    SelectionShiftLeft <Control-comma>
    SelectionShiftLeftTab <Control-Alt-comma>
    SelectionShiftRight <Control-period>
    SelectionShiftRightTab <Control-Alt-period>
    Ins <Insert>
    Enter <Return>
    AutoIndentEnter <Control-Return>
    NoAutoindentEnter <Shift-Return>
    Del <Delete>
    BackSpace <BackSpace>
    DeleteToWordStart <Shift-BackSpace>
    DeleteToWordEnd <Shift-Delete>
    DeleteToLineStart <Alt-BackSpace>
    DeleteToLineEnd <Alt-Delete>
    DeleteWord <Control-BackSpace>
    DeleteLine <Control-Delete>
    InsertControlCode <Control-Escape>
    FocusNext <Control-Tab>
    FocusPrev <Shift-Control-Tab>
    FlashMatchingChar <Control-b>
    RemoveMatch <Control-B>
    FindMatchingChar <Control-j>
    JumpToMatchingChar <Control-J>
    Escape <Escape>
    Tab <Tab>
    LeftTab <Shift-Tab>
    Copy <Control-c>
    Cut <Control-x>
    Paste <Control-v>
    InlinePaste <Control-V>
    Undo <Control-z>
    Redo <Control-Z>
    Destroy <Destroy>
    MenuSelect <Alt-KeyPress>
  • Public methods.

    $widget->mouseSetInsert

    $widget->museSelect

    $widget->mouseSelectWord

    $widget->mouseSelectLine

    $widget->mouseSelectAdd

    $widget->mouseSelectAddWord

    $widget->mouseSelectAddLine

    $widget->mouseSelectAutoScan

    $widget->mouseSelectAutoScanStop

    $widget->mouseMoveInsert

    $widget->mouseRectSelection

    $widget->mouseMovePageTo

    $widget->mouseMovePage

    $widget->mousePasteSelection

    $widget->moveLeft

    $widget->selectLeft

    $widget->selectRectLeft

    $widget->moveLeftWord

    $widget->selectLeftWord

    $widget->moveRight

    $widget->selectRight

    $widget->selectRectRight

    $widget->moveRightWord

    $widget->selectRightWord

    $widget->moveUp

    $widget->selectUp

    $widget->selectRectUp

    $widget->moveUpParagraph

    $widget->selectUpParagraph

    $widget->moveDown

    $widget->selectDown

    $widget->selectRectDown

    $widget->moveDownParagraph

    $widget->selectDownParagraph

    $widget->moveLineStart

    $widget->selectToLineStart

    $widget->moveTextStart

    $widget->selectToTextStart

    $widget->moveLineEnd

    $widget->selectToLineEnd

    $widget->moveTextEnd

    $widget->selectToTextEnd

    $widget->movePageUp

    $widget->selectToPageUp

    $widget->movePageLeft

    $widget->movePageDown

    $widget->selectToPageDown

    $widget->movePageRight

    $widget->setSelectionMark

    $widget->selectToMark

    $widget->selectAll

    $widget->selectionShiftLeft

    $widget->selectionShiftLeftTab

    $widget->selectionShiftRight

    $widget->selectionShiftRightTab

    $widget->ins

    $widget->enter

    $widget->autoIndentEnter

    $widget-> noAutoindentEnter

    $widget->del

    $widget->backSpace

    $widget->deleteToWordStart

    $widget->deleteToWordEnd

    $widget->deleteToLineStart

    $widget->deleteToLineEnd

    $widget->deleteWord

    $widget->deleteLine

    $widget->insertControlCode

    $widget->focusNext

    $widget->focusPrev

    $widget->flashMatchingChar

    $widget->removeMatch

    $widget->findMatchingChar

    $widget->jumpToMatchingChar

    $widget->escape

    $widget->tab

    $widget->leftTab

    $widget->copy

    $widget->cut

    $widget->paste

    $widget->inlinePaste

    $widget->undo

    $widget->redo

    $widget->destroy

    $widget->menuSelect

AUTHOR

Current maintainer is Alexander Becker, asb@cpan.org.

Originally written by Alessandro Iob.

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Tk::Text Tk::ROText Tk::TextUndo

KEYWORDS

text, widget