组织模式源包含行号

时间:2012-08-29 03:10:13

标签: emacs org-mode

Org-mode有一个很棒的功能,包括这样的源代码:

#+begin_src java -n
    /**
     * @param foo
     */
    public static void doBar(Baz ba)
    {
        Collection<String> strings = ba.getStrings(true);
        return strings;
    }
#+end_src

-n选项显示行号。

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

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

3 个答案:

答案 0 :(得分:1)

这已在组织模式9中添加。现在可以将号码传递给-n+n

答案 1 :(得分:0)

我知道没有实施的选项。

我刚刚测试的一个非常讨厌的解决方案是定义自己的计数器组织使用+ 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

作为一个肮脏的黑客的结果,它只适用于第一个块,但我不确定如何行为。 在对任何其他块进行编号之前,它会被评估(因为:导出结果,在我尝试时实际上没有导出任何内容),所以它可以在缓冲区中的任何位置。

我想这不是很难实现,或者实际上知道elisp的人可以做得更好,但我希望它会有所帮助。

答案 2 :(得分:0)

我同意jco。这个问题的长答案可能如下所示。但是除了屏幕截图外,它只是从手册中复制和粘贴。

Literal Examples节中所述,您可以在源代码块和示例块中添加行号:

  

在示例和src代码段中,您都可以将-n开关添加到   BEGIN行的末尾,以获取示例行的编号。的   -n带有一个可选的数字参数,用于指定块的起始行号。如果您使用+n开关,则从   先前编号的代码段将在当前代码段中继续。 +n   也可以采用数字参数。参数的值将是   添加到上一个块的最后一行以确定开始   行号。

您还可以参考行号:

  

在文字示例中,Org会将诸如(ref:name)之类的字符串解释为   标签,并将其用作特殊超链接(例如[[(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.

它将产生

Screenshot of referenced code with line numbers.