From 2964c6d535a528c3c44d619c11ae36b162459e5e Mon Sep 17 00:00:00 2001
From: Chris Wilson <46912004+sushicw@users.noreply.github.com>
Date: Wed, 19 Mar 2025 11:42:26 -0700
Subject: [PATCH 1/5] Fix unified diff hunk header highlight to allow for
 single-number case

---
 src/languages/diff.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/languages/diff.js b/src/languages/diff.js
index ed7161f3be..e5087934ab 100644
--- a/src/languages/diff.js
+++ b/src/languages/diff.js
@@ -17,7 +17,7 @@ export default function(hljs) {
         className: 'meta',
         relevance: 10,
         match: regex.either(
-          /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,
+          /^@@ +-\d+(?:,\d+)? +\+\d+(?:,\d+)? +@@/,
           /^\*\*\* +\d+,\d+ +\*\*\*\*$/,
           /^--- +\d+,\d+ +----$/
         )

From e25ff52192cc1fc8c7a705fdc355d127a49df473 Mon Sep 17 00:00:00 2001
From: Chris Wilson <crwilson@google.com>
Date: Wed, 19 Mar 2025 18:58:39 +0000
Subject: [PATCH 2/5] update changelog

---
 CHANGES.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGES.md b/CHANGES.md
index e0b3e0ab7a..84ca31ce9e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -8,12 +8,14 @@ Core Grammars:
 
 - enh(csp) add missing directives / keywords from MDN (7 more) [Max Liashuk][]
 - enh(ada) add new `parallel` keyword, allow `[]` for Ada 2022 [Max Reznik][]
+- fix(diff) fix unified diff hunk header regex to allow unpaired numbers [Chris Wilson][]
 
 CONTRIBUTORS
 
 [Josh Marchand]: https://github.com/yHSJ
 [Max Liashuk]: https://github.com/probil
 [Max Reznik]: https://github.com/reznikmm
+[Chris Wilson]: https://github.com/sushicw
 
 ## Version 11.11.1
 

From 1c31e4126e1ddea883850e003f51c2746c49591e Mon Sep 17 00:00:00 2001
From: Chris Wilson <crwilson@google.com>
Date: Wed, 19 Mar 2025 19:09:05 +0000
Subject: [PATCH 3/5] add test cases

---
 test/markup/diff/git-format-patch.expect.txt | 7 +++++++
 test/markup/diff/git-format-patch.txt        | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/test/markup/diff/git-format-patch.expect.txt b/test/markup/diff/git-format-patch.expect.txt
index ab02ee1838..a2f937d9a5 100644
--- a/test/markup/diff/git-format-patch.expect.txt
+++ b/test/markup/diff/git-format-patch.expect.txt
@@ -12,3 +12,10 @@
 <span class="hljs-meta">@@ -28,2 +28,2 @@</span>
 <span class="hljs-deletion">- removal</span>
 <span class="hljs-addition">+ addition</span>
+<span class="hljs-comment">diff --git a/single_line_a.txt b/single_line_b.txt</span>
+<span class="hljs-comment">index 8baef1b..24c5735 100644</span>
+<span class="hljs-comment">--- a/single_line_a.txt</span>
+<span class="hljs-comment">+++ b/single_line_b.txt</span>
+<span class="hljs-meta">@@ -1 +1 @@</span>
+<span class="hljs-deletion">-removal</span>
+<span class="hljs-addition">+addition</span>
diff --git a/test/markup/diff/git-format-patch.txt b/test/markup/diff/git-format-patch.txt
index 8b5ab0c5d0..2f47ccf0e0 100644
--- a/test/markup/diff/git-format-patch.txt
+++ b/test/markup/diff/git-format-patch.txt
@@ -12,3 +12,10 @@ index 123456..789abc 100644
 @@ -28,2 +28,2 @@
 - removal
 + addition
+diff --git a/single_line_a.txt b/single_line_b.txt
+index 8baef1b..24c5735 100644
+--- a/single_line_a.txt
++++ b/single_line_b.txt
+@@ -1 +1 @@
+-removal
++addition

From fc3a1835c19e8539e234a4155c6eeb91b225670e Mon Sep 17 00:00:00 2001
From: Chris Wilson <crwilson@google.com>
Date: Thu, 20 Mar 2025 14:20:28 +0000
Subject: [PATCH 4/5] additional test cases

---
 test/markup/diff/git-format-patch.expect.txt | 22 +++++++++++++++++---
 test/markup/diff/git-format-patch.txt        | 22 +++++++++++++++++---
 2 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/test/markup/diff/git-format-patch.expect.txt b/test/markup/diff/git-format-patch.expect.txt
index a2f937d9a5..12b4eee485 100644
--- a/test/markup/diff/git-format-patch.expect.txt
+++ b/test/markup/diff/git-format-patch.expect.txt
@@ -12,10 +12,26 @@
 <span class="hljs-meta">@@ -28,2 +28,2 @@</span>
 <span class="hljs-deletion">- removal</span>
 <span class="hljs-addition">+ addition</span>
-<span class="hljs-comment">diff --git a/single_line_a.txt b/single_line_b.txt</span>
+<span class="hljs-comment">diff --git a/file.txt b/file.txt</span>
 <span class="hljs-comment">index 8baef1b..24c5735 100644</span>
-<span class="hljs-comment">--- a/single_line_a.txt</span>
-<span class="hljs-comment">+++ b/single_line_b.txt</span>
+<span class="hljs-comment">--- a/file.txt</span>
+<span class="hljs-comment">+++ b/file.txt</span>
 <span class="hljs-meta">@@ -1 +1 @@</span>
 <span class="hljs-deletion">-removal</span>
 <span class="hljs-addition">+addition</span>
+<span class="hljs-comment">diff --git a/file.txt b/file.txt</span>
+<span class="hljs-comment">index f9308d8..f39c17d 100644</span>
+<span class="hljs-comment">--- a/file.txt</span>
+<span class="hljs-comment">+++ b/file.txt</span>
+<span class="hljs-meta">@@ -1,2 +1 @@</span>
+<span class="hljs-deletion">-removal1</span>
+<span class="hljs-deletion">-removal2</span>
+<span class="hljs-addition">+addition</span>
+<span class="hljs-comment">diff --git a/file.txt b/file.txt</span>
+<span class="hljs-comment">index 1037b05..54addbd 100644</span>
+<span class="hljs-comment">--- a/file.txt</span>
+<span class="hljs-comment">+++ b/file.txt</span>
+<span class="hljs-meta">@@ -1 +1,2 @@</span>
+<span class="hljs-deletion">-removal</span>
+<span class="hljs-addition">+addition1</span>
+<span class="hljs-addition">+addition2</span>
diff --git a/test/markup/diff/git-format-patch.txt b/test/markup/diff/git-format-patch.txt
index 2f47ccf0e0..ad81fe6d14 100644
--- a/test/markup/diff/git-format-patch.txt
+++ b/test/markup/diff/git-format-patch.txt
@@ -12,10 +12,26 @@ index 123456..789abc 100644
 @@ -28,2 +28,2 @@
 - removal
 + addition
-diff --git a/single_line_a.txt b/single_line_b.txt
+diff --git a/file.txt b/file.txt
 index 8baef1b..24c5735 100644
---- a/single_line_a.txt
-+++ b/single_line_b.txt
+--- a/file.txt
++++ b/file.txt
 @@ -1 +1 @@
 -removal
 +addition
+diff --git a/file.txt b/file.txt
+index f9308d8..f39c17d 100644
+--- a/file.txt
++++ b/file.txt
+@@ -1,2 +1 @@
+-removal1
+-removal2
++addition
+diff --git a/file.txt b/file.txt
+index 1037b05..54addbd 100644
+--- a/file.txt
++++ b/file.txt
+@@ -1 +1,2 @@
+-removal
++addition1
++addition2

From 598a689356ba01324fd662059ae4b66e62fa516c Mon Sep 17 00:00:00 2001
From: Chris Wilson <crwilson@google.com>
Date: Mon, 24 Mar 2025 15:15:50 +0000
Subject: [PATCH 5/5] Switch to multiple simpler regexes

---
 src/languages/diff.js | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/languages/diff.js b/src/languages/diff.js
index e5087934ab..4870556f6b 100644
--- a/src/languages/diff.js
+++ b/src/languages/diff.js
@@ -17,7 +17,10 @@ export default function(hljs) {
         className: 'meta',
         relevance: 10,
         match: regex.either(
-          /^@@ +-\d+(?:,\d+)? +\+\d+(?:,\d+)? +@@/,
+          /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, // @@ -1,2 +1,2 @@
+          /^@@ +-\d+ +\+\d+,\d+ +@@/,     // @@ -1 +1,2 @@
+          /^@@ +-\d+,\d+ +\+\d+ +@@/,     // @@ -1,2 +1 @@
+          /^@@ +-\d+ +\+\d+ +@@/,         // @@ -1 +1 @@
           /^\*\*\* +\d+,\d+ +\*\*\*\*$/,
           /^--- +\d+,\d+ +----$/
         )