Wie kann man in einem Makefile wissen, wenn 'make' von ViM aufgerufen wird?

8

Kurz gesagt, muss ich in einem Makefile wissen, ob make von ViM aufgerufen wird oder nicht. Gibt es eine bestimmte Variable (z. B. ENVIRONMENT oder etwas), die ViM auf einen bestimmten Wert setzen würde?.

Der Grund, warum ich das brauche, ist folgender:

Wenn ich von bash aus angerufen werde, könnte ich für den Benutzer (oder mich selbst) allerhand wundervolle Dinge tun, wie zB Nachrichten darüber, welches Subsystem gebaut wird und Fehler und Warnungen hervorheben.

Das Problem ist jedoch, dass die Fehlermeldungen, wenn sie von ViM aus aufgerufen werden, bereits erfasst werden und die Einführung von \x1b -Befehlen (für Farbe) die Nachrichten für ViM unverständlich macht. Was ich tun möchte, ist im Grunde deaktivieren Färbung, wenn :make in ViM ausgestellt wird.

Auch wenn ich es lieber im Makefile lösen möchte, bin ich offen für andere Lösungen.

    
Shahbaz 04.09.2012, 09:59
quelle

4 Antworten

2

Innerhalb von Vim können Sie Umgebungsvariablen festlegen, die von geöffneten Shells geerbt werden. z.B.

%Vor%

Wenn dies nur :make ist, können Sie 'makeprg' bearbeiten, das bestimmt, was aufgerufen wird:

%Vor%

Wenn Sie sich nur um die Escape-Sequenzen zum Färben kümmern, können Sie $TERM auf etwas setzen, das Farben nicht versteht ( dumb vielleicht?) und wenn die Färbung nicht fest codiert ist (was Leider ist ein großes wenn in vielen Tools), sollte es die Terminal-Einstellung zu folgen und nicht die Escape-Sequenzen drucken.

    
Ingo Karkat 04.09.2012, 10:34
quelle
4

Ich würde entweder das Makefile explizit sagen, dass Sie keine Farbgebung wollen, oder es ausfiltern. Wenn Sie versuchen, innerhalb des Makefiles zu raten, wird es wahrscheinlich zerbrechen, wenn Sie einen anderen Editor oder eine andere Shell verwenden oder Ihre Umgebung optimieren.

Meine Präferenz wäre, nur die nicht druckbaren Zeichen herauszufiltern:

%Vor%

, da dies keine expliziten Problemumgehungen im Makefile erfordert. Der erforderliche Filter selbst ist jedoch nicht trivial: Siehe zum Beispiel diese Frage auf unix.stackexchange.

Alternativ, wie bereits vorgeschlagen, besteht die einfachste Möglichkeit, Ihr Makefile explizit anzugeben, darin, Ihrem Aufruf eine Variable hinzuzufügen:

%Vor%

oder was auch immer ( make sollte der aktuelle Wert von makeprg sein).

.

    
Useless 04.09.2012 10:43
quelle
1

Sie können Ihre vim-Bindung an SOURCE="vim" make ändern, also wird die Variable $$SOURCE in Ihrem Makefile auf "vim" gesetzt.

Bearbeiten: Ich sehe, dass Sie in der Tat keine Bindungen in vim verwenden, Sie können sie mit der folgenden Zeile in Ihrem .vimrc (oder /etc/vimrc ) wie folgt verwenden:

%Vor%

Dies bindet F5 an das, was Sie wollen

    
jolivier 04.09.2012 10:06
quelle
1

Sie können MYVIMRC oder VIMRUNTIME Umgebungsvariablen überprüfen. In meiner GNU / Linux-Distribution ist SHLVL value 1 von bash und 2, wenn make innerhalb von vim aufgerufen wird.

    
Stephane Rouberol 04.09.2012 10:06
quelle

Tags und Links