Tekst uitfilteren

Bij het vergelijken van verscheidene bestanden zou u gedeelten tekst kunnen hebben waar verschillen niet echt van belang zijn. U wilt bijvoorbeeld focussen op gewijzigde gedeelten code, en wijzigingen in regels met opmerkingen negeren. Met tekstfilters kunt u Meld vertellen om tekst te negeren die overeenkomt met een patroon (d.i. een reguliere expressie) bij het weergeven van verschillen tussen bestanden.

Tekstfilters beïnvloeden niet slechts bestandsvergelijkingen, maar ook mapvergelijkingen. Bekijk de opmerkingen voor bestandsfilters voor meer details.

Tekstfilters toevoegen en gebruiken

U kunt tekstfilters in- of uitschakelen vanaf de tab Tekstfilters in het dialoogvenster Voorkeuren. Meld heeft een aantal eenvoudige filters die u nuttig zou kunnen vinden, maar u kunt ook uw eigen toevoegen.

In Meld zijn tekstfilters reguliere expressies die overeenkomsten zoeken in de tekst van de bestanden die u vergelijkt. Elke tekst die overeenkomt wordt bij het vergelijken genegeerd; u ziet deze tekst nog steeds in de weergave van de vergelijking, maar er wordt geen rekening mee gehouden bij het zoeken naar verschillen. Tekstfilters worden in volgorde toegepast, het is dus mogelijk dat het eerste filter tekst verwijdert die ervoor zorgt dat het tweede filter overeenkomt, enzovoort.

Als u niet bekend bent met reguliere expressies wilt u misschien de Python Regular Expression HOWTO bekijken.

Tekstfilters goed gebruiken

Het is gemakkelijk om de fout in te gaan bij het filteren van tekst en de ondersteuning voor het filteren in Meld is niet volledig. In het bijzonder kan een tekstfilter niet het aantal regels in een bestand wijzigen. Als we bijvoorbeeld het ingebouwde filter Script comment hadden ingeschakeld en de volgende bestanden hadden vergeleken:

comment1.txt

a
b#comment
c
d

comment2.txt

a
b
c
#comment

dan zouden de regels die beginnen met b als identiek worden weergegeven (de opmerking wordt afgebroken), maar de regel d zou als verschillend worden weergegeven met de regel met de opmerking aan de rechterkant. Dat komt omdat #comment wordt verwijderd aan de rechterkant, maar de regel zelf kan niet worden verwijderd; Meld zal de regel d weergeven als zijnde verschillend met wat het ziet als een blanco regel aan de andere kant.

Blanco regels en filters

De voorkeur Wijzigingen negeren die blanco regels invoegen of verwijderen op de tab Tekstfilters heeft een speciale uitleg nodig. Als dit speciale filter is ingeschakeld, dan zal elke wijziging die alleen bestaat uit blanco regels worden genegeerd. Dit zou kunnen voorkomen als er een feitelijke wijziging voor witruimte in de tekst was, maar het zou ook kunnen gebeuren als uw actieve tekstfilters alle andere inhoud uit een wijziging hebben verwijderd, en dus blanco regels achterlaten.

U kunt deze optie gebruiken om rondom enkele problemen en beperkingen te werken die voortkomen uit filters die niet in staat zijn gehele regels te verwijderen, maar het kan ook in en voor zichzelf handig zijn.