diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-12-08 05:22:17 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-12-08 16:10:29 +0300 |
commit | bd87ff40e73929e761e1233aa812a6736cacbed1 (patch) | |
tree | 2023be5c0fbe9f81aacf176c05fce740f35f0381 /lib/fnkeys.tes | |
parent | e5884ab2166ab5a03294baa54601b8785e6d9727 (diff) | |
download | sciteco-bd87ff40e73929e761e1233aa812a6736cacbed1.tar.gz |
implemented the ^Q command for converting between line and glyph positions
* As known from DEC TECO, but extended to convert absolute positions to line numbers as well.
:^Q returns the current line.
* Especially useful in macros that accept line arguments,
as it is much shorter than something like
^E@ES/LINEFROMPOSITION//+Q.l@ES/POSITIONFROMLINE//:^E-.
* On the other hand, the fact that ^Q checks the line range means we cannot
easily replace lexer.checkheader with something like
[:J 0,^Q::S...$ ]:
Using SCI_POSITIONFROMLINE still has the advantage that it returns `Z` for out-of-bounds ranges
which would be cumbersome to write with the current ^Q.
* Perhaps there should be a separate command for converting between absolute lines and positions
and :^Q should be repurposed to return a failure boolean for out-of-range values?
* fnkeys.tes could be simplified.
Diffstat (limited to 'lib/fnkeys.tes')
-rw-r--r-- | lib/fnkeys.tes | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/fnkeys.tes b/lib/fnkeys.tes index fd6b332..ab78025 100644 --- a/lib/fnkeys.tes +++ b/lib/fnkeys.tes @@ -36,7 +36,7 @@ *! @[HOME]{ - ESLINEFROMPOSITIONESPOSITIONFROMLINE:U.p + 0+.U.p Q.pU.l <Q.l-."U 1; ' Q.l-.AU.c Q.c- "N Q.c-9"N Q.lU.p 1; '' %.l> Q.pESGETCOLUMN,4EJ Q.p-.M#c @@ -45,7 +45,7 @@ 1U[HOME] @[END]{ - ESLINEFROMPOSITIONESGETLINEENDPOSITIONU.p + :-1ESGETLINEENDPOSITIONU.p Q.pESGETCOLUMN,4EJ Q.p:-.M#c } @@ -54,7 +54,7 @@ @[NPAGE]{ 0,4EJ - ESLINEFROMPOSITION+(ESLINESONSCREEN) + :-1+ESLINESONSCREEN ESPOSITIONFROMLINEU.p Q.p"< Z | Q.p: '-.M#c } @@ -63,7 +63,7 @@ @[PPAGE]{ 0,4EJ - ESLINEFROMPOSITION-(ESLINESONSCREEN)U.l + :-1-ESLINESONSCREENU.l Q.l"< 0 | Q.lESPOSITIONFROMLINE: '-.M#c } @[PPAGE]{(M[PPAGE]} @@ -102,13 +102,13 @@ 1U[SRIGHT] @[UP]{ - 4EJ(ESLINEFROMPOSITION-1)ESFINDCOLUMN:-.M#c + 4EJ,:-2ESFINDCOLUMN:-.M#c } @[UP]{(M[UP]} 1U[UP] @[DOWN]{ - 4EJ(ESLINEFROMPOSITION+1)ESFINDCOLUMN:-.M#c + 4EJ,:ESFINDCOLUMN:-.M#c } @[DOWN]{(M[DOWN]} 1U[DOWN] |