Emacs 为需要微型缓冲区的函数提供值
假设我有一个函数Emacs 为需要微型缓冲区的函数提供值,emacs,Emacs,假设我有一个函数(foo)定义为(defun foo()(从minibuffer“What?”)读取)。我无法更改定义,但我希望将其包装在宏或其他函数中,以避免手动给定任何值 不幸的是,以下解决方案不起作用,因为(exit minibuffer)只有在离开minibuffer后才被调用,所以我想知道您是否知道一些事情 (defmacro return-an-empty-string (&rest code) `(progn ,@code (exit-minibuffer))) (defun re
(foo)
定义为(defun foo()(从minibuffer“What?”)读取)
。我无法更改定义,但我希望将其包装在宏或其他函数中,以避免手动给定任何值
不幸的是,以下解决方案不起作用,因为(exit minibuffer)
只有在离开minibuffer后才被调用,所以我想知道您是否知道一些事情
(defmacro return-an-empty-string (&rest code) `(progn ,@code (exit-minibuffer)))
(defun return-an-empty-string (function) (funcall function) (exit-minibuffer))
(defmacro返回空字符串(&rest代码)`(progn,@code(exit minibuffer)))
(defun返回空字符串(函数)(funcall函数)(退出迷你缓冲区))
谢谢 您可以将
从微型缓冲区读取临时设置为不执行任何操作的功能:
(require 'cl)
(defmacro preempt-minibuffer (&rest body)
`(flet ((read-from-minibuffer (&rest ignore)))
,@body))
如果您可以访问函数源,您可以随时制作自己的函数,该函数将执行几乎相同的操作,并用它替换原始函数
假设在文件foo.el
(defun foo ()
...)
现在您可以添加到.emacs
(eval-after-load "foo"
'(progn
(defun foo+ ()
...)
(fset 'foo 'foo+)))
当加载foo.el
时,如果尚未加载,您的foo+
将替换原始foo
你想干什么?如果您提供更多详细信息,可能会有人找到您潜在问题的直接解决方案。我最初的问题是函数(slime compile and load file)
每次都要求我保存该文件,但没有变量覆盖该文件。我用Sean解决方案的一个变体来修复它:(defun slime just do it()(交互式)(flet((y-or-n-p(&rest-ignore)t))(slime编译并加载文件))