texlive[51573] Master/texmf-dist: mcf2graph (7jul19)

commits+karl at tug.org commits+karl at tug.org
Sun Jul 7 22:21:04 CEST 2019


Revision: 51573
          http://tug.org/svn/texlive?view=revision&revision=51573
Author:   karl
Date:     2019-07-07 22:21:04 +0200 (Sun, 07 Jul 2019)
Log Message:
-----------
mcf2graph (7jul19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
    trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,6 +1,9 @@
 *******************************************************************************
- Changelog of mcf2graph software package          by Akira Yamaji 2019-06-23
+ Changelog of mcf2graph software package          by Akira Yamaji 2019-07-07
 *******************************************************************************
+[ver. 4.44  / 2019-07-07]
+  -improve to ignore unknown command
+
 [ver. 4.43  / 2019-06-23]
   -add binop for add()
      a << b : a rotated b

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,7 +1,7 @@
 ********************************************************************************
  mcf2graph  : Convert Molecular Coding Format to graphics with METAFONT/METAPOST
  Author     : Akira Yamaji
- version    : 4.43 2019-06-23
+ version    : 4.44 2019-07-07
  E-mail     : mcf2graph at gmail.com
  Located at : http://www.ctan.org/pkg/mcf2graph
 ********************************************************************************

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format for mcf_example.tex   by Akira Yamaji  2019.06.23
+% Molecular Coding Format for mcf_example.tex   by Akira Yamaji  2019.07.07
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf;   %%% it must be version 4.43 or later
+input mcf2graph.mf;   %%% it must be version 4.44 or later
 %-------------------------------------------------------------------------
 fsize:=(33mm,24mm);
 max_blength:=4.5mm;
@@ -263,7 +263,7 @@
 %***************************************************************************
 beginfont("EN:Limonin","MW:470.518")
   MC(<30,?6,{-3,-4}=?6,-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf,
-      {13,15,17,20}:O,{3,12,21}://O,
+     {13,15,17,20}:O,{3,12,21}://O,
       {4~wf^60,8~zf^60,18^35,18^-35}:/_,{1^60,5^180,16^60}:/*H,
       14:\*,|,?5,{1,4}=dl,3:O)
 endfont

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,13 +1,12 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex  by Akira.Yamaji 2019.06.23
+% Molecular Coding Format file for mcf_manual.tex  by Akira.Yamaji 2019.07.07
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf;   %% it must be version 4.43 or later
+input mcf2graph.mf;   %% it must be version 4.44 or later
 %------------------------------------------------------------------------
 sw_mframe:=0;
 sw_expand:=0;
 %%%%sw_aux_out:=0;
-%%%%%sw_arrow:=1;
-%%%%%sw_rep_out:=1;
+%%%%sw_rep_out:=1;
 %***********************************************************************
 fsize:=(35mm,25mm);
 blength:=6mm;
@@ -1129,3 +1128,15 @@
 endfont
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 bye
+?6,{-4,-2}=?6,-4=?5,7=dl,
+      1:*/OH,{4,12}:*/_^60,9:*/H^60,
+      10:/*H^180,11:/*H^-60,17:/*H^-54,
+      -1:@,18,/*_,-60,!3,/_,!,
+     )
+endfont
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+bye
+%%%%%
+bye
+
+bye

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  Molecular Coding Format manual                by  Akira Yamaji 2019.06.23
+%  Molecular Coding Format manual                by  Akira Yamaji 2019.07.07
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \documentclass[a4paper]{article}
 %%%%\documentclass[a4paper,twoside]{article}

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of  MCF typest with LuaLaTeX(luamplib)     by A.Yamaji    2019.06.23
+% Example of  MCF typest with LuaLaTeX(luamplib)     by A.Yamaji    2019.07.07
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% mcf2graph.mf it must be version 4.43 or later
+%%% mcf2graph.mf it must be version 4.44 or later
 \documentclass{article}
 %------------------------------------------------------------------------------
 \usepackage{luamplib}%

Modified: trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf	2019-07-06 23:52:48 UTC (rev 51572)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf	2019-07-07 20:21:04 UTC (rev 51573)
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.43     Copyright (c) 2013-2019   Akira Yamaji
+% mcf2graph ver 4.44     Copyright (c) 2013-2019   Akira Yamaji
 %
 % Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 % and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -36,7 +36,6 @@
 % Set to use plain.mp (label,arrow,atom)     : mpost -s labeloffset=2  FILENAME
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 tracingstats:=1;
-message " This is mcf2graph ver 4.43  2019.06";
 %-------------------------------------------------------------------------------------------------
 newinternal char_num,str_cnt,sub_usr,sub_int,tbl_cnt,sharp_char;
 numeric save_num[],comD[][],parD[][],cntD[],tbl_atom[],tbl_subst[][],
@@ -65,10 +64,6 @@
   out_file_aux:=jobname&"-info.aux";
   out_file_rep:=jobname&"-report.txt";
   def out_file_mol= jobname&"-"&fit_zero(char_num)&"-"&inf_EN&".mol" enddef;
-  %-- default bboxmargin=2------------------------------------------------------------------
-  if     bboxmargin=0: def shipit = enddef;                    % No image file
-  elseif bboxmargin=1: proc_end:=1;                            % output first font only
-  fi
   %--default ahangle=45---------------------------------------------------------------------
   if     ahangle=0:  outputformat:="eps";                      % eps format(.mps)
   elseif ahangle=1:  outputformat:="png"; hppp:=vppp:=0.12;    % png format(600dpi)
@@ -80,11 +75,15 @@
   elseif ahangle=13: outputformat:="png"; hppp:=vppp:=0.06;    % png format(1200dpi)
   fi
   %--default ahlength=4---------------------------------------------------------------------
-  if     ahlength=1: sw_aux_out:=1; def shipit = enddef;       % output aux file
-  elseif ahlength=2: sw_rep_out:=1; def shipit = enddef;       % output report
-  elseif ahlength=5: sw_mol_out:=1; def shipit = enddef;       % output MOL(V2000)
-  elseif ahlength=6: sw_mol_out:=2; def shipit = enddef;       % output MOL(V3000)
+  if     ahlength=1: sw_aux_out:=1; bboxmargin:=0;             % output aux file
+  elseif ahlength=2: sw_rep_out:=1; bboxmargin:=0;             % output report
+  elseif ahlength=5: sw_mol_out:=1; bboxmargin:=0;             % output MOL(V2000)
+  elseif ahlength=6: sw_mol_out:=2; bboxmargin:=0;             % output MOL(V3000)
   fi
+  %-- default bboxmargin=2------------------------------------------------------------------
+  if     bboxmargin=0: def shipit = enddef;                    % No image file
+  elseif bboxmargin=1: proc_end:=1;                            % output first font only
+  fi
   %--default labeloffset=3------------------------------------------------------------------
   if     labeloffset=1: sw_arrow:=1; defaultfont:="uhvr8r";           % plain.mp label
   elseif labeloffset=2: sw_arrow:=1; defaultfont:=atomfont:="uhvr8r"; % plain.mp label,atom
@@ -104,7 +103,7 @@
   if defaultfont="": defaultfont:="draw"; fi % default label font
   %-----------------------------------------------------------------------------------------
 else: f_MP:=0;
-  %-----------------------------------
+  %------------------------------------
   def image = image_emu enddef;
   def llcorner = llcorner_emu enddef;
   def lrcorner = lrcorner_emu enddef;
@@ -122,6 +121,32 @@
 fi
 clearit;
 %--------------------------------------------------------------------------------------------------
+message "---------------------------------------------";
+message "This is mcf2graph ver 4.44  2019.07";
+if f_MP=1:
+  message "numbersystem="&numbersystem;
+  if     ahlength=1: message "output aux file";
+                     message "out_file_aux="&out_file_aux;
+  elseif ahlength=2: message "output report file";
+                     message "out_file_rep="&out_file_rep;
+  elseif ahlength=5: message "output MOL file(V2000)";
+                     message jobname&"-nnn-"&"inf_EN"&".mol";
+  elseif ahlength=6: message "output MOL file(V3000)";
+                     message jobname&"-nnn-"&"inf_EN"&".mol";
+  fi
+  if bboxmargin=0:
+    message "No image file";
+  else:
+    if outputformat="png":
+      message "outputformat="&outputformat &" / ppp="&decimal(hppp);
+    else:
+      message "outputformat="&outputformat;
+    fi
+    message "outputtemplate="&outputtemplate;
+  fi
+fi
+message "---------------------------------------------";
+%--------------------------------------------------------------------------------------------------
 let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let ef=elseif;
 %--------------------------------------------------------------------------------------------------
 primarydef a at b = fat(a,b) enddef;
@@ -157,7 +182,7 @@
   _dl,_mb,_N,_O,_S,_tmp_line,_chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env,
   _tmp_env,_set_colorA,_set_colorB,_postA,_postB,_postC,_postD,_postE,_postF,_postG,_postH,
   _set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_push,_pop,
-  _size_a,_numeric,_jump_at,_connect_at,_set_and,_chg_charge);
+  _size_a,_numeric,_jump_at,_connect_at,_set_and,_chg_charge,_nop);
 def_com(1)(si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_);
 %--------------------------------------------------------------------------------------------------
 def parameter_list=
@@ -287,28 +312,44 @@
        |,||,|<,>|,|<=,|=,=|,|:,:|,_,d,w,z,inside_def_MC;
   inside_def_MC:=1;
   _:=Me; d:=db; w:=wf; z:=zf;
-  tertiarydef a=b == change_bond(a,b) enddef; 
-  tertiarydef a:b == change_atom(a,b) enddef;
-  def { == '''( enddef;  let } == );
+  tertiarydef a=b == if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; 
+  tertiarydef a:b == if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef;
+  def { == '''( enddef;
+  let } == );
   def &primary s == (_set_and,ASCII(s)) enddef;
   vardef $primary a == a-4095 enddef;
-  def ^^primary n == (_tmp_rot,n) enddef; def ~~primary n == (_tmp_line,n) enddef;
-  def '`primary n == (_tmp_len,n) enddef; def :>primary n == (_tmp_env,n) enddef;
-  def >>primary n == (_chg_env,n) enddef; def ``primary n == (_chg_len,n) enddef;
+  def ^^primary n == (_tmp_rot,n) enddef;
+  def ``primary n == (_chg_len,n) enddef;
+  def '`primary n == (_tmp_len,n) enddef;
   def <primary n  == (_rot_ang,n) enddef;
-  tertiarydef a^b == ^^b,a enddef;  tertiarydef a`b == '`b,a enddef;
-  tertiarydef a~b == ~~b,a enddef;  tertiarydef a>b == :>b,a enddef;
-  def # == _connect_at enddef; def @ == _jump_at enddef; def \ == @,0 enddef;
-  def \\ == \~dm enddef; def *\ == \~wf enddef; def \* == \~zf enddef; def *\* == \~wv enddef;
-  def |: == (_push,0) enddef; def :| == (_pop,0)  enddef;
-  def |< == (_push,1) enddef; def >| == (_pop,1)  enddef;
-  def |<=primary n == ``n,(_push,0) enddef;
+  def >>primary n == (_chg_env,n) enddef;
+  def ~~primary n == (_tmp_line,n) enddef;
+  def :>primary n == (_tmp_env,n) enddef;
+  tertiarydef a^b == if known b:: ^^b,a else:: _nop,a fi enddef;
+  tertiarydef a`b == if known b:: '`b,a else:: _nop,a fi enddef;
+  tertiarydef a~b == if known b:: ~~b,a else:: _nop,a fi enddef;
+  tertiarydef a>b == if known b:: :>b,a else:: _nop,a fi enddef;
+  def #  == _connect_at enddef;
+  def @  == _jump_at enddef;
+  def \  == @,0 enddef;
+  def \\ == \~dm enddef;
+  def *\ == \~wf enddef;
+  def \* == \~zf enddef;
+  def *\* == \~wv enddef;
+  def |: == (_push,0) enddef;
+  def :| == (_pop,0)  enddef;
+  def |< == (_push,1) enddef;
+  def >| == (_pop,1)  enddef;
   def |=primary n == (_push,0),``n enddef;
-  def =|          == (_pop,0) enddef;
-  def | == (_push,2) enddef;  def || == (_pop,2) enddef;
-  def /secondary n ==  (_postA,n) enddef;  def //secondary n == (_postB,n) enddef;
-  def */secondary n == (_postC,n) enddef;  def /*secondary n == (_postD,n) enddef;
-  def **secondary n == (_postF,n) enddef;  def */*secondary n == (_postG,n) enddef;
+  def =| == (_pop,0) enddef;
+  def |  == (_push,2) enddef;
+  def || == (_pop,2) enddef;
+  def /secondary n ==   if known n:: (_postA,n) else:: _nop fi enddef;
+  def //secondary n ==  if known n:: (_postB,n) else:: _nop fi enddef;
+  def */secondary n ==  if known n:: (_postC,n) else:: _nop fi enddef;
+  def /*secondary n ==  if known n:: (_postD,n) else:: _nop fi enddef;
+  def **secondary n ==  if known n:: (_postF,n) else:: _nop fi enddef;
+  def */*secondary n == if known n:: (_postG,n) else:: _nop fi enddef;
 enddef;
 %=================================================================================================
 vardef '(text TXT)= ''(incr sub_usr)(TXT); sub_usr enddef;
@@ -315,9 +356,11 @@
 %-------------------------------------------------------------------------------------------------
 def ''(expr ADR)(text TXT)=
   begingroup
+  save list_cnt;
   if unknown inside_def_MC:: set_def_MC fi
-  cntD[ADR]:=0;
+  cntD[ADR]:=list_cnt:=0;
   for list==TXT::
+    list_cnt:=list_cnt+1;
     if known list::
       if pair list::
         cntD[ADR]:=cntD[ADR]+1;
@@ -324,7 +367,9 @@
         comD[ADR][cntD[ADR]]:=xpart(list);
         parD[ADR][cntD[ADR]]:=ypart(list);
       elseif numeric list::
-        if list>=sub_emb_start::
+        if     list==_nop::
+          message "unknown command in "AND decimal(list_cnt);
+        elseif list>=sub_emb_start::
           for i==1 upto cntD[list]::
             cntD[ADR]:=cntD[ADR]+1;
             comD[ADR][cntD[ADR]]:=comD[list][i];
@@ -342,6 +387,8 @@
         comD[ADR][cntD[ADR]]:=_set_atom;
         parD[ADR][cntD[ADR]]:=str_cnt;
       fi
+    else::
+      message "unknown command in "AND decimal(list_cnt);
     fi
   endfor
   endgroup
@@ -350,13 +397,23 @@
 vardef '''(text TXT)=
   sub_int:=sub_int+1;
   cntD[sub_int]:=0;
-  for list==TXT:: cntD[sub_int]:=cntD[sub_int]+1;
-    if     numeric list::
-      comD[sub_int][cntD[sub_int]]:=_numeric;
-      parD[sub_int][cntD[sub_int]]:=list;
-    elseif pair list::
-      comD[sub_int][cntD[sub_int]]:=xpart(list);
-      parD[sub_int][cntD[sub_int]]:=ypart(list);
+  for list==TXT::
+    if known list::
+      if     numeric list::
+        if list==_nop::
+          message "unknown command in "AND decimal(sub_int);
+        else::
+          cntD[sub_int]:=cntD[sub_int]+1;
+          comD[sub_int][cntD[sub_int]]:=_numeric;
+          parD[sub_int][cntD[sub_int]]:=list;
+        fi
+      elseif pair list::
+        cntD[sub_int]:=cntD[sub_int]+1;
+        comD[sub_int][cntD[sub_int]]:=xpart(list);
+        parD[sub_int][cntD[sub_int]]:=ypart(list);
+      fi
+    else::
+      message "unknown command in "AND decimal(sub_int);
     fi
   endfor
   sub_int    %------- Retern value -------
@@ -852,7 +909,7 @@
   begingroup
   save nA;
   if f_at=1: nA:=getA(adrT); check_adrA(nA); else: nA:=cntA+1; fi
-   cntP:=cntP+1; ps_adr[cntP]:=nA; ps_com[cntP]:=par; op_cnt[cntP]:=0;
+  cntP:=cntP+1; ps_adr[cntP]:=nA; ps_com[cntP]:=par; op_cnt[cntP]:=0;
   if lineT<>0:  PO(_tmp_line,lineT) fi
   if rotT<>0:   PO(_rot_ang,rotT) fi
   if lenT<>crR: PO(_chg_len,lenT) fi
@@ -997,6 +1054,7 @@
   ef nC=_set_colorB: colorB[getB(adrT)]:=par;
   ef nC=_set_and:    andAT:=par;
   ef nC=_chg_charge: andA[getA(par)]:=andAT; andAT:=0; if rotT<>0: and_rot[getA(par)]:=rotT; fi
+  else:
   fi
   endfor
 enddef;
@@ -1056,6 +1114,7 @@
   ef nC=_cyc_sB:  f_end:=1; proc_cyc(sB[getB(par)]);
   ef nC=_cyc_eB:  f_end:=1; proc_cyc(eB[getB(par)]);
   ef nC=_term:    termB;
+  else:
   fi
   endfor
   endgroup



More information about the tex-live-commits mailing list