Como posso ajustar o sistema de conclusão do zsh para concluir arquivos "falsos" em algumas circunstâncias?
Mais precisamente, o sistema de arquivos AVFS expõe arquivos como diretórios, criando um "diretório falso" ao lado de cada arquivo. Por padrão, ele replica toda a hierarquia de diretórios sob seu ponto de montagem ~/.avfs
. Além disso, em ~/.avfs
todo arquivo morto, como /tmp/foo.zip
, além do próprio arquivo morto ~/.avfs/tmp/foo.zip
, existe um diretório chamado ~/.avfs/tmp/foo.zip#
que expõe o conteúdo do arquivo morto. No entanto, esse diretório extra não aparece na lista de ~/.avfs/tmp
: ele existe apenas quando solicitado explicitamente. (É semelhante à maneira como alguns montadores automáticos operam.)
mountavfs
cd ~/.avfs/tmp/foo.zip\#
Quando digito um comando como o descrito acima, foo.zip#
não aparece como conclusão abaixo ~/.avfs/tmp/
, pois não existe esse diretório. Como posso dizer ao zsh que sempre que houver um arquivo cujo caminho completo $arc
corresponda a ~/.avfs/**/*.(tgz|zip)
¹, ele deve fingir que existe um diretório chamado ${arc}#
?
(Observe que desejo que a conclusão funcione com todas as chamadas _files
ou _dirs
não, apenas no cd
comando. Prefiro não ter que duplicar o código da _files
função, se possível.)
¹ e todo o restante das extensões
/path/to/foo
é visível como ~/.avfs/path/to/foo
.
avfs
. Se ele apresentasse a #
entrada de diretório padrão para qualquer arquivo que correspondesse às seqüências de caracteres suportadas, ou mesmo a mágica testasse os arquivos em um diretório quanto ao necessário para ter uma #
entrada, a conclusão funcionaria. Eu acho que haveria um impacto no desempenho para algo como find
agora arrastaria arquivos compactados.