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 ~/.avfstodo 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 $arccorresponda 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 _filesou _dirsnão, apenas no cdcomando. Prefiro não ter que duplicar o código da _filesfunçã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 findagora arrastaria arquivos compactados.