Como se pode fornecer cor à conclusão da tabulação no tcsh?

1

( Crossposted do StackOverflow.com )

Esta questão e a resposta nos ensina a introduzir cores nos prompts do tcsh.

Esta página da Web explica bem como obter cores em qualquer saída do comando echo :

> echo \e[1\;30mBLACK\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK

A palavra 'BLACK' no exemplo acima é impressa com uma cor de primeiro plano preta (ou escura) (dependendo do esquema geral de cores).

Agora, gostaria de introduzir isso no recurso de preenchimento automático do comando [TAB] de tcsh . Eu tentei:

complete testcmd 'p/*/'echo '"'"'\e[1;30mf834fef\e[0m'"'"''/'

E eu recebo:

> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m

Obviamente, os personagens perdem seu significado especial. Espero que eu não tenha conseguido escapar direito. Mas eu tentei várias outras maneiras. Então, qualquer ajuda é apreciada.

O caso de uso real é que eu tenho uma conclusão de comando que oferece três tipos diferentes de conclusões e gostaria de distinguir visualmente os tipos. Além disso, as alternativas são calculadas por um comando externo. É por isso que eu preciso da conclusão para usar os backticks com um comando externo, como echo . Eu não me importo com os detalhes desse comando. Se você fizer isso funcionar de alguma forma com o comando tcsh complete , provavelmente serei capaz de me adaptar (pensando em perl -pe wrappers e outros).

A razão pela qual eu acredito que isso tem para funcionar de alguma forma é que o próprio tcsh oferece a conclusão de comando colorida se você, por exemplo. escreva ls [TAB] . Isso funciona corretamente na minha configuração. Além disso, você pode usar ls -1F dentro do preenchimento automático e as cores que ls outputs também são canalizadas. Um exemplo seria:

complete testcmd 'p/*/'ls -1F'/'

Atualização: Como o usuário mavin aponta no stackoverflow , a colorização de ls neste exemplo não é de fato canalizada através. As cores de ls são perdidas, mas a conclusão automática pode reaplicar as cores de acordo com a variável LS_COLOURS com base em dicas como as divisões do marcador / e * , conforme adicionadas pelo ls. Isso pode ser verificado ao fazer

complete testcmd 'p/*/'ls --color -1'/'

que não fornece cores e fornece apenas resultados distorcidos. (Literalmente canaliza as seqüências de caracteres de escape)

Estou em tcsh versão 6.13.00

Alguma ideia? Ponteiros?

    
por cfi 11.12.2012 / 09:34

1 resposta

0

Não parece ser possível, do jeito que eu gostaria que funcionasse. No stackoverflow, o usuário mavin forneceu esta resposta que é a mais próxima do meu comportamento procurado.

Se você tiver uma solução melhor sem as desvantagens discutidas nas várias respostas e comentários, adicione sua resposta aqui ou no stackoverflow.

    
por 19.12.2012 / 11:09