在 python src block 上移动光标非常卡

在 orgmode 中,碰到 python src block 时,光标移动变得非常卡。我怀疑是移动光标时,minibuffer 同时显示 python 函数的信息(eldoc?)造成的。但我使用下列代码并没有帮助:

(remove-hook 'org-mode-hook #'org-eldoc-load)

### 看样子这个 feature 并不是来自 org-eldoc。

注意我并不想关闭 eldoc,因为它在 orgmode 中有其它的用途,比如显示 src block 的 header arguments。我需要的是关闭显示 src block 内部代码相关信息这个功能

PS: orgmode 是最新版的 org-plus-contrib (9.0.3)

cpu 报告显示是 line-number-at-pos 函数造成的,调用它的函数 python-nav--beginning-of-defun 是属于 emacs 内部的包 python.el 的,这个怎么破?

Emacs默认会在状态栏显示行号。

不是你开了行号,是有个叫 python-nav–beginning-of-defun 的函数里面用到了行号

是的,但是为什么 python.el 需要这个行号?

多谢提醒,我的问题需要修改一下

在 Python buffer 内移动光标很卡估计就是它造成的, 在 org buffer 中更卡了

我能想到的解决办法有两种:

  1. 关闭 src block 的信息显示,但我不知道开关在哪里
  2. hack line-number-at-pos,把它替换为 nlinum 中的对应函数?这个应该可以对 python buffer 也有帮助,但是即使 nlinum 也不是很快。

我试着把 global-eldoc-mode 关闭了,果然症状消失了,因为不再需要调用 python.el 的函数了。但是有什么办法只关闭 src block 的信息显示呢?

没有这个 custom 选项,没办法,自己写了一个 advice。它的作用是不显示 python code block 的 eldoc 信息,不会影响其它语言 code block 的 eldoc 信息显示。需要的同学可以参考,spacemacs 用户可以直接放到你的 user-init 里:

(with-eval-after-load "org-eldoc"
    (defun et/no-python-eldoc (oldfun lang)
      (when (not (string= "python" lang))
        (funcall oldfun lang)))
    (advice-add #'org-eldoc-get-mode-local-documentation-function
                :around #'et/no-python-eldoc))