2010-06-16 6 views
24

Comencé a codificar en un monitor de 30 pulgadas y me pregunto si es posible mover el minibúfer a la parte superior de la pantalla en emacs. las búsquedas de google no aparecen.¿es posible mover el minibúfer de emacs a la parte superior de la pantalla?

Saludos Nimâi Etheridge

+4

Interesante. No estoy seguro si lo usaría (el minibúfer ha estado en la parte inferior de las ventanas para mí desde hace más de 20 años ...), pero pensamiento muy interesante. – dmckee

Respuesta

8

Eche un vistazo a la documentación de los modelos default-minibuffer-frame y initial-frame-alist. Parece que puedes tener un marco separado para tu minibúfer (que puedes colocar en la parte superior de la pantalla) y luego generar marcos sin minibúfer que lo utilicen.

Nótese que en initial-frame-alist afirma que "Si las llamadas de valor para un marco sin un minibúfer, y no se ha creado un marco minibuffer por su cuenta, un marco minibuffer se crea de acuerdo con minibuffer-frame-alist", que suena como exactamente lo sería necesario.

Existen formas de guardar y restaurar configuraciones de marcos, por lo que si esto funcionara probablemente podría volver a crear el diseño automáticamente cuando comience emacs.

Editar:
Ejemplo muy básico/prueba de concepto a continuación para utilizar esta disposición de fotograma. El marco del minibúfer no se puede eliminar hasta que los marcos que lo utilizan hayan sido eliminados. Te toparás con problemas cuando hagas cosas como maximizar el marco del editor, por supuesto, así que seguramente habrá algo de trabajo que hacer para tratar de hacer que este sistema funcione de una manera más fluida.

(setq default-minibuffer-frame 
     (make-frame 
     '((name . "minibuffer") 
     (width . 80) 
     (height . 1) 
     (minibuffer . only) 
     (top . 0) 
     (left . 0) 
     ))) 
(setq new-frame 
     (make-frame 
     '((name . "editor") 
     (width . 80) 
     (height . 30) 
     (minibuffer . nil) 
     (top . 50) 
     (left . 0) 
     ))) 

Naturalmente, también se puede combinar esto con el método de scottfrazer de mover el modeline a la parte superior.

Esto posiblemente se podría manejar en el window-setup-hook?

También debe consultar las bibliotecas incorporadas frame.el y dframe.el. Las funciones como dframe-reposition-frame pueden proporcionar una manera conveniente de mantener el marco del minibúfer 'conectado' a la parte superior del marco de edición activo.

La variable minibuffer-auto-raise también se puede configurar para elevar el marco del minibúfer cada vez que se activa el minibúfer, lo que puede mitigar la necesidad de tenerlo visible el resto del tiempo.

+0

aplausos compañero, lo investigaré esta noche y le dejaré saber si encuentro algo útil – nimms

7

Estoy bastante seguro de que no se puede mover el minibuffer sí mismo, pero se puede ordenar de-ish que la línea modo de estar en la cima:

(setq-default header-line-format mode-line-format) ; Copy mode-line 
(setq-default mode-line-format nil) ; Remove mode-line 

Este anulará cosas como Info que usan la línea de encabezado, pero es probable que esté lo más cerca posible sin piratear la fuente de C.

2

Utilice un marco de minibúfer independiente. Esto muestra cómo:

http://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame

http://www.emacswiki.org/emacs/oneonone.el

De cualquier vistazo a ese código para tener una idea o simplemente utilizarlo directamente. Solo hay que personalizar los ajustes de la posición del marco minibuffer:

  • 1on1-minibuffer-frame-left - Posición del borde izquierdo del marco minibuffer, en píxeles.

  • 1on1-minibuffer-frame-top/bottom - Posición de la parte superior (o inferior) del marco del minibúfer, en píxeles.

Cuestiones relacionadas