X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/87883222727894b13d3d4ce50e413a544a50fe20..19a890755c41015df023f1f42ada443568d45386:/doc/sod.sty?ds=sidebyside diff --git a/doc/sod.sty b/doc/sod.sty index 43b77cc..d9cfabc 100644 --- a/doc/sod.sty +++ b/doc/sod.sty @@ -187,9 +187,15 @@ \def\describecategoryname{\@ifnextchar[\@descname@i{\@descname@i[]}} \def\@descname@i[#1]#2{% \expandafter\let\expandafter\@tempa\csname cat!#2\endcsname% - \expandafter\let\expandafter\@tempb\csname descmod/#1\endcsname% + \expandafter\let\expandafter\@tempb\csname modcat/#1\endcsname% \ifx\@tempa\relax\@tempb{#2}\else\@tempa\@tempb\fi} \def\@maybe@modlabel#1#2{\if!#1!\else#1/\fi#2} +\def\@desc@dispatch#1#2{% + \csname #1/% + \expandafter\ifx\csname catsw!#2\endcsname\relax plain% + \else \csname catsw!#2\endcsname \fi% + \endcsname% +} \definedescribecategory{sym}{symbol} \definedescribecategory{fun}{#1{function}} @@ -215,9 +221,9 @@ \definedescribecategory{plug}{pluggable parser} \def\nlret{\\\hspace{4em}\returns} -\@namedef{descmod/}#1{#1} +\@namedef{modcat/}#1{#1} -\@namedef{descmod/setf}#1{\code{setf}-#1} +\@namedef{modcat/setf}#1{\code{setf}-#1} \@namedef{descargs/plain}#1{#1{}} \@namedef{desclabel/plain}#1#2#3{#1:\@maybe@modlabel{#2}{#3}} @@ -234,13 +240,6 @@ \protect\fmtspecs{ specialized at }{#4}% } -\def\@desc@dispatch#1#2{% - \csname #1/% - \expandafter\ifx\csname catsw!#2\endcsname\relax plain% - \else \csname catsw!#2\endcsname \fi% - \endcsname% -} - \def\q@{\q@} \def\@setf{setf} @@ -263,10 +262,25 @@ \fi% } -%% \parse@dhd{NEXT}{CAT}{...}...[NAME]{SYNOPSIS} +%% \parse@dhd{NEXT}[MOD]{CAT}{...}...[NAME]{SYNOPSIS} %% call NEXT{MOD}{CAT}{{...}...}{NAME}{SYNOPSIS} %% #1 #2 #3 #4 #5 -\def\parse@dhd#1#2{% {NEXT}{CAT} +\def\@setf{setf} +\def\parse@dhd#1{% {NEXT} + \@ifnextchar[{\parse@dhd@a{#1}}{\parse@dhd@c{#1}}} +\def\parse@dhd@a#1[#2]#3{% {NEXT}[MOD]{CAT} + \@desc@dispatch{descargs}{#3}{\parse@dhd@ab{#1}{#2}{#3}}} +\def\parse@dhd@ab#1#2#3#4{% {NEXT}{MOD}{CAT}{{...}...} + \@ifnextchar[{\parse@dhd@ac{#1}{#2}{#3}{#4}}{\parse@dhd@ad{#1}{#2}{#3}{#4}}} +\def\parse@dhd@ac#1#2#3#4[#5]#6{% {NEXT}{MOD}{CAT}{{...}...}[NAME]{SYNOPSIS} + #1{#2}{#3}{#4}{#5}{#6}} +\def\parse@dhd@ad#1#2#3#4#5{% {NEXT}{MOD}{CAT}{{...}...}{NAME [ARGS...]} + \parse@dhd@ae{#1}{#2}{#3}{#4}{#5}#5 \q@} +\def\parse@dhd@ae#1#2#3#4#5#6 #7\q@{% + % {NEXT}{MOD}{CAT}{{...}...}{SYNSOPSIS}NAME [ARGS...]\q@ + #1{#2}{#3}{#4}{#6}{#5}} + +\def\parse@dhd@c#1#2{% {NEXT}{CAT} \@desc@dispatch{descargs}{#2}{\parse@dhd@cb{#1}{#2}}} \def\parse@dhd@cb#1#2#3{% {NEXT}{CAT}{{...}...} \@ifnextchar[{\parse@dhd@cc{#1}{#2}{#3}}{\parse@dhd@cd{#1}{#2}{#3}}} @@ -288,7 +302,8 @@ \newif\if@dheadfirst \def\dhead{\parse@dhd\dhead@} \def\dhead@#1#2#3#4#5{% {MOD}{CAT}{{...}...}{NAME}{SYNOPSIS} - \if@dheadfirst\global\@dheadfirstfalse\else\relax\\[\smallskipamount]\fi% + \if@dheadfirst\global\@dheadfirstfalse\else\relax\\*[\smallskipamount]\fi% + \phantomsection% {\let\protect\@empty\let\@uscore\relax% \edef\temp@{\@desc@dispatch{desclabel}{#2}{#2}{#1}{#4}#3}% \def\@uscore{_\@gobble}\expandafter\message\expandafter{\temp@}%