]> Cypherpunks repositories - gostls13.git/commitdiff
go/doc/comment: do not turn ``` into “`
authorRuss Cox <rsc@golang.org>
Fri, 3 Jun 2022 13:18:57 +0000 (09:18 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 6 Jun 2022 19:06:16 +0000 (19:06 +0000)
``` is Markdown, not Go doc comment, but some small fraction of users get confused.

In a set of 55M Go doc comments drawn from the latest version of
all public Go modules known to the module proxy in spring 2020,
the current Go 1.19 gofmt reformats about 1.57M of them.
Out of those 1.57M comments, 8k of them (about 0.5%) contain ```.

Instead of rewriting ``` to “`, leave it alone.

For #51082.

Change-Id: I1c8c88aac7ef75ec03e1a396b84ffe711c46f941
Reviewed-on: https://go-review.googlesource.com/c/go/+/410359
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>

src/go/doc/comment/parse.go
src/go/doc/comment/testdata/quote.txt

index 83b37c32c53b8ad47079cff41ba0ffb4ffd13a11..8a311ff817c810ed34c79501f5db2211dbacc9d0 100644 (file)
@@ -840,6 +840,14 @@ func (d *parseDoc) parseText(out []Text, s string, autoLink bool) []Text {
                }
                switch {
                case strings.HasPrefix(t, "``"):
+                       if len(t) >= 3 && t[2] == '`' {
+                               // Do not convert `` inside ```, in case people are mistakenly writing Markdown.
+                               i += 3
+                               for i < len(t) && t[i] == '`' {
+                                       i++
+                               }
+                               break
+                       }
                        writeUntil(i)
                        w.WriteRune('“')
                        i += 2
index 799663af8025c9c9872ceb26848a89f204d0f11e..b64adae0b36680f05943188eaeb4c63ff2d9a062 100644 (file)
@@ -1,12 +1,15 @@
 -- input --
 Doubled single quotes like `` and '' turn into Unicode double quotes,
 but single quotes ` and ' do not.
+Misplaced markdown fences ``` do not either.
 -- gofmt --
 Doubled single quotes like “ and ” turn into Unicode double quotes,
 but single quotes ` and ' do not.
+Misplaced markdown fences ``` do not either.
 -- text --
 Doubled single quotes like “ and ” turn into Unicode double quotes, but single
-quotes ` and ' do not.
+quotes ` and ' do not. Misplaced markdown fences ``` do not either.
 -- html --
 <p>Doubled single quotes like “ and ” turn into Unicode double quotes,
 but single quotes ` and &apos; do not.
+Misplaced markdown fences ``` do not either.