Como faço para quebrar a lista de conclusão do zsh com uma linha fixa de texto antes e depois?

4

Especificamente, gostaria de organizar todas as listas de conclusão (sob o contexto: completion: *) precedidas e seguidas por uma string fixa (digamos "ABC" no momento) em sua própria linha.

Eu tentei uma variedade de abordagens e consegui obter a linha anterior, mas não a seguinte. As melhores abordagens são

  1. Use o comppostfunc da matriz em _main_complete. Incluindo uma função que usa _message -r para imprimir a linha. Mas comppostfun é executado no final de _main_complete mas aparentemente antes da lista ser criada, dando a string no início e não no final.

  2. Crie novos completadores - um clone de _complete que retorna 1 e um complemento que apenas faz _mensagem. A ideia é que o completador da mensagem vem por último. Isso funciona até um ponto, mas novamente a string vem no início da lista de conclusão.

  3. Adapte 1 ou 2 jogando com o estilo de ordem de tag para colocar mensagens no final. Isso não funciona.

  4. Crie uma variante do completer _completo que execute sua ação normal (_normal em um caso) e termine com uma _mensagem. Novamente, isso faz as duas coisas, mas sempre coloca a mensagem em primeiro lugar. A reprodução com a ordem de tags não altera isso.

Sinto que estou perdendo alguma coisa. Por exemplo, existe uma maneira de especificar um estilo complementar no qual a saída de vários completadores é concatenada? Por que não fazer várias ações dentro de um completer produz a lista de conclusão em ordem? Como obter o estilo de ordem de tag para colocar a saída _mensagem no final?

    
por cg1356 23.12.2016 / 04:57

0 respostas