Haga un nuevo marco con solo modo-línea

13

Quiero crear un nuevo marco que no contenga más que la línea de modo. Especialmente no es un búfer de archivos.

¿Por qué necesito esto? Uso el reloj del modo org para cronometrar mi trabajo. Org-mode muestra el temporizador para la tarea actual en la que estoy trabajando en la línea de modo, y actualiza el temporizador en tiempo real. Utilizo aplicaciones que no son Emacs, por lo que cuando cambio a ellas (por ejemplo, cuando uso el navegador o terminal) todavía quiero poder ver el temporizador en ejecución. Pensé que podría crear un nuevo marco, pero cuando ahora hago clic en el temporizador en la línea de modo, el archivo .org se abre en el nuevo marco (que ya está redimensionado para mostrar solo la línea de modo) en lugar de volver a saltar a en el primer cuadro

Así es como se ve mi línea de modo (la barra azul): eso es todo lo que quiero en el nuevo marco:

ingrese la descripción de la imagen aquí

(Eventualmente, tendré que descubrir cómo hacer que el nuevo marco aparezca siempre arriba, pero eso está fuera del alcance de esta pregunta)

Yo uso OS X si eso es relevante.

Sridhar Ratnakumar
fuente
1
Solo un aviso, estoy trabajando en algunos elisp y un script de macruby que mostrará la información de la línea del modo org en la barra de menú de OSX. Me está funcionando, pero voy a tratar de terminar bien.
Jordon Biondo
@JordonBiondo - ¡excelente! Su solución puede resultar incluso mejor que lo que estoy haciendo aquí. deseando que llegue. por favor mantenme actualizado.
Sridhar Ratnakumar
Debería retitular y reformular su pregunta, si realmente siente que las respuestas que está diciendo " ¡Excelente! " Para responderla. Porque, por lo que puedo decir, no responden a su solicitud de un marco con " nada más que una línea de modo ", en absoluto (y dudo que alguna respuesta lo haga). IOW, si ha relajado su objetivo desde la formulación original de su solicitud, considere actualizar la pregunta en consecuencia.
Dibujó
Estoy de acuerdo, después de leer, realmente parecía que OP tenía un problema específico, pero estaba pidiendo solo una solución, no la mejor solución.
Jordon Biondo
@Drew - ¿Sugieres alguna edición específica? La solución original de PythonNut responde a mi solicitud original. Tenga en cuenta que dije "Especialmente no un búfer de archivo", y su solución, aunque crea un búfer vacío, no lleva a que aparezcan búferes de archivo en el nuevo marco.
Sridhar Ratnakumar

Respuestas:

7

Ampliar la respuesta de Jorgen Schäfer con la sugerencia de Matthew Piziak produce el siguiente fragmento:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                 (unsplittable . t)
                 (buffer-predicate . (lambda (x) nil))
                 (height . 2)
                 (left-fringe . 0)
                 (right-fringe . 0)
                 (tool-bar-lines . 0)
                 (menu-bar-lines . 0)))
  (set-window-dedicated-p
    (get-buffer-window (current-buffer) t) t))

Por lo que puedo decir, esto bloquea correctamente la ventana a un búfer vacío. Intentar cambiar a un búfer diferente abrirá el búfer en una ventana existente en el marco primario.

PythonNut
fuente
Excelente, he verificado que esto funcione. ¿Alguna forma de hacer que el nuevo marco herede el tamaño de fuente (y el nombre de fuente) del marco principal? Además, ¿se *empty* All L1 (Fundamental)pueden eliminar las partes redundantes específicas del búfer de la línea de modo ? Así es como se ve el mío: i.imgur.com/iOLw57c.png
Sridhar Ratnakumar
@SridharRatnakumar Afortunadamente, quitar la información adicional de la línea de modo es trivial. Modifiqué mi respuesta para incluir eso. No estoy muy seguro de lo que quieres decir con preservar la fuente. ¿No está vacío el búfer?
PythonNut
Me refería a la propiedad de fuente del texto en la línea de modo (no el búfer vacío).
Sridhar Ratnakumar
¡Ah, su código posterior borró la línea de modo del marco principal también! Si esto no es posible, revirtamos ese cambio y aceptaré su respuesta (satisface la pregunta).
Sridhar Ratnakumar
Acabo de notar eso también. Lo he arreglado La fuente de la línea de modo no cambia cuando lo hago, así que no estoy seguro de qué pasa.
PythonNut
5

Esto es lo mejor que se me ocurrió:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                (unsplittable . t)
                (buffer-predicate . (lambda (x) nil))
                (height . 2)
                (left-fringe . 0)
                (right-fringe . 0)
                (tool-bar-lines . 0)
                (menu-bar-lines . 0))))

No veo una forma de deshabilitar al menos una ventana con un búfer allí, pero la que se muestra con este fragmento no está asociada a ningún archivo. El buffer-predicateno impide que el marco de ser elegido para mostrar los (otros) tampones, lo que si puede hacer frente a una línea de vacío adicional, esto debería hacerlo.

Jorgen Schäfer
fuente
No funciona como se esperaba. Los buffers todavía se están activando en el nuevo marco. Aquí hay un gif animado para ilustrar: i.imgur.com/07Q3tcW.gifv
Sridhar Ratnakumar
2
Usar display-buffer-alistpodría ser la solución a esto.
Kaushal Modi
No sé por qué el uso de la organización aquí no se adhiere al buffer-predicate. El uso display-buffer-alistpuede ser una idea, pero no sé cómo usarlo para evitar que se use un marco específico.
Jorgen Schäfer
2
¿Se podría solucionar esto set-window-dedicated-p?
Matthew Piziak
1
El buffer-predicatees, según los datos, sólo se utiliza por la other-bufferfunción, es decir que no impide otras funciones de mostrar cualquier tampón en el marco.
politza
3

Otra solución más para org-clock en osx

Un pequeño cuadro en la barra de estado. Se pone rojo cuando no has registrado.

ilustración para el cuadro rojo, vea la página de github

https://github.com/koddo/org-clock-statusbar-app

koddo
fuente
1
Llego un poco tarde y no respondo la pregunta exacta, pero ofrezco una alternativa que funcionaría para alguien.
koddo
3

Solución para mostrar la información del reloj de organización en la barra de menú de OSX

Aquí hay una solución alternativa al problema que especificó:

Utilizo aplicaciones que no son Emacs, por lo que cuando cambio a ellas (por ejemplo, cuando uso el navegador o terminal) todavía quiero poder ver el temporizador en ejecución.

Puede usar esto para mostrar la información de org-clock en la barra de menús de osx que casi siempre debería poder ver.

https://github.com/jordonbiondo/osx-org-clock-menubar Disponible en MELPA

Tenga en cuenta que esto requiere macruby.

Cómo se ve mientras está conectado.

ingrese la descripción de la imagen aquí

Jordon Biondo
fuente
1
Se puede hacer una implementación simple que no depende de macruby emacsclient -e "(org-clock-get-clocked-time)"y bitbar: getbitbar.com
mankoff
¡Eso es increíble, deberías escribir una solución!
Jordon Biondo