Como definir um local diferente para o arquivo dot emacs .emacs no Windows 7?

16

Estou usando um computador com Windows 7 e não tenho acesso de administrador. Portanto, não posso colocar um arquivo emacs de ponto no diretório raiz. Existe uma maneira de especificar um local diferente para o arquivo dot emacs?

Startec
fonte
Se você pode controlar seu próprio local da instalação do Emacs (por exemplo, colocá-lo onde quiser, ou pelo menos ter acesso de gravação à instalação), pode assumir o controle completo usando algo como site-start.elcarregar o seu próprio init.ele não precisa mais a .emacs. Neste exemplo, você não precisa mexer no diretório inicial (a menos que outra pessoa no computador esteja colocando coisas nele que afetarão o que você faz). Em outras palavras, ele pode ficar em branco e você nunca precisa tocá-lo.
lawlist

Respostas:

4

O Emacs tem vários locais para procurar arquivos init, conforme documentado no manual . Se você deseja personalizar o Emacs, você deve começar com um desses arquivos.

Uma abordagem comum é usar o arquivo init.elno seu diretório, em user-emacs-directoryvez de ter um .emacsno diretório HOME.

O user-emacs-directorypadrão é ~/.emacs.d, portanto, ainda é relativo à sua HOME, mas o benefício dessa abordagem é que você pode manter tudo relacionado à configuração do Emacs em um único local. Esse diretório pode estar sob controle de versão, com backup, compartilhado em várias máquinas, etc. Você pode usar um link simbólico ( mklinkno Windows) para manter os arquivos em outro local.

Por exemplo, é bastante comum ver as pessoas manterem a configuração do Emacs no Github. Você pode encontrar muitos exemplos desta por pesquisar Github para projetos elisp com arquivos init.el .

glucas
fonte
Eu gosto desta solução e gostaria de usá-lo no entanto, ainda não me diga como mudar a minhauser-emacs-directory
Startec
Minha sugestão foi usar links simbólicos, na verdade. Como mostrado nas outras respostas, você precisa colocar algo em um dos locais padrão que o Emacs lê durante o init, mesmo se tudo o que fizer for carregar sua configuração de outro lugar.
glucas
O link manual está quebrado.
corvus_192
17

Em cada instalação do Windows em que eu uso o Emacs, tenho o seguinte código em um .emacsarquivo no local listado:

;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)

Desta forma, eu posso colocar o meu .emacse em .emacs.d/qualquer lugar que eu quiser.

Ryan
fonte
Obrigado, quase exatamente o que eu precisava. Eu deixei o diretório padrão e enviei o HOME, mas, caso contrário, é o que eu precisava para definir!
Grant Bowman
Eu tentei a resposta de Ryan. Mas agora não consigo abrir esse arquivo no emacs da pasta AppData \ Roaming. Por favor, desculpe-me, pois não pude comentar, porque ainda não tenho 50 pontos.
precisa
@SreekumarR Você deve fazer uma nova pergunta, vinculando a esta, em vez de postar uma "Resposta"
Andrew Swann
@SreekumarR Se você tiver uma nova pergunta, faça-o clicando no botão Fazer pergunta . Inclua um link para esta pergunta se ela ajudar a fornecer contexto. - Do comentário
Stefan
5

O seu arquivo .emacs entra no seu HOMEdiretório. No manual do Emacs:

O equivalente do Windows ao HOME é o diretório de dados do aplicativo específico do usuário. A localização real depende da versão do Windows ...

Você pode substituir esse valor padrão de HOME configurando explicitamente a variável de ambiente HOME para apontar para qualquer diretório em seu sistema. HOME pode ser definido no prompt do shell de comando ou na caixa de diálogo "Propriedades" de "Meu computador". HOME também pode ser definido no registro do sistema, consulte Registro do MS-Windows.

Tyler
fonte
11
Sim, eu sei como definir o diretório home no entanto, por razões de controle de versão que eu quero ser capaz de emacs definido para ler a partir de um diretório diferente (para que eu possa ter um diretório específico para emacs)
Startec
3
Observe que esse hack faz com que o Emacs considere outra coisa como o diretório inicial.
precisa saber é
@wasamasa - eu não chamaria isso de "hack". Na minha compilação do Emacs 25, se você não definir "HOME" com uma variável de ambiente, o padrão será o diretório de instalação do Emacs, que está claramente errado. "HOME" deve ser definido como o que o usuário considera seu diretório pessoal, e definir a variável de ambiente é a maneira padrão pretendida de fazer isso. Nos sistemas Unix, isso geralmente já é feito para o usuário durante o processo de login, mas no Windows você precisa fazer isso manualmente.
TED
O objetivo disso é alterar o que você normalmente consideraria seu HOMEdiretório para algo totalmente diferente. Por isso, chamo isso de mudança de hack. Defini-lo com seu valor apropriado é obviamente bom.
Wasamasa 20/09/19
2

Você diz:

Eu sei como definir o diretório home, no entanto, por razões de controle de versão, desejo poder configurar o emacs para ler em um diretório diferente (para que eu possa ter um diretório específico para o emacs) .

Seu arquivo init vai para o seu diretório pessoal, que você pode colocar em qualquer lugar. Aparentemente, você deseja ter um diretório diferente para as coisas que o Emacs carrega. Isso não é problema. Coloque seu arquivo init no diretório inicial e faça com que ele adicione outro diretório ao valor da variável load-pathe, em seguida, exija quaisquer outras bibliotecas do Emacs que você deseja usar. Coloque essas bibliotecas nesse outro diretório.

IOW, seu arquivo init não precisa conter nada além da configuração do diretório em que você mantém as bibliotecas do Emacs que deseja carregar.

Desenhou
fonte
0

Acho que você poderia colocar (setq user-init-file "C:/path/to/.emacs")e outras linhas propostas por @ryan em site-start.el

Seu site também pode ter um arquivo de inicialização do site; isso é chamado site-start.el, se existir. Como default.el, o Emacs encontra esse arquivo pelo caminho de pesquisa padrão das bibliotecas Lisp. O Emacs carrega essa biblioteca antes de carregar seu arquivo init.

Dima Fomin
fonte