-struct lcmd {
- char *l_name; /* name of command */
- int l_lmin; /* minimum length to check */
- int l_lmax; /* maximum length to check */
- int l_amin; /* minimum argument */
- int l_amax; /* maximum argument */
- int (*l_func)(); /* the function */
-};
-static struct lcmd lcmd[] = {
- "%", 1, 1, 0, 0, l_select,
- "buffer", 1, 0, 1, 1, l_buffer,
- "close", 1, 0, 0, -1, l_close,
- "escape", 1, 0, 1, 1, l_escape,
- "label", 1, 0, 2, 2, l_label,
- "source", 1, 0, 1, 1, l_source,
- "terse", 1, 0, 0, 1, l_terse,
- "window", 1, 0, 4, 5, l_window,
- "write", 2, 0, 2, 2, l_write,
- 0
+struct lcmd_arg arg_buffer[];
+struct lcmd_arg arg_close[];
+struct lcmd_arg arg_escape[];
+struct lcmd_arg arg_label[];
+struct lcmd_arg arg_select[];
+struct lcmd_arg arg_source[];
+struct lcmd_arg arg_terse[];
+struct lcmd_arg arg_window[];
+struct lcmd_arg arg_write[];
+
+struct lcmd_tab lcmd_tab[] = {
+ "%", 1, l_select, arg_select,
+ "buffer", 1, l_buffer, arg_buffer,
+ "close", 1, l_close, arg_close,
+ "escape", 1, l_escape, arg_escape,
+ "label", 1, l_label, arg_label,
+ "select", 2, l_select, arg_select,
+ "source", 2, l_source, arg_source,
+ "terse", 1, l_terse, arg_terse,
+ "window", 2, l_window, arg_window,
+ "write", 2, l_write, arg_write,
+ 0, 0, 0, 0,