# How to highlight word in listings that starts/ends with specified character?

I want to highlight function name in code, which is a word that ends with left parenthesis, like sqrt(), but don't want to highlight the parenthesis.

Here is what I got so far, I learnt this from Listings - Only highlight between delimiters . It works fine until I indent the statement. And even there are no indent problem, it cannot work on C/C++ or Java where the type before function name is unfixed.

I found a way that can highlight words start with an uppercase here: Can the listings package highlight by regexp?

But I don't really understand the code, not to mention to change it the way I want.

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}

\newcommand{\jsfunction}[1]{\textcolor{blue}{function} \textcolor{purple}{#1}(}
\lstdefinestyle{js}{
basicstyle = \ttfamily,
keywordstyle = \color{blue},
keywords = {function, return},
moredelim = [is][\jsfunction]{function\ }{(}
}

\begin{document}

\begin{lstlisting}[style = js]
function foo() {
function bar(){

}
}
\end{lstlisting}

\end{document}


• Should this only work for identifiers that are immediately followed by (), or also for function calls with arguments like foo(x, y, 123)? – siracusa Jul 22 '19 at 3:51