it-swarm.com.de

Wie stelle ich die Größe des Emacs-Fensters ein?

Ich versuche, die Größe des Bildschirms zu erkennen, auf dem ich Emacs starte, und passe die Größe und Position des Fensters an, in dem es startet (ich denke, das ist der Frame in Emacs-Sprache). Ich versuche, meine .emacs so einzurichten, dass ich immer ein "ziemlich großes" Fenster erhalte, dessen linke obere Ecke sich links oben auf meinem Bildschirm befindet.

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

101
Tom Dunham

Wenn Sie die Größe entsprechend der Auflösung ändern möchten, können Sie folgendermaßen vorgehen (Anpassen der bevorzugten Breite und Auflösung gemäß Ihren spezifischen Anforderungen):

(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 diese Antwort zur Frage Wie erkennt man, dass sich der Emacs im Terminal-Modus befindet? für etwas mehr Hintergrund.

87
Bryan Oakley

Ich habe folgendes in meinem .emacs:

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

Sie könnten auch die Funktionen betrachten set-frame-size, set-frame-position, und set-frame-width. Verwenden C-h f (aka M-x describe-function), um eine detaillierte Dokumentation aufzurufen.

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

48
Chris Conway

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, einschließlich des ersten, das beim Starten angezeigt wird. Die zweite Einstellung fügt dem ersten Frame zusätzliche Attribute hinzu. Das liegt daran, dass es manchmal schön ist, den ursprünglichen Frame zu kennen, in dem Sie Emacs starten.

21
Justin

Der einfachste Weg, dies in einer X-Window-Umgebung zu tun, ist X resources . Der relevante Teil meiner .Xdefaults sieht folgendermaßen aus:

Emacs.geometry: 80x70

Sie sollten es mit + 0 + 0 Ortskoordinaten versehen können, um es in die obere linke Ecke Ihrer Anzeige zu zwingen. (Der Grund, warum ich das nicht tue, ist, dass ich gelegentlich neue Frames spawne, und es verwirrt die Dinge, wenn sie genau an der gleichen Stelle wie die vorherige erscheinen.)

Laut Handbuch diese Technik funktioniert auch unter MS Windows Speichern der Ressourcen als Schlüssel/Wert-Paare in der Registrierung. Das habe ich nie getestet. Es könnte großartig sein, es könnte viel unangenehmer sein, als einfach eine Datei zu bearbeiten.

17
JB.

Versuchen Sie, den folgenden Code zu .emacs Hinzuzufügen.

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

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

Sie können auch den Parameter -geometry verwenden, wenn Sie Emacs starten: emacs -geometry 80x60+20+30 gibt Ihnen ein Fenster mit einer Breite von 80 Zeichen und einer Höhe von 60 Zeilen, wobei die linke obere Ecke 20 Pixel nach rechts und die linke obere Ecke 30 Pixel nach unten zeigt.

12
Graeme Perrow

Auf Ubuntu machen:

(defun toggle-fullscreen ()
  (interactive)
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
)
(toggle-fullscreen)
7
ftravers

Unter Windows können Sie den Emacs-Frame mit dieser Funktion maximieren:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
5
Jérôme Radix
(setq initial-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                initial-frame-alist))

(setq default-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                default-frame-alist))
1
Peter Miehle
(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)

Ich bevorzuge Bryan Oakleys Einstellungen. Allerdings funktioniert das 'height in meinem GNU Emacs 24.1.1.

0
WisdomFusion