git diff
有与单词匹配的选项。有些语言有特殊的默认值(如--word-diff-regex=<...>
中所述)。但这些是什么?在文档中没有描述,我查找了man 5 gitattributes
的来源,也没有找到它们。
有什么想法吗?
编辑:我在git
,但我接受任何版本的答案。
最佳答案
源文件包含userdiff.c
文件中的默认单词regex。PATTERNS
和IPATTERN
宏将基词regex作为其第三个参数,并添加"|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"
以确保不属于较大单词的所有非空白字符都被自己视为单词,并假定为utf-8,而不拆分多字节字符。例如,在:
PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
"\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),
regex这个词是
"\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"
。在这种情况下,
|[\xc0-\xff][\x80-\xbf]+
碰巧没有任何好处,因为[\xc0-\xff][\x80-\xbf]+
所涵盖的所有内容都已经包含在[a-zA-Z0-9\x80-\xff]+
中,但它也不会造成任何伤害。