2012-04-23 2 views
9

Ho bisogno di un comando da eseguire ogni volta che viene creato un nuovo frame in Emacs. Finora ho utilizzato after-make-frame-functions, ma questo hook viene chiamato solo sui frame creati da make-frame. In realtà ho bisogno di qualcosa che viene eseguito ogni volta che il comando emacsclient -c crea una nuova finestra.Emacs hook per nuove cornici

C'è un modo per farlo?

risposta

9

Ho qualche difficoltà a capire la tua domanda. Il server Emacs chiama make-frame quando è necessario creare un nuovo frame, quindi after-make-frame-functions dovrebbe funzionare anche in questo caso. Quindi qual è il tuo problema attuale?

È necessario che la funzione venga eseguita anche se il server Emacs non crea creando un nuovo frame? In tal caso, prova ad aggiungere la tua funzione a server-switch-hook e a after-make-frame-functions.

server-switch-hook è una variabile definita in server.el.

Documentazione: esecuzione del gancio quando si passa a un buffer per il server Emacs .

+3

Sì, il primo paragrafo è corretto. Il comando che volevo eseguire funziona perfettamente quando faccio 'make-frame', ma non funzionava quando veniva creato un nuovo frame con' emacsclient -c'. Quindi ho dato per scontato che l'hook non è stato chiamato dal server quando ho eseguito 'emacsclient -c'. Ho fatto un po 'più di prove ora, e si scopre che c'è qualcosa di sbagliato nel mio comando. Scusa per la domanda insensata. – Malabarba

+3

Nessun problema. [Rubber duck debugging] (http://en.wikipedia.org/wiki/Rubber_duck_debugging) in azione! –

+2

Incredibile! Vi presento il concetto di meta rubber duck debugging per proxy, dove qualcuno - ad es. me stesso - trova qualcuno con lo stesso identico problema su SO e scopre che il problema in realtà non esiste. Sono in debito con entrambi. – leoger