The following change log summarizes changes introduced by SciTECO releases compared to the preceding release. Only changes relevant to users (build from source or using a prebuilt binary) are included. Entries marked with "(!)" might break macro portability compared to the preceding release. Version 2.0.0 ~~~~~~~~~~~~~ b65c64a don't set up any margins or indention settings on the unnamed buffer in sample.teco_ini aa2e96a, 29bf227, f557af9, bac1efa fixed interruptions on Gtk+ and most other platforms. On supported platforms the first CTRL+C will try to gracefully kill the subprocess, while the second one resorts to a more agressive method. 5470fc3 Curses: do not allow typing any non-ASCII characters - fixes crashes on PDCurses/WinGUI. This is a temporary limitation as long as we do not support Unicode. f0d57d7 added Asciidoc lexer config 85599c7 added Markdown and YAML lexer configs d10997a improved the C/C++ and Gob lexers 4273088 added lexers for Python and Linux Device Trees df6c898 CPP lexer: support *.ino files (Arduino IDE sketches) b8e8cc8 added lexing support for Gob2 (GObject Builder) 9f7f187, b091d8b The "cpp" lexer configuration has been split into "c.tes" and "cpp.tes" effectively improving C support. 2f72665, a6b5394 fixed crashes after interruptions of commands with string arguments in interactive mode It's not clear whether this has been broken in v0.6.4. 60a0913 data installation path is now configurable via --with-scitecodatadir 030e0f5 Allow disabling Lexilla (Lexer) support by specifying --without-lexilla. When optimizing for size, this helps saving 50% of the compressed binary size. ba08753 Fixed rubbing out words (^W) and possible chrashes. This has probably been broken in v0.6.4 as well. cc417af fixed formatting of dates in manpages 9f659ec, e752a64 fixed grosciteco (and thus building) for newer Groff versions (#11) ca9de04 sciteco(1) manpage: All UIs support ^C interruptions now 101a868, 73cab56 bumped required PDCursesMod version to v4.3.4 or later 147e53b, 9586a03, 9a5e363, 3706112 Fixed CTRL+C interruptions on all versions of PDCurses 0d3da2c reduced memory use in interactive mode due to undo tokens d6126b3 fixed rubout of certain constructs like Ifoo$FRX$$ It's not known whether this bug existed on v0.6.4. aa00bf1 added ./configure --enable-debug and make sure that NDEBUG is defined properly 4c79d26 Gtk: fixed entering dead keys 1c88da4 Woman pages under Gtk: fixed monospaced example blocks 39490d6 Gtk: default font is now "Monospace" instead of Courier. This avoids unexpected ligatures. f15bc53 Gtk+: fixed interpretation of Alt-Gr-keypresses. This bug appeared with newer Gtk+3 versions. 8031da6 Gtk+: Stop memory limiting when idling 18a0543 Gtk: disabled ^Z suspension on Unix for the time being. This cannot easily be made working properly. fdb89d9 GTK: Support for Xembed protocol via --xembed. This is useful for instance with tabbed (https://tools.suckless.org/tabbed/): $ tabbed sciteco --xembed 6df603d Gtk: fixed message bar's background color 073f5f2 Gtk: The GObject Builder (GOB2) is no longer required. b21d294 Gtk: Display control characters in titles and autocompletion popups like in the text buffer. 45413d0 Gtk UI: popup will now overlay both the Scintilla view and message widgets e768487 Gtk UI: full color scheme support cff9fb1, 8627a00 Gtk UI: added option --no-csd to disable client-side decorations f25f97e Gtk UI: uses header bars now eed939f install PNG icon and use it to set GTK's window icon 3fd1a19 GTK UI: beep on error f337481 improved default selection colors and made them configurable via color.tes 3ed4116 fixed building on Mac OS af16d43 fixed crashes when the Q-Reg stack is non-empty at exit This might have been broken in v0.6.4 as well. 8ef010d optimized caret scrolling: this is a costly operation and is now done only once per keypress 8baa1b3 optimized character representation setting 50d63f2 fixed hiding savepoint files on Win32 0267b68 Optimized process spawning (EC) on UNIX ae913ab Negative searches () check for multiplication overflows now 9fa78ca Memory limiting fixed on Mac OS X 5167dad guard against too low arguments to by checking whether the memory limit would be exceeded. This fixes potential crashes. e3b2bb7 fixed Clang builds a2e52ca, 432ad24 Significant internal rewrites. * String termination takes string building characters into account, ie. you can use the termination character (escape by default) in ^EQ[...]. * Also, it's now possible to escape it using ^Q/^R, adding yet another way to insert escape characters. * All strings are 8-bit-clean now. This means you can also use SciTECO as a scriptable binary editor. * Gtk+ (>= v3.12) interface is usable and stable now. * Memory limiting should finally work on Linux, Windows, Mac OS and FreeBSD. * Glib v2.44 is the minimum required version now. 524bc39 improved Emscripten support: fixed configure-checks, generate *.js and detect EMCurses 90baf34 Automatic case-folding of commands in interactive mode when enabling bit 3 in ED (`0,8ED`) 2491d5f fixed checks for missing left and right operands to binary operators 4038aa2 fixed and optimized piping very large buffers via EC/EG 5069c3b fixed Q-Reg autocompletion for `Q` command 8b00fa8, 6f9705b support NetBSD's curses (--with-interface=netbsd-curses) af05d38, f4da329 Significantly reduced memory use for undo tokens (interactive mode) f90b197, 733e012, 5e84b63, 0ad317e build system portability fixes (FreeBSD compatibility) c1113c2 fixed table formatting in generated HTML files (sciteco.7.html) e4d5a99 allow dollar sign ($) as another variant of ^[ (discard all arguments or return) 8460f92 Fixed rubout of the first command after command line termination ($$). It's unclear whether this has been an issue in v0.6.4. 0fbbc0d womanpage lexer: fixed popup styling bece75c updated sample.teco_ini: 2EJ now sets a more or less global memory limit (!)1cec19d Fixed interpretation of the Q-Register specification "..". The parser would allow arbitrarily many dots in front of a local Q-Register name. ".." is the local Q-Register "." now. 84ab169 auto-completion of Q-Register names, goto labels and help topics be39ab9 The manpage generator generator-docs.tes has been renamed to tedoc.tes b44a4ba standard lib: added getopt.tes for parsing command line options in scripts cb5e08b It is now possible to write SciTECO scripts with command-line arguments. e7867fb implemented self-documenting (online) help system. You can use `?` for looking up a help topic. Documentation is opened as so called "womanpages" which are generated from Troff man pages using grosciteco. Groff is therefore now a hard compile-time requirement. c0fe494 fixed segfault when munging empty scripts (!)9f6cba5 Globbing (EN and EB commands) support character classes now and ^EN string building construct can be used to escape glob patterns. (!)61ff6e9 Integrated clipboard support on Gtk+, PDCurses and ncurses/XTerm. The clipboard is exposed as Q-Registers beginning with "~". 16e9b0d Added ^E@ string building character for expanding arbitrary strings so they can be parsed from UNIX shells. On Windows, you will have to enable UNIX98 shell emulation to make use of this feature. 9e97b58 session.tes: save and restore the working directory as part of the session c4dbe74 fixed rubout and reinsertion of the loop end command (>) 4686d18, 39124fd EG and EC use $SHELL (UNIX) and $COMSPEC (Windows) as the default command interpreters now. The corresponding Q-Register is always the uppercased $COMSPEC even if the native system uses a different spelling. 4db7f46 Implemented ^C command to terminate a script (similar to exit(3)). This is disallowed in interactive mode. 247884a `F>` outside of loops will now return the parent macro level (like $$) and terminate the command line in interactive mode. (!)de73943 Added pass-through loops: `:<`, `:>`, `:F<`. F< outside of loops jumps to the beginning of the macro now. A lot of checks have been added for unterminated loops etc. 52a8d7f, (!)f08187e Implemented <$$> command for returning from a macro Since $$ is a regular command now also in interactive mode, syntactic characters (eg. string termination) are now longer taken into account when terminating command lines. 5fce211 Fixed many rubout-rubin cases. 1da5bde, b259cb6 optimized command execution in batch mode, during macro calls, loops etc. 406cf5a added 16px, 32px and 256px versions of the SciTECO PNG icon f9c1765, 131fe7c added :EX (colon-modified EX): exits SciTECO saving all modified buffers 40318a2 refactored pattern matching processing: fixes segfaults and memleaks dc02222 ncurses: use a default escape delay of 25ms 21e0d30 curses UI: fixed truncation of non-filename popup entries b710f6a curses UI: properly truncate q-register and file names efa862d, (!)ecbc58f Different operators can have the same precedence now. SciTECO now has the same operator precedence table as C. 8baae75 Curses UI: revised popup area, with borders and a scroll bar; reduce flickering (!)e77f4d3 for n pointing to the buffer end throws an error now. 7a85142 fixed error message for Qq if does not exist 45e2f9a curses UI: support terminal palette restoration on PDCurses/win32 and xterm c77101c curses: fixed arithmetic error when window is smaller than 2 columns 6a9a7d5 added port of the Solarized color scheme (solarized.tes) f69d1f0 programmable terminal color redefinition and theming SciTECO curses UI based on Scintilla styles This is using 3EJ. 95ebb1c <:Q> returns -1 for non-existent registers now (!)9c19ab0 do not imply values for the "=" command but fail instead if argument is missing 859a831 enable function key macros automatically when sourcing fnkeys.tes 007cfe7 disable all Scintilla margins by default c39b545, ae2f607 added "^FCLOSE" function key macro and defined SIGTERM behaviour d9e2250 the Scintilla caret is now non-blinking by default a1a7d3d never show the horizontal scrollbar by default 65a1e61 disable PDCurses/win32a "function keys" 91bbf67 improved ncurses/win32 support 17e7768 added XCurses support 8101cec major Curses UI revision: initialize curses as late as possible 15409ba Handle environment variables more consistently. Subprocesses inherit the Q-Registers beginning with "$" as their process environment. 7919aca support UNIX-shell-like tilde-expansions in file names and directories 88dc6ac It is an error now to try to set or append the string part of "*" and appending to "$" 02d414b added command and special Q-Register "$" to set and get the current working directory 6c62ccc Modified ^W (rub out word) in string (and file name) arguments: ensure that we always rub out beyond empty arguments b65eee0 support specialized ^W (rub out part of file name) immediate editing command in file name arguments c98a2cd restrict globbing in the EB command to regular files. bae8cd7 The command now allows matching file names and checking file types. Version 0.6.4 ~~~~~~~~~~~~~ 18fe073 added PDCURSES_LIBS ./configure variable to overwrite the check for PDCurses 537b7b5 preliminary support for ncurses/win32. This port is not well tested. 64ee414 implemented function key masking (context-sensitive function key macros). The command line editing macros in fnkeys.tes will no longer insert "garbage" into string parameters. cb8411d, c310c7d implemented automatic EOL translation support. This means that SciTECO now properly supports editing files with different line breaks. It especially simplifies editing files with DOS/Windows line breaks and allows you to write portable macros that are line break agnostic. eee4f1a added "EL" command for setting/getting the current document's EOL mode 14ec511 also set window title on ncurses, by querying terminfo capabilities. This feature is currently buggy. 34a4c7e ncurses: Fixed batch mode initialization in head-less environments (where $TERM is unset). Interactive mode should no longer start in headless or broken environments but report an error. 2a4acd6, 2c0e9f7, 4dced2c improved ncurses batch mode initialization. Only relevant for UNIX/Linux: When SciTECO is run in batch mode, it completely keeps away from the process' terminal device. It no longer flashes the screen (was visible e.g. in rxvt-unicode). 7ceabb2 Curses UI: beep on error. This might also perform a visual bell or nothing at all (depending on the terminal emulator). b3acf28, 647e6eb added cool SciTECO icon (on Windows, it is the icon of sciteco.exe) 20cb9a7 added --no-profile command line option 1126007 added the <"I> conditional for checking whether a character is a directory separator (!)a0d1231 always normalize directory separators to "/" in the "*" Q-Register. On Windows "*" used to contain Windows directory separators. With the new behaviour it is easier to write portable macros. 67b846c added ./configure --enable-static-executables option e88f9bb, 3db42f8 optimized user interface drawing. Should also speed up the GTK+ UI. 10e4e27 fixed displaying of control characters in the "info" line (and window title) 4a4687c improved `sciteco --help` output 2a4e114 fixed m,nXq for m > n: this properly throws an error now instead of crashing 63c88b9 changed save point file format to .teco--~ Users should adapt existing VCS ignore patterns if necessary. a3a340a fixed TAB completion of files in the current directory beginning with ".". Not sure if this bug existed in v0.5. 2cfc358 added function key macro for Shift+DEL to fnkeys.tes: Acts as a "reverse" backspace-key (depending on the state of the ^G modifier). 800bbd8 fixed function key handling on GTK UI. Function keys are now properly ignored until they are enabled by setting bit 6 of the ED flags. a399be7 On UNIX/Linux with glibc, heap memory can be reclaimed earlier when terminating a command line. This means that your system will recover earlier after it began swapping because SciTECO used too much memory. 8178f8d, 4aa51b9, 3373274, ef82d22, 83ebaea, 482c0e7 Implemented re-insertion of rubbed out command lines. This effectively implements SciTECO's version of Redo. Rubbed out parts of the command line are still visible in grey. The new "^G" immediate editing command can be used to toggle the behaviour of the rubout commands from rubout (undo) to re-insert (redo). The "^G" toggle modifies other immediate editing commands as well. It replaces the "^T" immediate editing command with "^G^G". b40fe86 implemented undo stack memory limiting (ticket #3). The size of the undo stack is now approximated and limited. An error is thrown and the current command fails if more than 500mb are used by it. The limit is configurable (see "EJ" command). This makes it harder to crash SciTECO by using up all the memory due to infinite loops in interactive mode. 611bb22 fixed crashes when loop is closed (>) or continued (F>) without a corresponding loop start (<) (ticket #3). 4624eeb, c7b2da8 work around Scintilla character representation drawing bug. This fixes too much space being allocated to control characters in the SciTECO buffer view. 1b07f32 Scintilla: fixed tab stop calculation on Curses This is included in the Scintilla mirror at https://github.com/rhaberkorn/scintilla-mirror and thus in v0.6 source bundles. (!)d24bc4a implemented support for different indention styles. The TAB-command (^I) has been extended to insert indention characters according to current Scintilla settings (SCI_SETUSETABS, SCI_SETTABWIDTH). TAB has been made an immediate editing command in insertion commands ("I", "^I" but also search-and-replace arguments) to insert indention characters by the same rules. In old macros where "^I" was used for inserting the TAB-character, "9I" should be used instead. 574d284 support filename auto completions with forward-slash directory separators on Windows. Auto-completions will now use the last directory separator in string that has been typed before auto-completing. On platforms like Windows where both forward and backward slash separators are possible, this makes a difference. By default however, the platform-default directory separator is used. 613e8c9 Curses: support cycling through long lists of possible auto-completions and optimized screen refreshing/redrawing 52ecff4 Curses: fixed formatting of popup windows 4377770 do not show possible completions for hidden files and directories They are ignore during tab completion unless the beginning of the name of a hidden file or directory has been typed. I.e. "../." will still complete hidden files on UNIX. (!)ad3d2f4 implemented pQq and :Qq commands In other words, the "Q" command can now be used to index the string part of a register and query its size without editing it first. This breaks macro backward-portability since "Q" will no longer ignore existing values on the stack. Therefore the expression "QaQbK" must now be written "Qa,QbK". ebf0440, abda28b introduced $SCITECOCONFIG env variable, and set different default for $SCITECOPATH on Windows. $SCITECOCONFIG allows you to reconfigure the path where SciTECO looks for the profile macro. On Windows, these variables are initialized to paths relative to the location of the sciteco.exe file. This keeps SciTECO self-contained on Windows (unzip the release and go!) while allowing it to be added to $PATH and used from any working directory. The environment variables can be set explicitly, e.g. to set up SciTECO for a MSYS or Cygwin environment. The environment variables are always normalized to absolute paths. On Windows, the profile macro is now called ".teco_ini" just like on UNIX. You must rename existing "teco.ini" files or - better yet - completely rewrite them. e030c4e fixed memory leak in batch mode 1e5115b Added "E%" command to save a Q-Register's string contents to disk without changing the current document. "EW" can now also be used to save a Q-Register to disk. 14cc71e added "EI" command as a non-string-building variant of "I" 3e7ebb5 added "EU" command as a variant of the "^U" command with string building characters enabled. a6c13d7 allow setting the numeric part of the "*" register as an alternative to nEB Allows a few useful idioms like "1U*" instead of "1EB$" and "[* ! temporarily edit another buffer ! ]*" 6e5a611, 5b74ef5, 2900fcb, d38df48 added a buffer session module (session.tes) This can be used handle buffer sessions (i.e. restore the buffer ring when starting up again). It also includes macros like "session.git", "session.svn" and "session.hg" to set up one session per VCS repository automatically. a37daa8 added "EJ" command: return runtime properties This may be used e.g. to query the number of buffers in the ring. "EJ" or "1EJ" will return the number of buffers, while "0EJ" returns the current user interface. You can use that in the profile for instance to select different color schemes. f279d24, 67bfd59, 427c9d1 added globbing command "EN" It is called like classic TECO's "EN" command but behaves differently. 28fd3db fixed rubbing out buffer edits ("EB") after a local Q-Register has been edited. Not sure if this was present in v0.5. 59bbee9, 16a47e2 finally implemented the CLOSE and QUIT hooks. These ED hooks were already documented but unimplemented. The "CLOSE" ED hook is now executed before a buffer is removed from the ring. The "QUIT" hook is executed before SciTECO terminates in a batch mode context. In other words, when quitting SciTECO shuts down interactive mode and executes the "QUIT" hook. "QUIT" hooks may be used to save buffer sessions. (!)efa646d renamed ED hook register to "ED" and protect ED hook executions In other words, to set up ED hooks, you must now configure the Q-Register "ED", as in "@^U#ED{ !...! }". ED hook executions are now protected, as if run by "(nM[ED]^[)". This means that buggy ED hook macros can no longer result in undefined side-effects of commands that trigger ED hooks. e909fb2 Throw error when a macro terminates while a local q-reg is edited. This fixes possible crashes resulting from accessing freed resources. f843a09 throw error when macro returns with an unterminated command E.g. the macro "@^Um{Ihello}" will throw an error if executed with "Mm". (!)4282e7d allow a current buffer if we're editing a Q-Register. This means that the Q-Register "*" contains the name of the current buffer even if a Q-Register is edited. c80c632, d4f8fb3 new modular lexer (syntax highlighting) system This includes configurable color profiles (colors/*.tes), one lexer configuration file per language (lexers/*.tes) and automatic loading of installed lexer configs. Syntax highlighting can be set manually by executing corresponding macros. E.g. to set C++ syntax highlighting you can execute "M[lexer.set.cpp]". The lexer library (lexer.tes), contains useful macros for writing your own lexer configurations. 2542eb0, e762a43, 2ee2ddd, 38fcf6d Improved overall performance by avoiding unnecessary virtual method calls 0f413b0 Adapted sample .teco_ini: margin setup must be done for every new document (!)8be99d3 Every SciTECO buffer has its own Scintilla view now. This fixes the rubout of the "EB" command since lexer styles no longer have to be restored. Therefore, it allows writing (bug-free) ED-hooks that setup syntax highlighting. Scintilla configurations that should apply to all buffers must now always be made on all buffers (i.e. their views). Q-Registers still share a single Scintilla view. d9f04a7 Building from source: enable bootstrapping by default The language changes frequently. This ensures that an up-to-date version of SciTECO is built to run the macros included in the source packages. This will NOT work when cross-compiling SciTECO. You must first build a version for the build system and cross-compile with ./configure --disable-bootstrap 468cb19 added ^# (XOR) operator 3006be5 fixed number formatting for radix > 10. This fixes the "\" command and "^E\" string building character if the radix is set higher than 10, e.g. "16^R". 0987ca8 Revised function key macros in fnkeys.tes This fixes glitches when movement keys are used that would move "dot" off-page. Also, the "HOME" key binding will jump to the beginning of the line skipping any leading whitespace. A second press will jump to the real beginning of the line (like "0L"). The "UP" and "DOWN" key bindings try to keep the column of the previous line. (!)5e1ad77 extended "^U" command: allow setting and appending of strings and characters from the expression stack. A colon-modified form ":^U" appends characters from the expression stack and its string argument. This means that integer arguments no longer "pass through" the ^U command. It is now more like TECO-11's ^U, but more powerful. 7b9d5ba support new "~" conditional: useful for implying default parameters in macros E.g. the conditional expression "~1' implies the value 1. (!)fa12867 revised "U" command: fail if no argument is provided This means that expressions like "Ua" are no longer valid and must be written "1Ua" instead. The expression "-U" is still allowed as a short-hand for "-1U". Also, now there's ":U" which returns a condition code if the argument is missing instead of throwing an error. 01a4211 Clarify `symcasecmp` macro in string.tes (documented it) d59ba50 fixed undoing of initial TECO buffer/document changes a475ea8 fixed rubbing out local Q-Register modifications in macro calls 1c3b2a9 fixed crashes when pushing operators without corresponding operands. Instead an error is thrown. This fixes expressions like "++", "+1+", etc. 3c1125c Basic TAB-completion support for EC and EG commands 7746480 added "EG" command: pipe from buffer into Q-Register 1aab71c, 20d1f0e, acc911a implemented "EC" command (execute operating system command). This requires at least libglib v2.34 on Windows. On UNIX, pre-v2.34 versions are supported as a workaround (ticket #2). (!!!)a395c9d changed syntax for long Q-Register names: use [] brackets instead of {} This means that expressions like "M{macro}" must now be written "M[macro]". This will break all existing macros!!! On the other hand, it improves readability of SciTECO macros. 06d0bac fixed reversing the "EW" command when used to save a file with another name (save as) b62f736 depend on Scintilla v3.5.2 and Scinterm v1.5 (included in tar balls). This brings many new curses features, e.g. scroll bars and new Scintilla lexers. You should refer to the Scintilla v3.5.2 documentation when setting up SciTECO. 39406f4, a27b5d4, 30d8bf3 automatically build Scintilla as part of SciTECO's build system: this should simplify building SciTECO from source for new users. Scintilla is now automatically checked out when cloning the Git repository and it is included in every source tar ball. af17bd7 fixed crash on unexpected semicolon (break from loop) d94b188 fixed enclosing SciTECO expressions in braces that do not generate any values. E.g. this fixes "1<()>". 54de1dc build system improvements f6fa45e fixed array freeing using delete. Could have resulted in crashes. 793f801 fixed severe bug related to referencing temporary values. Fixes many build issues and possible memory corruptions. dbd252c ncurses: fixed info bar at startup 4ae59fd avoid deprecated glib functions e5563f8 report argument stack overflows as errors 5e92818 Division by zero no longer crashes SciTECO but throws an error. 707acef, 8046e11, 78ad52e improved and fixed error reporting in general 1f8d558, abfabda try to recover from out of memory conditions. This is ultimately doomed to fail ;-) d374448 added support for TECO stack tracing. Errors in batch mode will now print a TECO stack trace. 0674f29, 6d4668b added EMCurses/Emscripten support. Only really "required" by the live demo at http://sciteco.sf.net/ de616e3 Fixed compilation of the GTK+ interface (!)f510c10 only allow command-line replacements when actually editing the replacement register. This helps avoiding to rubout the entire command line by accident. c5c24b0 updated lexer config: CMake and XML lexing 6f7694e Fixed building on non-C locales (Thanks to Martin Roedel!) Version 0.5 ~~~~~~~~~~~ initial release