Frames

<..frames for fancyvrb..>
 \ifx \FV@BeginListFrame\relax\else
    \tmp:dim=\FV@FrameRule \edef\HSize{\the\tmp:dim}%
    \a:fancyvrbframe
 \fi
 \ifx \FV@LeftListFrame\relax\else
    \tmp:dim=\FV@FrameRule \edef\HSize{\the\tmp:dim}%
    \b:fancyvrbframe
 \fi
 \ifx \FV@EndListFrame\relax\else
    \tmp:dim=\FV@FrameRule \edef\HSize{\the\tmp:dim}%
    \c:fancyvrbframe
 \fi
 \ifx \FV@RightListFrame\relax\else
    \tmp:dim=\FV@FrameRule \edef\HSize{\the\tmp:dim}%
    \d:fancyvrbframe
 \fi
 -_-_-

<..fancyvrb.sty shared config..>+
 \NewConfigure{fancyvrbframe}{6}
 -_-_-

Frame up/left/down/right/thickness/padding

We get duplications, because we don’t know the order of parameters (e.g., ‘\begin{Verbatim}% [frame=single,framerule=1mm]’), and even which ones are present at all.

<..fix fancyvrb..>+
 \define@key{FV}{framerule}{%
   \@tempdima=#1\relax
   \edef\FV@FrameRule{\number\@tempdima sp\relax}%
   {\Advance:\fancyvrbNo by 1   \tmp:dim=\FV@FrameRule
    \edef\HSize{\the\tmp:dim}%
    \e:fancyvrbframe}}
 \define@key{FV}{framesep}{%
   \@tempdima=#1\relax
   \edef\FV@FrameSep{\number\@tempdima sp\relax}%
   {\Advance:\fancyvrbNo by 1    \tmp:dim=\FV@FrameSep
    \edef\HSize{\the\tmp:dim}%
    \f:fancyvrbframe}}
 -_-_-