From d41e8af294d0e23820576a8612a7ec1b37482dee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 19 Sep 2016 19:21:18 +0200 Subject: vis: also list :set options in :help output The help formatting could probably be improved, short single line help texts are still missing. Patches welcome. Close #283 --- sam.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'sam.c') diff --git a/sam.c b/sam.c index 7885c89..662eb7d 100644 --- a/sam.c +++ b/sam.c @@ -169,6 +169,50 @@ static const CommandDef cmddef_select = static const CommandDef cmddef_user = { NULL, NULL, CMD_ARGV|CMD_FORCE|CMD_ONCE, NULL, cmd_user }; +/* :set command options */ +typedef struct { + const char *names[3]; /* name and optional alias */ + enum { + OPTION_TYPE_STRING, + OPTION_TYPE_BOOL, + OPTION_TYPE_NUMBER, + OPTION_TYPE_UNSIGNED, + } type; + enum { + OPTION_FLAG_OPTIONAL = 1 << 0, /* value is optional */ + OPTION_FLAG_WINDOW = 1 << 1, /* option requires an active window */ + } flags; + const char *help; /* short, one line help text */ +} OptionDef; + +enum { + OPTION_AUTOINDENT, + OPTION_EXPANDTAB, + OPTION_TABWIDTH, + OPTION_THEME, + OPTION_SYNTAX, + OPTION_SHOW, + OPTION_NUMBER, + OPTION_NUMBER_RELATIVE, + OPTION_CURSOR_LINE, + OPTION_COLOR_COLUMN, + OPTION_HORIZON, +}; + +static const OptionDef options[] = { + [OPTION_AUTOINDENT] = { { "autoindent", "ai" }, OPTION_TYPE_BOOL }, + [OPTION_EXPANDTAB] = { { "expandtab", "et" }, OPTION_TYPE_BOOL }, + [OPTION_TABWIDTH] = { { "tabwidth", "tw" }, OPTION_TYPE_NUMBER }, + [OPTION_THEME] = { { "theme" }, OPTION_TYPE_STRING, }, + [OPTION_SYNTAX] = { { "syntax" }, OPTION_TYPE_STRING, OPTION_FLAG_WINDOW|OPTION_FLAG_OPTIONAL }, + [OPTION_SHOW] = { { "show" }, OPTION_TYPE_STRING, OPTION_FLAG_WINDOW }, + [OPTION_NUMBER] = { { "numbers", "nu" }, OPTION_TYPE_BOOL, OPTION_FLAG_WINDOW }, + [OPTION_NUMBER_RELATIVE] = { { "relativenumbers", "rnu" }, OPTION_TYPE_BOOL, OPTION_FLAG_WINDOW }, + [OPTION_CURSOR_LINE] = { { "cursorline", "cul" }, OPTION_TYPE_BOOL, OPTION_FLAG_WINDOW }, + [OPTION_COLOR_COLUMN] = { { "colorcolumn", "cc" }, OPTION_TYPE_NUMBER, OPTION_FLAG_WINDOW }, + [OPTION_HORIZON] = { { "horizon" }, OPTION_TYPE_UNSIGNED, OPTION_FLAG_WINDOW }, +}; + bool sam_init(Vis *vis) { if (!(vis->cmds = map_new())) return false; -- cgit v1.2.3