interactive: Implement single key mode.
[paraslash.git] / interactive.h
index a19f8a4..fb39860 100644 (file)
@@ -59,6 +59,10 @@ struct i9e_client_info {
        int loglevel;
        /** Complete input lines are passed to this callback function. */
        int (*line_handler)(char *line);
        int loglevel;
        /** Complete input lines are passed to this callback function. */
        int (*line_handler)(char *line);
+       /** In single key mode, this callback is executed instead. */
+       int (*key_handler)(int key);
+       /** The array of valid key sequences for libreadline. */
+       char **bound_keyseqs;
        /** File descriptors to use for input/output/log. */
        int fds[3];
        /** Text of the current prompt. */
        /** File descriptors to use for input/output/log. */
        int fds[3];
        /** Text of the current prompt. */
@@ -71,6 +75,11 @@ struct i9e_client_info {
         * completer if the cursor is not on the first word.
         */
        struct i9e_completer *completers;
         * completer if the cursor is not on the first word.
         */
        struct i9e_completer *completers;
+       /**
+        * If non-NULL, this node is attached immediately to the stdout btr
+        * node of the i9e subsystem.
+        */
+       struct btr_node *producer;
 };
 
 int i9e_open(struct i9e_client_info *ici, struct sched *s);
 };
 
 int i9e_open(struct i9e_client_info *ici, struct sched *s);
@@ -86,3 +95,4 @@ char **i9e_complete_commands(const char *word, struct i9e_completer *completers)
 void i9e_complete_option(char **opts, struct i9e_completion_info *ci,
                struct i9e_completion_result *cr);
 int i9e_print_completions(struct i9e_completer *completers);
 void i9e_complete_option(char **opts, struct i9e_completion_info *ci,
                struct i9e_completion_result *cr);
 int i9e_print_completions(struct i9e_completer *completers);
+int i9e_get_error(void);