comparison mcabber/src/commands.c @ 260:33e1a05864a6

Add "verbatim multi-line" mode, with commands disabled "/msay verbatim" enters multi-line mode with all commands disabled but "/msay", so that lines beginning with a slash '/' can be sent. Note: <Tab> still do commands completion.
author mikael@frmp8452
date Fri, 01 Jul 2005 23:47:03 +0100
parents 5f8b529412bd
children ab6f83a82811
comparison
equal deleted inserted replaced
259:594e73bc9610 260:33e1a05864a6
122 122
123 // Multi-line (msay) category 123 // Multi-line (msay) category
124 compl_add_category_word(COMPL_MULTILINE, "abort"); 124 compl_add_category_word(COMPL_MULTILINE, "abort");
125 compl_add_category_word(COMPL_MULTILINE, "begin"); 125 compl_add_category_word(COMPL_MULTILINE, "begin");
126 compl_add_category_word(COMPL_MULTILINE, "send"); 126 compl_add_category_word(COMPL_MULTILINE, "send");
127 compl_add_category_word(COMPL_MULTILINE, "verbatim");
127 } 128 }
128 129
129 // cmd_get 130 // cmd_get
130 // Finds command in the command list structure. 131 // Finds command in the command list structure.
131 // Returns a pointer to the cmd entry, or NULL if command not found. 132 // Returns a pointer to the cmd entry, or NULL if command not found.
201 } 202 }
202 return 0; 203 return 0;
203 } 204 }
204 205
205 if (*line != '/') { 206 if (*line != '/') {
207 // This isn't a command
206 if (scr_get_multimode()) 208 if (scr_get_multimode())
207 scr_append_multiline(line); 209 scr_append_multiline(line);
208 else 210 else
209 do_say(line); 211 do_say(line);
210 return 0; 212 return 0;
216 ; 218 ;
217 for (p-- ; p>line && (*p == ' ') ; p--) 219 for (p-- ; p>line && (*p == ' ') ; p--)
218 *p = 0; 220 *p = 0;
219 221
220 // Command "quit"? 222 // Command "quit"?
221 if (!strncasecmp(line, "/quit", 5)) 223 if ((!strncasecmp(line, "/quit", 5)) && (scr_get_multimode() != 2) )
222 if (!line[5] || line[5] == ' ') 224 if (!line[5] || line[5] == ' ')
223 return 255; 225 return 255;
226
227 // If verbatim multi-line mode, we check if another /msay command is typed
228 if ((scr_get_multimode() == 2) && (strncasecmp(line, "/msay ", 6))) {
229 // It isn't an /msay command
230 scr_append_multiline(line);
231 return 0;
232 }
224 233
225 // Commands handling 234 // Commands handling
226 curcmd = cmd_get(line); 235 curcmd = cmd_get(line);
227 236
228 if (!curcmd) { 237 if (!curcmd) {
399 send_message(arg); 408 send_message(arg);
400 } 409 }
401 410
402 void do_msay(char *arg) 411 void do_msay(char *arg)
403 { 412 {
404 /* begin abort send */ 413 /* Parameters: begin verbatim abort send */
405 gpointer bud; 414 gpointer bud;
406 415
407 if (!strcasecmp(arg, "abort")) { 416 if (!strcasecmp(arg, "abort")) {
408 scr_set_multimode(FALSE); 417 scr_set_multimode(FALSE);
409 return; 418 return;
410 } else if (!strcasecmp(arg, "begin")) { 419 } else if ((!strcasecmp(arg, "begin")) || (!strcasecmp(arg, "verbatim"))) {
411 scr_set_multimode(TRUE); 420 if (!strcasecmp(arg, "verbatim"))
421 scr_set_multimode(2);
422 else
423 scr_set_multimode(1);
424
412 scr_LogPrint("Entered multi-line message mode."); 425 scr_LogPrint("Entered multi-line message mode.");
413 scr_LogPrint("Select a buddy and use \"/msay send\" " 426 scr_LogPrint("Select a buddy and use \"/msay send\" "
414 "when your message is ready."); 427 "when your message is ready.");
415 return; 428 return;
416 } else if (*arg == 0) { 429 } else if (*arg == 0) {