<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/src/interface-curses, branch master</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>fixup color pair support: updated Scinterm again</title>
<updated>2026-02-02T17:11:44+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-02-02T17:11:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ba2cf86f1889a334772aba56186a14150a96b2f3'/>
<id>ba2cf86f1889a334772aba56186a14150a96b2f3</id>
<content type='text'>
This is for some minor cleanup.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is for some minor cleanup.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup: high-color-pair support was still broken in Scinterm</title>
<updated>2026-01-30T13:36:20+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-30T13:22:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=e624826447d83f1b79e5442d3695a7528cf578cf'/>
<id>e624826447d83f1b79e5442d3695a7528cf578cf</id>
<content type='text'>
* Also updated A_XXX attributes to WA_XXX, where the "new" wattr_set() APIs
  are used. This doesn't make a difference on ncurses and PDCurses, but the
  X/Open standard demands it.
* Allow color pairs up to 32767 instead of only up to 32766.
* We now always require Curses wide-character APIs due to Scinterm,
  which has to use mvwin_wch(). We were practically depending on wide-character
  support anyway, so this shouldn't really restrict portability.
* teco_curses_add_wc() has been simplified, now that we can rely on
  wide-char APIs. Perhaps it should be removed altogether?
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Also updated A_XXX attributes to WA_XXX, where the "new" wattr_set() APIs
  are used. This doesn't make a difference on ncurses and PDCurses, but the
  X/Open standard demands it.
* Allow color pairs up to 32767 instead of only up to 32766.
* We now always require Curses wide-character APIs due to Scinterm,
  which has to use mvwin_wch(). We were practically depending on wide-character
  support anyway, so this shouldn't really restrict portability.
* teco_curses_add_wc() has been simplified, now that we can rely on
  wide-char APIs. Perhaps it should be removed altogether?
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: support up to 32767 color pairs</title>
<updated>2026-01-26T18:50:03+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-26T18:50:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7fa9feae452ea05a083b17d3f0cdf69bf5d37822'/>
<id>7fa9feae452ea05a083b17d3f0cdf69bf5d37822</id>
<content type='text'>
* Instead of ORing COLOR_PAIR() into attributes, always pass separate `pair` arguments.
  Since they are `short` this allows for up to 32767 color pairs.
  Previously, we could only count on 256 color pairs (or 128 for SciTECO and Scinterm each).
* Analoguous changes have been made to Scinterm.
  See also https://github.com/orbitalquark/scinterm/pull/37
  Since it only correctly checks for overflows at the end of the color pair space, we allocate the second
  half of that space to Scinterm.
  It is now very unlikely to overflow the color pair space, though.
* This wasn't critical of course since even the 128 pairs would be unlikely to exhaust as long
  as we support only 16 ANSI colors.
  Scinterm however supports arbitrary RGB colors and we might want to do so soon as well.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Instead of ORing COLOR_PAIR() into attributes, always pass separate `pair` arguments.
  Since they are `short` this allows for up to 32767 color pairs.
  Previously, we could only count on 256 color pairs (or 128 for SciTECO and Scinterm each).
* Analoguous changes have been made to Scinterm.
  See also https://github.com/orbitalquark/scinterm/pull/37
  Since it only correctly checks for overflows at the end of the color pair space, we allocate the second
  half of that space to Scinterm.
  It is now very unlikely to overflow the color pair space, though.
* This wasn't critical of course since even the 128 pairs would be unlikely to exhaust as long
  as we support only 16 ANSI colors.
  Scinterm however supports arbitrary RGB colors and we might want to do so soon as well.
</pre>
</div>
</content>
</entry>
<entry>
<title>GTK: fixed --detach and support stdout/stderr redirections</title>
<updated>2026-01-24T15:37:27+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-24T15:29:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7ff541040edc3b3f8a25bb69e04ecb57cba12954'/>
<id>7ff541040edc3b3f8a25bb69e04ecb57cba12954</id>
<content type='text'>
* We fork after command line arguments have been parsed, which
  is after gtk_get_option_group() has been called.
  This means that GTK was already initialized and it wasn't safe
  to continue after forking.
* As a workaround, we now re-exec with the original argv array,
  so GTK can be properly reinitialized.
  Since we did not remove `--detach` from argv (and that would be
  nontrivial), it would fork again endlessly,
  so we use an environment variable
  $__SCITECO_DETACHED to guard against recursive forks.
* Also, do not close stdin/stdout/stderr if has been redirected
  to a file, so you can now e.g. call `gsciteco -d &gt;some-file`.
* This was broken since v2.5.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* We fork after command line arguments have been parsed, which
  is after gtk_get_option_group() has been called.
  This means that GTK was already initialized and it wasn't safe
  to continue after forking.
* As a workaround, we now re-exec with the original argv array,
  so GTK can be properly reinitialized.
  Since we did not remove `--detach` from argv (and that would be
  nontrivial), it would fork again endlessly,
  so we use an environment variable
  $__SCITECO_DETACHED to guard against recursive forks.
* Also, do not close stdin/stdout/stderr if has been redirected
  to a file, so you can now e.g. call `gsciteco -d &gt;some-file`.
* This was broken since v2.5.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: fixed colors on emulators with less than 256 color pairs</title>
<updated>2026-01-21T18:12:08+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-18T21:06:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=a3116cb6c3caee368bb1ccbfbe43a4fab823bfa1'/>
<id>a3116cb6c3caee368bb1ccbfbe43a4fab823bfa1</id>
<content type='text'>
* For instance on TERM=rxvt.
  Generally 8-color emulators will usually support only 65 color pairs.
* On emulators that support more than 256 pairs, we must still limit them
  to 256 (or 128 for Scinterm and SciTECO) since we still use a single
  attribute for colors and misc. attributes (see COLOR_PAIR()).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* For instance on TERM=rxvt.
  Generally 8-color emulators will usually support only 65 color pairs.
* On emulators that support more than 256 pairs, we must still limit them
  to 256 (or 128 for Scinterm and SciTECO) since we still use a single
  attribute for colors and misc. attributes (see COLOR_PAIR()).
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: fixed flickering of the hardware cursor</title>
<updated>2026-01-15T00:06:38+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-15T00:06:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7fece4c0a8a685d5ada4dfb89ce5fd7efa9f38fa'/>
<id>7fece4c0a8a685d5ada4dfb89ce5fd7efa9f38fa</id>
<content type='text'>
* Disabling the cursor with every key press caused a cursor status change when
  using CARETSTYLE_CURSES, which resulted in flickering, especially when using the
  cursor keys or typing quickly.
* Instead we now disable the cursor only if CARETSTYLE_CURSES is NOT used on the
  command line.
* It would be good to use curs_set(2) for `^T` - in some emulators it causes
  e.g. a blinking cursor - but it wouldn't be visible in simpleterm.
  This is probably just because it doesn't guarantee any contrast.
* This was broken in v2.5.1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Disabling the cursor with every key press caused a cursor status change when
  using CARETSTYLE_CURSES, which resulted in flickering, especially when using the
  cursor keys or typing quickly.
* Instead we now disable the cursor only if CARETSTYLE_CURSES is NOT used on the
  command line.
* It would be good to use curs_set(2) for `^T` - in some emulators it causes
  e.g. a blinking cursor - but it wouldn't be visible in simpleterm.
  This is probably just because it doesn't guarantee any contrast.
* This was broken in v2.5.1.
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: the hardware cursor is enabled by default now on the command line</title>
<updated>2026-01-10T15:15:07+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-10T14:58:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=37d8808d4009df862da9976c765d5958ce5d2a63'/>
<id>37d8808d4009df862da9976c765d5958ce5d2a63</id>
<content type='text'>
If you dislike this, you can always revert to the old style by adding the
following to your profile:

  0,2048ED 2#16@ES/SETCARETSTYLE//$ 2048,0ED
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If you dislike this, you can always revert to the old style by adding the
following to your profile:

  0,2048ED 2#16@ES/SETCARETSTYLE//$ 2048,0ED
</pre>
</div>
</content>
</entry>
<entry>
<title>PDCurses: fixed modifiers (CTRL, ALT, SHIFT) and mouse support on XCurses</title>
<updated>2026-01-06T10:36:38+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-06T10:00:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=e55bd8e619aad30c119e8e17894337021fb16af8'/>
<id>e55bd8e619aad30c119e8e17894337021fb16af8</id>
<content type='text'>
* While xcurses-config does define PDC_WIDE, it does not
  define PDC_NCMOUSE, which we currently rely on so that
  NCURSES_MOUSE_VERSION is set correctly.
  Therefore we check for it just like when using --with-interface=pdcurses.
* The modifiers were broken on all variants of PDCurses.
  This was a regression from v2.4.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* While xcurses-config does define PDC_WIDE, it does not
  define PDC_NCMOUSE, which we currently rely on so that
  NCURSES_MOUSE_VERSION is set correctly.
  Therefore we check for it just like when using --with-interface=pdcurses.
* The modifiers were broken on all variants of PDCurses.
  This was a regression from v2.4.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>PDCurses/XCurses: fixed crashes on startup</title>
<updated>2026-01-06T09:58:59+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-06T09:58:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=68d19d800cd037a8efb210c6ebc52cf23c11ad5e'/>
<id>68d19d800cd037a8efb210c6ebc52cf23c11ad5e</id>
<content type='text'>
Must not (and don't have to) probe the clipboard on startup.
We just assume there always is a clipboard.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Must not (and don't have to) probe the clipboard on startup.
We just assume there always is a clipboard.
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: fixed mouse interactions on PDCurses</title>
<updated>2026-01-04T21:56:11+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-01-04T21:56:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=b697806bfd5a6756bb4b40776c4499577671a167'/>
<id>b697806bfd5a6756bb4b40776c4499577671a167</id>
<content type='text'>
* There is yet another PDCurses vs. ncurses incompatibility:
  ncurses has a mouse event queue so you must call getmouse() repeatedly
  for every KEY_MOUSE, while PDCurses apparently doesn't queue and would
  end up in an infinite loop. I.e. the program would hang once
  you press any mouse button.
* This forced us to add an PDCurses-specific version of teco_interface_getmouse().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* There is yet another PDCurses vs. ncurses incompatibility:
  ncurses has a mouse event queue so you must call getmouse() repeatedly
  for every KEY_MOUSE, while PDCurses apparently doesn't queue and would
  end up in an infinite loop. I.e. the program would hang once
  you press any mouse button.
* This forced us to add an PDCurses-specific version of teco_interface_getmouse().
</pre>
</div>
</content>
</entry>
</feed>
