advice-add #'select-window #'foo 怎么获取select-window后的当前buffer?

我的错误写法是:

(defun foo (&optional window norecord)
"test."
(with-selected-window window
	(with-current-buffer (window-buffer)
	  (message "%s" (buffer-name)))
)

(advice-add #'select-window :after #'foo)

应该怎么做是正确的?

(advice-add #'select-window
            :after (lambda (&rest _) (message "%s" (buffer-name))))

既然已经 select window 了,就没有必要用 with-selected-window 和 with-current-buffer 了。

我的目的是在find-file switch-to-buffer select-window 这几个动作后判断当前buffer是否是某一特定buffer,如果是启动一个minor mode。其他的都还好,就是select-window 直接在启动就失败,也没报错。

这样的话,可以用 window-buffer-change-hook,好像是这个名字,它会在当前window的buffer改变时执行,应该包含上面的几种情况。你试试