109 votes

Comment puis-je définir la taille de la fenêtre d'Emacs ?

J'essaie de détecter la taille de l'écran sur lequel je lance emacs, et d'ajuster la taille et la position de la fenêtre dans laquelle il démarre (je suppose que c'est le cadre dans le langage emacs) en conséquence. J'essaie de configurer mon .emacs de sorte que j'obtienne toujours une fenêtre "raisonnablement grande" avec son coin supérieur gauche près du coin supérieur gauche de mon écran.

Je suppose que c'est un grand demander pour le cas général, donc pour restreindre un peu les choses, je suis surtout intéressé par GNU Emacs 22 sur Windows et (Debian) Linux.

89voto

Bryan Oakley Points 63365

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 window-system est déprécié dans les nouvelles versions d'emacs. Un remplacement approprié est (display-graphic-p) . Voir cette réponse à la question Comment détecter qu'emacs est en mode terminal ? pour en savoir un peu plus.

54voto

Chris Conway Points 24671

J'ai ce qui suit dans mon .emacs :

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

Vous pouvez également examiner les fonctions set-frame-size , set-frame-position y set-frame-width . Utilisez C-h f (alias M-x describe-function ) pour faire apparaître une documentation détaillée.

Je ne suis pas sûr qu'il y ait un moyen de calculer la hauteur/largeur maximale d'un cadre dans l'environnement de fenêtrage actuel.

21voto

Tiré 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 à tous les cadres emacs, y compris le premier qui s'affiche au démarrage. Le second paramètre ajoute des attributs supplémentaires au premier cadre. En effet, il est parfois intéressant de connaître le cadre d'origine dans lequel vous démarrez emacs.

19voto

norbux Points 71

Essayez d'ajouter le code suivant à .emacs

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

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

18voto

JB. Points 12482

La façon la plus simple que j'ai trouvée pour faire cela dans un environnement X-Window est par le biais de Ressources X . La partie concernée de mon .Xdefaults ressemble à ceci :

Emacs.geometry: 80x70

Vous devriez pouvoir le suffixer avec des coordonnées d'emplacement +0+0 pour le forcer à se placer dans le coin supérieur gauche de votre écran. (La raison pour laquelle je ne le fais pas est que je génère occasionnellement de nouvelles images, et cela rend les choses confuses si elles apparaissent exactement au même endroit que la précédente).

Selon le manuel, cette technique fonctionne aussi sur MS Windows en stockant les ressources sous forme de paires clé/valeur dans le registre. Je n'ai jamais testé cela. Cela pourrait être génial, mais cela pourrait être beaucoup plus gênant que de simplement éditer un fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X