Frage

Ich versuche, die Größe des Bildschirms zu erkennen Ich fange Emacs auf, und die Größe anpassen und das Fenster zu positionieren, es beginnt in (ich denke, das ist der Rahmen in Emacs-sprechen) entsprechend. Ich versuche, meine .emacs einzurichten, so dass ich immer ein „vernünftigen großen“ Fenster bekomme damit linke obere Ecke in der Nähe der oberen linken meinen Bildschirms ist.

Ich denke, dies ist ein groß fragen für den allgemeinen Fall, wenn man so schmal Dinge ein wenig nach unten Ich bin am meisten interessiert GNU Emacs 22 auf Windows und (Debian) Linux.

War es hilfreich?

Lösung

Wenn Sie möchten, um die Größe ändern Auflösung nach Ihrem so etwas wie dieses (Einstellung der bevorzugten Breite und Auflösungen entsprechend Ihren spezifischen Bedürfnissen) tun können:

(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 Fenster-System in neueren Versionen von Emacs ist veraltet. Ein geeigneter Ersatz ist (display-graphic-p). Siehe diese Antwort auf die Frage: Wie das emacs ist in Terminal-Modus erkennen? für ein wenig mehr Hintergrund.

Andere Tipps

Ich habe in meinem .emacs folgendes bekommen:

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

Sie können auch einen Blick auf die Funktionen set-frame-size, set-frame-position und set-frame-width. Verwenden Sie C-h f (aka M-x describe-function) eine ausführliche Dokumentation zu bringen.

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

Entnommen: 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-Rahmen einschließlich der ersten, das erscheint, wenn Sie beginnen. Die zweite Einstellung fügt zusätzliche Attribute auf den ersten Rahmen. Dies ist, weil es manchmal schön ist es, den ursprünglichen Rahmen zu wissen, dass Sie Emacs starten in.

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

Emacs.geometry: 80x70

sollten Sie in der Lage sein, es Suffix mit + 0 + 0 Standortkoordinaten an die linken oberen Ecke des Bildschirms zu zwingen. (Der Grund, warum ich es nicht tun, ist, dass ich occasionnally neue Rahmen laichen, und es macht die Dinge verwirrend, wenn sie erscheinen in genau der gleichen Stelle wie die vorherige)

Laut Handbuch, diese Technik funktioniert auf MS Windows zu , die Ressourcen als Schlüssel / Wert-Paare in der Registrierung speichern. Getestet habe ich nie. Es könnte groß sein, könnte es viel mehr eine Unannehmlichkeit sein, im Vergleich zu einfach eine Datei bearbeiten.

Versuchen Sie, den folgenden Code .emacs

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

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

Sie können auch die -geometry Parameter, wenn Emacs Anheizen: emacs -geometry 80x60+20+30 werden Sie ein Fenster 80 Zeichen breit, 60 Reihen hoch, mit der linken oberen Ecke 20 Pixel nach rechts und 30 Pixeln nach unten von der oberen linken Ecke der Hintergrund.

Auf ubuntu tun:

(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)

Unter Windows können Sie Emacs Rahmen machen maximiert die Nutzung dieser Funktion:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
(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))
(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 ziehe Bryan Oakley Einstellungen. Doch die 'height nicht richtig funktioniert in meinem GNU Emacs 24.1.1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top