aboutsummaryrefslogtreecommitdiff
path: root/include/sway
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-06-02 08:09:18 -0700
committerGitHub <noreply@github.com>2018-06-02 08:09:18 -0700
commitb0f2fd94791708a84aac2eccc57855a4ce8b6ec0 (patch)
tree919f22247b71c5562b3c1caff4f0bfa9dfcf0528 /include/sway
parent2d480e754e8287ba747faf1b21d8ecb927d565a1 (diff)
parent85a5c8dabd2561dfe616bea50faf2549e8cb345e (diff)
Merge pull request #2070 from RedSoxFan/generic-config-blocks
Make command block implementation generic
Diffstat (limited to 'include/sway')
-rw-r--r--include/sway/commands.h29
-rw-r--r--include/sway/config.h2
2 files changed, 17 insertions, 14 deletions
diff --git a/include/sway/commands.h b/include/sway/commands.h
index b2255c4b..593ae0f1 100644
--- a/include/sway/commands.h
+++ b/include/sway/commands.h
@@ -3,6 +3,13 @@
#include "config.h"
+typedef struct cmd_results *sway_cmd(int argc, char **argv);
+
+struct cmd_handler {
+ char *command;
+ sway_cmd *handle;
+};
+
/**
* Indicates the result of a command's execution.
*/
@@ -11,16 +18,9 @@ enum cmd_status {
CMD_FAILURE, /**< The command resulted in an error */
CMD_INVALID, /**< Unknown command or parser error */
CMD_DEFER, /**< Command execution deferred */
- // Config Blocks
- CMD_BLOCK_END,
- CMD_BLOCK_MODE,
- CMD_BLOCK_BAR,
- CMD_BLOCK_BAR_COLORS,
- CMD_BLOCK_INPUT,
- CMD_BLOCK_SEAT,
+ CMD_BLOCK,
CMD_BLOCK_COMMANDS,
- CMD_BLOCK_IPC,
- CMD_BLOCK_IPC_EVENTS,
+ CMD_BLOCK_END
};
/**
@@ -45,6 +45,8 @@ enum expected_args {
struct cmd_results *checkarg(int argc, const char *name,
enum expected_args type, int val);
+struct cmd_handler *find_handler(char *line, struct cmd_handler *cmd_handlers,
+ int handlers_size);
/**
* Parse and executes a command.
*/
@@ -54,7 +56,12 @@ struct cmd_results *execute_command(char *command, struct sway_seat *seat);
*
* Do not use this under normal conditions.
*/
-struct cmd_results *config_command(char *command, enum cmd_status block);
+struct cmd_results *config_command(char *command);
+/**
+ * Parse and handle a sub command
+ */
+struct cmd_results *config_subcommand(char **argv, int argc,
+ struct cmd_handler *handlers, size_t handlers_size);
/*
* Parses a command policy rule.
*/
@@ -77,8 +84,6 @@ const char *cmd_results_to_json(struct cmd_results *results);
struct cmd_results *add_color(const char *name,
char *buffer, const char *color);
-typedef struct cmd_results *sway_cmd(int argc, char **argv);
-
sway_cmd cmd_assign;
sway_cmd cmd_bar;
sway_cmd cmd_bindcode;
diff --git a/include/sway/config.h b/include/sway/config.h
index de651ea4..b597da75 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -403,8 +403,6 @@ bool read_config(FILE *file, struct sway_config *config);
*/
void free_config(struct sway_config *config);
-void config_clear_handler_context(struct sway_config *config);
-
void free_sway_variable(struct sway_variable *var);
/**