[emacs,systemd] démarrage d'emacs daemon personnalisé

Questions et astuces concernant l'installation et la configuration d'archlinux
nscott32
Daikyu
Messages : 61
Inscription : mer. 18 nov. 2015, 19:35

[emacs,systemd] démarrage d'emacs daemon personnalisé

Message par nscott32 »

Bonjour,

je suis encore et toujours (pour ceux qui ont suivi mon post précédant) en train d'essayer d'intégrer au mieux emacs dans arch+i3.
Je démarre déja plusieurs daemon emacs différents en tant que services systemd utilisateurs, j'en suis actuellement à vouloir personnaliser chaque démon indépendemment.
J'ai fait une première tentative en créeant des fichiers elisp que je passe en argument aux démons avec l'option

Code : Tout sélectionner

--eval '(load-file "init-daemon_x.el")'
Cette approce fonctionne mais pas en tout point, malgré

Code : Tout sélectionner

(setq initial-major-mode 'tuareg-mode)
mon scratch buffer est encore en mode elisp au lieu de tuareg.
Après une discussion sur stack overflow il m'a été suggéré que le buffer devait être ouvert avant l'évaluation du code passé en argument au démon, et qu'une solution serait de tester directement à l'initialisation d'emacs quel serveru est lancé. Pour cela il faudrait utiliser une variable d'environnement avec systemd et tester cette dans emacs via

Code : Tout sélectionner

getenv
Le problême c'est que les services echoues au démarrage mais je ne sais pas pourquoi... Mon bureau i3 mets du temps à démarré (+ de 4sec au lieu de 0sec), aucun démon ne tourne après démarrage.
Après cela dès que je souhaite accéder au service avec

Code : Tout sélectionner

systemctl --user
j'obtiens

Code : Tout sélectionner

Failed to connect to bus: No such file or directory
de plus mes raccourcis i3 vers

Code : Tout sélectionner

systemctl poweroff
systemctl reboot
ne fonctionnent plus, je ne peux que les lancer via un terminal.

Voici par exemple le fichier service pour le demon ocaml :

Code : Tout sélectionner

[Unit]
Description=Emacs: the extensible, self-documenting text editor

[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon=ocaml
ExecStop=/usr/bin/emacsclient --server-file=ocaml --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Environment=MY_EMACS_DAEMON=ocaml
Restart=always

[Install]
WantedBy=default.target
Et dans mon fichier .emacs on peut trouver :

Code : Tout sélectionner

(when (string= (getenv "MY_EMACS_DAEMON") "ocaml")
  (load-file "~/.emacs.d/elisp/daemon/daemon-ocaml.el"))
Je rappelle que mon but est de démarrer diffrents démons emacs possédant différentes configurations, ce qui me pose problème étant de changer le mode du par défaut du scratch de chaque démon.

Merci
nscott32
Daikyu
Messages : 61
Inscription : mer. 18 nov. 2015, 19:35

Re: [emacs,systemd] démarrage d'emacs daemon personnalisé

Message par nscott32 »

Apparament le problème vient uniquement de la partie de .emacs :

Code : Tout sélectionner

(when (string= (getenv "MY_EMACS_DAEMON") "ocaml")
  (load-file "~/.emacs.d/elisp/daemon/daemon-ocaml.el"))
Sans cette ligne le service démarre sans problême, j'ai donc tenté

Code : Tout sélectionner

(when (string= (getenv "MY_EMACS_DAEMON") "ocaml")
  (message "hello world"))
qui s'éxécute bien évidemment sans soucis dans le toplevel d'emacs, mais empêche le service de démarré proprement...
Je ne vois vraiment pas quel artifice je pourrais utiliser pour changer le mode du scratch buffer pour chaque démon.
nscott32
Daikyu
Messages : 61
Inscription : mer. 18 nov. 2015, 19:35

Re: [emacs,systemd] démarrage d'emacs daemon personnalisé

Message par nscott32 »

Le problème vient exactement de

Code : Tout sélectionner

(setq initial-major-mode 'tuareg-mode)
qui empêche le démon de démarrer... Cela fonctionne en mode application standart mais bloque malheureusement le démon pour une raison qui m'échappe.
Si quelqu'un a déja rencontré ce problème je suis preneur.

Merci
Répondre