tutorial - ¿Cómo maximizar Emacs en Windows al inicio?
emacs linux (15)
Dudes, ¿qué pasa con
emacs -mm
?
Esto inicia Emacs completamente maximizado. Póngalo en su atajo, realmente depende del administrador de ventana que use; Yo mismo lo alisto en mi . * Shrc .
En una nota diferente pero no sin relación, de hecho inicio Emacs de una manera que si ya se inició, el archivo seleccionado se acaba de abrir como un nuevo búfer en mi sesión de Emacs existente:
if [ "$(pidof emacs)" ] ; then
emacsclient "$@"
else
emacs -mm "$@"
fi
Esto puse un ~ / bin / e y acabo de lanzar Emacs con "e". Hice clic derecho en un archivo de texto en el administrador de archivos, seleccioné "abrir con otro programa" e ingresé "e", y ahora solo hago doble clic en los archivos y todos se abren prolijamente en la misma sesión.
Y todo es color de rosa y lisy :)
Esto me está volviendo loco: simplemente quiero que Emacs maximice a cualquier resolución de pantalla que tenga al inicio. Idealmente, me gusta una solución multiplataforma (Windows y Linux) que funcione con cualquier resolución de pantalla, pero ni siquiera puedo hacer que funcione solo en Windows XP con tamaños incluso codificados.
Esto es lo que intenté:
- Establecer la inicial-frame-alist con la altura / ancho apropiado
- Configurando el default-frame-alist
- (Cosas específicas de Windows) Enviando un mensaje a las ventanas de emacs diciéndole que maximice a través de
(w32-send-sys-command 61488)
Intenté esta función que encontré en alguna parte:
(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))))))
- Intenté los métodos anteriores tanto en el inicio como en el final de mi archivo init para tratar de eliminar la interferencia de otras cosas init.
Desafortunadamente, ninguno de los anteriores funciona !! Para algunas de las anteriores, puedo ver que las ventanas de mi emacs cambian de tamaño correctamente durante una fracción de segundo antes de volver al tamaño predeterminado más pequeño. Y si ejecuto los métodos anteriores después de la inicialización, la ventana de emacs cambia de tamaño correctamente. ¿Qué demonios está pasando aquí?
[ps hay otras preguntas SO sobre esto, pero ninguna de las respuestas funciona]
Actualizar:
Las respuestas me hacen pensar que algo más en mi archivo init está causando el problema. ¡Y de hecho lo es! Después de algunos intentos y errores, encontré al culpable. Si comencé a comentar la siguiente línea, todo funciona perfectamente:
(tool-bar-mode -1)
¿Qué tiene que ver la barra de herramientas con la maximización de ventanas?
Entonces la pregunta ahora es: ¿cómo puedo deshabilitar la barra de herramientas (después de todo, la barra de herramientas de emacs es fea y ocupa una valiosa pantalla de bienes raíces) Y maximizar las ventanas tanto en mi archivo init? ¿Es posiblemente un error que la barra de herramientas interfiera con el tamaño de las ventanas?
Aclaración: (tool-bar-mode -1) desactiva la barra de herramientas, pero esta línea interfiere con la maximización de las ventanas de Emacs. Entonces, si intento poner funciones para maximizar las ventanas y desactivar la barra de herramientas, la parte de maximizar fallará; si la parte de la barra de herramientas está comentada, la parte de maximizar funcionará bien. Ni siquiera importa qué soluciones use (entre las 4 que enumeré).
Solución: (o al menos lo que funciona para mí ahora)
Esto es probablemente un error en Emacs. La solución alternativa es deshabilitar la barra de herramientas a través del Registro, no en .emacs. Guarde lo siguiente como un archivo .reg y ejecute ese archivo en el Explorador de Windows:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER/Software/GNU/Emacs]
"Emacs.Toolbar"="-1"
(Esta solución es una versión funcional de lo que sugirió OtherMichael).
El siguiente fragmento de emacswiki funcionó bien para mí: (agregue a su archivo de configuración de inicio)
(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)
En X.org, la llamada al sistema es (ya que originalmente solicitó una solución multiplataforma):
(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)))
En primer lugar, gracias por la sugerencia sobre el error con (tool-bar-mode -1); me salvó un montón de problemas! Prefiero mantener todo dentro del archivo .emacs (no hay modificaciones de registro para mí), por lo que si enciendes la barra de herramientas antes de maximizar y luego la apagas de nuevo, puedes maximizarla muy bien:
(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://.com/questions/815239/how-to-maximize-emacs-on-windows-at-startup)
(tool-bar-mode 1)
(w32-send-sys-command 61488)
(tool-bar-mode -1)
)
Encontré una respuesta hace un año que explica que tienes que manipular el registro para hacer las cosas bien:
Para iniciar Emacs maximized ponga esta línea al final de su archivo ~ / .emacs:
(w32-send-sys-command 61488)
Si no desea la barra de herramientas de Emacs, puede agregar la línea (tool-bar-mode -1) [NOTE: value is 0 en la página original] a su archivo ~ / .emacs pero Emacs no maximizará al máximo en este caso: el inmueble ocupado por la barra de herramientas se pierde. Debe desactivar la barra de herramientas en el registro para recuperarla:
[HKEY_LOCAL_MACHINE/SOFTWARE/GNU/Emacs/Emacs.Toolbar]
@="0"
Si busca en EmacsWiki bajo los códigos de comando W32SendSys , encontrará que 61488
es maximizar el fotograma actual
Encontré un comando que parece funcionar (toggle-frame-maximized)
, que funciona tanto en Linux como en Windows.
Acabo de poner eso cerca del final de mi archivo init después de configurar todo, asumiendo que para el final de la configuración no se maximizará todo, y listo, funciona.
Esta es la solución más simple que funcionó para mí:
(w32-send-sys-command #xf030)
(add-hook ''window-setup-hook (lambda () (tool-bar-mode -1)))
Esto funciona de manera confiable en Emacs 24.5.1 (i686-pc-mingw32)
:
(add-to-list ''initial-frame-alist ''(fullscreen . maximized))
Hola - ¡buena función! Gracias por publicar
Creo que puede no funcionar para usted porque tiene un código que se ve como el siguiente en algún otro lugar en su archivo init. El marco de referencia predeterminado se aplica después de que se crea el marco. Eliminé los elementos de tamaño y posición y tu función funciona muy bien en el arranque de emacs.
(setq default-frame-alist
(list
(cons ''left 350)
(cons ''top 0)
(cons ''width 80)
(cons ''height 45)
......
Otra forma de resolver ese problema es poner retraso entre
(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(scroll-bar-mode 1)
y set-frame- * funciones. Por ejemplo:
(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)))
)
¡También es esencial poner retraso entre las funciones set-frame- *!
Para deshabilitar la barra de herramientas, agregue la línea
(tool-bar-mode nil)
a su archivo de personalización (generalmente .emacs en su directorio raíz).
Si realmente desea ejecutar Emacs a pantalla completa sin ventana cromada (barra de título y botón max / min / close), intente el modo siguiente. Esto funcionó para mí con Emacs 23.3.1 en XP SP3.
todo el mundo. emacs 23.3.1, el código de soplado no es válido. porque (menu-bar-mode -1) puede causar que windows no tenga pantalla completa también.
(w32-send-sys-command #xf030)
(add-hook ''window-setup-hook (lambda () (tool-bar-mode -1)))
Busco la wiki de Eamcs, encuentro un método utilizable.
http://www.emacswiki.org/emacs/FullScreen#toc3
MS Windows
Si está usando MS Windows, y quiere usar "pantalla completa real", es decir, deshacerse de la barra de título superior y todo, consulte w32-pantalla completa en el sitio para el modo cuarto oscuro
Alternativamente, hay un parche disponible aquí que hace que el parámetro de cuadro completo sea realmente una pantalla completa en Windows.
Para obtener una ventana maximizada puede usar: (w32-send-sys-command # xf030)
¡Atención! Si desea que emacs se inicie al máximo, debe colocar este código en su archivo .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)
El proyecto emacs-full-screen-win32 te ayudará :)
(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))
siguiente es la última función llamada en mis archivos .emacs, establece el alto y el ancho de la pantalla, funciona tanto en emacs 22 como en emacs 23 en debian y mac os x. establece los números de alto y ancho de acuerdo a tu pantalla.