aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cmdline.cpp
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/cmdline.cpp
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/cmdline.cpp')
-rw-r--r--src/cmdline.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/cmdline.cpp b/src/cmdline.cpp
index f10da33..daf1a9b 100644
--- a/src/cmdline.cpp
+++ b/src/cmdline.cpp
@@ -614,6 +614,17 @@ State::process_edit_cmd(gchar key)
}
void
+StateCaseInsensitive::process_edit_cmd(gchar key)
+{
+ if (Flags::ed & Flags::ED_AUTOCASEFOLD)
+ /* will not modify non-letter keys */
+ key = g_ascii_islower(key) ? g_ascii_toupper(key)
+ : g_ascii_tolower(key);
+
+ State::process_edit_cmd(key);
+}
+
+void
StateExpectString::process_edit_cmd(gchar key)
{
switch (key) {