Allow assign to workspace by number
Makes "assign [<criteria>] workspace number <number>" work in the same manner as "move to workspace number <number>" instead of assigning the window to a workspace named "number <number>". config.spec is modified to expect a 'number' string and an extra argument is used in cfg_assign. For workspaces that don't exist yet, workspace_get is used as a fallback. This also allows the user to assign to "<number> <workspace>" eg "2: work" and the full name will be used if workspace number 2 doesn't exist yet. Fixes #2590.
This commit is contained in:
@ -377,15 +377,21 @@ CFGFUN(color, const char *colorclass, const char *border, const char *background
|
||||
#undef APPLY_COLORS
|
||||
}
|
||||
|
||||
CFGFUN(assign, const char *workspace) {
|
||||
CFGFUN(assign, const char *workspace, bool is_number) {
|
||||
if (match_is_empty(current_match)) {
|
||||
ELOG("Match is empty, ignoring this assignment\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_number && ws_name_to_number(workspace) == -1) {
|
||||
ELOG("Could not parse initial part of \"%s\" as a number.\n", workspace);
|
||||
return;
|
||||
}
|
||||
|
||||
DLOG("New assignment, using above criteria, to workspace \"%s\".\n", workspace);
|
||||
Assignment *assignment = scalloc(1, sizeof(Assignment));
|
||||
match_copy(&(assignment->match), current_match);
|
||||
assignment->type = A_TO_WORKSPACE;
|
||||
assignment->type = is_number ? A_TO_WORKSPACE_NUMBER : A_TO_WORKSPACE;
|
||||
assignment->dest.workspace = sstrdup(workspace);
|
||||
TAILQ_INSERT_TAIL(&assignments, assignment, assignments);
|
||||
}
|
||||
|
Reference in New Issue
Block a user