haskell-vim
haskell-vim copied to clipboard
do-block inside if/then confuses indentation of else block
I typed in this example:
main = do
let n = 1
if n > 0
then do
print 1
else print 2
The else is indented too far and should be directly under the then. If I use << to unindent the else line, it only moves left by one space and I have to manually delete a space from the beginning of the line.
I'm not sure if there's a specific interaction between the do and the if-then-else.
However, another example shows if the else block doesn't immediately follow on the next line from the then, it doesn't indent properly. If I hit enter after the then, the cursor lines up at the same level as then. Hitting tab inserts a single space, then I type the number 123, hit enter and type else, which lines up with the 123, ending with a similar result to the do example:
let n = 1
if n > 0
then
123
else
0
Update: I was able to make manual alignment easier with let g:haskell_indent_if = 2, although it still autoindents else too far after one or more newlines.
I've added a testcase for this situation in PR #128, but I don't know enough vimscript to fix it ATM.