aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qreg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qreg.h')
-rw-r--r--src/qreg.h31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/qreg.h b/src/qreg.h
index f1c81ac..85da898 100644
--- a/src/qreg.h
+++ b/src/qreg.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2023 Robin Haberkorn
+ * Copyright (C) 2012-2024 Robin Haberkorn
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -41,19 +41,26 @@ extern teco_view_t *teco_qreg_view;
* FIXME: Use TECO_DECLARE_VTABLE_METHOD(gboolean, teco_qreg, set_integer, teco_qreg_t *, teco_int_t, GError **);
* ...
* teco_qreg_set_integer_t set_integer;
+ * ...
+ * teco_qreg_set_integer(qreg, 23, error);
*/
typedef const struct {
gboolean (*set_integer)(teco_qreg_t *qreg, teco_int_t value, GError **error);
gboolean (*undo_set_integer)(teco_qreg_t *qreg, GError **error);
gboolean (*get_integer)(teco_qreg_t *qreg, teco_int_t *ret, GError **error);
- gboolean (*set_string)(teco_qreg_t *qreg, const gchar *str, gsize len, GError **error);
+ gboolean (*set_string)(teco_qreg_t *qreg, const gchar *str, gsize len,
+ guint codepage, GError **error);
gboolean (*undo_set_string)(teco_qreg_t *qreg, GError **error);
gboolean (*append_string)(teco_qreg_t *qreg, const gchar *str, gsize len, GError **error);
gboolean (*undo_append_string)(teco_qreg_t *qreg, GError **error);
- gboolean (*get_string)(teco_qreg_t *qreg, gchar **str, gsize *len, GError **error);
- gint (*get_character)(teco_qreg_t *qreg, guint position, GError **error);
+ gboolean (*get_string)(teco_qreg_t *qreg, gchar **str, gsize *len,
+ guint *codepage, GError **error);
+ gboolean (*get_character)(teco_qreg_t *qreg, teco_int_t position,
+ teco_int_t *chr, GError **error);
+ /* always returns length in glyphs in contrast to get_string() */
+ teco_int_t (*get_length)(teco_qreg_t *qreg, GError **error);
/*
* These callbacks exist only to optimize teco_qreg_stack_push|pop()
@@ -65,6 +72,13 @@ typedef const struct {
gboolean (*edit)(teco_qreg_t *qreg, GError **error);
gboolean (*undo_edit)(teco_qreg_t *qreg, GError **error);
+
+ /*
+ * Load and save already care about undo token
+ * creation.
+ */
+ gboolean (*load)(teco_qreg_t *qreg, const gchar *filename, GError **error);
+ gboolean (*save)(teco_qreg_t *qreg, const gchar *filename, GError **error);
} teco_qreg_vtable_t;
/** @extends teco_rb3str_head_t */
@@ -106,13 +120,6 @@ gboolean teco_qreg_execute(teco_qreg_t *qreg, teco_qreg_table_t *qreg_table_loca
void teco_qreg_undo_set_eol_mode(teco_qreg_t *qreg);
void teco_qreg_set_eol_mode(teco_qreg_t *qreg, gint mode);
-/*
- * Load and save already care about undo token
- * creation.
- */
-gboolean teco_qreg_load(teco_qreg_t *qreg, const gchar *filename, GError **error);
-gboolean teco_qreg_save(teco_qreg_t *qreg, const gchar *filename, GError **error);
-
/** @memberof teco_qreg_t */
static inline void
teco_qreg_free(teco_qreg_t *qreg)
@@ -220,7 +227,7 @@ void teco_machine_qregspec_reset(teco_machine_qregspec_t *ctx);
*/
struct teco_machine_stringbuilding_t *teco_machine_qregspec_get_stringbuilding(teco_machine_qregspec_t *ctx);
-teco_machine_qregspec_status_t teco_machine_qregspec_input(teco_machine_qregspec_t *ctx, gchar chr,
+teco_machine_qregspec_status_t teco_machine_qregspec_input(teco_machine_qregspec_t *ctx, gunichar chr,
teco_qreg_t **result,
teco_qreg_table_t **result_table, GError **error);