aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qreg.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-22 16:59:07 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-23 02:33:49 +0300
commit1cfe37610253c20a4fcb0d937c29e70894ecc4f5 (patch)
treeac05844c25fc0918e8fd451d8912fd7f1964acb7 /src/qreg.h
parent07b52f78680858683acb4e40b158f8926285cae4 (diff)
downloadsciteco-1cfe37610253c20a4fcb0d937c29e70894ecc4f5.tar.gz
the search mode and current radix are mapped to __local__ Q-Registers ^X and ^R now (refs #17)
* This way the search mode and radix are local to the current macro frame, unless the macro was invoked with :Mq. If colon-modified, you can reproduce the same effect by calling [.^X 0^X ... ].^X * The radix register is cached in the Q-Reg table as an optimization. This could be done with the other "special" registers as well, but at the cost of larger stack frames. * In order to allow constructs like [.^X typed with upcarets, the Q-Register specification syntax has been extended: ^c is the corresponding control code instead of the register "^".
Diffstat (limited to 'src/qreg.h')
-rw-r--r--src/qreg.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/qreg.h b/src/qreg.h
index e9a9b1b..4a7c15c 100644
--- a/src/qreg.h
+++ b/src/qreg.h
@@ -144,9 +144,16 @@ struct teco_qreg_table_t {
* b) The top-level local register table.
*/
gboolean must_undo;
+
+ /**
+ * The radix register in this local Q-Register table or NULL.
+ * This is an optimization to avoid frequent table lookups.
+ */
+ teco_qreg_t *radix;
};
void teco_qreg_table_init(teco_qreg_table_t *table, gboolean must_undo);
+void teco_qreg_table_init_locals(teco_qreg_table_t *table, gboolean must_undo);
/** @memberof teco_qreg_table_t */
static inline teco_qreg_t *