]> git.sur5r.net Git - i3/i3/blobdiff - src/cfgparse.y
Bugfix: Correctly clear the urgency hint if a window gets unmapped without clearing...
[i3/i3] / src / cfgparse.y
index e137fc0258c8d79a3a66eab82b3506a18a4c9fac..704a415b4c7ace5b5b0a010b2db5927576bd5700 100644 (file)
@@ -160,6 +160,8 @@ void parse_file(const char *f) {
 
 %}
 
+%expect 1
+
 %union {
         int number;
         char *string;
@@ -194,6 +196,7 @@ void parse_file(const char *f) {
 %token TOKARROW
 %token TOKMODE
 %token TOKNEWCONTAINER
+%token TOKNEWWINDOW
 %token TOKCONTAINERMODE
 %token TOKSTACKLIMIT
 
@@ -209,6 +212,7 @@ line:
         | mode
         | floating_modifier
         | new_container
+        | new_window
         | workspace
         | assign
         | ipcsocket
@@ -298,14 +302,15 @@ mode:
         }
         ;
 
+
 modelines:
         /* empty */
-        | modelines WHITESPACE modeline
         | modelines modeline
         ;
 
 modeline:
-        comment
+        WHITESPACE
+        | comment
         | binding
         {
                 if (current_bindings == NULL) {
@@ -366,8 +371,16 @@ new_container:
         }
         ;
 
+new_window:
+        TOKNEWWINDOW WHITESPACE WORD
+        {
+                LOG("new windows should start in mode %s\n", $<string>3);
+                config.default_border = strdup($<string>3);
+        }
+        ;
+
 workspace:
-        TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen workspace_name
+        TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen optional_workspace_name
         {
                 int ws_num = $<number>3;
                 if (ws_num < 1) {
@@ -379,22 +392,27 @@ workspace:
                                 workspace_set_name(ws, $<string>8);
                 }
         }
-        | TOKWORKSPACE WHITESPACE NUMBER workspace_name
+        | TOKWORKSPACE WHITESPACE NUMBER WHITESPACE workspace_name
         {
                 int ws_num = $<number>3;
                 if (ws_num < 1) {
                         LOG("Invalid workspace assignment, workspace number %d out of range\n", ws_num);
                 } else {
-                        if ($<string>4 != NULL)
-                                workspace_set_name(workspace_get(ws_num - 1), $<string>4);
+                        if ($<string>5 != NULL)
+                                workspace_set_name(workspace_get(ws_num - 1), $<string>5);
                 }
         }
         ;
 
+optional_workspace_name:
+        /* empty */                     { $<string>$ = NULL; }
+        | WHITESPACE workspace_name     { $<string>$ = $<string>2; }
+        ;
+
 workspace_name:
-        /* NULL */                      { $<string>$ = NULL; }
-        | WHITESPACE QUOTEDSTRING       { $<string>$ = $<string>2; }
-        | WHITESPACE STR                { $<string>$ = $<string>2; }
+        QUOTEDSTRING         { $<string>$ = $<string>1; }
+        | STR                { $<string>$ = $<string>1; }
+        | WORD               { $<string>$ = $<string>1; }
         ;
 
 screen: