cmdline (merge-intel): add new bindings; ctrl-p, ctrl-n, alt-d
[libcmdline.git] / src / lib / cmdline_rdline.h
index 1129cb8..87a1789 100644 (file)
 #include <cmdline_cirbuf.h>
 #include <cmdline_vt100.h>
 
-#define vt100_bell         "\007"
-#define vt100_bs           "\010"
-#define vt100_bs_clear     "\010 \010"
-#define vt100_tab          "\011"
-#define vt100_crnl         "\012\015"
-#define vt100_clear_right  "\033[0K"
-#define vt100_clear_left   "\033[1K"
-#define vt100_clear_down   "\033[0J"
-#define vt100_clear_up     "\033[1J"
-#define vt100_clear_line   "\033[2K"
-#define vt100_clear_screen "\033[2J"
-#define vt100_up_arr       "\033\133\101"
-#define vt100_down_arr     "\033\133\102"
-#define vt100_right_arr    "\033\133\103"
-#define vt100_left_arr     "\033\133\104"
-#define vt100_multi_right  "\033\133%uC"
-#define vt100_multi_left   "\033\133%uD"
-#define vt100_suppr        "\033\133\063\176"
-#define vt100_home         "\033M\033E"
-#define vt100_word_left    "\033\142"
-#define vt100_word_right   "\033\146"
-
 /* configuration */
 #define RDLINE_BUF_SIZE 256
 #define RDLINE_PROMPT_SIZE  32
 
 enum rdline_status {
        RDLINE_INIT,
-       RDLINE_RUNNING
+       RDLINE_RUNNING,
+       RDLINE_EXITED
 };
 
 struct rdline;
 
-typedef void (rdline_write_char_t)(struct rdline *rdl, char);
+typedef int (rdline_write_char_t)(struct rdline *rdl, char);
 typedef void (rdline_validate_t)(struct rdline *rdl,
                                 const char *buf, unsigned int size);
 typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
@@ -196,7 +175,14 @@ void rdline_newline(struct rdline *rdl, const char *prompt);
 void rdline_stop(struct rdline *rdl);
 
 /**
- * Restart after a call to rdline_stop()
+ * Same than rdline_stop() except that next calls to rdline_char_in()
+ * will return RDLINE_RES_EXITED.
+ * \param rdl A pointer to a struct rdline
+ */
+void rdline_quit(struct rdline *rdl);
+
+/**
+ * Restart after a call to rdline_stop() or rdline_quit()
  * \param rdl A pointer to a struct rdline
  */
 void rdline_restart(struct rdline *rdl);
@@ -214,6 +200,7 @@ void rdline_redisplay(struct rdline *rdl);
 #define RDLINE_RES_COMPLETE      2
 #define RDLINE_RES_NOT_RUNNING  -1
 #define RDLINE_RES_EOF          -2
+#define RDLINE_RES_EXITED       -3
 
 /**
  * append a char to the readline buffer.