encoding/yaml: use idiomatic indentation (regression)

For some reason, yaml.v3 uses 4 spaces, instead of
the recommended 2, so this changed when moving to
this new package.

This change reverts it back.

Change-Id: I3cd1fc5a4fb575cce7e014cf51795488c7a5a8a1
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5686
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/encoding/yaml/encode.go b/internal/encoding/yaml/encode.go
index b0a247d..d9742e7 100644
--- a/internal/encoding/yaml/encode.go
+++ b/internal/encoding/yaml/encode.go
@@ -15,6 +15,7 @@
 package yaml
 
 import (
+	"bytes"
 	"math/big"
 	"strings"
 
@@ -45,7 +46,14 @@
 	if err != nil {
 		return nil, err
 	}
-	return yaml.Marshal(y)
+	w := &bytes.Buffer{}
+	enc := yaml.NewEncoder(w)
+	// Use idiomatic indentation.
+	enc.SetIndent(2)
+	if err = enc.Encode(y); err != nil {
+		return nil, err
+	}
+	return w.Bytes(), nil
 }
 
 func encode(n ast.Node) (y *yaml.Node, err error) {
diff --git a/internal/encoding/yaml/encode_test.go b/internal/encoding/yaml/encode_test.go
index 33d478a..b90447c 100644
--- a/internal/encoding/yaml/encode_test.go
+++ b/internal/encoding/yaml/encode_test.go
@@ -51,18 +51,18 @@
 		`,
 		out: `
 seq:
-  - 1
-  - 2
-  - 3
-  - a: 1
-    b: 2
+- 1
+- 2
+- 3
+- a: 1
+  b: 2
 a:
-    b:
-        c: 3
+  b:
+    c: 3
 b:
-    x: 0
-    y: 1
-    z: 2
+  x: 0
+  y: 1
+  z: 2
 		`,
 	}, {
 		name: "oneLineFields",
@@ -136,8 +136,8 @@
 
 # head 3
 f3:
-    # struct doc
-    a: 1
+  # struct doc
+  a: 1
 f4: {} # line 4
 
 # Trailing
@@ -229,16 +229,16 @@
 		}`,
 		out: `
 receivers:
-  - name: pager
-    slack_configs:
-      - text: |-
-            {{ range .Alerts }}{{ .Annotations.description }}
-            {{ end }}
-        channel: '#cloudmon'
-        send_resolved: true
+- name: pager
+  slack_configs:
+  - text: |-
+      {{ range .Alerts }}{{ .Annotations.description }}
+      {{ end }}
+    channel: '#cloudmon'
+    send_resolved: true
 route:
-    receiver: pager
-    group_by: [alertname, cluster]
+  receiver: pager
+  group_by: [alertname, cluster]
 		`,
 	}}
 	for _, tc := range testCases {