Org: 不能注释代码块内的行

比如下列代码块

image

我要用命令注释掉这一行时,会出错:

Debugger entered--Lisp error: (wrong-number-of-arguments (0 . 2) 3)
  org-edit-src-code(nil nil nil)
  org-comment-or-uncomment-region(2485 2499 nil)
  comment-region(2485 2499 nil)
  comment-or-uncomment-region(2485 2499)
  evilnc--working-on-region(2485 2499 comment-or-uncomment-region)
  evilnc--comment-or-uncomment-region(2485 2499)
  (lambda (b e) (evilnc--fix-buggy-major-modes) (evilnc--comment-or-uncomment-region b e))(2485 2499)
  evilnc--operation-on-lines-or-region((lambda (b e) (evilnc--fix-buggy-major-modes) (evilnc--comment-or-uncomment-region b e)) 1)
  evilnc-comment-or-uncomment-lines(1)
  (let ((evilnc-invert-comment-line-by-line nil)) (evilnc-comment-or-uncomment-lines arg))
  spacemacs/comment-or-uncomment-lines(1)
  funcall-interactively(spacemacs/comment-or-uncomment-lines 1)
  call-interactively(spacemacs/comment-or-uncomment-lines nil nil)
  command-execute(spacemacs/comment-or-uncomment-lines)

直接运行这一句也会出错:

(org-comment-or-uncomment-region 2485 2499 nil)

其中 2485 和 2499 分别是这一行的行首和行尾 pos

在邮件组的同学帮忙把这个问题反映给 org 开发者吧,谢谢!

@xuchunyang @tumashu

我在 vanilla emacs 上也复现成功:

安装 org 9.1 之前版本的同学如果可以的话也帮忙测试一下,谢谢

这个 bug 的最直接影响就是没法在 org buffer 中快速注释掉代码块中的行或段,要注释的话还得打开 edit buffer,实在太麻烦了。

F**k,我把 org.elc 删掉就好了,这是什么鬼,怎么才能知道是 elc 的锅? Backtrace 里也看不出。

Edit: 重新编译后症状消失,byte-compile 真是莫名奇妙

在這個版本上運行 M-x comment-or-uncomment-region 没有报错。但是会用 # 而不是 ;;

说明本身这个命令不支持在 Org 里“自动”识别语言做出注释。


打字打一半 fcitx 出问题了……换到手机上打,尴尬。

支持的,你试试新版的 org

我用 Spacemacs 试了一下,发现也报错了,而且也是重新编译以后正常了……

所以是 spacemacs 的锅?

我的意思是 byte-compile 问题。

我也觉得很奇怪,在想是不是 spacemacs 的锅。但是也没有机会在 vanilla emacs 中升级 org,所以没法知道。