diff --git a/modules/markup/html.go b/modules/markup/html.go
index da16bcd3c..e53ccc6a7 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -852,7 +852,7 @@ func fullIssuePatternProcessor(ctx *RenderContext, node *html.Node) {
}
func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
- if ctx.Metas == nil {
+ if ctx.Metas == nil || ctx.Metas["mode"] == "document" {
return
}
var (
diff --git a/modules/markup/html_internal_test.go b/modules/markup/html_internal_test.go
index 00ffe45c2..7b7f6df70 100644
--- a/modules/markup/html_internal_test.go
+++ b/modules/markup/html_internal_test.go
@@ -262,6 +262,30 @@ func TestRender_IssueIndexPattern5(t *testing.T) {
})
}
+func TestRender_IssueIndexPattern_Document(t *testing.T) {
+ setting.AppURL = TestAppURL
+ metas := map[string]string{
+ "format": "https://someurl.com/{user}/{repo}/{index}",
+ "user": "someUser",
+ "repo": "someRepo",
+ "style": IssueNameStyleNumeric,
+ "mode": "document",
+ }
+
+ testRenderIssueIndexPattern(t, "#1", "#1", &RenderContext{
+ Ctx: git.DefaultContext,
+ Metas: metas,
+ })
+ testRenderIssueIndexPattern(t, "#1312", "#1312", &RenderContext{
+ Ctx: git.DefaultContext,
+ Metas: metas,
+ })
+ testRenderIssueIndexPattern(t, "!1", "!1", &RenderContext{
+ Ctx: git.DefaultContext,
+ Metas: metas,
+ })
+}
+
func testRenderIssueIndexPattern(t *testing.T, input, expected string, ctx *RenderContext) {
if ctx.URLPrefix == "" {
ctx.URLPrefix = TestAppURL
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index a8d7ba794..9156bc633 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -529,6 +529,42 @@ func Test_ParseClusterFuzz(t *testing.T) {
assert.NotContains(t, res.String(), "`)
+ test(
+ "Some text with 😄 in the middle",
+ `Some text with 😄 in the middle`)
+ test("http://localhost:3000/person/repo/issues/4#issuecomment-1234",
+ `person/repo#4 (comment)`)
+}
+
func TestIssue16020(t *testing.T) {
setting.AppURL = TestAppURL