[plt-dev] "poll": scribble syntax & indentation

From: Eli Barzilay (eli at barzilay.org)
Date: Sat Mar 7 14:08:55 EST 2009

On Mar  7, Robby Findler wrote:
> On Fri, Mar 6, 2009 at 1:36 PM, Eli Barzilay <eli at barzilay.org> wrote:
> > For example, this:
> >
> >  #lang scribble/text
> >  function foo() {
> >    @list{if (1 < 2)
> >            something1
> >          else
> >            something2
> >          fi
> >          }
> >    return
> >  }
> >
> > will not come out right.
> 
> I think I don't get what coming out right would be here. It looks right to me!

The current output of this is:

  function foo() {
    if (1 < 2)
    something1
  else
    something2
  fi
    return
  }

instead of

  function foo() {
    if (1 < 2)
      something1
    else
      something2
    fi
      return
  }

This is because the list has this contents:

  "if (1 < 2)" "\n"
  "  something1" "\n"
  "else" "\n"
  "  something2" "\n"
  "fi"

So the indentation that you see inside the resulting "if" block is the
indentation that is internal to the `list' expression, ignoring the
context.  Here's a more exaggerated example:

  #lang scribble/text
  function foo() {
          newline
          @list{if (1 < 2)
                  something1
                else
                  something2
                fi
                }
          return
  }

prints:

  function foo() {
          newline
          if (1 < 2)
    something1
  else
    something2
  fi
          return
  }

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!


Posted on the dev mailing list.