frames – ¿Puede activar / (traer al frente) emacs usando elisp nativo? (por ejemplo, cuando se trabaja en otro programa)

Pregunta:

Quiero forzar la activación de emacs, que me compren para frond y 'robar' el foco en determinadas circunstancias. Por ejemplo, cuando termino un org-Pomodoro o durante un recordatorio de cita importante.

Ahora, estoy buscando una forma 'nativa' de hacerlo, solo para reducir las dependencias externas. (solo Linux está bien para mí, sería mejor multiplataforma).

¿Es esto técnicamente posible desde dentro de emacs?

[editar] Solución:

Si usa la GUI, esto funciona bien:

(x-focus-frame nil)

[Por razones históricas …] he intentado:

Visibilidad del marco (no funciona)

(make-frame-visible)

Y también:

(make-frame-invisible)
(make-frame-visible)

Pero estos parecen funcionar solo si Emacs ya está activado.

Levantamiento de marco (no funciona)

Bajar el marco parece ocultar emacs.

(lower-frame)

Pero levantar el marco de un temporizador no lo hace. Es decir, no pasa nada.

(raise-frame)

Parece que falta un 'active-emacs' antes de subirlo.

[NOTA sobre solución externa]

Actualmente, como (¿solución alternativa?) Utilizo un poco de elisp:

(call-process "activateEmacs")

Y el script de bash respectivo: (es posible que primero deba instalar xdotool en su sistema)

#!/bin/sh 
sleep 0.5
xdotool search --onlyvisible --class emacs windowactivate

Respuesta:

Si está utilizando un sistema de ventanas, es posible que pueda utilizar x-focus-frame .

Nota:

  • x-focus-frame funciona tanto para Windows como para Linux
  • antes de Emacs 23.1, use w32-focus-frame en Windows.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım