mcabber/mcabber/screen.c
changeset 1903 75a0a22bbf78
parent 1863 2b013c0f949a
child 1915 e09763e16e49
equal deleted inserted replaced
1902:51cc01a1a5ec 1903:75a0a22bbf78
  3139   if (strncmp(cmdhisto_backup, mask, len)) return NULL; // No match
  3139   if (strncmp(cmdhisto_backup, mask, len)) return NULL; // No match
  3140   cmdhisto_cur = NULL;
  3140   cmdhisto_cur = NULL;
  3141   return cmdhisto_backup;
  3141   return cmdhisto_backup;
  3142 }
  3142 }
  3143 
  3143 
       
  3144 static char *_strmove(char *dst, const char *src)
       
  3145 {
       
  3146   char *dest = dst;
       
  3147   while ((*dest++ = *src++) != '\0')
       
  3148     ;
       
  3149   return dest;
       
  3150 }
       
  3151 
  3144 //  readline_transpose_chars()
  3152 //  readline_transpose_chars()
  3145 // Drag  the  character  before point forward over the character at
  3153 // Drag  the  character  before point forward over the character at
  3146 // point, moving point forward as well.  If point is at the end  of
  3154 // point, moving point forward as well.  If point is at the end  of
  3147 // the  line, then this transposes the two characters before point.
  3155 // the  line, then this transposes the two characters before point.
  3148 void readline_transpose_chars(void)
  3156 void readline_transpose_chars(void)
  3219       c = next_char(c);
  3227       c = next_char(c);
  3220   }
  3228   }
  3221 
  3229 
  3222   // Modify the line
  3230   // Modify the line
  3223   ptr_inputline = c;
  3231   ptr_inputline = c;
  3224   for (;;) {
  3232   _strmove(ptr_inputline, old);
  3225     *c = *old++;
       
  3226     if (!*c++) break;
       
  3227   }
       
  3228   check_offset(-1);
  3233   check_offset(-1);
  3229 }
  3234 }
  3230 
  3235 
  3231 //  readline_backward_word()
  3236 //  readline_backward_word()
  3232 // Move  back  to the start of the current or previous word
  3237 // Move  back  to the start of the current or previous word
  3449     return;
  3454     return;
  3450 
  3455 
  3451   src = ptr_inputline;
  3456   src = ptr_inputline;
  3452   c = prev_char(ptr_inputline, inputLine);
  3457   c = prev_char(ptr_inputline, inputLine);
  3453   ptr_inputline = c;
  3458   ptr_inputline = c;
  3454   for ( ; *src ; )
  3459   _strmove(ptr_inputline, src);
  3455     *c++ = *src++;
       
  3456   *c = 0;
       
  3457   check_offset(-1);
  3460   check_offset(-1);
  3458 }
  3461 }
  3459 
  3462 
  3460 void readline_forward_kill_char(void)
  3463 void readline_forward_kill_char(void)
  3461 {
  3464 {
  3462   if (!*ptr_inputline)
  3465   if (!*ptr_inputline)
  3463     return;
  3466     return;
  3464 
  3467 
  3465   strcpy(ptr_inputline, next_char(ptr_inputline));
  3468   _strmove(ptr_inputline, next_char(ptr_inputline));
  3466 }
  3469 }
  3467 
  3470 
  3468 void readline_iline_start(void)
  3471 void readline_iline_start(void)
  3469 {
  3472 {
  3470   ptr_inputline = inputLine;
  3473   ptr_inputline = inputLine;
  3484   if (ptr_inputline == inputLine) return;
  3487   if (ptr_inputline == inputLine) return;
  3485 
  3488 
  3486   if (*dest == COMMAND_CHAR && ptr_inputline != dest+1)
  3489   if (*dest == COMMAND_CHAR && ptr_inputline != dest+1)
  3487     dest = next_char(dest);
  3490     dest = next_char(dest);
  3488 
  3491 
  3489   strcpy(dest, ptr_inputline);
  3492   _strmove(dest, ptr_inputline);
  3490   ptr_inputline = dest;
  3493   ptr_inputline = dest;
  3491   inputline_offset = 0;
  3494   inputline_offset = 0;
  3492 }
  3495 }
  3493 
  3496 
  3494 void readline_forward_kill_iline(void)
  3497 void readline_forward_kill_iline(void)