aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <rhaberkorn@fmsbw.de>2026-04-19 22:17:23 +0200
committerRobin Haberkorn <rhaberkorn@fmsbw.de>2026-04-19 22:26:37 +0200
commit488dd3d64418f81555c9a005445d6a3adcc5eb0a (patch)
tree113a1541a997a5ad059412aa9418978c58b29928
parent2b8d3f93fdb92df3e67fabff779a2ac1d91358b7 (diff)
prepared v2.5.2 release
-rw-r--r--ChangeLog49
-rw-r--r--NEWS16
-rw-r--r--TODO133
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog6
-rw-r--r--freebsd/Makefile2
6 files changed, 151 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index f186778..5d9e0da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,55 @@ using a prebuilt binary) are included.
Entries marked with "(!)" might break macro portability
compared to the preceding release.
+Version 2.5.2 (2026-04-20)
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* sped up `EQq<filename>$`
+* Curses/UNIX: It should be possible to interrupt more potentially blocking
+ operations with CTRL+C (SIGINT).
+* (!) `^A` now supports a message severity level, so you can log
+ warnings and errors as well.
+* Added TANK MODE.
+ Launch with EI^EQ[$SCITECOPATH]/tank.tes$
+* support Groff v1.24.0 and later
+* fnkeys.tes: When preserving the horizontal column,
+ take the character representations and tab draw modes into account.
+* SIGTERM/SIGHUP always quits.
+ On GTK recovery files are always dumped first.
+* decreased default recovery dumping interval to 120s
+* (!) `-$$` and `-^C` always return -1 now instead of passing down the prefix sign
+* fixed scrolling at the end of a multi-line command-line
+* fixed auto completion of two-character Q-register names
+* `ER` updates `^S`/`^Y` now as any other text insertion
+* GTK: fixed --detach and support stdout/stderr redirections.
+ Has been broken since v2.5.0.
+* GTK: Fixed interaction between `^T` and main input handling.
+ Key presses are no longer missed and inserted into the command line later.
+* Curses: handle window resizes when blocking in `^T` and don't return function keys.
+ Also, filter out bogus key press events on PDCursesMod/WinGUI.
+* Curses: fixed monochrome support.
+ Has been broken since v2.5.0.
+* Curses: fixed 16-color schemes and default colors (`sciteco --no-profile`)
+ on 8-color terminals (like the Linux/FreeBSD VTs)
+ Has been broken since v2.5.0.
+* Curses: default colors are now closer to terminal.tes
+* Curses: fixed colors on emulators with less than 256 color pairs
+ (e.g. TERM=rxvt)
+* Curses: support up to 32767 color pairs
+* Curses: require wide-char support even on PDCurses
+* fixed auto-completion of Unicode (non-ANSI) file names
+* disallow replacing non-Unicode command lines via `{` and `}`
+* Curses: fixed flickering of the hardware cursor on the command line.
+ On the downside, this can result in the cursor being visible when
+ drawing the buffer as well.
+ Has been broken since v2.5.1.
+* fallback.teco_ini: added commented-out line to disable the hardware cursor
+* fallback.teco_ini: fixed exclusion of the unnamed buffer from custom
+ margin and indention settings.
+ Has been broken since v2.5.0.
+* opener.tes: opener.check-recovery can be used in ~/.teco_ini to check
+ for and warn about the presence of `#recovery#` files.
+
Version 2.5.1 (2026-01-10)
~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/NEWS b/NEWS
index 3d7bfe9..f5baba8 100644
--- a/NEWS
+++ b/NEWS
@@ -2,17 +2,5 @@ News
====
<span class="nf nf-md-new_box"></span>
-There is now an official [Haiku port](https://depot.haiku-os.org/#!/pkg/sciteco_curses/)
-for the ncurses version, so Haiku users can install SciTECO via the Depot.
-
-<span class="nf nf-md-new_box"></span>
-SciTECO [v2.5.1](https://sciteco.fmsbw.de/downloads/v2.5.1/) has been released.
-This is a hotfix release to v2.5.0, which first and foremost fixes the
-Windows PDCurses builds.
-
-<span class="nf nf-md-new_box"></span>
-SciTECO [v2.5.0](https://sciteco.fmsbw.de/downloads/v2.5.0/) has been released.
-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.
+SciTECO [v2.5.2](https://sciteco.fmsbw.de/downloads/v2.5.2/) has been released.
+This is mostly a fixup to v2.5.1 and v2.5.0.
diff --git a/TODO b/TODO
index 1948f7f..6d6c581 100644
--- a/TODO
+++ b/TODO
@@ -1,8 +1,7 @@
Tasks:
* Have a look at TECO-86.
* VEDIT and PMATE for MS-DOS
- * Scintilla: upstream 2 patches
- * HaikuPorts
+ * Make sure that fmsbw.de is indexed by Google
Known Bugs:
* OBS GTK builds sometimes fail: "cannot open display"
@@ -10,24 +9,16 @@ Known Bugs:
* In multiline command lines, the asterisk can scroll out of
view. Perhaps it has to be drawn independently of Scinterm.
* FreeBSD's `crontab -e` is not compatible with SciTECO's savepoint mechanism.
- * ncurses: GNOME Terminal and Xterm produces BUTTON3_PRESSED (without BUTTON3_RELEASED)
- events when scrolling horizontally.
- This is fixed upstream in ncurses and there is a workaround for
- older ncurses versions which limits the effects of this bug.
- * ncurses: st and Xterm produce BUTTON2_RELEASED, followed by BUTTON2_PRESSED
- when clicking the middle button.
- We also *sometimes* get it in the correct order.
- This bug has been fixed upstream and there is a workaround for
- older ncurses versions. You may loose the distinction between
- pressed and release events, though.
+ * Gnome Terminal: You can see hardware cursor flickering when deleting
+ lines repeatedly (if it's enabled of course). This is also visible in Aerc.
+ Scroll regions are already used, but only when scrolling.
+ Disabling the hardware cursor around doupdate() causes flickering
+ of the cursor on some terminals.
* Upgrade to Scintilla 5.5.7 requires charconv header which bumps
the minimum GCC version to 8.1 (officially 9).
This breaks OpenSUSE 15.5-15.6 builds.
* Build problems on Fedora 41: See mail from Blake McBride.
- * @^Um{-$$} Mm= should probably return -1.
* {@I/$$23=/} doesn't insert anything after $$.
- This would be necessary for an interactive screen editing script,
- that leaves you in <I> always.
This would require some refactoring.
* GTK on Haiku: CTRL and AltGr-combinations do not work.
The modifiers are not delivered properly and it appears to affect all Gtk apps
@@ -36,16 +27,18 @@ Known Bugs:
the variable-width font since its rendered in STYLE_CONTROLCHAR (36),
which is reset in woman.tes.
Perhaps it should always be in lexer.font.
- * The current horizontal position (set by 4EJ via SCI_GETCOLUMN) is
- often wrong, i.e. pressing the up-cursor key can get you into the
- wrong column.
- Character representations obviously take always one column.
- This would have to be fixed in Scintilla's SCI_GETCOLUMN.
* Excessively long lines slow down SciTECO too much, especially
when enabling SCI_SETWRAPMODE(SC_WRAP_CHAR).
In some cases, the internal redrawing blocks SciTECO forever.
* @ES/SCI_CLEARALLREPRESENTATIONS// does nothing.
Might be a Scintilla bug.
+ * Some operations can be hard to interrupt because they result
+ in costly calculations within Scintilla.
+ For instance interrupting ECcat /dev/zero$ can hang in
+ the Scintilla Undo operation.
+ This particular hang could be avoided by getting rid of
+ Scintilla undo actions in teco_view_load_from_channel() and spawn.c.
+ We can probably only get rid of undo actions completely and globally.
* Win32: Interrupting <EC> will sometimes hang.
Affects both PDCurses/WinGUI and Gtk.
This no longer happens with ECbash -c 'while true; do true; done'$.
@@ -56,17 +49,21 @@ Known Bugs:
want to refer directory C:\mingw64 instead).
* PDCurses/Win32: Crashes sometimes without any error message.
* NetBSD Curses: scrolling apparently uses hardware idl capabilities
- resulting in graphical glitches on slow terminals.
+ without scroll regions resulting in graphical glitches on slow terminals.
idlok(FALSE) is apparently ignored.
- * NetBSD: Very slow, even the redrawing.
+ * NetBSD Curses: Very slow, even the redrawing.
This does not happen with ncurses on NetBSD.
+ Do they have immedok(TRUE) enabled by default?
* dlmalloc's malloc_trim() does not seem to free any resident memory
after hitting the OOM limit, eg. after <%a>.
Apparently an effect of HAVE_MORECORE (sbrk()) - some allocation is
always left at the end.
* S<LF>^ES^N<$ does not find the first line that does not begin with "<".
This is because \s+ backtracks and can match shorter sequences.
- Perhaps ^ES should always be translated to \s++ (possessive quantifier)?
+ TECO-11 patterns do not backtrack apparently.
+ Perhaps ^ES should always be translated to \s++ (possessive quantifier).
+ On the other hand, we would have to extend the pattern syntax to allow
+ backtracking.
* Colors are still wrong in Linux console even if TERM=linux-16color
when using Solarized. Affects e.g. the message line which uses the
reverse of STYLE_DEFAULT.
@@ -91,6 +88,7 @@ Known Bugs:
re2 should be an optional dependency, so we can still build against the
glib APIs.
Optionally, I could build a PCRE-compatible wrapper for Rust's regex crate.
+ It would also be possible to port hxrex to UTF-8 and add it as a submodule.
* It is still possible to crash SciTECO using recursive functions,
since they map to the C program's call stack.
It is perhaps best to use another stack of
@@ -201,6 +199,27 @@ Known Bugs:
Also, the command-line redrawing is still broken in GNOME Terminal.
* When config.status is run as a consequence of touching configure.ac,
config.h will be wrong, forcing us to rerun ./configure.
+ * Does not scroll at the end of a multiline command-line
+ (the first character on a scrolled line will not be visible).
+ On Curses the hardware cursor will still stay at the end of the window of course.
+ Obviously a Scintilla bug.
+ Break on EditView::DisplayFromPosition
+ Perhaps the problem is in Editor::MaxScrollPos().
+ As a workaround, we set SCI_SETENDATLASTLINE(0).
+ * OBS builds do not provide Ubuntu i586 since subversion is obviously no longer
+ packaged, breaking obs-service-tar-scm.
+ Is there any third-party build?
+ * GTK: too much flickering in tank mode when shooting.
+ This is because my font doesn't contain the correct glyph.
+ Try: I ^E<10041>$
+ Perhaps we should use more widespread glyphs.
+ https://groups.google.com/g/scintilla-interest/c/ZgLik8tNyjM
+ * There are still potentially blocking syscalls that could result in
+ SciTECO hanging. Curses/UNIX can rely on SIGINT, but this won't
+ help on any other platform.
+ All blocking operations must be within an event loop and call into
+ teco_interface_is_interrupted() to potentially drive the UI and
+ detect CTRL+C presses.
Features:
* Should we support *.sgml files with the HTML lexer?
@@ -221,6 +240,7 @@ Features:
Would probably require some kind of server...
* opener.tes should try to center the opened line
(SCI_SETFIRSTVISIBLELINE).
+ However, this would require a new ED hook, so we can query SCI_LINESONSCREEN.
* Rubout of SCI_GOTOPOS could also restore the vertical
scrolling position (SCI_SETFIRSTVISIBLELINE).
So e.g. rubbing out ZJ restores the exact view.
@@ -298,21 +318,11 @@ Features:
line. May be useful e.g. for solarized's F5 key (i.e. function
key macros that need to terminate the command line as they
cannot be rubbed out properly).
- * Key macros could support special escape sequences
- that allow us to modify the parser state reliably.
- E.g. one construct could expand to the current string argument's
- termination character (which may not be Escape).
- In combination with a special key macro state
- effective only in the start state of the string building
- state machine, perhaps only in insertion commands, this
- could be used to make the cursor movement keys work in
- insertion commands by automatically terminating the command.
- Even more simple, the function key flag could be effective
- only when the termination character is $.
- Instead of reserving a character, we could also reserverve
- a bit in the function key maks.
- It's however impossible to reliably return to the start state
- from arbitrary parser states.
+ * Key macro flag to automatically terminate insertion commands
+ (or everywhere where it's safe).
+ Should be used to make the cursor movement keys (fnkeys.tes)
+ automatically terminate string arguments.
+ Will probably require a new state callback.
* Support more function keys.
We can define more function keys via define_key(3NCURSES).
Unfortunately they are not really standardized - st and urxvt for instance
@@ -389,7 +399,6 @@ Features:
* ^A currently doesn't flush the output.
Perhaps flushing should be controlled by the language.
Perhaps via the ET flags.
- * Mini game where you can drive a tank around your source code.
* `@]q` to pop keeping the numeric part of q intact.
Perhaps `@@]q` to overwrite __only__ the numeric part,
but keeping the string intact.
@@ -480,7 +489,12 @@ Features:
command-line termination.
Also, we'd need a command to fetch the modification timestamp
as well.
- * Recovery files should probably be hidden during auto completions.
+ * Curses: Dump recovery files on SIGTERM and SIGHUP as well.
+ Useful when we are unexpectedly but gracefully terminated,
+ Could only be done on Curses by setting a small timeout and
+ returning from getch() frequently to check whether the signal
+ ocurred.
+ On Wincon we could also react to window closes.
* Error handling in SciTECO macros: Allow throwing errors with
e.g. [n]^F<description>^F where n is an error code, defaulting
to 0 and description is the error string - there could be code-specific
@@ -593,6 +607,7 @@ Features:
* It should be possible to disable auto-completions of one-character
register names, so that we can map the idention macro to M<TAB>.
* Add a configure-switch for LTO (--enable-lto).
+ All of the packages will have to be adapted as well.
* There should be a string building construct for escaping
search patterns.
Since string building is performed immediately before
@@ -600,9 +615,12 @@ Features:
search for a Q-Register verbatim.
* Tweak the Makefile lexer for Automake support.
In the simplest case, just add the *.am file extension.
- * Add an fnkeys.tes alternative where moving cursor keys
+ * Add key macros where moving cursor keys
leaves you in the insert (I) command.
That will behave very similar to classical editors.
+ See n00b.tes.
+ This still requires an ED hook for new command lines and
+ FQ to remove Q-registers.
* Lexing via SciTECO macros?
They would have to be in their own parser instance since Scintilla
could ask us to restyle at any time and within string arguments,
@@ -699,6 +717,9 @@ Features:
^U[^L0]SciTECO ^XI <^XT> ^XF$
As a first step, customizing the window title might be the most useful,
as often, you don't need the "SciTECO - <Buffer>" prefix.
+ * Would also allow the configuration of "powerline" symbols at least
+ for the Curses variant.
+ https://github.com/ryanoasis/powerline-extra-symbols
* Until we have customizeable layouts, it may make sense to hardcode
the current line+column in to the message line.
* With Unicode icon support, we might want to replace a few more
@@ -791,6 +812,36 @@ Features:
We'd have to handle an overlapping info popup, though.
Should we deactivate the hardware cursor via curs_set(0) if it overlaps
the popup?
+ * ncurses: Support default colors (use_default_colors()).
+ Instead of drawing a black background and white foreground
+ we could use pair number -1.
+ This means you don't suddenly become white-on-black on terminals
+ that use black-on-white by default.
+ On the other hand, not all color schemes might look good,
+ so this would have to be a setting (ED flag).
+ Also, Scinterm would have to support it as well.
+ This also appears to be responsible for the greyish background
+ on Haiku and GNOME Terminal: They don't have a true black as color 0
+ even if the default terminal background is a true black.
+ * Ctags support
+ Perhaps can be Video TECO compatible.
+ https://github.com/universal-ctags/ctags
+ * Non-spacing code points would currently be handled as separate
+ SciTECO characters.
+ On the one hand, this means you can remove accents from characters.
+ On the other hand, it may be inconvinient in texts with many accents.
+ What do Asian scripts like Hangul do?
+ * :^Q should perhaps return a status code, so you can check for
+ invalid line ranges.
+ The current :^Q (dot to line) would have to be renamed to
+ something else, like ^L.
+ Or alternatively @^Q could simply ignore out of range
+ arguments.
+ * Perhaps add math.tes with primitives from my Project Euler
+ solutions to the standard library.
+ * :^W should perhaps inhibit the caret scrolling.
+ When using ^W purely as a wait command, this could be undesirable.
+ Also, it is undesirable for some animations (e.g. shooting in tank.tes).
Optimizations:
* Use SC_DOCUMENTOPTION_STYLES_NONE in batch mode.
diff --git a/configure.ac b/configure.ac
index e703aed..f64636b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.65])
-AC_INIT([SciTECO], [2.5.1],
+AC_INIT([SciTECO], [2.5.2],
[hackers@fmsbw.de],
[sciteco],
[https://sciteco.fmsbw.de/])
diff --git a/debian/changelog b/debian/changelog
index ddea47c..ab0d425 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+sciteco (2.5.2) unstable; urgency=low
+
+ * new upstream version v2.5.2
+
+ -- Robin Haberkorn <rhaberkorn@fmsbw.de> Sun, 19 Apr 2026 20:21:14 +0000
+
sciteco (2.5.1) unstable; urgency=low
* new upstream version v2.5.1
diff --git a/freebsd/Makefile b/freebsd/Makefile
index e18b7bc..8550f5a 100644
--- a/freebsd/Makefile
+++ b/freebsd/Makefile
@@ -1,5 +1,5 @@
PORTNAME= sciteco
-DISTVERSION= 2.5.1
+DISTVERSION= 2.5.2
CATEGORIES= editors textproc devel
MASTER_SITES= https://sciteco.fmsbw.de/downloads/v${DISTVERSION}/ \
SOURCEFORGE/${PORTNAME}/v${DISTVERSION}/