mirror of
https://github.com/swaywm/sway.git
synced 2025-11-08 13:29:50 -05:00
commands: saner workspace number handling
This commit is contained in:
parent
69e00151bb
commit
e81cc8a575
4 changed files with 29 additions and 18 deletions
|
|
@ -1,4 +1,5 @@
|
|||
#define _XOPEN_SOURCE 500
|
||||
#include <ctype.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
|
|
@ -124,7 +125,11 @@ static struct cmd_results *cmd_move_container(struct sway_container *current,
|
|||
return cmd_results_new(CMD_INVALID, "move",
|
||||
expected_syntax);
|
||||
}
|
||||
ws_name = strdup(argv[3]);
|
||||
if (!isdigit(argv[3][0])) {
|
||||
return cmd_results_new(CMD_INVALID, "move",
|
||||
"Invalid workspace number '%s'", argv[3]);
|
||||
}
|
||||
ws_name = join_args(argv + 3, argc - 3);
|
||||
ws = workspace_by_number(ws_name);
|
||||
} else {
|
||||
ws_name = join_args(argv + 2, argc - 2);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#define _XOPEN_SOURCE 500
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include "log.h"
|
||||
|
|
@ -34,6 +35,10 @@ struct cmd_results *cmd_rename(int argc, char **argv) {
|
|||
}
|
||||
} else if (strcasecmp(argv[1], "number") == 0) {
|
||||
// 'rename workspace number x to new_name'
|
||||
if (!isdigit(argv[2][0])) {
|
||||
return cmd_results_new(CMD_INVALID, "rename",
|
||||
"Invalid workspace number '%s'", argv[2]);
|
||||
}
|
||||
workspace = workspace_by_number(argv[2]);
|
||||
while (argn < argc && strcasecmp(argv[argn], "to") != 0) {
|
||||
++argn;
|
||||
|
|
@ -67,7 +72,8 @@ struct cmd_results *cmd_rename(int argc, char **argv) {
|
|||
strcasecmp(new_name, "next_on_output") == 0 ||
|
||||
strcasecmp(new_name, "prev_on_output") == 0 ||
|
||||
strcasecmp(new_name, "back_and_forth") == 0 ||
|
||||
strcasecmp(new_name, "current") == 0) {
|
||||
strcasecmp(new_name, "current") == 0 ||
|
||||
strcasecmp(new_name, "number") == 0) {
|
||||
free(new_name);
|
||||
return cmd_results_new(CMD_INVALID, "rename",
|
||||
"Cannot use special workspace name '%s'", argv[argn]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#define _XOPEN_SOURCE 500
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include "sway/commands.h"
|
||||
|
|
@ -60,9 +61,13 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {
|
|||
struct sway_container *ws = NULL;
|
||||
if (strcasecmp(argv[0], "number") == 0) {
|
||||
if (argc < 2) {
|
||||
cmd_results_new(CMD_INVALID, "workspace",
|
||||
return cmd_results_new(CMD_INVALID, "workspace",
|
||||
"Expected workspace number");
|
||||
}
|
||||
if (!isdigit(argv[1][0])) {
|
||||
return cmd_results_new(CMD_INVALID, "workspace",
|
||||
"Invalid workspace number '%s'", argv[1]);
|
||||
}
|
||||
if (!(ws = workspace_by_number(argv[1]))) {
|
||||
char *name = join_args(argv + 1, argc - 1);
|
||||
ws = workspace_create(NULL, name);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue