2013-01-10 71 views
1

我想在emacs中建议一个函数,但没有任何反应。提供emacs功能; defadvice

(defadvice save-place-find-file-hook (after recenter activate) 
    "Recenter after getting to saved place." 
    (recenter)) 

接收不会发生,也就是说。如果有一个(message "foo"),则确实显示了foo。什么是我不知道defadvice?

+0

该功能可能会从保存(以及稍后恢复)显示布局的位置调用,这样您对'recenter'的调用不会生效。 – Lindydancer

+0

也许会尝试像((缓冲区文件名))这样的东西来找出正确的缓冲区是否被重新中止? – PascalVKooten

+0

另外,也许尝试'(recenter-top-bottom)',以防万一? – PascalVKooten

回答

2

find-file-hook显示缓冲区之前运行,所以你的recentering不适用于你觉得它和破灭后立即发生的缓冲区,当find-file替换在选择窗口中的新的当前缓冲区。

+0

听起来像你一定是对的。尽管如此,闪光线的作品,但也许这是由于我的脚下这个缓冲区如何被替换的特殊性...嗯,你能做什么...... – Daniel

+0

闪光线的作品,因为它会导致实际的显示,而只有recenter进行在下次重新显示时可见的更改。尝试在你的'(recenter)'之后添加'(sit-for 1)'以更好地理解发生了什么。 – Stefan

+0

好的,是的,我的建议功能是在缓冲区出现之前运行的,明显的闪烁线只停留在足够长的时间以待一旦出现。所以也许我不得不建议find-find- *不知何故,甚至更深... – Daniel