新行存在于 rebol / red for block 选项卡呢?

new-line exists in rebol / red for block what about tabs?

虽然有换行符,但我找不到新标签页,那么如何在块中保存标签页?

    help new-line
    USAGE:
         NEW-LINE position value

    DESCRIPTION: 
         Sets or clears the new-line marker within a block or paren. 
         NEW-LINE is a native! value.

    ARGUMENTS:
         position     [block! paren!] "Position to change marker (modified)".
         value         "Set TRUE for newline".

    REFINEMENTS:
         /all         => Set/clear marker to end of series.
         /skip        => Set/clear marker periodically to the end of the series.
            size         [integer!] 

    RETURNS:
         [block! paren!]

数组中每个单元格都有一个换行符标志 ("any-block!"s),它指示成型过程是否应在该值之前放置一个换行符。

缩进仅由这些标志驱动。缩进从第一个换行标志开始,以后的换行符将各自对齐到该级别,块末尾有一个 outdent如果有 newlines/indents 发生。

>> data: [a b c]

>> new-line next data true

>> data
== [a 
   b c
]

请注意,[a b c] 块内有 4 个 "candidate positions" 换行符(例如,位置是 [* a * b * c *])。然而只有三个值单元格,换行符表示希望在该单元格之前输出换行符。由于缺少放置第四个换行信号的地方,Rebol2 和 Red 的决定是在处理任何换行标记时隐式地将右括号放在它自己的行上。

I've previously mentioned 面对系列修改,"out-of-band" 这样的信息是如何管理的并不明显。它有助于实现您的期望。即使只担心 一位 也有很多细微差别,比如当你说:

compose [
    1 + (block1)
    (block2)
]

COMPOSE 中的内容和拼接数据本身中的内容之间的换行符应该如何合并?这就是一位相关的逻辑。放入一些 "indentation count" 会引入更多问题。另外,没有太多的位可以用于计算:"rules of the game" 之一是将每个值单元格减少到仅 4 个平台指针。

扩展格式化功能的可能性不大。一项要求尾部有自己的换行符的功能是 accepted for open source Rebol3, but rejected by Red。我不希望在这方面看到更多的成果。