Emacs:不同的用戶,不同的主題,相同的初始化文件

Emacs:不同的用戶,不同的主題,相同的初始化文件

我在工作中使用 emacs,通常使用兩個不同的使用者連接到系統:

  • myuser
  • commonuser

前者是我自己的個人用戶,而後者則由整個團隊共享來管理應用程式。(不相關的提示:這是一個糟糕的主意。通常有更好的方法來管理權限,儘管不太明顯。根據我的經驗)。

為了避免不幸的混淆,我想為每個使用者定義一個單獨的主題,並在各自的初始化檔案中定義它。

init 檔案中定義的其他所有內容都必須由兩者共用。

簡單的解決方案

我創建了一個單獨的初始化文件,並在每個用戶的主目錄中/path/to/init/file/.emacs創建了以下文件:.emacs

(load-file "/path/to/init/file/.emacs")
(load-theme my-favorite-theme)

這就像一個魅力。但當然,那太容易了!

需要新的解決方案

我被要求不要修改.emacs.commonuser我不會詳細說明原因,但事實是我必須找到解決方法。這是我到目前為止得到的:

  1. 編寫了一個完整的~myuser/.emacs文件,無論用戶如何,我都會加載該文件。
  2. 定義了一個別名,commonuser如下所示:

    alias emacs='emacs -Q --load ~myuser/.emacs'
    

這將使 emacs 忽略 的commonuserinit 檔案並載入myuser

現在我的(簡單的)問題是:

如何讓 emacs 根據啟動它的使用者而有不同的行為?

我想做類似的事情:

if [[ $(whoami) == "myuser" ]]; then 
      (load-theme 'theme1)
if [[ $(whoami) == "commonuser" ]]; then 
      (load-theme 'theme2)

答案1

Emacs 有描述目前主機名稱和使用者名稱的變數。就像你會做的那樣為了根據主機名稱有條件地執行某些操作,您有變數user-login-name(來自文件:「用戶名,如果可能,從環境變數中取得。」)。

所以,我想這樣的事情會適用:

(when (string-equal user-login-name "myuser")
    (load-theme 'theme1))

(when (string-equal user-login-name "commonuser")
    (load-theme 'theme2))

相關內容