使用 ConTeXt vim 模块时如何保持正确的行号?

使用 ConTeXt vim 模块时如何保持正确的行号?

考虑以下代码:

\usemodule[vim]

\definevimtyping
  [somecode]
  [numbering=yes,lines=split]

\starttext
\startsomecode
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
\stopsomecode
\stoptext

很明显,代码行(当然不是实际的代码)相当长,但它只有一行。在输出中你会看到:

vim 打字

请注意,引入的行号并不反映源代码中的行号。是否可以在输出中获取“原始”行号?

奖金:如果有选项,是否有人知道如何在换行后缩进文本?

答案1

这段太长了,不适合作为评论,所以我将其作为答案发布。我是当前的维护者t-vim,也是添加行号功能的人。原则上,这是可能的。2context.vim脚本将一行转换为以下内容

\SYNBOL ... \SYNEOL

行号的最初实现是重新定义\SYNBOL在左边距中添加数字。这可行,但没有提供行号环境的任何其他选项(设置数字样式、数字距离、跳过、开始、转换、引用等)。我不想在 中重新实现所有这些功能t-vim。所以,我最终决定在内置行号环境中使用 piggy-packing,它目前没有选项来指定某些属于同一行的内容实际上被分成两行。

我不打算重写 中的行号处理方式t-vim。我将检查上下文邮件列表,看是否有可能添加对“如果在同一行则跳过行号”的支持。该代码已经在page-lin.lua(第 415-422 行) 中,但由于某种原因被注释掉了。

相关内容