Question

Cela me rend fou: je veux simplement qu'Emacs optimise la résolution d'écran que j'ai au démarrage. Idéalement, j'aime une solution multiplate-forme (Windows et Linux) qui fonctionne avec n'importe quelle résolution d'écran, mais je ne parviens même pas à la faire fonctionner uniquement sous Windows XP, même avec des tailles codées en dur.

Voici ce que j'ai essayé:

  1. Définition de la liste initiale avec la hauteur / largeur appropriée
  2. Définition de la liste par défaut
  3. (éléments spécifiques à Windows) Envoi d'un message à la fenêtre emacs lui indiquant de maximiser via (w32-send-sys-command 61488)
  4. J'ai essayé cette fonction que j'ai trouvée quelque part:

    (defun toggle-fullscreen ()
      "toggles whether the currently selected frame consumes the entire display
    or is decorated with a window border"
      (interactive)
      (let ((f (selected-frame)))
        (modify-frame-parameters 
         f
         `((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen)) 
                              'fullboth
                            nil))))))
    
  5. J'ai essayé les méthodes ci-dessus au début et à la fin de mon fichier init pour tenter d'éliminer les interférences causées par d'autres choses init.

Malheureusement, rien de ce qui précède ne fonctionne !! Dans certains cas, je peux voir mes fenêtres emacs se redimensionner correctement pendant une fraction de seconde avant de revenir à la taille par défaut plutôt petite. Et si j’exécute les méthodes ci-dessus après l’initialisation, la fenêtre emacs ne se redimensionne pas correctement. Que se passe-t-il dans le monde ici?

[p.s. il y a d'autres questions SO à ce sujet mais aucune des réponses ne fonctionne]

Mise à jour:

Les réponses me font penser que quelque chose d'autre dans mon fichier init est à l'origine du problème. Et en effet c'est le cas! Après quelques essais et erreurs, j'ai trouvé le coupable. Si j'ai commenté la ligne suivante, tout fonctionne parfaitement:

(tool-bar-mode -1)

Quel est le lien entre la barre d’outils et la maximisation des fenêtres?

La question qui se pose maintenant est la suivante: comment désactiver la barre d’outils (après tout, la barre d’outils d’emacs est laide et occupe un précieux fond d’écran) ET permet de maximiser les fenêtres dans mon fichier init? C'est peut-être un bug que la barre d'outils interfère avec la taille de Windows?

Clarification: (tool-bar-mode -1) désactive la barre d’outils mais cette ligne empêche de maximiser les fenêtres Emacs. Donc, si j'essaie de mettre des fonctions pour maximiser les fenêtres et de désactiver la barre d'outils, la partie maximiser échouera; si la partie de la barre d’outils est commentée, la partie agrandie fonctionnera normalement. Peu importe les solutions que j'utilise (parmi les 4 que j'ai énumérées).

Solution: (ou du moins ce qui fonctionne pour moi maintenant)

Ceci est probablement un bogue dans Emacs. La solution de contournement consiste à désactiver la barre d'outils via le Registre, pas dans .emacs. Enregistrez les éléments suivants en tant que fichier .reg et exécutez-le dans l'Explorateur Windows:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"

(Cette solution est une version de travail de ce que propose OtherMichael.)

Était-ce utile?

La solution

J'ai trouvé une réponse une année à peu près qui explique que vous devez manipuler le registre pour bien faire les choses:

  

Pour démarrer Emacs maximisé, mettez cette ligne   à la fin de votre fichier ~ / .emacs:

(w32-send-sys-command 61488)
  

Si vous ne voulez pas de la barre d'outils Emacs   vous pouvez ajouter la ligne (mode-barre d'outils -1) [REMARQUE: la valeur est 0 sur la page d'origine]   dans votre fichier ~ / .emacs mais Emacs ne le fera pas   maximiser pleinement dans ce cas - le réel   domaine occupé par la barre d'outils est   perdu. Vous devez désactiver la barre d'outils   dans le registre pour le récupérer:

[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
@="0"

Si vous regardez dans EmacsWiki sous codes de commande W32SendSys , vous constaterez que 61488 est agrandir l'image actuelle

Autres conseils

C’est le correctif le plus simple qui a fonctionné pour moi:

(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))

Dudes, qu'est-ce qui ne va pas avec

emacs -mm ?

Cela commence à maximiser Emacs. Mettez-le dans votre raccourci, cela dépend vraiment du gestionnaire de fenêtres que vous utilisez; Je l’alias moi-même dans mon . * Shrc .

Sur une note différente mais pas sans rapport, je lance en fait Emacs de telle sorte que s'il est déjà démarré, le fichier sélectionné est simplement ouvert en tant que nouveau tampon dans ma session Emacs existante:

if [ "$(pidof emacs)" ] ; then
    emacsclient "$@"
else
    emacs -mm "$@"
fi

C’est ce que j’ai mis dans un ~ / bin / e et je viens de lancer Emacs avec "e". J'ai cliqué avec le bouton droit sur un fichier texte dans le gestionnaire de fichiers, puis sélectionné "Ouvrir avec un autre programme". et entré "e", et maintenant je double-clique sur les fichiers et ils s’ouvrent tous proprement au cours de la même session.

Et tout est peachy et lispy:)

Sur X.org, l’appel système est (puisque vous avez initialement demandé une solution multiplate-forme):

(defun x11-maximize-frame ()
  "Maximize the current frame (to full screen)"
  (interactive)
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))

Tout d'abord, merci pour l'info-bulle concernant le bogue avec (tool-bar-mode -1); m'a sauvé beaucoup de peine! Je préfère conserver tout le contenu du fichier .emacs (aucun mod de registre pour moi). Par conséquent, si vous activez la barre d’outils avant de la maximiser, puis de la désactiver à nouveau, vous pourrez agrandir au mieux:

(defun maximize-current-frame () "Resizes the current frame to fill the screen"
    (interactive)
    ;; There is a bug in tool-bar-mode that prevents it from being
    ;; maximized, so turn it on before maximizing.
    ;; See http://stackoverflow.com/questions/815239/how-to-maximize-emacs-on-windows-at-startup)
    (tool-bar-mode 1)
    (w32-send-sys-command 61488)
    (tool-bar-mode -1)
)

Cela fonctionne de manière fiable sur Emacs 24.5.1 (i686-pc-mingw32) :

(add-to-list 'initial-frame-alist '(fullscreen . maximized))

Un autre moyen de résoudre ce problème est de mettre le délai entre

.
(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(scroll-bar-mode 1)

et les fonctions set-frame- *. Par exemple:

 (tool-bar-mode -1)
 (when window-system
  (run-at-time (format "%d sec" 1) nil '(lambda () (set-frame-position (selected-frame) 1 1)))
  (run-at-time (format "%d sec" 2) nil '(lambda () (set-frame-width (selected-frame) 150 t)))
  (run-at-time (format "%d sec" 3) nil '(lambda () (set-frame-height (selected-frame) 60 t)))
  )

Il est également essentiel de mettre un délai entre les fonctions set-frame- *!

Hé - belle fonction! Merci d'avoir posté

Je pense que cela peut ne pas fonctionner pour vous car vous avez un code qui ressemble à la suivant quelque part dans votre fichier init. La liste par défaut est en cours d'application après la création du cadre. J'ai enlevé les éléments de taille et de position et tu fonctionnes fonctionne très bien au démarrage d’emacs.

   (setq default-frame-alist
     (list
      (cons 'left                 350)
      (cons 'top                  0)
      (cons 'width                80)
      (cons 'height               45)
     ......

Si vous voulez vraiment utiliser Emacs en plein écran sans fenêtre chrome (barre de titre et bouton max / min / close), essayez le mode ci-dessous. Cela a fonctionné pour moi avec Emacs 23.3.1 sur XP SP3.

http://www.martyn.se/code/emacs/darkroom-mode /

tout le monde. emacs 23.3.1, le code de coup est invalide. car (menu-bar-mode -1) peut causer des fenêtres non plein écran aussi.

(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))

Je recherche le wiki Eamcs, je trouve une méthode utilisable.

http://www.emacswiki.org/emacs/FullScreen#toc3

MS Windows

Si vous utilisez MS Windows et souhaitez utiliser le «plein écran», c’est-à-dire vous débarrasser de la barre de titre supérieure, voir w32-fullscreen sur le site pour le mode chambre noire

.

Vous pouvez également utiliser un correctif qui rend le paramètre de cadre plein écran vraiment plein écran sous Windows.

Pour obtenir une fenêtre agrandie, vous pouvez utiliser: (w32-send-sys-command # xf030)

Attention! Si vous voulez que les démarrages emacs soient maximisés, vous devez mettre ce code dans votre fichier .emacs:

(defun jbr-init ()
  "Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used.  The value
0xF030 is the command for maximizing a window."
  (interactive)
  (w32-send-sys-command #xf030)
  (ecb-redraw-layout)
  (calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)

J'ai rencontré une commande qui semble fonctionner (toggle-frame-maximized) , qui fonctionne à la fois sous Linux & amp; Windows.

Je viens de mettre cela près de la fin de mon fichier d'initialisation après avoir tout configuré, en partant du principe que d'ici la fin de l'installation, tout ne sera pas optimisé, et le tour est joué, cela fonctionne.

(defun resize-frame ()
"Set size"
(interactive)
(set-frame-width (selected-frame) 110)
(set-frame-height (selected-frame) 33)
(set-frame-position (selected-frame) 0 1))

est la dernière fonction appelée dans mes fichiers .emacs. Elle définit la hauteur et la largeur de l'écran. Elle fonctionne aussi bien sur emacs 22 que sur emacs 23 sous debian et mac os x. définissez les valeurs de hauteur et de largeur en fonction de votre écran.

Pour désactiver la barre d'outils, ajoutez la ligne

(tool-bar-mode nil)

dans votre fichier de personnalisation (généralement .emacs dans votre répertoire racine).

L'extrait suivant de emacswiki a bien fonctionné pour moi: (ajoutez-le à votre fichier de configuration de démarrage)

(defun jbr-init ()
"Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used.  The value
0xF030 is the command for maximizing a window."
  (interactive)
  (w32-send-sys-command #xf030)
  (ecb-redraw-layout)
  (calendar)
  )
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top