Eu uso o emacs no trabalho, onde costumo me conectar ao sistema com dois usuários diferentes:
myuser
commonuser
O primeiro é meu usuário pessoal, enquanto o último é compartilhado por toda a equipe para gerenciar um aplicativo. (Dica irrelevante: esta é uma ideia terrível. Geralmente existem maneiras melhores, embora um pouco menos óbvias, de gerenciar privilégios. Aprenda com minha experiência).
Para evitar confusões infelizes, quero definir um tema separado para cada usuário e defini-lo em seus respectivos arquivos init.
Todo o resto definido no arquivo init deve ser compartilhado pelos dois.
Solução simples
Eu crio um arquivo init separado /path/to/init/file/.emacs
e criei o seguinte .emacs
arquivo no diretório inicial de cada usuário:
(load-file "/path/to/init/file/.emacs")
(load-theme my-favorite-theme)
Isso funciona perfeitamente. Mas é claro que isso seria muito fácil!
Nova solução necessária
Pediram-me para não modificar o .emacs
arquivo commonuser
. Não vou entrar em detalhes sobre o motivo, mas permanece o fato de que tive que encontrar uma solução alternativa. Aqui está o que consegui até agora:
- Escrevi um
~myuser/.emacs
arquivo completo, que irei carregar independente do usuário. Definiu um alias para
commonuser
assim:alias emacs='emacs -Q --load ~myuser/.emacs'
Isso fará com que o emacs ignore commonuser
o arquivo init e carregue myuser
os.
Agora minha (simples) pergunta é:
Como posso fazer com que o emacs se comporte de maneira diferente de acordo com o usuário que o inicia?
Estou procurando fazer algo semelhante:
if [[ $(whoami) == "myuser" ]]; then
(load-theme 'theme1)
if [[ $(whoami) == "commonuser" ]]; then
(load-theme 'theme2)
Responder1
O Emacs possui variáveis que descrevem o nome do host e o nome de usuário atuais. Assim como você fariapara fazer algo condicionalmente com base no nome do host, você tem a variável user-login-name
(da documentação: "O nome do usuário, retirado das variáveis de ambiente, se possível.").
Então, acho que algo assim se aplicaria:
(when (string-equal user-login-name "myuser")
(load-theme 'theme1))
(when (string-equal user-login-name "commonuser")
(load-theme 'theme2))