Emacs:如何根据用户名设置家庭环境
Emacs: how to set home environment dependent on username
我在两台不同的计算机上安装了 emacs,分别是家里的计算机 A 和工作单位的计算机 B。为了同步这两个安装的设置,我已将我的 .emacs.d
文件夹移动到保管箱,并在每台计算机上将此文件夹符号链接到两台计算机上的文件夹 C:/Users/myLogonName/AppData/Roaming/
。
但是myLogonName
在两台电脑上的定义不同,分别是myLogonNameA
和myLogonNameB
。当 emacs 读取以定义家庭环境开始的 init.el
文件时,这给了我一个实际问题:
(setenv "HOME" "C:/Users/myLogonName/AppData/Roaming/")
如果此行中的 myLogonName
设置为 myLogonNameA
,定义将在计算机 A 上运行,但在计算机 B 上不起作用。同样,如果 myLogonName
设置为 myLogonNameB
,该定义将在计算机 B 上运行,但在计算机 A 上不起作用。
我需要一个家庭环境的条件定义,类似于下面的伪代码:
if computer == computerA
(setenv "HOME" "C:/Users/myLogonNameA/AppData/Roaming/")
elseif computer == computerB
(setenv "HOME" "C:/Users/myLogonNameB/AppData/Roaming/")
end
如何对家居环境做出这样的条件定义?
提前感谢您的任何建议。
Emacs 变量 user-login-name
保存您的登录名。
您可以在初始化文件中使用这样的代码来区分不同的用户名:
(setenv "HOME"
(if (string-match-p user-login-name "myLogonName-A")
"C:/Users/myLogonName-A/AppData/Roaming/"
"C:/Users/myLogonName-B/AppData/Roaming/"))
或者如果就这么简单,那么就是这样:
(setenv "HOME" (format "C:/Users/%s/AppData/Roaming/" user-login-name))
我在两台不同的计算机上安装了 emacs,分别是家里的计算机 A 和工作单位的计算机 B。为了同步这两个安装的设置,我已将我的 .emacs.d
文件夹移动到保管箱,并在每台计算机上将此文件夹符号链接到两台计算机上的文件夹 C:/Users/myLogonName/AppData/Roaming/
。
但是myLogonName
在两台电脑上的定义不同,分别是myLogonNameA
和myLogonNameB
。当 emacs 读取以定义家庭环境开始的 init.el
文件时,这给了我一个实际问题:
(setenv "HOME" "C:/Users/myLogonName/AppData/Roaming/")
如果此行中的 myLogonName
设置为 myLogonNameA
,定义将在计算机 A 上运行,但在计算机 B 上不起作用。同样,如果 myLogonName
设置为 myLogonNameB
,该定义将在计算机 B 上运行,但在计算机 A 上不起作用。
我需要一个家庭环境的条件定义,类似于下面的伪代码:
if computer == computerA
(setenv "HOME" "C:/Users/myLogonNameA/AppData/Roaming/")
elseif computer == computerB
(setenv "HOME" "C:/Users/myLogonNameB/AppData/Roaming/")
end
如何对家居环境做出这样的条件定义?
提前感谢您的任何建议。
Emacs 变量 user-login-name
保存您的登录名。
您可以在初始化文件中使用这样的代码来区分不同的用户名:
(setenv "HOME"
(if (string-match-p user-login-name "myLogonName-A")
"C:/Users/myLogonName-A/AppData/Roaming/"
"C:/Users/myLogonName-B/AppData/Roaming/"))
或者如果就这么简单,那么就是这样:
(setenv "HOME" (format "C:/Users/%s/AppData/Roaming/" user-login-name))