This applies a relatively simple solution for fixing some unintuitive cases in the unit handling code.
Currently entering `-1m50cm` evaluates to `-0.5m`, and similarly `1'6"` evaulates to just half a foot.
So effectively there's an implied `+` just between the numbers, which is quite confusing.
This works by adding parentheses so the negative distributes to the block of values before the next operator.
For example:
| Before | After |
| `-1m50cm + 1m -2m50cm` | `-(1m50cm) + 1m -(2m50cm)` |
| `-4m + 0.5 / -1.1` | `-(4m) + 0.5 / -(1.1)`|
| `-4m + 0.5 / -1.1 + -7m50cm * 3` | `-(4m) + 0.5 / -(1.1) + -(7m50cm) * 3` |
| `-1'6"` | `-(1'6")` |
| `-5m50cm + 1m * 4 - sin(6)m + 6m50cm - 8m70cm` | `-(5m50cm) + 1m * 4 - (sin(6)m) + 6m50cm - (8m70cm)` |
| `-1m50cm*2` | `-(1m50cm)*2` |
| `-1m50cm-1m50cm-1m50cm`| `-(1m50cm)-(1m50cm)-(1m50cm)`|
| 1e-2m | 1e-2m |
| -1.87E-3km | -(1.87E-3km) |
| -1e-2cm | -(1e-2cm) |
| -18 m * -17cm | -(18 m) * -(17cm) |
I don't see much of a downside to this, especially because it's a contained step and doesn't touch any of the other unit handling code.