Emacs peut-il détecter le chemin de son exécutable?

8

Supposons que j'ai deux emac identiques (de la même version) sur mon système. L'un est placé à C:\Program Files\Gnu Emacset l'autre à un endroit différent, par exemple C:\Program Files\New Gnu Emacs. Un Emacs en cours d'exécution peut-il détecter lequel? Par exemple, peut-il donner le chemin de son exécutable (c'est-à-dire le chemin où se trouvent emacs.exe ou emacs.bin)?

Nom
la source

Réponses:

14

En supposant qu'Emacs sache comment il a été démarré, vous pouvez accéder au chemin complet du fichier exécutable en faisant:

(expand-file-name invocation-name invocation-directory)

Dans mon système, par exemple, cela revient "/usr/local/bin/emacs"sur ma session régulière et revient "~/.evm/bin/emacs"sur ma session de test evm. Si vous voulez devenir fantaisiste, vous pouvez également envelopper cela file-truename pour résoudre les liens symboliques.


Les deux variables utilisées ci-dessus, comme décrit par leurs chaînes doc:

  • invocation-name

    Nom du programme utilisé pour exécuter Emacs.
    Tous les noms de répertoire sont omis.

  • invocation-directory

    Le répertoire dans lequel l'exécutable Emacs a été trouvé, pour l'exécuter.
    La valeur est nulle si le nom de ce répertoire n'est pas connu.

Malabarba
la source