2009-09-29 85 views
1

我试图编写一个插件,它调用一个函数(icalendar-import-file),每次调用它时都会在1到3个缓冲区之间打开,并且有时候我想称它为一大堆时间。找出elisp中某个函数打开了哪些缓冲区?

我什至不能找到一个函数,将列出缓冲区没有弹出一个新的缓冲区,这是有点令人沮丧。据我所知,defun(ical...)没有返回任何有用的东西,所以对我来说两个明显的解决方案是:(1)在我运行该函数之前将一个变量设置为缓冲区列表,然后扫描函数退出并删除新缓冲区后存在的缓冲区(类似save-excursion,但是用于缓冲区)或(2)以某种方式禁止创建。它看起来像ical...是相当严重依赖于此,但我不确定这是可行的。

回答

3

您正在寻找的功能:

缓冲列表是 `C源代码中的内置函数”。

(缓冲区列表&可选FRAME)

返回所有现有的现场 缓冲区的列表。如果可选的arg FRAME是 一个帧,我们返回缓冲区列表 该帧的正确顺序:缓冲区在FRAME的缓冲区列表框 参数优先,其次是 其余缓冲区。

+0

哦,jeez。是啊。我花了太多时间试图弄清楚如何处理列表缓冲区......谢谢! – quodlibetor 2009-09-29 02:35:19

0

如果您知道哪个函数正在创建不需要的缓冲区,并了解将其删除会产生什么效果,您可以随时通知他们(使用建议后)以解决问题根源处的不需要的缓冲区。我认为这比一个函数完成后简单地删除任何新的缓冲区更安全。

+0

我认为,但缓冲区名称是动态的,而不是由import-icalendar提供的。另外,我很确定defadvice可以在emacs中普遍使用,对吗?我不想因为对我不方便而认真修改内部函数。我认为,只要emacs保持单线程,缓冲区列表扫描对我来说足够好。因为当我创建列表和当我删除进程外的额外缓冲区时什么都没有。 – quodlibetor 2009-10-02 17:19:45

相关问题