aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core-commands.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-08-31 23:01:42 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-09-09 18:22:21 +0200
commitb146ccd7a7513b910affd86848c704d600df3090 (patch)
tree5c9e2f65d43aee57c8fc0e9e2616754781857276 /src/core-commands.c
parentdb5ab171995bded490c65ed299c9ff066c41c413 (diff)
downloadsciteco-b146ccd7a7513b910affd86848c704d600df3090.tar.gz
avoid redunancies between teco_qreg_plain_get_character() and teco_state_start_get() (refs #5)
Diffstat (limited to 'src/core-commands.c')
-rw-r--r--src/core-commands.c27
1 files changed, 1 insertions, 26 deletions
diff --git a/src/core-commands.c b/src/core-commands.c
index 951e001..98097bb 100644
--- a/src/core-commands.c
+++ b/src/core-commands.c
@@ -1045,32 +1045,7 @@ teco_state_start_get(teco_machine_main_t *ctx, GError **error)
return;
}
- teco_int_t ret;
-
- if (teco_interface_ssm(SCI_GETCODEPAGE, 0, 0) == SC_CP_UTF8) {
- gchar buf[4+1];
- struct Sci_TextRangeFull range = {
- .chrg = {get_pos, MIN(len, get_pos+sizeof(buf)-1)},
- .lpstrText = buf
- };
- /*
- * Probably faster than SCI_GETRANGEPOINTER+SCI_GETGAPPOSITION
- * or repeatedly calling SCI_GETCHARAT.
- */
- teco_interface_ssm(SCI_GETTEXTRANGEFULL, 0, (sptr_t)&range);
- /*
- * Make sure that the -1/-2 error values are preserved.
- * The sign bit in UCS-4/UTF-32 is unused, so this will even
- * suffice if TECO_INTEGER == 32.
- */
- ret = (gint32)g_utf8_get_char_validated(buf, -1);
- } else {
- // FIXME: Everything else is a single-byte encoding?
- /* internally, the character is casted to signed char */
- ret = (guchar)teco_interface_ssm(SCI_GETCHARAT, get_pos, 0);
- }
-
- teco_expressions_push(ret);
+ teco_expressions_push(teco_interface_get_character(get_pos, len));
}
static teco_state_t *