\documentclass[a4paper]{article}

\usepackage{minted}
\usepackage{listings}
\usepackage{fancyvrb}

\begin{document}

This is a test document for fontification support of verbatim
\emph{macros} provided by \LaTeX{} and other packages within AUC\TeX.
As it is not part of \verb|ert|-tests, it does not have an
\verb|out|-counterpart.  Parsing should be enabled when loading this
file, namely \verb|(setq TeX-parse-self t)| in \verb|.emacs|.

\section{The problem}

The \verb|verb| macro provided by vanilla \LaTeX{} does not receive
any special fontification within AUC\TeX.  It is fontified with
\verb|font-latex-sedate-face|.  Other \verb|verb| macros provided by
packages like \verb|listings|, \verb|minted| or \verb|fancyvrb| are
fontified with \verb|font-lock-keyword-face| as they are added to
\verb|textual| keyword class within \verb|font-latex.el|.

Next issue is that \verb|verb| macros from modern packages take an
optional argument or even a mandatory argument before the
\verb|verbatim| content.  This issue was not addressed in
\verb|font-latex.el|.

\section{The solution}

\subsection{Vanilla \LaTeX}

The issue with fontification of \verb|verb| macro is solved in
\verb|font-latex.el| by adding \verb|("verb" "*")| to
\verb|`font-latex-built-in-keyword-classes'|.  This construct
fontifies only the macro itself---the argument is left out for
syntactic fontification.

\subsection{Optional argument}

This issue can be fixed in \verb|font-latex.el| by extending the
regexp for \verb|verb| macros with delimiters/braces in
\verb|`font-latex-set-syntactic-keywords'| with:
\begin{quote}
  \verb|"\\(?:\\[[^][]*\\(?:\\[[^][]*\\][^][]*\\)*\\]\\)?"|
\end{quote}
The same line is used for matching optional arguments in verbatim
environments.

\section{The result}

\subsection{Vanilla \LaTeX}

Some text \verb|verb input|, % comment
$a+b$ and \verb*"verb input" % comment

\subsection{listings package}

Some text \lstinline|verb input with delims|, % comment
$a+b$ \lstinline[showspaces,basicstyle=\ttfamily]/verb input with delims/, % comment
%
\lstinline[%
basicstyle=\sffamily]!multiline in opt. arg!, % comment
%
\lstinline[%
basicstyle=\sffamily
]-multiline in opt. arg- % comment

Some text \lstinline{verb input with braces}, % comment
$a+b$ \lstinline[showspaces]{verb input with braces}, % comment
%
\lstinline[%
basicstyle=\sffamily]{multiline in opt. arg}, % comment
%
\lstinline[
basicstyle=\sffamily
]{multiline in opt. arg} % comment

\subsection{minted package}

Some text \mint{text}|verb input| % comment
$a+b$ \mint[showspaces]{text}/verb input/ % comment
Some text \mint[
showspaces
]{text}!verb input! % comment
Some text \mint[showspaces]{%
  text%
}+verb input+ % comment

\newmint{text}{showspaces} %
\text|verb input| and \text[showspaces=false]|verb input| % comment

\newmint[mytext]{text}{showspaces} %
\mytext|verb input| and \mytext[%
showspaces=false
]|verb input| % comment

Some text \mintinline{text}|verb input| % comment
$a+b$ \mintinline[showspaces]{text}|verb input| % comment
Some text \mintinline[
showspaces
]{text}|verb input| % comment
Some text \mintinline[showspaces]{%
  text%
}|verb input| % comment

\newmintinline{text}{showspaces} %
\textinline|verb input with delims| and \textinline[%
showspaces=false
]|verb input with delims| % comment

\textinline{verb input with braces} and \textinline[%
showspaces=false
]{verb input with braces} % comment

\newmintinline[mytextinline]{text}{showspaces} %
\mytextinline|verb input with delims| and \mytextinline[%
showspaces=false
]|verb input with delims|

\mytextinline{verb input with braces} and \mytextinline[%
showspaces=false
]{verb input with braces}

\subsection{fancyvrb package}

Some text \Verb|verb input| and % comment
\Verb[showspaces]|verb input| and \Verb[
showspaces
]|verb input|

Some text \Verb!verb input! and % comment
\Verb[showspaces]"verb input" and \Verb[
showspaces
]#verb input#

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-command-extra-options: "-shell-escape"
%%% End:
