GithubHelp home page GithubHelp logo

Comments (3)

shwestrick avatar shwestrick commented on August 17, 2024

Some progress on this in 6c468d5

Added a combinator called besideAndAbove which is like beside, except it causes the second doc to use the indentation of the first.

    d1       d2           besideAndAbove (d1, d2)
  .......   ****             .......
  .......   ***    ====>     .......
  .....                      .....****
                             ***

Using besideAndAbove to attach the else-branch of a conditional, we get formatting like this:

val x =
  if b1 then
    e1
  else if b2 then
    e2
  else if b3 then
    e3
  else if b4 then
    e4
  else if b5 then
    e5
  else if b6 then e6 else if b7 then e7 else e8

This feels like a step in the right direction. To fix the weird final line of the above example, it seems like we would need to traverse the children of an if/then/else to find the whole chain, before formatting.

from smlfmt.

shwestrick avatar shwestrick commented on August 17, 2024

Although I suppose the irony here is that, if we traverse the children in the CST to identify the whole chain, then it's possible to implement the desired formatting in terms of the old combinators 🥲

from smlfmt.

shwestrick avatar shwestrick commented on August 17, 2024

Fixed by #34 :)

from smlfmt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.