diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-01-28 06:21:12 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-01-28 06:32:47 +0300 |
commit | f2b070cb6ced1828c3328b02f0b437cf19a7cfd1 (patch) | |
tree | a144e64ff9a01bad699e226904d1d427bb912b25 /TODO | |
parent | 56c68477267d28f86b46692754874ea93526f47d (diff) | |
download | sciteco-f2b070cb6ced1828c3328b02f0b437cf19a7cfd1.tar.gz |
cursor movement via fnkeys.tes now preserves the column as in most text editors
* Horizontal movements (left/right cursor keys) establish the current column
and vertical movements (up/down) will try to keep on that column.
* This has long been problematic in SciTECO as it requires state that gets
reversed when the command line replacement takes place.
* I experimented with encoding the current horizontal position into the braced
movement operations as in (123C5U$), but I decided that this was clumsy and
I generally did not want these expressions to become even larger.
* Instead I decided to add some minimal support to the C core in the form of 4EJ
which is like a number register only that it does NOT get reversed on rubout.
This is exploited by the fnkeys.tes macros by storing the current position
beyond replacements.
* In theory, this should be a property of the document, but we cannot easily
store custom parameters per document.
So instead, there is just one global variable.
When editing another buffer, it gets reset to .ESGETCOLUMN$$.
sample.teco_ini has been updated.
* The current X position only makes sense in the context of fnkeys.tes, as
TECO commands like <C> are not necessarily "horizonal" movements.
For the same reason, the core does not try to initialize 4EJ automatically
when editing new buffers.
It's entirely left to the TECO macros.
* The commandline replacement is more robust now as it checks braced
expressions at the end of the command line more thorougly.
It will no longer swallow all preceding braced expressions.
Only if they are at least 4 characters in length and end in `C)` or `R)`.
Diffstat (limited to 'TODO')
0 files changed, 0 insertions, 0 deletions