(add-hook 'occur-hook (lambda () (pop-to-buffer occur-buf))) (add-hook 'help-mode-hook (lambda () (pop-to-buffer (get-buffer "*Help*")))) (add-hook 'grep-mode-hook (lambda () (pop-to-buffer (get-buffer "*grep*"))))
As an alternative, the general approach is to use special-display-regexps or special-display-buffer-names to create special-display buffers that put them in a separate frame (and select it). For instance:.
(setq special-display-regexps '("[ ]?[*][^*]+[*]"))
source share