aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/cmdline.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/cmdline.c b/src/cmdline.c
index 00bd1a4..f8bcefd 100644
--- a/src/cmdline.c
+++ b/src/cmdline.c
@@ -100,19 +100,20 @@ teco_cmdline_insert(const gchar *data, gsize len, GError **error)
if (!data) {
if (teco_cmdline.effective_len < teco_cmdline.str.len)
teco_cmdline.effective_len++;
+ } else if (len <= teco_cmdline.str.len - teco_cmdline.effective_len &&
+ !teco_string_cmp(&src, teco_cmdline.str.data + teco_cmdline.effective_len, len)) {
+ teco_cmdline.effective_len += len;
} else {
- if (!teco_string_cmp(&src, teco_cmdline.str.data + teco_cmdline.effective_len,
- teco_cmdline.str.len - teco_cmdline.effective_len)) {
- teco_cmdline.effective_len += len;
- } else {
- if (teco_cmdline.effective_len < teco_cmdline.str.len)
- /* automatically disable immediate editing modifier */
- teco_cmdline.modifier_enabled = FALSE;
+ if (teco_cmdline.effective_len < teco_cmdline.str.len)
+ /*
+ * Automatically disable immediate editing modifier.
+ * FIXME: Should we show a message as when pressing ^G?
+ */
+ teco_cmdline.modifier_enabled = FALSE;
- teco_cmdline.str.len = teco_cmdline.effective_len;
- teco_string_append(&teco_cmdline.str, data, len);
- teco_cmdline.effective_len = teco_cmdline.str.len;
- }
+ teco_cmdline.str.len = teco_cmdline.effective_len;
+ teco_string_append(&teco_cmdline.str, data, len);
+ teco_cmdline.effective_len = teco_cmdline.str.len;
}
/*