userdiff: add a builtin pattern for dts files
The Linux kernel receives many patches to the devicetree files each release. The hunk header for those patches typically show nothing, making it difficult to figure out what node is being modified without applying the patch or opening the file and seeking to the context. Let's add a builtin 'dts' pattern to git so that users can get better diff output on dts files when they use the diff=dts driver. The regex has been constructed based on the spec at devicetree.org[1] and with some help from Johannes Sixt. [1] https://github.com/devicetree-org/devicetree-specification/releases/latest Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5fa0f5238b
commit
3c81760bc6
@ -810,6 +810,8 @@ patterns are available:
|
||||
|
||||
- `css` suitable for cascading style sheets.
|
||||
|
||||
- `dts` suitable for devicetree (DTS) files.
|
||||
|
||||
- `fortran` suitable for source code in the Fortran language.
|
||||
|
||||
- `fountain` suitable for Fountain documents.
|
||||
|
@ -31,6 +31,7 @@ diffpatterns="
|
||||
cpp
|
||||
csharp
|
||||
css
|
||||
dts
|
||||
fortran
|
||||
fountain
|
||||
golang
|
||||
|
9
t/t4018/dts-labels
Normal file
9
t/t4018/dts-labels
Normal file
@ -0,0 +1,9 @@
|
||||
/ {
|
||||
label_1: node1@ff00 {
|
||||
label2: RIGHT {
|
||||
vendor,some-property;
|
||||
|
||||
ChangeMe = <0x45-30>;
|
||||
};
|
||||
};
|
||||
};
|
8
t/t4018/dts-node-unitless
Normal file
8
t/t4018/dts-node-unitless
Normal file
@ -0,0 +1,8 @@
|
||||
/ {
|
||||
label_1: node1 {
|
||||
RIGHT {
|
||||
prop-array = <1>, <4>;
|
||||
ChangeMe = <0xffeedd00>;
|
||||
};
|
||||
};
|
||||
};
|
8
t/t4018/dts-nodes
Normal file
8
t/t4018/dts-nodes
Normal file
@ -0,0 +1,8 @@
|
||||
/ {
|
||||
label_1: node1@ff00 {
|
||||
RIGHT@deadf00,4000 {
|
||||
#size-cells = <1>;
|
||||
ChangeMe = <0xffeedd00>;
|
||||
};
|
||||
};
|
||||
};
|
8
t/t4018/dts-nodes-comment1
Normal file
8
t/t4018/dts-nodes-comment1
Normal file
@ -0,0 +1,8 @@
|
||||
/ {
|
||||
label_1: node1@ff00 {
|
||||
RIGHT@deadf00,4000 /* &a comment */ {
|
||||
#size-cells = <1>;
|
||||
ChangeMe = <0xffeedd00>;
|
||||
};
|
||||
};
|
||||
};
|
8
t/t4018/dts-nodes-comment2
Normal file
8
t/t4018/dts-nodes-comment2
Normal file
@ -0,0 +1,8 @@
|
||||
/ {
|
||||
label_1: node1@ff00 {
|
||||
RIGHT@deadf00,4000 { /* a trailing comment */
|
||||
#size-cells = <1>;
|
||||
ChangeMe = <0xffeedd00>;
|
||||
};
|
||||
};
|
||||
};
|
9
t/t4018/dts-reference
Normal file
9
t/t4018/dts-reference
Normal file
@ -0,0 +1,9 @@
|
||||
&label_1 {
|
||||
TEST = <455>;
|
||||
};
|
||||
|
||||
&RIGHT {
|
||||
vendor,some-property;
|
||||
|
||||
ChangeMe = <0x45-30>;
|
||||
};
|
5
t/t4018/dts-root
Normal file
5
t/t4018/dts-root
Normal file
@ -0,0 +1,5 @@
|
||||
/RIGHT { /* Technically just supposed to be a slash */
|
||||
#size-cells = <1>;
|
||||
|
||||
ChangeMe = <0xffeedd00>;
|
||||
};
|
@ -303,6 +303,7 @@ test_language_driver bibtex
|
||||
test_language_driver cpp
|
||||
test_language_driver csharp
|
||||
test_language_driver css
|
||||
test_language_driver dts
|
||||
test_language_driver fortran
|
||||
test_language_driver html
|
||||
test_language_driver java
|
||||
|
37
t/t4034/dts/expect
Normal file
37
t/t4034/dts/expect
Normal file
@ -0,0 +1,37 @@
|
||||
<BOLD>diff --git a/pre b/post<RESET>
|
||||
<BOLD>index b6a9051..7803aee 100644<RESET>
|
||||
<BOLD>--- a/pre<RESET>
|
||||
<BOLD>+++ b/post<RESET>
|
||||
<CYAN>@@ -1,32 +1,32 @@<RESET>
|
||||
/ {<RESET>
|
||||
<RED>this_handle<RESET><GREEN>HANDLE_2<RESET>: <RED>node<RESET><GREEN>new-node<RESET>@<RED>f00<RESET><GREEN>eeda<RESET> {
|
||||
compatible = "<RED>mydev<RESET><GREEN>vendor,compat<RESET>";
|
||||
string-prop = <RED>start<RESET><GREEN>end<RESET>: "hello <RED>world!<RESET><GREEN>world?<RESET>" <RED>end<RESET><GREEN>start<RESET>: ;
|
||||
<RED>#size-cells<RESET><GREEN>#address-cells<RESET> = <<RED>0+0<RESET><GREEN>0+40<RESET>>;
|
||||
reg = <<RED>0xf00<RESET><GREEN>0xeeda<RESET>>;
|
||||
prop = <<GREEN>(<RESET>1<GREEN>)<RESET>>;
|
||||
prop = <<GREEN>(<RESET>-1e10<GREEN>)<RESET>>;
|
||||
prop = <(!<RED>3<RESET><GREEN>1<RESET>)>;
|
||||
prop = <(~<RED>3<RESET><GREEN>1<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>*<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>&<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>*<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>/<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>%<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3+4<RESET><GREEN>1+2<RESET>)>;
|
||||
prop = <(<RED>3-4<RESET><GREEN>1-2<RESET>)>;
|
||||
prop = /bits/ <RED>64<RESET><GREEN>32<RESET> <(<RED>3<RESET><GREEN>1<RESET><<<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>>><RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>&<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>^<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>|<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>&&<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>3<RESET><GREEN>1<RESET>||<RED>4<RESET><GREEN>2<RESET>)>;
|
||||
prop = <(<RED>4?5<RESET><GREEN>1?2<RESET>:3)>;
|
||||
list = <&<RED>this_handle<RESET><GREEN>HANDLE_2<RESET>>, <0 0 0 <RED>0<RESET><GREEN>1<RESET>>;
|
||||
};<RESET>
|
||||
|
||||
&<RED>phandle<RESET><GREEN>phandle2<RESET> {
|
||||
<RED>pre-phandle<RESET><GREEN>prop_handle<RESET> = <&<RED>this_handle<RESET><GREEN>HANDLE_2<RESET>>;
|
||||
};<RESET>
|
||||
};<RESET>
|
32
t/t4034/dts/post
Normal file
32
t/t4034/dts/post
Normal file
@ -0,0 +1,32 @@
|
||||
/ {
|
||||
HANDLE_2: new-node@eeda {
|
||||
compatible = "vendor,compat";
|
||||
string-prop = end: "hello world?" start: ;
|
||||
#address-cells = <0+40>;
|
||||
reg = <0xeeda>;
|
||||
prop = <(1)>;
|
||||
prop = <(-1e10)>;
|
||||
prop = <(!1)>;
|
||||
prop = <(~1)>;
|
||||
prop = <(1*2)>;
|
||||
prop = <(1&2)>;
|
||||
prop = <(1*2)>;
|
||||
prop = <(1/2)>;
|
||||
prop = <(1%2)>;
|
||||
prop = <(1+2)>;
|
||||
prop = <(1-2)>;
|
||||
prop = /bits/ 32 <(1<<2)>;
|
||||
prop = <(1>>2)>;
|
||||
prop = <(1&2)>;
|
||||
prop = <(1^2)>;
|
||||
prop = <(1|2)>;
|
||||
prop = <(1&&2)>;
|
||||
prop = <(1||2)>;
|
||||
prop = <(1?2:3)>;
|
||||
list = <&HANDLE_2>, <0 0 0 1>;
|
||||
};
|
||||
|
||||
&phandle2 {
|
||||
prop_handle = <&HANDLE_2>;
|
||||
};
|
||||
};
|
32
t/t4034/dts/pre
Normal file
32
t/t4034/dts/pre
Normal file
@ -0,0 +1,32 @@
|
||||
/ {
|
||||
this_handle: node@f00 {
|
||||
compatible = "mydev";
|
||||
string-prop = start: "hello world!" end: ;
|
||||
#size-cells = <0+0>;
|
||||
reg = <0xf00>;
|
||||
prop = <1>;
|
||||
prop = <-1e10>;
|
||||
prop = <(!3)>;
|
||||
prop = <(~3)>;
|
||||
prop = <(3*4)>;
|
||||
prop = <(3&4)>;
|
||||
prop = <(3*4)>;
|
||||
prop = <(3/4)>;
|
||||
prop = <(3%4)>;
|
||||
prop = <(3+4)>;
|
||||
prop = <(3-4)>;
|
||||
prop = /bits/ 64 <(3<<4)>;
|
||||
prop = <(3>>4)>;
|
||||
prop = <(3&4)>;
|
||||
prop = <(3^4)>;
|
||||
prop = <(3|4)>;
|
||||
prop = <(3&&4)>;
|
||||
prop = <(3||4)>;
|
||||
prop = <(4?5:3)>;
|
||||
list = <&this_handle>, <0 0 0 0>;
|
||||
};
|
||||
|
||||
&phandle {
|
||||
pre-phandle = <&this_handle>;
|
||||
};
|
||||
};
|
@ -23,6 +23,14 @@ IPATTERN("ada",
|
||||
"[a-zA-Z][a-zA-Z0-9_]*"
|
||||
"|[-+]?[0-9][0-9#_.aAbBcCdDeEfF]*([eE][+-]?[0-9_]+)?"
|
||||
"|=>|\\.\\.|\\*\\*|:=|/=|>=|<=|<<|>>|<>"),
|
||||
PATTERNS("dts",
|
||||
"!;\n"
|
||||
/* lines beginning with a word optionally preceded by '&' or the root */
|
||||
"^[ \t]*((/|&?[a-zA-Z_]).*)",
|
||||
/* -- */
|
||||
/* Property names and math operators */
|
||||
"[a-zA-Z0-9,._+?#-]+"
|
||||
"|[-+*/%&^|!~]|>>|<<|&&|\\|\\|"),
|
||||
IPATTERN("fortran",
|
||||
"!^([C*]|[ \t]*!)\n"
|
||||
"!^[ \t]*MODULE[ \t]+PROCEDURE[ \t]\n"
|
||||
|
Loading…
Reference in New Issue
Block a user