1.4 反馈 : BUG报告,好的想法,补丁等等

如果你发现了Org有问题,或者你有疑问,建议和好的想法,请发邮件到Org的mailing list emacs-orgmode@gnu.org. 如果你还不是这个mailing list的会员, 那么在版主批准之后,你的mail会被加入到mailing list.

如果你想报告BUG,请首先在最新版本的Org上复现这个BUG–如果你允许一个老旧版本的Org,很可能这个Bug已经被修复了. 如果依旧有问题,请写好报告并提供尽可能多的信息,包括Emacs的版本信息(用M-x emacs-version <RET>)和Org的版本信息(用M-x org-version <RET>),以及'.emacs'中Org的相关配置. 最简单的提交报告的方法就是执行命令'M-x org-submit-bug-report'. 这个命令会收集所有必要的信息并放到一个Emacs的mail缓存区中,这样你只需要添加你自己的描述就可以了. 如果你不会在Emacs中发送email,请拷贝这些内容并粘贴到自己常用的Email程序中.

有时候你面对的错误可能是由于Emacs或Org-mode配置错了. 在报告BUG之前,最后以最小客户化的形式启动Emacs然后复现这个BUG. 这样做常常能够帮助你确定这个问题是因为配置的关系还是Org-mode本身有问题. 你可以用下面这个命令来开启一个最低客户化的session

 
emacs -Q -l /path/to/minimal-org.el

如果你使用的是Emacs中自带的Org mode,那么上面哪个最小客户化的配置就没有必要了. 你可以直接用'emacs -Q'来打开Emacs. 一个典型的'minimal-org.el'配置文件可能包含如下内容

  1. ;;; Minimal setup to load latest `org-mode' 
  2.  
  3. ;; activate debugging 
  4. (setq debug-on-error t 
  5.       debug-on-signal nil 
  6.       debug-on-quit nil) 
  7.  
  8. ;; add latest org-mode to load path 
  9. (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp")) 
  10. (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp")) 
  11.  
  12. ;; activate org 
  13. (require 'org-install) 

如果有错误发生,一个错误的跟踪栈对查找问题很有帮助(下面说明了如何创建一个跟踪栈). 通常提供一个简单的造成错误的简单例子会很有帮助, 再加上以下这些信息:

1. 你做了什么
2. 你希望的结果是什么
3. 实际上的结果是什么

感谢您帮助我们改进这个程序.

1.4.1 如何创建一个有用的跟踪栈

如果Org报出了一个让你不明白的出错信息,你可能发现了BUG. 报告这个BUG的最好方法是提供一个跟踪栈(backtrace). 跟踪栈使用内置的调试信息来收集一些信息,这些信息包括错误发生的地点和方式. 下面是提供一个有用跟踪栈的步骤

  1. 重新加载未编译的所有Org mode的Lisp源文件. 如果错误是在未编译的脚本中产生时,跟踪栈能够提供多得多的信息. 要做到这一步,执行
    C-u M-x org-reload RET
    

    或者在Emacs菜单上选择'Org -> Refresh/Reload -> Reload Org uncompiled'

  2. 在'Options'菜单中选择'Enter Debugger On error'(如果是使用XEmacs,需要在'Troubleshooting'子菜单中选择此项).
  3. 复现错误,别忘了记录操作的每个步骤
  4. 当错误产生了,一个名为*Backtrace*的缓存区会显示出来,保存这个缓存区到文件中(一般是用C-x C-w命令)然后附加在你的错误报告中.