aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/search.c
diff options
context:
space:
mode:
authorRobin Haberkorn <rhaberkorn@fmsbw.de>2026-08-23 00:28:23 +0200
committerRobin Haberkorn <rhaberkorn@fmsbw.de>2026-08-23 00:28:23 +0200
commit32122651bdb51006edce2be3586dd09179bed52f (patch)
tree6fa0bb17ec74693e25eebe8e05a9e04828c3c446 /src/search.c
parent2e097cec409182c3cb39b74489387480bf8a278f (diff)
introduced helper functions teco_qreg_table_get_string() and teco_qreg_table_get_integer()
* Simplifies the common task of querying an integer or string from a Q-Register table. * Undefined Q-Regs are reported as TECO_ERROR_QREGUNDEF, so you can theoretically handle this case. In practice however, it requires less boilerplating to just call teco_qreg_table_find() manually. * It also doesn't make sense to use these functions when getting and setting a register at the same time as you will want to avoid repeated lookups.
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/src/search.c b/src/search.c
index 357a0c0..2b2a696 100644
--- a/src/search.c
+++ b/src/search.c
@@ -928,10 +928,9 @@ teco_state_search_process(teco_machine_main_t *ctx, teco_string_t str, gsize new
{
gint cflags = REG_ADVANCED;
- teco_qreg_t *reg = teco_qreg_table_find(ctx->qreg_table_locals, "\x18", 1); /* ^X */
- g_assert(reg != NULL);
teco_bool_t search_mode;
- if (!reg->vtable->get_integer(reg, &search_mode, error))
+ if (!teco_qreg_table_get_integer(ctx->qreg_table_locals, "\x18", /* ^X */
+ &search_mode, error))
return FALSE;
if (teco_is_failure(search_mode))
cflags |= REG_ICASE;
@@ -1344,12 +1343,9 @@ teco_state_search_kill_done(teco_machine_main_t *ctx, teco_string_t str, GError
if (ctx->flags.mode > TECO_MODE_NORMAL)
return &teco_state_start;
- teco_qreg_t *search_reg = teco_qreg_table_find(&teco_qreg_table_globals, "_", 1);
- g_assert(search_reg != NULL);
-
teco_int_t search_state;
if (!teco_state_search_done(ctx, str, error) ||
- !search_reg->vtable->get_integer(search_reg, &search_state, error))
+ !teco_qreg_table_get_integer(&teco_qreg_table_globals, "_", &search_state, error))
return NULL;
if (teco_is_failure(search_state))
@@ -1433,12 +1429,9 @@ teco_state_search_delete_done(teco_machine_main_t *ctx, teco_string_t str, GErro
if (ctx->flags.mode > TECO_MODE_NORMAL)
return &teco_state_start;
- teco_qreg_t *search_reg = teco_qreg_table_find(&teco_qreg_table_globals, "_", 1);
- g_assert(search_reg != NULL);
-
teco_int_t search_state;
if (!teco_state_search_done(ctx, str, error) ||
- !search_reg->vtable->get_integer(search_reg, &search_state, error))
+ !teco_qreg_table_get_integer(&teco_qreg_table_globals, "_", &search_state, error))
return NULL;
if (teco_is_success(search_state)) {
@@ -1519,12 +1512,9 @@ teco_state_replace_done(teco_machine_main_t *ctx, teco_string_t str, GError **er
if (ctx->flags.mode > TECO_MODE_NORMAL)
return &teco_state_replace_ignore;
- teco_qreg_t *search_reg = teco_qreg_table_find(&teco_qreg_table_globals, "_", 1);
- g_assert(search_reg != NULL);
-
teco_int_t search_state;
if (!teco_state_search_delete_done(ctx, str, error) ||
- !search_reg->vtable->get_integer(search_reg, &search_state, error))
+ !teco_qreg_table_get_integer(&teco_qreg_table_globals, "_", &search_state, error))
return NULL;
return teco_is_success(search_state) ? &teco_state_replace_insert
@@ -1627,12 +1617,9 @@ teco_state_replace_default_done(teco_machine_main_t *ctx, teco_string_t str, GEr
if (ctx->flags.mode > TECO_MODE_NORMAL)
return &teco_state_replace_default_ignore;
- teco_qreg_t *search_reg = teco_qreg_table_find(&teco_qreg_table_globals, "_", 1);
- g_assert(search_reg != NULL);
-
teco_int_t search_state;
if (!teco_state_search_delete_done(ctx, str, error) ||
- !search_reg->vtable->get_integer(search_reg, &search_state, error))
+ !teco_qreg_table_get_integer(&teco_qreg_table_globals, "_", &search_state, error))
return NULL;
return teco_is_success(search_state) ? &teco_state_replace_default_insert