get-buffer-window-list
Fehler werden nur ausgegeben, wenn der Puffer nicht vorhanden ist. Wenn der Puffer existiert, aber in keinem Fenster angezeigt wird, kehrt die Funktion zurück nil
.
Sie können das Vorhandensein von Puffer mit überprüfen get-buffer
.
Was Sie also wollen, ist:
(defun get-buffers-window (buffer-names) (let (found buf) (while (and (null found) (setq buf (pop buffer-names))) (setq found (and (get-buffer buf) (car (get-buffer-window-list buf))))) found)) (get-buffers-window '("*shell*" "stata" "*stata*"))
Beachten Sie, dass für die Listen foo
die Formulare angezeigt werden
(if foo ...)
und
(if (< 0 (length foo)) ...)
sind gleichwertig, aber erstere durchläuft die Liste nicht (und damit auch schneller) und ist auch idiomatischer.