Question

J'essaie de détecter la taille de l'écran sur lequel je commence Emacs, puis d'ajuster la taille et la position de la fenêtre dans laquelle elle commence (je suppose que c'est le cadre dans emacs-speak) en conséquence. J'essaie de configurer mes .emacs de manière à toujours obtenir un "raisonnablement gros" fenêtre avec son coin en haut à gauche près du haut à gauche de mon écran.

Je suppose que c'est une grande demande pour le cas général, donc pour préciser un peu les choses, je suis plus intéressé par GNU Emacs 22 sous Windows et (Debian) Linux.

Était-ce utile?

La solution

Si vous souhaitez modifier la taille en fonction de la résolution, vous pouvez procéder comme suit (en ajustant la largeur et les résolutions préférées en fonction de vos besoins spécifiques):

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

Notez que le système de fenêtre est obsolète dans les nouvelles versions d’emacs. (display-graphic-p) est un substitut approprié. Voir cette réponse à la question Comment détecter qu'emacs est en mode terminal? pour un peu plus de fond.

Autres conseils

J'ai les éléments suivants dans mon .emacs :

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

Vous pouvez également consulter les fonctions set-frame-size , set-frame-position et set-frame-width . Utilisez C-h f (aussi appelé M-x describe-fonction ) pour afficher une documentation détaillée.

Je ne sais pas s'il existe un moyen de calculer la hauteur / largeur maximale d'un cadre dans l'environnement de fenêtrage actuel.

Extrait de: 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)))

Le premier paramètre s’applique à toutes les images emacs, y compris le premier qui apparaît lorsque vous démarrez. Le deuxième paramètre ajoute des attributs supplémentaires à la première image. En effet, il est parfois agréable de connaître le cadre d'origine dans lequel vous démarrez emacs.

La façon la plus simple de procéder dans un environnement X-Window consiste à Ressources X . La partie pertinente de mes .Xdefaults ressemble à ceci:

Emacs.geometry: 80x70

Vous devriez pouvoir y ajouter un suffixe + 0 + 0 pour le forcer dans le coin supérieur gauche de votre écran. (La raison pour laquelle je ne le fais pas, c'est que je crée occasionnellement de nouvelles images, ce qui rend les choses confuses si elles apparaissent exactement au même endroit que la précédente)

Selon le manuel, cette Cette technique fonctionne également sous MS Windows , stockant les ressources sous forme de paires clé / valeur dans le registre. Je n'ai jamais testé ça. C’est peut-être bien, cela peut être beaucoup plus gênant que de simplement éditer un fichier.

Essayez d'ajouter le code suivant à .emacs

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

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

Vous pouvez également utiliser le paramètre -geometry lors du lancement d’emacs: emacs -geometry 80x60 + 20 + 30 vous donnera une fenêtre d’une largeur de 80 caractères, d’une hauteur de 60 rangées, avec un coin supérieur gauche de 20 pixels. à droite et à 30 pixels du coin supérieur gauche de l'arrière-plan.

Sur Ubuntu do:

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

Sous Windows, vous pouvez optimiser le cadre emacs à l’aide de cette fonction:

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

Je préfère les paramètres de Bryan Oakley. Cependant, la 'hauteur ne fonctionne pas correctement dans GNU Emacs 24.1.1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top