diff --git a/modules/markup/html.go b/modules/markup/html.go
index 03168b694..05b1c3ef7 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -852,11 +852,14 @@ func fullIssuePatternProcessor(ctx *RenderContext, node *html.Node) {
}
func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
- // FIXME: the use of "mode" is quite dirty and hacky, for example: what is a "document"? how should it be rendered?
- // The "mode" approach should be refactored to some other more clear&reliable way.
- if ctx.Metas == nil || (ctx.Metas["mode"] == "document" && !ctx.IsWiki) {
+ if ctx.Metas == nil {
return
}
+
+ // FIXME: the use of "mode" is quite dirty and hacky, for example: what is a "document"? how should it be rendered?
+ // The "mode" approach should be refactored to some other more clear&reliable way.
+ crossLinkOnly := (ctx.Metas["mode"] == "document" && !ctx.IsWiki)
+
var (
found bool
ref *references.RenderizableReference
@@ -870,7 +873,7 @@ func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
// Repos with external issue trackers might still need to reference local PRs
// We need to concern with the first one that shows up in the text, whichever it is
isNumericStyle := ctx.Metas["style"] == "" || ctx.Metas["style"] == IssueNameStyleNumeric
- foundNumeric, refNumeric := references.FindRenderizableReferenceNumeric(node.Data, hasExtTrackFormat && !isNumericStyle)
+ foundNumeric, refNumeric := references.FindRenderizableReferenceNumeric(node.Data, hasExtTrackFormat && !isNumericStyle, crossLinkOnly)
switch ctx.Metas["style"] {
case "", IssueNameStyleNumeric:
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index d1f4e9e8a..62fd0f5a8 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -561,11 +561,16 @@ func TestPostProcess_RenderDocument(t *testing.T) {
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(res.String()))
}
- // Issue index shouldn't be post processing in an document.
+ // Issue index shouldn't be post processing in a document.
test(
"#1",
"#1")
+ // But cross-referenced issue index should work.
+ test(
+ "go-gitea/gitea#12345",
+ `go-gitea/gitea#12345`)
+
// Test that other post processing still works.
test(
":gitea:",
diff --git a/modules/references/references.go b/modules/references/references.go
index 68662425c..64a67d7da 100644
--- a/modules/references/references.go
+++ b/modules/references/references.go
@@ -331,8 +331,11 @@ func FindAllIssueReferences(content string) []IssueReference {
}
// FindRenderizableReferenceNumeric returns the first unvalidated reference found in a string.
-func FindRenderizableReferenceNumeric(content string, prOnly bool) (bool, *RenderizableReference) {
- match := issueNumericPattern.FindStringSubmatchIndex(content)
+func FindRenderizableReferenceNumeric(content string, prOnly, crossLinkOnly bool) (bool, *RenderizableReference) {
+ var match []int
+ if !crossLinkOnly {
+ match = issueNumericPattern.FindStringSubmatchIndex(content)
+ }
if match == nil {
if match = crossReferenceIssueNumericPattern.FindStringSubmatchIndex(content); match == nil {
return false, nil