Emacs 组织模式源包含行号

Emacs 组织模式源包含行号,emacs,org-mode,Emacs,Org Mode,组织模式有一个很好的特性,可以包含如下源代码: #+begin_src java -n /** * @param foo */ public static void doBar(Baz ba) { Collection<String> strings = ba.getStrings(true); return strings; } #+end_src #+begin\u src java-n /**

组织模式有一个很好的特性,可以包含如下源代码:

#+begin_src java -n
    /**
     * @param foo
     */
    public static void doBar(Baz ba)
    {
        Collection<String> strings = ba.getStrings(true);
        return strings;
    }
#+end_src
#+begin\u src java-n
/**
*@param-foo
*/
公共静态真空多巴(巴兹巴)
{
Collection strings=ba.getStrings(true);
返回字符串;
}
#+结束(src)
-n
选项显示行号

有一个
+n
选项可以从最后一个块继续编号


有没有设置起始号码的选项?这对于希望行号对应于完整文件的源代码片段非常有用。

据我所知,没有实现的选项

我刚刚测试过的一个非常棘手的解决方案是定义计数器组织用于+n工作的您自己。 它说:

#+begin_src emacs-lisp :exports results
;; we need it not be a buffer-local value
(setq-default org-export-last-code-line-counter-value 42)
#+end_src
作为一个肮脏的黑客,它只在第一个块中工作一次,但我不确定±n的行为如何。 在对任何其他块进行编号之前对其进行评估(因为:导出结果,在我尝试时没有实际导出任何内容),因此它可以位于缓冲区中的任何位置


我想这不会很难实现,或者由真正了解elisp的人来做得更好,但我希望这会有所帮助。

这是在组织模式9中添加的。现在可以将数字同时传递给
-n
+n

例如,您可以使用以下标题在第12行开始示例:

#+begin_src java -n 12
...
#+end_src
我同意。对这个问题的一个长的回答可以如下所示。但除了屏幕截图,它只是从手册中复制和粘贴

如本节所述,您可以向源块和示例块添加行号:

在示例和src代码段中,都可以向
BEGIN
行的末尾,对示例中的行进行编号。这个
-n
接受一个可选的数字参数,指定块的起始行号。如果使用
+n
开关,则 先前编号的代码段将在当前代码段中继续。
+n
也可以接受数字参数。参数的值将为 添加到上一个块的最后一行以确定起始位置 行号

您还可以参考行号:

在文本示例中,Org将像
(ref:name)
这样的字符串解释为 标签,并将其用作特殊超链接的目标,如
[[(名称)]
(即,单括号中的引用名称)。在HTML中, 将鼠标悬停在此类链接上将突出显示远程链接 对应的代码行,有点酷

演示这两个特性的示例如下:

#+BEGIN_SRC emacs-lisp -n -r
(save-excursion                  (ref:sc)
   (goto-char (point-min)))      (ref:jump)
#+END_SRC

In line [[(sc)]] we remember the current position.
[[(jump)][Line (jump)]] jumps to point-min.
它将产生


我没有试过这个,但它看起来很合理。嗨@justingordon。如果你有机会,你能把被接受的答案改成@jco的吗?现在它是你问题的正确答案。