109 Stimmen

Wie kann ich die Größe des Emacs-Fensters einstellen?

Ich versuche, die Größe des Bildschirms zu erkennen, auf dem ich Emacs starte, und die Größe und Position des Fensters, in dem es startet (ich schätze, das ist der Rahmen in Emacs-Sprache) entsprechend anzupassen. Ich versuche, meinen .emacs so einzurichten, daß ich immer ein "vernünftig großes" Fenster erhalte, dessen obere linke Ecke sich in der Nähe der oberen linken Ecke meines Bildschirms befindet.

Ich denke, das ist eine groß fragen Sie nach dem allgemeinen Fall, also um die Dinge ein wenig einzugrenzen, bin ich am meisten an GNU Emacs 22 unter Windows und (Debian) Linux interessiert.

89voto

Bryan Oakley Punkte 337213

Wenn Sie die Größe je nach Auflösung ändern möchten, können Sie wie folgt vorgehen (indem Sie die bevorzugte Breite und die Auflösungen an Ihre spezifischen Bedürfnisse anpassen):

(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)

Beachten Sie, dass window-system in neueren Versionen von emacs veraltet ist. Ein geeigneter Ersatz ist (display-graphic-p) . Siehe 本答 auf die Frage Wie erkennt man, dass emacs im Terminal-Modus ist? für ein wenig mehr Hintergrundinformationen.

0 Stimmen

Ich mag unterschiedliche Zahlen, also habe ich (wie Sie vorschlagen) meine geändert. Das funktioniert aber großartig; vielen Dank!

0 Stimmen

Andererseits mag ich eigentlich diese Version besser - viel einfacher (leicht zu lesen und zu optimieren) und für meine Bedürfnisse gut geeignet. Beides sind aber gute Antworten! +1

1 Stimmen

Seien Sie vorsichtig mit der Höhe, zumindest bei Emacs 24.2 unter OS X. Wenn Sie sie eine Zeile zu hoch einstellen, bleibt das Fenster in einem Zustand stecken, in dem die erste Zeile des Puffers nicht sichtbar ist - der Punkt kann zwar nach oben navigieren, aber das Fenster scrollt nicht, um ihn anzuzeigen.

54voto

Chris Conway Punkte 54023

Ich habe folgendes in meinem .emacs :

(if (window-system)
  (set-frame-height (selected-frame) 60))

Sie können sich auch die folgenden Funktionen ansehen set-frame-size , set-frame-position et set-frame-width . Verwenden Sie C-h f (alias M-x describe-function ), um eine ausführliche Dokumentation aufzurufen.

Ich bin nicht sicher, ob es eine Möglichkeit gibt, die maximale Höhe/Breite eines Rahmens in der aktuellen Fensterumgebung zu berechnen.

13 Stimmen

Juhu! (if (window-system) (set-frame-size (selected-frame) 124 40)) für den Sieg - so nett und prägnant, und ich bekomme die Größe, auf die mein Terminal standardmäßig eingestellt ist, was nett und vertraut ist :) (Natürlich in den Einstellungen anpassen.) Danke!

2 Stimmen

Nur zur Klarstellung: Wenn Sie dies in init.el sie gilt nur für den Anfangsrahmen. Wenn Sie danach einen neuen Rahmen erstellen, hat die obige Funktion keine Auswirkung; der neue Rahmen hat dann die Einstellungen, die in default-frame-alist .

0 Stimmen

Das funktioniert bei mir, außer dass (set-frame-size (selected-frame) 80 24) gibt mir ein Bild 161 von 48; Ich bin auf einem 4K hidpi Bildschirm, aber ich würde nicht erwarten, dass dies die Zeichenanzahl beeinflusst.

21voto

Entnommen aus: http://www.gnu.org/software/emacs/Windows/old/faq4.html

(setq default-frame-alist
      '((top . 200) (left . 400)
        (width . 80) (height . 40)
        (cursor-color . "white")
        (cursor-type . box)
        (foreground-color . "yellow")
        (background-color . "black")
        (font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1")))

(setq initial-frame-alist '((top . 10) (left . 30)))

Die erste Einstellung gilt für alle emacs-Frames, auch für den ersten, der beim Start erscheint. Die zweite Einstellung fügt dem ersten Frame zusätzliche Attribute hinzu. Der Grund dafür ist, dass es manchmal schön ist, den ursprünglichen Rahmen zu kennen, in dem Sie Emacs starten.

0 Stimmen

Ich hatte diese Methode lange Zeit für die Einstellung der Höhe und Breite des Rahmens verwendet ( (width . 80) (height . 40) ), aber aus irgendeinem Grund funktionierte es nicht mehr, nachdem ich meine Xubuntu-Version von 12.04 auf 13.10 aktualisiert hatte: Beim Start war die Rahmengröße die Standardgröße. Ich habe dann auf die Antwort von Chris Conway umgestellt, die bei mir funktioniert.

18voto

JB. Punkte 37289

Der einfachste Weg, dies in einer X-Window-Umgebung zu tun, ist durch X Ressourcen . Der relevante Teil meiner .Xdefaults sieht wie folgt aus:

Emacs.geometry: 80x70

Sie sollten in der Lage sein, die Koordinaten mit +0+0 zu ergänzen, um sie in die obere linke Ecke des Bildschirms zu bringen. (Der Grund, warum ich es nicht tue, ist, dass ich gelegentlich neue Frames spawnen, und es macht die Dinge verwirrend, wenn sie in genau der gleichen Position wie die vorherige erscheinen)

Laut Handbuch, diese Technik funktioniert auch unter MS Windows und speichern die Ressourcen als Schlüssel/Wert-Paare in der Registrierung. Ich habe das nie getestet. Es könnte großartig sein, es könnte aber auch sehr viel umständlicher sein, als einfach eine Datei zu bearbeiten.

1 Stimmen

Ja, das funktioniert auch unter Windows. Das Emacs-Wiki enthält mehr Details: emacswiki.org/emacs/MsWindowsRegistry

18voto

norbux Punkte 181

Fügen Sie den folgenden Code zu .emacs

(add-to-list 'default-frame-alist '(height . 24))

(add-to-list 'default-frame-alist '(width . 80))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X