Genau wie in der Frage angegeben, möchte ich eine Funktion, die die Fenster zählt, die derzeit in diesem Frame angezeigt werden.
Also das:
+--------------+-------------+
| | |
| | |
| *scratch* | *Messages* |
| | |
| | |
| | |
+--------------+-------------+
| *Help* |
| |
+----------------------------+
Würde zurückkehren => 3
Ich habe unten eine Funktion gestartet:
(defun count-windows ()
"Count how many buffers are currently being shown."
(interactive)
)
*scratch*
, möchten Sie, dass die Funktion 3 oder 2 zurückgibt?count-windows
).Antworten:
Wenn Sie die Anzahl der Fenster meinen, unabhängig davon, welche Puffer angezeigt werden, dann:
(length (window-list))
wird es tun. Besser noch, Sie können einfach die vorhandene(count-windows)
Funktion verwenden.Wenn Sie die Anzahl der eindeutigen Puffer zählen möchten, die in Fenstern des Rahmens sichtbar sind, können Sie Folgendes verwenden:
(Beachten Sie, dass
window-list
auch ein optionales FRAME-Argument verwendet werden kann, wenn Sie etwas anderes als den ausgewählten Frame möchten.)Wenn Sie Letzteres in Ihren Funktionsaufruf einschließen, erhalten Sie:
(Beachten Sie, dass diese Funktion davon ausgeht, dass Sie geladen haben
'cl-lib
. Gemäß den Kommentaren können Sie diesedelete-dups
anstelle von verwenden,cl-delete-duplicates
wenn Sie dies vermeiden möchtencl-lib
.)quelle
cl-delete-duplicates
sie vonrequire
ing zur Verfügung gestellt werden musscl
.'cl-lib
?delete-dups
auch funktionieren würde und 'cl-lib' nicht benötigt.