Die window-system
Variable teilt Lisp-Programmen mit, unter welchem Fenstersystem Emacs ausgeführt wird. Die möglichen Werte sind
- x
- Emacs zeigt den Rahmen mit X an.
- w32
- Emacs zeigt den Frame über die native MS-Windows-Benutzeroberfläche an.
- ns
- Emacs zeigt den Frame über die Nextstep-Oberfläche an (wird unter GNUstep und Mac OS X verwendet).
- pc
- Emacs zeigt den Frame mit direkten MS-DOS-Bildschirmschreibvorgängen an.
- Null
- Emacs zeigt den Frame auf einem zeichenbasierten Terminal an.
Aus dem Dokument .
Bearbeiten : Es scheint, dass das Fenstersystem zugunsten von display-graphic-p
(Quelle: Ch f Fenstersystem RET auf Emacs 23.3.1) veraltet ist.
(display-graphic-p &optional DISPLAY)
Return non-nil if DISPLAY is a graphic display.
Graphical displays are those which are capable of displaying several
frames and several different fonts at once. This is true for displays
that use a window system such as X, and false for text-only terminals.
DISPLAY can be a display name, a frame, or nil (meaning the selected
frame's display).
Was Sie also tun möchten, ist:
(if (display-graphic-p)
(progn
;; if graphic
(your)
(code))
;; else (optional)
(your)
(code))
Und wenn Sie keine else-Klausel haben, können Sie einfach:
;; more readable :)
(when (display-graphic-p)
(your)
(code))
Die Antworten erwähnen
window-system
unddisplay-graphic-p
sind nicht falsch, aber sie sagen nicht das vollständige Bild.In der Realität kann eine einzelne Emacs-Instanz mehrere Frames haben, von denen sich einige auf einem Terminal und andere auf einem Fenstersystem befinden können. Das heißt, Sie können
window-system
sogar innerhalb einer einzelnen Emacs-Instanz unterschiedliche Werte erhalten .Sie können beispielsweise ein Emacs-Fenstersystem starten und dann über
emacsclient -t
ein Terminal eine Verbindung dazu herstellen . Der resultierende Terminalrahmen sieht einen Wert vonnil
fürwindow-system
. Ebenso können Sie Emacs im Daemon-Modus starten und später anweisen, einen grafischen Rahmen zu erstellen.Vermeiden Sie daher, Code in Ihre .emacs einzufügen, der davon abhängt
window-system
. Fügen Sie stattdessen Code wie in Ihremset-frame-size
Beispiel in eine Hook-Funktion ein, die ausgeführt wird, nachdem ein Frame erstellt wurde:Beachten Sie, dass der
'after-make-frame-functions
Hook nicht für den ersten Frame ausgeführt wird. Daher ist es häufig erforderlich, auch rahmenbezogene Hook-Funktionen wie die oben genannten hinzuzufügen'after-init-hook
.quelle
split-window-horizontally
Teilt den aktuell aktiven Bereich ("Fenster") im aktuellen Fenster ("Rahmen") in zwei Bereiche ("Fenster") auf.'after-init-hook
.Grundsätzlich machen Sie eine:
quelle
Wenn es im Gui-Modus ist, dann wäre das Folgende wahr.
(wenn Fenstersystem)
quelle
Ich habe eine zusätzliche Funktion zum Umschließen der Fensternamenfunktion definiert, da ich Emacs überall verwende, dh vom Terminal und im Grafikmodus sowie unter Linux und MacOS:
Es kann auf andere Systeme wie Windows oder ältere Systeme ausgedehnt werden, auf denen ein serielles Terminal verwendet wird. Dafür habe ich aber keine Zeit ;-)
quelle