Ich verwende Emacs bei der Arbeit, wo ich mich normalerweise mit zwei verschiedenen Benutzern mit dem System verbinde:
myuser
commonuser
Ersterer ist mein persönlicher Benutzer, während letzterer vom gesamten Team zur Verwaltung einer Anwendung gemeinsam genutzt wird. (Irrelevanter Hinweis: Dies ist eine schreckliche Idee. Es gibt im Allgemeinen bessere, wenn auch etwas weniger offensichtliche Möglichkeiten, Berechtigungen zu verwalten. Vertrauen Sie auf meine Erfahrung.)
Um unglückliche Verwechslungen zu vermeiden, möchte ich für jeden Benutzer ein eigenes Theme definieren und dieses in den jeweiligen Init-Dateien hinterlegen.
Alles andere, was in der Init-Datei definiert ist, muss von beiden gemeinsam genutzt werden.
Einfache Lösung
Ich erstelle eine separate Init-Datei /path/to/init/file/.emacs
und habe .emacs
im Home-Verzeichnis jedes Benutzers die folgende Datei erstellt:
(load-file "/path/to/init/file/.emacs")
(load-theme my-favorite-theme)
Das funktioniert wunderbar. Aber das wäre natürlich zu einfach!
Neue Lösung erforderlich
.emacs
Ich wurde gebeten, die Datei nicht zu ändern commonuser
. Ich werde nicht näher auf die Gründe eingehen, aber Tatsache ist, dass ich eine Problemumgehung finden musste. Hier ist, was ich bisher bekommen habe:
- Habe eine komplette
~myuser/.emacs
Datei geschrieben, die ich unabhängig vom Benutzer laden werde. Habe einen Alias wie
commonuser
folgt definiert:alias emacs='emacs -Q --load ~myuser/.emacs'
Dadurch ignoriert Emacs commonuser
die Init-Datei und lädt myuser
's.
Nun ist meine (einfache) Frage:
Wie kann ich dafür sorgen, dass sich Emacs je nach Benutzer, der es startet, unterschiedlich verhält?
Ich möchte etwas Ähnliches tun:
if [[ $(whoami) == "myuser" ]]; then
(load-theme 'theme1)
if [[ $(whoami) == "commonuser" ]]; then
(load-theme 'theme2)
Antwort1
Emacs hat Variablen, die den aktuellen Hostnamen und Benutzernamen beschreiben. Genau wie Sie es tun würdenum etwas abhängig vom Hostnamen zu tun, Sie haben die Variable user-login-name
(aus den Dokumenten: „Der Name des Benutzers, wenn möglich aus Umgebungsvariablen übernommen.“).
Ich schätze also, dass etwa Folgendes zutreffen würde:
(when (string-equal user-login-name "myuser")
(load-theme 'theme1))
(when (string-equal user-login-name "commonuser")
(load-theme 'theme2))