<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/src/interface-curses, branch v2.4.0</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>curses: minor cleanup - avoid preprocessor statements</title>
<updated>2025-04-16T15:15:05+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-04-16T15:11:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=77adddb6d19a69b25c4077af8b3d878c4ad9c439'/>
<id>77adddb6d19a69b25c4077af8b3d878c4ad9c439</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>try hard to preserve the vertical scrolling position when auto-scrolling dot</title>
<updated>2025-04-15T00:43:53+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-04-15T00:43:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=29fe0a121d967b7bfbe487e11fd877df13512bf7'/>
<id>29fe0a121d967b7bfbe487e11fd877df13512bf7</id>
<content type='text'>
* There are cases, especially where the entire buffer is piped through some
  external process or when removing and reinserting large parts of the buffer,
  that dot changes very little, but the vertical scrolling position gets resets.
  This is especially noticable with the macro @^U{[: HECcat$ ]:},
  but also with M#cf (clang-format wrapper from "Useful macros").
* We now try to preserve the vertical position ("first visible line")
  before scrolling caret.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* There are cases, especially where the entire buffer is piped through some
  external process or when removing and reinserting large parts of the buffer,
  that dot changes very little, but the vertical scrolling position gets resets.
  This is especially noticable with the macro @^U{[: HECcat$ ]:},
  but also with M#cf (clang-format wrapper from "Useful macros").
* We now try to preserve the vertical position ("first visible line")
  before scrolling caret.
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: the mouse now scrolls two lines per event in the popup window</title>
<updated>2025-04-13T03:58:11+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-04-13T01:49:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=1208193feb641c7515c389cafe38e0e8463941df'/>
<id>1208193feb641c7515c389cafe38e0e8463941df</id>
<content type='text'>
This is hardcoded, but in line with the current defaults from
fnkeys.tes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is hardcoded, but in line with the current defaults from
fnkeys.tes.
</pre>
</div>
</content>
</entry>
<entry>
<title>PDCurses/Win: more or less fixed mouse support</title>
<updated>2025-04-13T03:56:56+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-04-13T01:37:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=8cc704b897f33d6150156c77202a29222b9ee667'/>
<id>8cc704b897f33d6150156c77202a29222b9ee667</id>
<content type='text'>
* Both the WinGUI and Wincon variants have their own idiosyncrasies:
  * WinGUI ignores `mouseinterval(0)` and may report BUTTONX_CLICKED
    for very quick clicks.
    Therefore we now emulate separate PRESSED/RELEASED events.
  * Wincon does not report BUTTONX_RELEASED at all.
    Therefore we still enable click detection, so that fnkeys.tes will
    work at least partially.
    Therefore we also enable REPORT_MOUSE_POSITION, so that
    right-click-dragging will work.
    This should still be fixed in PDCurses upstream, though.
* See also https://github.com/Bill-Gray/PDCursesMod/issues/330
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Both the WinGUI and Wincon variants have their own idiosyncrasies:
  * WinGUI ignores `mouseinterval(0)` and may report BUTTONX_CLICKED
    for very quick clicks.
    Therefore we now emulate separate PRESSED/RELEASED events.
  * Wincon does not report BUTTONX_RELEASED at all.
    Therefore we still enable click detection, so that fnkeys.tes will
    work at least partially.
    Therefore we also enable REPORT_MOUSE_POSITION, so that
    right-click-dragging will work.
    This should still be fixed in PDCurses upstream, though.
* See also https://github.com/Bill-Gray/PDCursesMod/issues/330
</pre>
</div>
</content>
</entry>
<entry>
<title>scroll caret __almost__ always automatically after key presses</title>
<updated>2025-04-04T00:53:07+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-04-04T00:36:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=d2f759a1d4c8a42db73ac62cb8317847a1b40249'/>
<id>d2f759a1d4c8a42db73ac62cb8317847a1b40249</id>
<content type='text'>
* The old heuristics - scroll if dot changes after key press -
  turned out to be too simplistic.
  They broke the clang-format macro (M#cf), which left the view at the
  top of the document since the entire document is temporarily erased.
  Other simplified examples of this bug would be:
  @^Um{[: HECcat$ ]:} Mm
  Or even: @^Um{[: H@X.aG.a ]:} Mm
* Actually, the heuristics could be tricked even without deleting any
  significant amount of text from the buffer.
  The following test case replaces the previous character with a linefeed
  in a single key press:
  @^Um{-DI^J$} Mm
  If executed on the last visible line, dot wouldn't be scrolled into the view
  since it did not change.
* At the same time, we'd like to keep the existing mouse scroll behavior from
  fnkeys.tes, which is allowed to scroll dot outside of the visible area.
  Therefore, dot is scrolled into view always, except after mouse events.
  You may have to call SCI_SCROLLCARET manually in the ^KMOUSE macro,
  which is arguably not always straight forward.
* Some macros like M#cf may still leave the vertical scrolling position
  in unexpected positions. This could either be fixed by eradicating all
  remaining automatic scrolling from Scintilla or by explicitly restoring
  the vertical position from the macro (FIXME).
* This was broken since the introduction of mouse support,
  so it wasn't in v2.3.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* The old heuristics - scroll if dot changes after key press -
  turned out to be too simplistic.
  They broke the clang-format macro (M#cf), which left the view at the
  top of the document since the entire document is temporarily erased.
  Other simplified examples of this bug would be:
  @^Um{[: HECcat$ ]:} Mm
  Or even: @^Um{[: H@X.aG.a ]:} Mm
* Actually, the heuristics could be tricked even without deleting any
  significant amount of text from the buffer.
  The following test case replaces the previous character with a linefeed
  in a single key press:
  @^Um{-DI^J$} Mm
  If executed on the last visible line, dot wouldn't be scrolled into the view
  since it did not change.
* At the same time, we'd like to keep the existing mouse scroll behavior from
  fnkeys.tes, which is allowed to scroll dot outside of the visible area.
  Therefore, dot is scrolled into view always, except after mouse events.
  You may have to call SCI_SCROLLCARET manually in the ^KMOUSE macro,
  which is arguably not always straight forward.
* Some macros like M#cf may still leave the vertical scrolling position
  in unexpected positions. This could either be fixed by eradicating all
  remaining automatic scrolling from Scintilla or by explicitly restoring
  the vertical position from the macro (FIXME).
* This was broken since the introduction of mouse support,
  so it wasn't in v2.3.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>further improved monochrome terminal support: fixed reverse text on reverse backgrounds</title>
<updated>2025-03-16T12:13:39+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-16T12:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=327d749ce03d25897447ec36ed4c46c0da4a72cb'/>
<id>327d749ce03d25897447ec36ed4c46c0da4a72cb</id>
<content type='text'>
* Unfortunately we cannot use `wbkgdset(win, A_REVERSE)` if we plan to
  use reverse text on this background, i.e. if we want to cancel out the background A_REVERSE.
* SciTECO therefore no longer uses background attributes, but only foreground attributes.
  When setting a reverse text, we XOR A_REVERSE into the previous attributes.
* This fixes control characters especially in the info line and popups, as well as rendering
  of the popup scroll bars.
* The command-line should now be rendered properly even on a dark-on-bright color theme
  (which does not yet exist).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Unfortunately we cannot use `wbkgdset(win, A_REVERSE)` if we plan to
  use reverse text on this background, i.e. if we want to cancel out the background A_REVERSE.
* SciTECO therefore no longer uses background attributes, but only foreground attributes.
  When setting a reverse text, we XOR A_REVERSE into the previous attributes.
* This fixes control characters especially in the info line and popups, as well as rendering
  of the popup scroll bars.
* The command-line should now be rendered properly even on a dark-on-bright color theme
  (which does not yet exist).
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: use special ellipsis symbol instead of "..." when truncating strings</title>
<updated>2025-03-14T23:46:39+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-14T23:46:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=24b08dac99804bed30824e9becb6f773d5db1874'/>
<id>24b08dac99804bed30824e9becb6f773d5db1874</id>
<content type='text'>
This requires Unicode icon support to be enabled via ED.
The ellipsis symbol is shorter and more distinctive, allowing more of the original
text to be preserved before truncation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This requires Unicode icon support to be enabled via ED.
The ellipsis symbol is shorter and more distinctive, allowing more of the original
text to be preserved before truncation.
</pre>
</div>
</content>
</entry>
<entry>
<title>updated Scinterm: my monochrome patch was merged only with some modifications</title>
<updated>2025-03-12T23:28:23+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-12T23:28:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=8d8d62a108d6329049dac63f25c6119db6c44d12'/>
<id>8d8d62a108d6329049dac63f25c6119db6c44d12</id>
<content type='text'>
* SCI_COLOR_PAIR() is now a function teco_color_pair() since it also became
  an inline function in Scinterm.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* SCI_COLOR_PAIR() is now a function teco_color_pair() since it also became
  an inline function in Scinterm.
</pre>
</div>
</content>
</entry>
<entry>
<title>added "email" lexer for writing mails</title>
<updated>2025-03-08T19:03:48+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-08T19:03:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=bdf35b89fe8d653847ab077d4183b71feebd48d2'/>
<id>bdf35b89fe8d653847ab077d4183b71feebd48d2</id>
<content type='text'>
* Highlights both 1st level and 2nd level quotes and signatures.
* This also sets the edge to 78 columns, as is recommended for email and
  enables word wrapping.
  The edge mode is not set, since it kind of looks ugly in Scinterm.
* Helps when using SciTECO as the email editor for instance in the
  Aerc mail client.
* Unfortunately, we cannot set up Scintilla to automatically break words
  after 78 columns (or perhaps that's a good thing).
  You can use the M#rf reformat-paragraph macro to reflow paragraphs
  before sending the mail.
  This will take the edge column into account even if no edge mode is set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Highlights both 1st level and 2nd level quotes and signatures.
* This also sets the edge to 78 columns, as is recommended for email and
  enables word wrapping.
  The edge mode is not set, since it kind of looks ugly in Scinterm.
* Helps when using SciTECO as the email editor for instance in the
  Aerc mail client.
* Unfortunately, we cannot set up Scintilla to automatically break words
  after 78 columns (or perhaps that's a good thing).
  You can use the M#rf reformat-paragraph macro to reflow paragraphs
  before sending the mail.
  This will take the edge column into account even if no edge mode is set.
</pre>
</div>
</content>
</entry>
<entry>
<title>ncurses: support monochrome terminals</title>
<updated>2025-03-07T19:52:45+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-07T19:52:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=a7207d8526dd05e778e3972003a9be1a5106321a'/>
<id>a7207d8526dd05e778e3972003a9be1a5106321a</id>
<content type='text'>
* If the background color would be non-black, render text in reverse
  video. ncurses doesn't do that automatically.
* Fixes rendering under historical terminals like VT100 and VT240,
  but also all of the monochrome versions of modern emulators in terminfo.
* This also improves the situation when $TERM is set to something conservative,
  e.g. when connecting via RS232.
* Scinterm is temporarily changed to my own fork, which already contains
  a monochrome patch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* If the background color would be non-black, render text in reverse
  video. ncurses doesn't do that automatically.
* Fixes rendering under historical terminals like VT100 and VT240,
  but also all of the monochrome versions of modern emulators in terminfo.
* This also improves the situation when $TERM is set to something conservative,
  e.g. when connecting via RS232.
* Scinterm is temporarily changed to my own fork, which already contains
  a monochrome patch.
</pre>
</div>
</content>
</entry>
</feed>
