Comments (4)
This is a dup of #40.
As an aside, an option to disable alignment of code (except multi-line lists, records etc) would be fantastic :).
Can you elaborate? What kind of alignment are you referring to?
from fantomas.
Sorry, didn't find that one. Regarding alignment, the example given causes some kind of alignment, apart from the indentation. Alignment of code is a maintenance problem. The convention for lists etc is to align the items, for example
let x =
[ "foo"
"bar"
"baz" ]
and it looks nice even though it's dangerous -- dedent code like that with VS and everything explodes. One example where Fantomas aligns is
[] |> List.choose (function
| Some _ as x -> x
| None -> None)
where it aligns the pipes under the function
keyword.
Even more problematic would be inline alignment such as
let x =
{ some = "foo"
record = "bar"
here = "baz" }
but that doesn't seem to have caught on in the F# world, thankfully :).
So, the option I'd love would be to use plain indentation for everything but [
, {
and [|
constructs (might've missed a case or two where alignment is canon).
However, it looks like #40 will solve my immediate problem.
from fantomas.
Thanks for the explanation.
I understand your reason, but we cannot anticipate users' indentation behaviours. Fantomas can only ensure that at current situation indentation is correct.
So, the option I'd love would be to use plain indentation for everything but [, { and [| constructs (might've missed a case or two where alignment is canon).
I have to disagree. Although users can easily misalign elements inside [
, {
, [|
, their alignments are canonical in F#. You can always set semiColonAtEndOfLine
option to insert ;
in the end of each element. Then you don't have to worry about misalignment anymore, the code can be parsed even if indentation among elements is off.
from fantomas.
I have to disagree. Although users can easily misalign elements inside [, {, [|, their alignments are canonical in F#.
We're in agreement – I said plain indentation for everything but [
, {
and [|
, where alignment is canonical.
As a closing comment, perhaps, thank you for this important and useful project!
from fantomas.
Related Issues (20)
- Unable to format F# 8 extended interpolated strings with curly braces HOT 3
- Move editor config to library rather than tool HOT 6
- "Incomplete declaration of a static construct" which the F# compiler accepts HOT 2
- Multiline secondary constructor HOT 4
- Equals sign should only be on same line if last tuple is multiline HOT 2
- Return type should go on next line
- Invalid F# code after formatting HOT 1
- Formatting removes necessary additional closing brackets for multiline interpolated strings HOT 1
- Fantomas reports an error when formatting interpolated string with tripple quotes HOT 7
- Idempotency problem when _.Property shorthand
- Regression: Stroustrup bracket style in anonymous record type parameter is not respected
- HashDirective before closing `]`
- Long parameter attribute gives weird line break before type annotation
- Fantomas corrupts an explicit constructor with `then` clause HOT 2
- FormatASTAsync loses single quotes for characters HOT 4
- Regression: An empty line or comment at the end of a list breaks Stroustrup formatting HOT 2
- `SpaceBeforeUppercaseInvocation` corrupts underscore lambda invocation HOT 1
- Non needed parentheses are added around lambda call from tuple/members HOT 3
- [Feature request] Make newline experience consistent across match branches HOT 1
- Make Fantomas AOT compatible HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fantomas.