/* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
/*                                                                     */
/*        P�l Hedne 1990                                               */
/*                                                                     */
/* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
_init (...)
{
  int save_key;
  global save_key;

       save_key=0;
}
/* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
split_tex (...)
{
       int line,col,line1,col1,match,length,
      buf_key,nwrite,ind;
  string sdum,text,label,fname,bname,ext;
  inq_names(fname,ext,bname);
       ind = search_string (".",fname,length,0,0);
  if (ind>0) fname=substr(fname,1,ind-1);
  fname=fname+".sav";

  ind=exist(fname);
  if (ind != 0)
     {
      sprintf(text,"File %s exist. Continue (Y/N) ? ",fname);
      get_parm (0, sdum, text, 1);
      sdum=upper(sdum);
     }
  else
     sdum="Y";

  if (sdum == "Y")
     {
      if (ind!=0) del(fname);
      message("Splitter...");
      inq_position (line, col);
      top_of_buffer();
      save_key=create_buffer("Save",fname,0);
      buf_key=inq_buffer();
      nwrite=0;
      match=1;
/*       pause_on_error(1);*/
      while (match > 0)
      {
/*      match=search_fwd("{{\\\\}|{\\{}*\\}}|{\\$*\\$}|{\\*$}",-1,0,0,1);*/
/*              match=search_fwd("{{\\\\}|{\\{}*\\}}|{\\$*\\$}|{\\\\[~ \t\n]+[ \t\n]}",-1,0,0,1);*/
       match=search_fwd("{{\\\\}|{\\{}*\\}}|{\\$*\\$}|{\\\\[~ \t\n]+}",-1,0,0,1);
        if (match > 0)
          {
            ++nwrite;
            --match;
                text = read(match);
/*             error("nw %d=%s",nwrite,text);*/
            delete_char(match);
            sprintf(label,"%c%d ",94,nwrite);
            insert(label);
            set_buffer(save_key);
            insert(label);insert(text);insert("\n");
/*             error("Ins: %s %s",label,text);*/
            set_buffer(buf_key);
            sprintf(text,"Splitter...%d",nwrite);
            message(text);
           }
      }
      if (nwrite>0)
         {
          set_buffer(save_key);
          write_buffer();
          set_buffer(buf_key);
          delete_buffer(save_key);
         }
      move_abs(line,col);
      message(" ");
     }
}
/* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
join_tex (...)
{
       int line,col,line1,col1,match,save_match,length,
      buf_key,nwrite,ind,fsave;
  string text,label,fname,bname,ext,sdum;

  inq_names(fname,ext,bname);
       ind = search_string (".",fname,length,0,0);
  if (ind>0) fname=substr(fname,1,ind-1);
  fname=fname+".sav";
  fsave=0;

  message("Kobler...");
  inq_position (line, col);
  top_of_buffer();
  save_key=create_buffer("Save",fname,0);
  buf_key=inq_buffer();
  nwrite=0;
  match=1;
/*   pause_on_error(1);*/
  while (match > 0)
  {
     ++nwrite;
     sprintf(label,"%c%d ",94,nwrite);
               match=search_fwd(label,0,0,0,1);
     set_buffer(save_key);
       save_match=search_fwd(label,0,0,0,1);
/*      error("label=%s,match=%d,smatch=%d",label,match,save_match);*/
     if ((match > 0) && (save_match>0))
                 {
        move_rel(0,save_match-1);
          text = read();
        ind=strlen(text)-1;
        text=substr(text,1,ind);

        set_buffer(buf_key);
        delete_char(match-1);
        insert(text);
        sprintf(text,"Join...%d",nwrite);
        message(text);
       }
     else
       {
        if (!((match==0)&&(save_match==0)))
           {
           sprintf(text,"Warning: ^%d missing !! Continue (Y/N)?",nwrite);
           get_parm (0, sdum, text, 1);
           sdum=upper(sdum);
           if (sdum != "Y")
              {
               match=0;
               fsave=1;
              }
           else
              {
              match=1;
              set_buffer(buf_key);
              }
           }
       }
  }
  set_buffer(save_key);
  delete_buffer(save_key);
  set_buffer(buf_key);
  if (fsave==0) del(fname);
  move_abs(line,col);
  message(" ");
}