aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 08:35:16 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 08:35:16 +0100
commit408f8311dd071924d62ae10d0078e595e9137a9e (patch)
tree05c32509a20314aa12043365d6bdb7a53f3df05b /parser.cpp
parent8a7d756c01d63761226725288caba0a1563389b0 (diff)
downloadsciteco-408f8311dd071924d62ae10d0078e595e9137a9e.tar.gz
fixed "-" processing and improved C command, added R command
Diffstat (limited to 'parser.cpp')
-rw-r--r--parser.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/parser.cpp b/parser.cpp
index 6c92bc2..7978962 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -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,