Comments (5)
I pushed some updates which fixes this issue by vertically aligning infix expressions.
The new output on your example looks like this:
fun main () =
let
val foo =
"01234567890123456789012345678901234567890123456789"
^ "01234567890123456789012345678901234567890123456789"
^ "01234567890123456789012345678901234567890123456789"
in
print foo
end
I think this is a decent solution for now, and it generally looks pretty good.
from smlfmt.
Fix confirmed, nice work!
from smlfmt.
I took a stab at fixing this, and pushed a fix (3b39389) which better respects the max width.
New result at 80 chars max width (seems decent):
fun main () =
if
1 = 1 andalso 2 = 2 andalso 3 = 3 andalso 4 = 4 andalso 5 = 5 andalso 6 = 6
andalso 7 = 7 andalso 8 = 8
then
print "foo\n"
else
print "bar\n"
I'm leaving this open for now though, because it sometimes puts the newline in a "bad place", e.g. here's the output for max 40 chars.
fun main () =
if
1 = 1 andalso 2 = 2 andalso 3 = 3
andalso 4 = 4 andalso 5 = 5 andalso 6
= 6
andalso 7 = 7 andalso 8 = 8
then
print "foo\n"
else
print "bar\n"
(This is a tricky issue to solve!)
from smlfmt.
Thank you for your quick fix, @shwestrick.
It seems that after those changes, follow code will be formatted with max width exceeded:
fun main () =
let
val foo =
"01234567890123456789012345678901234567890123456789" ^ "01234567890123456789012345678901234567890123456789"
^ "01234567890123456789012345678901234567890123456789"
in
print foo
end
from smlfmt.
Thanks, I'll look into it.
from smlfmt.
Related Issues (20)
- Grouping of function application HOT 2
- Infix style with large expressions HOT 1
- Style for nested `if` expressions?
- SuccessorML syntax HOT 8
- Long single-line comments can force large indentation increases
- Support mlb option "allowExtendedTextConsts true" HOT 4
- Support top-level expressions HOT 5
- Rightward drift in deep function application
- Revisit `Promise` overhead in document structure
- Non-idempotent formatting
- Parser bug: unexpected functor HOT 1
- Heuristic for placing fun decl body on separate line HOT 1
- Automatically detect if stdin isn't a terminal HOT 2
- Remove `--stdio` flag
- Comments immediately before end of file don't format well HOT 3
- Editor integration HOT 6
- Continuous Integration Support HOT 6
- TODO: new release HOT 1
- Unusual command line interface HOT 3
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 smlfmt.