2010-09-03 15 views
11

Come si controlla costantemente lo stato attivo della finestra dopo l'esecuzione di emacsclient?focus finestra emacsclient

Attualmente, la messa a fuoco dipende dalla presenza di un server emacs in esecuzione. Quando emacsclient richiama un editor alternativo, lo stato attivo viene spostato nella nuova finestra di emacs. Quando emacsclient si connette a un server emacs esistente, l'attenzione non viene spostata (cioè rimane sul mio client putty).

Vorrei concentrarmi costantemente sulla finestra di emacs, dato che di solito vado su emacs dopo aver aperto un file.

Qualsiasi aiuto sarebbe molto apprezzato!

Note

Version Info

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

sezione del mio 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" 

Inoltre, alla fine del mio .emacs ho

(server-start) 

mia soluzione attuale è un semplice script AutoHotkey, che si concentra sul mio primo Exceed finestra

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

Come nota a margine, sembra che il mio reindirizzamento a/dev/null confuso la sintassi-evidenziatore :(

+0

Questo potrebbe non essere d'aiuto, ma la messa a fuoco sembra passare alla finestra di emacs esistente quando si utilizza 23.2.2 e Ubuntu. –

+0

Sospetto che sia complicato dall'uso del tuo X-server su Windows. Hai preso in considerazione l'utilizzo di emacs per Windows? 23.2 è disponibile precompilato: http://ftp.gnu.org/gnu/emacs/windows/ – Chadwick

+0

In realtà ho installato emacsw32. Tuttavia, è terribilmente lento lavorare con le condivisioni CIFS :( – vlee

risposta

-3

Per qualche motivo sconosciuto, il problema si è risolto. L'apertura dei file ora modifica costantemente l'attenzione sul frame emacs con il file corrispondente. Sono sinceramente insicuro su cosa abbia cambiato il comportamento, ma sono felice.

Grazie a tutti per i loro commenti e suggerimenti!

0

L'opzione "--create-frame" su emacsclient funzionerà per te? Avresti una nuova cornice per ogni file che hai aperto in questo modo, ma almeno sarebbe focalizzato (credo).

+0

Grazie per il suggerimento! Tuttavia, il problema si è risolto (vedi la mia risposta il 2010-10-12). Come nota a margine, creerei una tonnellata di frame se ho usato questo approccio – vlee

5

ne dite:

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

lavori per me su emacs 23.1

Per unfocus (lower-frame) potrebbe essere utile.

+0

Grazie per il suggerimento! Ho provato questa correzione, che sembrava mostrare il comportamento corretto.Sfortunatamente, non posso attribuire definitivamente credito a questa correzione poiché il problema non esiste più senza questa correzione. – vlee