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'
    

commonuser이렇게 하면 emacs가 의 init 파일과 로드 를 무시하게 됩니다 myuser.

이제 내 (간단한) 질문은 다음과 같습니다.

Emacs를 실행하는 사용자에 따라 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))

관련 정보