aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parser.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2016-02-16 03:34:55 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2016-02-16 03:34:55 +0100
commit52a8d7ff2b7454865b486c0f972395b6ccffd31a (patch)
treec012c9d0ecd9a1c84db96758a9ef4a6ae6584d6b /src/parser.h
parent107536fe38773ebe408cee5e01add97989797370 (diff)
downloadsciteco-52a8d7ff2b7454865b486c0f972395b6ccffd31a.tar.gz
fixed function key macros and command reinsertion after ^[
* one would expect function key macros masked for the start state to work after ^[ ($), but since it has its own state now, this was broken since f08187e454f56954b41d95615ca2e370ba19667e. * Similarily command reinsertion would reinsert too much after $, since the parser wouldn't be in the "real" start state. * The "escape" state should be handled like the start state (where new commands can begin) from the perspective of the user -- the difference is not even documented, it's an implementation detail.
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/parser.h b/src/parser.h
index b502f46..b18e13c 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -333,6 +333,17 @@ namespace States {
extern State *current;
static inline bool
+ is_start()
+ {
+ /*
+ * The "escape" state exists only as a hack,
+ * to support $$. Otherwise it should behave
+ * like the start state.
+ */
+ return current == &start || current == &escape;
+ }
+
+ static inline bool
is_string()
{
return dynamic_cast<StateExpectString *>(current);