On Wed Oct 7, 2020 at 8:40 PM -03, Matthew Wilcox wrote: > > On Wed, Oct 07, 2020 at 11:12:25PM +0000, Nícolas F. R. A. Prado wrote: > > While Sphinx 2 used a single c:type role for struct, union, enum and > > typedef, Sphinx 3 uses a specific role for each one. > > To keep backward compatibility, detect the Sphinx version and use the > > correct roles for that version. > > > > Also, Sphinx 3 is more strict with its C domain and generated warnings, > > exposing issues in the parsing. > > To fix the warnings, make the C regexes use ASCII, ensure the > > expressions only match the beginning of words and skip trying to > > cross-reference C reserved words. > > Thank you for doing this! > > I have a feature request ... could you automarkup NULL as being > :c:macro? > Or maybe just anything matching \<[[:upper:]_[:digit:]]*\> > (i may have my regex syntax confused ... a word composed of any > arrangement of upper-case, digits and underscores.) I think what you are suggesting are two separate things. For NULL, what you're interested in is that it appears in a monospaced font, as if written ``NULL``, right? As I don't think a cross-reference to "the NULL macro definition" would make much sense. While "anything containing only upper-case, digits and underscores" would actually be for cross-referencing to the definition of the macro symbol in question, right? At the moment, this automarkup script is being used only for cross-referencing, but it is indeed a generic automarkup script, and could be used for the formatting of NULL. But we also can't just make every upper-case word written in monospaced font, as that doesn't always makes sense. So if I understood your two requests correctly, I think we could: 1. Always automatically format NULL using a literal ``. 2. Try to cross-reference every upper-case word with the macro definition using :c:macro, but if the cross-reference doesn't exist, format it normally, since it's just normal text (this is what we're doing for C references at the moment). What do you think? Thanks, Nícolas