comparison kdiff3/doc/en/index.docbook @ 66:efe33e938730

0.9.86
author joachim99
date Thu, 16 Sep 2004 02:40:08 +0000
parents c59d5a3a8ff3
children d7cafcda8c99
comparison
equal deleted inserted replaced
65:8ea11c8efeb5 66:efe33e938730
20 <!--<personname>--> 20 <!--<personname>-->
21 <firstname>Joachim</firstname> 21 <firstname>Joachim</firstname>
22 <surname>Eibl</surname> 22 <surname>Eibl</surname>
23 <!--</personname>--> 23 <!--</personname>-->
24 <affiliation><address> 24 <affiliation><address>
25 <email>joachim.eibl@gmx.de</email> 25 <email>joachim.eibl at gmx.de</email>
26 </address></affiliation> 26 </address></affiliation>
27 </author> 27 </author>
28 </authorgroup> 28 </authorgroup>
29 29
30 <!-- TRANS:ROLES_OF_TRANSLATORS --> 30 <!-- TRANS:ROLES_OF_TRANSLATORS -->
31 31
32 <copyright> 32 <copyright>
33 <year>2002-2003</year> 33 <year>2002-2004</year>
34 <holder>Joachim Eibl</holder> 34 <holder>Joachim Eibl</holder>
35 </copyright> 35 </copyright>
36 <!-- Translators: put here the copyright notice of the translation --> 36 <!-- Translators: put here the copyright notice of the translation -->
37 <!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook 37 <!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
38 and in the FDL itself on how to use it. --> 38 and in the FDL itself on how to use it. -->
43 need them for translation coordination ! 43 need them for translation coordination !
44 Please respect the format of the date (YYYY-MM-DD) and of the version 44 Please respect the format of the date (YYYY-MM-DD) and of the version
45 (V.MM.LL), it could be used by automation scripts. 45 (V.MM.LL), it could be used by automation scripts.
46 Do NOT change these in the translation. --> 46 Do NOT change these in the translation. -->
47 47
48 <date>2003-12-07</date> 48 <date>2004-05-29</date>
49 <releaseinfo>0.9.80</releaseinfo> 49 <releaseinfo>0.9.84</releaseinfo>
50 50
51 51
52 <abstract> 52 <abstract>
53 <para></para> 53 <para></para>
54 <para> 54 <para>
60 <listitem><para>has an editor for comfortable solving of merge-conflicts,</para></listitem> 60 <listitem><para>has an editor for comfortable solving of merge-conflicts,</para></listitem>
61 <listitem><para>provides networktransparency via KIO,</para></listitem> 61 <listitem><para>provides networktransparency via KIO,</para></listitem>
62 <listitem><para>has options to highlight or hide changes in white-space or comments.</para></listitem> 62 <listitem><para>has options to highlight or hide changes in white-space or comments.</para></listitem>
63 </itemizedlist> 63 </itemizedlist>
64 </para><para> 64 </para><para>
65 This document describes KDiff3-version 0.9.80. 65 This document describes KDiff3-version 0.9.84.
66 </para> 66 </para>
67 </abstract> 67 </abstract>
68 68
69 <!-- This is a set of Keywords for indexing by search engines. 69 <!-- This is a set of Keywords for indexing by search engines.
70 Please at least include KDE, the KDE package it is in, the name 70 Please at least include KDE, the KDE package it is in, the name
203 editor even conflicts which need further corrections can be solved here without 203 editor even conflicts which need further corrections can be solved here without
204 requiring another tool. 204 requiring another tool.
205 </para> 205 </para>
206 </sect2> 206 </sect2>
207 207
208 <sect2><title> And ...</title> 208 <sect2><title>And ...</title>
209 <itemizedlist> 209 <itemizedlist>
210 <listitem><para> Fast navigation via buttons.</para></listitem> 210 <listitem><para>Fast navigation via buttons.</para></listitem>
211 <listitem><para> A mouse-click into a summary column sync's all windows to show the same position.</para></listitem> 211 <listitem><para>A mouse-click into a summary column sync's all windows to show the same position.</para></listitem>
212 <listitem><para> Select and copy from any window and paste into the merge result window.</para></listitem> 212 <listitem><para>Select and copy from any window and paste into the merge result window.</para></listitem>
213 <listitem><para> Overview column that shows where the changes and conflicts are.</para></listitem> 213 <listitem><para>Overview column that shows where the changes and conflicts are.</para></listitem>
214 <listitem><para> The colors are adjustable to your specific preferences.</para></listitem> 214 <listitem><para>The colors are adjustable to your specific preferences.</para></listitem>
215 <listitem><para> Adjustable Tab size.</para></listitem> 215 <listitem><para>Adjustable Tab size.</para></listitem>
216 <listitem><para> Option to insert spaces instead of tabs.</para></listitem> 216 <listitem><para>Option to insert spaces instead of tabs.</para></listitem>
217 <listitem><para> Open files comfortably via dialog or specify files on the command line.</para></listitem> 217 <listitem><para>Open files comfortably via dialog or specify files on the command line.</para></listitem>
218 <listitem><para> Search for strings in all text windows. Find (Ctrl-F) and Find Next (F3)</para></listitem> 218 <listitem><para>Search for strings in all text windows. Find (Ctrl-F) and Find Next (F3)</para></listitem>
219 <listitem><para> Show the line numbers for each line. </para></listitem> 219 <listitem><para>Show the line numbers for each line. </para></listitem>
220 <listitem><para> Paste clipboard or drag text into a diff input window.</para></listitem> 220 <listitem><para>Paste clipboard or drag text into a diff input window.</para></listitem>
221 <listitem><para> Networktransparency via KIO.</para></listitem> 221 <listitem><para>Networktransparency via KIO.</para></listitem>
222 <listitem><para> Can be used as diff-viewer in KDevelop 3.</para></listitem> 222 <listitem><para>Can be used as diff-viewer in KDevelop 3.</para></listitem>
223 <listitem><para> ...</para></listitem> 223 <listitem><para>Word-wrap for long lines.</para></listitem>
224 <listitem><para>...</para></listitem>
224 </itemizedlist> 225 </itemizedlist>
225 </sect2> 226 </sect2>
226 </sect1> 227 </sect1>
227 </chapter> 228 </chapter>
228 229
283 </sect2> 284 </sect2>
284 285
285 <sect2><title>For more information on command line options use: </title> 286 <sect2><title>For more information on command line options use: </title>
286 <screen> 287 <screen>
287 <command>kdiff3</command> --help 288 <command>kdiff3</command> --help
289 Options:
290 -m, --merge Merge the input.
291 -b, --base file Explicit base file. For compatibility with certain tools.
292 -o, --output file Output file. Implies -m. E.g.: -o newfile.txt
293 --out file Output file, again. (For compatibility with certain tools.)
294 --auto No GUI if all conflicts are auto-solvable. (Needs -o file)
295 --qall Don't solve conflicts automatically. (For compatibility...)
296 --L1 alias1 Visible name replacement for input file 1 (base).
297 --L2 alias2 Visible name replacement for input file 2.
298 --L3 alias3 Visible name replacement for input file 3.
299 -L, --fname alias Alternative visible name replacement. Supply this once for every input.
300 -u Has no effect. For compatibility with certain tools.
288 </screen> 301 </screen>
289 </sect2> 302 </sect2>
290 303
291 </sect1> 304 </sect1>
292 305
369 space is not so important this is useful to see at one glance if anything 382 space is not so important this is useful to see at one glance if anything
370 of importance was modified. (In C/C++ white space is only interesting within 383 of importance was modified. (In C/C++ white space is only interesting within
371 strings, comments, for the preprocessor, and some only very esoteric situations.) 384 strings, comments, for the preprocessor, and some only very esoteric situations.)
372 </para><para> 385 </para><para>
373 The vertical line separating the summary column and the text is interrupted 386 The vertical line separating the summary column and the text is interrupted
374 if the input file had no lines there. 387 if the input file had no lines there. When word-wrap is enabled then this vertical
388 line appears dotted for wrapped lines.
375 </para><para> 389 </para><para>
376 On the right side a "overview"-column is visible left of the vertical scrollbar. 390 On the right side a "overview"-column is visible left of the vertical scrollbar.
377 It shows the compressed summary column of input "A". All the differences 391 It shows the compressed summary column of input "A". All the differences
378 and conflicts are visible at one glance. When only two input windows are 392 and conflicts are visible at one glance. When only two input windows are
379 used, then all differences appear red here because every difference is 393 used, then all differences appear red here because every difference is
601 <varlistentry><term><emphasis> Tab size:</emphasis></term><listitem><para> Can be adjusted for your specific needs. Default is 8. </para></listitem></varlistentry> 615 <varlistentry><term><emphasis> Tab size:</emphasis></term><listitem><para> Can be adjusted for your specific needs. Default is 8. </para></listitem></varlistentry>
602 <varlistentry><term><emphasis> Auto indentation:</emphasis></term><listitem><para> When pressing Enter or Return the indentation 616 <varlistentry><term><emphasis> Auto indentation:</emphasis></term><listitem><para> When pressing Enter or Return the indentation
603 of the previous line is used for the new line. </para></listitem></varlistentry> 617 of the previous line is used for the new line. </para></listitem></varlistentry>
604 <varlistentry><term><emphasis> Auto copy selection:</emphasis></term><listitem><para> Every selection is immediately copied 618 <varlistentry><term><emphasis> Auto copy selection:</emphasis></term><listitem><para> Every selection is immediately copied
605 to the clipboard when active and you needn't explicitely copy it. </para></listitem></varlistentry> 619 to the clipboard when active and you needn't explicitely copy it. </para></listitem></varlistentry>
620 <varlistentry><term><emphasis> Line end style:</emphasis></term><listitem><para> When saving you can select what line
621 end style you prefer. The default setting is the common choice for the used operating system. </para></listitem></varlistentry>
606 <varlistentry><term><emphasis> Use locale encoding:</emphasis></term><listitem><para> For displaying foreign characters. 622 <varlistentry><term><emphasis> Use locale encoding:</emphasis></term><listitem><para> For displaying foreign characters.
607 Try changing this if some characters of your language aren't displayed correctly. </para></listitem></varlistentry> 623 Try changing this if some characters of your language aren't displayed correctly. </para></listitem></varlistentry>
608 </variablelist> 624 </variablelist>
609 </sect2> 625 </sect2>
610 626
630 as white space. 646 as white space.
631 </para></listitem></varlistentry> 647 </para></listitem></varlistentry>
632 <varlistentry><term><emphasis>Ignore C/C++ comments:</emphasis></term><listitem><para> Default is off. 648 <varlistentry><term><emphasis>Ignore C/C++ comments:</emphasis></term><listitem><para> Default is off.
633 Changes in comments will be treated like changes in white space. 649 Changes in comments will be treated like changes in white space.
634 </para></listitem></varlistentry> 650 </para></listitem></varlistentry>
635 <varlistentry><term><emphasis>Convert to Upper Case:</emphasis></term><listitem><para> Default is off. Converts the input to upper case 651 <varlistentry><term><emphasis>Ignore case:</emphasis></term><listitem><para> Default is off.
636 while reading. Hence the comparison is not case sensitive. Take care during merging 652 Case-differences of characters (like 'A' vs. 'a') will be treated like changes in white space.
637 because the case information will be lost in the merge-result too.
638 </para></listitem></varlistentry> 653 </para></listitem></varlistentry>
639 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para> 654 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para>
640 When any file is read, it will be piped through this external command. 655 See <link linkend="preprocessors">next section</link>.
641 The output of this command will be visible instead of the original file.
642 You can write your own preprocessor that fulfills your specific needs.
643 Use this to cut away disturbing parts of the file, or to automatically
644 correct the indentation etc.
645 </para></listitem></varlistentry> 656 </para></listitem></varlistentry>
646 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para> 657 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para>
647 When any file is read, it will be piped through this external command. If 658 See <link linkend="preprocessors">next section</link>.
648 a preprocessor-command (see above) is also specified, then the output of the
649 preprocessor is the input of the line-matching preprocessor.
650 The output will only be used during the line matching phase of the analysis.
651 You can write your own preprocessor that fulfills your specific needs.
652 Each input line must have a corresponding output line.
653 </para></listitem></varlistentry> 659 </para></listitem></varlistentry>
654 <varlistentry><term><emphasis>Try Hard:</emphasis></term><listitem><para> 660 <varlistentry><term><emphasis>Try Hard:</emphasis></term><listitem><para>
655 Try hard to find an even smaller delta. (Default is on.) This will probably 661 Try hard to find an even smaller delta. (Default is on.) This will probably
656 be effective for complicated and big files. And slow for very big files. 662 be effective for complicated and big files. And slow for very big files.
657 </para></listitem></varlistentry> 663 </para></listitem></varlistentry>
696 the visible spaces and tabs are disturbing. You can turn this off.</para></listitem></varlistentry> 702 the visible spaces and tabs are disturbing. You can turn this off.</para></listitem></varlistentry>
697 <varlistentry><term><emphasis>Show white space:</emphasis></term><listitem><para> Turn this off to suppress 703 <varlistentry><term><emphasis>Show white space:</emphasis></term><listitem><para> Turn this off to suppress
698 any highlighting of white-space-only changes in the text or overview-columns. 704 any highlighting of white-space-only changes in the text or overview-columns.
699 (Note that this also applies to changes in numbers or comments if the options "Ignore numbers" 705 (Note that this also applies to changes in numbers or comments if the options "Ignore numbers"
700 or "Ignore C/C++ comments" are active.)</para></listitem></varlistentry> 706 or "Ignore C/C++ comments" are active.)</para></listitem></varlistentry>
707 <varlistentry><term><emphasis>Overview options:</emphasis></term><listitem><para>
708 These choices are only available when you compare three files. In normal mode all
709 differences are shown in one color-coded overview-column. But sometimes you are
710 especially interested in the differences between only two of these three files.
711 Selecting "A vs. B", "A vs. C" or "B vs. C"-overview will show a second overview
712 column with the required information next to the normal overview.
713 </para></listitem></varlistentry>
714 <varlistentry><term><emphasis>Word wrap diff windows:</emphasis></term><listitem><para>
715 Wrap lines when their length would exceed the width of a window.
716 </para></listitem></varlistentry>
701 <varlistentry><term><emphasis>Show Window A/B/C:</emphasis></term><listitem><para> Sometimes you want to use the space on 717 <varlistentry><term><emphasis>Show Window A/B/C:</emphasis></term><listitem><para> Sometimes you want to use the space on
702 the screen better for long lines. Hide the windows that are not important. 718 the screen better for long lines. Hide the windows that are not important.
703 (In the Windows-menu.)</para></listitem></varlistentry> 719 (In the Windows-menu.)</para></listitem></varlistentry>
704 <varlistentry><term><emphasis>Toggle Split Orientation:</emphasis></term><listitem><para> 720 <varlistentry><term><emphasis>Toggle Split Orientation:</emphasis></term><listitem><para>
705 Switch between diff windows shown next to each other (A left of B left of C) or above 721 Switch between diff windows shown next to each other (A left of B left of C) or above
717 733
718 <sect2 id="shortcuts"><title>Configuring Keyboard-Shortcuts</title> 734 <sect2 id="shortcuts"><title>Configuring Keyboard-Shortcuts</title>
719 <para> 735 <para>
720 Currently only the KDE-version supports user-configurable keyboard-shortcuts. 736 Currently only the KDE-version supports user-configurable keyboard-shortcuts.
721 (Menu Settings->Configure Shortcuts...) 737 (Menu Settings->Configure Shortcuts...)
738 </para>
739 </sect2>
740 </sect1>
741
742 <sect1 id="preprocessors"><title>Preprocessor Commands</title>
743 <para>
744 KDiff3 supports two preprocessor options.
745 </para><para>
746 <variablelist>
747 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para>
748 When any file is read, it will be piped through this external command.
749 The output of this command will be visible instead of the original file.
750 You can write your own preprocessor that fulfills your specific needs.
751 Use this to cut away disturbing parts of the file, or to automatically
752 correct the indentation etc.
753 </para></listitem></varlistentry>
754 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para>
755 When any file is read, it will be piped through this external command. If
756 a preprocessor-command (see above) is also specified, then the output of the
757 preprocessor is the input of the line-matching preprocessor.
758 The output will only be used during the line matching phase of the analysis.
759 You can write your own preprocessor that fulfills your specific needs.
760 Each input line must have a corresponding output line.
761 </para></listitem></varlistentry>
762 </variablelist>
763 </para>
764 <para>
765 The idea is to allow the user greater flexibility while configuring the diff-result.
766 But this requires an external program, and many users don't want to write one themselves.
767 The good news is that very often <command>sed</command> or <command>perl</command>
768 will do the job.
769 </para>
770 <para>Example: Simple testcase: Consider file a.txt (6 lines):
771 <screen>
772 aa
773 ba
774 ca
775 da
776 ea
777 fa
778 </screen>
779 And file b.txt (3 lines):
780 <screen>
781 cg
782 dg
783 eg
784 </screen>
785 Without a preprocessor the following lines would be placed next to each other:
786 <screen>
787 aa - cg
788 ba - dg
789 ca - eg
790 da
791 ea
792 fa
793 </screen>
794 This is probably not wanted since the first letter contains the actually interesting information.
795 To help the matching algorithm to ignore the second letter we can use a line matching preprocessor
796 command, that replaces 'g' with 'a':
797 <screen>
798 <command>sed</command> 's/g/a/'
799 </screen>
800 With this command the result of the comparison would be:
801 <screen>
802 aa
803 ba
804 ca - cg
805 da - dg
806 ea - eg
807 fa
808 </screen>
809 Internally the matching algorithm sees the files after running the line matching preprocessor,
810 but on the screen the file is unchanged. (The normal preprocessor would change the data also on
811 the screen.)
812 </para>
813
814 <sect2 id="sedbasics"><title><command>sed</command> Basics</title>
815 <para>
816 This section only introduces some very basic features of <command>sed</command>. For more
817 information see <ulink url="info:/sed">info:/sed</ulink> or
818 <ulink url="http://www.gnu.org/software/sed/manual/html_mono/sed.html">
819 http://www.gnu.org/software/sed/manual/html_mono/sed.html</ulink>.
820 A precompiled version for Windows can be found at <ulink url="http://unxutils.sourceforge.net">
821 http://unxutils.sourceforge.net</ulink>.
822 Note that the following examples assume that the <command>sed</command>-command is in some
823 directory in the PATH-environment variable. If this is not the case, you have to specify the full absolute
824 path for the command. Also note that the following examples use the single quotation mark (') which won't work for Windows.
825 On Windows you should use the double quotation marks (") instead.
826 </para>
827 <para>
828 In this context only the <command>sed</command>-substitute-command is used:
829 <screen>
830 <command>sed</command> 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>'
831 </screen>
832 Before you use a new command within KDiff3, you should first test it in a console.
833 Here the <command>echo</command>-command is useful. Example:
834 <screen>
835 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/'
836 -> obrakadabra
837 </screen>
838 This example shows a very simple sed-command that replaces the first occurance
839 of "a" with "o". If you want to replace all occurances then you need the "g"-flag:
840 <screen>
841 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g'
842 -> obrokodobro
843 </screen>
844 The "|"-symbol is the pipe-command that transfers the output of the previous
845 command to the input of the following command. If you want to test with a longer file
846 then you can use <command>cat</command> on Unix-like systems or <command>type</command>
847 on Windows-like systems. <command>sed</command> will do the substitution for each line.
848 <screen>
849 <command>cat</command> <replaceable>filename</replaceable> | <command>sed</command> <replaceable>options</replaceable>
850 </screen>
851 </para>
852 </sect2>
853 <sect2 id="sedforkdiff3"><title>Examples For <command>sed</command>-Use In KDiff3</title>
854 <sect3><title>Ignoring Other Types Of Comments</title>
855 <para>
856 Currently KDiff3 understands only C/C++ comments. Using the
857 Line-Matching-Preprocessor-Command you can also ignore
858 other types of comments, by converting them into C/C++-comments.
859
860 Example: To ignore comments starting with "#", you would like to convert them
861 to "//". Note that you also must enable the "Ignore C/C++-Comments" option to get
862 an effect. An appropriate Line-Matching-Preprocessor-Command would be:
863
864 <screen>
865 <command>sed</command> 's/#/\/\//'
866 </screen>
867 Since for <command>sed</command> the "/"-character has a special meaning, it is necessary to place the
868 "\"-character before each "/" in the replacement-string. Sometimes the "\" is required
869 to add or remove a special meaning of certain characters. The single quotation marks (') before
870 and after the substitution-command are important now, because otherwise the shell will
871 try to interpret some special characters like '#', '$' or '\' before passing them to
872 <command>sed</command>. Note that on Windows you will need the double quotation marks (") here. Windows
873 substitutes other characters like '%', so you might have to experiment a little bit.
874 </para>
875 </sect3>
876 <sect3><title>Caseinsensitive Diff</title>
877 <para>
878 Use the following Line-Matching-Preprocessor-Command to convert all input to uppercase:
879 <screen>
880 <command>sed</command> 's/\(.*\)/\U\1/'
881 </screen>
882 Here the ".*" is a regular expression that matches any string and in this context matches
883 all characters in the line.
884 The "\1" in the replacement string refers to the matched text within the first pair of "\(" and "\)".
885 The "\U" converts the inserted text to uppercase.
886 </para>
887 </sect3>
888
889 <sect3><title>Ignoring Version Control Keywords</title>
890 <para>
891 CVS and other version control systems use several keywords to insert automatically
892 generated strings (<ulink url="info:/cvs/Keyword substitution">info:/cvs/Keyword substitution</ulink>).
893 All of them follow the pattern "$KEYWORD generated text$". We now need a
894 Line-Matching-Preprocessor-Command that removes only the generated text:
895 <screen>
896 <command>sed</command> 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'
897 </screen>
898 The "\|" separates the possible keywords. You might want to modify this list
899 according to your needs.
900 The "\" before the "$" is necessary because otherwise the "$" matches the end of the line.
901 </para>
902 <para>
903 While experimenting with <command>sed</command> you might come to understand and even like
904 these regular expressions. They are useful because there are many other programs that also
905 support similar things.
906 </para>
907 </sect3>
908
909 <sect3><title>Ignoring Numbers</title>
910 <para>
911 Ignoring numbers actually is a built-in option. But as another example, this is how
912 it would look as a Line-Matching-Preprocessor-command.
913 <screen>
914 <command>sed</command> 's/[0123456789.-]//g'
915 </screen>
916 Any character within '[' and ']' is a match and will be replaced with nothing.
917 </para>
918 </sect3>
919
920 <sect3><title>Ignoring Certain Columns</title>
921 <para>
922 Sometimes a text is very strictly formatted, and contains columns that you always want to ignore, while there are
923 other columns you want to preserve for analysis. In the following example the first five columns (characters) are
924 ignored, the next ten columns are preserved, then again five columns are ignored and the rest of the line is preserved.
925 <screen>
926 <command>sed</command> 's/.....\(..........\).....\(.*\)/\1\2/'
927 </screen>
928 Each dot '.' matches any single character. The "\1" and "\2" in the replacement string refer to the matched text within the first
929 and second pair of "\(" and "\)" denoting the text to be preserved.
930 </para>
931 </sect3>
932
933 <sect3><title>Combining Several Substitutions</title>
934 <para>
935 Sometimes you want to apply several substitutions at once. You can then use the
936 semicolon ';' to separate these from each other. Example:
937 <screen>
938 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g;s/\(.*\)/\U\1/'
939 -> OBROKODOBRO
940 </screen>
941 </para>
942 </sect3>
943
944 <sect3><title>Using <command>perl</command> instead of <command>sed</command></title>
945 <para>
946 Instead of <command>sed</command> you might want to use something else like
947 <command>perl</command>.
948 <screen>
949 <command>perl</command> -p -e 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>'
950 </screen>
951 But some details are different in <command>perl</command>. Note that where
952 <command>sed</command> needed "\(" and "\)" <command>perl</command>
953 requires the simpler "(" and ")" without preceding '\'. Example:
954 <screen>
955 <command>sed</command> 's/\(.*\)/\U\1/'
956 <command>perl</command> -p -e 's/(.*)/\U\1/'
957 </screen>
958 </para>
959 </sect3>
960 </sect2>
961
962 <sect2><title>Order Of Preprocessor Execution</title>
963 <para>
964 The data is piped through all internal and external preprocessors in the
965 following order:
966 </para>
967 <itemizedlist>
968 <listitem><para>Normal preprocessor,</para></listitem>
969 <listitem><para>Line-Matching-Preprocessor,</para></listitem>
970 <listitem><para>Ignore case (conversion to uppercase),</para></listitem>
971 <listitem><para>Detection of C/C++ comments,</para></listitem>
972 <listitem><para>Ignore numbers,</para></listitem>
973 <listitem><para>Ignore white space</para></listitem>
974 </itemizedlist>
975 <para>
976 The data after the normal preprocessor will be preserved for display and merging. The
977 other operations only modify the data that the line-matching-diff-algorithm sees.
978 </para><para>
979 In the rare cases where you use a normal preprocessor note that
980 the line-matching-preprocessor sees the output of the normal preprocessor as input.
981 </para>
982 </sect2>
983
984 <sect2><title>Warning</title>
985 <para>
986 The preprocessor-commands are often very useful, but as with any option that modifies
987 your texts or hides away certain differences automatically, you might accidently overlook
988 certain differences and in the worst case destroy important data.
989 </para><para>
990 For this reason during a merge if a normal preprocessor-command is being used KDiff3
991 will tell you so and ask you if it should be disabled or not.
992 But it won't warn you if a Line-Matching-Preprocessor-command is active. The merge will not complete until
993 all conflicts are solved. If you disabled "Show White Space" then the differences that
994 were removed with the Line-Matching-Preprocessor-command will also be invisible. If the
995 Save-button remains disabled during a merge (because of remaining conflicts), make sure to enable
996 "Show White Space". If you don't wan't to merge these less important differences manually
997 you can select "Choose [A|B|C] For All Unsolved Whitespace Conflicts" in the Merge-menu.
722 </para> 998 </para>
723 </sect2> 999 </sect2>
724 </sect1> 1000 </sect1>
725 </chapter> 1001 </chapter>
726 1002
960 and other texts if something unexpected happened. When a merge is complete, 1236 and other texts if something unexpected happened. When a merge is complete,
961 then you should make a last check to see if the status for all items is 1237 then you should make a last check to see if the status for all items is
962 agreeable. 1238 agreeable.
963 </para> 1239 </para>
964 </sect2> 1240 </sect2>
1241
1242 <sect2 id="statisticscolulmns"><title>Statistics Columns</title>
1243 <para>
1244 When the file comparison mode "Full Analysis" is enabled in the options, then
1245 KDiff3 will show extra columns containing the numbers of unsolved, solved, nonwhite and whitespace
1246 conflicts. (The solved-column will only show when comparing or merging three directories.)
1247 </para>
1248 </sect2>
1249
965 </sect1> 1250 </sect1>
966 1251
967 1252
968 <sect1 id="dothemerge"><title>Doing A Merge</title> 1253 <sect1 id="dothemerge"><title>Doing A Merge</title>
969 <para> 1254 <para>
1071 then the symbolic links will be compared. When enabled then the link will 1356 then the symbolic links will be compared. When enabled then the link will
1072 be treated like a directory and it will be scanned recursively. (Note that 1357 be treated like a directory and it will be scanned recursively. (Note that
1073 the program doesn't check if the link is "recursive". So for example a directory 1358 the program doesn't check if the link is "recursive". So for example a directory
1074 that contains a link to the directory would cause an infinite loop, and after 1359 that contains a link to the directory would cause an infinite loop, and after
1075 some time when the stack overflows or all memory is used up, crash the program.) 1360 some time when the stack overflows or all memory is used up, crash the program.)
1076 Default is off.</para></listitem></varlistentry> 1361 Default is off.</para></listitem></varlistentry>
1077 <varlistentry><term><emphasis>List only deltas:</emphasis></term><listitem><para> Only items that are not equal in all input 1362 <varlistentry><term><emphasis>List only deltas:</emphasis></term><listitem><para> Only items that are not equal in all input
1078 directories will be listed and only the changed files are visible. Hence 1363 directories will be listed and only the changed files are visible. Hence
1079 files that are equal in all directories won't be copied during a merge and 1364 files that are equal in all directories won't be copied during a merge and
1080 if the destination dir does not contain the files before the merge, you might 1365 if the destination dir does not contain the files before the merge, you might
1081 miss some files later. (This option is likely to be changed in a later version.) 1366 miss some files later. (This option is likely to be changed in a later version.)
1082 Default is off.</para></listitem></varlistentry> 1367 Default is off.</para></listitem></varlistentry>
1368
1369 <varlistentry><term><emphasis>File Comparison Mode:</emphasis></term><listitem><para>
1370 <variablelist>
1371 <varlistentry><term><emphasis>Binary Comparison:</emphasis></term><listitem><para>
1372 This is the default file comparison mode.
1373 </para></listitem></varlistentry>
1374 <varlistentry><term><emphasis>Full Analysis:</emphasis></term><listitem><para>
1375 Do a full analysis of each file and show the statistics information columns.
1376 (Number of solved, unsolved, nonwhite and white conflicts.)
1377 The full analysis is slower than a simple binary analysis, and much
1378 slower when used on files that don't contain text.
1379 (Specify the appropriate file-antipatterns.)
1380 </para></listitem></varlistentry>
1083 <varlistentry><term><emphasis>Trust the modification date:</emphasis></term><listitem><para> If you compare big directories 1381 <varlistentry><term><emphasis>Trust the modification date:</emphasis></term><listitem><para> If you compare big directories
1084 over a slow network, it might be faster to compare the modification dates 1382 over a slow network, it might be faster to compare the modification dates
1085 and file length alone. But this speed improvement comes with the price of 1383 and file length alone. But this speed improvement comes with the price of
1086 a little uncertainty. Use this option with care. Default is off.</para></listitem></varlistentry> 1384 a little uncertainty. Use this option with care. Default is off.</para></listitem></varlistentry>
1087 <varlistentry><term><emphasis>Trust the size:</emphasis></term><listitem><para> 1385 <varlistentry><term><emphasis>Trust the size:</emphasis></term><listitem><para>
1088 Similar to trusting the modification date. No real comparison happens. Two 1386 Similar to trusting the modification date. No real comparison happens. Two
1089 files are considered equal if their file-sizes are equal. This is useful 1387 files are considered equal if their file-sizes are equal. This is useful
1090 when the file-copy operation didn't preserve the modification date. 1388 when the file-copy operation didn't preserve the modification date.
1091 Use this option with care. Default is off.</para></listitem></varlistentry> 1389 Use this option with care. Default is off.</para></listitem></varlistentry>
1390 </variablelist></para></listitem></varlistentry>
1391
1092 <varlistentry><term><emphasis>Synchronize Directories:</emphasis></term><listitem><para> Activates "Sync-Mode" when two directories 1392 <varlistentry><term><emphasis>Synchronize Directories:</emphasis></term><listitem><para> Activates "Sync-Mode" when two directories
1093 are compared and no explicit destination directory was specified. In this 1393 are compared and no explicit destination directory was specified. In this
1094 mode the proposed operations will be chosen so that both source directories 1394 mode the proposed operations will be chosen so that both source directories
1095 are equal afterwards. Also the merge result will be written to both directories. 1395 are equal afterwards. Also the merge result will be written to both directories.
1096 Default is off.</para></listitem></varlistentry> 1396 Default is off.</para></listitem></varlistentry>
1209 </para></listitem><listitem><para> 1509 </para></listitem><listitem><para>
1210 Limited support for permissions. 1510 Limited support for permissions.
1211 </para></listitem><listitem><para> 1511 </para></listitem><listitem><para>
1212 No possibility to modify permissions or modification time, so permissions or time 1512 No possibility to modify permissions or modification time, so permissions or time
1213 of a copy will differ from the original. (See the option "Trust the size".) 1513 of a copy will differ from the original. (See the option "Trust the size".)
1214 (Only possible for local files.) 1514 (Modifying permissions or modification time is only possible for local files.)
1215 </para></listitem> 1515 </para></listitem>
1216 </itemizedlist> 1516 </itemizedlist>
1217 </sect2> 1517 </sect2>
1218 </sect1> 1518 </sect1>
1219 1519
1340 1640
1341 <para> 1641 <para>
1342 &kdiff3; - File and Directory Comparison and Merge Tool 1642 &kdiff3; - File and Directory Comparison and Merge Tool
1343 </para> 1643 </para>
1344 <para> 1644 <para>
1345 Program copyright 2002-2003 Joachim Eibl <email>joachim.eibl@gmx.de</email> 1645 Program copyright 2002-2004 Joachim Eibl <email>joachim.eibl at gmx.de</email>
1346 </para> 1646 </para>
1347 <para> 1647 <para>
1348 Several cool ideas and bugreports came from colleagues and many people out in the Wild Wild Web. Thank you! 1648 Several cool ideas and bugreports came from colleagues and many people out in the Wild Wild Web. Thank you!
1349 </para> 1649 </para>
1350 1650
1351 <para> 1651 <para>
1352 Documentation Copyright &copy; 2002-2003 Joachim Eibl <email>joachim.eibl@gmx.de</email> 1652 Documentation Copyright &copy; 2002-2004 Joachim Eibl <email>joachim.eibl at gmx.de</email>
1353 </para> 1653 </para>
1354 1654
1355 <!-- TRANS:CREDIT_FOR_TRANSLATORS --> 1655 <!-- TRANS:CREDIT_FOR_TRANSLATORS -->
1356 1656
1357 &underFDL; <!-- FDL: do not remove --> 1657 &underFDL; <!-- FDL: do not remove -->
1378 1678
1379 <sect1 id="requirements"> 1679 <sect1 id="requirements">
1380 <title>Requirements</title> 1680 <title>Requirements</title>
1381 1681
1382 <para> 1682 <para>
1383 In order to successfully use all features of &kdiff3;, you need &kde; >3.1. The 1683 In order to successfully use all features of &kdiff3;, you need &kde; >3.1.
1384 diff-tool from the <ulink url="http://www.gnu.org/software/diffutils/diffutils.html">GNU-diff-utils</ulink>
1385 is recommended for best results.
1386 </para><para> 1684 </para><para>
1387 For information about how to run KDiff3 on other platforms without KDE please see the 1685 For information about how to run KDiff3 on other platforms without KDE please see the
1388 <ulink url="http://kdiff3.sourceforge.net">homepage</ulink>. 1686 <ulink url="http://kdiff3.sourceforge.net">homepage</ulink>.
1389 </para><para> 1687 </para><para>
1390 You can find a list of changes at <ulink 1688 You can find a list of changes at <ulink