| " diff-to-logmsg.vim by Ph. Marek <philipp.marek@bmlv.gv.at> |
| " |
| " Usage is as follows: |
| " |
| " diff -urp subversion.orig subversion.mine > patch |
| " or |
| " svn diff --diff-cmd=diff --extensions="-up" [TARGET...] > patch |
| " |
| " (the -p tells diff to output the function names), then |
| " |
| " vi patch |
| " :source diff_to_logmsg.vim |
| " |
| " and voila! Just the documentation has to be written. |
| " |
| " Note from Julian Foad: |
| " It ought to be noted that the generated list of function names |
| " is only as accurate as the output of "diff -p", which is not very |
| " accurate - e.g. for changes to a doc string appearing before a |
| " function, it generally outputs the name of the _previous_ function. |
| |
| |
| " goto start of patch and insert the header (until the .) |
| :0 |
| insert |
| [[[ |
| |
| |
| ]]] |
| |
| |
| . |
| |
| |
| " search for file and function names and put them before the ]]] |
| :g/^\(---\|@@\)/normal ""yygg/]]]kk""p |
| |
| |
| " change the copied lines to the wanted scheme |
| :0 |
| :1;/]]]/ s#--- \([^\t ]\+\).\+#\r* \1#e |
| :1;/]]]/ s#@@ .\+ @@.*\<\(\w\+\) *(.*# (\1): #e |
| " all lines without function names are ignored |
| :1;/]]]/ g#@@ .\+#normal dd |
| " remove duplicates |
| :1;/]]]/ !uniq |