Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions