2009-09-29 119 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

相關問題