Pergunta

Eu estou fazendo completing-read com uma lista de caminhos de sistema de arquivos, por exemplo. ("~/parent/child" "/parent/child").

Eu gostaria de máscara a saída de completing-read/ido-completing-read para que ele iria mostrar apenas child, mas ainda devolver o compelete caminho.

Isso é possível?

Melhores cumprimentos, Rato

Foi útil?

Solução

Resposta:não, não é possível, porque, completando-leitura não manter em conta a semântica das cordas.

Isso é possível, mas com várias chamadas de completar a lista.

A idéia é que essa função é passada uma lista de cadeias de caracteres, e ele ajuda você a escolher uma seqüência de caracteres a partir da lista.

Concluindo-lista não tem nenhum controle sobre o que as cadeias contêm.Ele não se preocupa com a semântica de cadeias de caracteres, como caminhos.Ele vê apenas a lista de seqüências de caracteres.

Assim, para fazer como você quiser, você chamá-lo de uma vez com a lista de arquivos do diretório atual, e se você selecionar um diretório, primeiro você alterar tto que de diretório e, em seguida, chamá-lo mais uma vez com a lista de arquivos do diretório, etc.

Se você deseja manter pwd o mesmo que inicial, em seguida, quando ele retorna , você alterar novamente para o diretório original.

(cd (concat default-directory
            (completing-read "> " (directory-files default-directory ))))

Outras dicas

O pacote uniquify faz algo semelhante ao que você deseja.Quando você tem dois buffers de visitar arquivos com o mesmo nome que ele irá adicionar uma seqüência de caracteres no final, em seguida, para diferenciar os dois.

Por exemplo, se você tem arquivos /etc/foo/bar/a e /mnt/a ele irá chamar os buffers algo como a <bar> e a <mnt>.Em seguida, quando você usa ido para alternar buffers você não tem que selecionar a partir do nome completo, mas você acaba com o direito de buffer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top