Lines Matching defs:el

47  *	number of characters.  This module maintains a map (the el->el_key.map)
54 * are in el->el_key.map, adding the key "abc" will cause the first two
65 #include "el.h"
68 * The Nodes of the el->el_key.map. The el->el_key.map is a linked list
99 key_init(EditLine *el)
102 el->el_key.buf = (char *) el_malloc(KEY_BUFSIZ);
103 if (el->el_key.buf == NULL)
105 el->el_key.map = NULL;
106 key_reset(el);
114 key_end(EditLine *el)
117 el_free((ptr_t) el->el_key.buf);
118 el->el_key.buf = NULL;
119 node__free(el->el_key.map);
127 key_map_cmd(EditLine *el, int cmd)
130 el->el_key.val.cmd = (el_action_t) cmd;
131 return (&el->el_key.val);
139 key_map_str(EditLine *el, char *str)
142 el->el_key.val.str = str;
143 return (&el->el_key.val);
148 * Takes all nodes on el->el_key.map and puts them on free list. Then
149 * initializes el->el_key.map with arrow keys
153 key_reset(EditLine *el)
156 node__put(el, el->el_key.map);
157 el->el_key.map = NULL;
163 * Calls the recursive function with entry point el->el_key.map
171 key_get(EditLine *el, char *ch, key_value_t *val)
174 return (node_trav(el, el->el_key.map, ch, val));
179 * Adds key to the el->el_key.map and associates the value in val with it.
180 * If key is already is in el->el_key.map, the new code is applied to the
185 key_add(EditLine *el, const char *key, key_value_t *val, int ntype)
189 (void) fprintf(el->el_errfile,
194 (void) fprintf(el->el_errfile,
198 if (el->el_key.map == NULL)
200 el->el_key.map = node__get(key[0]);
203 /* Now recurse through el->el_key.map */
204 (void) node__try(el, el->el_key.map, key, val, ntype);
213 key_clear(EditLine *el, el_action_t *map, const char *in)
217 ((map == el->el_map.key &&
218 el->el_map.alt[(unsigned char)*in] != ED_SEQUENCE_LEAD_IN) ||
219 (map == el->el_map.alt &&
220 el->el_map.key[(unsigned char)*in] != ED_SEQUENCE_LEAD_IN)))
221 (void) key_delete(el, in);
230 key_delete(EditLine *el, const char *key)
234 (void) fprintf(el->el_errfile,
238 if (el->el_key.map == NULL)
241 (void) node__delete(el, &el->el_key.map, key);
248 * Print entire el->el_key.map if null
251 key_print(EditLine *el, const char *key)
254 /* do nothing if el->el_key.map is empty and null key specified */
255 if (el->el_key.map == NULL && *key == 0)
258 el->el_key.buf[0] = '"';
259 if (node_lookup(el, key, el->el_key.map, 1) <= -1)
261 (void) fprintf(el->el_errfile, "Unbound extended key \"%s\"\n",
272 node_trav(EditLine *el, key_node_t *ptr, char *ch, key_value_t *val)
279 if (el_getc(el, ch) != 1) { /* if EOF or error */
284 return (node_trav(el, ptr->next, ch, val));
295 return (node_trav(el, ptr->sibling, ch, val));
309 node__try(EditLine *el, key_node_t *ptr, const char *str, key_value_t *val, int ntype)
325 node__put(el, ptr->next);
339 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n",
354 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ntype));
361 (void) node__try(el, ptr->next, str, val, ntype);
371 node__delete(EditLine *el, key_node_t **inptr, const char *str)
396 node__put(el, ptr);
399 node__delete(el, &ptr->next, str) == 1) {
407 node__put(el, ptr);
419 node__put(EditLine *el, key_node_t *ptr)
425 node__put(el, ptr->next);
428 node__put(el, ptr->sibling);
440 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ptr->type));
481 node_lookup(EditLine *el, const char *str, key_node_t *ptr, size_t cnt)
490 (void) node_enum(el, ptr, cnt);
493 /* If match put this char into el->el_key.buf. Recurse */
496 ncnt = key__decode_char(el->el_key.buf,
501 return (node_lookup(el, str + 1, ptr->next,
506 el->el_key.buf[ncnt + 1] = '"';
507 el->el_key.buf[ncnt + 2] = '\0';
508 key_kprint(el, el->el_key.buf,
518 return (node_lookup(el, str, ptr->sibling,
531 node_enum(EditLine *el, key_node_t *ptr, size_t cnt)
536 el->el_key.buf[++cnt] = '"';
537 el->el_key.buf[++cnt] = '\0';
538 (void) fprintf(el->el_errfile,
540 (void) fprintf(el->el_errfile, " \"%s...\"\n", el->el_key.buf);
545 (void) fprintf(el->el_errfile,
551 ncnt = key__decode_char(el->el_key.buf, (size_t)KEY_BUFSIZ, cnt,
555 el->el_key.buf[ncnt + 1] = '"';
556 el->el_key.buf[ncnt + 2] = '\0';
557 key_kprint(el, el->el_key.buf, &ptr->val, ptr->type);
559 (void) node_enum(el, ptr->next, ncnt + 1);
563 (void) node_enum(el, ptr->sibling, cnt);
573 key_kprint(EditLine *el, const char *key, key_value_t *val, int ntype)
586 (void) fprintf(el->el_outfile, fmt, key, unparsbuf);
589 for (fp = el->el_map.help; fp->name; fp++)
591 (void) fprintf(el->el_outfile, fmt,
597 (void) fprintf(el->el_outfile,
603 EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ntype));
607 (void) fprintf(el->el_outfile, fmt, key, "no input");