Orgmode 专用 bug 收集贴

这个帖子专门收集大家碰到的 orgmode 的 bug,可以在帖子下面留言,我会整理后放在置顶贴;或者也可以直接提交到 emacs-china 维护的 orgmode mirror 的 issue 列表


Bug 1 (已修复)

把光标放在 src block 的 begin line 上,M-x org-backward-paragraph 无法移动光标,报错:

Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)")
  re-search-backward("^[ 	]*$" 23945 move)

orgmode 是最新版:

Org mode version 9.1 (9.1-20-ga4f139-elpaplus @ /home/neoarch/.emacs.d/elpa/org-plus-contrib-20170911/)

麻烦论坛里经常上 org mail list 的大神给反映一下。

这个是 bug 确认无疑,不会再闹乌龙了。

Edit: 最新的 org-mode 中已修复


Bug 2

example block 内 org-fill-paragraph 无效

比如:

#+begin_example
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
#+end_example

期待行为:

在 example block 内使用 org-fill-paragraph 应该可以将上面的 block 中的内容 fill:

#+begin_example
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah 
blah blah blah blah blah blah blah blah blah blah  
#+end_example

实际行为:

什么都没有发生

测试平台:

vanilla emacs 25.3.1 with latest org-plus-contrib


Bug 3

发现一处文档错误:

http://orgmode.org/manual/var.html

中有这样的内容:

          #+NAME: double
          #+BEGIN_SRC emacs-lisp :var input=8
          (* 2 input)
          #+END_SRC
          
          #+RESULTS: double
          : 16
          
          #+NAME: squared
          #+BEGIN_SRC emacs-lisp :var input=double(input=2)
          (* input input)
          #+END_SRC
          
          #+RESULTS: squared
          : 4

但是实际上第二个代码块运行的结果应该是 16。

也许不是 bug 。

org-backward-paragraph 这么改不保证能用。

-       (if (= (point) contents-begin) (goto-char post-affiliated)
+       (if (or (= (point) contents-begin) (= (point-at-bol) begin))
+           (goto-char post-affiliated)

Why? 表示不能理解。

之所以说这个是 bug,是因为这个其实很影响使用,因为有其它函数依赖这个函数,比如 org-inside-LaTeX-fragment-p

进而导致我开启 org-cdlatex-mode 时无法在代码块开始行输入 _

可以试着提交给 org 看看

这个 bug 已经在最新的 org-plus-contrib 中修复了:

这个帖子就用来收集大家所遇到的 org-mode 的 bug,参见置顶

我个人认为直接改动 mirror repo 不方便同步。提交给 Org 以后,你可以自建一个 Fork 来维护 patch,然后提 issue 过来,等 bug 修复以后 close 对应 issue。

以后在 mirror repo 提的 issue 我们也可以考虑统一提交给 Org 邮件列表。

1 个赞

确实,我没打算提 PR 到 mirror,只是觉得那里提 issue 挺方便的,我一直不适应 mailing list。

谢谢

试试在 org.el 中的 org-fill-element 函数中添加

        ;; Use major mode filling function is src blocks.
        (src-block (org-babel-do-key-sequence-in-edit-buffer (kbd "M-q")))
+       (example-block
+        (let ((org-src-window-setup 'switch-invisibly))
+          (when (org-edit-src-code)
+            (unwind-protect (fill-paragraph)
+              (org-edit-src-exit)))
+          t))
        ;; Align Org tables, leave table.el tables as-is.
        (table-row (org-table-align) t)

这个确定是bug吗? 一般 example 里面的内容是不能随便fill的吧?

如果确定有BUG, 给 orgmode-devel 发送邮件,提交问题,才是王道,其他途径我个人都不推荐…

1 个赞

应该是 bug,你看一下 org-fill-paragraph 函数的文档,里面明确提到针对 example block 来的,禁用 fill 这种事应该交由用户来决定吧,因为它本身也不是自动 fill 的。

这个也有可能是文档的bug,我感觉对于 example block, 自动fill应该慎重, 用户一不小心 fill 了代码等手工排版的东西,那不是很无语了, example完全可以 C-‘ 之后再 fill,这个就万无一失了。

发现一处文档错误,见一楼。

org下表格中有中英混杂的情况下,如果加参数 <数字> 表格无法对齐。

这个不能算是 bug,只能说 orgmode 本身没有太照顾中文用户。我记得可以通过修改数值的大小来让表格对齐。

确实可能通过修改数值来对齐,但是如果需要让表格内容隐藏就没法解决了。-----什么时候让老外来迁就我们就好了。