Skip to content

do-block inside if/then confuses indentation of else block #127

Open
@DestyNova

Description

@DestyNova

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions