sob

Simple output bar
git clone https://git.sinitax.com/codemadness/sob
Log | Files | Refs | README | LICENSE | Upstream | sfeed.txt

config.def.h (3177B)


      1/* <green color> "> " <reset>, like mksh you can use '\x01' to stop counting
      2 * the characters for the prompt length. */
      3static const char *prompt            = "\x01\x1b[32m\x01> \x01\x1b[0m";
      4static const char *completenickcmd[] = { "/bin/sh", "-c", "$HOME/.sob/scripts/complete_nick 2> /dev/null", NULL };
      5static const char *historycmd[]      = { "/bin/sh", "-c", "$HOME/.sob/scripts/history 2> /dev/null",       NULL };
      6static const char *yankcmd[]         = { "/bin/sh", "-c", "/bin/xsel -i -p 2> /dev/null",                  NULL };
      7static const char *resizecmd[]       = { "/bin/sh", "-c", "$HOME/.sob/scripts/resize 2> /dev/null",        NULL };
      8
      9static void
     10line_yank(void)
     11{
     12	line_pipeto((char**)yankcmd, NULL);
     13}
     14
     15static void
     16history_menu(void)
     17{
     18	line_pipeto((char**)historycmd, cb_pipe_insert);
     19}
     20
     21static void
     22complete_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
     47static 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};