config.def.h - sob - simple output bar
 (HTM) git clone git://git.codemadness.org/sob
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       config.def.h (3177B)
       ---
            1 /* <green color> "> " <reset>, like mksh you can use '\x01' to stop counting
            2  * the characters for the prompt length. */
            3 static const char *prompt            = "\x01\x1b[32m\x01> \x01\x1b[0m";
            4 static const char *completenickcmd[] = { "/bin/sh", "-c", "$HOME/.sob/scripts/complete_nick 2> /dev/null", NULL };
            5 static const char *historycmd[]      = { "/bin/sh", "-c", "$HOME/.sob/scripts/history 2> /dev/null",       NULL };
            6 static const char *yankcmd[]         = { "/bin/sh", "-c", "/bin/xsel -i -p 2> /dev/null",                  NULL };
            7 static const char *resizecmd[]       = { "/bin/sh", "-c", "$HOME/.sob/scripts/resize 2> /dev/null",        NULL };
            8 
            9 static void
           10 line_yank(void)
           11 {
           12         line_pipeto((char**)yankcmd, NULL);
           13 }
           14 
           15 static void
           16 history_menu(void)
           17 {
           18         line_pipeto((char**)historycmd, cb_pipe_insert);
           19 }
           20 
           21 static void
           22 complete_nick(void)
           23 {
           24         line_wordpipeto((char**)completenickcmd, cb_pipe_replaceword);
           25 }
           26 
           27 #define CONTROL(ch) ((ch)^0x40)
           28 #define ALT(ch)     '\x1b',ch,'\0'
           29 
           30 #define KEY_HOME       "\x1b\x5b\x31\x7e"
           31 #define KEY_END        "\x1b\x5b\x34\x7e"
           32 #define KEY_CTRL_LEFT  "\x1b\x5b\x31\x3b\x35\x44"
           33 #define KEY_CTRL_RIGHT "\x1b\x5b\x31\x3b\x35\x43"
           34 /* Del */
           35 #define KEY_DC         "\x1b\x5b\x33\x7e"
           36 /* SS3 DECCKM keys */
           37 #define KEY_UP         "\x1b\x4f\x41"
           38 #define KEY_DOWN       "\x1b\x4f\x42"
           39 #define KEY_RIGHT      "\x1b\x4f\x43"
           40 #define KEY_LEFT       "\x1b\x4f\x44"
           41 /* CSI keys */
           42 #define KEY_CSI_UP     "\x1b\x5b\x41"
           43 #define KEY_CSI_DOWN   "\x1b\x5b\x42"
           44 #define KEY_CSI_RIGHT  "\x1b\x5b\x43"
           45 #define KEY_CSI_LEFT   "\x1b\x5b\x44"
           46 
           47 static struct keybind {
           48         unsigned char key[16];
           49         void (*func)(void);
           50 } keybinds[] = {
           51         { { CONTROL('A')   },  line_cursor_begin },
           52         { { CONTROL('E')   },  line_cursor_end },
           53         { { KEY_HOME       },  line_cursor_begin },
           54         { { KEY_END        },  line_cursor_end },
           55         { { CONTROL('B')   },  line_cursor_prev },
           56         { { KEY_LEFT       },  line_cursor_prev },
           57         { { KEY_CSI_LEFT   },  line_cursor_prev },
           58         { { CONTROL('F')   },  line_cursor_next },
           59         { { KEY_RIGHT      },  line_cursor_next },
           60         { { KEY_CSI_RIGHT  },  line_cursor_next },
           61         { { ALT('b')       },  line_cursor_wordprev },
           62         { { ALT('f')       },  line_cursor_wordnext },
           63         { { KEY_CTRL_LEFT  },  line_cursor_wordprev },
           64         { { KEY_CTRL_RIGHT },  line_cursor_wordnext },
           65         { { CONTROL('W')   },  line_delwordprev },
           66         { { CONTROL('H')   },  line_delcharprev },
           67         { { 127            },  line_delcharprev },
           68         { { '\b'           },  line_delcharprev },
           69         { { CONTROL('U')   },  line_clear },
           70         { { CONTROL('K')   },  line_deltoend },
           71         { { KEY_DC         },  line_delcharnext },
           72         { { CONTROL('H')   },  line_delcharprev },
           73         { { CONTROL('M')   },  line_newline },
           74         { { CONTROL('J')   },  line_newline },
           75         { { '\r'           },  line_newline },
           76         { { '\n'           },  line_newline },
           77         { { CONTROL('Y')   },  line_yank },
           78         { { CONTROL('D')   },  line_exit },
           79         { { CONTROL('E')   },  line_deltoend },
           80         { { KEY_UP         },  history_menu },
           81         { { KEY_CSI_UP     },  history_menu },
           82         { { KEY_DOWN       },  history_menu },
           83         { { KEY_CSI_DOWN   },  history_menu },
           84         { { CONTROL('P')   },  history_menu },
           85         { { CONTROL('N')   },  history_menu },
           86         { { '\t'           },  complete_nick },
           87 };