xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit 7555cc08ae04bcdf0152cd602067bf290eddb32c

Fix spelling mistake and correct tests
Was buildin
Tests for options didn't know about :set all
Author: xaizek
Author date (UTC): 2011-09-28 08:26
Committer name: xaizek
Committer date (UTC): 2011-09-28 08:26
Parent(s): f3bccb10163a2a13e6e586d0f189eea03c2df0a7
Signing key:
Tree: c95c5f25a3c8cb3d96e1f47aa2465bdc9e591cf5
File Lines added Lines deleted
src/change_dialog.c 14 14
src/cmdline.c 31 31
src/cmds.c 13 13
src/cmds.h 3 3
src/commands.c 2 2
src/fileops.c 4 4
src/keys.c 9 11
src/keys.h 3 3
src/menu.c 35 35
src/normal.c 130 130
src/permissions_dialog.c 15 15
src/sort_dialog.c 17 17
src/visual.c 54 54
tests/commands/cmds_completion.c 1 1
tests/commands/command_name_tests.c 5 5
tests/commands/input_tests.c 1 1
tests/commands/test.c 1 1
tests/keys/buildin_and_custom.c 1 1
tests/keys/buildin_keys.h 0 8
tests/keys/builtin_keys.c 10 10
tests/keys/builtin_keys.h 8 0
tests/keys/remap_buildin.c 1 1
tests/keys/test.c 6 6
tests/misc/cmdline_completion.c 1 1
tests/options/opt_completion.c 14 0
File src/change_dialog.c changed (mode: 100644) (index f64747bf0..1fc06c2c6)
... ... static void print_at_pos(void);
57 57 static void clear_at_pos(void); static void clear_at_pos(void);
58 58
59 59 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
60 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
60 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
61 61 /* return */ /* return */
62 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
62 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
63 63 /* escape */ /* escape */
64 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
65 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
66 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
67 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
68 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
69 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
70 {L"q", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
64 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
65 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
66 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
67 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
68 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
69 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
70 {L"q", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
71 71 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
72 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
73 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
74 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
75 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
76 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
72 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
73 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
74 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
75 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
76 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
77 77 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
78 78 }; };
79 79
File src/cmdline.c changed (mode: 100644) (index cbb8b723b..1f9b62724)
... ... static wchar_t * wcsdel(wchar_t *src, int pos, int len);
137 137 static void stop_completion(void); static void stop_completion(void);
138 138
139 139 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
140 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
140 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
141 141 /* backspace */ /* backspace */
142 {L"\x08", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
143 {L"\x09", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_i}}},
144 {L"\x0b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_k}}},
145 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
146 {L"\x0e", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_n}}},
147 {L"\x10", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_p}}},
142 {L"\x08", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
143 {L"\x09", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_i}}},
144 {L"\x0b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_k}}},
145 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
146 {L"\x0e", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_n}}},
147 {L"\x10", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_p}}},
148 148 /* escape */ /* escape */
149 {L"\x1b", {BUILDIN_WAIT_POINT, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
149 {L"\x1b", {BUILTIN_WAIT_POINT, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
150 150 /* escape escape */ /* escape escape */
151 {L"\x1b\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
151 {L"\x1b\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
152 152 /* ascii Delete */ /* ascii Delete */
153 {L"\x7f", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
153 {L"\x7f", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
154 154 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
155 {{KEY_BACKSPACE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
156 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_down}}},
157 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_up}}},
158 {{KEY_LEFT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_left}}},
159 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_right}}},
160 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_home}}},
161 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_end}}},
162 {{KEY_DC}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_delete}}},
163 {{KEY_BTAB}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_shift_tab}}},
155 {{KEY_BACKSPACE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_h}}},
156 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_down}}},
157 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_up}}},
158 {{KEY_LEFT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_left}}},
159 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_right}}},
160 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_home}}},
161 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_end}}},
162 {{KEY_DC}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_delete}}},
163 {{KEY_BTAB}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_shift_tab}}},
164 164 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
165 {L"\x1b"L"[Z", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_shift_tab}}},
165 {L"\x1b"L"[Z", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_shift_tab}}},
166 166 /* ctrl b */ /* ctrl b */
167 {L"\x02", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_left}}},
167 {L"\x02", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_left}}},
168 168 /* ctrl f */ /* ctrl f */
169 {L"\x06", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_right}}},
169 {L"\x06", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_right}}},
170 170 /* ctrl a */ /* ctrl a */
171 {L"\x01", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_home}}},
171 {L"\x01", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_home}}},
172 172 /* ctrl e */ /* ctrl e */
173 {L"\x05", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_end}}},
173 {L"\x05", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_end}}},
174 174 /* ctrl d */ /* ctrl d */
175 {L"\x04", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_delete}}},
176 {L"\x15", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
177 {L"\x17", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_w}}},
178 {L"\x1b"L"b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_b}}},
179 {L"\x1b"L"d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_d}}},
180 {L"\x1b"L"f", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_f}}},
181 {L"\x1f", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_underscore}}},
175 {L"\x04", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_delete}}},
176 {L"\x15", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
177 {L"\x17", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_w}}},
178 {L"\x1b"L"b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_b}}},
179 {L"\x1b"L"d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_d}}},
180 {L"\x1b"L"f", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_meta_f}}},
181 {L"\x1f", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_underscore}}},
182 182 }; };
183 183
184 184 void void
File src/cmds.c changed (mode: 100644) (index 4d0a090c7..cd5faf592)
34 34
35 35 enum CMD_TYPE enum CMD_TYPE
36 36 { {
37 BUILDIN_ABBR,
38 BUILDIN_CMD,
37 BUILTIN_ABBR,
38 BUILTIN_CMD,
39 39 USER_CMD, USER_CMD,
40 40 }; };
41 41
 
... ... static void complete_cmd_name(const char *cmd_name, int user_only);
93 93 #ifndef TEST #ifndef TEST
94 94 static static
95 95 #endif #endif
96 int add_buildin_cmd(const char *name, int abbr, const struct cmd_add *conf);
96 int add_builtin_cmd(const char *name, int abbr, const struct cmd_add *conf);
97 97 static int comclear_cmd(const struct cmd_info *cmd_info); static int comclear_cmd(const struct cmd_info *cmd_info);
98 98 static int command_cmd(const struct cmd_info *cmd_info); static int command_cmd(const struct cmd_info *cmd_info);
99 99 static const char * get_user_cmd_name(const char *cmd, char *buf, size_t buf_len); static const char * get_user_cmd_name(const char *cmd, char *buf, size_t buf_len);
 
... ... init_cmds(int udf, struct cmds_conf *conf)
136 136 inner = conf->inner; inner = conf->inner;
137 137
138 138 if(udf) if(udf)
139 add_buildin_commands(commands, ARRAY_LEN(commands));
139 add_builtin_commands(commands, ARRAY_LEN(commands));
140 140 } }
141 141 } }
142 142
 
... ... execute_cmd(const char *cmd)
269 269 { {
270 270 cur->passed++; cur->passed++;
271 271
272 if(cur->type != BUILDIN_CMD && cur->type != BUILDIN_ABBR)
272 if(cur->type != BUILTIN_CMD && cur->type != BUILTIN_ABBR)
273 273 { {
274 274 cmd_info.cmd = cur->cmd; cmd_info.cmd = cur->cmd;
275 275 result = inner->user_cmd_handler.handler(&cmd_info); result = inner->user_cmd_handler.handler(&cmd_info);
 
... ... complete_cmd_name(const char *cmd_name, int user_only)
931 931 len = strlen(cmd_name); len = strlen(cmd_name);
932 932 while(cur != NULL && strncmp(cur->name, cmd_name, len) == 0) while(cur != NULL && strncmp(cur->name, cmd_name, len) == 0)
933 933 { {
934 if(cur->type == BUILDIN_ABBR)
934 if(cur->type == BUILTIN_ABBR)
935 935 ; ;
936 936 else if(cur->type != USER_CMD && user_only) else if(cur->type != USER_CMD && user_only)
937 937 ; ;
 
... ... complete_cmd_name(const char *cmd_name, int user_only)
946 946 } }
947 947
948 948 void void
949 add_buildin_commands(const struct cmd_add *cmds, int count)
949 add_builtin_commands(const struct cmd_add *cmds, int count)
950 950 { {
951 951 int i; int i;
952 952 for(i = 0; i < count; i++) for(i = 0; i < count; i++)
 
... ... add_buildin_commands(const struct cmd_add *cmds, int count)
955 955 assert(cmds[i].min_args >= 0); assert(cmds[i].min_args >= 0);
956 956 assert(cmds[i].max_args == NOT_DEF || assert(cmds[i].max_args == NOT_DEF ||
957 957 cmds[i].min_args <= cmds[i].max_args); cmds[i].min_args <= cmds[i].max_args);
958 ret_code = add_buildin_cmd(cmds[i].name, 0, &cmds[i]);
958 ret_code = add_builtin_cmd(cmds[i].name, 0, &cmds[i]);
959 959 assert(ret_code == 0); assert(ret_code == 0);
960 960 if(cmds[i].abbr != NULL) if(cmds[i].abbr != NULL)
961 961 { {
 
... ... add_buildin_commands(const struct cmd_add *cmds, int count)
967 967 while(full_len > short_len) while(full_len > short_len)
968 968 { {
969 969 buf[--full_len] = '\0'; buf[--full_len] = '\0';
970 ret_code = add_buildin_cmd(buf, 1, &cmds[i]);
970 ret_code = add_builtin_cmd(buf, 1, &cmds[i]);
971 971 assert(ret_code == 0); assert(ret_code == 0);
972 972 } }
973 973 } }
 
... ... add_buildin_commands(const struct cmd_add *cmds, int count)
979 979 static static
980 980 #endif #endif
981 981 int int
982 add_buildin_cmd(const char *name, int abbr, const struct cmd_add *conf)
982 add_builtin_cmd(const char *name, int abbr, const struct cmd_add *conf)
983 983 { {
984 984 int i; int i;
985 985 int cmp; int cmp;
 
... ... add_buildin_cmd(const char *name, int abbr, const struct cmd_add *conf)
1019 1019 new->name = strdup(name); new->name = strdup(name);
1020 1020 new->id = conf->id; new->id = conf->id;
1021 1021 new->handler = conf->handler; new->handler = conf->handler;
1022 new->type = abbr ? BUILDIN_ABBR : BUILDIN_CMD;
1022 new->type = abbr ? BUILTIN_ABBR : BUILTIN_CMD;
1023 1023 new->passed = 0; new->passed = 0;
1024 1024 new->range = conf->range; new->range = conf->range;
1025 1025 new->cust_sep = conf->cust_sep; new->cust_sep = conf->cust_sep;
 
... ... command_cmd(const struct cmd_info *cmd_info)
1094 1094 if(cmp == 0) if(cmp == 0)
1095 1095 { {
1096 1096 cur = cur->next; cur = cur->next;
1097 if(cur->type == BUILDIN_CMD)
1098 return CMDS_ERR_NO_BUILDIN_REDEFINE;
1097 if(cur->type == BUILTIN_CMD)
1098 return CMDS_ERR_NO_BUILTIN_REDEFINE;
1099 1099 if(!cmd_info->emark) if(!cmd_info->emark)
1100 1100 return CMDS_ERR_NEED_BANG; return CMDS_ERR_NEED_BANG;
1101 1101 free(cur->name); free(cur->name);
File src/cmds.h changed (mode: 100644) (index 828d45515..3473af97f)
... ... enum
27 27 CMDS_ERR_TRAILING_CHARS = -4, CMDS_ERR_TRAILING_CHARS = -4,
28 28 CMDS_ERR_INCORRECT_NAME = -5, CMDS_ERR_INCORRECT_NAME = -5,
29 29 CMDS_ERR_NEED_BANG = -6, CMDS_ERR_NEED_BANG = -6,
30 CMDS_ERR_NO_BUILDIN_REDEFINE = -7,
30 CMDS_ERR_NO_BUILTIN_REDEFINE = -7,
31 31 CMDS_ERR_INVALID_CMD = -8, CMDS_ERR_INVALID_CMD = -8,
32 32 CMDS_ERR_NO_BANG_ALLOWED = -9, CMDS_ERR_NO_BANG_ALLOWED = -9,
33 33 CMDS_ERR_NO_RANGE_ALLOWED = -10, CMDS_ERR_NO_RANGE_ALLOWED = -10,
 
... ... int get_cmd_info(const char *cmd, struct cmd_info *info);
115 115 /* Returns offset in cmd, where completion elements should be pasted */ /* Returns offset in cmd, where completion elements should be pasted */
116 116 int complete_cmd(const char *cmd); int complete_cmd(const char *cmd);
117 117
118 void add_buildin_commands(const struct cmd_add *cmds, int count);
118 void add_builtin_commands(const struct cmd_add *cmds, int count);
119 119
120 120 /* Last element is followed by a NULL */ /* Last element is followed by a NULL */
121 121 char ** list_udf(void); char ** list_udf(void);
 
... ... char ** list_udf(void);
123 123 char * list_udf_content(const char *beginning); char * list_udf_content(const char *beginning);
124 124
125 125 #ifdef TEST #ifdef TEST
126 int add_buildin_cmd(const char *name, int abbr, const struct cmd_add *conf);
126 int add_builtin_cmd(const char *name, int abbr, const struct cmd_add *conf);
127 127 char ** dispatch_line(const char *args, int *count, char sep, int regexp, char ** dispatch_line(const char *args, int *count, char sep, int regexp,
128 128 int quotes, int *last_arg, int *last_end); int quotes, int *last_arg, int *last_end);
129 129 #endif #endif
File src/commands.c changed (mode: 100644) (index 41a5a7e2d..3dd4622fb)
... ... init_commands(void)
1106 1106 if(cmds_conf.inner == NULL) if(cmds_conf.inner == NULL)
1107 1107 { {
1108 1108 init_cmds(1, &cmds_conf); init_cmds(1, &cmds_conf);
1109 add_buildin_commands((const struct cmd_add *)&commands,
1109 add_builtin_commands((const struct cmd_add *)&commands,
1110 1110 ARRAY_LEN(commands)); ARRAY_LEN(commands));
1111 1111
1112 1112 split_path(); split_path();
 
... ... execute_command(FileView *view, char *command, int menu)
2033 2033 case CMDS_ERR_NEED_BANG: case CMDS_ERR_NEED_BANG:
2034 2034 status_bar_error("Add bang to force"); status_bar_error("Add bang to force");
2035 2035 break; break;
2036 case CMDS_ERR_NO_BUILDIN_REDEFINE:
2036 case CMDS_ERR_NO_BUILTIN_REDEFINE:
2037 2037 status_bar_error("Can't redefine builtin command"); status_bar_error("Can't redefine builtin command");
2038 2038 break; break;
2039 2039 case CMDS_ERR_INVALID_CMD: case CMDS_ERR_INVALID_CMD:
File src/fileops.c changed (mode: 100644) (index 3ef660dca..cc4066eb7)
... ... get_group_file_list(char **list, int count, char *buf)
1092 1092 int int
1093 1093 delete_file(FileView *view, int reg, int count, int *indexes, int use_trash) delete_file(FileView *view, int reg, int count, int *indexes, int use_trash)
1094 1094 { {
1095 char buf[8 + PATH_MAX*2];
1095 char buf[MAX(COMMAND_GROUP_INFO_LEN, 8 + PATH_MAX*2)];
1096 1096 int x, y; int x, y;
1097 1097 int i; int i;
1098 1098
 
... ... static void
1267 1267 rename_file_cb(const char *new_name) rename_file_cb(const char *new_name)
1268 1268 { {
1269 1269 char *filename = get_current_file_name(curr_view); char *filename = get_current_file_name(curr_view);
1270 char buf[10 + NAME_MAX + 1];
1270 char buf[MAX(COMMAND_GROUP_INFO_LEN, 10 + NAME_MAX + 1)];
1271 1271 char new[NAME_MAX + 1]; char new[NAME_MAX + 1];
1272 1272 size_t len; size_t len;
1273 1273 int tmp; int tmp;
 
... ... change_group(void)
1838 1838 static void static void
1839 1839 change_link_cb(const char *new_target) change_link_cb(const char *new_target)
1840 1840 { {
1841 char buf[PATH_MAX];
1841 char buf[MAX(COMMAND_GROUP_INFO_LEN, PATH_MAX)];
1842 1842 char linkto[PATH_MAX]; char linkto[PATH_MAX];
1843 1843 const char *filename; const char *filename;
1844 1844
 
... ... put_files_from_register_i(FileView *view, int start)
2099 2099 { {
2100 2100 if(start) if(start)
2101 2101 { {
2102 char buf[PATH_MAX + NAME_MAX*2 + 4];
2102 char buf[MAX(COMMAND_GROUP_INFO_LEN, PATH_MAX + NAME_MAX*2 + 4)];
2103 2103 const char *op = "UNKNOWN"; const char *op = "UNKNOWN";
2104 2104 int from_trash = strncmp(put_confirm.reg->files[0], cfg.trash_dir, int from_trash = strncmp(put_confirm.reg->files[0], cfg.trash_dir,
2105 2105 strlen(cfg.trash_dir)) == 0; strlen(cfg.trash_dir)) == 0;
File src/keys.c changed (mode: 100644) (index dd1f4276d..ce3bad4d4)
... ... free_tree(struct key_chunk_t *root)
141 141 free(root->next); free(root->next);
142 142 } }
143 143
144 if(root->conf.type == USER_CMD || root->conf.type == BUILDIN_CMD)
145 {
144 if(root->conf.type == USER_CMD || root->conf.type == BUILTIN_CMD)
146 145 free(root->conf.data.cmd); free(root->conf.data.cmd);
147 }
148 146 } }
149 147
150 148 void void
 
... ... execute_keys_loop(const wchar_t *keys, struct keys_info *keys_info,
237 235 if(curr->conf.followed != FOLLOWED_BY_NONE) if(curr->conf.followed != FOLLOWED_BY_NONE)
238 236 break; break;
239 237
240 if(curr->conf.type == BUILDIN_WAIT_POINT)
238 if(curr->conf.type == BUILTIN_WAIT_POINT)
241 239 return KEYS_UNKNOWN; return KEYS_UNKNOWN;
242 240
243 241 has_duplicate = root == &user_cmds_root[*mode] && has_duplicate = root == &user_cmds_root[*mode] &&
 
... ... execute_keys_loop(const wchar_t *keys, struct keys_info *keys_info,
260 258 curr = p; curr = p;
261 259 } }
262 260
263 if(*keys == '\0' && curr->conf.type != BUILDIN_WAIT_POINT &&
261 if(*keys == '\0' && curr->conf.type != BUILTIN_WAIT_POINT &&
264 262 curr->children_count > 0 && curr->conf.data.handler != NULL && curr->children_count > 0 && curr->conf.data.handler != NULL &&
265 263 !keys_info->after_wait) !keys_info->after_wait)
266 264 { {
 
... ... contains_chain(struct key_chunk_t *root, const wchar_t *begin,
307 305 curr = p; curr = p;
308 306 } }
309 307 return (curr->conf.followed == FOLLOWED_BY_NONE && return (curr->conf.followed == FOLLOWED_BY_NONE &&
310 curr->conf.type != BUILDIN_WAIT_POINT);
308 curr->conf.type != BUILTIN_WAIT_POINT);
311 309 } }
312 310
313 311 static int static int
 
... ... execute_next_keys(struct key_chunk_t *curr, const wchar_t *keys,
317 315 { {
318 316 if(*keys == L'\0') if(*keys == L'\0')
319 317 { {
320 int wait_point = (curr->conf.type == BUILDIN_WAIT_POINT);
318 int wait_point = (curr->conf.type == BUILTIN_WAIT_POINT);
321 319 wait_point = wait_point || (curr->conf.type == USER_CMD && wait_point = wait_point || (curr->conf.type == USER_CMD &&
322 320 curr->conf.followed != FOLLOWED_BY_NONE); curr->conf.followed != FOLLOWED_BY_NONE);
323 321 if(wait_point) if(wait_point)
 
... ... run_cmd(struct key_info key_info, struct keys_info *keys_info,
357 355 { {
358 356 struct key_t *key_t = &curr->conf; struct key_t *key_t = &curr->conf;
359 357
360 if(key_t->type != USER_CMD && key_t->type != BUILDIN_CMD)
358 if(key_t->type != USER_CMD && key_t->type != BUILTIN_CMD)
361 359 { {
362 360 if(key_t->data.handler == NULL) if(key_t->data.handler == NULL)
363 361 return KEYS_UNKNOWN; return KEYS_UNKNOWN;
 
... ... remove_user_keys(const wchar_t *keys, int mode)
516 514 return -1; return -1;
517 515
518 516 free(curr->conf.data.cmd); free(curr->conf.data.cmd);
519 curr->conf.type = BUILDIN_WAIT_POINT;
517 curr->conf.type = BUILTIN_WAIT_POINT;
520 518 curr->conf.data.handler = NULL; curr->conf.data.handler = NULL;
521 519
522 520 p = curr; p = curr;
 
... ... remove_user_keys(const wchar_t *keys, int mode)
539 537 free(curr); free(curr);
540 538 curr = parent; curr = parent;
541 539 } while(curr->parent != NULL && curr->parent->conf.data.handler == NULL && } while(curr->parent != NULL && curr->parent->conf.data.handler == NULL &&
542 curr->parent->conf.type == BUILDIN_WAIT_POINT &&
540 curr->parent->conf.type == BUILTIN_WAIT_POINT &&
543 541 curr->parent->children_count == 0); curr->parent->children_count == 0);
544 542
545 543 return 0; return 0;
 
... ... add_keys_inner(struct key_chunk_t *root, const wchar_t *keys)
637 635 return NULL; return NULL;
638 636 } }
639 637 c->key = *keys; c->key = *keys;
640 c->conf.type = (keys[1] == L'\0') ? BUILDIN_KEYS : BUILDIN_WAIT_POINT;
638 c->conf.type = (keys[1] == L'\0') ? BUILTIN_KEYS : BUILTIN_WAIT_POINT;
641 639 c->conf.data.handler = NULL; c->conf.data.handler = NULL;
642 640 c->conf.followed = FOLLOWED_BY_NONE; c->conf.followed = FOLLOWED_BY_NONE;
643 641 c->prev = prev; c->prev = prev;
File src/keys.h changed (mode: 100644) (index 181d77f40..6e5486c46)
... ... enum FOLLOWED_BY
56 56
57 57 enum KEYS_TYPE enum KEYS_TYPE
58 58 { {
59 BUILDIN_WAIT_POINT, /* infinite wait of next key press */
60 BUILDIN_KEYS,
61 BUILDIN_CMD,
59 BUILTIN_WAIT_POINT, /* infinite wait of next key press */
60 BUILTIN_KEYS,
61 BUILTIN_CMD,
62 62 USER_CMD, USER_CMD,
63 63 }; };
64 64
File src/menu.c changed (mode: 100644) (index 7d6510566..fbf409ee4)
... ... static int goto_cmd(const struct cmd_info *cmd_info);
86 86 static int quit_cmd(const struct cmd_info *cmd_info); static int quit_cmd(const struct cmd_info *cmd_info);
87 87
88 88 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
89 {L"\x02", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
90 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
91 {L"\x04", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
92 {L"\x05", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
93 {L"\x06", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
94 {L"\x0c", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
89 {L"\x02", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
90 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
91 {L"\x04", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
92 {L"\x05", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
93 {L"\x06", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
94 {L"\x0c", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
95 95 /* return */ /* return */
96 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
97 {L"\x15", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
98 {L"\x19", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
96 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
97 {L"\x15", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
98 {L"\x19", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
99 99 /* escape */ /* escape */
100 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
101 {L"/", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
102 {L":", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
103 {L"?", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
104 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
105 {L"H", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
106 {L"L", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
107 {L"M", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
108 {L"N", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
109 {L"dd", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dd}}},
110 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
111 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
112 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
113 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
114 {L"n", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
115 {L"zb", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zb}}},
116 {L"zt", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zt}}},
117 {L"zz", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zz}}},
100 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
101 {L"/", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
102 {L":", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
103 {L"?", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
104 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
105 {L"H", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
106 {L"L", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
107 {L"M", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
108 {L"N", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
109 {L"dd", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dd}}},
110 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
111 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
112 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
113 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
114 {L"n", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
115 {L"zb", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zb}}},
116 {L"zt", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zt}}},
117 {L"zz", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zz}}},
118 118 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
119 {{KEY_PPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
120 {{KEY_NPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
121 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
122 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
123 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
124 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
125 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
119 {{KEY_PPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
120 {{KEY_NPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
121 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
122 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
123 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
124 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
125 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
126 126 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
127 127 }; };
128 128
 
... ... init_menu_mode(int *key_mode)
195 195 set_def_handler(MENU_MODE, key_handler); set_def_handler(MENU_MODE, key_handler);
196 196
197 197 init_cmds(0, &cmds_conf); init_cmds(0, &cmds_conf);
198 add_buildin_commands((const struct cmd_add *)&commands, ARRAY_LEN(commands));
198 add_builtin_commands((const struct cmd_add *)&commands, ARRAY_LEN(commands));
199 199 } }
200 200
201 201 static int static int
File src/normal.c changed (mode: 100644) (index a0ebb777f..d3ab80551)
... ... static void selector_a(struct key_info, struct keys_info *);
153 153 static void selector_s(struct key_info, struct keys_info *); static void selector_s(struct key_info, struct keys_info *);
154 154
155 155 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
156 {L"\x02", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
157 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
158 {L"\x04", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
159 {L"\x05", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
160 {L"\x06", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
161 {L"\x07", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_g}}},
162 {L"\x09", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_i}}},
163 {L"\x0c", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
164 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
165 {L"\x0f", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_o}}},
166 {L"\x12", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_r}}},
167 {L"\x15", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
168 {L"\x17\x08", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wh}}},
169 {L"\x17h", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wh}}},
170 {L"\x17\x0f", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wo}}},
171 {L"\x17o", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wo}}},
172 {L"\x17\x0c", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wl}}},
173 {L"\x17l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wl}}},
174 {L"\x17\x13", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
175 {L"\x17s", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
176 {L"\x17\x16", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
177 {L"\x17v", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
178 {L"\x17\x17", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_ww}}},
179 {L"\x17w", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_ww}}},
180 {L"\x17\x18", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wx}}},
181 {L"\x17x", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wx}}},
182 {L"\x19", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
156 {L"\x02", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
157 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
158 {L"\x04", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
159 {L"\x05", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
160 {L"\x06", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
161 {L"\x07", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_g}}},
162 {L"\x09", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_i}}},
163 {L"\x0c", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
164 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
165 {L"\x0f", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_o}}},
166 {L"\x12", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_r}}},
167 {L"\x15", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
168 {L"\x17\x08", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wh}}},
169 {L"\x17h", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wh}}},
170 {L"\x17\x0f", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wo}}},
171 {L"\x17o", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wo}}},
172 {L"\x17\x0c", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wl}}},
173 {L"\x17l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wl}}},
174 {L"\x17\x13", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
175 {L"\x17s", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
176 {L"\x17\x16", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
177 {L"\x17v", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wv}}},
178 {L"\x17\x17", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_ww}}},
179 {L"\x17w", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_ww}}},
180 {L"\x17\x18", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wx}}},
181 {L"\x17x", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_wx}}},
182 {L"\x19", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
183 183 /* escape */ /* escape */
184 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
185 {L"'", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
186 {L" ", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
187 {L"!!", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_emarkemark}}},
188 {L"!", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_emark_selector}}},
189 {L"%", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
190 {L",", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
191 {L".", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dot}}},
192 {L":", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
193 {L";", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
194 {L"/", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
195 {L"?", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
196 {L"C", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_C}}},
197 {L"F", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
198 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
199 {L"H", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
200 {L"L", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
201 {L"M", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
202 {L"N", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
203 {L"P", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_P}}},
204 {L"V", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_V}}},
205 {L"Y", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_yy}}},
206 {L"ZQ", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ZQ}}},
207 {L"ZZ", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ZZ}}},
208 {L"al", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_al}}},
209 {L"cW", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cW}}},
184 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
185 {L"'", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
186 {L" ", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
187 {L"!!", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_emarkemark}}},
188 {L"!", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_emark_selector}}},
189 {L"%", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
190 {L",", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
191 {L".", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dot}}},
192 {L":", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
193 {L";", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
194 {L"/", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
195 {L"?", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
196 {L"C", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_C}}},
197 {L"F", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
198 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
199 {L"H", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
200 {L"L", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
201 {L"M", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
202 {L"N", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
203 {L"P", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_P}}},
204 {L"V", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_V}}},
205 {L"Y", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_yy}}},
206 {L"ZQ", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ZQ}}},
207 {L"ZZ", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ZZ}}},
208 {L"al", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_al}}},
209 {L"cW", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cW}}},
210 210 #ifndef _WIN32 #ifndef _WIN32
211 {L"cg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cg}}},
211 {L"cg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cg}}},
212 212 #endif #endif
213 {L"cl", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cl}}},
213 {L"cl", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cl}}},
214 214 #ifndef _WIN32 #ifndef _WIN32
215 {L"co", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_co}}},
216 {L"cp", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cp}}},
215 {L"co", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_co}}},
216 {L"cp", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cp}}},
217 217 #endif #endif
218 {L"cw", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cw}}},
219 {L"DD", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_DD}}},
220 {L"dd", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dd}}},
221 {L"D", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_D_selector}}},
222 {L"d", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_d_selector}}},
223 {L"f", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
224 {L"gA", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gA}}},
225 {L"ga", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ga}}},
226 {L"gf", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gf}}},
227 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
218 {L"cw", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cw}}},
219 {L"DD", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_DD}}},
220 {L"dd", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_dd}}},
221 {L"D", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_D_selector}}},
222 {L"d", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_d_selector}}},
223 {L"f", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
224 {L"gA", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gA}}},
225 {L"ga", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ga}}},
226 {L"gf", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gf}}},
227 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
228 228 #ifdef _WIN32 #ifdef _WIN32
229 {L"gl", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gl}}},
229 {L"gl", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gl}}},
230 230 #endif #endif
231 {L"gs", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gs}}},
232 {L"gU", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_gU}}},
233 {L"gUgU", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
234 {L"gUgg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gUgg}}},
235 {L"gUU", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
236 {L"gu", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_gu}}},
237 {L"gugg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gugg}}},
238 {L"gugu", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
239 {L"guu", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
240 {L"gv", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gv}}},
241 {L"h", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
242 {L"i", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_i}}},
243 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
244 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
245 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
246 {L"m", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_m}}},
247 {L"n", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
248 {L"p", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_p}}},
249 {L"rl", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_rl}}},
250 {L"t", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_t}}},
251 {L"u", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_u}}},
252 {L"yy", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_yy}}},
253 {L"y", {BUILDIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_y_selector}}},
254 {L"v", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_V}}},
255 {L"zM", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zM}}},
256 {L"zO", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zO}}},
257 {L"zR", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zR}}},
258 {L"za", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_za}}},
259 {L"zb", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zb}}},
260 {L"zf", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zf}}},
261 {L"zm", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zm}}},
262 {L"zo", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zo}}},
263 {L"zt", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zt}}},
264 {L"zz", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zz}}},
231 {L"gs", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gs}}},
232 {L"gU", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_gU}}},
233 {L"gUgU", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
234 {L"gUgg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gUgg}}},
235 {L"gUU", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
236 {L"gu", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_gu}}},
237 {L"gugg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gugg}}},
238 {L"gugu", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
239 {L"guu", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
240 {L"gv", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gv}}},
241 {L"h", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
242 {L"i", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_i}}},
243 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
244 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
245 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
246 {L"m", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_m}}},
247 {L"n", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
248 {L"p", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_p}}},
249 {L"rl", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_rl}}},
250 {L"t", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_t}}},
251 {L"u", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_u}}},
252 {L"yy", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_yy}}},
253 {L"y", {BUILTIN_WAIT_POINT, FOLLOWED_BY_SELECTOR, {.handler = cmd_y_selector}}},
254 {L"v", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_V}}},
255 {L"zM", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zM}}},
256 {L"zO", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zO}}},
257 {L"zR", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zR}}},
258 {L"za", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_za}}},
259 {L"zb", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zb}}},
260 {L"zf", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zf}}},
261 {L"zm", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zm}}},
262 {L"zo", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zo}}},
263 {L"zt", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zt}}},
264 {L"zz", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zz}}},
265 265 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
266 {{KEY_PPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
267 {{KEY_NPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
268 {{KEY_LEFT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
269 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
270 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
271 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
272 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
273 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
266 {{KEY_PPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
267 {{KEY_NPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
268 {{KEY_LEFT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
269 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
270 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
271 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
272 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
273 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
274 274 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
275 275 }; };
276 276
277 277 static struct keys_add_info selectors[] = { static struct keys_add_info selectors[] = {
278 {L"'", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
279 {L"%", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
280 {L",", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
281 {L";", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
282 {L"F", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
283 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
284 {L"H", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
285 {L"L", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
286 {L"M", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
287 {L"S", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_S}}},
288 {L"a", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_a}}},
289 {L"f", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
290 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
291 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
292 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
293 {L"s", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_s}}},
278 {L"'", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
279 {L"%", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
280 {L",", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
281 {L";", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
282 {L"F", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
283 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
284 {L"H", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
285 {L"L", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
286 {L"M", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
287 {L"S", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_S}}},
288 {L"a", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_a}}},
289 {L"f", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
290 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
291 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
292 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
293 {L"s", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = selector_s}}},
294 294 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
295 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
296 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
297 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
298 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
295 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
296 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
297 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
298 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
299 299 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
300 300 }; };
301 301
File src/permissions_dialog.c changed (mode: 100644) (index 2be5d2642..df938606f)
... ... static void inc_curr(void);
67 67 static void dec_curr(void); static void dec_curr(void);
68 68
69 69 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
70 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
70 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
71 71 /* return */ /* return */
72 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
72 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
73 73 /* escape */ /* escape */
74 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
75 {L" ", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
76 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
77 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
78 {L"h", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
79 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
80 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
81 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
82 {L"q", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
83 {L"t", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
74 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
75 {L" ", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
76 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
77 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
78 {L"h", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
79 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
80 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
81 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
82 {L"q", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
83 {L"t", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_space}}},
84 84 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
85 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
86 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
87 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
85 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
86 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
87 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
88 88 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
89 89 }; };
90 90
File src/sort_dialog.c changed (mode: 100644) (index cbad1ad64..206d4c917)
... ... static void print_at_pos(void);
80 80 static void clear_at_pos(void); static void clear_at_pos(void);
81 81
82 82 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
83 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
83 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
84 84 /* return */ /* return */
85 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
85 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
86 86 /* escape */ /* escape */
87 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
88 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
89 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
90 {L"h", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
91 {L" ", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
92 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
93 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
94 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
95 {L"q", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
87 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
88 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
89 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
90 {L"h", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
91 {L" ", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
92 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
93 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
94 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
95 {L"q", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
96 96 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
97 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
98 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
99 {{KEY_LEFT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
100 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
101 {{KEY_HOME}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
102 {{KEY_END}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
97 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
98 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
99 {{KEY_LEFT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_h}}},
100 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
101 {{KEY_HOME}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
102 {{KEY_END}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
103 103 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
104 104 }; };
105 105
File src/visual.c changed (mode: 100644) (index c5b87f92a..7bca3b7b4)
... ... static void update(void);
96 96 static void find_update(FileView *view, int backward); static void find_update(FileView *view, int backward);
97 97
98 98 static struct keys_add_info builtin_cmds[] = { static struct keys_add_info builtin_cmds[] = {
99 {L"\x02", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
100 {L"\x03", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
101 {L"\x04", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
102 {L"\x05", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
103 {L"\x06", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
104 {L"\x0c", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
105 {L"\x0d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
106 {L"\x15", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
107 {L"\x19", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
99 {L"\x02", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
100 {L"\x03", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
101 {L"\x04", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_d}}},
102 {L"\x05", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_e}}},
103 {L"\x06", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
104 {L"\x0c", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_l}}},
105 {L"\x0d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_m}}},
106 {L"\x15", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_u}}},
107 {L"\x19", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_y}}},
108 108 /* escape */ /* escape */
109 {L"\x1b", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
110 {L"'", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
111 {L"%", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
112 {L",", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
113 {L":", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
114 {L";", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
115 {L"/", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
116 {L"?", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
117 {L"C", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_C}}},
118 {L"D", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_D}}},
119 {L"F", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
120 {L"G", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
121 {L"H", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
122 {L"L", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
123 {L"M", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
124 {L"N", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
125 {L"O", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_O}}},
126 {L"U", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
127 {L"V", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
128 {L"d", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_d}}},
129 {L"f", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
130 {L"cp", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cp}}},
131 {L"cw", {BUILDIN_CMD, FOLLOWED_BY_NONE, {.cmd = L":rename\r"}}},
132 {L"gg", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
133 {L"gU", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
134 {L"gu", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
135 {L"gv", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gv}}},
136 {L"j", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
137 {L"k", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
138 {L"l", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
139 {L"m", {BUILDIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_m}}},
140 {L"n", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
141 {L"o", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_O}}},
142 {L"u", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
143 {L"v", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
144 {L"y", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_y}}},
145 {L"zb", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zb}}},
146 {L"zf", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zf}}},
147 {L"zt", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zt}}},
148 {L"zz", {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zz}}},
109 {L"\x1b", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
110 {L"'", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_quote}}},
111 {L"%", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_percent}}},
112 {L",", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_comma}}},
113 {L":", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_colon}}},
114 {L";", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_semicolon}}},
115 {L"/", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_slash}}},
116 {L"?", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_question}}},
117 {L"C", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_C}}},
118 {L"D", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_D}}},
119 {L"F", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_F}}},
120 {L"G", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_G}}},
121 {L"H", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_H}}},
122 {L"L", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_L}}},
123 {L"M", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_M}}},
124 {L"N", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_N}}},
125 {L"O", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_O}}},
126 {L"U", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
127 {L"V", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
128 {L"d", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_d}}},
129 {L"f", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_f}}},
130 {L"cp", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_cp}}},
131 {L"cw", {BUILTIN_CMD, FOLLOWED_BY_NONE, {.cmd = L":rename\r"}}},
132 {L"gg", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gg}}},
133 {L"gU", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gU}}},
134 {L"gu", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
135 {L"gv", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gv}}},
136 {L"j", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
137 {L"k", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
138 {L"l", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
139 {L"m", {BUILTIN_WAIT_POINT, FOLLOWED_BY_MULTIKEY, {.handler = cmd_m}}},
140 {L"n", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_n}}},
141 {L"o", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_O}}},
142 {L"u", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_gu}}},
143 {L"v", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_c}}},
144 {L"y", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_y}}},
145 {L"zb", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zb}}},
146 {L"zf", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_zf}}},
147 {L"zt", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zt}}},
148 {L"zz", {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = normal_cmd_zz}}},
149 149 #ifdef ENABLE_EXTENDED_KEYS #ifdef ENABLE_EXTENDED_KEYS
150 {{KEY_PPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
151 {{KEY_NPAGE}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
152 {{KEY_DOWN}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
153 {{KEY_UP}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
154 {{KEY_RIGHT}, {BUILDIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
150 {{KEY_PPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_b}}},
151 {{KEY_NPAGE}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_ctrl_f}}},
152 {{KEY_DOWN}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_j}}},
153 {{KEY_UP}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_k}}},
154 {{KEY_RIGHT}, {BUILTIN_KEYS, FOLLOWED_BY_NONE, {.handler = cmd_l}}},
155 155 #endif /* ENABLE_EXTENDED_KEYS */ #endif /* ENABLE_EXTENDED_KEYS */
156 156 }; };
157 157
File tests/commands/cmds_completion.c changed (mode: 100644) (index c61575971..8bbab478f)
... ... delete_cmd(const struct cmd_info* cmd_info)
37 37 static void static void
38 38 setup(void) setup(void)
39 39 { {
40 add_buildin_commands(commands, ARRAY_LEN(commands));
40 add_builtin_commands(commands, ARRAY_LEN(commands));
41 41 } }
42 42
43 43 static void static void
File tests/commands/command_name_tests.c changed (mode: 100644) (index ea4745156..c1cb26f0b)
... ... delete_cmd(const struct cmd_info* cmd_info)
35 35 static void static void
36 36 setup(void) setup(void)
37 37 { {
38 add_buildin_commands(commands, ARRAY_LEN(commands));
38 add_builtin_commands(commands, ARRAY_LEN(commands));
39 39 } }
40 40
41 41 static void static void
 
... ... test_builtin(void)
51 51 .emark = 0, .expand = 0, .qmark = 0, .regexp = 0, .min_args = 0, .max_args = 0, .emark = 0, .expand = 0, .qmark = 0, .regexp = 0, .min_args = 0, .max_args = 0,
52 52 }; };
53 53
54 assert_true(add_buildin_cmd("!", 0, &command) == 0);
54 assert_true(add_builtin_cmd("!", 0, &command) == 0);
55 55
56 assert_false(add_buildin_cmd("?", 0, &command) == 0);
56 assert_false(add_builtin_cmd("?", 0, &command) == 0);
57 57
58 assert_false(add_buildin_cmd("&", 0, &command) == 0);
58 assert_false(add_builtin_cmd("&", 0, &command) == 0);
59 59
60 assert_false(add_buildin_cmd("2", 0, &command) == 0);
60 assert_false(add_builtin_cmd("2", 0, &command) == 0);
61 61 } }
62 62
63 63 static void static void
File tests/commands/input_tests.c changed (mode: 100644) (index 19bc812ec..24bfb37ec)
... ... quit_cmd(const struct cmd_info* cmd_info)
169 169 static void static void
170 170 setup(void) setup(void)
171 171 { {
172 add_buildin_commands(commands, ARRAY_LEN(commands));
172 add_builtin_commands(commands, ARRAY_LEN(commands));
173 173 } }
174 174
175 175 static void static void
File tests/commands/test.c changed (mode: 100644) (index d2bf5cdc1..97005f788)
... ... setup(void)
118 118
119 119 init_cmds(1, &cmds_conf); init_cmds(1, &cmds_conf);
120 120
121 add_buildin_commands(&command, 1);
121 add_builtin_commands(&command, 1);
122 122 } }
123 123
124 124 static void static void
File tests/keys/buildin_and_custom.c changed (mode: 100644) (index 0af6e5017..2ee151c41)
... ... test_udm_and_builtin_wait_point(void)
70 70 } }
71 71
72 72 void void
73 buildin_and_custom(void)
73 builtin_and_custom(void)
74 74 { {
75 75 test_fixture_start(); test_fixture_start();
76 76
File tests/keys/buildin_keys.h deleted (index 1658a1a98..000000000)
1 #ifndef __BUILDIN_KEYS_H__
2 #define __BUILDIN_KEYS_H__
3
4 void init_buildin_keys(int *key_mode);
5
6 #endif
7
8 /* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab : */
File tests/keys/builtin_keys.c renamed from tests/keys/buildin_keys.c (similarity 95%) (mode: 100644) (index 9bde02c8e..60e36c8a7)
6 6 #include "../../src/keys.h" #include "../../src/keys.h"
7 7 #include "../../src/modes.h" #include "../../src/modes.h"
8 8
9 #include "buildin_keys.h"
9 #include "builtin_keys.h"
10 10
11 11 #ifdef TEST #ifdef TEST
12 12 #define printf(...) #define printf(...)
 
... ... static void keys_v(struct key_info key_info, struct keys_info *keys_info);
34 34 static void keys_quit(struct key_info key_info, struct keys_info *keys_info); static void keys_quit(struct key_info key_info, struct keys_info *keys_info);
35 35
36 36 void void
37 init_buildin_keys(int *key_mode)
37 init_builtin_keys(int *key_mode)
38 38 { {
39 39 struct key_t *curr; struct key_t *curr;
40 40
 
... ... init_buildin_keys(int *key_mode)
46 46 curr->data.handler = keys_colon; curr->data.handler = keys_colon;
47 47
48 48 curr = add_cmd(L"m", NORMAL_MODE); curr = add_cmd(L"m", NORMAL_MODE);
49 curr->type = BUILDIN_WAIT_POINT;
49 curr->type = BUILTIN_WAIT_POINT;
50 50 curr->data.handler = keys_m; curr->data.handler = keys_m;
51 51 curr->followed = FOLLOWED_BY_MULTIKEY; curr->followed = FOLLOWED_BY_MULTIKEY;
52 52
53 53 curr = add_cmd(L"'", NORMAL_MODE); curr = add_cmd(L"'", NORMAL_MODE);
54 curr->type = BUILDIN_WAIT_POINT;
54 curr->type = BUILTIN_WAIT_POINT;
55 55 curr->data.handler = keys_quote; curr->data.handler = keys_quote;
56 56 curr->followed = FOLLOWED_BY_MULTIKEY; curr->followed = FOLLOWED_BY_MULTIKEY;
57 57
58 58 curr = add_selector(L"gg", NORMAL_MODE); curr = add_selector(L"gg", NORMAL_MODE);
59 curr->type = BUILDIN_WAIT_POINT;
59 curr->type = BUILTIN_WAIT_POINT;
60 60 curr->data.handler = keys_gg; curr->data.handler = keys_gg;
61 61 curr->followed = FOLLOWED_BY_NONE; curr->followed = FOLLOWED_BY_NONE;
62 62
63 63 curr = add_selector(L"'", NORMAL_MODE); curr = add_selector(L"'", NORMAL_MODE);
64 curr->type = BUILDIN_WAIT_POINT;
64 curr->type = BUILTIN_WAIT_POINT;
65 65 curr->data.handler = keys_quote; curr->data.handler = keys_quote;
66 66 curr->followed = FOLLOWED_BY_MULTIKEY; curr->followed = FOLLOWED_BY_MULTIKEY;
67 67
 
... ... init_buildin_keys(int *key_mode)
71 71 curr = add_cmd(L"gu", NORMAL_MODE); curr = add_cmd(L"gu", NORMAL_MODE);
72 72 curr->data.handler = keys_gu; curr->data.handler = keys_gu;
73 73 curr->followed = FOLLOWED_BY_SELECTOR; curr->followed = FOLLOWED_BY_SELECTOR;
74 curr->type = BUILDIN_WAIT_POINT;
74 curr->type = BUILTIN_WAIT_POINT;
75 75
76 76 curr = add_cmd(L"guu", NORMAL_MODE); curr = add_cmd(L"guu", NORMAL_MODE);
77 77 curr->data.handler = keys_gu; curr->data.handler = keys_gu;
 
... ... init_buildin_keys(int *key_mode)
119 119 curr->data.handler = keys_if; curr->data.handler = keys_if;
120 120
121 121 curr = add_cmd(L"o", NORMAL_MODE); curr = add_cmd(L"o", NORMAL_MODE);
122 curr->type = BUILDIN_CMD;
122 curr->type = BUILTIN_CMD;
123 123 curr->data.cmd = wcsdup(L":only"); curr->data.cmd = wcsdup(L":only");
124 124
125 125 curr = add_cmd(L"v", NORMAL_MODE); curr = add_cmd(L"v", NORMAL_MODE);
126 curr->type = BUILDIN_CMD;
126 curr->type = BUILTIN_CMD;
127 127 curr->data.cmd = wcsdup(L":vsplit"); curr->data.cmd = wcsdup(L":vsplit");
128 128
129 129 curr = add_cmd(L"d", NORMAL_MODE); curr = add_cmd(L"d", NORMAL_MODE);
130 curr->type = BUILDIN_WAIT_POINT;
130 curr->type = BUILTIN_WAIT_POINT;
131 131 curr->data.handler = keys_delete_selector; curr->data.handler = keys_delete_selector;
132 132 curr->followed = FOLLOWED_BY_SELECTOR; curr->followed = FOLLOWED_BY_SELECTOR;
133 133
File tests/keys/builtin_keys.h added (mode: 100644) (index 000000000..819295abe)
1 #ifndef __BUILTIN_KEYS_H__
2 #define __BUILTIN_KEYS_H__
3
4 void init_builtin_keys(int *key_mode);
5
6 #endif
7
8 /* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab : */
File tests/keys/remap_buildin.c changed (mode: 100644) (index ce831eee9..ea5b19913)
... ... remap_builtin_waitpoint(void)
19 19 } }
20 20
21 21 void void
22 remap_buildin(void)
22 remap_builtin(void)
23 23 { {
24 24 test_fixture_start(); test_fixture_start();
25 25
File tests/keys/test.c changed (mode: 100644) (index cd4f5a0e1..1b3bed6ad)
1 1 #include "seatest.h" #include "seatest.h"
2 2
3 #include "buildin_keys.h"
3 #include "builtin_keys.h"
4 4 #include "../../src/keys.h" #include "../../src/keys.h"
5 5 #include "../../src/modes.h" #include "../../src/modes.h"
6 6
7 7 int mode = NORMAL_MODE; int mode = NORMAL_MODE;
8 8
9 void buildin_and_custom(void);
9 void builtin_and_custom(void);
10 10 void diff_motions(void); void diff_motions(void);
11 11 void discard_not_full_cmds(void); void discard_not_full_cmds(void);
12 12 void dont_exec_motions_only(void); void dont_exec_motions_only(void);
13 void remap_buildin(void);
13 void remap_builtin(void);
14 14 void long_motions_wait(void); void long_motions_wait(void);
15 15 void longest(void); void longest(void);
16 16 void motions(void); void motions(void);
 
... ... void noremap_tests(void);
27 27
28 28 void all_tests(void) void all_tests(void)
29 29 { {
30 buildin_and_custom();
30 builtin_and_custom();
31 31 diff_motions(); diff_motions();
32 32 discard_not_full_cmds(); discard_not_full_cmds();
33 33 dont_exec_motions_only(); dont_exec_motions_only();
34 remap_buildin();
34 remap_builtin();
35 35 long_motions_wait(); long_motions_wait();
36 36 longest(); longest();
37 37 motions(); motions();
 
... ... void my_suite_setup(void)
57 57 }; };
58 58
59 59 init_keys(MODES_COUNT, &mode, mode_flags); init_keys(MODES_COUNT, &mode, mode_flags);
60 init_buildin_keys(&mode);
60 init_builtin_keys(&mode);
61 61 } }
62 62
63 63 void my_suite_teardown(void) void my_suite_teardown(void)
File tests/misc/cmdline_completion.c changed (mode: 100644) (index 7f5afa88d..b02a631ab)
... ... test_set_completion(void)
93 93 { {
94 94 reset_completion(); reset_completion();
95 95 assert_int_equal(0, line_completion(&stats)); assert_int_equal(0, line_completion(&stats));
96 assert_true(wcscmp(stats.line, L"set fusehome") == 0);
96 assert_true(wcscmp(stats.line, L"set all") == 0);
97 97 } }
98 98
99 99 void void
File tests/options/opt_completion.c changed (mode: 100644) (index 5adfb699f..c32ca8598)
... ... test_space_at_the_end(void)
19 19
20 20 reset_completion(); reset_completion();
21 21 complete_options("fusehome=a\\ b ", &start); complete_options("fusehome=a\\ b ", &start);
22
23 completed = next_completion();
24 assert_string_equal("all", completed);
25 free(completed);
26
22 27 completed = next_completion(); completed = next_completion();
23 28 assert_string_equal("fastrun", completed); assert_string_equal("fastrun", completed);
24 29 free(completed); free(completed);
 
... ... test_skip_abbreviations(void)
92 97 reset_completion(); reset_completion();
93 98 complete_options("", &start); complete_options("", &start);
94 99
100 completed = next_completion();
101 assert_string_equal("all", completed);
102 free(completed);
103
95 104 completed = next_completion(); completed = next_completion();
96 105 assert_string_equal("fastrun", completed); assert_string_equal("fastrun", completed);
97 106 free(completed); free(completed);
 
... ... test_colon(void)
229 238
230 239 reset_completion(); reset_completion();
231 240 complete_options("fusehome:a\\ b ", &start); complete_options("fusehome:a\\ b ", &start);
241
242 completed = next_completion();
243 assert_string_equal("all", completed);
244 free(completed);
245
232 246 completed = next_completion(); completed = next_completion();
233 247 assert_string_equal("fastrun", completed); assert_string_equal("fastrun", completed);
234 248 free(completed); free(completed);
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master