Description
Description
Statements in computation expressions, which should indent the following lines, but do not, include (those I found so far):
- for
- then
- else
They seem to work outside computation expressions.
Repro steps
- use emacs in fsharp-mode and type the following (and be amazed by the non-indenting!):
module issues
let indent_in_computation_expressions_not_working () =
seq {
for i = 0 to 10 do
if i % 2 = 0
then
yield "even"
else
yield "odd"
}
- in fsi (dotnet fsi):
#load "issues.fs"
#load "issue.fs";;
[Loading /home/.../dev/fs/issue.fs]
/home/.../dev/fs/issue.fs(8,9): warning FS0058: Possible incorrect indentation: this token is offside of context started at position (6:9). Try indenting this token further or using standard formatting conventions.
/home/.../dev/fs/issue.fs(8,9): warning FS0058: Possible incorrect indentation: this token is offside of context
started at position (6:9). Try indenting this token further or using standard formatting conventions.
Expected behavior
The indenting should be right, but it is as shown above.
module issues
let indent_in_computation_expressions_not_working () =
seq {
for i = 0 to 10 do
if i % 2 = 0
then
yield "even"
else
yield "odd"
}
Actual behavior
module issues
let indent_in_computation_expressions_not_working () =
seq {
for i = 0 to 10 do
if i % 2 = 0
then
yield "even"
else
yield "odd"
}
Known workarounds
use C-c> to indent every line in such a block individually.
Related information
- Operating system linux
- Branch
- Emacs version GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
of 2021-03-28, modified by Debian - .NET Runtime, CoreCLR or Mono Version dotnet --version
5.0.202 - Performance information, links to performance testing scripts