Questions tagged «elisp-macros»

2
有条件的“和”与“何时”
这是对该答案的评论的后续。以下代码似乎是等效的: (and a b) (when a b) 当然,and让你把更多的条件:(and a b c d)手段(when (and a b c) d) 我倾向于when只用来表示分支。有实际差异吗?使用其中一个更好吗? 我手头没有Emacs的C源代码;and是C函数;when是一个扩展为的宏if,它本身是C函数。


1
带有defcustom的宏在字节编译时导致“符号值为变量为空”错误
在我的两个包中,我有一个宏,其中的主体依赖于defcustom形式定义的变量。 从Melpa安装软件包时,字节编译以以下结尾: 错误:符号的变量值无效:my-defcustom-variable 然后,通过在缓冲区中打开文件来手动字节编译文件即可。 我尝试使用autoloadCookie,但仍然具有相同的行为。 我在这里错过了重要的事情。

3
何时使用宏或不使用宏
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 什么时候应该在程序中使用宏? 这个问题的灵感来自@tarsius 的翔实答案。我相信许多人都有分享其他人的丰富经验。我希望这个问题成为伟大的主观问题之一,并为Emacs程序员提供帮助。

2
无输入时如何使用?
从文档字符串: 只要没有等待输入,就执行BODY。 如果输入到达,则结束BODY的执行,并while-no-input返回t。退出会使它返回nil。如果BODY完成,则while-no-input返回BODY产生的任何值。 如果我理解正确,则此宏允许我(尝试)执行大量计算而不会挂起接口。我肯定会觉得这是一个吸引人的概念,但是我想知道什么时候在实践中有用。 似乎可以随时中断计算,没有关于发生位置的信息,也没有以后恢复它的简便方法。这让我觉得毕竟可能没有那么有用... 有使用while-no-input宏的推荐方法吗? 有没有在野外使用此宏的示例用法?

3
如何通过遍历列表创建多个defun?
我正在优化我的emacs配置,可以为列表中的所有主题动态创建交互式功能。 以下是我尝试制作的结构的简化版本。 ;; List containing names of functions that I want to create (setq my/defun-list '(zz-abc zz-def zz-ghi)) ;; Elisp macro to create an interactive defun whose name ;; is passed as the macro argument (defmacro my/create-defun (defun-name) `(defun ,defun-name () (interactive) (let ((fn-name (symbol-name ',defun-name))) (message "Testing creation of …

1
如何确定宏的变量作用域?
采取以下示例宏(在中定义)macro.el。 (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) 并采取以下功能,在不同的文件中定义,function.el。 (defun some-function () (some-macro (do-something))) 当function.el被字节编译,将some-variable在词汇或动态绑定的约束? 我了解这取决于文件是否使用-*- lexical-binding: t; -*-,因此我的问题专门针对以下情况: 如果function.el使用词法绑定,但macro.el不使用。 如果macro.el使用词法绑定,但function.el不使用。 如果some-var在内部声明了全局变量(使用defvar),会有所不同function.el吗?如果是这样,我在那里的情况特别感兴趣也没有。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.