modify to execute n times a macro - faster version:
 
File: edit.c
       the changes are in bold:
 
 
static void edit_execute_macro (WEdit *edit, struct macro macro[], int n, long 
num);
 
<.....>
--------------------------------------------------------------------------------
 
void
edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
{

<....>

    /* CK_Pipe_Block */
    if ((command / 1000) == 1) /* a shell command */
         edit_block_process_cmd (edit, shell_cmd[command - 1000], 1);
    
    if (command > CK_Macro (0) && command <= CK_Last_Macro) { /* a macro 
command */
       struct macro m[MAX_MACRO_LENGTH];
     int nm;
 
 if (edit_load_macro_cmd (edit, m, &nm, command - 2000)) { 
 
      /* inizio modifica per eseguire la macro tante volte */
      char *NRmacro;
      static long line = 0;    
      char *error;
      long NREmacro = 0;
      long l;
      char s[32];
 
      NRmacro = input_dialog (_(" Execute Macro "), _(" How many times: "), 
NREmacro ? s : "");
  
      if (!NRmacro) 
         goto finc;
      if (!*NRmacro) {
         g_free (NRmacro);
         goto finc;
      }

      l = strtol (NRmacro, &error, 0);
      if (*error) {
          g_free (NRmacro);
          goto finc;
      }
      NREmacro = l;
 
      edit_execute_macro (edit, m, nm, NREmacro);
     }
  }
finc:
 
 
<......>

--------------------------------------------------------------------------------
 
static void
edit_execute_macro (WEdit *edit, struct macro macro[], int n, long num)
{
    long j;
   /* int i = 0; */
 
    if (edit->macro_depth++ > 256) {
      edit_error_dialog (_("Error"), _("Macro recursion is too deep"));
      edit->macro_depth--;
      return;
    }
    edit->force |= REDRAW_PAGE;
 
    for (j = 1; j <= num; j++) {
        int i = 0;
         for (; i < n; i++) {
             edit_execute_cmd (edit, macro[i].command, macro[i].ch);
     }
    }
    
    edit_update_screen (edit);
    edit->macro_depth--;
}
 
 
 
Dario Benenati
Uno Sistemi s.r.l.
Via Giovanni Verga, 7
62010 Morrovalle Scalo (MC) - Italy
Tel. +39 0733 865264   Fax +39 0733 865791
 
 

 Nota confidenziale: il presente messaggio e/o eventuali allegati è rivolto 
unicamente all'attenzione del destinatario ed il contenuto potrebbe avere 
carattere riservato. Se il presente messaggio e/o eventuali allegati Le fosse 
pervenuto per errore Vorrà provvedere alla sua distruzione e Le saremmo grati 
se ce ne comunicasse via e-mail l'errata ricezione all'indirizzo [EMAIL 
PROTECTED] Il contenuto del presente messaggio e/o eventuali allegati non 
impegnano Uno Sistemi s.r.l. nei confronti del destinatario o di terzi. Uno 
Sistemi s.r.l. non si assume alcuna responsabilità per eventuali 
intercettazioni, modifiche o danneggiamenti del presente messaggio e-mail e/o 
eventuali allegati.

 
 
_______________________________________________
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel

Reply via email to