Como posso obter o emacs no Windows para autocompletar caminhos em buffers de shell usando “\” em vez de “/”?

6

Estou usando o emacs para trabalhar em linux, windows, osx e está tudo bem, exceto um problema irritante com buffers de shell no Windows.

O preenchimento automático de nomes de arquivos funcionará muito bem (melhor que janelas padrão), mas é completamente inútil, pois gera caminhos com separador de barra para diretórios. Isso com o Windows não funciona, então eu tenho que me forçar a evitar tabulação e digite tudo no prompt de comando ou eu tenho que desistir com o emacs e usar a janela de comando quebrada do Windows (onde por exemplo é difícil até copiar ' n cole razoavelmente por causa dos problemas da linha de divisão).

Existe uma maneira de dizer ao emacs para usar "\" em vez de "/" para completar o nome do caminho para windows?

    
por 6502 17.03.2011 / 12:05

2 respostas

4

Resposta curta: use a variável comint-completion-addsuffix .

Resposta mais longa: pesquisando "janelas de conclusão de shell do emacs" me levou ao link , que diz que a variável comint-completion-addsuffix controla os caracteres de conclusão. Configurá-lo para os contras de \ e SPACE faz o que você deseja. Você pode fazer isso com

  1. M-x customizar-variável RET comint-completion-addsuffix RET
  2. selecione o menu Valor
  3. selecione o par de sufixos
  4. insira \ após o sufixo de diretório:
  5. insira um caractere de espaço após o sufixo Arquivo:
  6. selecione Salvar para sessões futuras (ou Salvar para a sessão atual)

Isso adiciona a linha

'(comint-completion-addsuffix (quote ("\" . " ")))

para o local correto em seu arquivo ~ / .emacs.

(testado com o Emacs 22.3.)

Atualização:

Vejo o que você quer dizer no comentário que, com o Emacs 23.3, a barra invertida principal foi alterada para uma barra. comint-dynamic-complete-filename foi quebrado, então a parte da descrição except that it won't change parts of the filename already entered in the buffer não é mais verdadeira.

Substituir o lisp / comint.el do 23.3 por 22.3 parece funcionar. O mesmo acontece com a substituição das três linhas desse arquivo, iniciando na linha 3062:

     (delete-region filename-beg filename-end)
     (if filedir (insert (comint-quote-filename filedir)))
     (insert (comint-quote-filename (directory-file-name completion)))

com estas linhas (a partir de 22.3):

     (insert (comint-quote-filename
          (substring (directory-file-name completion)
             (length filenondir))))

e fazendo M-x byte-recompile-directory .

    
por 24.03.2011 / 04:50
0

(setq comint-completion-addsuffix (quote ("\" . " "))) no meu ~\.emacs fez o truque para mim.

    
por 21.10.2014 / 13:49