diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-07 08:35:16 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-07 08:35:16 +0100 |
commit | 408f8311dd071924d62ae10d0078e595e9137a9e (patch) | |
tree | 05c32509a20314aa12043365d6bdb7a53f3df05b /parser.cpp | |
parent | 8a7d756c01d63761226725288caba0a1563389b0 (diff) | |
download | sciteco-408f8311dd071924d62ae10d0078e595e9137a9e.tar.gz |
fixed "-" processing and improved C command, added R command
Diffstat (limited to 'parser.cpp')
-rw-r--r-- | parser.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -73,6 +73,14 @@ StateStart::StateStart() : State() transitions['\v'] = this; } +void +StateStart::move(gint64 n) +{ + sptr_t pos = editor_msg(SCI_GETCURRENTPOS); + editor_msg(SCI_GOTOPOS, pos + n); + undo.push_msg(SCI_GOTOPOS, pos); +} + State * StateStart::custom(gchar chr) { @@ -103,7 +111,7 @@ StateStart::custom(gchar chr) expressions.push_calc(Expressions::OP_ADD); break; case '-': - if (!expressions.args() && + if (!expressions.args() || expressions.peek_num() == G_MAXINT64) expressions.set_num_sign(-expressions.num_sign); else @@ -133,8 +141,10 @@ StateStart::custom(gchar chr) * commands */ case 'C': - editor_msg(SCI_CHARRIGHT); - undo.push_msg(SCI_CHARLEFT); + move(expressions.pop_num_calc()); + break; + case 'R': + move(-expressions.pop_num_calc()); break; case '=': message_display(GTK_MESSAGE_OTHER, "%" G_GINT64_FORMAT, |