aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parser.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2017-03-25 06:47:10 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2017-03-25 06:57:17 +0100
commit90baf34034af9363ee4cfa1654a8cc72dfc8c62e (patch)
treeb4b912e42c0246d735b33f1f0babb1475acba1ab /src/parser.h
parent2491d5f30573d9e5e72b3c7d2eac8788bbe69dd4 (diff)
downloadsciteco-90baf34034af9363ee4cfa1654a8cc72dfc8c62e.tar.gz
0,8ED: Automatic case-folding of commands
* when enabled, it will automatically upper-case all one or two letter commands (which are case insensitive). * also affects the up-carret control commands, so they when inserted they look more like real control commands. * specifically does not affect case-insensitive Q-Register specifications * the result are command lines that are better readable and conform to the coding style used in SciTECO's standard library. This eases reusing command lines as well. * Consequently, string-building and pattern match characters should be case-folded as well, but they aren't currently since State::process_edit_cmd() does not have sufficient insight into the MicroStateMachines. Also, it could not be delegated to the MicroStateMachines. Perhaps they should be abandoned in favour of embeddedable regular state machines; or regular state machines with a stack of return states?
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/parser.h b/src/parser.h
index 56e58c4..f61d335 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -124,6 +124,18 @@ public:
}
};
+/**
+ * Base class of states with case-insenstive input.
+ *
+ * This is meant for states accepting command characters
+ * that can possibly be case-folded.
+ */
+class StateCaseInsensitive : public State {
+protected:
+ /* in cmdline.cpp */
+ void process_edit_cmd(gchar key);
+};
+
template <typename Type>
class MicroStateMachine : public Object {
protected:
@@ -252,7 +264,7 @@ protected:
void process_edit_cmd(gchar key);
};
-class StateStart : public State {
+class StateStart : public StateCaseInsensitive {
public:
StateStart();
@@ -276,7 +288,7 @@ private:
}
};
-class StateControl : public State {
+class StateControl : public StateCaseInsensitive {
public:
StateControl();
@@ -292,7 +304,7 @@ private:
State *custom(gchar chr);
};
-class StateEscape : public State {
+class StateEscape : public StateCaseInsensitive {
public:
StateEscape();
@@ -312,7 +324,7 @@ private:
}
};
-class StateFCommand : public State {
+class StateFCommand : public StateCaseInsensitive {
public:
StateFCommand();
@@ -344,7 +356,7 @@ private:
State *got_file(const gchar *filename);
};
-class StateCondCommand : public State {
+class StateCondCommand : public StateCaseInsensitive {
public:
StateCondCommand();
@@ -352,7 +364,7 @@ private:
State *custom(gchar chr);
};
-class StateECommand : public State {
+class StateECommand : public StateCaseInsensitive {
public:
StateECommand();