Implement exec, exit, level, restart (without testcases for now)
This commit is contained in:
parent
6a1c34d2c5
commit
98dbe63e35
|
@ -104,6 +104,9 @@ prev { return TOK_PREV; }
|
||||||
split { return TOK_SPLIT; }
|
split { return TOK_SPLIT; }
|
||||||
horizontal { return TOK_HORIZONTAL; }
|
horizontal { return TOK_HORIZONTAL; }
|
||||||
vertical { return TOK_VERTICAL; }
|
vertical { return TOK_VERTICAL; }
|
||||||
|
level { return TOK_LEVEL; }
|
||||||
|
up { return TOK_UP; }
|
||||||
|
down { return TOK_DOWN; }
|
||||||
|
|
||||||
class { BEGIN(WANT_QSTRING); return TOK_CLASS; }
|
class { BEGIN(WANT_QSTRING); return TOK_CLASS; }
|
||||||
id { BEGIN(WANT_QSTRING); return TOK_ID; }
|
id { BEGIN(WANT_QSTRING); return TOK_ID; }
|
||||||
|
|
|
@ -87,6 +87,7 @@ void parse_cmd(const char *new) {
|
||||||
%union {
|
%union {
|
||||||
char *string;
|
char *string;
|
||||||
char chr;
|
char chr;
|
||||||
|
int number;
|
||||||
}
|
}
|
||||||
|
|
||||||
%token TOK_ATTACH "attach"
|
%token TOK_ATTACH "attach"
|
||||||
|
@ -116,6 +117,9 @@ void parse_cmd(const char *new) {
|
||||||
%token TOK_SPLIT "split"
|
%token TOK_SPLIT "split"
|
||||||
%token TOK_HORIZONTAL "horizontal"
|
%token TOK_HORIZONTAL "horizontal"
|
||||||
%token TOK_VERTICAL "vertical"
|
%token TOK_VERTICAL "vertical"
|
||||||
|
%token TOK_LEVEL "level"
|
||||||
|
%token TOK_UP "up"
|
||||||
|
%token TOK_DOWN "down"
|
||||||
|
|
||||||
%token TOK_CLASS "class"
|
%token TOK_CLASS "class"
|
||||||
%token TOK_ID "id"
|
%token TOK_ID "id"
|
||||||
|
@ -241,13 +245,11 @@ operations:
|
||||||
operation:
|
operation:
|
||||||
exec
|
exec
|
||||||
| exit
|
| exit
|
||||||
/*| reload
|
|
||||||
| restart
|
| restart
|
||||||
|
/*| reload
|
||||||
| mark
|
| mark
|
||||||
| layout
|
| layout
|
||||||
| border
|
| border
|
||||||
| mode
|
|
||||||
| workspace
|
|
||||||
| move*/
|
| move*/
|
||||||
| workspace
|
| workspace
|
||||||
| attach
|
| attach
|
||||||
|
@ -258,12 +260,15 @@ operation:
|
||||||
| next
|
| next
|
||||||
| prev
|
| prev
|
||||||
| split
|
| split
|
||||||
|
| mode
|
||||||
|
| level
|
||||||
;
|
;
|
||||||
|
|
||||||
exec:
|
exec:
|
||||||
TOK_EXEC WHITESPACE STR
|
TOK_EXEC WHITESPACE STR
|
||||||
{
|
{
|
||||||
printf("should execute %s\n", $<string>3);
|
printf("should execute %s\n", $<string>3);
|
||||||
|
start_application($<string>3);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -271,6 +276,15 @@ exit:
|
||||||
TOK_EXIT
|
TOK_EXIT
|
||||||
{
|
{
|
||||||
printf("exit, bye bye\n");
|
printf("exit, bye bye\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
restart:
|
||||||
|
TOK_RESTART
|
||||||
|
{
|
||||||
|
printf("restarting i3\n");
|
||||||
|
i3_restart();
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -346,6 +360,7 @@ fullscreen:
|
||||||
next:
|
next:
|
||||||
TOK_NEXT WHITESPACE direction
|
TOK_NEXT WHITESPACE direction
|
||||||
{
|
{
|
||||||
|
/* TODO: use matches */
|
||||||
printf("should select next window in direction %c\n", $<chr>3);
|
printf("should select next window in direction %c\n", $<chr>3);
|
||||||
tree_next('n', ($<chr>3 == 'v' ? VERT : HORIZ));
|
tree_next('n', ($<chr>3 == 'v' ? VERT : HORIZ));
|
||||||
}
|
}
|
||||||
|
@ -354,6 +369,7 @@ next:
|
||||||
prev:
|
prev:
|
||||||
TOK_PREV WHITESPACE direction
|
TOK_PREV WHITESPACE direction
|
||||||
{
|
{
|
||||||
|
/* TODO: use matches */
|
||||||
printf("should select prev window in direction %c\n", $<chr>3);
|
printf("should select prev window in direction %c\n", $<chr>3);
|
||||||
tree_next('p', ($<chr>3 == 'v' ? VERT : HORIZ));
|
tree_next('p', ($<chr>3 == 'v' ? VERT : HORIZ));
|
||||||
}
|
}
|
||||||
|
@ -362,6 +378,7 @@ prev:
|
||||||
split:
|
split:
|
||||||
TOK_SPLIT WHITESPACE direction
|
TOK_SPLIT WHITESPACE direction
|
||||||
{
|
{
|
||||||
|
/* TODO: use matches */
|
||||||
printf("splitting in direction %c\n", $<chr>3);
|
printf("splitting in direction %c\n", $<chr>3);
|
||||||
tree_split(focused, ($<chr>3 == 'v' ? VERT : HORIZ));
|
tree_split(focused, ($<chr>3 == 'v' ? VERT : HORIZ));
|
||||||
}
|
}
|
||||||
|
@ -373,3 +390,31 @@ direction:
|
||||||
| TOK_VERTICAL { $<chr>$ = 'v'; }
|
| TOK_VERTICAL { $<chr>$ = 'v'; }
|
||||||
| 'v' { $<chr>$ = 'v'; }
|
| 'v' { $<chr>$ = 'v'; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
mode:
|
||||||
|
TOK_MODE WHITESPACE layout_mode
|
||||||
|
{
|
||||||
|
printf("should switch mode to %s\n", ($<number>3 == TOK_FLOATING ? "floating" : "tiling"));
|
||||||
|
/* TODO: actually switch mode (not toggle) */
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
layout_mode:
|
||||||
|
TOK_FLOATING { $<number>$ = TOK_FLOATING; }
|
||||||
|
| TOK_TILING { $<number>$ = TOK_TILING; }
|
||||||
|
;
|
||||||
|
|
||||||
|
level:
|
||||||
|
TOK_LEVEL WHITESPACE level_direction
|
||||||
|
{
|
||||||
|
printf("level %c\n", $<chr>3);
|
||||||
|
if ($<chr>3 == 'u')
|
||||||
|
level_up();
|
||||||
|
else level_down();
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
level_direction:
|
||||||
|
TOK_UP { $<chr>$ = 'u'; }
|
||||||
|
| TOK_DOWN { $<chr>$ = 'd'; }
|
||||||
|
;
|
||||||
|
|
Loading…
Reference in New Issue