Comment obtenir une sortie de construction colorée à partir de Make dans Sublime Text 3?

19

Comment obtenir de la couleur dans la fenêtre de sortie de la compilation ST3?

J'utilise gccfilter pour coloriser ma sortie de build, mais ST3 affiche simplement les séquences d'échappement brutes. Existe-t-il un moyen de le faire traiter? Ou pour supprimer gccfilter et simplement obtenir ST3 pour coloriser la sortie (par exemple, juste grep sur l'avertissement et l'erreur serait bien)?

Yeraze
la source

Réponses:

16

Les versions récentes du système de build Makefile de ST3 (comme décrit dans le fichier Make.sublime-build ) contiennent déjà une définition de syntaxe qui produit une sortie colorisée.

Si vous n'êtes pas satisfait de cela, voici ce que vous pouvez faire comme approche alternative et généralement fonctionnelle si vous avez un système de génération qui produit des couleurs ANSI dans un terminal et que vous souhaitez les afficher dans le panneau de sortie de génération de Sublime Text 3 .

C'est ainsi que je l'ai fait dans mon installation Sublime Text 3 pour RSpec, mais je pense qu'il est parfaitement applicable dans tous les cas avec un outil produisant de la couleur dans une console / TTY classique:

1. Forcez votre système de génération à produire des couleurs même s'il ne sort pas sur un TTY.

Cela dépend du système de construction. Par exemple, pour Ruby et RSpec, vous pouvez créer un .rspecfichier dans votre projet avec le contenu suivant:

--color --tty

Dans votre cas, vous disposez déjà d'un système de génération qui produit une sortie avec des séquences d'échappement de couleur ANSI.

2. Installez le package ANSIescape (SublimeANSI)

Il est recommandé de l'installer via Package Control. Voir le dépôt du package pour les instructions d'installation et de configuration.

3. Créez une nouvelle définition de système de construction dans Sublime Text et configurez-la pour reconnaître les couleurs ANSI

Par exemple, voici le contenu de mon Colorized RSpec.sublime-buildsystème de build:

{
    "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"
}

Les deux dernières options de configuration sont extraites du fichier Lisez-moi de SublimeANSI . Vous pouvez l'appliquer à votre système de build pour Make. Vous pouvez le baser sur la version actuelle du Make.sublime-buildfichier à partir des packages de Sublime Text 3.

4. Générez votre fichier / projet en utilisant le système de génération nouvellement créé.

Utilisez le menu "Construire avec ..." pour choisir le nouveau système de construction. Sur OS X, c'est Cmd + Shift + B. Les builds Cmd + Bsuivants utiliseront ce dernier système de build choisi.

Voici à quoi ça ressemble:

entrez la description de l'image ici

Dimitar
la source
1
Malheureusement, ANSIEscape a une certaine limitation dans l'analyse des codes d'échappement ANSI, donc toutes les sorties n'en bénéficieront pas. Voici quelques limitations que j'ai trouvées: * La définition de l'arrière-plan après le premier plan n'est pas intervertie. * L'utilisation de deux chiffres (comme dans <ESC> [01m) n'est pas analysée correctement * Certains codes utilisés pour nettoyer la ligne (notamment: <ESC> [K) ne sont pas analysés. Cela rend cette méthode pas entièrement appropriée pour - par exemple - GCC
Emilio Garavaglia
5

Il n'y a actuellement aucun moyen de créer les couleurs d'analyse de la console ST3 que j'ai trouvées. Cela devrait être discuté avec l'auteur. J'ai remarqué auparavant que la console a toujours une sortie monochrome. Actuellement, ST3 utilise uniquement les couleurs fournies avec le thème que vous lui avez appliqué.

Le seul moyen de se débarrasser des séquences d'échappement serait de les filtrer avant que la sortie n'atteigne Sublime.

Sournois
la source
1
Hé, je pourrais facilement les filtrer en n'utilisant simplement pas gccfilter .. Je veux juste COULEUR !!
Yeraze
Ouais, j'aurais aimé que ce soit possible. Peut-être le pousser à l'auteur le fera.
Sly