O ~
parece ser tratado por expand-file-name
e não menciona nenhuma maneira de alterar como ele é expandido. Mas ele usa a variável de ambiente HOME
. Você poderia especificar um novo valor para HOME
, mas isso poderia confundir outras coisas que usam HOME
como um local para armazenar arquivos ( customize
, etc. que podem querer ler ou gravar em arquivos em HOME
) .
Como experiência, escrevi alguns conselhos para find-file
que temporariamente altera o valor de HOME
. A ideia é minimizar a quantidade de tempo em que o valor alternativo está ativo.
(defvar fake-HOME-value "/var/tmp"
"An alternate value to use for the HOME environment variable
while the 'fake-HOME' around advice is active.")
(defadvice find-file (around fake-HOME)
"Temporarily replace the HOME environment variable with
the value from 'fake-HOME-value'."
(let ((original-HOME-value (getenv "HOME")))
(unwind-protect
(progn
(setenv "HOME" fake-HOME-value)
ad-do-it)
(setenv "HOME" original-HOME-value))))
(defun disable-fake-HOME ()
"Disable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-disable-advice 'find-file 'around 'fake-HOME)
(ad-update 'find-file)))
(defun enable-fake-HOME ()
"Enable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-enable-advice 'find-file 'around 'fake-HOME)
(if (ad-is-active 'find-file)
(ad-update 'find-file)
(ad-activate 'find-file))))
(enable-fake-HOME)
;(disable-fake-HOME)
Coloque em seu .emacs
(ou um .el
file e (load-file "/path/to/your.el")
). Eu não posso testá-lo no Windows, mas a única coisa específica da plataforma é o uso de HOME
, mas acho que o Emacs converte o equivalente do Windows (uma combinação de várias variáveis de ambiente?) Para HOME
.