X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcfgparse.y;h=704a415b4c7ace5b5b0a010b2db5927576bd5700;hb=a74fdc64f9647bbc12ab36a6ff4a03f7d9523869;hp=e137fc0258c8d79a3a66eab82b3506a18a4c9fac;hpb=15d83d472bef8c699d75c51145f641d3191a7073;p=i3%2Fi3 diff --git a/src/cfgparse.y b/src/cfgparse.y index e137fc02..704a415b 100644 --- a/src/cfgparse.y +++ b/src/cfgparse.y @@ -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", $3); + config.default_border = strdup($3); + } + ; + workspace: - TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen workspace_name + TOKWORKSPACE WHITESPACE NUMBER WHITESPACE TOKSCREEN WHITESPACE screen optional_workspace_name { int ws_num = $3; if (ws_num < 1) { @@ -379,22 +392,27 @@ workspace: workspace_set_name(ws, $8); } } - | TOKWORKSPACE WHITESPACE NUMBER workspace_name + | TOKWORKSPACE WHITESPACE NUMBER WHITESPACE workspace_name { int ws_num = $3; if (ws_num < 1) { LOG("Invalid workspace assignment, workspace number %d out of range\n", ws_num); } else { - if ($4 != NULL) - workspace_set_name(workspace_get(ws_num - 1), $4); + if ($5 != NULL) + workspace_set_name(workspace_get(ws_num - 1), $5); } } ; +optional_workspace_name: + /* empty */ { $$ = NULL; } + | WHITESPACE workspace_name { $$ = $2; } + ; + workspace_name: - /* NULL */ { $$ = NULL; } - | WHITESPACE QUOTEDSTRING { $$ = $2; } - | WHITESPACE STR { $$ = $2; } + QUOTEDSTRING { $$ = $1; } + | STR { $$ = $1; } + | WORD { $$ = $1; } ; screen: