Download Latest Version sciteco-2.5.1.tar.gz (4.1 MB)
Email in envelope

Get an email when there's a new version of SciTECO

Home / v2.5.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-01-01 11.2 kB
sciteco-gtk3_2.5.0_win64.zip 2026-01-01 24.4 MB
sciteco-gtk_2.5.0_x86_64.AppImage 2026-01-01 1.8 MB
sciteco-curses_2.5.0_macos_x86_64.tar.gz 2026-01-01 2.7 MB
sciteco-pdcurses_2.5.0_win64.zip 2026-01-01 5.5 MB
sciteco-curses_2.5.0_x86_64.AppImage 2026-01-01 4.3 MB
sciteco-2.5.0.tar.gz 2026-01-01 4.1 MB
Totals: 7 Items   42.8 MB 0

v2.5.0

This release brings many new features, but most importantly makes the language much more usable as a non-interactive scripting language. Also, the command-line is syntax highlighted now and recovery files are written to help you recover from crashes and other unexpected terminations.

Binary packages and repositories for various Linux distributions are provided via OBS repositories: build result

When installing the Curses (sciteco-curses_*.deb) or Gtk+ (sciteco-gtk_*.deb) Ubuntu packages, keep in mind that you will also need the corresponding common (sciteco-common_*.deb) package. The Gtk+ binary is called gsciteco, so it can be installed alongside the Curses version. Packages may or may not work on other versions of Ubuntu or Debian variants.

For generic Linux builds, you can try the AppImages (sciteco-*.AppImage). Be sure to add the executable flag after downloading. The Gtk AppImage (sciteco-gtk_*.AppImage) assumes that Gtk+ 3 is already installed on the host system. Since the image's contents are not easily accessible, you are advised to download ~/.teco_ini and customize it afterwards.

The FreeBSD builds (sciteco-*_freebsd-14.2_amd64.pkg) are fully featured and behave very similar to the Ubuntu builds. However, you do not currently have to download a "common" package - the FreeBSD packages are self-sufficient.

Curses builds for Windows (sciteco-pdcurses_2.5.0_win64.zip) are based on PDCursesMod. The package contains both a console (sciteco.exe) and GDI window version (gsciteco.exe). The Windows Gtk+ version (sciteco-gtk3_2.5.0_win64.zip) is also shipped as a stand-alone ZIP and does not require installation.

The Mac OS X Curses build (sciteco-curses_2.5.0_macos_x86_64.tar.gz) is considered experimental and is not signed. You can extract it into your rootfs (tar xzf sciteco-curses_2.5.0_macos_x86_64.tar.gz -C /) or into any other directory since the binaries are relocatable. See also Mac OS Support in the Knowledge Base. Gtk+ builds for Mac OS are not currently provided.

For updating an existing ~/.teco_ini, have a look at the changes on fallback.teco_ini since the last release.

Here is the complete change log:

  • make install no longer touches already installed files, which may appease some packaging systems (FreeBSD ports). However make install bindir=... and the like are no longer supported.
  • fixed clicking the "(Unnamed)" buffer in 0EB popups
  • Implemented recovery file mechanism: Unsaved changes are dumped to #filename#. Use n,6EJ to configure the recovery file dumping interval.
  • Fixed building on platforms with very large FILENAME_MAX (GNU/Hurd)
  • fixed rub out of file writes to non-existing symlinks
  • allow configuring the command line height using h,5EJ
  • Added ED flag 2048 to redirect Scintilla messages to the command line view: enables syntax highlighting on the command line.
  • The command line macro is now managed by an ordinary Scintilla view both for GTK and Curses.
  • render tabs as "TAB" (without indention) in the command-line and in SciTECO macros (SciTECO lexer)
  • throw an error immediately after nEB if n != 0
  • ./configure --enable-static-executables now automatically pulls in static libraries of libraries via pkg-config.
  • ./configure supports $CURSES_CFLAGS and $CURSES_LIBS now
  • ./configure --with-launcher=LAUNCHER can be used to run SciTECO with a launcher command (e.g. wine or wine64)
  • added high-contrast color scheme (contrast.tes)
  • mention both mailing list and personal mail in sciteco --help
  • Work around ncurses mouse handling bugs with GNOME Terminal and Xterm. This has been fixed in ncurses since version 20250913.
  • fixed parallel builds: womanpages were sometimes broken
  • Support :O: if a label is not found, continue execution after the go-to statement. Allows to use computed gotos as select-case-like constructs.
  • bumped minimum GCC version to v8.1, Gtk to 3.24
  • bumped Scintilla to v5.5.7
  • fully support NetBSD with its native libcurses (netbsd-curses)
  • support Groff v1.19.2 as still used by default on NetBSD 10
  • fixed building on openSUSE 15.5 and 15.6
  • fix up hash-bang lines only of the scripts really installed by the current make install invocation
  • allow messages to be of arbitrary length: fixes crashes
  • added tecat.tes to standard library: can be installed as the Git textconv filter
  • some internal refactoring and simplifications
  • Fixed serious bug with certain alternative string termination chars in commands with multiple string arguments. This affected curly braces, ^A and Escape ($).
  • (!) Whitespace is now ignored in front of alternative string terminators (as in TECO-64). E.g. @I /Hello world/ is valid now.
  • implemented the ^W command for refreshing the screen in loops, for sleeping and also the CTRL+L immediate editing command for forcing a complete screen redraw
  • repl.tes: added script that reproduces the classic TECO REPL command-line. This is not ready, though, as it terminates on the first error.
  • ED&2 can be used to access the program termination flag now. This can be useful for checking whether a macro has run EX or to cancel the effect of EX.
  • Fixed using the command-line replacement register (Escape, $) in batch mode: was causing assertions when entering interactive mode
  • fixed a,b,c^Uq...$: The arguments where written in the wrong (reverse) order
  • ncurses: support setting the window/tab title on XTerm-like emulators
  • if EX fails because of a dirty buffer, the buffer's id is now included in the error message
  • FreeBSD: enable dlmalloc by default (--enable-malloc-replacement) which gives a 20-25% speedup
  • Special Q-registers $ (working directory) and the clipboard registers now support the append operation (:Xq, :^Uq...), i.e. you can append (or cut-append) to the clipboard
  • added topics for all colon-modified commands to the online help (? command)
  • (!) nEL (set EOL mode) now sets the buffer's dirty flag, forcing you to save or discard changes
  • fixed minor memory leaks during SciTECO syntax highlighting and in case of end-of-macro errors
  • The primary clipboard (~ register) is now chosen by the 10th bit in the ED flags. This allows you to use the "selection" X11 clipboard as the default backend of ~.
  • Implemented ER command for reading a file into the current buffer. This is a Video TECO extension.
  • EW now accepts a numeric argument to specify the buffer to save
  • EF supports a numeric buffer id now
  • sciteco(7): clarified SciTECO's policy with regards to TECO-11 and Video TECO compatibility
  • sciteco(7): minor manpage fixes
  • sciteco(7): added a help topic for booleans
  • PDCurses/Wincon: disable hardware cursor after window resize
  • Improved mouse support in PDCurses v4.5.1. This is in the official Windows builds.
  • GTK: implemented --detach|-d option for detaching from controlling terminal
  • GTK: fixed scrolling on systems that only support smooth scrolling
  • GTK: monospaced sections in womanpages now respect lexer.font and variable-width font is configurable via lexer.woman.font (refs #34)
  • fixed ^S/^Y for search-replacement commands
  • ^S/^Y fixed for Gq and EN
  • ^S/^Y calculates the glyph offsets earlier, so that deletions after an insert or search no longer affect the results. This also fixes querying ranges after FD.
  • added FN as a search-and-replace variant of N
  • Refactored some lexer configurations to make them more pleasurable to look at. Most text should always be in the default colors.
  • SciTECO lexer: style comma, braces and two-character operators as operators
  • SciTECO lexer: now tries to avoid unnecessary restylings by styling from the current line as well
  • YAML lexer: default to 2 character soft tabs
  • added LaTeX lexer config
  • added --quiet, --stdin and --stdout for easier integration into UNIX pipelines
  • Improved DEC TECO compatibility - makes SciTECO much more usable as a scripting language.
  • (!) nA and nQq now return -1 in case the index n is out of range
  • (!) EI has been repurposed and is the macro file inclusion (indirect file) command now. EM is deprecated. Pre-v2.5.0 EI can be replaced with I^P.
  • (!) ^C is a plain "return" command now, while ^C^C exits from the program
  • implemented ^B for returning the current date
  • implemented ^E<code> string building constructs for embedding bytes and codepoints in a strtoul()-like manner
  • support :]q (pop Q-Register) for getting a success/failure boolean
  • support == and === for printing octal and hexadecimal numbers
  • support :=/:==/:=== commands: print number without trailing linefeed
  • Implemented the ^A command for printing arbitrary strings. You can use :^A to force raw ANSI output.
  • implemented :Gq for printing the Q-Register string as a message instead of inserting it
  • implemented the T (typeout) command for printing to the terminal from the current buffer
  • implemented ^T command: allows typing by code and getting characters from stdin or the user
  • implemented ^H command for returning the current time since midnight. :^H returns the seconds since the UNIX epoch and ::^H the monotonic time in microseconds (useful for benchmarking).
  • added -v/--version and EO command to query the program version
  • (!) the computed go-to command (O) is now 0-indexed and all invalid indexes and empty labels are ignored
  • (!) Command-line arguments are no longer passed via the unnamed buffer, but via special Q-registers ^Ax. This introduces one point of incompatibility with DEC TECO.
  • new string building construct ^P disables all further string building magic
  • allow process exit status to be determined by macros
  • python lexer: fixed block comment styling
  • disallow command-line termination ($$) while editing the command-line replacement register (after {)
  • fixed rubbing out stack operations in macro calls (was causing memory violations)
  • opener.tes: Fixed +line,column syntax
  • fnkeys.tes: support folding via F1 and clicks in the folding margin
  • implemented email and "git" lexer folding, as well as folding in womanpages and for the SciTECO language lexer
  • There is an Alpine Linux package in the "community" repository now.
Source: README.md, updated 2026-01-01