Comment définir la taille de la fenêtre D'Emacs?

j'essaie de détecter la taille de l'écran sur lequel je démarre emacs, et j'ajuste la taille et la position de la fenêtre dans laquelle elle démarre (je suppose que c'est le cadre dans emacs-speak) en conséquence. Je suis en train de configurer mon .emacs pour que j'obtienne toujours une fenêtre" raisonnablement grande " avec son coin en haut à gauche près du coin en haut à gauche de mon écran.

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

98
demandé sur Luke Girvin 2008-09-18 18:20:29

10 réponses

si vous voulez changer la taille en fonction de la résolution, vous pouvez faire quelque chose comme ceci (ajustement de la largeur et des 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 versions plus récentes d'emacs. Un remplacement approprié est (display-graphic-p) . Voir cette réponse à la question Comment détecter qu'emacs est dans le terminal en mode? pour un peu plus de fond.

85
répondu Bryan Oakley 2017-05-23 11:54:07

j'ai ce qui suit dans mon .emacs :

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

vous pourriez aussi regarder les fonctions set-frame-size , set-frame-position , et set-frame-width . Utilisez C-h f (alias M-x describe-function ) pour obtenir 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.

47
répondu Chris Conway 2008-09-18 16:29:29

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 emacs cadres dont le premier qui s'affiche lorsque vous démarrez. Le deuxième paramètre ajoute des attributs supplémentaires à la première image. C'est parce qu'il est parfois agréable de connaître le cadre d'origine dans lequel vous démarrez emacs.

21
répondu 2008-09-18 14:26:48

la façon la plus facile que j'ai trouvée pour faire cela dans un environnement X-Window est par x resources . La partie pertinente de mon .Xdefaults ressemble à ceci:

Emacs.geometry: 80x70

vous devriez être en mesure de le suffixe avec +0+0 coordonnées de localisation pour le forcer au coin supérieur gauche de votre écran. (la raison pour laquelle je ne le fais pas, c'est que je crée occasionnellement de nouveaux cadres, et cela rend les choses confuses s'ils apparaissent exactement au même endroit que le précédent. un)

Selon le manuel, cette technique fonctionne sur MS Windows trop , de stocker les ressources, comme des paires clé/valeur dans le registre. Je n'ai jamais testé. Cela pourrait être génial, cela pourrait être beaucoup plus un inconvénient par rapport à simplement éditer un fichier.

16
répondu JB. 2008-09-18 14:52:47

essayez d'ajouter le code suivant à .emacs

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

(add-to-list 'default-frame-alist '(width . 80)) 
14
répondu norbux 2012-09-09 04:23:55

vous pouvez aussi le paramètre-geometry lors de l'allumage d'emacs: emacs -geometry 80x60+20+30 vous donnera une fenêtre de 80 caractères de large, 60 lignes de haut, avec le coin supérieur gauche 20 pixels à la droite et 30 pixels vers le bas à partir du coin supérieur gauche de l'arrière-plan.

11
répondu Graeme Perrow 2008-09-18 16:44:39

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)
7
répondu ftravers 2011-10-05 11:32:56

sur windows, vous pouvez optimiser emacs frame en utilisant cette fonction:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
5
répondu Jérôme Radix 2010-08-21 20:05:22
(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
répondu N.N. 2011-10-18 22:11:59
(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 décors de Bryan Oakley. Cependant le 'height ne fonctionne pas correctement dans mon GNU Emacs 24.1.1.

0
répondu WisdomFusion 2012-08-11 05:42:07