You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C-M-x直接求值函数与Hook调用的差异:Org模式Jupyter代码块Eglot配置问题求助

C-M-x直接求值函数与Hook调用的差异:Org模式Jupyter代码块Eglot配置问题求助

大家好!我最近折腾出了一段代码,能让Eglot在Org文件的Jupyter Python代码块里正常工作,具体代码如下:

(defun org-babel-edit-prep:jupyter-python (babel-info)
  (setq-local buffer-file-name (expand-file-name (->> babel-info caddr (alist-get :tangle))))
  (eglot-ensure))
(defun mb/org-babel-edit:jupyter-python ()
    (interactive)
    (org-babel-tangle '(4))
    (org-edit-special))

我直接在scratch buffer里选中这两个函数,用C-M-x求值之后,打开Org文件使用完全没问题,简直丝滑!

但是我想把这个配置写到我的init文件里,让它每次启动Emacs都自动生效。我当时想当然地把这两个函数挂到了org-mode-hook上,代码是这样的:

(add-hook 'org-mode-hook 'org-babel-edit-prep:jupyter-python)
(add-hook 'org-mode-hook 'mb/org-babel-edit:jupyter-python)

结果完全不行,和直接用C-M-x运行的效果天差地别,不仅功能没生效,甚至把Org模式的语法高亮都搞坏了。有没有大佬能帮我分析下这两种方式的差异,教教我正确的配置方式呀?

备注:内容来源于stack exchange,提问作者Uliw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:55:27