Command: #action {message} {commands} {priority} The #action command can be used to respond with one or several commands to a specific message send by the server. The %1-%99 variables are substituted from the message and can be used in the command part of the action. If the message starts with a ~ color codes must be matched. You can enable #config {convert meta} on to display meta characters. For more information on pattern matching see the section on PCRE. Example: #action {%1 tells you '%2'} {tell %1 I'm afk.} Actions can be triggered by the #show command. If you don't want a #show to get triggered use: #line ignore #show {text} Actions are ordered alphabetically and only one action can trigger at a time. To change the order you can assign a priority, which defaults to 5, with a lower number indicating a higher priority. The priority can be a floating point number and should be between 1 and 9. To remove an action with %* as the message, use #unaction {%%*} or #unaction {\%*}. Alternatively you could wrap the action inside a class, and kill that class when you no longer need the action. Comment: You can remove an action with the #unaction command. Related: pcre, gag, highlight, prompt and substitute. Command: #alias {name} {commands} {priority} The #alias command can be used to shorten up long or oftenly used commands. The %1-99 variables are substituted from the arguments when using an alias and represent the 1st till 99th word which can be used in the commands part of the alias. If %0 is used it will contain all arguments. The priority part is optional and determines the priority of the alias, it defaults to 5. If no % variable is used in the commands section any argument will be appended to the end as if %0 was used. This feature might be removed in the future, and shouldn't be used. Example: #alias {k} {kill %1;kick} Typing 'k orc' would result in attacking the orc followed by a kick. You can create multi-word aliases by using variables in the name section. Example: #alias {k %1 with %2} {draw %2;attack %1;slash %1 with %2; kick at %2;strike %1 with %2} Using the above alias you could type k blue smurf with battle axe To have an alias that matches all user input, use %* as the name. Example: #alias {%*} {#show You wrote: %0} Aliases are ordered alphabetically and only one alias can trigger at a time. To change the order you can assign a priority, which defaults to 5, with a lower number indicating a higher priority. The priority can be a floating point number. To remove an alias with %* as the name, use #unalias {%%*} or #unalias {\%*}. Alternatively you can wrap the alias inside a class, and kill that class when you no longer need the alias. For more information on pattern matching see the section on PCRE. Comment: You can remove an alias with the #unalias command. Related: cursor, history, keypad, macro, speedwalk and tab. Command: #all {string} If you have multiple sessions in one terminal you can use #all to execute the command with all sessions, excluding the startup session. Example: #all quit Sends 'quit' to all sessions. Related: port, run, session, sessionname, snoop, ssl and zap. Command: #bell {flash|focus|margin|ring|volume} {argument} The #bell command without an argument will ring the terminal bell. Example: #action {Bubba tells you} {#bell} If you aren't watching the screen this could be useful if you don't want to miss out on a conversation with Bubba. Alternatively you can use #system to play a sound file. Some terminals will allow you to use VT100 Operating System Commands to change the terminal's bell behavior which can be used to flash the taskbar icon and or focus the window on receival of a bell. Example: #action {Bubba tells you} {#screen save title;#screen set title Tell!; #bell ring;#delay 10 #screen load title} The above example will save your window title, change the title to 'Tell!', ring the bell, next reset the window title after 10 seconds. It's possible to set the terminal to pop to the foreground upon ringing of the alarm bell. Example: #bell focus on;#bell ring;#bell focus off It's possible to adjust the alarm bell volume on some terminals. Example: #loop {1} {8} {cnt} {#line substitute variables #delay {$cnt} {#show Volume $cnt: #bell volume $cnt;#bell} Related: screen Command: #break The break command can be used inside the #else, #elseif, #if, #foreach, #loop, #parse, #switch, and #while statements. When #break is found, tintin will stop executing the statement it is currently in and move on to the next. Example: #while {1} {#math cnt $cnt + 1;#if {$cnt == 20} {#break}} Related: statements Command: #buffer {option} {argument} The buffer command has various options to manipulate your scrollback buffer. The size of the scrollback buffer can be configured using #config buffer_size . The size must be either 100, 1000, 10000, 100000 or 1000000 lines. While scrolling through the scrollback buffer incoming text is not displayed, this can be disabled using #config scroll_lock off. The scroll lock is automatically disabled when manual input is received, subsequently #buffer up and down only work properly when used in a macro or mouse event. #buffer {clear} {[lower bound]} {[upper bound]} Without an argument this will clear the entire scrollback buffer. Otherwise it will clear the given range. Positive numbers are measured from the start of the scrollback buffer, negative numbers from the end. #buffer {down} [lines] Moves your scrollback buffer down one page and displays the page. If a line number is provided it will scroll down the given number of lines. #buffer {end} Moves you to the end of your scrollback buffer and displays the page. Disables scroll lock mode. Most useful when used in a #macro. #buffer {find} {[number]} {} {[variable]} Moves the buffer to the given string which can contain a regular expression. Optionally you can provide the number of matches to skip, allowing you to jump further back in the buffer. A positive number searches from the start of the buffer, a negative number from the end. If you provide a variable the location will be stored and no jump takes place. #buffer {get} {} {} {[upper bound]} Allows you to store one or several lines from your scrollback buffer (including color codes) into a variable. The lower and upper bound must be between 1 and the size of the buffer. If the upper bound is omitted the given line is stored as a standard variable. If an upper bound is given the lines between the two bounds are stored as a list. Positive numbers are measured from the start of the scrollback buffer, negative numbers from the end. #buffer {home} Moves you to the top of your scrollback buffer and displays the page. Enables scroll lock mode. Most useful when used in a #macro. #buffer {info} {[save]} {[variable]} Display buffer info, optionally save the data to a variable. #buffer {jump} {} Moves the buffer to the given location. A positive number jumps from the start of the buffer, a negative number from the end. #buffer {lock} {on|off} Toggles the lock on the scrollback buffer. When locked, newly incoming text won't be displayed, any command will disable the lock, though several buffer commands will re-enable the lock. When unlocking it'll move you to the end of your scrollback buffer and display the page. #buffer {refresh} Marks the buffer as needing to be refreshed, only useful while in vertical split mode. #buffer {up} [lines] Moves your scrollback buffer up one page and displays the page. Enables scroll lock mode. Most useful when used in a #macro. You can use #buffer {up} {1} to move the scrollback buffer up 1 line. #buffer {write} {} Writes the scrollback buffer to the given file. Example: #macro {\e[F} {#buffer end} Related: echo, grep, macro, showme and screen. Command: #button {square} {commands} {priority} The #button command can be used to respond with one or several commands to a mouse click received within the specified square. The click coordinates are stored in %0-%3 and can be used in the command part of the button. The square part should exists of two coordinates defining the upper left and bottom right corner using row, col, row, col syntax. The square arguments should be separated by spaces, semi-colons or braces. By default the button is set to respond to a mouse button press, to respond to other button presses you must add a 5th argument to the square that defines the button press type. You can enable #info button on to see button events and their type as they happen. The priority part is optional and determines the priority of the button, it defaults to 5. You must enable #config {mouse tracking} on for buttons to work. This command draws no visible button, you'll have to do so separately if needed. Example: #button {1;1;2;2} {#show You clicked the upper left corner.} Buttons are ordered alphabetically and only one button can trigger at a time. To change the order you can assign a priority, which defaults to 5, with a lower number indicating a higher priority. The priority can be a floating point number. Comment: To see button clicks trigger use #info button on. Comment: You can remove a button with the #unbutton command. Related: delay, event and ticker. Command: #case {conditional} {arguments} The case command must be used within the #switch command. When the conditional argument of the case command matches the conditional argument of the switch command the body of the case is executed. When comparing strings both the switch and case arguments must be surrounded in quotes. Example: #function {reverse_direction} { #switch {"%1"} { #case {"north"} {#return south}; #case {"east"} {#return west}; #case {"south"} {#return north}; #case {"west"} {#return east}; #case {"up"} {#return down}; #case {"down"} {#return up} } } This function returns the reverse direction. @reverse_direction{north} would return south. Related: default, statements and switch. Command: #cat {variable} {argument} The cat command will concatenate the argument to the given variable. Related: format, function, local, math, replace, script and variable. The following special characters are defined: # The hashtag is the default character for starting a command and is subsequently known as the command character or tintin character. When loading a command file the command character is set to the first character in the file. The character can also be redefined using #config. ; The semi-colon is used as the command separator and can be used to separate two commands. Multiple commands can be strung together as well. Trailing semi-colons are ignored when reading a script file as this is a common error. { } Curly brackets aka braces are used for separating multi word command arguments, nesting commands, and nesting variables. Braces cannot easily be escaped and must always be used in pairs. " " Quote characters are used for strings in the #math, #if, #switch, and #case commands. It is however suggested to use a set of braces { } to define strings instead, particularly when checking strings that may contain quotes. ! The exclamation sign is used to repeat commands, see #help history. The character can be redefined using #config. \ An input line starting with a backslash is sent verbatim if you are connected to a server. This character can be configured with #config, and is itself sent verbatim when the verbatim config mode is enabled. Related: colors, escape_codes, function, mathematics, pcre and variable. Command: #chat {option} {argument} The #chat command is used to create peer to peer connections to other clients, typically for the purpose of chatting and sending files. This is a decentralized chat system, meaning you have to exchange ip addresses and port numbers with other users in order to connect to them. #chat {init} {port} #chat initialize launches your chat server. The port number is optional, and by default 4050 is used as your port. After using this command other people can connect to your chat server using your ip address and port number, and in turn you can connect to other people. #chat {name} {name} By default your name is set to TinTin, but most servers will reject you if there is already someone with the name TinTin connected, so one of the first things you'd want to do is change your chat name. Your name can include color codes. Some names aren't accepted by tt++ chat servers, like the name 'all' and names longer than 20 characters. #chat {message} {buddy|all} {text} This is the main command used for communication. If you use #chat message all, the message is marked as public and send to everyone you are connected to. #chat {accept} {buddy} {boost} Accept a file transfer from a buddy. The boost is optional and must be a value between 1 and 1000. #chat {call} {address} {port} #chat call is used to connect to another chat server. If you omit the port argument the default port (4050) is used. #chat {cancel} {buddy} Cancel a file transfer #chat {color} {color names} Set the default color #chat {decline} {buddy} Decline a file transfer #chat {dnd} Decline new connections #chat {download} {directory} Set your download directory #chat {emote} {buddy|all} {text} Send an emote message #chat {forward} {buddy} Forward all chat messages #chat {forwardall} {buddy} Forward all session output #chat {filestat} {buddy} Show file transfer data #chat {group} {buddy} {name} Assign a chat group #chat {ignore} {buddy} Ignores someone #chat {info} Displays your info #chat {ip} {address} Changes your IP address #chat {paste} {buddy|all} {text} Pastes a block of text #chat {peek} {buddy} Show one's public connections #chat {ping} {buddy} Display response time #chat {private} {buddy|all} Make a connection private #chat {public} {buddy|all} Make a connection public #chat {reply} {text} Reply to last private message #chat {request} {buddy} Request one's public connections #chat {send} {buddy|all} {text} Sends a raw data string #chat {sendfile} {buddy} {filename} Start a file transfer #chat {serve} {buddy} Forward all public chat messages #chat {uninitialize} Uninitialize the chat port. #chat {who} Show all connections #chat who shows all people you are connected to. The first column shows a reference number for the connection, which can be used instead of the connection's name when sending someone a message The second column shows the connection's name. The third column shows flags set for the connection, (P)rivate, (I)gnore, (S)erve, (F)orward to user, and (f)orward from user. The next columns show ip, port, and client name. #chat {zap} {buddy} Close a connection Related: port Command: #class {name} {option} {arg} The class command is primarily used to assign groups of triggers and variables a label so they can be easily removed. #class {} {assign} {} Will open the class, execute argument, and close afterwards. #class {} {clear} Will delete all triggers associated with the given class. #class {} {close} Close the given class, opening the last open class, if any. #class {} {kill} Will clear, close, and remove the class. #class {} {list} List all triggers associated with the given class. #class {} {load} Will load the saved copy of the class from memory. #class {} {open} Open a class, closing a previously opened class. All triggers added afterwards are assigned to this class. #class {} {read} { Will open the class, read the file, and close afterwards. #class {} {save} Will save all triggers of the given class to memory. #class {} {size} {} Will store the size of the class in a variable. #class {} {write} {} Will write all triggers of the given class to file. Keep in mind that you need to use #class save before using #class clear and #class load Example: #class rich kill;#class rich read poor.tin Deletes all triggers of 'rich' class if any. Read 'poor.tin' file, all triggers loaded will be assigned to the 'rich' class. Related: config, debug, ignore, info, kill, line and message. Syntax: with x, y, z being parameters Parameter 'x': VT100 code 0 - Reset all colors and codes to default 1 - Bold 2 - Dim 3 - Italic 4 - Underscore 5 - Blink 7 - Reverse 8 - Skip (use previous code) Parameter 'y': Foreground color Parameter 'z': Background color 0 - Black 5 - Magenta 1 - Red 6 - Cyan 2 - Green 7 - White 3 - Yellow 8 - Skip 4 - Blue 9 - Default For xterm 256 colors support use to for RGB foreground colors and to for RGB background colors. For the grayscale foreground colors use to , for grayscale background colors use to . The tertiary colors are as follows: - Azure - Jade - Violet - Lime - Pink - Orange Example: #show Azure Jade Violet Example: #show Lime Pink Orange For 12 bit truecolor use to for foreground colors and to for background colors. For 24 bit truecolor use to for foreground colors and to for background colors. If the color code exceeds your configured color mode it will be downgraded to the closest match. Related: characters, coordinates, escape_codes, mathematics and pcre. Command: #commands {abbreviation} Shows all commands, or all commands starting with the given abbreviation. Related: help, info and statements. Command: #config {option} {argument} This allows you to configure various settings, the settings can be written to file with the #write command. If you configure the global session (the one you see as you start up tintin) all sessions started will inherite these settings. It's advised to make a configuration file to read on startup if you do not like the default settings. Use #config without an argument to see your current configuration as well as a brief explanation of each config option. The following config options are not listed by default: #CONFIG {AUTO TAB} {NUMBER} Buffer lines used for tab completion #CONFIG {CHILD LOCK} {ON|OFF} Enable or disable command input. #CONFIG {CONNECT RETRY} {NUMBER} Seconds to try to connect on failure. #CONFIG {CONVERT META} {ON|OFF} Shows color codes and key bindings. #CONFIG {DEBUG TELNET} {ON|OFF} Shows telnet negotiations y/n. #CONFIG {HYBERNATE} {ON|OFF} Enable or disable low CPU usage mode. #CONFIG {LOG LEVEL} {LOW|HIGH} LOW logs server output before triggers. #CONFIG {INHERITANCE} {ON|OFF} Session trigger inheritance y/n. #CONFIG {MCCP} {ON|OFF} Enable or disable MCCP support. #CONFIG {RANDOM SEED} {NUMBER} Seed value used for random numbers. #CONFIG {TAB WIDTH} {NUMBER} Number of spaces used for a tab #CONFIG {TINTIN CHAR} {SYMBOL} Character used for TinTin++ commands. Related: class and line. Command: #continue The continue command can be used inside the #FOREACH, #LOOP, #PARSE, #WHILE and #SWITCH commands. When #CONTINUE is found, tintin will go to the end of the command and proceed as normal, which may be to reiterate the command. Example: #loop 1 10 cnt {#if {$cnt % 2 == 0} {#continue} {say $cnt}} Related: break, foreach, list, loop, parse, repeat, return and while. When the 0,0 coordinate is in the upper left corner TinTin++ uses a y,x / row,col notation, starting at 1,1. Subsequently -1,-1 will indicate the bottom right corner. This type of argument is used by the #showme command. When the 0,0 coordinate is in the bottom left corner tintin uses a standard x,y notation. This type of argument is used by the #map jump command. The vast majority of tintin commands use y,x / row,col notation, primarily because that is the notation used by the VT100 standard used for terminal emulation. Squares A square argument takes 2 coordinates. The first coordinate defines the upper left corner, the last coordinate defines the bottom right corner. The upper left corner of the terminal is defined as 1,1 and the bottom right corner as -1,-1. This type of argument is used by #draw, #button and #map offset. Panes A pane argument takes 4 size values, which are: top pane, bottom pane, left pane, right pane. When a negative value is provided the size is the maximum size, minus the value. This type of argument is used by the #split command. Ranges A range argument takes 2 values known as the upper bound and lower bound. The upper bound (first value) defines the start of the range, the lower bound (second value) the end. The first index of a range is defined as 1. When a negative value is provides the last index is defined as -1. This type of argument is used by #buffer and #variable. Related: characters, colors, escape_codes, mathematics and pcre. Command: #cr Sends a carriage return to the session. Useful for aliases that need extra carriage returns. This command is obsolete as you can accomplish the same using #send without an argument or #send {}. Related: forall Command: #cursor {option} {argument} Typing #cursor without an option will show all available cursor options, their default binding, and an explanation of their function. The cursor command's primarly goal is adding customizable input editing with macros. Subsequently many cursor commands only work properly when used within a macro or event. #cursor flag EOL end of line character(s) ECHO local echo OVERTYPE overtype mode #cursor macro PRESERVE do not erase the macro from the macro input buffer RESET erase the macro input buffer #cursor tab CASELESS makes tab completion caseless COMPLETE makes tab completion work while editing DICTIONARY performs tab completion on the dictionary LIST performs tab completion on the tab completion list SCROLLBACK performs tab completion on the scrollback buffer BACKWARD specifies tab completion to go backward FORWARD specifies tab completion to go forward Multiple options can/must be specified at once. Related: alias, history, keypad, macro, speedwalk and tab. Command: #daemon {attach|detach|kill|list} [name] #daemon provides functionality similar to that of the screen and tmux utilities. #daemon attach [name] The attach option will try to find a daemonized tintin instance and take over control. The name argument is optional. #daemon detach [name] The detach option will daemonize tintin, turning it into a background process. The name argument is optional and is useful if you have several daemonized tt++ instances running so you can keep them apart. #daemon kill [name] Kills all daemons or daemons with matching name. #daemon list [name] List all daemons or daemons with matching name. You can launch tintin and attach the first daemonized instance using tt++ -R. To attach a named instance use tt++ -R. Related: script, system and run. Command: #debug {listname} {on|off|log} Toggles a list on or off. With no argument it shows your current settings, as well as the list names that you can debug. If you for example set ACTIONS to ON you will get debug information whenever an action is triggered. #debug {listname} {log} will silently write debugging information to the log file, you must be logging in order for this to work. Not every list has debug support yet. Related: class, ignore, info, kill and message. Command: #default {commands} The default command can only be used within the switch command. When the conditional argument of non of the case commands matches the switch command's conditional statement the default command is executed. Related: case, default, else, elseif, if, switch and regexp. Command: #delay {seconds} {command} Command: #delay {name} {command} {seconds} Delay allows you to have tintin wait the given amount of seconds before executing the given command. Nanosecond floating point precision is allowed. Delays will fire in 0.01 second intervals. Named delays are treated as one-shot tickers, see #help tick. Example: #delay {1} {#show last};#show first This will print 'first', and 'last' around one second later. Comment: If you want to remove a delay with the #undelay command you can add a name as the first argument, be aware this changes the syntax. If the name is a number keep in mind that delays with the same numeric name will not be overwritten Related: event and ticker. Command: #draw [line color] [options] {text} The draw commands allows you to draw various types of lines and shapes on the screen. The types with a brief description are provided when you type #draw without an argument. The arguments should exists of two coordinates defining the upper left and bottom right corner using row, col, row, col syntax. The square arguments can be negative, in which case the coordinates are calculated from the opposite side of the screen. In the case the screen is 80 columns wide using #draw box 1 60 10 70 will be the equivalent of #draw box 1 -21 10 -11, but with different screen widths the boxes would be drawn in different places. You can prefix the option with a color code or color name to color the lines and shapes. You can further prefix the option as following: ASCII draw in ASCII mode. BALIGN bottom align text. BLANKED blank the lines and corners. BOTTOM draw on the bottom side if possible. BOXED draw a box along the square. BUMPED precede the draw with an enter. CALIGN center text. CIRCLED circle the corners. CONVERT draw text with meta conversion. CROSSED cross the corners. CURSIVE draw text with cursive letters. FAT draw text with fat letters. FILLED fill circles and jewels. FOREGROUND draw even if session is not active. GRID draw TABLE as a grid. HORIZONTAL draw horizontal if possible. HUGE draw text in huge letters. JEWELED diamond the corners. JOINTED draw corners. LALIGN left align text. LEFT draw on the left side if possible. NUMBERED draw numbers instead of lines. PRUNED prune the corners. RALIGN right align text. RIGHT draw on the right side if possible. ROUNDED round the corners. SANSSERIF draw text with sansserif letters. SCALED fit the square to the text size. SCROLL draw in the scrolling region. SHADOWED shadow HUGE text. TALIGN top align text too large to fit. TEED tee the corners. TOP draw on the top side if possible. TRACED trace HUGE text. TUBED draw tubes instead of lines. UALIGN unwrap and rewrap text. UNICODE draw in unicode mode. VERTICAL draw vertical if possible. The following types are available. [HORIZONTAL] BAR {;;[COLOR]} will draw a bar, use two 256 color codes for a color gradient. [ASCII|UNICODE|HUGE] BOX {[TEXT1]} {[TEXT2]} will draw a box. [BOXED|FOREGROUND] BUFFER will draw the scrollback buffer. [BLANKED|CIRCLED|CROSSED|JEWELED|ROUNDED|TEED|PRUNED] CORNER will draw a corner. [BLANKED|HORIZONTAL|NUMBERED|TUBED|VERTICAL] LINE {[TEXT]} will draw a line. [BOXED] MAP will draw the map RAIN {} {[SPAWN]} {[FADE]} {[LEGEND]} will draw digital rain. [JOINTED|TOP|LEFT|BOTTOM|RIGHT] SIDE will draw one or more sides of a box. [GRID] TABLE {[LIST1]} {[LIST2]} will draw a table. [CURSIVE|FAT|HUGE|SANSSERIF] TILE {[TEXT1]} {[TEXT2]} will draw a tile All draw types take an optional text argument as long as a valid square with enough space has been defined. Text is automatically word wrapped and text formatting can be customized with the CALIGN, LALIGN, RALIGN, and UALIGN options. Example: #draw Blue box 1 1 3 20 {Hello world!} Related: buffer, echo, grep and showme. Command: #echo {format} {argument1} {argument2} {etc} Echo command displays text on the screen with formatting options. See the help file for the format command for more information. The echo command does not trigger actions. As with the #show command you can split the {format} argument up into two braced arguments, in which case the 2nd argument is the row number. Example: #echo {The current date is %t.} {%Y-%m-%d %H:%M:%S} #echo {[%38s][%-38s]} {Hello World} {Hello World} #echo {{this is %s on the top row} {1}} {printed} Related: buffer, format, grep and showme. Command: #edit {option} [argument] The edit command can be used to turn the default line editor into a text editor. #edit create Create an editor, initialize using the provided arguments. #edit load Create an editor, initialize using the provided list variable. #edit read Create an editor, initialize using the provided file. #edit resume Resume editing after a suspension. #edit save Save the editor to the provided variable. #edit suspend Suspend editing, similar to pressing enter except that no events are triggered. #edit write } Terminates tintin and return to unix. On most systems, ctrl-c has the same result. The message is optional and is printed before tintin exits. When using #end {\} tintin will terminate silently. Related: zap You may use the escape character \ for various special characters. \a beep the terminal. \c send a control character, \ca for ctrl-a. \e start an escape sequence. \f send a form feed. \n send a line feed. \r send a carriage return. \t send a horizontal tab. \x print an 8 bit character using hexadecimal, \xFF for example. \x7B send the '{' character. \x7D send the '}' character. \u print a 16 bit unicode character, \uFFFD for example. \u{} print a 8-21 bit unicode character, \u{2AF21} for example. \U print a 21 bit unicode character, \U02AF21 for example. \v send a vertical tab Ending a line with \ will stop tintin from appending a line feed. To escape arguments in an alias or action use %%0 %%1 %%2 etc. Related: characters, colors, coordinates, mathematics and pcre. Command: #event {event type} {commands} Events allow you to create triggers for predetermined client events. Use #event without an argument to see a list of possible events with a brief description. Use #event %* to see the current list of defined events. Use #info {events} {on} to see events get thrown. Events, like triggers in general, are case sensitive and event names must be defined using all upper case letters. Only one event can be defined for each event type. To enable mouse events use #config mouse_tracking on, to see mouse events use #config mouse_tracking info. CATCH EVENTS CATCH Some events can be prefixed with CATCH to interrupt default behavior. CLASS EVENTS CLASS ACTIVATED [CLASS], CLASS_CLEAR [CLASS], CLASS CREATED [CLASS], CLASS DEACTIVATED [CLASS], CLASS DESTROYED [CLASS], CLASS_LOAD [CLASS] %0 class name GAG EVENTS GAG Some events can be prefixed with GAG to gag default system messages. INPUT EVENTS EDIT STARTED, EDIT FINISHED %0 name %1 lines %2 size %3 data HISTORY UPDATE %0 command RECEIVED KEYPRESS, PROCESSED KEYPRESS %0 character %1 unicode index %2 edit row %3 edit column RECEIVED INPUT [NAME] %0 raw text RECEIVED INPUT CHARACTER %0 character %1 unicode index %2 size %3 width NO SESSION ACTIVE %0 raw text %1 size SEND OUTPUT %0 raw text %1 size SENT OUTPUT %0 raw text %1 size MAP EVENTS END OF PATH, END OF RUN, MAP UPDATED VTMAP These events have no additional arguments. MAP CREATE EXIT, MAP DELETE EXIT %0 vnum %1 exit name %2 exit cmd %3 exit vnum MAP CREATE ROOM, MAP DELETE ROOM %0 vnum %1 name MAP ENTER MAP, MAP EXIT MAP %0 vnum MAP ENTER ROOM [VNUM] %0 new vnum %1 old vnum %2 direction MAP EXIT ROOM [VNUM] %0 old vnum %1 new vnum %2 direction MAP FOLLOW MAP %0 old vnum %1 new vnum %2 exit name MAP REGION , MAP ROOM %0 row %1 col %2 -row %3 -col %5 vnum %6 info MOUSE EVENTS DOUBLE-CLICKED %0 row %1 col %2 -row %3 -col %4 word %5 line LONG-CLICKED %0 row %1 col %2 -row %3 -col %4 word %5 line MOVED %0 row %1 col %2 -row %3 -col %4 word %5 line PRESSED %0 row %1 col %2 -row %3 -col %4 word %5 line SHORT-CLICKED %0 row %1 col %2 -row %3 -col %4 word %5 line RELEASED %0 row %1 col %2 -row %3 -col %4 word %5 line SCROLLED %0 row %1 col %2 -row %3 -col %4 word %5 line TRIPLE-CLICKED %0 row %1 col %2 -row %3 -col %4 word %5 line MAP Mouse events can be prefixed with MAP to only trigger when the mouse event occurs inside the VT100 map region. SWIPED [DIR] %0 dir %1 button %2 row %3 col %4 -row %5 -col %6 row %7 col %8 -row %9 -col %10 rows %11 cols OUTPUT EVENTS BUFFER UPDATE, DISPLAY UPDATE These events have no additional arguments. RECEIVED LINE %0 raw text %1 plain text RECEIVED OUTPUT %0 raw text %1 plain text RECEIVED PROMPT %0 raw text %1 plain text PORT EVENTS CHAT MESSAGE, PORT MESSAGE %0 raw text %1 plain text PORT CONNECTION %0 name %1 ip %2 port PORT DISCONNECTION %0 name %1 ip %2 port PORT LOG MESSAGE %0 name %1 ip %2 port %3 data %4 plain data PORT RECEIVED MESSAGE %0 name %1 ip %2 port %3 data %4 plain data SCAN EVENTS SCAN CSV HEADER %0 all args %1 arg1 %2 arg2 .. %99 arg99 SCAN CSV LINE %0 all args %1 arg1 %2 arg3 .. %99 arg99 SCAN TSV HEADER %0 all args %1 arg1 %2 arg3 .. %99 arg99 SCAN TSV LINE %0 all args %1 arg1 %2 arg3 .. %99 arg99 SCREEN EVENTS SCREEN DIMENSIONS %0 height %1 width SCREEN FOCUS %0 focus (0 or 1) SCREEN LOCATION %0 rows %1 cols %2 height %3 width SCREEN MOUSE LOCATION %0 row %1 col %2 -row %3 -col %4 pix row %5 pix col %6 -pix row %7 -pix col %8 location SCREEN RESIZE %0 rows %1 cols %2 height %3 width SCREEN SIZE %0 rows %1 cols SCREEN SPLIT %0 top row %1 top col %2 bot row %3 bot col SCREEN UNSPLIT %0 top row %1 top col %2 bot row %3 bot col SESSION EVENTS SESSION ACTIVATED %0 name SESSION CONNECTED %0 name %1 host %2 ip %3 port %4 file SESSION CREATED %0 name %1 host %2 ip %3 port %4 file SESSION DEACTIVATED %0 name SESSION DISCONNECTED %0 name %1 host %2 ip %3 port SESSION TIMED OUT %0 name %1 host %2 ip %3 port SYSTEM EVENTS DAEMON ATTACH TIMEOUT %0 file %1 pid DAEMON ATTACHED %0 file %1 pid DAEMON DETACHED %0 file %1 pid PROGRAM START %0 startup arguments PROGRAM TERMINATION %0 goodbye message READ ERROR %0 filename %1 error message READ FILE %0 filename WRITE ERROR %0 filename %1 error message WRITE FILE %0 filename SYSTEM CRASH %0 message SYSTEM ERROR %0 name %1 system msg %2 error %3 error msg UNKNOWN COMMAND %0 raw text SIGUSR %0 signal TELNET EVENTS IAC IAC TELNET events are made visible using #config telnet info. IAC SB GMCP %0 module %1 data %2 plain data IAC SB GMCP %1 data %2 plain data IAC SB MSSP %0 variable %1 data IAC SB MSDP %0 variable %1 data %2 plain data IAC SB MSDP [VAR] %0 variable %1 data %2 plain data IAC SB NEW-ENVIRON %0 variable %1 data %2 plain data IAC SB ZMP %0 variable %1 data IAC SB %0 variable %1 raw data %2 plain data TIME EVENTS DATE [HOUR:MINUTE], DAY [DAY OF MONTH], HOUR [HOUR], MONTH [DAY OF MONTH], TIME [:SECOND], WEEK [DAY OF WEEK], YEAR [YEAR] %0 year %1 month %2 day of week %3 day of month %4 hour %5 minute %6 second VARIABLE EVENTS VARIABLE UPDATE %0 name %1 new value %2 path VARIABLE UPDATED %0 name %1 new value %2 path VT100 EVENTS VT100 SCROLL REGION %0 top row %1 bot row %2 rows %3 cols %4 wrap To see all events trigger use #info event on. Since this can get rather spammy it's possible to gag event info messages. Example: #event {SESSION CONNECTED} {#read mychar.tin} Comment: You can remove an event with the #unevent command. Related: button, delay and ticker. Command: #foreach {list} {variable} {commands} For each item in the provided list the foreach statement will update the given variable and execute the command part of the statement. List elements must be separated by braces or semicolons. Example: #foreach {bob;tim;kim} {name} {tell $name Hello} Example: #foreach {{bob}{tim}{kim}} {name} {tell $name Hello} Related: break, continue, list, loop, parse, repeat, return and while. Command: #format {variable} {format} {argument1} {argument2} {etc} Allows you to store a string into a variable in the exact same way C's sprintf works with a few enhancements and limitations like a maximum of 30 arguments. If you use #format inside an alias or action you must escape %1s as %+1s or %%1s or %\1s so the %1 isn't substituted by the trigger. #format {test} {%+9s} {string} pad string with up to 9 spaces #format {test} {%-9s} {string} post pad string with up to 9 spaces #format {test} {%.8s} {string} copy at most 8 characters #format {test} {%a} {number} print corresponding charset character #format {test} {%c} {string} use a highlight color name #format {test} {%d} {number} print a number with integer formatting #format {test} {%f} {string} perform floating point math #format {test} {%g} {number} perform thousand grouping on {number} #format {test} {%h} {string} turn text into a header line #format {test} {%l} {string} lowercase text #format {test} {%m} {string} perform mathematical calculation #format {test} {%n} {name} capitalize the first letter #format {test} {%p} {string} strip leading and trailing spaces #format {test} {%r} {string} reverse text, hiya = ayih #format {test} {%s} {string} print given string #format {test} {%t} {format} display time with strftime format optional {{format}{time}} syntax #format {test} {%u} {string} uppercase text #format {list} {%w} {string} store word wrapped text in {list} optional {{string}{width}} syntax #format {test} {%x} {hex} print corresponding charset character #format {test} {%A} {char} store corresponding character value #format {test} {%D} {hex} convert hex to decimal in {test} #format {hash} {%H} {string} store a 64 bit string hash in {hash} #format {test} {%L} {string} store the string length in {test} #format {test} {%M} {number} convert number to metric in {test} #format {test} {%S} {string} store the number of spelling errors #format {time} {%T} {} store the epoch time in {time} #format {time} {%U} {} store the micro epoch time in {time} #format {test} {%X} {dec} convert dec to hexadecimal in {test} #format {test} {%%} a literal % character Comment: See #help TIME for help on the %t argument. Related: cat, echo, function, local, math, replace, script, time and variable. Command: #function {name} {operation} Functions allow you to execute a script within a line of text, and replace the function call with the line of text generated by the function. Be aware that each function should use the #return command at the end of the function with the result, or set the {result} variable. To use a function use the @ character before the function name. The function arguments should be placed between braces behind the function name with argument separated by semicolons. Functions can be escaped by adding additional @ signs. Example: #function test #return 42;#showme @@test{} The function itself can use the provided arguments which are stored in %1 to %99, with %0 holding all arguments. Example: #function {rnd} {#math {result} {1 d (%2 - %1 + 1) + %1 - 1}} #show A random number between 100 and 200: @rnd{100;200} Example: #function gettime {#format result %t %H:%M} #show The current time is @gettime{} Comment: You can remove a function with the #unfunction command. Related: format, local, math, replace, script and variable. Command: #gag {string} Removes any line that contains the string. Comment: See '#help action', for more information about triggers. There are a system messages that can be gagged using gag events. Comment: You can remove a gag with the #ungag command. Related: action, highlight, prompt and substitute. #################################################################### # # # T I N T I N + + 2.02.31b # # # # Code by Peter Unold, Bill Reis, and Igor van den Hoven # # # #################################################################### Command: #grep [page] {search string} This command allows you to search for matching lines in your scroll back buffer. The amount of matches shown equals your screen size. If you want to search back further use the optional page number. You can use wildcards for better search results. Be aware the search string is case sensitive, which can be disabled by using %i. By default grep searches from the end of the scrollback buffer to the beginning, this can be reversed by using a negative page number. Example: #grep Bubba tells you This will show all occasions where bubba tells you something. Related: buffer, echo and showme. Command: #help {subject} Without an argument #help will list all available help subjects. Using #help %* will display all help entries. Related: commands, debug, ignore, info, message and statements. Command: #highlight {string} {color names} {priority} The highlight command is used to change the color of incoming text. Available color options are: reset - resets the color state to default light - turns the color light. dark - turns the color dark. underscore - underscores the text. blink - makes the text blink. reverse - reverse foreground and background color. b - makes next color the background color. Available color names are: - azure - Azure - blue - Blue - cyan - Cyan - ebony - Ebony - green - Green - jade - Jade - lime - Lime - magenta - Magenta - orange - Orange - pink - Pink - red - Red - silver - Silver - tan - Tan - violet - Violet - white - White - yellow - Yellow Colors can be provided as either a color code or one of the valid color names. If the color name is in all lower case a dark color is printed. If the first letter of the color name is capitalized a light color is printed. The %1-99 variables can be used as 'wildcards' that will match with any text. They are useful for highlighting a complete line. The %0 variable should never be used in highlights. You may start the string to highlight with a ^ to only highlight text if it begins the line. Besides color names also color codes can be used. Example: #high {Valgar} {reverse underscore Jade} Prints every occurrence of 'Valgar' in underscored reverse video Jade. Example: #high {^You{|r} %1} {light cyan} Prints every line that starts with 'You' in light cyan. Example: #high {Bubba} {red underscore b Green} Highlights the name Bubba as red underscored text on green background. Comment: See '#help action', for more information about triggers. Comment: See '#help substitute', for more advanced color substitution. Comment: This command only works with ANSI/VT100 terminals or emulators. Comment: You can remove a highlight with the #unhighlight command. Related: action, gag, prompt and substitute. Command: #history {delete} Delete the last command. #history {insert} {command} Insert a command. #history {list} Display the entire command history. #history {read} {filename} Read a command history from file. #history {write} {filename} Write a command history to file. Without an argument all available options are shown. By default all commands are saved to the history list and the history list is saved between sessions in the ~/.tintin/history.txt file. You can set the character to repeat a command in the history with the #config {REPEAT CHAR} {} configuration option, by default this is set to the exclamation mark. You can use ! by itself to repeat the last command, or ! to repeat the last command starting with the given text. You can use #config {REPEAT ENTER} {ON} to repeat the last command when you press enter on an empty line. You can press ctrl-r to enter an interactive regex enabled history search mode, or by issuing #cursor {history search}. TinTin++ tries to bind the arrow up and down keys to scroll through the history list by default. You can bind these with a macro yourself using #cursor {history next} and #cursor {history prev}. Many #cursor commands only work properly when bound with a macro. Related: alias, cursor, keypad, macro, speedwalk and tab. Command: #if {conditional} {commands if true} The #if command works similar to an if statement in other languages, and is based on the way C handles its conditional statements. When an #if command is encountered, the conditional statement is evaluated, and if TRUE (any non-zero result) the commands are executed. The conditional is evaluated exactly the same as in the #math command, if the conditional evaluates as anything except 0 the commands are executed. See the 'math' helpfile for more information. To handle the case where an if statement is false it can be followed by the #else command. Example: #action {%0 gives you %1 gold coins.} {#if {%1 > 5000} {thank %0}} If someone gives you more than 5000 coins, thank them. Example: #alias {k} {#if {"%0" == ""} {kill $target};#else {kill %0}} Related: case, default, else, elseif, math, switch and regexp. Command: #ignore {listname} {on|off} Toggles a list on or off. With no arguments it shows your current settings, as well as the list names that you can ignore. If you for example use #IGNORE ACTIONS ON actions will no longer triger. Not every list can be ignored. Related: class, debug, info, kill and message. ████████┐██████┐███┐ ██┐████████┐██████┐███┐ ██┐ └──██┌──┘└─██┌─┘████┐ ██│└──██┌──┘└─██┌─┘████┐ ██│ ██│ ██│ ██┌██┐ ██│ ██│ ██│ ██┌██┐ ██│ ██│ ██│ ██│└██┐██│ ██│ ██│ ██│└██┐██│ ██│ ██████┐██│ └████│ ██│ ██████┐██│ └████│ └─┘ └─────┘└─┘ └───┘ └─┘ └─────┘└─┘ └───┘ ██┐ ██┐ ██│ ██│ ████████┐████████┐ └──██┌──┘└──██┌──┘ ██│ ██│ └─┘ └─┘ (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t What is TinTin++? TinTin++ is a client program specialized to help playing muds. This is a souped up version of TINTIN III with many new features. Giving Credit Where Credit is Due None of this work would be possible, without the work done by Peter Unold. He was the author of TINTIN III, the base of TinTin++. Hats off to ya Peter. You started the ball rolling. Introduction If you're new to TinTin++ a good place to start is the introduction, which should be linked below. Related: introduction Command: #info {listname} {LIST|ON|OFF|SAVE} Without an argument info displays the settings of every tintin list. By providing the name of a list and the LIST option it shows all triggers/variables associated with that list. With the SAVE option this data is written to the info variable. #info arguments will show matched trigger arguments. #info big5toutf will show the big5 to utf8 translation table. #info cpu will show information about tintin's cpu usage. #info environ will show the environment variables. #info input will show information about the input line. #info matches will show matched command arguments. #info mccp will show information about data compression. #info memory will show information about the memory stack. #info stack will show the low level debugging stack. #info session will show information on the session. #info sessions will show information on all sessions. #info system will show some system information. #info tokenizer will show information about the script stack. #info unicode will show information on the provided character. Related: class, debug, ignore, kill and message. On this page you'll find an introduction to using TinTin++. Additional information can be found in the individual help sections. Starting and Ending The syntax for starting TinTin++ is: ./tt++ [command file] Read more about the command file in the files section below. Remember one thing though. All actions, aliases, substitutions, etc, defined when starting up TinTin++ are inherited by all sessions. If you want to exit TinTin++ type '#end' or press ctrl-d on an empty line. For the WinTin++ users, if you want to paste text use shift-insert, text is automatically copied upon selection. This is typical Linux behavior, but it can take some getting used to. Basic features I'll start by explaining some of the very basic and important features: All TinTin++ commands starts with a '#'. Example: #help -- #help is a client command, and isn't send to the server. All TinTin++ commands can be abbreviated when typed. #he -- Typing #he is the same as typing #help though it's suggested to use at least 3 letter abbreviations just in case another command is added that starts with 'he'. All commands can be separated with a ';'. n;l dragon;s;say Dan Dare is back! -- do these 4 commands There are 3 ways ';'s can be overruled. \say Hello ;) -- Lines starting with a '\' aren't parsed by TinTin++. say Hello \;) -- The escape character can escape 1 letter. #config verbatim on -- Everything is sent as is except '#' commands. Connecting to a server Command: #session {session name} {server address} {port} Example: #session someone tintin.sourceforge.net 4321 You can have more than one session, in which case you can switch between sessions typing #. You can get a list of all sessions by typing: #session. The current active session is marked with (active). Snooped sessions with (snooped). MCCP sessions (compression) with (mccp 2) and (mccp 3). Split Command: #split The split command will create a separated input and output area. Using the #prompt command you can capture the prompt and place it on the split line. To get rid of the split interface you can use #unsplit which will restore the terminal settings to default. Alias Command: #alias {name} {commands} The syntax of the #alias command is almost like alias in csh. Use this command to define aliases. The variables %0, %1.. %9 contain the arguments to the aliased command as follows: the %0 variable contains all the arguments. the %1 variable contains the 1st argument .... the %9 variable contains the 9th argument Example: #alias greet say Greetings, most honorable %1 If you want an alias to execute more commands, you must use braces. Example: #alias ws {wake;stand} To delete an alias use the #unalias command. WARNING! TinTin++ doesn't baby sit, and hence does not check for recursive aliases! You can avoid recursion by escaping the entire line. Example: #alias put \put %1 in %2 Or by using the send command. Example: #alias put #send put %1 in %2 Action Command: #action {action-text} {commands} Use this command to define an action to take place when a particular text appears on your screen. There are 99 variables you can use as wildcards in the action-text. These variables are %1, %2, %3 .... %9, %10, %11 ... %97, %98, %99. Example: #action {You are hungry} {get bread bag;eat bread} Example: #action {%1 has arrived.} shake %1 -- shake hands with people arriving. Example: #action {%1 tells you '%2'} {tell bob %1 told me '%2'} -- forward tells. Example: #action {tells you} #bell -- beep on tell. You can have TinTin++ ignore actions if you type '#ignore actions on'. You can see what commands TinTin++ executes when an action triggers by typing '#debug actions on'. You can remove actions with the #unaction command. Command files When you order TinTin++ to read a command file, it parses all the text in the file. You can use command files to keep aliases/actions in, login to a server (name, password etc..) and basically all kinds of commands. You can make the command files with either a text editor (suggested), or use the #write command to write out a file. Commands for files: #read filename -- read and execute the file. #write filename -- write all actions/aliases/substitutes/etc known for the current session to a file. Example: #session x mymud.com 1234 myname mypassword #split #action {^You are hungry.} {eat bread} If you save the above five lines to a file named 'mymud.tin' you can use 'tt++ mymud.tin' to start tintin and execute the file, connecting you to your mud, logging in, enabling split mode, and setting an action to eat a bread whenever you go hungry. Highlight Command: #highlight {text} {color} This command works a bit like #action. The purpose of this command is to substitute text from the server with color you provide. This command is a simplified version of the #substitute command. Example: #high {Snowy} {light yellow} Example: #high {%*Snowy%*} {light yellow} Use #unhigh to delete highlights. Speedwalk If you type a command consisting ONLY of letters and numbers n, e, s, w, u, d - then this command can be interpreted as a serie of movement commands. Example: ssw2n -- go south, south, west, north, north If you have problems with typing some commands that actually ONLY consists of these letters, then type them in CAPS. For example when checking the NEWS or when asked to enter NEW as your name. You must enable speedwalking with: #config speedwalk on. Ticker Command: #ticker {name} {commands} {seconds} The name can be whatever you want it to be, and is only required for the unticker command. The commands will be executed every x amount of seconds, which is specified in the interval part. Example: #tick {tick} {#delay 50 #show 10 SECONDS TO TICK!;#show TICK!!!} {60} This creates a ticker with the name {tick} which will print TICK!!!, as well as print a warning when the next tick will occure. You can remove tickers with #untick Repeating Commands You can repeat a command, the syntax is: #number command Example: #5 cackle -- if you just killed bob the wizard. Example: #10 {buy bread;put bread bag} -- repeat these 2 commands 10 times. Example: #100 ooc w00t w00t!!!!! -- nochannel yourself. History TinTin++ has a limited subset of the csh history features. ! -- repeat the last command !cast -- repeat the last command starting with cast ctrl-r -- enter the reverse history search mode. Map commands TinTin++ has a powerful highly configurable automapper. Whenever you type n/ne/e/se/s/sw/w/nw/n/u/d tt++ tries to keep track of your movement. Commands for map: #map create -- create a map. #map goto 1 -- go to the first room in the map, created by default. #map map -- display the map. #map undo -- undo your last map alteration. #map write -- save the map to file. #map read -- load a map from file. There are many other map options and it's beyond the scope of this help section to explain everything there is to know, but I'll give a set of commands that will get most people started. #map create #split 12 1 #map flag unicode on #map flag vt on #map goto 1 These commands will create a 12 row vt100 split section at the top of your screen where a map drawn using unicode characters is displayed. Example: #action {There is no exit in that direction.} {#map undo} The map will be automatically created as you move around. Help Command: #help {subject} The help command is your friend and contains the same helpfiles inside TinTin++ as are available on the website. If you type #help without an argument you will see the various available help subjects which try to explain the TinTin++ commands and features in greater detail. Entries in cyan describe commands, while entries in white describe various features, often in greater detail. That's all for the introduction, enjoy Related: characters, colors, coordinates, editing, escape_codes, greeting, keypad, lists, mapping, mathematics, screen_reader, sessionname, speedwalk, statements, suspend and time. When TinTin++ starts up it sends \e= to the terminal to enable the terminal's application keypad mode, which can be disabled using #show {\e>} Configuration A Configuration B Configuration C ╭─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────╮ │num │/ │* │- │ │num │/ │* │- │ │Num │nkp/ │nkp* │nkp- │ ├─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┤ │7 │8 │9 │+ │ │Home │Up │PgUp │+ │ │nkp7 │nkp8 │nkp9 │nkp+ │ ├─────┼─────┼─────┤ │ ├─────┼─────┼─────┤ │ ├─────┼─────┼─────┤ │ │4 │5 │6 │ │ │Left │Cntr │Right│ │ │nkp4 │nkp5 │nkp6 │ │ ├─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┤ │1 │2 │3 │Enter│ │End │Down │PgDn │Enter│ │nkp1 │nkp2 │nkp3 │nkpEn│ ├─────┴─────┼─────┤ │ ├─────┴─────┼─────┤ │ ├─────┴─────┼─────┤ │ │0 │. │ │ │Ins │Del │ │ │nkp0 │nkp. │ │ ╰───────────┴─────┴─────╯ ╰───────────┴─────┴─────╯ ╰───────────┴─────┴─────╯ With keypad mode disabled numlock on will give you configuration A, and numlock off will give you configuration B. With keypad mode enabled you'll get configuration C. Terminals that support keypad mode Linux Console, PuTTY, MinTTY, Eterm, aterm. Terminals that do not support keypad mode RXVT on Cygwin, Windows Console, Gnome Terminal, Konsole. Peculiar Terminals RXVT requires turning off numlock to enable configuration C. Xterm may require disabling Alt/NumLock Modifiers (num-lock) in the ctrl left-click menu. Or edit ~/.Xresources and add XTerm*VT100.numLock:false Mac OS X Terminal requires enabling 'strict vt100 keypad behavior' in Terminal -> Window Settings -> Emulation. Related: colors, coordinates, escape_codes, mathematics and pcre. Command: #kill {list} {pattern} Without an argument, the kill command clears all lists. Useful if you don't want to exit tintin to reload your command files. With one argument a specific list can be cleared. With two arguments the triggers in the chosen list that match the given pattern will be removed. Example: #kill alias %*test* Related: class, debug, ignore, info and message. Command: #line {option} {argument} Line options that alter the argument. #line json The variable is translated to json and the argument is executed with &0 holding the json data. #line strip Argument is executed with all color codes stripped. #line substitute Argument is executed using the provided substitutions, available options are: arguments, braces, colors, escapes, functions, secure, and variables. Line options that alter how the line is executed. #line background Prevent new session activation. #line capture . #line convert Argument is executed with escaped meta characters. #line debug Argument is executed in debug mode. #line gag [amount] Gag the next line, or given lines. Use + or - to increase or decrease the current amount. #line ignore {argument} Argument is executed without any triggers being checked. #line local {argument} Argument is executed with all newly and indirectly created variables being local. #line log [text] Log the next line to file unless the [text] argument is provided. #line logmode