comment exécuter certains code elisp après le démarrage d'un nouveau cadre de emacsclient?
-
22-09-2019 - |
Question
Mon problème est différent. Je veux écrire un script qui ouvre un nouveau cadre emacs (en mettant l'accent là-dessus) (une façon de le faire est d'exécuter emacsclient -c
), puis exécutez le code suivant elisp dans ce cadre.
(org-remember)
J'ai essayé
emacsclient -c & emacsclient -eval '(org-remember)'
Mais parfois, il ouvre juste un nouveau cadre non focalisé et exécute ensuite le code elisp, et d'autres fois, il ouvre un nouveau cadre axé mais il court le code elisp dans l'ancien cadre.
Certains qui sait ce que org-souvenir ne pourrait me demander pourquoi ne pas faire ceci:
emacsclient -eval '(org-remember)'
mais cela ne met pas l'accent sur l'ancien cadre.
La solution
Ma version de emacsclient ne supporte pas l'argument -c
, en dépit la documentation en faire la publicité .
Je ne sais pas s'il y a une façon de faire plus propre, mais vous pouvez essayer d'utiliser make-frame
et select-frame
, comme ceci:
emacsclient -e '(select-frame (make-frame))' '(org-remember)'
Cela va créer un nouveau cadre et, dans le cas où votre gestionnaire de fenêtre ne sélectionne automatiquement, il se concentre pas accorder, puis exécuter la deuxième commande avec cette nouvelle mise au point ayant cadre.
Autres conseils
Qu'en est-il juste de combiner les deux lignes de commande que vous avez déjà essayé dans un:
emacsclient -c -e '(org-remember)'
Cela fonctionne dans Emacs 23.1.