# Het handboek van &kdiff3;

## Inleiding

### Alweer een front-end voor diff?

Er bestaan diverse grafische hulpmiddelen voor diff. Waarom &kdiff3; gebruiken? Laat me uitleggen waarom ik het geschreven heb.

&kdiff3; begon omdat ik een moeilijke samenvoegoperatie moest doen. Samenvoegen is nodig als diverse mensen aan dezelfde bestanden in een project werken. Een samenvoeging kan enigszins geautomatiseerd worden, als het samenvoeghulpmiddel daartoe niet alleen de nieuwe, gewijzigde bestanden heeft ("takken") maar ook het originele bestand ("basis"). Het samenvoeghulpmiddel kiest automatisch een verandering die alleen in één tak is gedaan. Als diverse mensen dezelfde regels veranderen, detecteert het samenvoeghulpmiddel een conflict dat handmatig opgelost moet worden.

De samenvoeging was moeilijk omdat één van de helpers veel dingen had gewijzigd en de insprong op veel plaatsen had verbeterd. Een andere helper had ook veel tekst in hetzelfde bestand veranderd, hetgeen in diverse samenvoegconflicten resulteerde.

Het hulpmiddel dat ik toen gebruikte toonde alleen de gewijzigde regels, maar niet wat er in die regels was gewijzigd. En er was geen informatie over of alleen de insprong gewijzigd was. Het samenvoegen was een kleine ramp.

Dus dat was het begin. De eerste versie kon verschillen binnen een regel en verschillen in witruimte tonen. Later werden veel andere mogelijkheden toegevoegd om het nut te vergroten.

Als u bijvoorbeeld snel wat tekst wilt vergelijken, kunt u het naar het klembord kopiëren en in een van de vergelijkingsvensters plakken.

Een optie die veel werk vereiste was het vergelijken en samenvoegen van mappen, dat het programma bijna in een bestandsverkenner veranderde.

Ik hoop dat &kdiff3; ook voor u werkt. Veel plezier!

Joachim Eibl (2003)

### Schermafdrukken en mogelijkheden

Deze schermafdruk toont het verschil tussen twee tekstbestanden (met gebruik van een eerdere versie van &kdiff3;):

3-voudig samenvoegen wordt volledig ondersteunt. Dit is nuttig als twee mensen code onafhankelijk wijzigen. Het originele bestand (de basis) wordt gebruikt om &kdiff3; te helpen bij het automatisch selecteren van de goede wijzigingen. In de samenvoeg-editor onder de verschillenvensters kunt u conflicten oplossen, terwijl u de uitvoer ziet die dat oplevert. U kunt zelfs de uitvoer wijzigen. Deze schermafdruk toont het samenvoegen van drie invoerbestanden:

&kdiff3; helpt u ook bij het vergelijken en samenvoegen van complete mappen. Deze schermafdruk toont &kdiff3; gedurende het samenvoegen van een map.

### Meer mogelijkheden

#### Verschillen regel-voor-regel en teken-voor-teken tonen

Door de mogelijkheden van een grafisch kleurenbeeldscherm te gebruiken toont &kdiff3; u precies wat het verschil is. U zult dit prettig vinden als u veel code moet doornemen.

#### Verschillen in witruimte in één oogopslag zien

Spaties en tabs die verschillen worden getoond. Als regels alleen in de hoeveelheid witruimte verschillen kunt u dit in één oogopslag zien in de overzichtskolom aan de linkerkant. (Geen zorgen meer als mensen de insprong veranderen.)

#### Drievoudig verschil

Drie bestanden analyseren en zien waar ze verschillen.

De vensters links/midden/rechts heten A/B/C en zijn respectievelijk blauw/groen/magenta gekleurd.

Als één bestand hetzelfde is en één bestand verschilt op een regel geeft de kleur aan welk bestand verschilt. De rode kleur geeft aan dat beide andere bestanden verschillen.

#### Comfortabel samenvoegen van twee of meer invoerbestanden

U kunt &kdiff3; gebruiken om twee of drie invoerbestanden samen te voegen en het samenvoegen zo veel mogelijk automatisch te laten verlopen. Het resultaat wordt getoond in een bewerkbaar venster waarin de meeste conflicten met een enkele muisklik opgelost kunnen worden: kies respectievelijk de knoppen ... in de vensters A/B/C om de bron te kiezen die gebruikt moet worden. U kunt hier ook meer dan één bron kiezen. Aangezien dit uitvoervenster een editor is, kunnen ook conflicten die verdere correctie vereisen hier uitgevoerd worden zonder een extra hulpmiddel.

#### En...

- Snelle navigatie via knoppen.

- Een muisklik in een samenvattingskolom synchroniseert alle vensters om dezelfde positie te laten zien.

- Selecteer en kopieer vanuit elk venster en plak het in het samengevoegde resultaatvenster.

- Een overzichtskolom die toont waar de wijzigingen en conflicten zijn.

- De kleuren zijn aan te passen aan uw specifieke voorkeuren.

- Aanpasbare tabgrootte.

- Een optie om spaties in plaats van tabs in te voegen.

- Bestanden comfortabel openen via een dialoogvenster of bestanden opgeven op de opdrachtregel.

- Zoek naar tekenreeksen in alle tekstvensters met menu-items Bewerken Zoeken (&Ctrl;F) en Bewerken Volgende zoeken (F3).

- De regelnummers voor elke regel tonen.

- Het klembord plakken of tekst in een verschil-invoervenster slepen.

- Netwerktransparantie via KIO.

- Kan gebruikt worden als verschillenviewer uit &kdevelop; 3.

- Regelafbreking voor lange regels.

- Ondersteuning voor Unicode, UTF-8 en andere coderingen.

- Ondersteuning voor talen die rechts-naar-links schrijven.

- ...

## Vergelijken en samenvoegen van bestanden

### Opdrachtregel-opties

#### 2 bestanden vergelijken:

    kdiff3 bestand1 bestand2

#### 2 bestanden samenvoegen:

    kdiff3 bestand1 bestand2 -m
       kdiff3 bestand1 bestand2 -o uitvoerbestand

#### 3 bestanden vergelijken:

    kdiff3 bestand1 bestand2 bestand3

#### 3 bestanden samenvoegen:

    kdiff3 bestand1 bestand2 bestand3 -m
       kdiff3 bestand1 bestand2 bestand3 -o uitvoerbestand

Merk op dat `bestand1` als basisbestand voor `bestand2` en `bestand3` gebruikt zal worden.

#### Speciaal geval: bestanden met dezelfde naam

Als alle bestanden dezelfde naam hebben maar zich in verschillende mappen bevinden, kunt u typewerk besparen door de bestandsnaam alleen voor het eerste bestand op te geven, ⪚:

    kdiff3 map1/bestandsnaam map2 map3

#### Opdrachtregel voor het vergelijken of samenvoegen van mappen:

Dit lijkt er erg op, maar gaat nu over mappen.

    kdiff3 map1 map2
       kdiff3 map1 map2 -o doelmap
       kdiff3 map1 map2 map3
       kdiff3 map1 map2 map3 -o doelmap

Voor het vergelijken en samenvoegen van mappen kunt u hier verder lezen.

#### Overige opdrachtregel-opties

Voor meer informatie over opdrachtregel-opties gebruikt u:

    kdiff3 --help

Voorbeeld uitvoer:

    Opties:
      -m, --merge               De invoer samenvoegen.
      -b, --base bestand        Expliciet basisbestand. Voor compatibiliteit met bepaalde hulpmiddelen.
      -o, --output bestand      Uitvoerbestand. Impliceert -m. Bijv: -o nieuwbestand.txt
      --out bestand             Uitvoerbestand. Voor compatibiliteit met bepaalde programma's.)
      --noauto                  Negeer --auto en toon altijd GUI.
      --auto                    Geen GUI als alle conflicten automatisch te doen zijn. (Vereist -o)
      --L1 alias1               Zichtbare naamvervanging voor invoerbestand1 (basis).
      --L2 alias2               Zichtbare naamvervanging voor invoerbestand 2.
      --L3 alias3               Zichtbare naamvervanging voor invoerbestand 3.
      -L, --fname alias         Alternatieve zichtbare naamvervanging. Eenmaal voor elke invoer opgeven..
      --cs string               Vervang een config instelling. Voor elke instelling er één gebruiken. Bijv.: --cs "AutoAdvance=1"
      --confighelp              Toon een lijst met config instellingen en huidige waarden.
      --config file             Gebruik een ander config-bestand.

De optie `--cs` maakt het mogelijk om een configuratie-waarde aan te passen die anders alleen via de configuratiedialoog veranderd kan worden. Let op: bij het beëindigen van &kdiff3; wordt de aangepaste waarde samen met de andere instellingen opgeslagen. De namen van de beschikbare configuratie-waarden en de waarden daarvan kunt U te weten komen door het gebruik van `--confighelp`.

Via `--config` kunt u een ander config-bestand specificeren. Wanneer u &kdiff3; vaak gebruikt met compleet andere instellingen dan stelt dit u in staat om gemakkelijk tussen hen te wisselen.

#### Opdrachtregel-opties die genegeerd mogen worden

Vele mensen willen &kdiff3; in combinatie met een versiecontrolesysteem gebruiken. Maar wanneer dit versiecontrolesysteem &kdiff3; aanroept door gebruik van parameters op de commandoregel, die &kdiff3; niet herkent, dan eindigt &kdiff3; met een foutmelding. U kunt in de instellingendialoog in het item Integratie commandoregelargumenten opgeven die door &kdiff3; genegeerd moeten worden. Ze zullen in de help voor gebruik verschijnen zoals in dit voorbeeld:

    --foo                     Genegeerd (gebruikergedefinieerd).

Te negeren opdrachtregel-opties:

- Een lijst opties, gescheiden door puntkomma's ';'. Wanneer een van deze opties op de commandoregel verschijnt zal &kdiff3; deze negeren en draaien zonder een fout te geven. (Standaard is het "`u;query;html;abort`").

Wanneer dit niet genoeg is, dan wordt het schrijven van een shell-script aanbevolen die de vertaling van de optie doet.

### Het venster "Openen"

Aangezien veel bestanden geselecteerd moeten kunnen worden, heeft het programma een speciaal dialoogvenster hiervoor:

In dit dialoogvenster kunt u de bestandsnamen met de hand wijzigen, een bestand via het bladerprogramma kiezen via knop Bestand...) of recente bestanden via de afrolmenu's kiezen. Als u het dialoogvenster opnieuw opent, blijven de huidige bestandsnamen staan. Het derde invoerbestand is niet verplicht. Als het item bij C leeg blijft, wordt slechts een verschillenanalyse op twee bestanden uitgevoerd.

U kunt ook een map kiezen met Map.... Als voor A een map opgegeven is wordt een vergelijking/samenvoeging op mappen gestart. Als A een bestand opgeeft maar B, C of de uitvoer een map opgeeft, gebruikt &kdiff3; de bestandsnaam van A in de opgegeven mappen.

Als Samenvoegen geselecteerd is, kunt u de regel Uitvoer bewerken. Maar het is niet nodig om direct de uitvoerbestandsnaam op te geven. U kunt hiermee ook wachten tot bij het opslaan.

De knop Configureren... opent de instellingendialoog, waarmee u de opties kunt instellen voordat de analyse gestart wordt.

### Invoer plakken en slepen

Soms wilt u tekstdelen die niet in een eigen bestand staan vergelijken. &kdiff3; biedt u ook de mogelijkheid tekst vanaf het klembord in een vergelijkingsvenster, dat de focus heeft, te plakken. De vergelijkingsanalyse begint dan direct. In het venster "Openen" hoeft u dan geen bestanden op te geven, sluit dit gewoon met de knop Annuleren.

U kunt ook slepen en neerzetten: Sleep een bestand uit een bestandsbeheerder of geselecteerde tekst uit een editor en zet deze neer in een verschillenvenster.

Wat is het idee? Soms bevat een bestand twee gelijksoortige functies, maar bekijken hoe gelijk ze werkelijk zijn is een grote moeite als u eerst twee bestanden moet maken en deze dan moet laden. Nu kunt u eenvoudigweg de relevante secties kopiëren, plakken, en vergelijken.

Momenteel kunt u niets uit &kdiff3; slepen. Alleen slepen naar de vergelijkingsinvoer wordt ondersteund.

Sommige editors interpreteren slepen en neerzetten in een ander programma nog steeds als knippen (in plaats van kopiëren) en plakken. Uw originele gegevens kunnen daardoor verloren gaan.

### Bestanden vergelijken en de informatie in de invoervensters interpreteren

#### Inforegel

Bovenaan elk tekstvenster staat de "inforegel". De inforegels van de invoervensters bevatten een letter A, B of C, de te bewerken bestandsnaam, een knop voor bladeren en het regelnummer van de eerste zichtbare regel in het venster. (Merk op dat venster C optioneel is). Elke inforegel verschijnt in een aparte kleur.

Als u een ander bestand heeft geselecteerd door zoeken of door na het invoeren van de bestandsnaam op de toets &Enter; te drukken, dan zal het nieuwe bestand geladen worden en vergeleken met de al eerder geladen bestanden.

#### Kleuren

De drie invoervensters krijgen de letters A, B en C. A heeft de kleur blauw, B is groen en C is magenta. (Dit zijn de standaard kleuren, u kunt ze wijzigen via het item Kleur de instellingendialoog.)

Als er een verschil opgemerkt wordt, toont de kleur welk invoerbestand er verschilt. Als beide andere invoerbestanden verschillen is de kleur die dit aangeeft standaard rood (Conflictkleur in optie in item Kleur in de instellingendialoog). Dit kleurenschema is vooral handig in het geval van drie invoerbestanden, hetgeen u zult zien in de volgende sectie (Samenvoegen).

#### Samenvattingskolom

Links van elke tekst staat een "samenvattingskolom". Als er verschillen op een regel opgetreden zijn geeft deze kolom de respectievelijke kleur aan. Voor een verschil alleen in witruimte is de samenvatting geblokt. Voor programmeertalen waar witruimte niet zo belangrijk is, is dit nuttig om te zien of er iets belangrijks veranderd is. (In C/C++ is witruimte alleen interessant binnen tekenreeksen, commentaar, voor de preprocessor en sommige zeer uitzonderlijke situaties.)

De verticale lijn die de overzichtskolom en de tekst scheidt wordt onderbroken als het invoerbestand daar geen regels heeft. Als regelafbreking ingeschakeld is, wordt deze lijn gestippeld voor afgebroken regels.

#### Overzichtskolom

Aan de rechterkant is een "overzichts"-kolom zichtbaar, links van de verticale schuifbalk. Deze toont gecomprimeerd de samenvattingskolom van invoer A. Alle verschillen en conflicten zijn in één oogopslag zichtbaar. Als er slechts twee invoervensters gebruikt worden, verschijnen alle verschillen in rood omdat elk verschil dan een conflict is. Een zwarte rechthoek omrandt het zichtbare deel van de invoer. Voor zeer lange invoerbestanden, waarbij het aantal regels groter is dan de hoogte van de overzichtskolom in pixels, delen diverse invoerregels één overzichtsregel. Een conflict heeft dan topprioriteit boven eenvoudige verschillen, die prioriteit hebben boven geen wijziging, zodat geen verschil of conflict verloren gaat. Door in deze overzichtskolom te klikken wordt de bijbehorende tekst getoond.

#### Handmatig regels uitlijnen

Soms plaatst het algoritme de verkeerde regels naast elkaar. Of u wilt een stuk tekst vergelijken met een ander stuk tekst op een compleet andere locatie in het andere bestand. Voor dit soort situaties kunt u handmatig &kdiff3; bepaalde regels naast elkaar laten uitlijnen. Markeer met de muis de tekst die u wilt uitlijnen alsof u het wilt kopiëren en kies vervolgens Verschilweergave Handmatige uitlijning van vergelijking toevoegen (sneltoets &Ctrl;Y). Er zal een oranje balk in de samenvattingskolom naast de gekozen tekst verschijnen. Herhaal dit voor de tweede en (indien aanwezig) derde venster met verschillen. &kdiff3; zal iedere keer onmiddellijk de verschillen herberekenen en de aangewezen regels uitlijnen. Natuurlijk zullen sommige regels die voorheen wel uitgelijnd waren en nu niet meer uitgelijnd zijn.

Op dit moment ondersteunt samenvoegen het handmatig uitlijnen niet.

#### Handmatig samenvoegen en opsplitsen van secties met verschillen

In sommige gevallen heeft &kdiff3; te veel of te weinig secties om te kunnen samenvoegen. In dergelijke gevallen kunt u bestaande secties opsplitsen of juist samenvoegen.

Voeg nieuwe secties toe door tekst in de regels die bij elkaar horen te selecteren in beide invoervensters (op dezelfde manier als kopiëren naar het klembord). Kies vervolgens het menu-item Samenvoegen Vergelijking bij selectie splitsen. Splitsingen worden boven de eerste regel en onder de laatste regel van de geselecteerde tekst geplaatst. Als u maar één sectie wilt toevoegen, dan moet u vanaf een andere sectie-splitsing de tekst selecteren.

Voor het samenvoegen van secties in beide invoervenster selecteert u iets in de regels uit de samen te voegen secties. (U kunt ook meerdere secties in één bewerking samenvoegen). Kies vervolgens menu-item Samenvoegen Geselecteerde verschillen samenvoegen.

### Samenvoegen en het editorvenster voor samenvoegingsuitvoer

Het editorvenster voor de samenvoegingsuitvoer (onder de verschil-invoervensters) heeft ook een inforegel bovenaan met Uitvoer:, de bestandsnaam en `[Gewijzigd]` als u iets bewerkt hebt. Meestal bevat dit wat tekst door de automatische samenvoegingsfunctie, maar vaak bevat het ook conflicten.

!!! Opslaan is uitgeschakeld totdat alle conflicten opgelost zijn !!! (Gebruik de knoppen Ga naar vorig/volgend onopgelost conflict om de overgebleven conflicten te vinden.)

Met maar twee invoerbestanden is elk verschil ook een conflict dat handmatig opgelost moet worden.

Met drie invoerbestanden wordt het eerste bestand als basis gebruikt, en het tweede en derde bestand bevatten wijzigingen. Als op een bepaalde regel alleen invoer B of C gewijzigd is, maar niet beide, wordt de veranderde bron gekozen. Alleen als B en C op dezelfde regel veranderd zijn, detecteert het hulpmiddel een conflict dat handmatig opgelost moet worden. Als B en C hetzelfde zijn, maar niet hetzelfde als A, wordt C gekozen.

#### De kolom Samenvatting

Het editorvenster voor samenvoegingsuitvoer heeft ook links een samenvattingskolom. Deze toont de letter van de invoer waaruit een regel geselecteerd is of niets als alle drie de bronnen gelijk waren op die regel. Bij conflicten wordt een vraagteken "?" getoond en de regel toont dan "<Samenvoegconflict>", het geheel in rood. Omdat conflicten regel voor regel oplossen erg lang duurt, worden de regels gegroepeerd in groepen die dezelfde verschil- en conflictkenmerken hebben, Alleen witruimte-conflicten worden gescheiden van niet-witruimte-conflicten om het samenvoegen van bestanden waarin de insprong gewijzigd is, gemakkelijker te maken.

#### De huidige groep instellen en zichtposities van samenvoegen en verschillen synchroniseren

Als u met de &LMB; in een samenvattingskolom klikt, wordt de groep die bij die regel hoort geselecteerd in alle vensters en wordt het begin van de groep getoond. Deze groep wordt dan de "huidige groep". Deze wordt geaccentueerd met het optie Achtergrondkleur van diff voor huidig bereik van item Integratie in de instellingendialoog en er verschijnt een zwarte balk links van de tekst.

#### Kies invoer A, B of C voor het huidige conflict en bewerking

De knoppenbalk onder de menubalk heeft drie selectieknoppen voor invoer met de letters A, B en C. Klik op de keuzeknop voor invoer om de regels uit de desbetreffende bron te plakken (of na het plakken weer te verwijderen). Voor gebruik van regels uit verschillende bronnen klikt u op de knoppen in de gewenste volgorde. Als u bijvoorbeeld wilt dat de regels van B boven de regels van A in de uitvoer verschijnen, klik dan eerst op B en daarna op A.

Als u de knop Automatisch na bronselectie naar volgende onopgeloste conflict gaan gebruikt (zie sectie (Automatisch doorgaan), is het verstandig om dit uit te schakelen voordat u uit diverse bronnen regels selecteert en deze daarna wilt gaan bewerken. Als u dit nalaat zal &kdiff3; naar het volgende conflict springen na het selecteren van de eerste invoer.

Het is vaak handig om de samenvoegingsuitvoer te kunnen bewerken. In de samenvattingskolom is een "m" te zien voor iedere regel die handmatig is bewerkt. Wanneer bijvoorbeeld de verschillen zodanig zijn uitgelijnd dat eenvoudig de invoer kiezen niet het gewenste resultaat oplevert, dan kunt u de gewenste tekst markeren en de normale manier van kopiëren en plakken gebruiken voor het samenvoegen.

Soms verschijnt de tekst "<Geen regel in de bron>" in een regel als die ofwel door automatisch samenvoegen ofwel door bewerken verwijderd is, en er geen andere regels in die groep overblijven. Dit is een plaatshouder voor de groep voor als u zich bedenkt en weer een bron aangeeft. De tekst verschijnt niet in het opgeslagen bestand of in gekopieerde of geplakte selecties.

De tekst "<Samenvoegconflict>" verschijnt in het klembord als u tekst met zo'n regel kopieert en plakt. Maar wees alsnog voorzichtig.

#### Kiezen van invoer A, B, of C voor alle conflicten

Het normale samenvoegen begint door het automatisch oplossen van eenvoudige conflicten. Maar het menu Samenvoegen biedt wat acties voor andere veelvoorkomende zaken. Als u dezelfde bron voor de meeste conflicten wilt gebruiken, kunt u A, B of C overal kiezen, of alleen voor de overgebleven niet-opgeloste conflicten, of voor de niet-opgeloste witruimteconflicten. Als u elk apart onderscheid zelf wilt bepalen, kunt u Elk onderscheid maken bij conflicten instellen. Of als u terug wilt gaan naar de automatische keuzes van &kdiff3; kiest u Eenvoudige conflicten automatisch oplossen. &kdiff3; herstart het samenvoegen dan. Voor acties die uw vorige wijzigingen aanpassen vraagt &kdiff3; om uw instemming alvorens door te gaan.

Als u één van de bronnen voor onopgeloste witruimte-conflicten kiest en de optie Getallen negeren (als witruimte behandelen) of C/C++ commentaar negeren (als witruimte behandelen) bij het item Diff is gekozen in de instellingendialoog, dan worden wijzigingen in getallen respectievelijk commentaar ook als witruimte behandeld.

#### Automatisch samenvoegen van trefwoorden en geschiedenis (Log) uit versiebeheer

Veel systemen voor versiecontrole gebruiken speciale trefwoorden in het bestand. (⪚ "`$Date$`", "`$Header$`", "`$Author$`", "`$Log$`", &etc;). Deze regels worden aangepast tijdens het inchecken in het version control system (VCS). Bijvoorbeeld "`$Date$`" zal veranderen in "`$Date: 2005/03/22 18:45:01 $`". Omdat deze regel in iedere versie van het bestand verschillend is, is daarom het handmatig ingrijpen noodzakelijk tijdens het samenvoegen.

&kdiff3; heeft de mogelijkheid om dit soort items automatisch in item Samenvoegen in de instellen. Bij eenvoudige regels die overeenkomen met de instellingen voor Reguliere expressie voor automatisch samenvoegen voor alle invoerbestanden, zal &kdiff3; kiezen voor de regel uit B of - indien beschikbaar - uit C. (Het is bovendien noodzakelijk dat voor de vergelijking de regels uitgelijnd zijn en dat de voorgaande regels geen conflicten hebben). Dit automatisch samenvoegen kunt u naar keuze onmiddellijk na het starten van het samenvoegen uitvoeren (door het inschakelen van de optie Bij starten van samenvoegen automatisch reguliere expressie gebruiken) of later via menu-item Samenvoegen Automatisch samenvoegen d.m.v. reguliere expressie uitvoeren.

Ook het automatisch samenvoegen van de geschiedenis van versiebeheer (ook "log" genoemd) is ondersteund. De geschiedenis samenvoegen kunt u naar keuze onmiddellijk na het starten van het samenvoegen uitvoeren door het inschakelen van de keuze Geschiedenis versiebeheer samenvoegen bij aanvang van samenvoegen in het item Samenvoegen in de instellingendialoog of later via het menu-item Samenvoegen Automatisch geschiedenisconflicten oplossen

Meestal begint de geschiedenis van het versiebeheer met een regel waarin het trefwoord "`$Log$`" voor komt. Dit moet overeenkomen met de Reguliere expressie voor begin van geschiedenis. &kdiff3; bepaalt welke opvolgende regels ook in de geschiedenis thuishoren door te kijken naar de voorafgaande tekens die voor het trefwoord "`$Log$`" staan. Als dezelfde "voorafgaand commentaar"-tekens ook in volgende regels verschijnen, dan worden deze regels ook in de geschiedenis opgenomen.

Tijdens elke check-in schrijft het VCS een unieke regel met daarin informatie over de versie, datum en tijdstip gevolgd door regels met commentaar van de gebruiker. Deze regels vormen samen een geschiedenisitem. Deze geschiedenis groeit met elke check-in met het meest recente item bovenaan (na de beginregel van de geschiedenis).

Wanneer bij parallelle ontwikkeling twee of meer ontwikkelaars een tak van een bestand inchecken dan verschijnen bij het samenvoegen van de geschiedenis verschillende items met conflicten. Omdat het samenvoegen van deze takken vervelend kan zijn, komt &kdiff3; met twee mogelijke strategieën: Gewoon de geschiedenisitems van beide ontwikkelaars bovenaan invoegen of de geschiedenisitems sorteren via een door de gebruiker opgegeven trefwoord.

De gewoon-toevoegen-van-alle-items-methode is makkelijker om in te stellen. &kdiff3; heeft alleen maar een methode nodig om vast te stellen welke regels bij een geschiedenis-item horen. De meeste VCS voegen een lege regel toe onder elke geschiedenis-item. Als er geen andere lege regels zijn dan is dit voldoende voor &kdiff3;. Maak eenvoudig een lege Reguliere expressie voor begin van een geschiedenis aan in item Samenvoegen in de instellingendialoog. Als het lege regel criterium niet voldoende is dan kunt u een normale expressie aanmaken voor het detecteren van het begin van het geschiedenis-item.

Merk op dat &kdiff3; duplicaat geschiedenis-items zal verwijderen. Als een geschiedenis-item meerdere keren aanwezig is in de geschiedenis van een invoerbestand dan blijft deze maar één keer bewaart in het uitvoerbestand.

Als u de geschiedenis op volgorde wilt leggen dan moet u opgeven hoe de sorteersleutel is opgebouwd. Gebruik haakjes in de Reguliere expressie voor het begin van een geschiedenis in item Samenvoegen in de instellingendialoog voor het groeperen van gedeeltes van de reguliere expressie die u later wilt gebruiken voor de sorteersleutel. Geef vervolgens in de Sorteervolgorde van het begin van geschiedenis met door komma's "," gescheiden lijst op van nummers die de volgorde aangeven in de reguliere expressie.

Omdat het niet gemakkelijk is om dit in een keer goed te krijgen, kunt u de reguliere expressie uitproberen en daarna zo nodig verbeteren in een speciaal dialoogvenster door het gebruik van de knop Reguliere expressies testen.

Voorbeeld: neem een geschiedenis aan die lijkt op dit:

    /**************************************************************************
    ** HISTORY:    $Log: \toms_merge_main_view\MyApplication\src\complexalgorithm.cpp $
    **
    **     \main\integration_branch_12   2 Apr 2001 10:45:41   tom
    **  Samengevoegde branch simon_branch_15.
    **
    **     \main\henry_bugfix_branch_7\1   30 Mar 2001 19:22:05   henry
    **  Snelheid van subroutine convertToMesh() verbeterd.
    **  crash opgelost.
    **************************************************************************/

De beginregel van de geschiedenis komt overeen met de reguliere expressie "`.*\$Log.*\$.*`". Daarna volgen de geschiedenisitems.

De regel met het trefwoord "`$Log$`" begint met twee keer "*" waarna een spatie volgt. &kdiff3; gebruikt de eerste regel met niet-witruimte als "voorafgaand commentaar" en concludeert dat de geschiedenis eindigt in de eerste regel zonder dit voorafgaand commentaar. In dit voorbeeld eindigt de laatste regel met een tekenreeks die ook start met twee keer "*", maar in plaats van een spatie volgt meer keer "*". Met deze regel eindigt daarom de geschiedenis.

Als sorteren niet vereist is dan kan de beginregel met de reguliere expressie van het geschiedenisitem er uitzien als dit. (Deze regel is opgesplitst in tweeën omdat het anders niet zou passen.)

    \s*\\main\\\S+\s+[0-9]+ (jan|feb|maa|apr|mei|jun|jul|aug|sep|okt|nov|dec)
     [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s+.*

Meer details over reguliere expressies kunt u lezen in de documentatie over reguliere expressies. Merk op dat "`\s`" (kleine letter "`s`") overeenkomt met witruimte en "`\S`" (Hoofdletter "S") overeenkomt met niet-witruimte. In ons voorbeeld bestaat de beginregel van ons geschiedenis-item als eerste informatie over de versie met de reguliere expressie "`\\main\\\S+`", de datum bestaande uit de dag "`[0-9]+`", maand "`(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`" en jaar "`[0-9][0-9][0-9][0-9]`", de tijd "`[0-9][0-9]:[0-9][0-9]:[0-9][0-9]`" en tenslotte de gebruikersnaam van de ontwikkelaar "`.*`".

Merk op dat de tekens van het "voorafgaand commentaar" (in het voorbeeld "`**`") al verwijderd zijn door &kdiff3; voor de poging tot uitlijnen, daarom begint de reguliere expressie met een overeenkomst voor een of meer witruimte-tekens "`\s*`". Omdat commentaar-tekens kunnen verschillen in ieder bestand (⪚ C/C++ gebruikt andere commentaar-tekens dan een Perl script) let &kdiff3; zelf op de tekens van voorafgaand commentaar en hoeven deze daarom niet opgegeven te worden in de reguliere expressie.

Als u een gesorteerde geschiedenis vereist. Dan moet de sorteersleutel berekend worden. Hiervoor moeten de relevante delen in de reguliere expressie gegroepeerd worden door haakjes. (De extra haakjes kunnen er ook in blijven als sorteren van de geschiedenis is uitgeschakeld).

    \s*\\main\\(\S+)\s+([0-9]+) (jan|feb|maa|apr|mei|jun|jul|aug|sep|okt|nov|dec)
     ([0-9][0-9][0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\s+(.*)

Tussen de haken vindt u nu `1`. versie-info, `2`. dag, `3`. maand, `4`. jaar, `5`. tijd, `6`. naam. Maar als we op datum en tijd willen sorteren dan moeten we een sleutel creëren waarvan de onderdelen een andere volgorde hebben: eerst het jaar, gevolgd door de maand, dag, tijd, versienummer en naam. De sorteersleutel moet daarom zijn als volgt "`4,3,2,5,1,6`".

Omdat de namen van maanden niet handig zijn voor het op volgorde leggen ("`Apr`" zou dan de eerste zijn) detecteert &kdiff3; in welke volgorde de namen van maanden zijn opgegeven en gebruikt in plaats daarvan dat nummer ("`Apr`"->"`04`"). En als een kaal nummer is gevonden dan zal dit worden omgezet naar een viercijferig getal met voorloopnullen voor het op volgorde leggen. Tenslotte zal de sorteersleutel voor de beginregel van de geschiedenis er als volgt uit zien:

    2001 04 0002 10:45:41 integration_branch_12   tom

Lees voor meer informatie ook de sectie Instellingen samenvoegen.

### Navigatie en bewerken

Veel navigatie doet u met de schuifbalken en de muis maar u kunt ook met de toetsen navigeren. Als u in een venster klikt, kunt u de sneltoetsen &Left;, &Right;, &Up;, &Down;, &PgUp;, &PgDn;, &Home;, &End;, &Ctrl;&Home; and &Ctrl;&End; gebruiken zoals in andere programma's. De overzichtskolom naast de verticale schuifbalk van de invoerbestanden kan ook voor navigatie gebruikt worden door erin te klikken.

U kunt ook een muiswiel gebruiken om omhoog en omlaag te bladeren.

In de uitvoereditor voor samenvoegen kunt u ook de andere toetsen gebruiken om de tekst te bewerken. U kunt tussen invoeg- en overschrijfmodus wisselen met de toets &Ins;. (Standaard is invoegmodus.)

Een klik met de &LMB; in een samenvattingskolom synchroniseert alle vensters zodat ze het begin van dezelfde groep regels tonen (zoals uitgelegd in de sectie "De huidige groep instellen en zichtposities van samenvoegen en verschillen synchroniseren").

De knoppenbalk heeft ook negen navigatieknoppen waarmee u naar het huidige/eerste/laatste verschil kunt springen, naar het volgende/vorige verschil (&Ctrl;&Down;/&Ctrl;&Up;), naar het volgende/vorige conflict (&Ctrl;&PgDn;/&Ctrl;&PgUp;) of naar het volgende/vorige onopgeloste conflict. Merk op dat voor &kdiff3; een "conflict" dat niet automatisch werd opgelost bij het begin van het samenvoegen een "conflict" blijft, zelfs als het wordt opgelost. Vandaar de noodzaak om "onopgeloste conflicten" te onderscheiden.

#### Automatisch doorgaan

Er is ook een knop Automatisch naar het volgende onopgeloste conflict gaan (Automatisch doorgaan). Als u dit inschakelt, springt &kdiff3; automatisch naar het volgende onopgeloste conflict, zodra u een bron hebt geselecteerd. Dit kan helpen als u altijd slechts één bron wilt kiezen. Als u beide bronnen nodig hebt of als u na het kiezen nog wilt wijzigen, dan wilt u deze optie waarschijnlijk uitschakelen. Voordat u naar het volgende onopgeloste conflict gaat, toont &kdiff3; u korte tijd het effect van uw keuze. Deze vertraging is instelbaar in het item Samenvoegen in de instellingendialoog: u kunt Vertraging voor automatisch doorgaan (ms) instellen in milliseconden tussen 0 en 2000. Tip: Niet te veel klikken? Kies een korte vertragingstijd voor automatisch doorgaan en de sneltoetsen &Ctrl;1/2/3 om A/B/C voor conflicten te selecteren.

### Selecteren, kopiëren en plakken

De invoervensters tonen geen cursor, dus selecteren moet gedaan worden met de muis door met de &RMB; aan het begin te klikken, de muisknop ingedrukt te houden en naar het eind te bewegen, waar u de muisknop weer loslaat. U kunt ook een woord selecteren door erop te dubbelklikken. In de samenvoegeditor kunt u ook met het toetsenbord selecteren met &Shift; en de pijltoetsen.

Als datgene wat u wilt selecteren niet in het venster past dan kunt u de muis naar buiten de randen van het venster verplaatsen zodat &kdiff3; in die richting schuift.

Bij zeer grote selecties kunt u ook de navigatie-toetsen gebruiken terwijl u de muis ingedrukt houdt. Gebruik b.v &PgUp; en &PgDn; om snel naar een bepaalde positie te gaan en laat op de gewenste positie de muisknop los.

Om alles in het huidige venster te selecteren gebruikt u het menu-item Bewerken Alles selecteren (&Ctrl;A).

Om naar het klembord te kopiëren moet u de knop Kopiëren indrukken (&Ctrl;C of &Ctrl;&Ins;). Maar er bestaat een optie Selectie automatisch kopiëren. Als deze is ingeschakeld, wordt geselecteerde tekst direct naar het klembord gekopieerd. Let er hierbij wel op dat bestaande inhoud van uw klembord niet per ongeluk ongewenst verwijderd wordt.

Knippen (&Ctrl;X of &Shift;∇) kopieert naar het klembord en verwijdert de geselecteerde tekst.

Plakken (&Ctrl;V of &Shift;&Ins;) plakt de tekst uit het klembord naar de cursorpositie. Als u plakt naar een willekeurig invoervenster dan krijgt u de klembordinhoud in dat venster te zien en zal de vergelijking onmiddellijk starten. Dit is handig als u snel een stuk tekst ergens vandaan haalt en dit wilt vergelijken met iets anders zonder eerst bestanden te hoeven aan te maken.

### Opslaan

Opslaan is alleen toegestaan als alle conflicten opgelost zijn. Als het bestand al bestaat en de optie Reservekopie ingeschakeld is op item Map in de instellingendialoog, wordt het bestaande bestand hernoemd met een extensie `.orig`, een bestaande reservekopie wordt hierbij overschreven. Als u afsluit of een andere verschillenanalyse start en de gegevens nog niet zijn opgeslagen, vraagt &kdiff3; u of u wilt opslaan, annuleren of doorgaan zonder opslaan. (&kdiff3; vangt geen signalen. Dus als u &kdiff3; "kill"t gaan uw gegevens verloren.)

Regeleinden worden opgeslagen volgens de normale methode op het onderliggende besturingssysteem. Voor Unix-systemen eindigt elke regel met een 'linefeed' "`\n`", terwijl op Win32-systemen elke regel met een 'carriage-return' en een 'linefeed' eindigt "`\r\n`". &kdiff3; bewaart de regeleinden van de invoerbestanden niet, hetgeen ook betekent dat u &kdiff3; niet met binaire bestanden moet gebruiken.

### Tekenreeksen zoeken

U kunt naar tekenreeksen zoeken in elk tekstvenster van &kdiff3;. Het menu-item Bewerken Zoeken... (&Ctrl;F) opent een dialoog waarin u de te zoeken tekenreeks kunt opgeven. U kunt ook de vensters opgeven waarin gezocht moet worden. Zoeken begint altijd bovenaan. Gebruik het menu-item Bewerken Volgende zoeken... (F3) om naar het volgende voorkomen door te gaan. Als u meerdere vensters opgeeft om in te zoeken wordt het eerste venster van boven naar beneden doorzocht, voordat het volgende venster weer van bovenaf wordt doorzocht, &etc;

### Bezig met afdrukken

&kdiff3; ondersteunt het printen van verschillen tussen tekstbestanden. Het menu-item Bestand Afdrukken... (&Ctrl;P) opent een dialoog waarin u de printer kunt kiezen en diverse keuzemogelijkheden kunt instellen.

Er zijn diverse mogelijkheden om de afdrukselectie in te stellen. Omdat de afdrukdialogen bij de diverse besturingssystemen verschillend zijn, is de methode voor het instellen van de afdrukselectie ook verschillend.

Alles:

- Alles afdrukken.

Huidige:

- Drukt een pagina af die begint met de eerst in het venster zichtbare regel. (Bij systemen zonder deze mogelijkheid kunt u dit bereiken door het paginanummer 10000 op te geven voor het afdrukken.)

Selectie:

- Voordat u gaat printen selecteert u eerst de tekst met de muis (zoals voor kopiëren en plakken) in een van de diff-invoervensters om de beginregel en de eindregel te bepalen. Als geen tekst in een van invoervensters van diff is geselecteerd dan is deze keuze niet beschikbaar. (Bij systemen zonder deze mogelijkheid kunt u dit bereiken door het paginanummer 9999 op te geven voor het afdrukken.)

Bereik:

- Geef de beginpagina en de eindpagina op.

Andere belangrijke keuzemogelijkheden voor het afdrukken zijn de normale keuzes:

- Lettertype, lettergrootte

- Regelnummering tonen

- Regelafbreking

- Kleuren

- &etc;

Liggend (landschap) afdrukken wordt aanbevolen.

### Opties

Opties en de recente-bestandenlijst worden opgeslagen als u het programma afsluit, en opnieuw ingelezen als u het start. Menu-item (Instellingen &kdiff3; configuren...).

#### Lettertype

Kies een lettertype met vaste breedte. (Op sommige systemen toont dit dialoogvenster ook lettertypes met variabele breedte, maar die dient u liever niet te gebruiken.)

#### Kleuren

Weergaven voor editor en vergelijkingen:

- Voorgrondkleur:

- Gewoonlijk zwart.

Achtergrondkleur:

- Gewoonlijk wit.

Achtergrondkleur bij verschillen:

- Gewoonlijk lichtgrijs.

Kleur voor A:

- Gewoonlijk donkerblauw.

Kleur voor B:

- Gewoonlijk donkergroen.

Kleur voor C:

- Gewoonlijk donkermagenta.

Kleur voor conflicten:

- Gewoonlijk rood.

Achtergrondkleur voor huidig bereik:

- Gewoonlijk lichtgeel.

Achtergrondkleur voor verschillen in huidig bereik:

- Gewoonlijk donkergeel.

Kleur voor handmatig uitgelijnde verschilbereiken:

- Gewoonlijk oranje.

Weergave mappenvergelijking:

- Kleur nieuwste bestand:

- Gewoonlijk groen.

Kleur oudste bestand:

- Gewoonlijk rood.

Kleur bestand met gemiddelde leeftijd:

- Gewoonlijk helder geel.

Kleur voor ontbrekende bestanden:

- Gewoonlijk zwart.

De kleuren wijzigen voor vergelijken van mappen zal alleen effectief zijn na het starten van het volgende vergelijken van mappen.

Op systemen met slechts 16 of 256 kleuren zijn sommige kleuren niet beschikbaar in pure vorm. Op zulke systemen zorgt de knop Standaard voor een pure kleur.

#### Editor-instellingen

Tab voegt spaties in

- Als dit uitgeschakeld is en u de toets indrukt, wordt een tab-teken ingevoegd, anders het aangegeven aantal spaties.

Tabgrootte:

- Kan ingesteld worden voor uw specifieke wensen. Standaard is `8`.

Automatisch inspringen

- Als u op &Enter; of Return drukt wordt het inspringen van de vorige regel gebruikt voor de nieuwe.

Automatische kopieerselectie

- Elke selectie wordt onmiddellijk naar het klembord gekopieerd, indien actief, u hoeft het niet expliciet te kopiëren.

Regeleinde:

- Bij het opslaan kunt u opgeven welk regeleinde u verkiest. De standaardinstelling is de gebruikelijke keuze voor het gebruikte besturingssysteem.

#### Diff-instellingen

Bij het vergelijken van bestanden, probeert &kdiff3; eerst regels te vinden die gelijk zijn in alle invoerbestanden. Alleen gedurende deze stap wordt witruimte mogelijk genegeerd. De tweede stap vergelijkt elke regel. In deze stap wordt witruimte niet genegeerd. Ook gedurende het samenvoegen wordt witruimte niet genegeerd.

Getallen negeren (als witruimte behandelen)

- Standaard uit. Getaltekens ('0'-'9', '.', '-') worden genegeerd in het eerste deel van de analyse waarin regels worden vergeleken. In het resultaat worden de verschillen wel getoond, maar behandeld als witruimte.

C/C++ commentaar negeren (als witruimte behandelen)

- Standaard uit. Wijzigingen in commentaar worden behandeld als wijzigingen in witruimte.

Hoofd-/kleine letter negeren (als witruimte behandelen)

- Standaard uit. Wijzigingen in verschillen tussen hoofd en kleine letters (zoals 'A' vs. 'a') worden behandeld als wijzigingen in witruimte.

Preprocessorcommando:

- Zie de volgende sectie.

Preprocessor-commando alleen voor regelcontroles:

- Zie de volgende sectie.

Grondig zoeken (trager)

- Doe veel moeite om kleinere onderscheiden te vinden (standaard aan). Dit is waarschijnlijk effectief voor gecompliceerde, grote bestanden. En langzaam voor erg grote bestanden.

Lijn B en C uit voor 3 invoerbestanden

- Probeer B en C uit te lijnen bij het vergelijken of samenvoegen van drie invoerbestanden. Niet aanbevolen voor samenvoegen omdat dit veel gecompliceerder kan worden. (Standaard is uit).

#### Instellingen samenvoegen

Vertraging voor automatisch doorgaan (ms):

- Bij het automatisch doorgaan bepaalt deze instelling hoe lang het resultaat van de selectie getoond wordt voordat er naar het volgende onopgeloste conflict gesprongen wordt.

Toon informatievensters

- Toon een venster met informatie over het aantal conflicten.

Standaardsamenvoeging van witruimtes bij 2/3 bestanden:

- Automatisch alle witruimteconflicten oplossen door een gespecificeerd bestand te kiezen. (Standaard is handmatige keuze.) Nuttig als witruimte in veel bestanden niet belangrijk is. Als u dit alleen af en toe nodig hebt kunt u beter A/B/C voor alle onopgeloste conflicten kiezen in het menu Samenvoegen kiezen. Merk op dat als u Getallen negeren (als witruimte behandelen) of C/C++ commentaar negeren (als witruimte behandelen) hebt ingeschakeld, deze automatische keuze ook voor conflicten in getallen of commentaar geldt.

Reguliere expressie voor automatisch samenvoegen:

- Reguliere expressie voor regels waar &kdiff3; automatisch één bron moet kiezen. Zie ook Automatisch samenvoegen ....

Bij starten van samenvoegen automatisch reguliere expressie gebruiken

- Indien u automatisch samenvoegen inschakelt dan gebruikt &kdiff3; de optie Reguliere expressie voor automatisch samenvoegen bij het samenvoegen.

Reguliere expressie voor begin van geschiedenisitem:

- Reguliere expressie voor het begin van het item van de geschiedenis van het samenvoegen. Veel voorkomende waarde in deze regel is het trefwoord "`$Log$`". Standaardwaarde: "`.*\$Log.*\$.*`"

Reguliere expressie voor begin van geschiedenisitem:

- Een samenvoeg-geschiedenis-item bestaat uit verschillende regels. Geef de reguliere expressie op voor het detecteren van de eerste regel (zonder het voorafgaand commentaar). Gebruik haakjes ('(' of ')') om de sleutels te groeperen die u wilt gebruiken bij het sorteren of op volgorde leggen. indien leeg, dan neemt &kdiff3; aan dat lege regels geschiedenis-items scheiden. Lees ook Automatisch samenvoegen ....

Geschiedenis samenvoegend sorteren

- Geschiedenis van sorteren van versiebeheer inschakelen.

Sorteervolgorde van begin van geschiedenisitems:

- Elk paar haakjes gebruikt in de reguliere expressie groepeert een sleutel die gebruikt kan worden voor sorteren. Geef een lijst op met sleutels (die genummerd worden in volgorde van gebruik met de `1` als begin) met ',' als scheidingsteken (⪚ "`4,5,6,1,2,3,7`"). Indien leeg zal er niet worden gesorteerd. Lees ook Automatisch samenvoegen ...

Geschiedenis versiebeheer samenvoegen bij aanvang van samenvoegen

- Indien u automatisch samenvoegen inschakelt dan gebruikt &kdiff3; de bovengenoemde keuzes bij het samenvoegen van de geschiedenis.

Max. aantal items in geschiedenis:

- &kdiff3; verkort de geschiedenislijst na het gespecificeerde aantal items. Gebruik `-1` om verkorting te voorkomen. (Standaard is `-1`).

Uw reguliere expressies testen

- Deze knop opent een dialoogvenster waarin u de hierboven beschreven reguliere expressies kunt testen en zo nodig verbeteren. Kopieer respectievelijke data uit uw bestanden naar de voorbeeld regels. In het Resultaat van overeenkomsten zal onmiddellijk te zien zijn of de resultaten wel of niet succesvol zijn. In het Resulterende sorteersleutel: is de voor het samenvoegen van de geschiedenis gebruikte sleutel te zien.

Irrelevant samenvoegcommando:

- Geef uw eigen commando op dat gebruikt moet worden wanneer &kdiff3; bemerkt dat bij het samenvoegen van een groep bestanden het bestand van B geen relevante data toevoegt die niet al door een bestand uit C is toegevoegd. Het commando wordt gestart met de drie bestandsnamen als parameters. Data die overeenkomt met Reguliere expressie voor automatisch samenvoegen of in de geschiedenis voorkomt is hierbij niet relevant.

Automatisch opslaan en afsluiten bij samenvoegingen zonder conflicten

- Als &kdiff3; vanaf de commandoregel is gestart om bestanden samen te voegen en alle conflicten waren oplosbaar zonder dat ingrijpen van de gebruiker nodig was, sla het resultaat dan automatisch op en sluit het programma af. (Vergelijkbaar met de commandoregeloptie `--auto`).

#### Samenvoegen van mappen

Deze opties gaan over het doorzoeken van de map en de afhandeling van het samenvoegen: zie Mapvergelijking/samenvoeging voor details.

Er is hier echter één optie die ook relevant is voor het opslaan van enkele bestanden:

Reservekopie aanmaken (.orig)

- Als een bestand wordt opgeslagen en er al een oudere versie bestaat, wordt het oude bestand hernoemd met een extensie `.orig`. Als een oud reservekopiebestand met de extensie `.orig` al bestaat, wordt deze zonder reservekopie verwijderd.

#### Regio- en taalinstellingen

Dezelfde codering gebruiken voor alles

- De volgende coderingsopties kunnen apart aangepast worden voor elk item. Als deze optie is ingeschakeld nemen alle waarden deze over.

Opmerking: lokale codering is "..."

- Boven de coderings-selectors komt deze opmerking die u vertelt wat de lokale codering is. (Dit is niet aan te passen, maar wordt aangegeven als u uw lokale codering niet weet, maar wel wilt kiezen.)

Unicode automatisch detecteren

- Deze optie probeert de BOM of metagegevens uit XML/HTML documenten te gebruiken om codering met Unicode te detecteren. Als dat mislukt zal het controleren of een kort stukje uit het begin van het bestand geïnterpreteerd kan worden als UTF-8. Als deze controle lukt zal UTF-8 gebruikt worden. Anders zal het terugvallen op de door de gebruiker geselecteerde codec. UTF-8 wordt alleen ondersteund zonder BOM of metagegevens aanwezig.

Bestandscodering voor A/B/C:

- Pas de bestandscodering voor invoerbestanden aan. Dit heeft effect op hoe speciale tekens geïnterpreteerd worden. Aangezien u elke codering apart kunt instellen, kunt u zelfs bestanden vergelijken en samenvoegen die met verschillende coderingen zijn opgeslagen.

Bestandscodering voor samenvoeguitvoer en opslag:

- Als u een bestand hebt bewerkt, kunt op aanpassen met welke codering het weer op schijf wordt opgeslagen.

Bestandscodering voor preprocessorbestanden:

- Als u preprocessors opgeeft kunnen deze misschien niet met uw codering werken (⪚: uw bestanden zijn 16-bits unicode en uw preprocessor kan alleen met 8-bits &ASCII; overweg). Met deze optie kunt u de codering van preprocessor-uitvoer opgeven.

Rechts-naar-links-taal

- Sommige talen worden van rechts naar links geschreven. Als ieze optie is ingeschakeld, tekent &kdiff3; de tekst van rechs naar links in de verschillenvensters en in het uitvoervenster. Merk op dat, als u &kdiff3; met de opdrachtregeloptie `--reverse` start, alle schermopmaak ook van rechts naar links gedaan wordt. (Dit is een optie die door Qt aangeboden wordt).

  Deze documentatie is geschreven onder de aanname dat deze optie of omgekeerde indeling uitgeschakeld zijn. Dus referenties naar "links" of "rechts" moeten vervangen worden door hun respectievelijke tegendeel als u deze opties gebruikt.

#### Diverse

(Deze opties en acties zijn in menu's of in de knoppenbalk beschikbaar.)

Overzichtsopties:

- Deze keuzes zijn alleen beschikbaar als u drie bestanden vergelijkt. In normale modus worden alle verschillen getoond in één kleurgecodeerde overzichtskolom. Maar soms bent u speciaal geïnteresseerd in de verschillen tussen slechts twee van deze drie bestanden. Door "A vs B", "A vs C" of "B vs C" te kiezen wordt er een tweede overzichtskolom met de vereiste informatie getoond naast het normale overzicht.

Regels afbreken in vensters met verschillen

- Regels afbreken als hun lengte de breedte van een venster zou overschrijden.

Venster A/B/C tonen:

- Soms wilt u de ruimte op het scherm beter gebruiken voor lange regels. Verberg dan de vensters die niet belangrijk zijn. (In het menu Venster.)

Splitsen van vensters omschakelen

- Wisselen tussen weergave van verschilvensters naast elkaar (A links van B links van C) of boven elkaar (A boven B boven C). Dit moet ook voor lange regels helpen. (In het menu Venster).

Huidig bestand samenvoegen

- Werkt ook als u slechts twee bestanden vergelijkt. Een enkele klik start het samenvoegen en gebruikt de bestandsnaam van het laatste invoerbestand als het standaard uitvoerbestand. (Als dit gebruikt wordt om een samenvoeging te herstarten, wordt de uitvoerbestandsnaam behouden.)

Witruimte tonen

- Schakel dit uit om accentuering van alleen-witruimte-veranderingen in de tekst of overzichtskolommen uit te schakelen. (Merk op dat dit ook van toepassing is op wijzigingen in getallen of commentaar als de opties Getallen negeren (als witruimte behandelen) of C/C++ commentaar negeren (als witruimte behandelen) actief zijn.)

Spatie && tabulator-tekens tonen

- Soms zijn de zichtbare spaties en tabs storend. U kunt dit uitschakelen.

Regelnummering tonen

- U kunt kiezen of regelnummers voor de invoerbestanden getoond moeten worden.

#### Sneltoetsen instellen

Momenteel ondersteunt alleen de &frameworks;-versie gebruikergedefinieerde sneltoetsen. (Menu Instellingen Sneltoetsen configureren...)

### Preprocessor-opdrachten

&kdiff3; ondersteunt twee preprocessor-opties.

Preprocessorcommando:

- Als een bestand gelezen is, wordt het door deze externe opdracht gesluisd. De uitvoer van deze opdracht is dan zichtbaar in plaats van het originele bestand. U kunt uw eigen preprocessor schrijven om uw specifieke wensen te vervullen. Gebruik dit om storende delen van het bestand weg te halen, of automatisch de insprong te verbeteren, &etc;

Preprocessor-commando alleen voor regelcontroles:

- Als een bestand gelezen is, wordt het door deze externe opdracht gesluisd. Als een preprocessor-opdracht (zie boven) ook opgegeven wordt, wordt de uitvoer van de preprocessor de invoer van de preprocessor voor regelovereenkomsten. De uitvoer wordt dan alleen gebruikt bij de regelvergelijkingsfase van de analyse. U kunt uw eigen preprocessor schrijven om uw specifieke wensen te vervullen. Elke invoerregel moet een overeenkomende uitvoerregel hebben.

Het idee is om de gebruiker grotere flexibiliteit te geven bij het instellen van het resultaat. Maar dit vereist een extern programma, en veel gebruikers willen dat niet zelf schrijven. Het goede nieuws is dat `sed` of `perl` vaak voldoende is.

Voorbeeld: eenvoudig testgeval: bekijk bestand a.txt (6 regels):

    aa
          ba
          ca
          da
          ea
          fa

En bestand b.txt (3 lines):

    cg
          dg
          eg

Zonder een preprocessor zouden de volgende regels naast elkaar geplaatstworden:

    aa - cg
          ba - dg
          ca - eg
          da
          ea
          fa

Dit is waarschijnlijk niet gewenst omdat de eerste letter de werkelijk interessante informatie bevat. Om te helpen bij het algoritme voor overeenkomst om de tweede letter te negeren kunnen we een preprocessorcommando gebruiken voor overeenkomst in regels, die 'g' vervangt door 'a':

    sed 's/g/a/'

Met dit commando zal het resultaat van de vergelijking zijn:

    aa
          ba
          ca - cg
          da - dg
          ea - eg
          fa

Intern ziet het algoritme voor overeenkomst de bestanden na uitvoeren van de preprocessor voor regelovereenkomst, maar op het scherm is het bestand ongewijzigd. (De normale preprocessor zou de gegevens ook op het scherm wijzigen).

#### De basis van `sed`

Deze sectie geeft alleen een inleiding op een paar basismogelijkheden van `sed`. Zie voor meer informatie info:/sed of https://www.gnu.org/software/sed/manual/html_mono/sed.html. Een voorgecompileerde versie voor &Windows; kunt u vinden op http://unxutils.sourceforge.net. Merk op dat de volgende voorbeelden ervan uitgaan dat de opdracht `sed` in een map in uw omgevingsvariabele `PATH` staat. Als dit niet het geval is, dient u het volledige absolute pad voor de opdracht te gebruiken.

In deze context is alleen het substitutiecommando `sed` gebruikt:

    sed 's/REGEXP/VERVANGING/VLAGGEN'

Voordat u een nieuw commando in &kdiff3; gebruikt, zou u het eerst moeten testen in een console. Hierbij is het commando `echo` nuttig. Bijvoorbeeld:

    echo abrakadabra | sed 's/a/o/'
       -> obrakadabra

Dit voorbeeld toont een erg eenvoudig sed-commando dat het eerste voorkomen van "a" vervangt door "o". Als u alle voorkomen wilt vervangen dan heeft u de vlag "g" nodig:

    echo abrakadabra | sed 's/a/o/g'
       -> obrokodobro

Het symbool "|" is het pipe-commando die de uitvoer van het vorige commando naar de invoer van het volgende commando stuurt. Als u met een langer bestand wilt testen dan kunt u `cat` op &UNIX;-achtige systemen gebruiken of `type` op &Windows;-achtige systemen. `sed` zal de substitutie doen voor elke regel.

    cat bestandsnaam | sed opties

#### Voorbeelden van het gebruik van `sed` in &kdiff3;

##### Andere soorten commentaar negeren

&kdiff3; verstaat op dit moment alleen C/C++ commentaar. Met gebruik van de optie Commando voor preprocessing regels: kunt u ook andere soorten commentaar negeren, door ze te converteren in C/C++-commentaar.

Voorbeeld: om commentaar die begint met "`#`" te negeren, zou u ze willen converteren in "`//`". Merk op dat u ook de optie C/C++ commentaar negeren (behandelen als witruimte) moet inschakelen om een effect te krijgen. Een van toepassing zijnd Commando voor preprocessing regels: zou zijn:

    sed 's/#/\/\//'

Omdat in `sed` het teken "`/`" een aparte betekenis heeft, is het nodig om het teken "`\`" voor elke "`/`" in de vervangende tekenreeks te plaatsen. Soms is de "`\`" ook nodig om een teken een speciale betekenis te geven of deze juist weg te halen. De accenten (') zijn alleen belangrijk bij testen op de commandoshell omdat het anders sommige tekens probeert te verwerken. &kdiff3; doet dat niet behalve voor de escape-sequences '`\"`' en '`\\`'.

##### Niet-hoofdlettergevoelige verschillen

Gebruik het volgende Commando voor Preprocessor voor regelovereenkomsten: om alle invoer naar hoofdletters te converteren:

    sed 's/\(.*\)/\U\1/'

Hier is de "`.*`" een reguliere expressie die met elke tekenreeks overeenkomt en in deze context met alle lettertekens op de regel overeenkomt. De "`\1`" in de vervangende tekenreeks verwijst naar de overeenkomende tekst binnen het eerste paar "`\(`" en "`\)`". De "`\U`" zet de ingevoegde tekst om in hoofdletters.

##### Versiebeheer-trefwoorden negeren

CVS en andere versiebeheersystemen gebruiken diverse trefwoorden om automatisch gegenereerde tekenreeksen in te voegen (info:/cvs/Trefwoordvervanging. Deze volgen allemaal het patroon "`$TREFWOORD gegenereerde tekst$`". We hebben nu een preprocessoropdracht voor regelovereenkomsten nodig die alleen de gegenereerde tekst verwijdert:

    sed 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'

Het teken "`\|`" scheidt de mogelijke sleutelwoorden. U zou deze lijst willen wijzigen naar wat u nodig hebt. De tekens "`\`" voor het teken "`$`" is nodig omdat anders het teken "`$`" overeenkomst met het eind van de regel.

Terwijl u experimenteert met `sed` gaat u wellicht deze reguliere expressies begrijpen en op prijs stellen. Ze zijn nuttig omdat er veel andere programma's zijn die soortgelijke dingen ondersteunen.

##### Getallen negeren

Getallen negeren is in feite een ingebouwde optie. Maar als een ander voorbeeld is dit het commando voor Preprocessor voor regelovereenkomsten:

    sed 's/[0123456789.-]//g'

Elk teken binnen de tekens '`[`' en '`]`' is een overeenkomst en zal door niets vervangen worden.

##### Bepaalde kolommen negeren

Soms is een tekst erg strict opgebouwd, en bevat deze kolommen die u altijd wilt negeren, terwijl er andere kolommen zijn die u voor analyse wilt bewaren. In het volgende voorbeeld worden de eerste vijf kolommen (lettertekens) genegeerd, de volgende tien worden bewaard, dan worden er weer vijf genegeerd en de rest van de regel wordt bewaard.

    sed 's/.....\(..........\).....\(.*\)/\1\2/'

Elke punt '`.`' komt overeen met een enkel teken. De "`\1`" en "`\2`" in de vervangstekenreeks verwijst naar de overeenkomende tekst binnen het eerste en tweede paar haakjes "`\(`" en "`\)`" die aangeeft welke tekst bewaard moet worden.

##### Diverse vervangingen combineren

Soms wilt u diverse vervangingen tegelijk uitvoeren. U kunt dan de puntkomma '`;`' gebruiken om deze van elkaar te scheiden. Voorbeeld:

    echo abrakadabra | sed 's/a/o/g;s/\(.*\)/\U\1/'
       -> OBROKODOBRO

##### `perl` in plaats van `sed` gebruiken

In plaats van `sed` zou u `perl` kunnen gebruiken

    perl -p -e 's/REGEXP/VERVANGING/VLAGGEN'

Maar sommige details zijn anders in `perl`. Merk op waar `sed` "`\(`" en "`\)`" vereist, `perl` de eenvoudigere "`(`" en "`)`" zonder voorafgaande '`\`' vereist. Voorbeeld:

    sed 's/\(.*\)/\U\1/'
       perl -p -e 's/(.*)/\U\1/'

#### Uitvoervolgorde van preprocessors

De data wordt doorgesluisd door alle interne en externe preprocessors, in deze volgorde:

- Normale preprocessor.

- Preprocessor voor regelovereenkomsten.

- Hoofdletterongevoelig (behandelen als witruimte) (conversie naar hoofdletters).

- Opsporen van C/C++ commentaar.

- Getallen negeren (als witruimte behandelen),

- Witruimte negeren.

De gegevens zoals die na de normale preprocessor zijn worden bewaard voor weergave en samenvoeging. De andere handelingen wijzigen alleen de gegevens die het verschillenalgoritme voor regelovereenkomsten ziet.

Merk op dat, in de zeldzame gevallen waar u een normale preprocessor gebruikt, de preprocessor voor regelovereenkomsten de uitvoer van de normale preprocessor als invoer ziet.

#### Waarschuwing

De preprocessor-opdrachten zijn vaak erg nuttig, maar net zoals elke andere optie die automatisch uw teksten wijzigt of bepaalde verschillen verbergt, kunt u per ongeluk bepaalde verschillen over het hoofd zien en in het ergste geval belangrijke gegevens vernietigen.

Om deze reden vertelt &kdiff3; u het als er een normale preprocessor-opdracht wordt gebruikt bij het samenvoegen, en wordt u gevraagd of deze uitgeschakeld moet worden of niet. Maar u wordt niet gewaarschuwd als er een Commando voor Preprocessor voor regelovereenkomsten: actief is. Het samenvoegen is niet voltooid totdat alle conflicten opgelost zijn. Als u menu-item Diffweergave Witruimte tonen uitgeschakeld hebt, zijn de verschillen die met de optie Preprocessoropdracht voor regelovereenkomsten verwijderd zijn, ook onzichtbaar. Als de knop Opslaan inactief blijft tijdens het samenvoegen (door overblijvende conflicten), schakel dan menu-item Diffweergave Witruimte tonen in. Als u deze minder belangrijke verschillen niet handmatig wilt samenvoegen kunt u menu-item Samenvoegen[A|B|C] voor alle onopgeloste witruimteconflicten gebruiken kiezen.

## Mappen vergelijken en samenvoegen met &kdiff3;

### Introductie tot mappen vergelijken en samenvoegen

Programmeurs moeten vaak veel bestanden in een map veranderen om hun doel te bereiken. Daarom laat &kdiff3; u ook hele mappen recursief vergelijken en samenvoegen!

Hoewel het vergelijken en samenvoegen van mappen nogal duidelijk lijkt, zijn er aan paar details die u moet kennen. Het belangrijkste is natuurlijk het feit dat nu door elke handeling veel bestanden gewijzigd kunnen worden. Als u geen reservekopieën van uw originele gegevens hebt, kan het erg moeilijk of zelfs onmogelijk zijn om naar de originele staat terug te keren. Dus voordat u een samenvoeging start, zorg ervoor dat uw gegevens veilig zijn en dat u terug kunt keren. Of u een archief maakt of een versiebeheersysteem gebruikt is uw keuze, maar zelfs ervaren programmeurs en integrators hebben zo nu en dan de oude broncodes nodig. En merk op dat ik (de auteur van &kdiff3;) mijn best doe, maar ik kan niet garanderen dat er geen bugs zijn. Volgens de &GNU;-GPL is er GEEN WAARBORG op welke manier dan ook voor dit programma. Dus wees bescheiden en onthoud:

> Vergissen is menselijk, maar om dingen echt te verknoeien hebt u een computer nodig.

Dus dit kan dit programma voor u doen: &kdiff3; ...

- ... leest en vergelijkt twee of drie mappen recursief,

- ... houdt speciaal rekening met symbolische koppelingen,

- ... laat u door bestanden bladeren door te dubbelklikken,

- ... stelt voor elk item een samenvoegingsoperatie voor, die u kunt wijzigen voordat het samenvoegen van de mappen begint,

- ... laat u het samenvoegen simuleren en geeft de acties aan die plaats zouden vinden, zonder ze uit te voeren,

- ... laat u het samenvoegen doen, en geeft u de mogelijkheid in te springen als er menselijke interactie nodig is,

- ... laat u de geselecteerde handeling op alle items (toets F7) of alleen het geselecteerde item (toets F6) uitvoeren,

- ... laat u het samenvoegen voortzetten na handmatige interactie met toets F7,

- ... maakt optioneel reservekopieën met de extensie `.orig`,

- ...

### Mappen vergelijken of samenvoegen

Dit lijkt erg op het vergelijken en samenvoegen van een enkel bestand. U hoeft slechts mappen op de opdrachtregel of in het venster "Openen" te kiezen.

#### Twee mappen vergelijken/samenvoegen:

    kdiff3 map1 map2
       kdiff3 map1 map2 -o doelmap

Als er geen doelmap wordt opgegeven, gebruikt &kdiff3; `map2`.

#### Drie mappen vergelijken/samenvoegen

    kdiff3 map1 map2 map3
       kdiff3 map1 map2 map3 -o doelmap

Bij het samenvoegen van drie mappen wordt `map1` als basis voor het samenvoegen gebruikt. Als er geen doelmap wordt opgegeven, gebruikt &kdiff3; `map3` als doelmap voor het samenvoegen.

Merk op dat alleen het vergelijken automatisch start, niet het samenvoegen. Hiervoor dient u eerst een menu-item of de toets F7 te gebruiken. (Meer details later.)

### Mapsamenvoeging zichtbare informatie

Terwijl de mappen worden gelezen verschijnt een melding die u over de voortgang informeert. Als u het inlezen van de mappen annuleert, worden alleen bestanden getoond die tot dan toe zijn vergeleken.

Als het inlezen van de mappen klaar is, toont &kdiff3; een lijst met de resultaten links ...

... en details over het geselecteerde item rechts.

#### De kolom "Naam"

Elk bestand en elke map die tijdens het inlezen gevonden is, wordt hier in een boomstructuur getoond. U kunt een item selecteren door er éénmaal met de muis op te klikken.

Standaard zijn de mappen ingevouwen. U kunt ze uitvouwen en weer invouwen door op de "+"/"-" te klikken of door op het item te dubbelklikken, of door de toetsen &Left;/&Right; te gebruiken. Het menu Map bevat ook twee acties Alle submappen invouwen en Alle submappen uitvouwen waarmee u alle mappen in één keer kunt invouwen of uitvouwen.

Als u op een bestand dubbelklikt wordt de bestandsvergelijking gestart en verschijnt het verschillenvenster.

De afbeelding in de naamkolom geeft het bestandstype in de eerste map (A) aan. Dit kan zijn:

- Normaal bestand

- Normale map (map-afbeelding)

- Koppeling naar een bestand (bestandsafbeelding met pijl)

- Koppeling naar een bestand (bestandsafbeelding met pijl)

Als het bestandstype anders is in de andere mappen, is dit zichtbaar in de kolommen A/B/C en in het venster dat de details over het geselecteerde item toont. Merk op dat het samenvoegen in zo'n geval niet automatisch gedaan kan worden. Als u het samenvoegen start, wordt u geïnformeerd over zulke problemen.

#### De kolommen A/B/C en het kleurenschema

Zoals in de afbeelding te zien is, worden de kleuren rood, groen, geel en zwart gebruikt in de kolommen A/B/C.

- Zwart: Dit item bestaat niet in deze map.

- Groen: Nieuwste item.

- Geel: Ouder dan groen, nieuwer dan rood.

- Rood: Oudste item.

Maar voor items die hetzelfde waren in de vergelijking, is ook de kleur hetzelfde, ook al zijn ze niet even oud.

Mappen worden als gelijk beschouwd als alle items die ze bevatten hetzelfde zijn. Dan hebben ze ook dezelfde kleur. De leeftijd van een map wordt niet gebruikt bij het bepalen van de kleur.

Het idee voor dit kleurenschema kreeg ik bij het commando `dirdiff`. De kleuren stellen een blad voor dat groen is als het nieuw is, later geel wordt, en rood wordt als het oud is.

#### De kolom "Operatie"

Na het vergelijken van mappen maakt &kdiff3; ook een voorstel voor een samenvoegingsoperatie. Dit wordt getoond in de kolom Operatie. U kunt een operatie wijzigen door erop te klikken. Er verschijnt dan een klein menu waarmee u de operatie voor dat item kunt kiezen. (U kunt ook de meestgebruikte operaties met het toetsenbord kiezen. &Ctrl;1/2/3/4/∇ kiest respectievelijk A/B/C/Samenvoegen/Verwijderen.) Deze operatie wordt dan bij het samenvoegen uitgevoerd. Afhankelijk van het item en de samenvoegmodus zijn er andere operaties beschikbaar. De samenvoegmodus kan zijn:

- Samenvoegen van drie mappen (A wordt als oudere basis van beide beschouwd).

- Samenvoegen van twee mappen

- Synchroniseren van twee mappen (via de optie Mappen synchroniseren)

Bij het samenvoegen van drie mappen is het voorstel voor de operatie: als voor een item ...

- ... alle drie de mappen gelijk zijn: kopiëren vanuit C

- ... A en C gelijk zijn maar B niet: kopiëren vanuit B (of als B niet bestaat, de bestemming verwijderen als deze bestaat)

- ... A en B gelijk zijn maar C niet: kopiëren vanuit C (of als C niet bestaat, de bestemming verwijderen als deze bestaat)

- ... B en C gelijk zijn maar A niet: kopiëren vanuit C (of als C niet bestaat, de bestemming verwijderen als deze bestaat)

- ... alleen A bestaat: de bestemming verwijderen (als deze bestaat)

- ... alleen B bestaat: vanuit B kopiëren

- ... alleen C bestaat: vanuit C kopiëren

- ... A, B en C niet gelijk zijn: samenvoegen

- ... A, B en C niet hetzelfde bestandstype hebben (⪚ A is een map en B een bestand): "Fout: Conflicterende bestandstypen". Zolang zulke items bestaan kan het samenvoegen van de mappen niet beginnen.

Bij het samenvoegen van twee mappen is het voorstel voor de operatie: Als voor een item...

- ... beide mappen gelijk zijn: kopiëren vanaf B

- ... A bestaat, maar B niet: kopiëren vanaf A

- ... B bestaat, maar A niet: kopiëren vanaf B

- ... A en B bestaan maar niet gelijk zijn: samenvoegen

- ... A en B niet hetzelfde bestandstype hebben (⪚ A is een map en B een bestand): "Fout: Conflicterende bestandstypen". Zolang zulke items bestaan kan het samenvoegen van de mappen niet beginnen.

Synchronisatiemodus is actief als er slechts twee mappen en geen expliciet doel zijn opgegeven, en als de optie Mappen synchroniseren actief is. &kdiff3; kiest dan een standaard operatie zodanig dat beide mappen naderhand hetzelfde zijn. Als voor een item ...

- ... beide mappen gelijk zijn: er zal niets worden gedaan.

- ... A bestaat, maar B niet: A naar B kopiëren

- ... B bestaat, maar A niet: B naar A kopiëren

- ... A en B bestaan, maar niet gelijk zijn: samenvoegen en het resultaat in beide mappen opslaan. (Voor de gebruiker is de zichtbare opslag-bestandsnaam B, maar &kdiff3; kopieert dan B ook naar A.)

- ... A en B niet hetzelfde bestandstype hebben (⪚ A is een map en B een bestand): "Fout: Conflicterende bestandstypen". Zolang zulke items bestaan kan het samenvoegen van de mappen niet beginnen.

Als twee mappen samengevoegd worden en de optie Nieuwere kopiëren in plaats van samenvoegen (onveilig) geselecteerd is, kijkt &kdiff3; naar de datums en stelt dan voor om het nieuwere bestand te kiezen. Als de bestanden niet gelijk zijn maar wel gelijke datums hebben, bevat de operatie "Fout: Datums zijn gelijk maar bestanden niet." Zolang zulke items bestaan kan het samenvoegen niet beginnen.

#### De statuskolom

Gedurende het samenvoegen wordt het ene bestand na het andere verwerkt. De statuskolom toont Gereed bij items waar het samenvoegen is afgerond, en andere teksten als er iets onverwachts gebeurd is. Als het samenvoegen klaar is, dient u een laatste controle te doen om te zien of de status van alle items goed is.

#### Statistiekkolommen

Als de bestandsvergelijkingsmodus Volledige analyse ingeschakeld is in de opties, toont &kdiff3; extra kolommen met het aantal onopgeloste en opgeloste conflicten en het aantal (niet-)witruimteconflicten. (De kolom Opgelost wordt alleen getoond bij het vergelijken of samenvoegen van drie mappen.)

#### Getoonde bestanden selecteren

Verschillende opties beïnvloeden welke bestanden hier te zien zijn. Sommige van deze opties zijn instelbaar in de instellingendialoog. Het menu Map heeft de volgende items:

- Identieke bestanden tonen: Bestanden die in alle invoermappen gelijk zijn.

- Bestanden die verschillen tonen: Bestanden die in twee of meer mappen voor komen maar niet gelijk zijn.

- Bestanden alleen in A tonen: Bestanden die uitsluitend in A voorkomen, maar niet in B of C.

- Bestanden alleen in B tonen: Bestanden die uitsluitend in B voorkomen, maar niet in A of C.

- Bestanden alleen in C tonen: Bestanden die uitsluitend in C voorkomen, maar niet in A of B.

Schakel alleen de opties Tonen in voor de items die u wilt tonen. Als u bijvoorbeeld alleen items wilt tonen die uitsluitend in A of in B voorkomen, dan moet u Bestanden alleen in A tonen en Bestanden alleen in B tonen inschakelen en alle anderen uitschakelen (Identieke bestanden tonen, Bestanden die verschillen tonen, Bestanden alleen in C tonen). De lijst zal vervolgens onmiddellijk bijgewerkt worden naar de nieuwe instellingen.

Deze keuzemogelijkheden zijn ook geldig voor mappen met een uitzondering: het uitschakelen van Bestanden die verschillen tonen zal niet complete mappen verbergen. Dit werkt alleen voor de bestanden in een map.

Merk op dat alleen de optie Identieke bestanden tonen bewaard wordt. De anderen worden ingeschakeld bij het starten van &kdiff3;.

### Een mapsamenvoeging doen

U kunt het geselecteerde item (bestand of map) samenvoegen, of alle items. Als u alle keuzes voor de operaties hebt gemaakt (ook in alle submappen) kunt u het samenvoegen starten.

Wees erop bedacht dat, als u niet expliciet een doelmap hebt opgegeven, de doelmap C is bij het behandelen van drie mappen, B bij het samenvoegen van twee mappen, en A en/of B in synchronisatiemodus.

Controleer ook als u een doelmap hebt opgegeven of alle items die zich in de uitvoer zouden moeten bevinden, daadwerkelijk in de boomstructuur staan. Er zijn enkele opties die ervoor zorgen dat bepaalde items uit het vergelijken en samenvoegen van mappen worden weggelaten. Controleer deze opties om onplezierige verrassingen te voorkomen:

- Recursieve mappen: Als dit uitgeschakeld is, worden items in submappen niet gevonden.

- Patroon/Anti-patroon: Overeenkomende items al dan niet invoegen

- Verborgen bestanden uitsluiten

- Opties voor tonen (Bestanden die identiek zijn/verschillen, Bestanden alleen in A/B/C)

Als u instellingen heeft gewijzigd om de hoeveelheid zichtbare bestanden in de lijst te vergroten, dan is het daarna noodzakelijk om zelf een rescan uit te voeren via het menu Map Rescan . (De reden hiervoor is dat voor snellere verwerking van de vergelijkingen, &kdiff3; de vergelijkingen niet uitvoert voor bestanden die al uitgesloten zijn.) Als u de bestand- en map-patronen heeft gewijzigd om meer bestanden uit te sluiten dan wordt de bestandenlijst onmiddellijk bijgewerkt bij het sluiten van de keuze-dialoog.

Als u naar een compleet nieuwe map wilt schrijven, dan wilt u meestal ook de identieke bestanden kopiëren. Schakel in dat geval de keuzemogelijkheid Identieke bestanden tonen in. Als uw doelmap een van de invoermappen is, dan is dit niet noodzakelijk omdat de bestanden al aanwezig zijn.

Als u tot hier tevreden bent, is de rest eenvoudig.

Om alle items samen te voegen: kies Mapsamenvoeging starten/voortzetten in het menu Map of druk op F7 (de standaard sneltoets). Om alleen het huidige item samen te voegen: kies Operatie uitvoeren voor huidig item of druk op F6.

Als er door conflicterende bestandstypes nog bestanden zijn met ongeldige operaties, verschijnt er een melding, worden die items aangewezen en kunt u een geldige operatie voor die items kiezen.

Als u alle items samenvoegt, verschijnt er een dialoogvenster met de opties Starten, Simuleren en Annuleren.

- Kies Simuleren als u wilt zien wat er gedaan zou worden, zonder dit werkelijk te doen. Er wordt een uitgebreide lijst van alle bewerkingen getoond.

- Kies anders Starten om het samenvoegen echt te starten.

&kdiff3; voert dan de gekozen operatie uit op alle items. Als u handmatige actie moet ondernemen (samenvoegen van een enkel bestand) verschijnt er een samenvoegvenster (zie de grote schermafdruk).

Als u klaar bent met een bestand, kiest u opnieuw Samenvoegen starten/voortzetten of drukt u op F7. Als u nog niet hebt opgeslagen, wordt er een dialoogvenster getoond dat u vraagt om dat te doen. &kdiff3; gaat dan verder met het volgende item.

Als &kdiff3; een fout tegenkomt, meldt het dit en wordt de uitgebreide statusinformatie getoond. Onderaan deze lijst zullen er wat foutmeldingen staan die u zouden moeten helpen bij het begrijpen van de oorzaak van het probleem. Als u doorgaat met samenvoegen (F7) geeft &kdiff3; u de keuze tussen opnieuw proberen of het item overslaan dat het probleem veroorzaakte. Dit betekent dat u, voordat u doorgaat, een andere bewerking kunt kiezen of het probleem door andere middelen kunt oplossen.

Als het samenvoegen voltooid is, informeert &kdiff3; u hierover via een berichtvenster.

Als sommige items afzonderlijk samengevoegd zijn, onthoudt &kdiff3; dit (tijdens de samenvoegsessie) en worden deze niet opnieuw samengevoegd als later het samenvoegen voor alle items gestart wordt. Zelfs als het samenvoegen overgeslagen is of er niets is opgeslagen, tellen deze items als voltooid. Alleen als u de samenvoegoperatie wijzigt, wordt de status Gereed van het item verwijderd en kan het opnieuw samengevoegd worden.

### Opties voor het vergelijken en samenvoegen van mappen

De voorkeuren van &kdiff3; (menu Instellingen &kdiff3; configureren...) bevatten nu een sectie "Mappen samenvoegen" met deze opties:

Recursieve mappen

- Kies of mappen recursief doorzocht moeten worden.

Bestandspatroon(en):

- Alleen bestanden die hier met een patroon overeenkomen worden in de boom geplaatst. U kunt hier meer dan één patroon opgeven door een puntkomma ";" als scheidingsteken te gebruiken. Geldige jokertekens: '*' en '?' (⪚ "`*.cpp;*.h`"). Standaard is "*". Mappen hoeven niet aan dit patroon te voldoen.

Bestand antipatroon(en):

- Bestanden die met dit patroon overeenkomen worden niet in de boom geplaatst. U kunt hier meer dan één patroon opgeven door een puntkomma ";" als scheidingsteken te gebruiken. Geldige jokertekens: '*' en '?'. Standaard is "`*.orig;*.o;*.obj`".

Map-antipatroon(en):

- Mappen die met dit patroon overeenkomen worden niet in de boom geplaatst. U kunt hier meer dan één patroon opgeven door een puntkomma ";" als scheidingsteken te gebruiken. Geldige jokertekens: '*' en '?'. Standaard is "`CVS;deps;.svn`".

Bestand negeren gebruiken

- Bestanden en mappen negeren die ook door uw beheer van broncode worden genegeerd. Veel automatisch gegenereerde bestanden worden genegeerd door lijsten met te negeren. Het grote voordeel hiervan is dat dit mapspecifiek kan zijn via een lokaal negeerbestand. (Zie documentatie over versiebeheer voor meer details).

Verborgen bestanden en mappen zoeken

- Op sommige bestandssystemen hebben bestanden een attribuut "verborgen". Op andere systemen zorgt een punt "." aan het begin van een bestandsnaam ervoor dat het bestand verborgen is. Met deze optie kunt u deze bestanden al dan niet in de boom laten opnemen. Standaard is aan.

Bestandskoppelingen volgen

- Voor koppelingen naar bestanden: Als dit uitgeschakeld is, worden de koppelingen vergeleken. Als dit ingeschakeld is, worden de bestanden achter de koppelingen vergeleken. Standaard is uit.

Mapkoppelingen volgen

- Voor koppelingen naar mappen: als dit uitgeschakeld is, worden de symbolische koppelingen vergeleken. Als dit ingeschakeld is, worden de koppelingen beschouwd als mappen en recursief ingelezen. (Merk op dat het programma niet controleert of de koppeling "recursief" is. Dus bijvoorbeeld een map die een koppeling naar zichzelf bevat, zorgt voor een oneindige lus, en na enige tijd, als de "stack" overloopt of al het geheugen op is, voor een crash van het programma.) Standaard is uit.

Hoofdlettergevoelige bestandsnaamvergelijking

- Standaard uit onder &Windows;, aan onder andere besturingssystemen.

Bestandsvergelijkingsmodus:

- Binaire vergelijking

- Dit is de standaard vergelijkingsmodus.

Volledige analyse

- Doe een volledige analyse van elk bestand en toon de kolommen met statistische informatie. (Aantal conflicten opgelost en onopgelost, niet-witruimte en witruimte.) De volledige analyse is langzamer dan een eenvoudige binaire analyse, en veel langzamer bij bestanden die geen tekst bevatten. (Geef de van toepassing zijnde bestandsantipatronen op.)

Grootte en wijzigingsdatum vertrouwen (onveilig)

- Als u grote mappen over een langzaam netwerk vergelijkt, kan het sneller om alleen de wijzigingsdatums en bestandsgroottes te vergelijken. Deze snelheidsverbetering brengt echter wat onzekerheid met zich mee. Wees voorzichtig bij het gebruiken van deze optie. Standaard is uit.

Grootte vertrouwen (onveilig)

- Vergelijkbaar met het vertrouwen van de wijzigingsdatum. Er vindt geen echte vergelijking plaats. Twee bestanden worden als gelijk beschouwd als ze dezelfde grootte hebben. Dit is nuttig als de kopieeroperatie de wijzigingsdatum niet intact heeft gehouden. Wees voorzichtig bij het gebruiken van deze optie. Standaard is uit.

Mappen synchroniseren

- Activeert de synchronisatiemodus als twee mappen vergeleken worden en er geen expliciete doelmap is opgegeven. In deze modus worden de voorgestelde operaties dusdanig gekezen dat beide bronmappen na de synchronisatie gelijk zijn. Het resultaat van het samenvoegen wordt ook naar beide mappen geschreven. Standaard is uit.

Nieuwere bestanden kopiëren in plaats van samenvoegen (onveilig)

- In plaats van het uitvoeren van de voorgestelde operatie wordt het nieuwere bestand gekopieerd als er wijzigingen zijn opgetreden. (Dit wordt als onveilig beschouwd, want het veronderstelt dat u weet dat het andere bestand niet ook gewijzigd is. Controleer dit in elk geval.) Standaard is uit.

Reservekopie aanmaken (.orig)

- Als een bestand of gehele map door een andere wordt vervangen of verwijderd wordt, wordt de originele versie hernoemd met de extensie `.orig`. Als een oud reservekopiebestand met de extensie `.orig` al bestaat, wordt dit zonder reservekopie verwijderd. Dit beïnvloedt ook het normale samenvoegen van enkele bestanden, niet alleen bij het samenvoegen van mappen. Standaard is aan.

### Andere mogelijkheden in het mappen-samenvoegenvenster

#### Splitsen / Volledig-scherm-modus

Normaal gesproken blijft de lijstweergave voor het samenvoegen van mappen zichtbaar als er een enkel bestand wordt vergeleken of samengevoegd. Met de muis kunt u de splitsbalk verplaatsen die de bestandenlijst van de verschillenvensters scheidt. Als u dat niet wilt, kunt u met menu-item Map Map && Gesplist scherm tekstweergave uitschakelen. U kunt dan Map Weergave omschakelen kiezen om tussen de bestandenlijst en de tekstverschillenweergave over te schakelen, die dan het volledige scherm in beslag nemen.

#### Een enkel bestand vergelijken of samenvoegen

U dubbelklikt waarschijnlijk het liefst op een bestand om het te vergelijken. Desalniettemin is er hiervoor ook een item in het menu Map. U kunt ook direct een enkel bestand samenvoegen, door menu-item Samenvoegen Huidig bestand samenvoegen te kiezen. Als u het resultaat opslaat, wordt de status op "voltooid" gezet en wordt het bestand niet opnieuw samengevoegd als er een mapsamenvoeging wordt gestart.

Merk op dat deze statusinformatie verloren gaat als u de map opnieuw scant: Map Opnieuw scannen

#### Bestanden net verschillende namen vergelijken of samenvoegen

Soms wilt u bestanden met verschillende namen vergelijken of samenvoegen (⪚ het huidige bestand en de reservekopie in dezelfde map).

Selecteer het juiste bestand door op het pictogram in de kolom A, B of C te klikken. Het eerste geselecteerde bestand zal gemarkeerd worden met een A, het tweede en derde met B en C onafhankelijk van de kolom waarin ze zijn. Er kunnen maximaal drie bestanden op deze manier gekozen worden.

Ga verder door menu-item Map Expliciet geselecteerde bestanden vergelijken of Map Expliciet geselecteerde bestanden samenvoegen te selecteren. Om het u makkelijker te maken verschijnt dit menu-item ook als contextmenu wanneer u met de &RMB; op het laatst geselecteerde bestand klikt.

Het vergelijken of samenvoegen gebeurt in hetzelfde venster. Als u deze methode gebruikt bij mappen dan wordt een nieuw venster geopend.

## Diverse onderwerpen

### Netwerktransparantie via KIO

#### KIO-slaves

De KIO-bibliotheek van &frameworks; biedt netwerktransparantie via KIO-slaves. &kdiff3; gebruikt dit om invoerbestanden en mappen te lezen. Dit betekent dat u bestanden en mappen op lokale en externe bronnen kunt opgeven via &URL;'s.

Voorbeeld:

    kdiff3 test.cpp  ftp://ftp.verweg.org/test.cpp
       kdiff3 tar:/home/hacker/archief.tar.gz/map ./map

De eerste regel vergelijkt een lokaal bestand met een bestand op een &FTP;-server. De tweede regel vergelijkt een map binnen een gecomprimeerd archief met een lokale map.

Andere interessante KIO-slaves zijn:

- Bestanden op het www (http:),

- Bestanden uit de &FTP; (ftp:),

- Versleutelde bestandsoverdracht (fish:, sftp:),

- &Windows;-hulpbronnen (smb:),

- Lokale bestanden (file:).

Andere (waarschijnlijk minder nuttige) mogelijkheden zijn:

- Man-pagina's (man:),

- info-pagina's (info:).

#### Hoe &URL;-adressen te schrijven

Een &URL; heeft een andere syntaxis vergeleken met paden naar lokale bestanden en mappen. U dient met een aantal zaken rekening te houden:

- Een pad kan relatief zijn en "." of ".." bevatten. Dit is niet mogelijk met &URL;-adressen, die altijd absoluut zijn.

- Speciale tekens dienen omgezet te worden. ("`#`" -> "`%23`", spatie ->"`%20`", &etc;) Een bestand met de naam "`#`foo`#`" wordt bijvoorbeeld het &URL;-adres "file:/`%23`foo`%23`".

- Als &URL;-adressen niet werken zoals u verwacht, probeer ze dan eerst in &konqueror; te openen.

#### Mogelijkheden van KIO-slaves

Netwerktransparantie heeft één nadeel: niet alle bronnen hebben dezelfde mogelijkheden.

Soms ligt dit aan het bestandssysteem van de server, soms aan het protocol. Een korte lijst van beperkingen:

- Er is soms geen ondersteuning voor koppelingen.

- Of er is geen manier om te onderscheiden of een koppeling naar een map of een bestand verwijst, er wordt dan altijd van bestanden uitgegaan (ftp:, sftp:).

- De bestandsgrootte kan niet altijd bepaald worden.

- Beperkte ondersteuning voor permissies.

- Geen mogelijkheden om permissies of wijzigingsdatums te veranderen, zodat de permissies of tijd van een kopie verschillen van het origineel. (Zie de optie Grootte vertrouwen (onveilig)). (Rechten of wijzigingsdatum veranderen is alleen mogelijk bij lokale bestanden).

### &kdiff3; als een KPart gebruiken

&kdiff3; is een KPart. Het implementeert momenteel de interface KParts::ReadOnlyPart.

Het belangrijkste gebruik is als een weergever van verschillen in &kdevelop;. &kdevelop; start altijd eerst de interne weergever van verschillen. Om &kdiff3; op te starten klikt u met de &RMB; op het verschilvenster en kiest u In KDiff3Part tonen uit het contextmenu.

&kdiff3; vereist normaal gesproken twee complete bestanden als invoer. Als het als een KPart gebruikt wordt, neemt &kdiff3; aan dat het invoerbestand een patch-bestand in het standaard formaat is. &kdiff3; haalt dan de twee bestandsnamen op uit het patch-bestand. Minstens één van de twee bestanden moet beschikbaar zijn. &kdiff3; roept dan `patch` aan om het andere bestand opnieuw te maken.

In &dolphin; kunt u een patch-bestand selecteren en item Tonen in KDiff3Part uit het contextmenu kiezen. Merk op dat dit niet werkt als geen van de originele bestanden beschikbaar is en dat het niet betrouwbaar is als een origineel bestand gewijzigd is sinds het patch-bestand gegenereerd is.

Als het als een KPart gestart wordt, biedt &kdiff3; alleen een verschillenmodus voor twee bestanden, een kleine werkbalk en een menu. Samenvoegen of mappen vergelijken worden dan niet ondersteund.

### &kdiff3; gebruiken als een &git; Diff en hulpmiddel voor samenvoegen

&kdiff3; kan gebruikt worden als een hulpmiddel &git;-diff en merge.

Voeg eenvoudig de volgende regels toe in uw bestand `gitconfig`.

    [diff]
            tool = kdiff3
    [difftool "kdiff3"]
            path = <pad naar kdiff3 programma in uw systeem>
    [difftool]
            prompt = false
            keepBackup = false
            trustExitCode = false
    [merge]
            tool = kdiff3
    [mergetool]
            prompt = false
            keepBackup = false
            keepTemporaries = false
    [mergetool "kdiff3"]
            path = <pad naar kdiff3 programma in uw systeem
    >

Om dan de verschillen te zien tussen twee commits, gebruik `git difftool `eerste_hash` `tweede_hash` --tool=kdiff3 --cc `een_bestand_in_de_git_boomstructuur``

Om een branch samen te voegen met &kdiff3;, gebruik `git merge `branch_naam` && git mergetool --tool=kdiff3`

Na het oplossen van conflicten bij het samenvoegen op de gebruikelijke manier is het genoeg een commit te doen voor de wijzigingen.

## Vraag en antwoord

&reporting.bugs; &updating.documentation;

Waarom heet het "&kdiff3;"?

Hulpmiddelen met de naam KDiff en KDiff2 (nu genaamd &kompare;) bestaan al. &kdiff3; moet ook suggereren dat het kan samenvoegen, net als het hulpmiddel `diff3` in de Diff-Tool-verzameling.

Waarom heb ik het onder GPL uitgegeven?

Ik gebruik al heel lang GPL-programma's en heb veel geleerd door de vele broncodes te bekijken. Dit is daarom mijn dankbetuiging aan alle programmeurs die hetzelfde hebben gedaan of zullen doen.

Sommige knoppen en functies ontbreken. Wat is er mis?

U hebt waarschijnlijk vanuit de broncode gecompileerd zonder het juiste prefix voor de installatie op te geven. Standaard wil `cmake` installeren in de `/usr/local`, maar het bronbestand voor de gebruikersinterface (&ie; `kdiff3ui.rc`) is dan niet te vinden. Het bestand `README` bevat meer informatie over de juiste prefix.

Regels die op elkaar lijken maar niet hetzelfde zijn, verschijnen vaak naast elkaar, maar soms niet. Waarom?

Regels waar alleen de hoeveelheid witruimte verschillend is worden in eerste instantie als "gelijk" beschouwd, terwijl slechts één verschillend niet-witruimte-teken ervoor zorgt dat de regels "verschillend" zijn. Als op elkaar lijkende regels naast elkaar verschijnen is dit slechts toeval, maar dit is gelukkig vaak het geval. Zie ook Handboek Diff-hulp.

Waarom moeten alle conflicten opgelost worden voordat het resultaat opgeslagen kan worden?

Voor elke gelijke of verschillende sectie onthoudt de editor in het resultaatvenster waar deze begint en eindigt. Dit is nodig omdat dan conflicten handmatig opgelost kunnen worden door op de knop van de broncode (A, B of C) te drukken. Deze informatie is opgelost bij het opslaan als tekst en het is te veel werk om een speciaal bestandsformaat te maken waarmee alle benodigde informatie opgeslagen en ingelezen kan worden.

Hoe kan ik het verschillenvenster en het samenvoegvenster synchroniseren zodat alle vensters dezelfde tekstpositie tonen?

Klik in de kolom samenvatting links van de tekst. (Zie ook hier.)

Waarom geeft `git difftool --dir-diff` "Fout door mix van koppelingen en normale bestanden" bij gebruik van KDiff3 als het diff-hulpmiddel?

Dit is een zijeffect van de interne werking van git. Als u een vorige revisie met de huidige werkveld wilt vergelijken zal git actuele bestanden de vorige commit representeren vergelijken met symbolische koppelingen die verwijzen naar het werkveld. Vanaf 1.9 heeft KDiff3 standaard Bestandskoppelingen volgen en Mapkoppelingen volgen aan staan. Eerder stonden deze standaard uit. Dit gaf geen problemen wanneer "Volledige analyse" ook uit stond. Echter, met Volledige analyse aan zou KDiff3 initieel het pad waarnaar een koppeling wijst vergelijken in plaats van het dan te volgen. Eerder dan 1.8 werd de resulterende fout genegeerd. Versie 1.8 begon de fout te rapporteren.

Waarom heeft de editor in het resultaatvenster geen functie "ongedaan maken"?

Dit was tot nu toe te veel werk. U kunt altijd een versie vanuit ene bron (A, B of C) herstellen daar op de overeenkomstige knop te klikken. Voor grote wijzigingen wordt het gebruik van een andere editor sowieso aanbevolen.

Toen ik wat tekst verwijderde, verscheen plotseling "<Geen regel in de bron>" en ik kon dit niet verwijderen. Wat betekent dit en hoe kan ik dit verwijderen?

Voor elke gelijke of verschillende sectie onthoudt de editor in het resultaatvenster waar deze begint en eindigt. "<Geen regel in de bron>" betekent dat er niets over is in de sectie (zelfs geen regeleinde). Dit kan tijdens automatisch samenvoegen of tijdens bewerken gebeuren. Dit is geen probleem, want de aanwijzing verschijnt niet in het opgeslagen bestand. Als u de originele bron terug wilt, selecteert u de sectie (klik op de linker overzichtkolom) en klikt u op de knop van de bron met de gewenste inhoud (A, B of C).

Waarom ondersteunt &kdiff3; geen syntaxis-accentuering?

&kdiff3; gebruikt al veel kleuren voor het accentueren van verschillen. Meer accentuering zou verwarrend worden, gebruik daar een andere editor voor.

Kan ik &kdiff3; gebruiken om OpenOffice.org, &Microsoft; Word, &Microsoft; Excel, &PDF;, &etc; bestanden gebruik?

Hoewel &kdiff3; elk soort bestand zal analyseren zal het resultaat waarschijnlijk niet erg bevredigend voor u zijn.

&kdiff3; is ontworpen om pure tekstbestanden te vergelijken. OpenOffice.org, &Microsoft; Word, &Microsoft; Excel &etc; slaan in de bestanden veel meer informatie op (over lettertypes, afbeeldingen, pagina's, kleuren &etc;) waarover &kdiff3; niets weet. Daarom zal &kdiff3; de inhoud van het bestand u als pure tekst tonen, maar dit kan onleesbaar zijn of er minstens zeer vreemd uitzien.

Omdat meer en meer programma's hun data opslaan in het &XML;-formaat, is er een kans dat u het als pure tekst kunt lezen. Hoewel de kans dus klein is, kan &kdiff3; u misschien nog steeds helpen.

Als u alleen de tekst wilt vergelijken (zonder ingebedde objecten zoals afbeeldingen), dan is het gebruikt van menu-items Bewerken Alles selecteren en Bewerken Kopiëren in uw programma de interessante tekst te kopiëren naar het klembord en vervolgens in &kdiff3; de tekst in een verschillenvenster te plakken. (Lees ook Selecteren, kopiëren en plakken.)

Waar is de mapoptie Alleen delta's tonen heen gegaan?

Er zijn nu verschillende Opties "Tonen" in het menu Map. Het uitschakelen van Identieke bestanden tonen zal hetzelfde resultaat hebben als het inschakelen van Alleen delta's tonen vroeger had.

Hoe kan ik een grote selectie maken in het verschillenvenster als het scrollen zo langzaam gaat?

Begin zoals gewoonlijk met de selectie (klik en houdt de &LMB; ingedrukt). Gebruik vervolgens de navigatieknoppen (⪚ &PgUp;, &PgDn;) terwijl u de &LMB; ingedrukt houd. (Lees ook Selecteren, kopiëren en plakken).

Er staat hier zo veel informatie, maar uw vraag is nog niet beantwoord?

Stuur me uw vraag. Ik stel alle opmerkingen op prijs.

## Dankbetuigingen en licentie

&kdiff3; - Hulpmiddel voor vergelijken en samenvoegen van bestanden en mappen

Programma copyright 2002-2007 Joachim Eibl joachim.eibl at gmx.de

Diverse gave ideeën en bugrapporten van collega's en veel mensen op het Wilde Wilde Web. Bedankt!

Documentatie copyright © 2002-2007 Joachim Eibl joachim.eibl at gmx.de

Documentatie Copyright © 2017-2019 Michael Reeves reeves.87 at gmail.com

&meld.fouten;&vertaling.sander;&vertaling.freek; &underFDL; &underGPL;
&documentation.index;