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))

관련 정보