manpagez: man pages & more
info m4
Home | html | info | man

File: m4.info,  Node: Improved cleardivert,  Next: Improved capitalize,  Prev: Improved m4wrap,  Up: Answers

17.6 Solution for ‘cleardivert’
===============================

The ‘cleardivert’ macro (*note Cleardivert::) cannot, as it stands, be
called without arguments to clear all pending diversions.  That is
because using undivert with an empty string for an argument is different
than using it with no arguments at all.  Compare the earlier definition
with one that takes the number of arguments into account:

     define(`cleardivert',
       `pushdef(`_n', divnum)divert(`-1')undivert($@)divert(_n)popdef(`_n')')
     ⇒
     divert(`1')one
     divert
     ⇒
     cleardivert
     ⇒
     undivert
     ⇒one
     ⇒
     define(`cleardivert',
       `pushdef(`_num', divnum)divert(`-1')ifelse(`$#', `0',
         `undivert`'', `undivert($@)')divert(_num)popdef(`_num')')
     ⇒
     divert(`2')two
     divert
     ⇒
     cleardivert
     ⇒
     undivert
     ⇒

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.