gpt4 book ai didi

elisp - 如何找到当前运行的函数名称 : current-function, this-function, current-defun, this-defun

转载 作者:行者123 更新时间:2023-12-04 19:21:38 28 4
gpt4 key购买 nike

我正在尝试动态查找当前运行的函数(此函数)的名称,即

  (defun my-func ()      (remove-hook 'some-hook this-function)      (do-something))

最佳答案

我还没有测试过这个,但是为什么不写一个宏来封装你想要的东西呢?也许像下面这样?

(defmacro one-shot-hook (name hook &rest body)
`(defun ,name ()
(remove-hook ',hook ',name)
,@body)

然后,例如

(macroexpand-all-1
'(one-shot-hook test c-mode-hook
(message "Yay!")))

给出

(defun test nil
(remove-hook (quote c-mode-hook) (quote test))
(message "Yay!"))

(当我重新格式化它时)。

这消除了需要知道您所在函数名称的问题,无论如何这都需要讨厌的宏观学(我不确定这是否可能)。

还有一件事,我可能建议最初将一个标志变量设置为 nil,您的代码将对其进行测试以确定是否运行。这样您就不必一直忙于添加和删除 Hook :对于使用您的代码的其他人来说,结果可能会更容易定制和理解。

关于elisp - 如何找到当前运行的函数名称 : current-function, this-function, current-defun, this-defun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345794/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com