将模式附加到默认的diff头模式(diff.cpp.xfuncname)

npo*_*avs 5 git

我想扩展(而不是替换)C文件的默认diff头模式。根据这篇文章

您将不得不提取内置值(令人烦恼的是,即使不查看源代码也无法获得内置值),然后在配置文件中重复执行。

但是,内置值在C中看起来像这样:

PATTERNS("cpp",
     /* Jump targets or access declarations */
     "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])\n"
     /* functions/methods, variables, and compounds at top level */
     "^((::[[:space:]]*)?[A-Za-z_].*)$",
     /* -- */
     "[a-zA-Z_][a-zA-Z0-9_]*"
     "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lLuU]*"
     "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->\\*?|\\.\\*"),
Run Code Online (Sandbox Code Playgroud)

我不确定如何在.gitconfig文件中呈现。

我试过了

xfuncname = "(!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])\n)|(^((::[[:space:]]*)?[A-Za-z_].*)$\n)|([a-zA-Z_][a-zA-Z0-9_]*)|([-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lLuU]*)|([-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->\\*?|\\.\\*)"
Run Code Online (Sandbox Code Playgroud)

这给了我fatal: Invalid regexp to look for hunk header: (!^[ ]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])跑步的时间git diff

反斜杠加倍也不起作用:

xfuncname = "(!^[ \\t]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])\\n)|(^((::[[:space:]]*)?[A-Za-z_].*)$\\n)|([a-zA-Z_][a-zA-Z0-9_]*)|([-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lLuU]*)|([-+*/<>%&^|=!]=|--|\\\\+\\\\+|<<=?|>>=?|&&|\\\\|\\\\||::|->\\\\*?|\\\\.\\\\*)"
Run Code Online (Sandbox Code Playgroud)

没有错误,但diff头为空,即,它不匹配任何内容。