github.com/cockroachdb/cockroachdb-parser@v0.23.3-0.20240213214944-911057d40c9a/patches/0001-add-extra-pretty-option-for-no-new-lines.patch (about) 1 From c11283e6d2342e0801ace7d1a8badbfe63ee71a4 Mon Sep 17 00:00:00 2001 2 From: Oliver Tan <otan@cockroachlabs.com> 3 Date: Thu, 3 Nov 2022 15:05:20 +1100 4 Subject: [PATCH] add extra pretty option for no new lines 5 6 --- 7 pkg/sql/sem/tree/pretty.go | 8 +++++--- 8 pkg/util/pretty/util.go | 9 ++++++--- 9 2 files changed, 11 insertions(+), 6 deletions(-) 10 11 diff --git a/pkg/sql/sem/tree/pretty.go b/pkg/sql/sem/tree/pretty.go 12 index 6df5efe..5e3715f 100644 13 --- a/pkg/sql/sem/tree/pretty.go 14 +++ b/pkg/sql/sem/tree/pretty.go 15 @@ -47,6 +47,8 @@ type PrettyCfg struct { 16 // TabWidth is the amount of spaces to use for tabs when UseTabs is 17 // false. 18 TabWidth int 19 + // DoNotNewLineAfterColName is true if we do not new line after table column names. 20 + DoNotNewLineAfterColName bool 21 // Align, when set to another value than PrettyNoAlign, uses 22 // alignment for some constructs as a first choice. If not set or if 23 // the line width is insufficient, nesting is used instead. 24 @@ -195,7 +197,7 @@ func (p *PrettyCfg) rlTable(rows ...pretty.TableRow) pretty.Doc { 25 if p.Align != PrettyNoAlign { 26 alignment = pretty.TableRightAlignFirstColumn 27 } 28 - return pretty.Table(alignment, pretty.Keyword, rows...) 29 + return pretty.Table(alignment, pretty.Keyword, p.DoNotNewLineAfterColName, rows...) 30 } 31 32 // llTable produces a Table using Left alignment of the first column. 33 @@ -204,7 +206,7 @@ func (p *PrettyCfg) llTable(docFn func(string) pretty.Doc, rows ...pretty.TableR 34 if p.Align != PrettyNoAlign { 35 alignment = pretty.TableLeftAlignFirstColumn 36 } 37 - return pretty.Table(alignment, docFn, rows...) 38 + return pretty.Table(alignment, docFn, p.DoNotNewLineAfterColName, rows...) 39 } 40 41 func (p *PrettyCfg) row(lbl string, d pretty.Doc) pretty.TableRow { 42 @@ -242,7 +244,7 @@ func (p *PrettyCfg) joinNestedOuter(lbl string, d ...pretty.Doc) pretty.Doc { 43 } 44 items[i].Doc = dd 45 } 46 - return pretty.Table(pretty.TableRightAlignFirstColumn, pretty.Keyword, items...) 47 + return pretty.Table(pretty.TableRightAlignFirstColumn, pretty.Keyword, p.DoNotNewLineAfterColName, items...) 48 default: 49 return pretty.JoinNestedRight(pretty.Keyword(lbl), d...) 50 } 51 diff --git a/pkg/util/pretty/util.go b/pkg/util/pretty/util.go 52 index 568461a..b754eb8 100644 53 --- a/pkg/util/pretty/util.go 54 +++ b/pkg/util/pretty/util.go 55 @@ -238,11 +238,11 @@ const ( 56 // 57 // docFn should be set to Text or Keyword and will be used when converting 58 // TableRow label's to Docs. 59 -func Table(alignment TableAlignment, docFn func(string) Doc, rows ...TableRow) Doc { 60 +func Table(alignment TableAlignment, docFn func(string) Doc, noNewLine bool, rows ...TableRow) Doc { 61 // Compute the nested formatting in "sections". It's simple. 62 // Note that we do not use NestUnder() because we are not grouping 63 // at this level (the group is done for the final form below). 64 - items := makeTableNestedSections(docFn, rows) 65 + items := makeTableNestedSections(docFn, rows, noNewLine) 66 nestedSections := Stack(items...) 67 68 finalDoc := nestedSections 69 @@ -300,7 +300,7 @@ func makeAlignedTableItems( 70 return items 71 } 72 73 -func makeTableNestedSections(docFn func(string) Doc, rows []TableRow) []Doc { 74 +func makeTableNestedSections(docFn func(string) Doc, rows []TableRow, noNewLine bool) []Doc { 75 items := make([]Doc, 0, len(rows)) 76 for _, r := range rows { 77 if r.Doc == nil || (r.Label == "" && r.Doc == Nil) { 78 @@ -309,6 +309,9 @@ func makeTableNestedSections(docFn func(string) Doc, rows []TableRow) []Doc { 79 if r.Label != "" { 80 d := simplifyNil(docFn(r.Label), r.Doc, 81 func(a, b Doc) Doc { 82 + if noNewLine { 83 + return ConcatSpace(a, b) 84 + } 85 return Concat(a, NestT(Concat(Line, Group(b)))) 86 }) 87 items = append(items, d) 88 -- 89 2.37.1 (Apple Git-137.1) 90