tf-50b8/0000755000175000001440000000000010552504072011210 5ustar kkeysuserstf-50b8/CHANGES0000644000175000001440000026547710552504025012226 0ustar kkeysusersOnly the most recent version will have detailed changes described. Some fixes are followed by the version in which the problem first appeared. 5.0 --- If you have not yet read all changes since 4.0 stable 1, please do now. (read the CHANGES file directly, or type "/changes 5.0" in tf.) If you have custom code to do any of the following in older versions, you'll probably want to get rid of it or redesign it, since it is now superceded by standard features: key bindings; text redraw (after world switch, or resuming from sh or suspend); scrollback; status line customizations; ... 5.0 beta 8 (2007-01-14) ---------- Added %max_hook to prevent infinite hook loops. Added gethostname(). Added missing documentation for new "E" and "W" attributes. (50b7) Added "inline" flag to decode_attr(). Added -a and -p options to /prompt. Output of "/load testcolor.tf" now includes labels with r,g,b values. May create a debugging log if tf crashes. When invoked as a login shell, suspend is ignored, instead of hanging parent (workaround for sshd, which does not correctly set TSTP signal handler). Fixed: after a resize with visual=off, the screen was not redrawn. (50b7) Fixed: after a resize with visual=off, an immediate backspace or other input deletion would crash tf: "Internal error: output.c, line 2501". (50b7) Fixed: server display attributes could be lost if they had wrapped from a previous line and were followed by more attributes. Fixed: /filter changed the idea of the virtual bottom line, so a subsequent /unfilter redrew from the new incorrect bottom, and a subsequent /filter used the new incorrect bottom as a starting point for applying a new filter (resulting in a spurious "no lines match criteria" if the only matching lines are between the correct and incorrect bottoms). Fixed potential crashes in calling functions with invalid arguments: strrep(), status_fields(). Fixed: on servers with terminated (GOAHEAD or EOR) prompts, tf could lose the first part of a server line in the rare condition of tf sending a line between receiving the first and second parts of the server line. Fixed: non-time decimal values greater than 60 were sometimes formatted as time values. (50b7) Fixed fatal bug in moresize() on a world that has never been /connect'ed. Fixed infinite loop when replace() is called with empty first argument. Fixed: with visual=off, /dokey flush (^[j) did not clear the more prompt. Fixed: /recordline ignored -a option if -p was not also given. Fixed fatal bug on some systems in /listsockets when there are connectionless sockets open. Fixed: various bad things could happen if a trigger attempted to apply a partial hilite to a line longer than 32767 characters. Fixed bugs on 64-bit platforms: /fg -c (Debian bug #327448), some variable assignments Fixed: some cases of hostname resolution failure could cause a crash More robust TELNET protocol handling reduces problems on noncompliant servers: Ignores option subnegotiation if option has not been agreed on. If IAC SB (0xff 0xfa) is received before any other telnet command, the server is treated as a non-telnet server. Upgraded configure.in to autoconf 2.59 (should affect developers only) 5.0 beta 7 (2005-04-17) ---------- Colors: Added 16-color names: "gray", "brightred"..."brightwhite". Added 256-color names: "rgb000"..."rgb555" and "gray0"..."gray23". Added predefined codes for xterm 256-color extension. Functions decode_ansi() and encode_ansi() work with xterm 256-color extension codes. Added "/feature 256colors". Added "/load testcolor.tf" to test color functionality and appearance. Added "E" and "W" attributes, with corresponding defintions in %error_attr and %warning_attr. Added encode_ansi() to generate a string with attribute control codes. Added test() for backward compatiblity with version 4.0. Added strcmpattr(), like strcmp() but also compares display attributes. In commands that match macros (/list, /purge, /save), a color attribute will match only the same color attribute, not just any color attribute. /list, /listvar, /listworlds, and /listsockets can sort their results. Added -n option to /listsockets to print host and port in numeric form. %Pn, %L, and %R subs are now case sensitive, to reduce collisions with regular variables. /prompt preserves embedded display attributes in its argument. CONNECT hook includes SSL cipher name. Added -f (foreground) and -b (background) options to /world; documented -x (SSL) option. Uses system's copy of libpcre if possible. Redefinition of macros or keybindings does not invoke the REDEF hook if the new and old defintions are identical (so file reloading is less noisy). If you used to gag REDEF to reduce noise, you may want to ungag it now that it is less noisy and more informative. Status bar changes: Status bar can be multiple rows, determined by %status_height. /status_{add,edit,rm} commands take an -r option to specify which row. Added status_fields() to get fields of . Added /status_defaults to restore default status bar fields; use of %status_field_defaults is deprecated. Added "/status_save " and "/status_restore " to save and restore a named set of status fields. The variable width field may be right-justified by giving it width "-0". Fixed: /status_edit did not work on a variable-width field. Fixed: "/status_add -x name:width:attr" failed to detect existing field with name if its width or attr were different. Fixed: status_attr_{int,var}_* variables sometimes had no effect. (50b5) Fixed: any attempt to set %status_pad in .tfrc failed if %visual had not yet been explicitly set (also, in a RESIZE hook caused by a terminal resize while in /suspend or /sh, but that's much less common). (50a13) Other screen display changes: Changing %wrappunct immediately rewraps everything on screen. Eliminated extra screen redraw when the terminal is resized. Fixed: under some conditions, rewrapping screen could cause entire scrollback buffer to be redrawn, instead of just a screenful. (If %more was on, this acted like a jump to the beginning of the buffer.) Fixed: did not send new terminal size to server after resizing the terminal in nonvisual mode. Workaround for a window resize bug in Konsole. Keyboard changes: Workaround for incomplete linux console terminfo entry which was preventing %keypad from working. Added friendlier message for using undefined named keys. Improved documentation for numeric keypad, including instructions for using it with some specific terminal emulators. (See "/help keypad".) Added missing names for numeric keypad keys: key_nkpTab key_nkpEnt key_nkp* key_nkp+ key_nkp, key_nkp- key_nkp. key_nkp/ key_nkp= Added default keybindings for shift-tab, sun function keys, and vt220 function keys F13 - F20. Fixed incorrect keybindings for bottom two rows of numeric keypad in some environments. Installation changes: ./configure now honors options --exec-prefix, --bindir, --datadir, --program-prefix, --program-suffix, and --program-transform-name. ./configure --enable-version does not automatically --enable-symlink. Installation directory for tf-lib now defaults to PREFIX/share instead of PREFIX/lib (configurable with --datadir). Fixed ./configure --enable-mailcheck=DIR. ftime() now returns an empty string instead of an incorrect string if the time is out of range (in addition to printing an error message). Time period values of 60s or larger are printed in h:mm[:ss.u] format. This applies to %alert_time, %maildelay, %prompt_wait, %ptime, idle(), sidle(), and values derived from them (but not time() and mktime(), which are absolute time values). The CONFAIL and CONNETFAIL hooks did not previously behave as documented. The CONNETFAIL hook has been removed; the new ICONFAIL hook is called for a connection failure if there are more possible addresses to try, and the CONFAIL hook is called for a connection failure on the last address. (If you had worked around the buggy behavior by duplicating CONFAIL and CONNETFAIL hooks, you will probably want to go back to using the CONFAIL hook only.) Improved error checking for /repeat arguments. Fixed inappropriate expansion of command lines (outside of macros) starting with /let, /set, /setenv, /test, /result, /return. Fixed spurious error for "/break" without arguments at end of macro body. Fixed: a macro with no other statements outside of an "/if (expr)" statement was incorrectly treated as an error, causing any macro that called it to abort. Fixed: "/set var " (with trailing space) was setting var to blank instead of printing its value. /listworlds and /listsockets ignore trailing space. Fixed: /runtime incorrectly evaluated its return value. Fixed: new -= operator added instead of subtracted. Fixed crash if left side of new += -= *= /= operators was not assignable. Fixed crash in strip_attr(). (50b5) Fixed crash in /list -P. Fixed class of crashes involving certain generated empty strings in macros: - attribute strings in echo(), substitute(), and decode_attr() - macro names - expression operands - etc. Fixed bug in binding local address on some systems. Will not crash if a bug in tf or library code supplies an invalid string in an error message. Strengthened check for TERMCAP corruption by broken *csh. Fixed moresize() and morepaused() with virtscreen=off (undocumented). 5.0 beta 6 (2004-08-04) ---------- Fixed: lines with "A" attribute were not ignored as they should have been by activity_status.tf and world-q.tf. (50b5) Fixed crashes and other problems caused by prompts in expnonvis mode. (50b5) Fixed crash on SSL error. (50b5) Fixed spurious error message when an SSL server closes its connection. 5.0 beta 5 (2004-07-26) ---------- Added an experimental side-scrolling variant of non-visual mode; see "/help expnonvis". /quit prompts for confirmation only if there are sockets with unseen text. savehist.tf (undocumented) preserves attributes when saving and loading histories. Added %secho to echo lines sent to server. Added %{k,m,q,s}echo_attr to set attributes for {k,m,q,s}echo. Attributes in %{k,m,q,s}prefix are echoed by {k,m,q,s}echo. Added encode_attr(). Added -p and -a options to /recordline. Added "A" (noactivity) attribute - lines with this attribute will not cause an ACTIVITY hook or an activity counter on the status bar. Added "L" (nolog) attribute. Removed "d" (dim) and "f" (flash) attributes. Added new arithmetic assignment operators: += -= *= /= The invalid macro body substitution "% " is left alone instead of being replaced with " ", for backwards compatibility. Attributes generated by the status line system override any attributes originally present in the text being printed in a status field. If a /retry connection attempt (other than the first) succeeds, the socket is not automatically foregrounded. Spaces in TFPATH and TFMAILPATH may be escaped with backslash. Eliminated %auto_fg, which didn't work in 5.0 anyway. Mecho prints hook and trigger arguments. Supports MCCPv1 in addition to v2. cputime() returns -1 if not supported by system. Fixed rounding error in times reported by /runtime. Fixed visual=off display (redraw and "More" paging). Fixed: when the connection to a background socket with no activity was lost, the socket's virtual window was closed, losing the disconnect message. Fixed: under certain conditions, a /connect in a DISCONNECT hook would fail with "socket to already exists". Fixed: /quote -decho lost attributes. Fixed: /dokey recall{b,f,beg,end} and search{b,f} did not honor %kbnum. Fixed: when logging with wraplog=on, blank lines were not logged. Fixed initial setting of %interactive and %visual. (50b4) Fixed initialization of %status_attr from environment. Fixed bug in handling more than 8192 bytes sent by server with MCCP enabled. Fixed: when server disabled MCCP, tf discarded pending text. Fixed a timing bug that may have caused many seemingly unrelated problems, including processes not running on time, status bar not updating, and keyboard or background worlds being ignored. (50a13) Fixed handling of case where server sends ANSI display code followed by backspace (not known to ever happen in practice, but fixed nontheless). Fixed: in some cases, if TF already had a prompt from the server, it would ignore a new prompt from the server. Improved some error messages. Improved detection of SSL libraries and handling of incomplete SSL setup. Detects when csh or tcsh has corrupted the TERMCAP environment variable. 5.0 beta 4 (2004-02-17) ---------- Added /key_{shift,ctrl,meta}_{F1..F12} (for recent xterms). All command options that require numeric arguments (including getopts() "#" options) can take a numeric expression as an argument. (Actually added in 50a13, documented now.) /set, /setenv, and /let are reserved words (may not be redefined). Added %interactive. /quit prompts "Really quit?" if interactive. "/quit -y" forces quit. Improved generated macro code. Redraw (^L) recovers from garbled scroll region. Workaround for yet another kind of bad getaddrinfo() implementation. Warns about "%;" after "/if (...)", "/while (...)", or "/else". Fixed crash in handling of invalid "@{...}" inline attribute specifications. Fixed possible crash on trying to connect to bad host address. Fixed: "/@name" was calling macro instead of builtin. (50b3) Fixed "/let" with no args. Fixed "{0}" in expressions. (5.0) Fixed crash when sending to closed connectionless socket. Fixed /replace to work on strings containing spaces (i.e., arguments 3..N, not just 3). 5.0 beta 3 (2003-12-22) ---------- Draws dividing line between old text and new text when you bring a world window to the foreground. Configurable with %textdiv and %textdiv_str. Includes option to clear old text before drawing new text. (Replaces separator.tf from 50a13). Once a screen is cleared, it stays clear: hiding and unhiding it does not redraw the cleared lines. You must scroll back to redraw them. "ESC w" switches to next active world (i.e. world-q.tf is loaded by default). activity_status.tf just replaces "@active" with "activity" field, it does not redefine the entire status bar. activity_status2.tf moves and shrinks other fields to make more room for the activity field. Length of abbreviations can be limited by setting %status_abbr_max. Fixed handling of commands disabled by --disable-process or --disable-history. Increased default value of %max_trig. Decreased default value of %refreshtime. In recent versions of xterm, Meta- acts like ESC . Added /key_shift_{insert,delete,home,end,pgup,pgdn} (for recent xterms). Improved glob diagnostics. Improved/fixed handling of small terminals. moresize() returns number of lines scrolled. Fixed: bodyless triggers sometimes didn't apply attributes if borg=0. (40g3) Fixed: %max_trig could sometimes produce multiple warnings. Fixed L and R partial hilites on zero-width regexp matches. Some documentation improvements. 5.0 beta 2 (2003-12-12) ---------- Fixed: prompts were not displaying, and were making tf eat CPU time. (50b1) Increased default value of %max_instr. Fixed harmless configure error that appeared on some systems. 5.0 beta 1 (2003-12-10) ---------- Added documentation for PCRE regexp syntax under "/help pcre". New named key system separates character sequence generated by key from the function performed by the key. To change the meaning of named keys, you should now redefine the key_ macro instead of redefining the binding for the key. See "/help keys". Up/down keys now default to moving up/down within a long line, unless cursor is at the beginning/end of the line; then they do recallp/recallb. Worlds defined with "/addworld -e" echo back any text sent to them. This is useful on normal sockets to see what you're sending, or on connectionless sockets for testing triggers or other advanced uses. Connectionless sockets no longer echo back by default. /at is defined by default, and can take a date in addition to time-of-day. If %defcompile is on, macros are compiled (and thus syntax-checked) when defined, instead of when first run. Added %max_trig to prevent infinite trigger loops. Replaced %max_iter with %max_instr. /def gives error immediately if regexp is bad or -P value exceeds number of subexpressions in regexp. Keyboard movement commands beep only when they produce no movement at all, not when they just don't move as far as intended. /dc message appears in the world being disconnected as well as the fg window (if they're different) Literal time values may include microseconds (e.g. 12:30:01.145) Added "how to sleep" example under "/help /repeat". Added %expand_tabs. Added decode_ansi(). Renamed BACKGROUND hook to BGTRIG (but old name still works). Added BGTEXT hook. Fixed activity_status.tf to update for lines generated by /echo -w. Fixed: ACTIVITY and PREACTIVITY hooks didn't run in the world in which the activity occured when caused by /echo -w. Fixed order of /dc message relative to text already queued on socket. Fixed: under certain conditions, a dead socket would not go away and could not be foregrounded. Fixed handling of IPv6 server address on system with getaddrinfo() but no IPv6 kernel support. Fixed bug in printing long IPv6 addresses (more than 27 characters). Fixed "Invalid value for ai_flags" error during /connect on some broken systems (FreeBSD 4.2). Fixed spurious "Not connected" messages from certain library macros. Fixed: tabs were not expanded upon receipt from server, so lines with tabs weren't matched by triggers (regexp or glob) that matched in 4.0. Fixed trailing ^@ on macro body when defined in loaded file with (incorrect) trailing "%; \". Fixed fatal bug in /expr, /test, /result, /return with an empty argument that was generated by expansion. (50a13) Fixed fatal bug in /ps when printing very large times. Fixed handling of bad options of the form "--x". Fixed compile error in output.c ("called object is not a function") when configured to build without termcap. (50a3) Workaround for compilation error "krb5.h: No such file or directory" on some systems (Red Hat and Yellow Dog Linux) that keep ssl in standard location but depend on kerberos which isn't in a standard location. 5.0 alpha 14 (2003-11-06) ------------ /paste -h invokes send hooks; plain /paste does not. Fixed sometimes fatal bug in /def -P with multiple arguments. Fixed compile error for systems with getaddrinfo() but without AI_ADDRCONFIG. Fixed: executable was stripped even if configured with --enable-core. 5.0 alpha 13 (2003-10-30) ------------ If called from foreground, /connect foregrounds the new socket immediately, before it is actually connected; if called from the background, it never foregrounds the socket, even when the connection eventually succeeds. New -f and -b options can change this behavior. If a hostname corresponds to multiple IP addresses, /connect tries them all until it finds one that works. Each one that fails invokes a CONSUBFAIL hook; if they all fail, the CONFAIL hook is invoked. Hook messages are now displayed _before_ executing any hooked macros. An alert related to a background world is cleared if that world is brought to the foreground. If a status field is partially obscured by an alert, the visible part of the field is still updated. In world-q.tf, worlds with scrolled-back text are counted as active. Added eval(). Renamed inline_attr() (50a10) to decode_attr(); added strip_attr(). Input completion does not print the list of possible matches until the second time the completion key is pressed. /def -P can take multiple subexpression/attribute pairs, separated by ';'. /def -P recognizes L and R as subexpression identifiers. /load and /lcd ignore trailing spaces in argument. By default, up/down keys do recallb/recallf instead of cursor up/down. "@" is accepted in front of keywords (e.g. "/@if"). Made it illegal to use "/return" or "/result" generated by substitution (e.g. "/let cmd=return%; /%cmd 1"). Added %mccp flag to disable MCCP. If TF crashes, it will dump a corefile only if configured with --enable-core. After you /dokey selfush (^[J), reach the end of the text, and attempt to scroll forward one more time, the screen is redrawn unfiltered (this is necessary to avoid a mixture of filtered and unfiltered lines on screen). During /limit, scrolling to any point, including the bottom, results in a More prompt that shows the number of lines (possibly 0) below the status line. In this state, /unlimit will leave the bottom visible line where it is, and redraw the unlimited lines above it. But if you attempt to scroll PAST the bottom during /limit, the More prompt changes to "LIMIT ON"; in this state, /unlimit will redraw with the previously invisible last line at the bottom of the screen. Added morepaused(). Added PREACTIVITY hook. Added activity_status.tf to display, on status line, number of lines in active worlds. Added separator.tf to draw a dividing line between old and new text in background worlds. Added status_width() to get width of a status field. Fixed redraw after SIGINT (^C) or SIGQUIT (^\). Fixed ordering of prompt processing relative to normal lines, including prompt hooks and attributes embedded in prompts. (50a9) Fixed: an alert caused by an event in a background world caused the status line to be incorrectly updated with information from that world. (50a12) Fixed /limit -a. Fixed line count during /dokey selflush (^[J). Fixed /dokey pause (^S). Fixed: /echo -p lost original attributes of argument Fixed possible crash after disconnecting from a world with a prompt. Fixed: when wrappunct applied, space was ignored. (50a12) Fixed bug in reverse scrolling after clear. (50a12) Fixed use of kbnum in ^[c ^[u ^[l (capitalize, upcase, downcase) keybindings Fixed: receipt of a character 251-254 was sometimes incorrectly interpreted as a telnet option negotiation Fixed handling of /break in complex nesting situations. Fixed: float values (0.0 < abs(x) < 1.0) in /if and /while conditions were interpreted as false instead of true. Fixed: assigning a variable to itself in an expression (foo:=foo) could incorrectly set variable to 0. Fixed fatal error when "kbnum" is in environment and first keypress is a digit. Fixed IPv6 support (using RFC 3493 API) (50a10). Fixed: speedwalk incorrectly matched lines containing only digits. - 5.0 alpha 12 (2003-06-11; not released to public) ------------ moresize() takes an optional world argument, and defaults to operating on current world (instead of foreground world). Page Up and Page Down scroll a full screenful, not a half. Added ^] keybinding for /bg. Can wrap at punctuation other than space; %wrappunct controls it. Can reverse scroll until first line is at bottom of window (useful with /limit and /unlimit). Documented new input completion keys. See /help complete. Added %TFLIBDIR/teraterm.keyboard.cnf. TeraTerm users should copy this to their TeraTerm directory to fix the editor keypad (insert/delete/home/ end/pgup/pgdn); this will help any application you use through TeraTerm, not just TF. Documented textencode() and textdecode(). Added warning about some new keybindings the first time they're used (unless warn_5keys=off). /relimit warns if there was no previous limit. /clock with no argument resets clock_format to %H:%M. Fixed: Gag was not correctly suppressing alert messages (e.g., /def -ag -hactivity gag_activity). Fixed handling of invalid attribute specifications. Fixed: long alert wasn't cleared when shorter alert was printed on top of it. Fixed: /status_{rm,edit} could not find right-justified fields Fixed: /status_add -B put spacer on wrong side of new field Fixed: @world field in status bar sometimes displayed incorrect name during a trigger or hook in a background world. Fixed screen corruption and lockup in /dokey selflush (ESC J). Fixed use of nameser.h when inet6 is enabled. Fixed compilation problem on some systems with HAVE_LIBZ and HAVE_GETPWNAM. Added --disable-ssl option to unix configure. Fixed "make clean" etc. Fixed garbage in "/help limit". Fixed several bugs in use of {var} (with curly brackets) in expression. (5.0) Optimized {var} expression values and %{var} macro substitutions. More informative debugging output. 5.0 alpha 11 (2003-05-27) ------------ If you have not yet read changes since 4.0 stable 1, please do now. Fixed fatal bug in /hook with no pattern. Fixed compilation problems on MacOS X. Fixed: More prompt area (8 dashes) sometimes scrolled into output window when switching worlds. (50a10) Fixed missing "/help /limit". Disabled IPv6 support by default, since it is broken on some systems, and there really aren't any servers that require it anyway. (To be fixed in a future release). Installation process creates PREFIX/bin and PREFIX/lib if needed. 5.0 alpha 10 (2003-05-26) - changes since 4.0 stable 1 ------------ New screen handling. See "/help windows". Per-world virtual windows, including More prompt. True scrollback: Half page backward (PgUp, ^X[) or forward (PgDn, ^X]), full page backward (^X{) or forward (^X}), line backward (^[^P) or forward line (^[^N). /dokey_flush means jump to end, showing last screenful /dokey_selflush shows last screenful of lines with attrs Redraw after /suspend, /sh, and changing window size, %visual, or %isize. Doesn't automatically leave a dead socket if the text hadn't been seen. WORLD hook is silent. A disconnected socket does not disappear automatically after displaying its buffered text. It will dissappear if you /dc it again, or /fg another. /dokey redraw (^L) actually redraws screen. Added /dokey clear (^[^L) to clear screen. %shpause defaults to on. Eliminated all "Resuming TinyFugue" messages and RESUME hook. Default status_int_world prepends "!" if foreground socket is a zombie. Changing a status_{int,var}_* will cause the status line to update. Added /dokey pause (^S) @more status field counts physical lines (not logical lines); it shows both old lines and new lines; when a /limit is in effect, only limited lines are counted. moresize() takes flags to request only limited, only new, or only new limited lines. bg_output and /fg -q mean jump-to-end when foregrounding Some messages (activity/background/mail hooks, /limit error) appear as temporary "alerts" on the status bar. %alert_time controls duration of alert. %alert_attr controls attrs of alert. echo() to the "a" stream, or /echo -A, displays arbitrary text as alert. status field attrs are modified by variable "status_attr_{int,var}_". By default, wrapped lines are indented 4 spaces (%wrapspace=4). Changed default keybindings to be more consistent with those in emacs, bash, and other gnu readline applications. The old bindings can be restored with "/load kb-old.tf" (not recommended). See "/help keys". The most important changed keys are: Old New Meaning left right ^B ^F left right move cursor back/fwd ^B ^F ^[b ^[f move cursor one word back/fwd ^[b ^[f ^[{ ^[} ^[left ^[right prev/next socket ^L ^[L clear screen (none) ^L redraw screen (with contents) added /status_add, /status_rm, /status_edit, /clock {on|off}, %clock_format, %status_field_defaults. You should not set %status_fields directly. Variables used in status_fields do not need to exist. Various keys are bound to /dokey_pg{up,dn} which in turn calls /dokey_hpage{back,}. To make keys move a whole screenful, user should not rebind the keys, but redefine /dokey_pg{up,dn} to call /dokey_page{back,}. Note: some emulators (NiftyTelnet, TeraTerm) incorrectly send ^[[3~ for PgUp; the correct meaning of ^[[3~ is Delete (in vt220 emulation). The PgUp key in these emulators will not work correctly in tf unless you (preferred) fix your emulator, or (easier) "/bind ^[[3~ = /dokey_pgup" (warning: may break your Delete key) Replaced Henry Spencer's regexp pacage with PCRE (Perl Comaptible Regular Expressions). It is backwards compatible, with one exception: the character '{' introduces a quantifier, so you must use '\{' to match a literal '{'. Also, regexps containing no uppercase letters default to caseless matching. All regexps (including static strings in macros and expressions, and regexps stored in variables) are now stored internally in compiled form, making them much faster. regmatch() returns any positive integer for success, not necessarily 1 (so you should write (regmatch(...)), not (regmatch(...) == 1) Time is measured and printed with microsecond resolution: %prompt_sec and %prompt_usec replaced with %prompt_wait /recall: h:m[:s[.f]] is interpeted as time-of-day, s.f as absolute time. ftime(): "%@" includes microseconds; added "%.", "%s", "%F", "%T" formats. /ps, time(), idle(), sidle() print or return values to the microsecond. Time values for /repeat, /quote, /at, %ptime, %maildelay can be specified to the microsecond. Display attributes in string values are preserved by just about every string operation, including commands, variables, expression operators, functions, regexp substitutions, $() command substitution, and status bar field expressions. /limit [-a] [-v] [-m