aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2015-03-02 02:59:01 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2015-03-02 02:59:01 +0100
commit33732749d74adaf06f222236910c4126d08d3cc9 (patch)
treee70647fe4d6dbe5f770d3688a3a3ca098876124f
parent4e6de8bfab612865631c5286e069c1773dee8c28 (diff)
downloadsciteco-33732749d74adaf06f222236910c4126d08d3cc9.tar.gz
fixed re-insertion of incomplete commands
we are not guaranteed to reach the start parser state again if the command is not terminated on the rubbed out command line
-rw-r--r--src/cmdline.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cmdline.cpp b/src/cmdline.cpp
index 02b8b3d..cc6b2b8 100644
--- a/src/cmdline.cpp
+++ b/src/cmdline.cpp
@@ -282,10 +282,12 @@ Cmdline::process_edit_cmd(gchar key)
interface.ssm(SCI_GETWORDCHARS, 0, (sptr_t)wchars);
if (modifier_enabled) {
+ /* reinsert word chars */
while (States::is_string() && rubout_len &&
strchr(wchars, str[len]))
insert();
+ /* reinsert non-word chars */
while (States::is_string() && rubout_len &&
!strchr(wchars, str[len]))
insert();
@@ -304,7 +306,7 @@ Cmdline::process_edit_cmd(gchar key)
/* reinsert command */
do
insert();
- while (States::current != &States::start);
+ while (States::current != &States::start && rubout_len);
} else {
/* rubout command */
do