Age | Commit message (Collapse) | Author | Files | Lines |
|
My patch has been merged, so there is no need to keep the workaround
in newer versions.
See https://lists.gnu.org/archive/html/bug-ncurses/2025-09/msg00027.html
|
|
* We have to process several mouse events for every KEY_MOUSE.
* The order of events is sort of arbitrary after clicking the middle mouse button
in some terminal emulators like st and Xterm.
Therefore BUTTON2_PRESSED is now ignored and resynthesized when
receiving BUTTON2_RELEASED.
This fixes loosing middle click events.
fnkeys.tes only processes the RELEASED event anyway.
I am still looking for a fix to contribute to the ncurses project.
* In GNOME Terminal and Xterm with the SGR mouse protocol,
you can receive bogus BUTTON3_PRESSED events when left scrolling.
There is an upstream fix.
As a workaround -- we will have to live with outdated ncurses
versions anyway -- we prevent resetting the mouse mask unnecessarily.
This limits the effects to a single bogus BUTTON3_PRESSED event.
Unfortunately, it's not easily possible to force ncurses into using
the X10 mouse protocol even if the terminfo entry claims SGR compatibility.
See also https://lists.gnu.org/archive/html/bug-ncurses/2025-09/msg00016.html
|
|
|
|
Hopefully, this fixes the pkg2appimage runs.
At least it works when run manually in Ubuntu 22.04.
|
|
We have topics for all colon-modified variants.
|
|
appear to be broken in some versions of GNU Make
Hopefully fixes the Mac OS CI and nightly builds.
|
|
|
|
Hopefully fixes the nightly AppImage builds.
|
|
* There were two rules with independent targets, which could
result in `.woman.tec` files to actually contain plain text.
Practically all parallel builds were affected, among other
things OBS-built packages where tutorial.woman.tec would
usually be broken.
* Now use the `&:` syntax for grouped targets.
|
|
|
|
OBS builds
* There are nightly OBS builds, so there is no need to build and distribute them via CI.
* On the upside we can download the packages for the AppImages from a proper (OBS) repository.
* AppImages are now built on Ubuntu 20.04 (instead of 22.04 which was the oldest
Github runner).
|
|
|
|
|
|
statement
* this is a SciTECO extension - it's not in TECO-11
* Allows for select-case-like constructs with default-clauses as in
:Os.^EQa$
!* default *!
!s.foo!
!* ... *!
!s.bar!
!* ... *!
* Consistent with nOlabel0,label1,...$ if <n> is out of range.
Unfortunately this form of computed goto is not applicable when
"selecting" by strings or non-consecutive integers.
* In order to continue after the <:O> statement, we must keep the
program counter along with the label we were looking for.
At the end of the macro, the PC is restored instead of throwing
an error.
* Since that would be very inefficient in loops - where potentially
all iterations would result in rescanning till the end of the
macro - we now store a completed-flag in the goto table.
If it is set while trying to :O to an unknown label, we can
just continue execution.
|
|
empty labels are ignored
* This has long been a TECO-11 incompatibility.
* The first label in a list has index 0, i.e. `1Ofoo,bar$` jumps to label `!bar!`.
Consequently 0 is also implied, so `Olabel$` continues to do what you expect.
* `0Ofoo$` was previously also jumping to `!foo!` which was inconsistent:
All invalid indexes should do nothing, i.e. execution continues after the go-to command.
* Fixed handling of empty labels as in `1Ofoo,,bar$` - execution should also continue
after the command.
This eases writing "default" clauses immediately after the go-to.
* The ED hook values now also begin at 0, so most existing ED hook macros should
continue to work.
* Similarily, the mouse events returned by -EJ also begin at 0 now,
so fnkeys.tes continues to work as expected.
* It's still very possible of course that this breaks existing code.
|
|
* Gtk 3.24 has been introduced accidentally in 9e3746a4
due to GtkEventControllerScroll.
* It would be possible to still support v3.12 by partially
reversing 9e3746a4 and conditionally including teco_interface_scroll_cb().
But it's probably not worth the trouble.
|
|
This broke builds e.g. on Ubuntu 20.04.
Regression was introduced in 51bd183f064d0c0ea5e0184d9f6b6b62e5c01e50.
|
|
This is actually important, so that dh-exec gets used.
|
|
Scintilla v5.5.7 officially requires at least GCC v9, but if it's
only the charconv header that's required from newer releases, v8.1
will probably do as well. We assume so until proven wrong.
|
|
* It is even more robust now and does not remove the large document
optimization.
* And actually while problems were caused on NetBSD 10 on ARMv6,
this likely wasn't a problem on all NetBSD ports and wasn't
restricted to NetBSD. At the very least Haiku 32-bit was affected
as well.
|
|
It should be more robust now.
The changes on CellBuffer should be reviewed again, though.
|
|
* We can use the new SCI_SCROLLVERTICAL instead of SCI_SETFIRSTVISIBLELINE.
* The upgrade will also ease submitting the NetBSD-support patch.
|
|
* They have a newer version in pkgsrc, but it's not even available
as a binary package on the arm6.
* Has some glitches, e.g. does accept the ASCII 27 in tutorial.ms,
but it's probably not worth to work around.
|
|
* It requires a forced refresh on startup (even though that should be the
default). Otherwise, it wouldn't print the info line correctly.
* Redirect stdin and pass it to newterm() to fix key queuing.
Probably necessary for supporting ncurses on NetBSD as well.
* Avoid doupdate() if screen is too small: fixes crashes for very
small windows.
* Updated Scintilla: There were some implicit typing assumptions,
that are broken by this platform.
|
|
If we find libncursesw or libncurses, but without pkg-config and if
ncurses does not install its curses.h into the standard search path,
we might theoretically pick up another compatible Curses' curses.h.
Better guard against this.
|
|
corner cases)
* pkg-config check for `ncurses` fails if it failed previously for `ncursesw`.
This is the case e.g. for ncurses from NetBSD's pkgsrc.
* No longer assume that any libncurses is not enhanced (X/Open compatible).
* SciTECO and Scinterm require to find a curses.h in the include paths.
The ncurses check must therefore not be limited to the first best
ncurses/ncurses.h and the like.
* We now always check for X/Open compatibility and always require
a curses.h in the standard directories or as given by pkg-config.
* AX_WITH_CURSES was radically rewritten and is now called AX_WITH_NCURSES.
* --with-interface=netbsd-curses gets its own detection code.
It always requires a curses.h in the standard paths and a libcurses.
It should now be fixed for real NetBSD installations if the ncurses
port is installed as well.
* Unified all of the curses-arguments to CURSES_CFLAGS and CURSES_LIBS.
There is no reason we need PDCURSES_CFLAGS, XCURSES_CFLAGS etc.
|
|
TECO compatibility
|
|
Esp. mention the new OBS repositories.
|
|
nightly builds on OBS
|
|
teco_interface_init_screen()
User messages printed in interative mode aren't currently fully preserved on stdout/stderr
since they are redirected to /dev/null.
Only messages that are not flushed out will be preserved.
Unless you redirect stdout/stderr of SciTECO of course since in this case no redirection
is necessary.
This is probably tolerable esp. once we support multi-line messages in the UIs.
At least it would be tricky to work around.
|
|
|
|
* Since OBS has its own VCS, there is no need to add the sciteco.spec
to this repository.
It's located here:
https://build.opensuse.org/projects/home:rhaberkorn:sciteco:STABLE/packages/sciteco/files/sciteco.spec
* We will probably provide nightly builds via the UNSTABLE subproject as well.
* Perhaps OBS will even be used to build Debian packages,
as PPA only works on Ubuntu.
Also it has a webinterface for downloading the binary packages, so these
could be removed from our nightly CI workflows.
|
|
`make install` invocation
* The previous way of fixing up all `*.tes` scripts had the disadvantage
of touching unrelated scripts or grosciteco/tedoc of a previous invocation.
E.g. installing a Gtk build after the ncurses build would overwrite all hash-bang
lines of the curses-version scripts as well with gsciteco.
* This caused problems with the RPM package where both variants were
installed into the same buildroot and introduced a dependency from sciteco-curses
to sciteco-gtk.
This is worked around in sciteco.spec with a manual sed call.
* It would be better to get rid of the install-exec-hook altogether
as it causes problems with FreeBSD/Poudriere (FIXME).
|
|
In case there is a failure, there is no way to inspect the
testsuite directory - all there will be is a CI or Launchpad runner log,
so all information should be in that log.
The CI `make check` and RPM spec also sets the --verbose flag.
|
|
Hard tabs would even cause YAML syntax errors.
|
|
* Messages can be arbitrarily long, e.g. the following could provoke crashes in interactive mode
`1000<@I/X/> HX$`
It's hard to turn into a test case, though, as you could always increase the buffer
size in teco_interface_msg().
* The message length is now only limited by RAM.
* This implementation is less effective, but code opting for efficience,
including all programmable user messages, should not rely on the printf-API anyway
but use teco_interface_msg_literal().
|
|
It's necessary to get the log since the last successful commit.
|
|
* At least the MSVCRT does this by default, i.e. the translation mode of stdout
is not _O_BINARY.
* This broke piping through SciTECO with --stdin --stdout, as this relies on SciTECO's
builtin EOL normalization. Instead, you would get DOS linebreaks on output even if the
source stream contains only UNIX linebreaks.
* It would also break binary filters.
* It seems to be safe to print only LF also for regular stdio (help and error messages),
so I simply disaply the stdout (and stdin and stderr) EOL translation globally.
* Also fixes Troff warnings due to the .in preprocessor writing output with DOS linebreaks.
* Added a test case. All future platforms shouldn't perform any unexpected EOL translations
on output.
|
|
was broken in c5510d68
|
|
CI and nightlies
* They would get the --program-prefix.
* If they aren't installed as real scripts, there is no point in fixing up their
hash-bang lines.
* The hash-bang line fix won't work on Windows anyway, so they are now disabled for
grosciteco and tedoc as well.
|
|
A 32-bit word is enough to carry the information of which control code to echo or not.
|
|
tecat.tes and repl.tes are now executable scripts, even though they are
installed into the $SCITECOPATH.
This is still much slower than the Lua version here:
https://gist.github.com/rhaberkorn/6534ecf1b05de6216d0a9c33f31ab5f8
|
|
maybe, perhaps...
|
|
|
|
Hopefully fixes the workflow.
|
|
Perhaps it will work with irc.libera.chat.
|
|
special Q-registers ^Ax
* The unnamed buffer is also used for reading from --stdin, so you couldn't practically combine
--stdin with passing command-line arguments to macros.
* The old approach of passing command-line arguments via lines in the
unnamed buffer was flawed anyway as it wouldn't work with filenames containing LF.
This is just a very ancient feature, written when there weren't even long Q-reg names in SciTECO.
* You can now e.g. pipe into SciTECO and edit what was read interactively, e.g. `dmesg | sciteco -i`.
You can practically use SciTECO as a pager.
* htbl.tes is now a command-line filter (uses -qio).
* grosciteco.tes reads Troff intermediate code from stdin, so we no longer need
"*.intermediate" temporary files.
* added a getopt.tes test case to the testsuite.
* This change unfortunately breaks most macros accepting command-line arguments,
even if they used getopt.tes.
It also requires updating ~/.teco_ini - see fallback.teco_ini.
|
|
--stdin and --stdout options
* htbl.tes now reads from stdin and writes to stdout.
Allows avoiding temporary `*.htbl` files
* grosciteco.tes still cannot be simplified since --stdin cannot be combined with
passing command-line arguments (FIXME).
|
|
* All test suite commands are now invoked with --quiet.
When having to check the stdout of the test runs, you now longer have to filter
"Info:" lines out or include them in the expout.
* Use expout to compare the outputs of the stdio commands instead of just
counting the number of output lines.
* The <EO> command check is simplified by doing the arithmetics in SciTECO.
* test the --stdin and --stdout options as well
|
|
* In principle --stdin and --stdout could have been done in pure TECO code using the
<^T> command.
Having built-in command-line arguments however has several advantages:
* Significantly faster than reading byte-wise with ^T.
* Performs EOL normalization unless specifying --8bit of course.
* Significantly shortens command-lines.
`sciteco -qio` and `sciteco -qi` can be real replacements for sed and awk.
* You can even place SciTECO into the middle of a pipeline while editing
interactively:
foo | sciteco -qio --no-profile | bar
Unfortunately, this will not currently work when munging the profile
as command-line parameters are also transmitted via the unnamed buffer.
This should be changed to use special Q-registers (FIXME).
* --quiet can help to improve the test suite (TODO).
Should probably be the default in TE_CHECK().
* --stdin and --stdout allow to simplify many SciTECO scripts, avoiding
temporary files, especially for womenpage generation (TODO).
* For processing potentially infinite streams, you will still have to
read using ^T.
|