Como obter saída de compilação colorida da Make no sublime texto 3?

19

Como você pode obter cores na janela de saída do build ST3?

Estou usando o gccfilter para colorir minha saída de construção, mas o ST3 apenas exibe as seqüências de escape brutas. Existe alguma maneira de processá-los? Ou para remover o gccfilter e obter ST3 para colorir a saída (por exemplo, apenas grep no aviso e erro seria bom)?

Yeraze
fonte

Respostas:

16

As versões recentes do sistema de compilação Makefile do ST3 (conforme descrito no arquivo Make.sublime-build ) já contêm uma definição de sintaxe que produz saída colorida.

Se você não estiver satisfeito com isso, veja o que você pode fazer como uma abordagem alternativa e geralmente funcional, se você possui um sistema de compilação que produz cores ANSI em um terminal e deseja que elas sejam exibidas no painel de saída da compilação do Sublime Text 3 .

Foi assim que fiz na instalação do Sublime Text 3 para RSpec, mas acho que é perfeitamente aplicável em qualquer caso, com uma ferramenta que produz cores em um console / TTY comum:

1. Force o seu sistema de compilação a produzir cores, mesmo que não esteja produzindo para um TTY.

Isso depende do sistema de compilação. Por exemplo, para Ruby e RSpec, você pode criar um .rspecarquivo em seu projeto com o seguinte conteúdo:

--color --tty

No seu caso, você já possui um sistema de construção que produz saída com seqüências de escape de cores ANSI.

2. Instale o pacote ANSIescape (SublimeANSI)

É recomendável instalá-lo via Package Control. Consulte o repositório do pacote para obter instruções de instalação e configuração.

3. Crie uma nova definição de sistema de compilação no Sublime Text e configure-a para reconhecer cores ANSI

Por exemplo, aqui está o conteúdo do meu Colorized RSpec.sublime-buildsistema de construção:

{
    "cmd": ["rspec", "-I ${file_path}", "$file"],
    "file_regex": "# ([A-Za-z:0-9_./ ]+rb):([0-9]+)",
    "working_dir": "${project_path:${folder:${file_path}}}",
    "selector": "source.ruby.rspec",
    // Recognize ANSI colors in the output
    "target": "ansi_color_build",
    "syntax": "Packages/ANSIescape/ANSI.tmLanguage"
}

As duas últimas opções de configuração são extraídas do leia-me do SublimeANSI . Você pode aplicar isso ao seu sistema de compilação para Make. Você pode basear na versão atual do Make.sublime-buildarquivo nos pacotes do Sublime Text 3.

4. Crie seu arquivo / projeto usando o sistema de criação recém-criado.

Use o menu "Compilar com ..." para escolher o novo sistema de compilação. No OS X, é isso Cmd + Shift + B. As compilações subsequentes com Cmd + Busarão esse último sistema de compilação selecionado.

Veja como fica:

insira a descrição da imagem aqui

Dimitar
fonte
1
Infelizmente, o ANSIEscape tem algumas limitações na análise dos códigos de escape ANSI, portanto, nem toda a saída será beneficiada. Aqui estão algumas limitações que eu encontrei: * Definir o plano de fundo após o forground não ser interferido. * O uso de dois dígitos (como em <ESC> [01m) não é analisado corretamente * Alguns códigos usados ​​para limpar a linha (principalmente: <ESC> [K) não são analisados. Isso faz com que esse método não seja totalmente adequado para - por exemplo - GCC
Emilio Garavaglia 9/17
5

Atualmente, não há como fazer o console ST3 analisar as cores que eu encontrei. Isso precisaria ser discutido com o autor. Eu notei antes que o console sempre tem saída monocromática. Atualmente, o ST3 usa apenas as cores fornecidas com o tema que você aplicou a ele.

A única maneira de se livrar das seqüências de escape seria filtrá-las antes que a saída atinja Sublime.

Sly
fonte
1
Heh, eu poderia filtrá-los facilmente simplesmente não usando o gccfilter .. Eu só quero COLOR !!
Yeraze
Sim, eu gostaria que fosse possível. Talvez enviá-lo ao autor o faça.
Sly