O “~ /” pode ser reencaminhado para apontar para outro lugar?

2

Estou usando o Emacs no Windows XP e sempre que eu digito "~ /" ele substitui isso automaticamente por um diretório, no meu caso o "C: / Documents and Settings // Application Data". Existe alguma maneira que eu possa conseguir isso para apontar para outro diretório como, digamos, meu diretório de projetos na área de trabalho? Toda vez que eu preciso fazer um novo arquivo lá, eu tenho que Cx Cf + o caminho completo, e embora a conclusão da guia seja mais rápida do que normalmente seria, seria legal ter um diretório ligado a algo como "~ / "para facilitar o acesso. Existe alguma maneira que poderia ser feito?

    
por cornjuliox 30.01.2010 / 05:49

3 respostas

5

Tudo o que você precisa fazer é definir a variável ambiental %HOME% .

Isso pode ser feito indo para:
start- > settings- > painel de controle- > system
Clique na guia avançada. Na parte inferior está um botão: " Variáveis Ambientais ".

Crie uma nova variável chamada HOME e coloque o caminho que você deseja lá.

Como a maioria dos programas do Windows não se preocupam com essa variável, é improvável que ela afete qualquer outra coisa para você.



Isso também pode ser feito editando as entradas do registro para o emacs. Aqui estão algumas informações sobre as variáveis de registro: Registro do Windows da Ms .

    
por 30.01.2010 / 08:19
0

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 .

    
por 30.01.2010 / 09:04
-2

~ é um sinônimo muito antigo e bem estabelecido para 'o diretório home do usuário' e essa lógica provavelmente está escondida dentro do emacs e é improvável que mude a menos que você esteja disposto a reconstruí-lo a partir da fonte depois de encontrar o código apropriado mudando isso. Por outro lado, você provavelmente poderia configurar seu atalho para iniciar o emacs para iniciar em seu diretório escolhido, permitindo salvar e carregar arquivos sem especificar um caminho. Provavelmente.

    
por 30.01.2010 / 07:03