It looks like that does the trick for "goto" labels, but there are also some issue on function name parsing with attributes when they are split onto a second line. $ cat attr.cpp int main() __attribute__ ( (no_sanitize("alignment")) ) { FOO } $ git grep --no-index --show-function -e FOO attr.cpp attr.cpp=2=__attribute__ ( (no_sanitize("alignment")) ) attr.cpp:4: FOO Zach Riggle On Wed, May 27, 2020 at 5:54 PM Zach Riggle <zachriggle@xxxxxxxxx> wrote: > > Awesome, thanks! > > > Zach Riggle > > On Wed, May 27, 2020 at 5:48 PM Jeff King <peff@xxxxxxxx> wrote: > > > > On Wed, May 27, 2020 at 05:29:08PM -0500, Zach Riggle wrote: > > > > > It looks like there is an issue with how the parser handles "goto" > > > labels, as it treats them the same as a function name. > > > > By default, the function-finding isn't aware of the specific content in > > the file. But you can associate extensions with particular types, like: > > > > $ echo '*.cpp diff=cpp' >~/.gitattributes > > $ git config --global core.attributesFile ~/.gitattributes > > $ git grep --no-index --show-function -e FOO test2.cpp > > test2.cpp=int main() { > > test2.cpp: FOO > > test2.cpp: FOO > > > > Usually this is done in-repo, but since your example used --no-index, I > > showed how to set up a per-user attribute file. The "diff" attribute > > covers both diff and grep (for diff, the hunk headers will also show the > > function). > > > > The "cpp" diff regexes are built-in to the git binary. We just don't > > associate any filenames by default. You can also add your own; see the > > section "Defining a custom hunk-header" from "git help attributes". > > > > -Peff