]> git.sur5r.net Git - i3/i3/commitdiff
Add 'line' as a configuration parsing primitive
authorEelis van der Weegen <eelis@eelis.net>
Mon, 1 Apr 2013 12:42:41 +0000 (14:42 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 2 Apr 2013 20:26:29 +0000 (22:26 +0200)
…and use it for ignoring comment lines, so that quotes in them
doesn't cause problems anymore.

parser-specs/config.spec
src/config_parser.c

index 6960510d4d386a731b92a3a997befeaf74f9c44c..c6328a0eae0e1b70f063d2c46ce52962f8d56af9 100644 (file)
@@ -49,7 +49,7 @@ state INITIAL:
 
 # We ignore comments and 'set' lines (variables).
 state IGNORE_LINE:
-  end, string
+  line
       -> INITIAL
 
 # floating_minimum_size <width> x <height>
@@ -311,7 +311,7 @@ state MODE:
 
 # We ignore comments and 'set' lines (variables).
 state MODE_IGNORE_LINE:
-  end, string
+  line
       -> MODE
 
 state MODE_BINDING:
@@ -362,7 +362,7 @@ state BAR:
 
 # We ignore comments and 'set' lines (variables).
 state BAR_IGNORE_LINE:
-  end, string
+  line
       -> BAR
 
 state BAR_BAR_COMMAND:
@@ -428,7 +428,7 @@ state BAR_COLORS:
 
 # We ignore comments and 'set' lines (variables).
 state BAR_COLORS_IGNORE_LINE:
-  end, string
+  line
       -> BAR_COLORS
 
 state BAR_COLORS_SINGLE:
index 1cdc7acba8cd745fd1ba4803dbb41233996d5061..f197c39d8a62274b900104e72765833185e04d43 100644 (file)
@@ -446,6 +446,16 @@ struct ConfigResult *parse_config(const char *input, struct context *context) {
                 }
             }
 
+            if (strcmp(token->name, "line") == 0) {
+               while (*walk != '\0' && *walk != '\n' && *walk != '\r')
+                  walk++;
+               next_state(token);
+               token_handled = true;
+               linecnt++;
+               walk++;
+               break;
+            }
+
             if (strcmp(token->name, "end") == 0) {
                 //printf("checking for end: *%s*\n", walk);
                 if (*walk == '\0' || *walk == '\n' || *walk == '\r') {