aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-08 04:39:28 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-08 04:39:28 +0100
commit779bb1654d20af6139f17bdaf9a38bcb75d20965 (patch)
treecc403555d0402e369fbaa9770cc4dbe4a383ea1d /parser.cpp
parentb58893781bcb8feeba8c4743ae3d5e6083dc010e (diff)
downloadsciteco-779bb1654d20af6139f17bdaf9a38bcb75d20965.tar.gz
EX command
Diffstat (limited to 'parser.cpp')
-rw-r--r--parser.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/parser.cpp b/parser.cpp
index df87b32..61e1398 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -169,6 +169,7 @@ StateStart::StateStart() : State()
transitions['!'] = &states.label;
transitions['^'] = &states.control;
+ transitions['E'] = &states.ecommand;
transitions['I'] = &states.insert;
}
@@ -552,6 +553,28 @@ StateControl::custom(gchar chr)
return &states.start;
}
+StateECommand::StateECommand() : State()
+{
+ transitions['\0'] = this;
+}
+
+State *
+StateECommand::custom(gchar chr)
+{
+ switch (g_ascii_toupper(chr)) {
+ case 'X':
+ BEGIN_EXEC(&states.start);
+ undo.push_var<bool>(quit_requested);
+ quit_requested = true;
+ break;
+
+ default:
+ return NULL;
+ }
+
+ return &states.start;
+}
+
/*
* NOTE: cannot support VideoTECO's <n>I because
* beginning and end of strings must be determined