2010-09-03 7 views
11

¿Cómo controlo sistemáticamente el foco de la ventana después de ejecutar emacsclient?emacsclient ventana de enfoque

Actualmente, el enfoque depende de si ya tengo un servidor emacs ejecutándose. Cuando emacsclient invoca un editor alternativo, el foco se desplaza a la nueva ventana de emacs. Cuando emacsclient se conecta a un servidor emacs existente, el foco no se desplaza (es decir, permanece en mi cliente de masilla).

Me gustaría centrarme constantemente en la ventana de emacs, ya que normalmente voy a emacs después de abrir un archivo.

¡Cualquier ayuda sería muy apreciada!

Notas

Información de la versión

emacs: 21.4.1 
emacsclient: 21.4 
client os: Windows XP Service Pack 3 
x server: Exceed 11.0.0.0 

Sección pertinente de mi .bash_profile

# a wrapper is needed to sandwich multiple command line arguments in bash 
# 2>/dev/null hides 
# "emacsclient: can't find socket; have you started the server?" 
emacs_wrapper() { 
    if [ 0 -eq $# ] 
    then 
    emacsclient -n -a emacs ~/notes.txt 2>/dev/null & 
    else 
    emacsclient -n -a emacs $* & 
    fi 
} 
alias x="emacs_wrapper" 

Además, al final de mis .emacs tengo

(server-start) 

Mi solución actual es un script autohotkey simple, que se centra en la primera ventana de Exceed

^+x:: 
If WinExist("ahk_class EXCEEDW:MWCLIENT0") 
    WinActivate 
return 

Como nota al margen, parece que mi redirección a/dev/null confundir la sintaxis de rotulador :(

+0

Esto puede no ayudarle, pero el enfoque parece cambiar a la ventana existente de emacs cuando se usa 23.2.2 y Ubuntu. –

+0

Sospecho que se está complicando con el uso de su X-server en Windows. ¿Has considerado usar emacs para Windows? 23.2 está disponible precompilado: http://ftp.gnu.org/gnu/emacs/windows/ – Chadwick

+0

De hecho tengo instalado emacsw32. Sin embargo, es un trabajo agonizantemente lento a través de las acciones de CIFS :( – vlee

Respuesta

-3

Por alguna razón desconocida, el problema se solucionó. La apertura de archivos ahora consistentemente cambia el enfoque al marco de emacs con el archivo correspondiente. Sinceramente, no estoy seguro de qué cambió el comportamiento, pero estoy contento.

¡Gracias a todos por sus comentarios y sugerencias!

0

¿La opción "--create-frame" para emacsclient funcionaría para usted? Obtendría un nuevo marco para cada archivo que abriera de esta manera, pero al menos estaría enfocado (creo).

+0

¡Gracias por la sugerencia! Sin embargo, el problema se solucionó (ver mi respuesta en 2010-10-12). Como nota al margen, estaría creando una tonelada de marcos si utilicé este enfoque. – vlee

5

¿Qué tal:

emacsclient -e "(select-frame-set-input-focus (selected-frame))" 

funciona para mí en Emacs 23.1

Para unfocus (lower-frame) podría ser útil.

+0

Gracias por la sugerencia. Intenté esta solución, que parecía mostrar el comportamiento correcto. Desafortunadamente, no puedo atribuir crédito definitivamente a esta solución, ya que el problema ya no existe sin esta solución. – vlee

Cuestiones relacionadas