Skip to content

[Common] Add git conflict marker highlighting #4047

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
May 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions ASP/ASP.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,25 @@ contexts:
- include: root_asp
- match: \n
pop: true
- include: merge-conflict-markers

merge-conflict-markers:
# see also: Diff.sublime-syntax#conflict-markers
- match: ^(<{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.begin.diff
captures:
1: punctuation.section.block.begin.diff
2: entity.name.section.diff
- match: ^(>{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.end.diff
captures:
1: punctuation.section.block.end.diff
2: entity.name.section.diff
- match: ^(\|{7}|={7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.separator.diff
captures:
1: punctuation.section.block.diff
2: entity.name.section.diff

line_continuation_char:
- match: '\b_'
Expand Down
46 changes: 46 additions & 0 deletions ASP/syntax_test_asp.asp
Original file line number Diff line number Diff line change
Expand Up @@ -1422,6 +1422,52 @@ test = "hello%>
' ^^ punctuation.section.embedded.end.asp
' ^^ punctuation.definition.tag.end.html

<!--
--- Git Conflict Marker Tests
-->

<<<<<<< HEAD
' <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
' ^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
' ^ meta.block.conflict.begin.diff - entity - punctuation
' ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
' ^ meta.block.conflict.begin.diff - entity - punctuation

=======
' <- meta.block.conflict.separator.diff punctuation.section.block.diff
' ^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
' ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
' <- meta.block.conflict.end.diff punctuation.section.block.end.diff
' ^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
' ^ meta.block.conflict.end.diff - entity - punctuation
' ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
' ^ meta.block.conflict.end.diff - entity - punctuation

<%

<<<<<<< HEAD
' <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
' ^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
' ^ meta.block.conflict.begin.diff - entity - punctuation
' ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
' ^ meta.block.conflict.begin.diff - entity - punctuation

=======
' <- meta.block.conflict.separator.diff punctuation.section.block.diff
' ^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
' ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
' <- meta.block.conflict.end.diff punctuation.section.block.end.diff
' ^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
' ^ meta.block.conflict.end.diff - entity - punctuation
' ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
' ^ meta.block.conflict.end.diff - entity - punctuation

%>

</body>
'^^^^^^^ meta.tag.structure.any.html
<script type="text/javascript">
Expand Down
21 changes: 21 additions & 0 deletions ActionScript/ActionScript.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ contexts:
comments:
- include: line-comments
- include: block-comments
- include: merge-conflict-markers

###[ COMMENTS / LINE COMMENTS ]################################################

Expand Down Expand Up @@ -69,6 +70,26 @@ contexts:
captures:
1: punctuation.definition.comment.actionscript

###[ MERGE CONFLICT MARKERS ]##################################################

merge-conflict-markers:
# see also: Diff.sublime-syntax#conflict-markers
- match: ^(<{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.begin.diff
captures:
1: punctuation.section.block.begin.diff
2: entity.name.section.diff
- match: ^(>{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.end.diff
captures:
1: punctuation.section.block.end.diff
2: entity.name.section.diff
- match: ^(\|{7}|={7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.separator.diff
captures:
1: punctuation.section.block.diff
2: entity.name.section.diff

###[ STRINGS ]#################################################################

strings:
Expand Down
33 changes: 24 additions & 9 deletions ActionScript/syntax_test_as.as
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,39 @@
*/


///[ DIFF MERGE CONFLICTS ]////////////////////////////////////////////////////


<<<<<<< HEAD
// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
// ^ meta.block.conflict.begin.diff - entity - punctuation
// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
// ^ meta.block.conflict.begin.diff - entity - punctuation

=======
// <- meta.block.conflict.separator.diff punctuation.section.block.diff
//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
// ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
// <- meta.block.conflict.end.diff punctuation.section.block.end.diff
//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
// ^ meta.block.conflict.end.diff - entity - punctuation
// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
// ^ meta.block.conflict.end.diff - entity - punctuation


///[ PREPROCESSOR ]////////////////////////////////////////////////////////////


#initclip
#endinitclip

#include "relative_path.as"

///[ STRINGS ]/////////////////////////////////////////////////////////////////

///[ STRINGS ]/////////////////////////////////////////////////////////////////


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



///[ TYPES ]///////////////////////////////////////////////////////////////////



var typeBoolean:Boolean = true;
// ^^^^^^^ storage.type

Expand All @@ -85,11 +106,9 @@
// ^^^^^^ storage.type



///[ CONSTANTS ]///////////////////////////////////////////////////////////////



var isFalse:Boolean = false;
// ^^^^^ constant.language.boolean

Expand Down Expand Up @@ -120,11 +139,9 @@
// ^^^^^^^^ constant.language.infinity



///[ NUMBERS ]/////////////////////////////////////////////////////////////////



var intZero:Number = 0;
// ^ meta.number constant.numeric
var intNine:Number = 9;
Expand All @@ -146,11 +163,9 @@
// ^^^ meta.number constant.numeric



///[ KEYWORDS ]////////////////////////////////////////////////////////////////



case
// ^^^^ keyword.control.conditional.case
default
Expand Down
22 changes: 22 additions & 0 deletions AppleScript/AppleScript.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,8 @@ contexts:
0: punctuation.definition.comment.applescript
pop: true
- include: comments.nested
- include: merge-conflict-markers

comments.nested:
- match: \(\*
captures:
Expand All @@ -554,6 +556,26 @@ contexts:
0: punctuation.definition.comment.applescript
pop: true
- include: comments.nested
- include: merge-conflict-markers

merge-conflict-markers:
# see also: Diff.sublime-syntax#conflict-markers
- match: ^(<{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.begin.diff
captures:
1: punctuation.section.block.begin.diff
2: entity.name.section.diff
- match: ^(>{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.end.diff
captures:
1: punctuation.section.block.end.diff
2: entity.name.section.diff
- match: ^(\|{7}|={7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.separator.diff
captures:
1: punctuation.section.block.diff
2: entity.name.section.diff

data-structures:
- match: '(\{)'
comment: We cannot necessarily distinguish "records" from "arrays", and so this could be either.
Expand Down
83 changes: 83 additions & 0 deletions AppleScript/tests/syntax_test_applescript.applescript
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
-- SYNTAX TEST "Packages/AppleScript/AppleScript.sublime-syntax"

<<<<<<< HEAD
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation

=======
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
-- ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation

(* Conflict in block comment
<<<<<<< HEAD
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation

=======
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
-- ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
*)

{ (* conflict in block *)
<<<<<<< HEAD
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation

=======
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
-- ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
}

( (* conflict in group *)
<<<<<<< HEAD
-- <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff
--^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation
-- ^^^^ meta.block.conflict.begin.diff entity.name.section.diff
-- ^ meta.block.conflict.begin.diff - entity - punctuation

=======
-- <- meta.block.conflict.separator.diff punctuation.section.block.diff
--^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff
-- ^ meta.block.conflict.separator.diff - punctuation

>>>>>>> master
-- <- meta.block.conflict.end.diff punctuation.section.block.end.diff
--^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
-- ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff
-- ^ meta.block.conflict.end.diff - entity - punctuation
)
21 changes: 21 additions & 0 deletions Batch File/Batch File.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ contexts:
- match: '{{label_comment}}'
scope: punctuation.definition.comment.dosbatch
push: comment-body
- include: merge-conflict-markers

comment-body:
- meta_scope: comment.line.colon.dosbatch
Expand All @@ -199,6 +200,26 @@ contexts:
- match: '{{unquoted_word_begin}}'
push: unquoted-word-end

###[ MERGE CONFLICT MARKERS ]##################################################

merge-conflict-markers:
# see also: Diff.sublime-syntax#conflict-markers
- match: ^(<{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.begin.diff
captures:
1: punctuation.section.block.begin.diff
2: entity.name.section.diff
- match: ^(>{7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.end.diff
captures:
1: punctuation.section.block.end.diff
2: entity.name.section.diff
- match: ^(\|{7}|={7})(?:\s+(\S.*?))?$\n?
scope: meta.block.conflict.separator.diff
captures:
1: punctuation.section.block.diff
2: entity.name.section.diff

###[ LABELS ]#################################################################

labels:
Expand Down
Loading