aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/fnkeys.tes
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-12-08 05:22:17 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-12-08 16:10:29 +0300
commitbd87ff40e73929e761e1233aa812a6736cacbed1 (patch)
tree2023be5c0fbe9f81aacf176c05fce740f35f0381 /lib/fnkeys.tes
parente5884ab2166ab5a03294baa54601b8785e6d9727 (diff)
downloadsciteco-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.tes12
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]