If it doesn't then I'm using the wrong editor.
If it doesn't then I'm using the wrong editor.
key1: value1 key2: value2
...is supposed to be: key1: value1
key2: value2
? How is it supposed to know if the first is actually what you meant to write?In grammars that aren’t white space dependent (such as JSON), it’s clear what this means:
{ "key1": "value1", "key2": "value2" }While I'm not usually fond of “you're holding it wrong” arguments, that's pretty much the proper response to complaints about YAML’s indentation sensitivity, since you can work with YAML in a style which isn't indentation sensitive without anyone you share data with seeing anything different.
For example, if you double-indent something, YAML will just silently assume you wanted a nested data structure but Python will throw an indentation error. That causes issues in many editors when copy-and-pasting.
That pattern continues where Python uses indentation to force clarity and consistency but still has syntax which removes ambiguity. A key one is that Python requires quoting data, avoiding all of the common data loss in YAML when people happen to enter data with meaning in YAML (country=no, names with equal signs or colons, etc.), and you have to open and close structures with syntax rather than just indentation.
The most analogous Python bug is when a statement immediately after an if, nested def, etc. is one level of indentation than intended. That definitely happens but a fair fraction of the time it’s immediately obvious because it usually fails due to something like a variable not being in scope. YAML consumers are more likely to ignore extra elements so it’s easier to miss things like that for a while unless you have an unusually strict validation stage.
In some contexts, sure, which is one reason why YAML has two presentational styles with equal semantic power, between which a suitable tool can convert mechanically, and only one of those two styles features whitespace sensitivity.
> Being able to reliably reformat hundreds of lines of code with a single keypress is far more valuable than a few saved braces.
YAML gives you the ability to freely switch between a presentational style which provides the former and one which provides the latter, with no loss of semantic power, so it doesn't really matter which is better, since you don't have to choose between one and the other.
Haskell does.
{ "key1": "value1", "key2": "value2" }
without the commas, you're also on your own when it comes to fixing it.You just type [enter] instead of [space] between "value1" and "key2:" in your original example to get correct indentation.