Incredibile, un segnale per aumentare il client quando il focus è stato ricevuto


13

Ho i miei Emacs in esecuzione su un tag workercon server-startlanciato. Ho un file manager aperto da qualche altra parte (ad esempio un altro monitor) e quando apro un file di testo con emacsclientesso si apre correttamente in emacs ma non passa a esso e non lo solleva.

Quello che sto cercando è un segnale specifico per il client in rc.lua. Qualcosa di simile a:

client.add_signal("focus", function(c) c:raise() end)

Voglio che sia specifico solo per Emacs. E passa al workertag contemporaneamente. In alternativa, posso farlo dal callback della regola di Emacs?

Qualche idea? :)


1
Nessuno l'ha mai visto?
platforma,

Risposte:


0

Volevo la stessa cosa e la tua idea di un callback di Emacs è ciò che alla fine ha funzionato. Non l'ho testato su fantastico, ma sto usando dwm, e suppongo che siano abbastanza simili per farlo funzionare.

Questa è la funzione di callback in emacs:

(defun raiseme ()
  (x-send-client-message
   nil                ; DISPLAY - nil is selected frame
   0                  ; DEST - 0 is root window of display
   nil                ; FROM - nil is selected frame
   "_NET_ACTIVE_WINDOW"    ; MESSAGE-TYPE - name of an Atom as a string
   32                 ; FORMAT  - size of the values in bits
   '(1 "_NET_WM_USER_TIME" 0) ; VALUES
   )
  )

Esistono diversi modi per richiamare il callback. Per semplicità e flessibilità, ho optato per un alias di shell che invoca il callback e quindi il normale emacsclient:

$ alias edi
alias edi='emacsclient -e "(raiseme)"; emacsclient -n'

Spero che sia ancora utile;)

Per ulteriori riferimenti sul tipo di messaggio e i valori, vedere Suggerimenti per Window Manager .

Per quanto riguarda la straordinaria gestione di questo messaggio, sembra che questo evento sia gestito. Il codice sorgente è qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.