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 .