Domanda

Per sapere come valutare automaticamente determinato codice lisp ogni volta avviare un emacsclient, fare clic qui.

Il mio problema è diverso.Voglio scrivere uno script che apra un nuovo frame emacs (con focus su di esso) (un modo per farlo è eseguire emacsclient -c) e quindi eseguire il seguente codice elisp in quel frame.

(org-remember)

ho provato

emacsclient -c & emacsclient -eval '(org-remember)'

Ma a volte apre semplicemente un nuovo frame non focalizzato e quindi esegue il codice elisp, mentre altre volte apre un nuovo frame focalizzato ma esegue il codice elisp nel vecchio frame.

Qualcuno che sa cosa fa org-remember potrebbe chiedermi perché non farlo semplicemente:

emacsclient -eval '(org-remember)'

ma ciò non porta l'attenzione sul vecchio telaio.

È stato utile?

Soluzione

La mia versione di emacsclient non supporta il -c argomento, nonostante la documentazione che lo pubblicizza.

Non sono sicuro che esista un modo più pulito per farlo, ma potresti provare a usarlo make-frame E select-frame, così:

emacsclient -e '(select-frame (make-frame))' '(org-remember)'

Ciò creerà un nuovo frame e, nel caso in cui il tuo window manager non lo selezioni automaticamente, gli garantirai il focus, quindi eseguirai il secondo comando con quel nuovo frame che ha il focus.

Altri suggerimenti

Che ne dici di combinare semplicemente le due righe di comando che hai già provato in una sola:

emacsclient -c -e '(org-remember)'

Funziona in Emacs 23.1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top