Configurer Emacs sur Windows pour démarrer une seule instance et ouvrir des fichiers dans l'instance existante
18
Je suis particulièrement intéressé par l'expérience Windows complète, notamment:
Démarrage automatique d'un serveur s'il n'est pas déjà démarré
Comment appeler emacs pour qu'il utilise le serveur (par exemple à partir de la ligne de commande ou d'outils tiers)
Prise en charge du menu contextuel (par exemple, cliquez avec le bouton droit sur un fichier et autorisez-le à être envoyé à emacs pour consultation et modification)
Et puis lancez simplement emacs en exécutant l' runemacs.exeexécutable fourni avec la build.
Comment appeler emacs pour qu'il utilise le serveur (par exemple à partir de la ligne de commande ou d'outils tiers)
La version Windows d'Emacs est livrée avec un emacsclientw.exeexécutable dans le
bin/répertoire. Utilisez le chemin d' accès complet à cet exécutable comme éditeur de votre choix sur tous les outils tiers que vous devez configurer.
Prise en charge du menu contextuel (par exemple, cliquez avec le bouton droit sur un fichier et autorisez-le à être envoyé à emacs pour consultation et modification)
Faites un clic droit sur un fichier, sélectionnez Open With -> Select Default Program.
Dans la fenêtre qui apparaît, accédez à votre emacsclientw.exeexécutable mentionné ci-dessus et choisissez-le.
Si vous ne voulez pas qu'Emacs soit la valeur par défaut, recommencez les étapes 1 et 2, en choisissant un autre programme par défaut.
emacsclientw.exe sera désormais toujours une option dans le menu contextuel.
Merci - grand point sur le serveur, je ne pensais pas.
cristobalito
En ce qui concerne emacsclient.exe, ne devrait-il pas s'agir d'emacsclientw.exe? De plus, je pensais que vous deviez l'exécuter avec l'indicateur -a pour spécifier un éditeur alternatif si le serveur ne fonctionnait pas.
cristobalito
Afin que le serveur fonctionne correctement avec ma configuration, j'ai également dû ajouter une variable d'environnement EMACS_SERVER_FILEqui pointait vers mon .emacs.d\serverrépertoire.
Ryan
@Ryan J'ai pu faire fonctionner cela sans avoir besoin de la variable d'environnement - juste nécessaire pour m'assurer que le serveur fonctionnait.
cristobalito
Hmm, pour moi, évaluer les (server-running-p)retours :othersur Windows (même après avoir essayé de définir cette EMACS_SERVER_FILEvariable env.
Kaushal Modi
5
Démarrage automatique d'un serveur s'il n'est pas déjà démarré
Je recommande fortement de définir une variable d'environnement pour ALTERNATE_EDITORto runemacs.exe. De cette façon, vous pouvez toujours appeler emacsclient même s'il n'y a pas de serveur. Ajoutez simplement (démarrage du serveur) à votre fichier init. Quand un serveur n'existe pas, emacsclient appelle le ALTERNATE_EDITORqui est emacs dans notre cas. Depuis qu'emace démarre un serveur dans le fichier init, tout nouvel appel à emacsclient sera instantané.
Comment appeler emacs pour qu'il utilise le serveur (par exemple à partir de la ligne de commande ou d'outils tiers)
Utilisez emacsclientw.exe -c -n "your_file"pour ouvrir votre_fichier. L' -cargument crée un nouveau cadre graphique et -nvous permet de fermer le cadre sans perdre l'état du serveur. Vous pouvez même l'appeler sans nom de fichier pour ouvrir le *Scratch*tampon. Fonctionne également à partir d'un raccourci sur le bureau. L'utilisation de emacsclient.exe(notez le w manquant) fera apparaître une invite de commande pendant quelques secondes à chaque appel.
Ajout au menu contextuel
Emacswiki a une belle page sur l'ajout d'Emacs au menu contextuel ici . Il s'agit de modifier le nœud de registre HKEY_CLASSES_ROOT\*pour ajouter une action à ouvrir avec emacs.
Cependant, sachez qu'il existe différentes versions de Cygwin. J'utilise une version plus ancienne (ne sais pas laquelle - difficile à dire, AFAICT). Je ne sais pas si vous aurez des problèmes avec les versions récentes.
Je ne recommande pas d'installer Cygwin, car il peut y avoir des effets secondaires indésirables (comme casser d'autres ports Windows gnu comme emacs, gcc, ...), juste pour avoir quelques outils gnu. Installez plutôt les ports GnuWin32 . Vous pouvez installer l'ensemble du package ou les outils sélectionnés de votre choix.
Seki
@Seki - Oui, Eli Zaretskii dit la même chose que toi. Tout ce que je peux dire, c'est que je n'ai eu aucun problème (et j'ai de sérieux doutes quant à votre affirmation selon laquelle il aurait brisé Emacs ). Mais (a) j'utilise une ancienne version de Cygwin et (b) je n'utilise pas la plupart des utilitaires UNIX / GNU Linux fournis par Cygwin.
attiré le
@drew: peut-être excessif pour parler de "casser" emacs, "provoquer un comportement bizarre" aurait été mieux. Par exemple, Cygwin Make freinera la chaîne d'outils MinGW si vous ne vérifiez pas soigneusement votre chemin pour les outils Cygwin qui ne sont pas pris en compte ou pris en compte par défaut s'il n'en existe pas d'autre. Il ne se limite pas à Make, de nombreux autres outils ne peuvent pas se mélanger et il est parfois subtil de pointer le problème. Donc, en bref, soit vous avez un port natif d'Emacs et il est préférable d'avoir des outils GNU natifs, soit vous pouvez utiliser toute la distribution Cygwin, y compris ses emacs.
Seki
@Seki: Il semble donc que votre point principal est que Cygwin et MingGW ne jouent pas bien ensemble. Cela ne m'étonne pas. (FWIW, je n'ai rien contre l'utilisation de MingGW au lieu de Cygwin. Pour moi, il était simple d'installer Cygwin, et je n'en utilise pas assez pour avoir rencontré des problèmes.)
EMACS_SERVER_FILE
qui pointait vers mon.emacs.d\server
répertoire.(server-running-p)
retours:other
sur Windows (même après avoir essayé de définir cetteEMACS_SERVER_FILE
variable env.Je recommande fortement de définir une variable d'environnement pour
ALTERNATE_EDITOR
torunemacs.exe
. De cette façon, vous pouvez toujours appeler emacsclient même s'il n'y a pas de serveur. Ajoutez simplement (démarrage du serveur) à votre fichier init. Quand un serveur n'existe pas, emacsclient appelle leALTERNATE_EDITOR
qui est emacs dans notre cas. Depuis qu'emace démarre un serveur dans le fichier init, tout nouvel appel à emacsclient sera instantané.Utilisez
emacsclientw.exe -c -n "your_file"
pour ouvrir votre_fichier. L'-c
argument crée un nouveau cadre graphique et-n
vous permet de fermer le cadre sans perdre l'état du serveur. Vous pouvez même l'appeler sans nom de fichier pour ouvrir le*Scratch*
tampon. Fonctionne également à partir d'un raccourci sur le bureau. L'utilisation deemacsclient.exe
(notez le w manquant) fera apparaître une invite de commande pendant quelques secondes à chaque appel.Emacswiki a une belle page sur l'ajout d'Emacs au menu contextuel ici . Il s'agit de modifier le nœud de registre
HKEY_CLASSES_ROOT\*
pour ajouter une action à ouvrir avec emacs.la source
D'autres ont répondu à la partie serveur. Voici ce que je fais pour obtenir des utilitaires de type UNIX / GNU / Linux tels que
grep
etdiff
:cygwin-mount.el
.setup-cygwin.el
.Cependant, sachez qu'il existe différentes versions de Cygwin. J'utilise une version plus ancienne (ne sais pas laquelle - difficile à dire, AFAICT). Je ne sais pas si vous aurez des problèmes avec les versions récentes.
Voir également:
la source