<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/tests, branch session-extensions</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>bumped target release to v2.4.0 and updated README and TODO</title>
<updated>2025-03-29T14:25:05+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-29T13:53:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=c30a8963a2778ce4e1bd73b5fa667a2fff3693f2'/>
<id>c30a8963a2778ce4e1bd73b5fa667a2fff3693f2</id>
<content type='text'>
* Added a test case for the known bug of out-of-place modifiers.
  Well, this is a syntactic shortcoming rather than a true bug.
  But I did run into it more than once.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Added a test case for the known bug of out-of-place modifiers.
  Well, this is a syntactic shortcoming rather than a true bug.
  But I did run into it more than once.
</pre>
</div>
</content>
</entry>
<entry>
<title>added `@W`, `@P`, `@V` and `@Y` command variants</title>
<updated>2025-03-29T12:29:34+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-29T12:15:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ca0d7656b606703f1b5b52e59f0b46ca0038477e'/>
<id>ca0d7656b606703f1b5b52e59f0b46ca0038477e</id>
<content type='text'>
* They swap the default order of skipping characters.
  For positive arguments: first non-word chars, then word chars.
* This is especially useful after executing the non-at-modified versions.
  For instance, at the beginning of a word, `@W` jumps to its end.
  `@V` would delete the remainder of the word.
* Since they have to evaluate the at-modifier, which has syntactic
  significance, the command implementations can no longer use
  transition tables, so they are in the switch-statements instead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* They swap the default order of skipping characters.
  For positive arguments: first non-word chars, then word chars.
* This is especially useful after executing the non-at-modified versions.
  For instance, at the beginning of a word, `@W` jumps to its end.
  `@V` would delete the remainder of the word.
* Since they have to evaluate the at-modifier, which has syntactic
  significance, the command implementations can no longer use
  transition tables, so they are in the switch-statements instead.
</pre>
</div>
</content>
</entry>
<entry>
<title>added `P` command as a reverse form of `W`</title>
<updated>2025-03-22T12:19:53+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-22T12:19:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ab35f6618bc8beb4543cbc7c62332f82d7d5699c'/>
<id>ab35f6618bc8beb4543cbc7c62332f82d7d5699c</id>
<content type='text'>
* All the movement commands have shortcuts for their negative forms:
  `R` instead of `-C`, `B` instead of `-L`.
  Therefore there was always the need for a `-W` shortcut as well.
* `P` is a good choice because it is a file IO command in TECO-11,
  that does not make sense supporting.
  In Video TECO it toggles between display windows (ie. split screens)
  and I do not plan to support multiple windows in SciTECO.
* Added to the cheat sheet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* All the movement commands have shortcuts for their negative forms:
  `R` instead of `-C`, `B` instead of `-L`.
  Therefore there was always the need for a `-W` shortcut as well.
* `P` is a good choice because it is a file IO command in TECO-11,
  that does not make sense supporting.
  In Video TECO it toggles between display windows (ie. split screens)
  and I do not plan to support multiple windows in SciTECO.
* Added to the cheat sheet.
</pre>
</div>
</content>
</entry>
<entry>
<title>harmonized all word-movement and deletion commands: they move/delete until the beginning of words now</title>
<updated>2025-03-22T11:13:53+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-22T10:45:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=867d22e419afe769f05ad26b61c6ea5ea1432c3c'/>
<id>867d22e419afe769f05ad26b61c6ea5ea1432c3c</id>
<content type='text'>
* All commands and their documentations were inconsistent.
  * ^W rubbed out to the beginning of words.
  * Shift+Right (fnkeys.tes) moved to the beginning of the next word if
    invoked at the beginning of a word and to the end of the next word otherwise.
  * &lt;W&gt; (and &lt;V&gt; and &lt;Y&gt; by extension) moved to the end of the next word.
  * The cheat sheet would claim that &lt;W&gt; moves to the beginning of the next word.
* Video TECO's &lt;W&gt; command would differ again from everything else.
  With positive arguments, it moved to the beginning of words, while
  with negative it moved to end of words.
  I decided not to copy this behavior.
* It has been decided to adopt a consistent beginning-of-words policy.
  -W therefore differs from Video TECO in moving to the beginning of the
  current or previous word.
* teco_find_words() is now based on parsing the document pointer, instead
  of relying on SCI_WORDENDPOSITION, since the latter cannot actually be
  used to skip strictly non-word characters.
  This requires a constant amount of Scintilla messages but will require fewer
  messages only when moving for more than 3 words.
* The semantics of &lt;W&gt; are therefore now consistent with Vim and Emacs as well.
* Shift+Right/Left is still based on SCI_WORDENDPOSITION, so it's behavior
  differs slightly from &lt;W&gt; for instance at the end of lines, as it will
  stop at linebreaks.
* Unfortunately, these changes will break lots of macros, among others
  the M#rf, M#sp and git.blame macros ("Useful macros" from the wiki).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* All commands and their documentations were inconsistent.
  * ^W rubbed out to the beginning of words.
  * Shift+Right (fnkeys.tes) moved to the beginning of the next word if
    invoked at the beginning of a word and to the end of the next word otherwise.
  * &lt;W&gt; (and &lt;V&gt; and &lt;Y&gt; by extension) moved to the end of the next word.
  * The cheat sheet would claim that &lt;W&gt; moves to the beginning of the next word.
* Video TECO's &lt;W&gt; command would differ again from everything else.
  With positive arguments, it moved to the beginning of words, while
  with negative it moved to end of words.
  I decided not to copy this behavior.
* It has been decided to adopt a consistent beginning-of-words policy.
  -W therefore differs from Video TECO in moving to the beginning of the
  current or previous word.
* teco_find_words() is now based on parsing the document pointer, instead
  of relying on SCI_WORDENDPOSITION, since the latter cannot actually be
  used to skip strictly non-word characters.
  This requires a constant amount of Scintilla messages but will require fewer
  messages only when moving for more than 3 words.
* The semantics of &lt;W&gt; are therefore now consistent with Vim and Emacs as well.
* Shift+Right/Left is still based on SCI_WORDENDPOSITION, so it's behavior
  differs slightly from &lt;W&gt; for instance at the end of lines, as it will
  stop at linebreaks.
* Unfortunately, these changes will break lots of macros, among others
  the M#rf, M#sp and git.blame macros ("Useful macros" from the wiki).
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed rubout of Q-Register specifications</title>
<updated>2025-03-21T10:40:52+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-21T10:26:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=33f71654136014bac094babaaa81d91245fdd24c'/>
<id>33f71654136014bac094babaaa81d91245fdd24c</id>
<content type='text'>
* This was a regression introduced by 257a0bf128e109442dce91c4aaa1d97fed17ad1a.
* The undo token that frees newly allocated teco_machine_qregspec_t must actually
  reset the pointer as well since any subsequent token, pushed by teco_undo_qregspec_own(),
  will expect a valid pointer.
* Could have been done via
  ctx-&gt;expectqreg = NULL;
  teco_undo_qregspec_own(ctx-&gt;expectqreg);
  but using a special clear function requires less memory and is easier to understand.
* Added test case. This wouldn't always crash, but should definitely show up in Valgrind.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This was a regression introduced by 257a0bf128e109442dce91c4aaa1d97fed17ad1a.
* The undo token that frees newly allocated teco_machine_qregspec_t must actually
  reset the pointer as well since any subsequent token, pushed by teco_undo_qregspec_own(),
  will expect a valid pointer.
* Could have been done via
  ctx-&gt;expectqreg = NULL;
  teco_undo_qregspec_own(ctx-&gt;expectqreg);
  but using a special clear function requires less memory and is easier to understand.
* Added test case. This wouldn't always crash, but should definitely show up in Valgrind.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed leaking data on rubout</title>
<updated>2025-03-19T09:32:10+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-19T09:32:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=257a0bf128e109442dce91c4aaa1d97fed17ad1a'/>
<id>257a0bf128e109442dce91c4aaa1d97fed17ad1a</id>
<content type='text'>
* Objects, that are restored with TECO_DEFINE_UNDO_OBJECT_OWN(),
  could actually leak memory on rubout since the old object was not
  deleted when overwriting it.
* Now that it is, it is crucial to at least nullify objects/pointers
  after calling the corresponding push-function.
  These conditions are now explicitly documented.
* The test suite now runs successfully under Valgrind even with full leak checking.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Objects, that are restored with TECO_DEFINE_UNDO_OBJECT_OWN(),
  could actually leak memory on rubout since the old object was not
  deleted when overwriting it.
* Now that it is, it is crucial to at least nullify objects/pointers
  after calling the corresponding push-function.
  These conditions are now explicitly documented.
* The test suite now runs successfully under Valgrind even with full leak checking.
</pre>
</div>
</content>
</entry>
<entry>
<title>test suite: perform leak checking when run under Valgrind</title>
<updated>2025-03-17T14:35:13+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-17T14:35:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=6bc8e4a4caaa13b832c88f345e33f94ab4b83a13'/>
<id>6bc8e4a4caaa13b832c88f345e33f94ab4b83a13</id>
<content type='text'>
This became the default in later Valgrind versions.
With leak checking, the test suite does not currently run cleanly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This became the default in later Valgrind versions.
With leak checking, the test suite does not currently run cleanly.
</pre>
</div>
</content>
</entry>
<entry>
<title>rewrote &lt;W&gt; command on the same basis as &lt;V&gt; and &lt;Y&gt;</title>
<updated>2025-03-12T23:14:03+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-12T23:14:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=541bee1c6d56ce81a0302263af006b53dc1aea64'/>
<id>541bee1c6d56ce81a0302263af006b53dc1aea64</id>
<content type='text'>
* &lt;W&gt; was also using keyboard movement commands.
* This fixes an inconsistency between the handling of punctuation characters,
  e.g. "(word" followed by -W vs. Y.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* &lt;W&gt; was also using keyboard movement commands.
* This fixes an inconsistency between the handling of punctuation characters,
  e.g. "(word" followed by -W vs. Y.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed the `Y` command: no longer delete any characters after dot</title>
<updated>2025-03-08T02:11:56+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-03-08T01:54:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7bcd3d8fee485d2fdd6af2d0362d2a59b374c724'/>
<id>7bcd3d8fee485d2fdd6af2d0362d2a59b374c724</id>
<content type='text'>
* This has __always__ been broken.
  It's been especially annoying when pressing `Y` at the end of a line with trailing whitespace
  since the linebreak would also be deleted.
  This was because `Y` always deleted the entire word or non-word character-span.
  This was inconsistent with `V`.
* We now use SCI_WORDSTART|ENDPOSITION instead of the keyboard commands.
  It therefore also requires less Scintilla messages (4+2*n vs. 4+4*n).
  Most importantly, we can now check for errors before changing the buffer,
  so there is no need to undo anything in case of errors.
  This should always be the preferred strategy.
* Added test case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This has __always__ been broken.
  It's been especially annoying when pressing `Y` at the end of a line with trailing whitespace
  since the linebreak would also be deleted.
  This was because `Y` always deleted the entire word or non-word character-span.
  This was inconsistent with `V`.
* We now use SCI_WORDSTART|ENDPOSITION instead of the keyboard commands.
  It therefore also requires less Scintilla messages (4+2*n vs. 4+4*n).
  Most importantly, we can now check for errors before changing the buffer,
  so there is no need to undo anything in case of errors.
  This should always be the preferred strategy.
* Added test case.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup: removed the `?` rubout test case</title>
<updated>2025-02-24T01:21:56+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2025-02-24T01:21:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ccf9ee2465497983b78e2b354926bcd390f27615'/>
<id>ccf9ee2465497983b78e2b354926bcd390f27615</id>
<content type='text'>
We cannot practically test `?` since it relies on women pages being installed
into the $SCITECOPATH.
While we do set $SCITECOPATH to the source tree, we cannot currently provide
the generated women pages to test scripts, unless installing the project first.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We cannot practically test `?` since it relies on women pages being installed
into the $SCITECOPATH.
While we do set $SCITECOPATH to the source tree, we cannot currently provide
the generated women pages to test scripts, unless installing the project first.
</pre>
</div>
</content>
</entry>
</feed>
