Date: Mon, 23 Dec 2019 23:45:34 +0100 From: Steffen Nurpmeso <stef...@sdaoden.eu> Message-ID: <20191223224534.8ufgy%stef...@sdaoden.eu>
| |Troff reads .ie and checks the condition. The condition is true and | |so the rest of the line is executed. Then troff reads .el that | |matches successful .ie, so the .el is discarded. | | | |Then it reads .el which is not matched with any .ie that troff has | |seen. It's usually silently discarded, That is what is (always was) intended to happen. | |but since we run with -ww we | |get the warning about an unbalanced .el That's a broken warning. The code in a "discarded" .el needs to be examined anyway (if it weren't, the \{ \} block to group the code together wouldn't work, and when doing that, it can easily notice an embedded .ie (it must be immediately after the .el so looking for it is not hard) which will require another matching .el, and make sure that things are correctly balanced. That would be a useful wraning. The .ie .el .ie .el .ie .el idiom has been used in troff (including by troff's authors) forever. Deciding to make that improper now, just because someone who doesn't understand, or cannot work out how to handle it correctly, is absurd. Perhaps (originally) the ".el .ie" combination could have been made a macro of its own, it should really be treated as if it were (like the "elif" word in sh), but adding more code to process another macro, just to save (what would be) 3 input bytes per use wouldn't really have been justifiable. kre