aboutsummaryrefslogtreecommitdiffhomepage
path: root/TODO
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-01-28 06:21:12 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-01-28 06:32:47 +0300
commitf2b070cb6ced1828c3328b02f0b437cf19a7cfd1 (patch)
treea144e64ff9a01bad699e226904d1d427bb912b25 /TODO
parent56c68477267d28f86b46692754874ea93526f47d (diff)
downloadsciteco-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