使用 `C-M-x` 与使用钩子来评估函数定义

问题描述 投票:0回答:1

以下函数允许在 org jupyter src 块中使用eglot(在https://github.com/joaootavora/eglot/issues/216#issuecomment-1051931693之后)

(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))

打开一个 org 文件并执行暂存缓冲区中的函数,就像一个魅力,但我想在我的初始化文件中使用这种方法。在我天真的方法中,我认为我将函数放在像这样的钩子上:

(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
不一样,而且不起作用。更糟糕的是,它搞砸了字体锁定。

function emacs hook org-mode
1个回答
0
投票

将未定义的函数添加到挂钩并不会定义该函数。如果您需要评估

*scratch*
中的函数定义以定义它,那么您需要从 init 文件中的某处评估它。

如果它在某个库中定义,则

require
在您的初始化文件中定义该库。如果没有,请将定义它的代码放入您的初始化文件中。

org-mode-hook
上放置一个函数只是告诉 Org 模式在模式打开时调用该函数。它没有定义该函数。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.