| #! /bin/sed -nf |
| # Script to add @group...@end group tags to sed.texi.in |
| # so that comments are not separated from the instructions |
| # that they refer to. |
| |
| # Step 1: search for the conventional "@c start----" comment |
| 1a\ |
| @c Do not edit this file!! It is automatically generated from sed-in.texi. |
| p |
| /^@c start-*$/! b |
| |
| # Step 2: loop until we find a @ command |
| :a |
| n |
| p |
| /^@/! ba |
| |
| # Step 3: process everything until a "@end" command |
| |
| # Step 3.1: Print the blank lines before the group. If we reach the "@end", |
| # we go back to step 1. |
| :b |
| n |
| /^@end/ { |
| p |
| b |
| } |
| /^[ ]*$/ { |
| p |
| bb |
| } |
| |
| # Step 3.2: Add to hold space every line until an empty one or "@end" |
| h |
| :c |
| n |
| /^@end example/! { |
| /^[ ]*$/! { |
| H |
| bc |
| } |
| } |
| |
| # Step 3.3: Working in hold space, add @group...@end group if there are |
| # at least two lines. Then print the lines we processed and |
| # switch back to pattern space. |
| x |
| /\n/ { |
| s/.*/@group\ |
| &\ |
| @end group/ |
| } |
| p |
| |
| # Step 3.4: Switch back to pattern space, print the first blank line |
| # and possibly go back to step 3.1 |
| x |
| p |
| /^@end/ !bb |