Yo uso emacs y he escrito un script que es la mitad en bash y la otra mitad en AppleScript para hacer el siguiente (primero escribo el código y, a continuación, el pseudocódigo). Suponemos que una de emacs demonio se está ejecutando.
pseudocódigo:
if (no emacs GUI process is active or a process is active but no window is present)
then
open a new emacs window using emacsclient
and
put that window in foreground
else
open the app Emacs.app (so no new instance is created and we simply put
the focus on the existing emacs window)
código para "switchToEmacs.sh"
#!/bin/bash
openedWindows=$(/usr/bin/osascript ~/emacsWindowsCount.scpt)
if [ $openedWindows -eq 0 ]; then
/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -c -e "(select-frame-set-input-focus (selected-frame))"
else
open -a Emacs
fi
código para "emacsWindowsCount.scpt" (utilizado en el script anterior, he compilado el código con osacompile para el rendimiento)
tell application "System Events"
if exists (process "Emacs") then
else
return 0
end if
tell application "Emacs"
set numberOfWindows to (count windows)
end tell
return numberOfWindows
end tell
Me han asignado switchToEmacs.sh para un acceso directo mediante Alfred 3 y hace lo que espera que haga, pero es lento! No es extremadamente lento, pero el cambio no es inmediato y que tengo que esperar alrededor de 0,3 segundos. Por el contrario si yo tengo una ventana de emacs abierto y de tipo "emacs" en el centro de atención, entonces la transición es inmediata, así que me gustaría quitar que esperas innecesarias.
Como yo odio que el tiempo de espera (me parece muy corto, pero cuando usted necesita para navegar por una gran cantidad de comedero de aplicaciones se vuelve torpe), por ahora estoy haciendo lo siguiente: Me han quitado el emacs demonio, cada vez que me registro en la empiezo a emacs.la aplicación, cuando tengo que cerrar el emacs app que no uso CMD+Q, pero CMD+H, cuando necesito recordar emacs yo simplemente lanzamiento de emacs.aplicación (a través de un Alfred 3 acceso directo), así que conseguir emacs enfoque. Con esta solución, la transición a emacs es inmediata, pero yo preferiría que mi script por dos razones: en primer lugar, con la secuencia de comandos para que yo pueda usar emacs desde la terminal antes de haber lanzado una emacs instancia la apertura de emacs.la aplicación, pero la verdadera razón es que el uso de este método si escribo "emacsclient -t miarchivo" en la terminal y luego cierro el búfer de regresar a la terminal, a continuación, el emacs de windows (el de emacs.app) se obtiene el enfoque, incluso si no he dado a él. Esto es realmente incómodo.
IMPORTANTE EDITAR:
Me di cuenta de que la apertura de una nueva instancia es inmediata, lo que lleva tiempo es abierta-una de Emacs. He intentado reemplazarlo con tell application "Emacs" to activate window 1
(compilado), pero sigue siendo lento. Alguna idea?
EDITAR: He logrado el perfecto rendimiento con el uso de esta herramienta gratuita https://sabi.net/nriley/software/#appswitch Ahora todavía hay un poco de retraso, pero es debido a que el resto del código.