Support customizing a whitespace before list indicators
diff --git a/src/main/java/org/yaml/snakeyaml/DumperOptions.java b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
index 1753943..2c7477b 100644
--- a/src/main/java/org/yaml/snakeyaml/DumperOptions.java
+++ b/src/main/java/org/yaml/snakeyaml/DumperOptions.java
@@ -163,6 +163,7 @@
     private boolean allowUnicode = true;
     private boolean allowReadOnlyProperties = false;
     private int indent = 2;
+    private int indicatorIndent = 0;
     private int bestWidth = 80;
     private boolean splitLines = true;
     private LineBreak lineBreak = LineBreak.UNIX;
@@ -225,6 +226,20 @@
         return this.indent;
     }
 
+    public void setIndicatorIndent(int indicatorIndent) {
+        if (indicatorIndent < 0) {
+            throw new YAMLException("Indicator indent must be non-negative");
+        }
+        if (indicatorIndent > Emitter.MAX_INDENT - 1) {
+            throw new YAMLException("Indicator indent must be at most " + (Emitter.MAX_INDENT-1));
+        }
+        this.indicatorIndent = indicatorIndent;
+    }
+
+    public int getIndicatorIndent() {
+        return this.indicatorIndent;
+    }
+
     public void setVersion(Version version) {
         this.version = version;
     }
diff --git a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
index 9c72438..2136e21 100644
--- a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
+++ b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
@@ -135,6 +135,7 @@
 
     private boolean allowUnicode;
     private int bestIndent;
+    private int indicatorIndent;
     private int bestWidth;
     private char[] bestLineBreak;
     private boolean splitLines;
@@ -190,6 +191,7 @@
         if ((opts.getIndent() > MIN_INDENT) && (opts.getIndent() < MAX_INDENT)) {
             this.bestIndent = opts.getIndent();
         }
+        this.indicatorIndent = opts.getIndicatorIndent();
         this.bestWidth = 80;
         if (opts.getWidth() > this.bestIndent * 2) {
             this.bestWidth = opts.getWidth();
@@ -590,6 +592,7 @@
                 state = states.pop();
             } else {
                 writeIndent();
+                writeWhitespace(indicatorIndent);
                 writeIndicator("-", true, false, true);
                 states.push(new ExpectBlockSequenceItem(false));
                 expectNode(false, false, false);
@@ -1100,15 +1103,20 @@
             writeLineBreak(null);
         }
 
-        if (this.column < indent) {
-            this.whitespace = true;
-            char[] data = new char[indent - this.column];
-            for (int i = 0; i < data.length; i++) {
-                data[i] = ' ';
-            }
-            this.column = indent;
-            stream.write(data);
+        writeWhitespace(indent - this.column);
+    }
+
+    private void writeWhitespace(int length) throws IOException {
+        if (length <= 0) {
+            return;
         }
+        this.whitespace = true;
+        char[] data = new char[length];
+        for (int i = 0; i < data.length; i++) {
+            data[i] = ' ';
+        }
+        this.column += length;
+        stream.write(data);
     }
 
     private void writeLineBreak(String data) throws IOException {
diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
index 717363e..b50310e 100644
--- a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
+++ b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
@@ -18,7 +18,9 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -26,6 +28,7 @@
 
 import org.yaml.snakeyaml.DumperOptions;
 import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.DumperOptions.FlowStyle;
 import org.yaml.snakeyaml.DumperOptions.ScalarStyle;
 import org.yaml.snakeyaml.events.DocumentStartEvent;
 import org.yaml.snakeyaml.events.ImplicitTuple;
@@ -155,6 +158,19 @@
         assertEquals("{\"12345\": [\"1111111111\"]}\n", output);
     }
 
+    public void testWriteIndicatorIndent() {
+        DumperOptions options = new DumperOptions();
+        options.setIndent(5);
+        options.setIndicatorIndent(2);
+        options.setDefaultFlowStyle(FlowStyle.BLOCK);
+        List<?> topLevel = Arrays.asList(Collections.singletonMap("k1", "v1"), Collections.singletonMap("k2", "v2"));
+        Map<String, ?> map = Collections.singletonMap("aaa", topLevel);
+        Yaml yaml = new Yaml(options);
+        String output = yaml.dump(map);
+        String etalon = "aaa:\n  -  k1: v1\n  -  k2: v2\n";
+        assertEquals(etalon, output);
+    }
+
     public void testSplitLineExpectFlowSequenceItem() {
 
         DumperOptions options = new DumperOptions();