--- a/mcabber/src/commands.c Tue Apr 03 20:30:28 2007 +0200
+++ b/mcabber/src/commands.c Tue Apr 03 20:30:34 2007 +0200
@@ -42,6 +42,9 @@
#define IMSTATUS_NOTAVAILABLE "notavail"
#define IMSTATUS_DONOTDISTURB "dnd"
+// Return value container for the following functions
+static int retval_for_cmds;
+
// Commands callbacks
static void do_roster(char *arg);
static void do_status(char *arg);
@@ -96,6 +99,10 @@
// cmd_init()
// Commands table initialization
+// !!!
+// After changing commands names and it arguments names here, you must change
+// ones in init_bindings()!
+//
void cmd_init(void)
{
cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add);
@@ -413,9 +420,10 @@
while (*p && (*p == ' '))
p++;
// Call command-specific function
+ retval_for_cmds = 0;
(*curcmd->func)(p);
g_free(xpline);
- return 0;
+ return retval_for_cmds;
}
// process_line(line)
@@ -2721,6 +2729,10 @@
free_arg_lst(paramlst);
}
+/* !!!
+ After changing the /iline arguments names here, you must change ones
+ in init_bindings().
+*/
static void do_iline(char *arg)
{
if (!strcasecmp(arg, "fword")) {
@@ -2762,9 +2774,9 @@
} else if (!strcasecmp(arg, "send_multiline")) {
readline_send_multiline();
} else if (!strcasecmp(arg, "iline_accept")) {
- readline_accept_line();
+ retval_for_cmds = readline_accept_line();
} else if (!strcasecmp(arg, "iline_accept_down_hist")) { // May be too long
- readline_accept_line_down_hist();
+ retval_for_cmds = readline_accept_line_down_hist();
} else if (!strcasecmp(arg, "compl_cancel")) {
readline_cancel_completion();
} else if (!strcasecmp(arg, "compl_do")) {
--- a/mcabber/src/main.c Tue Apr 03 20:30:28 2007 +0200
+++ b/mcabber/src/main.c Tue Apr 03 20:30:34 2007 +0200
@@ -290,6 +290,86 @@
#endif /* HAVE_GPGME */
}
+// Create default bindings
+// Return 0 if error and 1 if none
+int init_bindings(void)
+{
+ char *tmp;
+
+ if ( !(tmp = (char*)malloc(10)) ) {
+ scr_LogPrint(LPRINT_LOGNORM, "Not enough memory!");
+ fprintf(stderr, "Not enough memory!");
+ return 0;
+ }
+
+ // Ctrl-h
+ settings_set(SETTINGS_TYPE_BINDING, "8", "iline char_bdel");
+ settings_set(SETTINGS_TYPE_BINDING, "127", "iline char_bdel");
+ sprintf(tmp, "%d", KEY_BACKSPACE);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline char_bdel");
+ sprintf(tmp, "%d", KEY_DC);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline char_fdel");
+ sprintf(tmp, "%d", KEY_LEFT);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline bchar");
+ sprintf(tmp, "%d", KEY_RIGHT);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline fchar");
+ // Ctrl-g
+ settings_set(SETTINGS_TYPE_BINDING, "7", "iline compl_cancel");
+ sprintf(tmp, "%d", KEY_UP);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline hist_prev");
+ sprintf(tmp, "%d", KEY_DOWN);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline hist_next");
+ sprintf(tmp, "%d", KEY_PPAGE);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "roster up");
+ sprintf(tmp, "%d", KEY_NPAGE);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "roster down");
+ sprintf(tmp, "%d", KEY_HOME);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_start");
+ // Ctrl-a
+ settings_set(SETTINGS_TYPE_BINDING, "1", "iline iline_start");
+ sprintf(tmp, "%d", KEY_END);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_end");
+ // Ctrl-e
+ settings_set(SETTINGS_TYPE_BINDING, "5", "iline iline_end");
+ // Ctrl-o
+ settings_set(SETTINGS_TYPE_BINDING, "15", "iline iline_accept_down_hist");
+ // Ctrl-u
+ settings_set(SETTINGS_TYPE_BINDING, "21", "iline iline_bdel");
+ sprintf(tmp, "%d", KEY_EOL);
+ settings_set(SETTINGS_TYPE_BINDING, tmp, "iline iline_fdel");
+ // Ctrl-k
+ settings_set(SETTINGS_TYPE_BINDING, "11", "iline iline_fdel");
+ // Ctrl-p
+ settings_set(SETTINGS_TYPE_BINDING, "16", "buffer up");
+ // Ctrl-n
+ settings_set(SETTINGS_TYPE_BINDING, "14", "buffer down");
+ // Ctrl-t
+ settings_set(SETTINGS_TYPE_BINDING, "20", "iline char_swap");
+ // Ctrl-w
+ settings_set(SETTINGS_TYPE_BINDING, "23", "iline word_bdel");
+ // Ctrl-Left (2 codes)
+ settings_set(SETTINGS_TYPE_BINDING, "515", "iline bword");
+ settings_set(SETTINGS_TYPE_BINDING, "516", "iline bword");
+ // Ctrl-Right (2 codes)
+ settings_set(SETTINGS_TYPE_BINDING, "517", "iline fword");
+ settings_set(SETTINGS_TYPE_BINDING, "518", "iline fword");
+ // Ctrl-l
+ settings_set(SETTINGS_TYPE_BINDING, "12", "screen_repaint");
+ // Esc
+ settings_set(SETTINGS_TYPE_BINDING, "27", "chat_disable");
+ // Ctrl-d
+ settings_set(SETTINGS_TYPE_BINDING, "4", "iline send_multiline");
+ // Meta-u
+ settings_set(SETTINGS_TYPE_BINDING, "M117", "iline word_upcase");
+ // Meta-l
+ settings_set(SETTINGS_TYPE_BINDING, "M108", "iline word_downcase");
+ // Meta-c
+ settings_set(SETTINGS_TYPE_BINDING, "M99", "iline word_capit");
+
+ free(tmp);
+ return 1;
+}
+
int main(int argc, char **argv)
{
char *configFile = NULL;
@@ -330,6 +410,9 @@
/* Initialize charset */
scr_InitLocaleCharSet();
+ /* Creating default bindings */
+ if (!init_bindings()) exit(EXIT_FAILURE);
+
/* Parsing config file... */
ret = cfg_read_file(configFile);
/* free() configFile if it has been allocated during options parsing */