# 2

Kai Willadsen
kai.willadsen@gmail.com 2012
Mario Blättermann
mario.blaettermann@gmail.com 2009, 2016
Benjamin Steinwender
b@stbe.at 2014-2015
Christian Kirbach
christian.kirbach@gmail.com 2014, 2016

# Filterung von Text

Beim Vergleichen mehrerer Dateien gibt es Textabschnitte, in denen Unterschiede nicht wirklich von Bedeutung sind. Beispielsweise wollen Sie sich auf Änderungen in Code-Abschnitten konzentrieren, aber Änderungen in Kommentarzeilen außer Acht lassen. Mit Textfiltern können Sie Meld anweisen, bei der Anzeige der Unterschiede zwischen Dateien Text zu ignorieren, der einem Muster entspricht (zum Beispiel einem regulären Ausdruck).

Textfilter wirken sich nicht nur auf Dateivergleiche, sondern auch auf Ordnervergleiche aus. Details hierzu finden Sie in den Hinweisen zur Dateifilterung.

# Hinzufügen und Verwenden von Textfiltern

Textfilter lassen sich im Reiter Textfilter im Dialog Einstellungen ein- oder ausschalten. Meld bietet einige simple Filter, die Sie nützlich finden könnten, aber Sie können auch eigene Filter hinzufügen.

In Meld sind Textfilter reguläre Ausdrücke, die auf den Text der zu vergleichenden Dateien angewendet werden. Jeder passende Text wird während des Vergleichs ignoriert. Sie sehen ihn immer noch in der Vergleichsansicht, aber er wird nicht zum Finden von Unterschieden herangezogen. Textfilter werden der Reihe nach angewendet, daher ist es möglich, dass der erste Filter Text entfernt, der vom zweiten Filter als Treffer angesehen wird usw.

Wenn Sie mit regulären Ausdrücken nicht vertraut sind, sollten Sie sich das Python Regular Expression HOWTO anschauen.

# Richtige Filterung von Text

Es ist leicht, Text falsch zu filtern, und die Filterunterstützung in Meld ist unvollständig. Insbesondere kann ein Textfilter die Zeilenanzahl in einer Datei nicht ändern. Nehmen wir an, der eingebaute Script comment-Filter ist aktiviert, und wir vergleichen die folgenden Dateien:

## Kommentar1.txt

`a b#Kommentar c d`

## Kommentar2.txt

`a b c #Kommentar`

Dann würden die mit `b` beginnenden Zeilen als identisch aufgefasst (der Kommentar wird herausgefiltert), aber die mit `d` beginnende Zeile wird als Unterschied zur Kommentarzeile rechts angezeigt. Das passiert, weil `#comment` rechts entfernt wird, aber die Zeile selbst nicht entfernt werden kann. Meld zeigt die `d`-Zeile als Unterschied zu dem an, was auf der rechten Seite sieht, nämlich einer leeren Zeile.

# Leerzeilen und Filter

Die Option Ignorieren von Änderungen, durch die Leerzeichen hinzugefügt oder entfernt werden im Reiter Textfilter bedarf weiterer Erklärung. Wenn dieser spezielle Filter aktiviert ist, dann wird jede Änderung vollständig ignoriert, die nur aus Leerzeilen besteht. Das kann vorkommen, wenn im Text tatsächlich Leerzeichen geändert wurden, oder wenn Ihr aktiver Textfilter alle anderen Änderungen aus Ihrem Text entfernt und dabei nur Leerzeilen hinterlassen hat.

Sie können mit dieser Option einige der Probleme und Einschränkungen von Textfiltern umgehen, bei denen Filter ganze Zeilen nicht entfernen können.