_path_files e compadd ignore-files parameter

4

Qual é o formato da opção -F de _path_files e compadd ?

Estou passando vários diretórios para _path_files :

_path_files -W "($base_directories)" -/

Mas algumas dessas árvores de diretórios não quero concluir para este comando específico.

A documentação que eu posso encontrar para _path_files diz que aceita uma opção -F - assim como compadd , mas não consigo encontrar o formato para inseri-las.

Brincar por aí também não tem sido muito proveitoso.

Eu tentei, por exemplo,

_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
    
por Michael Deardeuff 05.06.2011 / 05:06

1 resposta

2

Isso parece correto se você quiser ignorar shared na raiz da árvore de diretórios, ou seja, se você estiver ignorando um dos $base_directories . Mas se você quisesse ignorar shared em algum lugar mais profundo na hierarquia, você precisa de -F "(shared **shared)" . Você também pode colocar os padrões em uma matriz, o que reduzirá as dores de citação.

local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored

Há exemplos na distribuição padrão em _cvs e _darcs .

Se isso não ajudar, tente investigar o que está acontecendo adicionando set -x e set +x em torno do código problemático ou setopt local_options xtrace (também conhecido como set -x e altere as opções apenas pela duração da função atual) .

    
por 05.06.2011 / 19:24