In gedit, highlight a function call within the parenthesis

Issue

I’m currently editing my javascript.lang file to highlight function names.
Here is my expression for gtksourceview that I am currently using.

<define-regex id="function-regex" >
(?&lt;=([\.|\s]))
([a-z]\w*)
(?=([\(].*))(?=(.*[\)]))
</define-regex>

here’s the regex by itself

(?<=([\.|\s]))([a-z]\w*)(?=([\(].*))(?=(.*[\)]))

It appears to work for situations such as, foo(A) which I am satisfied with.
But where I am having trouble is if I want it to highlight a function name within the parentheses of another function call.

  foo(bar(A))

or to put it more rigorously

  foo{N}(foo{N-1}(...(foo{2}(foo{1}(A))...))

So with the example,

  foo(bar(baz(A)))

my goal is for it to highlight foo, bar, baz and nothing else.

I don’t know how to handle the bar function. I have read about a way of doing regex recursively with (?R) or (?0) but I have not had any success using that to highlight functions recursively in gedit.

P.S.
Here are the tests that I am currently using to determine success.

initialDrawGraph(toBeSorted);   
$(element).removeClass(currentclass);
myFrame.popStack();
context.outputCurrentSortOrder(V);
myFrame.nextFunction = sorter.Sort.;
context.outputToDivConsole(formatStr(V),1);

Solution

Ok, looks like I was making this more complicated than it needed to be.

I was able to achieve what I needed with this simpler regex. I just told it to stop looking for the close parenthesis.

([a-zA-Z0-9][a-zA-Z0-9]*)(?=\()

Answered By – joelliusp

Answer Checked By – David Goodson (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.