Skip to content

Commit 79fee70

Browse files
committed
[Common] Add git conflict marker highlighting
This commit... 1. adds patterns to treat git conflict markers as comments in syntax definitions. Goals are 1. improve UX when using ST as git merge tool 2. reduce risk of badly breaking syntax highlighting due to conflict markers
1 parent 819bbe7 commit 79fee70

File tree

95 files changed

+2014
-15
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+2014
-15
lines changed

ASP/ASP.sublime-syntax

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ contexts:
5959
- include: root_asp
6060
- match: \n
6161
pop: true
62+
- include: scope:source.diff#conflict-markers # merge conflict marker
6263

6364
line_continuation_char:
6465
- match: '\b_'

ASP/syntax_test_asp.asp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1422,6 +1422,52 @@ test = "hello%>
14221422
' ^^ punctuation.section.embedded.end.asp
14231423
' ^^ punctuation.definition.tag.end.html
14241424
1425+
<!--
1426+
--- Git Conflict Marker Tests
1427+
-->
1428+
1429+
<<<<<<< HEAD
1430+
' <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
1431+
' ^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
1432+
' ^ meta.block.conflict.begin.diff - entity - punctuation
1433+
' ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
1434+
' ^ meta.block.conflict.begin.diff - entity - punctuation
1435+
1436+
=======
1437+
' <- meta.block.conflict.separator.diff punctuation.section.block.diff
1438+
' ^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
1439+
' ^ meta.block.conflict.separator.diff - punctuation
1440+
1441+
>>>>>>> master
1442+
' <- meta.block.conflict.end.diff punctuation.section.block.end.diff
1443+
' ^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
1444+
' ^ meta.block.conflict.end.diff - entity - punctuation
1445+
' ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
1446+
' ^ meta.block.conflict.end.diff - entity - punctuation
1447+
1448+
<%
1449+
1450+
<<<<<<< HEAD
1451+
' <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
1452+
' ^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
1453+
' ^ meta.block.conflict.begin.diff - entity - punctuation
1454+
' ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
1455+
' ^ meta.block.conflict.begin.diff - entity - punctuation
1456+
1457+
=======
1458+
' <- meta.block.conflict.separator.diff punctuation.section.block.diff
1459+
' ^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
1460+
' ^ meta.block.conflict.separator.diff - punctuation
1461+
1462+
>>>>>>> master
1463+
' <- meta.block.conflict.end.diff punctuation.section.block.end.diff
1464+
' ^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
1465+
' ^ meta.block.conflict.end.diff - entity - punctuation
1466+
' ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
1467+
' ^ meta.block.conflict.end.diff - entity - punctuation
1468+
1469+
%>
1470+
14251471
</body>
14261472
'^^^^^^^ meta.tag.structure.any.html
14271473
<script type="text/javascript">

ActionScript/ActionScript.sublime-syntax

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ contexts:
3636
comments:
3737
- include: line-comments
3838
- include: block-comments
39+
- include: scope:source.diff#conflict-markers
3940

4041
###[ COMMENTS / LINE COMMENTS ]################################################
4142

ActionScript/syntax_test_as.as

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,39 @@
4040
*/
4141

4242

43+
///[ DIFF MERGE CONFLICTS ]////////////////////////////////////////////////////
44+
45+
46+
<<<<<<< HEAD
47+
// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
48+
//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
49+
// ^ meta.block.conflict.begin.diff - entity - punctuation
50+
// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
51+
// ^ meta.block.conflict.begin.diff - entity - punctuation
52+
53+
=======
54+
// <- meta.block.conflict.separator.diff punctuation.section.block.diff
55+
//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
56+
// ^ meta.block.conflict.separator.diff - punctuation
57+
58+
>>>>>>> master
59+
// <- meta.block.conflict.end.diff punctuation.section.block.end.diff
60+
//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
61+
// ^ meta.block.conflict.end.diff - entity - punctuation
62+
// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
63+
// ^ meta.block.conflict.end.diff - entity - punctuation
64+
4365

4466
///[ PREPROCESSOR ]////////////////////////////////////////////////////////////
4567

68+
4669
#initclip
4770
#endinitclip
4871

4972
#include "relative_path.as"
5073

51-
///[ STRINGS ]/////////////////////////////////////////////////////////////////
5274

75+
///[ STRINGS ]/////////////////////////////////////////////////////////////////
5376

5477

5578
var strDouble = "...\"...";
@@ -61,11 +84,9 @@
6184
// ^^ constant.character.escape
6285

6386

64-
6587
///[ TYPES ]///////////////////////////////////////////////////////////////////
6688

6789

68-
6990
var typeBoolean:Boolean = true;
7091
// ^^^^^^^ storage.type
7192

@@ -85,11 +106,9 @@
85106
// ^^^^^^ storage.type
86107

87108

88-
89109
///[ CONSTANTS ]///////////////////////////////////////////////////////////////
90110

91111

92-
93112
var isFalse:Boolean = false;
94113
// ^^^^^ constant.language.boolean
95114

@@ -120,11 +139,9 @@
120139
// ^^^^^^^^ constant.language.infinity
121140

122141

123-
124142
///[ NUMBERS ]/////////////////////////////////////////////////////////////////
125143

126144

127-
128145
var intZero:Number = 0;
129146
// ^ meta.number constant.numeric
130147
var intNine:Number = 9;
@@ -146,11 +163,9 @@
146163
// ^^^ meta.number constant.numeric
147164

148165

149-
150166
///[ KEYWORDS ]////////////////////////////////////////////////////////////////
151167

152168

153-
154169
case
155170
// ^^^^ keyword.control.conditional.case
156171
default

AppleScript/AppleScript.sublime-syntax

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,8 @@ contexts:
543543
0: punctuation.definition.comment.applescript
544544
pop: true
545545
- include: comments.nested
546+
- include: scope:source.diff#conflict-markers # merge conflict marker
547+
546548
comments.nested:
547549
- match: \(\*
548550
captures:
@@ -554,6 +556,8 @@ contexts:
554556
0: punctuation.definition.comment.applescript
555557
pop: true
556558
- include: comments.nested
559+
- include: scope:source.diff#conflict-markers # merge conflict marker
560+
557561
data-structures:
558562
- match: '(\{)'
559563
comment: We cannot necessarily distinguish "records" from "arrays", and so this could be either.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
-- SYNTAX TEST "Packages/AppleScript/AppleScript.sublime-syntax"
2+
3+
<<<<<<< HEAD
4+
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
5+
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
6+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
7+
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
8+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
9+
10+
=======
11+
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
12+
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
13+
-- ^ meta.block.conflict.separator.diff - punctuation
14+
15+
>>>>>>> master
16+
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
17+
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
18+
-- ^ meta.block.conflict.end.diff - entity - punctuation
19+
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
20+
-- ^ meta.block.conflict.end.diff - entity - punctuation
21+
22+
(* Conflict in block comment
23+
<<<<<<< HEAD
24+
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
25+
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
26+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
27+
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
28+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
29+
30+
=======
31+
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
32+
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
33+
-- ^ meta.block.conflict.separator.diff - punctuation
34+
35+
>>>>>>> master
36+
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
37+
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
38+
-- ^ meta.block.conflict.end.diff - entity - punctuation
39+
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
40+
-- ^ meta.block.conflict.end.diff - entity - punctuation
41+
*)
42+
43+
{ (* conflict in block *)
44+
<<<<<<< HEAD
45+
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
46+
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
47+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
48+
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
49+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
50+
51+
=======
52+
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
53+
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
54+
-- ^ meta.block.conflict.separator.diff - punctuation
55+
56+
>>>>>>> master
57+
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
58+
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
59+
-- ^ meta.block.conflict.end.diff - entity - punctuation
60+
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
61+
-- ^ meta.block.conflict.end.diff - entity - punctuation
62+
}
63+
64+
( (* conflict in group *)
65+
<<<<<<< HEAD
66+
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
67+
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
68+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
69+
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
70+
-- ^ meta.block.conflict.begin.diff - entity - punctuation
71+
72+
=======
73+
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
74+
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
75+
-- ^ meta.block.conflict.separator.diff - punctuation
76+
77+
>>>>>>> master
78+
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
79+
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
80+
-- ^ meta.block.conflict.end.diff - entity - punctuation
81+
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
82+
-- ^ meta.block.conflict.end.diff - entity - punctuation
83+
)

Batch File/Batch File.sublime-syntax

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ contexts:
173173
- match: '{{label_comment}}'
174174
scope: punctuation.definition.comment.dosbatch
175175
push: comment-body
176+
- include: scope:source.diff#conflict-markers # merge conflict marker
176177

177178
comment-body:
178179
- meta_scope: comment.line.colon.dosbatch

Batch File/tests/syntax_test_batch_file.bat

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,27 @@ ECHO : Not a comment ^
262262
:: <- - comment
263263
::^^^^^^^^^^^^^ - comment
264264

265+
:::: [ Diff Merge Conflict Marker Tests ]::::::::::::::::::::::::::::::::::::::
266+
267+
<<<<<<< HEAD
268+
:: <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
269+
::^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
270+
:: ^ meta.block.conflict.begin.diff - entity - punctuation
271+
:: ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
272+
:: ^ meta.block.conflict.begin.diff - entity - punctuation
273+
274+
=======
275+
:: <- meta.block.conflict.separator.diff punctuation.section.block.diff
276+
::^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
277+
:: ^ meta.block.conflict.separator.diff - punctuation
278+
279+
>>>>>>> master
280+
:: <- meta.block.conflict.end.diff punctuation.section.block.end.diff
281+
::^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
282+
:: ^ meta.block.conflict.end.diff - entity - punctuation
283+
:: ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
284+
:: ^ meta.block.conflict.end.diff - entity - punctuation
285+
265286
:::: [ @ Operator ] :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
266287

267288
@

C#/C#.sublime-syntax

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ contexts:
8383
captures:
8484
1: punctuation.definition.comment.cs
8585
- include: comments_in
86+
- include: scope:source.diff#conflict-markers # merge conflict marker
87+
- include: scope:source.diff#conflict-markers # merge conflict marker
8688

8789
comments_in:
8890
- match: \b(?i:todo|hack|xxx)\b

C++/C.sublime-syntax

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ contexts:
7777
comments:
7878
- include: block-comments
7979
- include: line-comments
80+
- include: scope:source.diff#conflict-markers # merge conflict marker
8081

8182
block-comments:
8283
- match: ^(/\*) =\s*(.*?)\s*= (\*/)$\n?

C++/syntax_test_c.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,29 @@
8181
**/
8282
/* ^^^ invalid.illegal.stray-comment-end.c */
8383

84+
/*
85+
* Merge Conflict Marker Tests
86+
*/
87+
88+
<<<<<<< HEAD
89+
/* <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff */
90+
/*^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff */
91+
/* ^ meta.block.conflict.begin.diff - entity - punctuation */
92+
/* ^^^^ meta.block.conflict.begin.diff entity.name.section.diff */
93+
/* ^ meta.block.conflict.begin.diff - entity - punctuation */
94+
95+
=======
96+
/* <- meta.block.conflict.separator.diff punctuation.section.block.diff */
97+
/*^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff */
98+
/* ^ meta.block.conflict.separator.diff - punctuation */
99+
100+
>>>>>>> master
101+
/* <- meta.block.conflict.end.diff punctuation.section.block.end.diff */
102+
/*^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff */
103+
/* ^ meta.block.conflict.end.diff - entity - punctuation */
104+
/* ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff */
105+
/* ^ meta.block.conflict.end.diff - entity - punctuation */
106+
84107
int main(){
85108
int a=5,b=0;
86109
while(a-->0)++b;

C++/syntax_test_cpp.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,29 @@
8181
**/
8282
/* ^^^ invalid.illegal.stray-comment-end.c */
8383

84+
/*
85+
* Merge Conflict Marker Tests
86+
*/
87+
88+
<<<<<<< HEAD
89+
/* <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff */
90+
/*^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff */
91+
/* ^ meta.block.conflict.begin.diff - entity - punctuation */
92+
/* ^^^^ meta.block.conflict.begin.diff entity.name.section.diff */
93+
/* ^ meta.block.conflict.begin.diff - entity - punctuation */
94+
95+
=======
96+
/* <- meta.block.conflict.separator.diff punctuation.section.block.diff */
97+
/*^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff */
98+
/* ^ meta.block.conflict.separator.diff - punctuation */
99+
100+
>>>>>>> master
101+
/* <- meta.block.conflict.end.diff punctuation.section.block.end.diff */
102+
/*^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff */
103+
/* ^ meta.block.conflict.end.diff - entity - punctuation */
104+
/* ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff */
105+
/* ^ meta.block.conflict.end.diff - entity - punctuation */
106+
84107
Task<int> natural_numbers()
85108
{
86109
int n = 0;

0 commit comments

Comments
 (0)