<?xml version="1.0" encoding="UTF-8"?>
<article id="Compare_files">
  <?target dbhh topicname="IDH_Compare_files" topicid ="001"?>

  <title>Comparing and merging text files<indexterm>
      <primary>comparing files</primary>
    </indexterm></title>

  <para>This topic describes how to use the WinMerge File Compare window to
  compare and merge text files. To understand the basic concepts about
  differences discussed here, we suggest you read <xref linkend="Intro_diffs" />
  first. See <xref linkend="Intro_diffs" /> for related information about hex
  files. </para>

  <section id="Compare_files_starting">
    <title>Starting a file compare operation</title>

    <para>You can start a file compare operation from either the WinMerge window
    or a Command Prompt window.</para>

    <variablelist>
      <varlistentry>
        <term>From the WinMerge window</term>

        <listitem>
          <para>Click <menuchoice>
              <guimenu>File</guimenu>

              <guimenuitem>Open</guimenuitem>
            </menuchoice>. Use the Select Files or Folders dialog to specify the
          left and right source files to compare. For more details about the
          Select Files or Folder dialog, see <xref
          linkend="Open_paths" />.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>From a Command Prompt window</term>

        <listitem>
          <para>Run <command>WinMergeU.exe</command>, which is in your WinMerge
          install directory. In your command arguments, include the left and
          right files to compare. For more information about using the command
          line, see <xref linkend="Command_line" />.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>

  <section id="Compare_files_window">
    <title>File Compare window<indexterm>
        <primary>File Compare window</primary>

        <seealso>Compare window</seealso>
      </indexterm><indexterm>
        <primary>Compare window</primary>

        <secondary>File</secondary>
      </indexterm></title>

    <para>The File Compare window displays compared files in two File panes,
    side by side. The WinMerge toolbar and context menu provides functions for
    viewing, navigating, and merging differences. The screen shot below shows a
    comparison of two versions of a file.</para>

    <mediaobject>
      <imageobject>
        <imagedata contentwidth="600" fileref="screenshots/filecomp1.png"
                   format="PNG" />
      </imageobject>

      <textobject>
        <phrase>File Compare Window</phrase>
      </textobject>
    </mediaobject>

    <section>
      <title>File panes<indexterm>
          <primary>File panes</primary>
        </indexterm></title>

      <para>The left and right File panes show the text contents and differences
      of the two files being compared. The File panes are the main area for
      navigating and merging differences, and also allow you to edit the text
      directly. This section describes the features that support these actions,
      and ways that you can customize the File panes.</para>

      <section>
        <title>File pane header</title>

        <para>The header at the top of each File pane shows the full path of the
        source file. The left and right file names are also identified in the
        header of the Compare Window, above the File panes.</para>

        <para>One of the File panes is always active (indicated by the dark
        header background); the other is inactive and has a lighter header bar.
        You can edit only in the active pane (as described in <xref
        linkend="CompareFiles_editing" />). Click in either side to make it
        active and make the other side inactive.</para>

        <para>An asterisk (*) before the filename in the header indicates that
        there are unsaved changes in the file.</para>

        <para>The header bar's context menu has shortcuts that are useful for
        copying and pasting file information:</para>

        <variablelist>
          <varlistentry>
            <term>Copy Full Path<indexterm>
                <primary>Copy Full Path function</primary>
              </indexterm></term>

            <listitem>
              <para>Copies the full path of the source file into the system
              clipboard.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Copy Filename<indexterm>
                <primary>Copy Filename function</primary>
              </indexterm></term>

            <listitem>
              <para>Copies just the source filename into the system
              clipboard.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="CompareFiles_diffcolors">
        <title>Difference highlighting<indexterm>
            <primary>difference colors</primary>

            <secondary>in File panes</secondary>
          </indexterm></title>

        <para>WinMerge highlights several types of differences in the File
        panes. The Colors page in the Options dialog defines a set of background
        and text colors for most difference types, with variations indicating
        their state: unselected, selected, or deleted. This section describes
        how each of the basic difference types is detected and displayed.</para>

        <variablelist>
          <varlistentry>
            <term>Difference</term>

            <listitem>
              <para>A difference block contains one or more contiguous lines
              that are different. The default difference background color is
              gold, but blank lines are marked with the deleted color.</para>

              <para>For this and other screens in this section, we enabled
              <option>View line numbers</option> to show which lines in the
              source files are compared.</para>

              <mediaobject>
                <imageobject>
                  <imagedata contentwidth="489"
                             fileref="screenshots/diff-blocks-01.png"
                             format="PNG" />
                </imageobject>

                <textobject>
                  <phrase>Difference block background colors</phrase>
                </textobject>
              </mediaobject>

              <para>This comparison detects three difference blocks:</para>

              <orderedlist>
                <listitem>
                  <para>The first difference is a single line.</para>
                </listitem>

                <listitem>
                  <para>The blank line in <filename>file2</filename> has no
                  corresponding blank line in <filename>file1</filename>.
                  WinMerge treats the missing blank line as a deleted
                  difference, marked here with the default gray color.</para>
                </listitem>

                <listitem>
                  <para>The last difference block includes two lines.</para>
                </listitem>
              </orderedlist>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Ignored Difference<indexterm>
                <primary>ignored differences</primary>
              </indexterm></term>

            <listitem>
              <para>This color marks content that you have configured WinMerge
              to ignore. In contrast to difference blocks, ignored content is
              not compared, it is simply highlighted to help you see what has
              been ignored. Ignored differences include:</para>

              <itemizedlist>
                <listitem>
                  <para>Blank lines, if you have enabled <option>Ignore blank
                  lines</option> in the Options dialog Compare page.</para>
                </listitem>

                <listitem>
                  <para>Differences that match patterns in line filters that you
                  have defined (see <xref linkend="Filters" /> to learn
                  how).</para>
                </listitem>
              </itemizedlist>

              <para>The next example repeats the previous comparison, this time
              with <option>Ignore blank lines</option> enabled. There are now
              only two differences. The blank line on the right side is marked
              with the Ignored Differences color.</para>

              <mediaobject>
                <imageobject>
                  <imagedata contentwidth="492"
                             fileref="screenshots/ignore-blank-lines.png"
                             format="PNG" />
                </imageobject>

                <textobject>
                  <phrase>Difference block colors with ignored diff</phrase>
                </textobject>
              </mediaobject>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Moved<indexterm>
                <primary>moved differences</primary>
              </indexterm></term>

            <listitem>
              <para>Moved differences are identical lines found in different
              locations in the compared files, if <option>Moved block
              detection</option> is enabled in the Options dialog Compare page.
              The next screen shot repeats the previous comparison, this time
              with moved block detection enabled.</para>

              <mediaobject>
                <imageobject>
                  <imagedata contentwidth="490"
                             fileref="screenshots/moved-01.png" format="PNG" />
                </imageobject>

                <textobject>
                  <phrase>Difference block colors with moved block
                  detection</phrase>
                </textobject>
              </mediaobject>

              <para>Notice that the two identical lines (containing
              <literal>a</literal> and <literal>c</literal>) that are in
              different locations are marked with the default orange moved
              color. Another effect of moved block detection in this case is
              that the last two lines are now two separate differences instead
              of a single difference block.</para>

              <para>In some cases, showing moved differences can make it easier
              to visualize changes in files. However, too many moved lines might
              make your comparison hard to navigate. Use your own
              judgement!</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Word Difference</term>

            <listitem>
              <para>WinMerge can mark the text that is changed with difference
              blocks. Line differences are marked with the word difference
              color. See <xref linkend="CompareFiles_linediff-highlight" /> for
              details.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Similar lines<indexterm>
                <primary>similar lines, in differences</primary>
              </indexterm></term>

            <listitem>
              <para>WinMerge tries to match similar lines within difference
              blocks when you enable <option>Match similar lines</option> in the
              Options dialog Compare page. What does <quote>similar</quote>
              mean? Generally, this feature works best in simple cases, for
              example where lines that have strong similarities. When detected,
              similar lines are adjusted to align in the File pane. The next
              figure shows comparisons of the same two files, before and after
              enabling the <option>Match similar lines</option> option:</para>

              <simplelist columns="2" type="horiz">
                <member><emphasis role="strong">Disabled</emphasis>:
                <inlinemediaobject>
                    <imageobject>
                      <imagedata contentwidth="273"
                                 fileref="screenshots/simlines-diffs-off.png" />
                    </imageobject>

                    <textobject>
                      <phrase>Compare without matching similar lines</phrase>
                    </textobject>
                  </inlinemediaobject></member>

                <member><emphasis role="strong">Enabled</emphasis>:
                <inlinemediaobject>
                    <imageobject>
                      <imagedata contentwidth="273"
                                 fileref="screenshots/simlines-diffs-on.png" />
                    </imageobject>

                    <textobject>
                      <phrase>Compare matching similar lines</phrase>
                    </textobject>
                  </inlinemediaobject></member>
              </simplelist>

              <para>In the second comparison, the lines <quote>blind</quote> and
              <quote>blonde</quote> are detected as similar. WinMerge adds blank
              lines in the display to make these lines appear at the same level
              within the difference block.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="CompareFiles_linediff-highlight">
        <title>Line difference highlighting<indexterm>
            <primary>line differences</primary>

            <secondary>detection</secondary>
          </indexterm><indexterm>
            <primary>whitespace</primary>

            <secondary>in line differences</secondary>
          </indexterm></title>

        <para>Sometimes it's useful to highlight not just difference blocks, but
        also the text within them that is changed. You can disable or enable
        them in two ways:</para>

        <itemizedlist>
          <listitem>
            <para>Set all <option>View line differences</option> options in the
            Options dialog Editor page.</para>
          </listitem>

          <listitem>
            <para>Click <menuchoice>
                <guimenu>View</guimenu>

                <guimenuitem>View line differences</guimenuitem>
              </menuchoice> to toggle line differences on or off.</para>
          </listitem>
        </itemizedlist>

        <note>
          <para>Remember that WinMerge navigation and merging functions (like
          Next Difference or Copy Left) work on difference blocks, not on line
          differences within them.</para>
        </note>

        <para>This section describes how line differences are detected and
        marked. Note that the effect of these options is also affected by your
        current whitespace settings in the Options dialog Compare page.</para>

        <variablelist>
          <varlistentry>
            <term id="wordlevel-linediffs">Word-level line differences<indexterm>
                <primary>word differences</primary>
              </indexterm></term>

            <listitem>
              <para>The following examples show how word-level line differences
              are displayed with each of the whitespace settings:</para>

              <example>
                <title>Line differences with Whitespace: Compare</title>

                <para>WinMerge detects all different words and spaces:</para>

                <mediaobject>
                  <imageobject>
                    <imagedata contentwidth="530"
                               fileref="screenshots/word-diff-allwhite.png"
                               format="PNG" />
                  </imageobject>

                  <textobject>
                    <phrase>Word-level line diff comparing whitespace</phrase>
                  </textobject>
                </mediaobject>
              </example>

              <example>
                <title>Line differences with Whitespace: Ignore change</title>

                <para>Multiple spaces and tabs are treated the same as a single
                space. In the example, the extra space between the last two
                words is not marked:</para>

                <mediaobject>
                  <imageobject>
                    <imagedata contentwidth="530"
                               fileref="screenshots/word-diff-nochange.png"
                               format="PNG" />
                  </imageobject>

                  <textobject>
                    <phrase>Word-level line diff comparing no whitespace
                    changes</phrase>
                  </textobject>
                </mediaobject>
              </example>

              <example>
                <title>Line differences with Whitespace: Ignoring all</title>

                <para>No spaces between words are compared, so these lines are
                treated as identical:</para>

                <mediaobject>
                  <imageobject>
                    <imagedata contentwidth="530"
                               fileref="screenshots/word-diff-nowhite.png"
                               format="PNG" />
                  </imageobject>

                  <textobject>
                    <phrase>Word-level line diff comparing no
                    whitespace</phrase>
                  </textobject>
                </mediaobject>
              </example>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Character-level line differences<indexterm>
                <primary>character-level line difference</primary>
              </indexterm></term>

            <listitem>
              <para>A character-level line difference includes the first and
              last different characters in a word, and all the characters
              between them. A single character-level difference can span
              adjacent words. The following example illustrates:</para>

              <mediaobject>
                <imageobject>
                  <imagedata contentwidth="485"
                             fileref="screenshots/char-diff-01.png" format="PNG" />
                </imageobject>

                <textobject>
                  <phrase>Character-level line diff comparing no
                  whitespace</phrase>
                </textobject>
              </mediaobject>

              <note>
                <para>As with word-level line differences, character
                highlighting varies according to how WinMerge is configured to
                detect word breaks. In the example, the extra space after the
                word <literal>cure</literal> in <filename>file2</filename> is
                highlighted only if whitespace is compared.</para>
              </note>
            </listitem>
          </varlistentry>
        </variablelist>

        <variablelist>
          <varlistentry>
            <term>Breaks for words or character<indexterm>
                <primary>word breaks in line differences</primary>
              </indexterm></term>

            <listitem>
              <para>Words and characters in line differences can be separated by
              whitespace, or by a combination of whitespace and punctuation.
              Whitespace (the default) is the typical choice for comparing most
              text files. All the preceding line difference examples use
              whitespace to break words and characters.</para>

              <para>In some cases it's useful to break at punctuation. For
              example, the next screen shot compares a comma-separated list. To
              highlight meaningful line differences, we have enabled
              <option>Break at whitespace or punctuation</option> in the Options
              dialog Editor page.</para>

              <mediaobject>
                <imageobject>
                  <imagedata contentwidth="494"
                             fileref="screenshots/line-diff-punctuation.png"
                             format="PNG" />
                </imageobject>

                <textobject>
                  <phrase>Character-level line diff comparing no
                  whitespace</phrase>
                </textobject>
              </mediaobject>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="CompareFiles_editing">
        <title>File pane editing features<indexterm>
            <primary>editing</primary>

            <secondary>features in File Compare window</secondary>
          </indexterm></title>

        <para>Although WinMerge is a not a full-featured editor or IDE, it does
        provide basic editing functions, like <guilabel>Undo</guilabel> and
        <guilabel>Redo</guilabel>, <guilabel>Find</guilabel> and
        <guilabel>Replace</guilabel>, and <guilabel>Goto</guilabel>. These basic
        editing tasks are often needed during merging (for example, to change
        text within differences). You can edit in the active File pane
        (remember, click in a pane to make it active). Changes are not written
        to a file until you save a pane to a result file.</para>

        <para>WinMerge editing features also include syntax highlighting. This
        optional feature supports several file formats, and you can configure
        the colors used. Note that syntax highlighting is not applied within
        differences, as the preceding screen shot shows.</para>

        <tip>
          <para>Make sure that <guilabel>Automatic rescan</guilabel> is enabled,
          as described in <xref linkend="Compare_files_scan" />. If it is not,
          manually refresh your view (press F5) before and after editing a file,
          to ensure that WinMerge difference detection is up to date.</para>
        </tip>
      </section>

      <section id="CompareFiles_fonts">
        <title>File pane fonts<indexterm>
            <primary>fonts</primary>

            <secondary>choosing in File Compare window</secondary>
          </indexterm></title>

        <para>You can choose fonts for the File pane by clicking <menuchoice>
            <guimenu>View</guimenu>

            <guimenuitem>Select Font</guimenuitem>
          </menuchoice>. WinMerge supports only fixed width fonts.</para>

        <para>Here are font suggestions for using WinMerge with East Asian
        languages:</para>

        <itemizedlist>
          <listitem>
            <simpara>Simplified Chinese: <guilabel>SimSun</guilabel> or
            <guilabel>SimHei</guilabel> fixed-width fonts</simpara>
          </listitem>

          <listitem>
            <simpara>Traditional Chinese: <guilabel>MingLiU</guilabel>
            fixed-width font</simpara>
          </listitem>

          <listitem>
            <simpara>Japanese: <guilabel>MS Gothic</guilabel> or <guilabel>MS
            Mincho</guilabel> fixed-width fonts</simpara>
          </listitem>

          <listitem>
            <simpara>Korean: <guilabel>GulimChe</guilabel> fixed-width font (not
            <guilabel>Gulim</guilabel>, because this variant uses
            proportional-spacing glyphs that are not centered in grid cells and
            poorly aligned in fixed-width mode).</simpara>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>File pane margins<indexterm>
            <primary>margins</primary>

            <secondary>in File panes</secondary>
          </indexterm></title>

        <para>The File panes have optional gray margins that show line numbers
        and some symbols. To show or hide the margins, clicking <menuchoice>
            <guimenu>View</guimenu>

            <guimenuitem>View Margins</guimenuitem>
          </menuchoice>. If you are using multiple File Compare windows, you can
        control margins for each window independently. The margin can show any
        or all of these features:</para>

        <indexterm>
          <primary>line numbers</primary>

          <secondary>in File panes</secondary>
        </indexterm>

        <indexterm>
          <primary>bookmarks</primary>
        </indexterm>

        <indexterm>
          <primary>word wrapping</primary>

          <secondary>in File panes</secondary>
        </indexterm>

        <itemizedlist>
          <listitem>
            <para>Line numbers, if <menuchoice>
                <guimenu>View</guimenu>

                <guimenuitem>View Line Numbers</guimenuitem>
              </menuchoice> is enabled.</para>
          </listitem>

          <listitem>
            <para>Bookmarks, if <menuchoice>
                <guimenu>Edit</guimenu>

                <guisubmenu>Bookmarks</guisubmenu>
              </menuchoice> is enabled. A bookmark is a blue circle, in the
            margin next to a line, that you can make WinMerge remember and
            return to.</para>

            <itemizedlist>
              <listitem>
                <para>To set a bookmark on a line, double-click in its margin
                (or press (<keycombo>
                    <keycap>Ctrl</keycap>

                    <keycap>F2</keycap>
                  </keycombo>). The same action deletes an existing
                bookmark.</para>
              </listitem>

              <listitem>
                <para>To navigate bookmarks, click <menuchoice>
                    <guimenu>Edit</guimenu>

                    <guimenuitem>Bookmarks</guimenuitem>
                  </menuchoice> and choose <guimenuitem>Next</guimenuitem> or
                <guimenuitem>Previous</guimenuitem>.</para>
              </listitem>

              <listitem>
                <para>Double-click a single bookmark to delete it (or press
                (<keycombo>
                    <keycap>Ctrl</keycap>

                    <keycap>F2</keycap>
                  </keycombo>).</para>
              </listitem>

              <listitem>
                <para>Click <menuchoice>
                    <guimenu>Edit</guimenu>

                    <guimenuitem>Bookmarks</guimenuitem>

                    <guimenuitem>Clear All Bookmarks</guimenuitem>
                  </menuchoice> to delete all bookmarks.</para>
              </listitem>
            </itemizedlist>
          </listitem>

          <listitem>
            <para>Word wrap arrow symbols, if <menuchoice>
                <guimenu>View</guimenu>

                <guimenuitem>Wrap Lines</guimenuitem>
              </menuchoice> is enabled.</para>
          </listitem>
        </itemizedlist>

        <para>The following screen shot shows a margin with bookmarks and word
        wrap enabled. Without line numbers, the margin width is minimal.</para>

        <mediaobject>
          <imageobject>
            <imagedata contentwidth="384"
                       fileref="screenshots/filecomp_margin1.png" format="PNG" />
          </imageobject>

          <textobject>
            <phrase>File Compare window margin with bookmark and word
            wrap</phrase>
          </textobject>
        </mediaobject>

        <para>The next screen shot shows a margin with bookmarks and line
        numbers enabled. Notice that the margin is wider. In fact, the margin is
        wide enough for the largest line number. Thus, the margins for large
        files with many lines can be quite wide.</para>

        <mediaobject>
          <imageobject>
            <imagedata contentdepth="77" contentwidth="384"
                       fileref="screenshots/filecomp_margin2.png" format="PNG" />
          </imageobject>

          <textobject>
            <phrase>File Compare window margin with bookmark and line
            numbers</phrase>
          </textobject>
        </mediaobject>
      </section>
    </section>

    <section id="Compare_files_functions">
      <title>Toolbar and menus<indexterm>
          <primary>toolbar, with File Compare window</primary>
        </indexterm><indexterm>
          <primary>menus, with File Compare window</primary>
        </indexterm></title>

      <para>The WinMerge toolbar and menus provide a range of functions to
      navigate, select, and merge differences within files.</para>

      <note>
        <para>WinMerge shortcuts have the same names and buttons whether you
        open a Folder Compare or File Compare window. However, the functions
        behave differently: with a File Compare window, the functions operate on
        differences within files, not on differences within folders.</para>
      </note>

      <para>The difference functions you can use depend on your context, which
      often changes as you work. This means that a function is available only
      when its operation is possible for a given location or other condition in
      your WinMerge environment. For example, if you click in a line of text
      within a difference, you might notice several navigation and merge buttons
      become enabled in the toolbar. If you click in another area of text that
      is not within a difference, these functions become unavailable.</para>

      <para>Difference functions are available in the WinMerge toolbar,and also
      through these alternate mechanisms:</para>

      <itemizedlist>
        <listitem>
          <para>WinMerge menus, especially <guimenu>Merge</guimenu></para>
        </listitem>

        <listitem>
          <para>Context menus within the File Compare window (when you
          right-click in text)</para>
        </listitem>

        <listitem>
          <para>Keyboard shortcuts</para>
        </listitem>
      </itemizedlist>

      <para>Difference functions are described in <xref
      linkend="Compare_files_nav" /> and <xref linkend="Compare_files_merge" />,
      later in this topic. <xref linkend="Quick_start" /> and <xref
      linkend="Intro_diffs" /> provide examples of comparing and merging.</para>

      <section>
        <title>Merge Mode<indexterm>
            <primary>merge mode</primary>
          </indexterm></title>

        <para><menuchoice>
            <guimenu>File</guimenu>

            <guimenuitem>Merge Mode</guimenuitem>
          </menuchoice> restores these WinMerge 1.7.1 single keyboard shortcuts
        for difference merging and navigating functions:</para>

        <itemizedlist>
          <listitem>
            <simpara><keycap>Up</keycap> and <keycap>Down</keycap> keys for the
            <function>Previous Difference</function> and <function>Next
            Difference</function> functions.</simpara>
          </listitem>

          <listitem>
            <simpara><keycap>Left</keycap> and <keycap>Right</keycap> keys for
            the <function>Copy Left</function> and <function>Copy
            Right</function> functions.</simpara>
          </listitem>
        </itemizedlist>

        <para>Merge mode omits the <keycap>Alt</keycap> key for these common
        operations (making them quicker to use than the normal mode). Note that
        the <keycap>Shift</keycap> and <keycap>Alt</keycap>
        <keycap>Arrow</keycap> key combinations work in merge mode in the same
        way as normal mode.</para>

        <para>Merge mode is indicated in the status bar by the text,
        <guilabel>Merge</guilabel>.</para>
      </section>
    </section>

    <section>
      <title>Location pane</title>

      <indexterm>
        <primary>Location pane, File Compare window</primary>
      </indexterm>

      <indexterm>
        <primary>difference navigation</primary>
      </indexterm>

      <para>The Location pane, to the left of the File panes, maps the entire
      length of the compared files into two vertical bars (corresponding to the
      left and right File panes). It is especially useful for working with files
      that are too long to easily navigate in the File panes.</para>

      <para>The Location pane shows several kinds of items:</para>

      <variablelist>
        <varlistentry>
          <term><inlinemediaobject>
              <imageobject>
                <imagedata contentdepth="15"
                           fileref="screenshots/locpane_diffs.png" />
              </imageobject>

              <textobject>
                <phrase>Location pane diff lines</phrase>
              </textobject>
            </inlinemediaobject> Difference blocks</term>

          <listitem>
            <para>Each difference block in the File panes is indicated in the
            Location pane by a horizontal line across each vertical bar. The
            thickness, color , and locations of these lines are clues about of
            the size (number of lines), types and distribution of all
            differences in the files. For example, the color of a line is the
            same as the color of the corresponding difference block. The
            Location pane in the preceding screen shot shows many basic
            differences (gold) and some empty difference blocks (gray).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><inlinemediaobject>
              <imageobject>
                <imagedata contentdepth="15"
                           fileref="screenshots/locpane_currentdiff.png" />
              </imageobject>

              <textobject>
                <phrase>Location pane current diff pointer</phrase>
              </textobject>
            </inlinemediaobject> Current difference</term>

          <listitem>
            <para>If you have selected a difference, the Location pane marks the
            current difference line with a pair of small triangles on either
            side of the vertical bars. If you navigate to another difference,
            the pointer moves up or down with the location. Scrolling the File
            pane does not change the location of the difference pointer (or any
            of the difference lines) in the location pane.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><inlinemediaobject>
              <imageobject>
                <imagedata contentdepth="15"
                           fileref="screenshots/locpane_viewbar.png" />
              </imageobject>

              <textobject>
                <phrase>Location pane view area bar</phrase>
              </textobject>
            </inlinemediaobject> View area</term>

          <listitem>
            <para>The area of the files currently visible in the File panes is
            indicated by a shaded (translucent) view bar over the Location pane.
            The area bar's height and location correspond to the portion of the
            files that is visible in the scroll region. For example, you might
            see the bar expand or shrink if you change the height of your File
            panes. This synchronization of the Location pane view bar and File
            panes enables quick navigation, and some useful actions:</para>

            <itemizedlist>
              <listitem>
                <para>When you scroll the File panes, the view area in the
                Location pane moves with it.</para>
              </listitem>

              <listitem>
                <para>Conversely, you can drag the view area bar in the Location
                pane up or down to scroll the File panes. This scrollbar thumb
                action is very handy for navigating long files.</para>
              </listitem>

              <listitem>
                <para>Click anywhere in the Location pane to jump to the
                corresponding location in the File panes.</para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Moved differences<indexterm>
              <primary>moved differences</primary>
            </indexterm></term>

          <listitem>
            <para>Moved differences are identical lines in different locations.
            They are shown only if the Enable moved block detection is checked
            in the Options dialog Compare page. See <xref
            linkend="CompareFiles_diffcolors" /> for more details about moved
            differences in the File pane. The Location pane draws a line
            connecting moved differences in the left and right location bars.
            For example:</para>

            <mediaobject>
              <imageobject>
                <imagedata contentwidth="576"
                           fileref="screenshots/locpane_moved_diffs.png"
                           format="PNG" />
              </imageobject>

              <textobject>
                <phrase>Location pane with moved diff</phrase>
              </textobject>
            </mediaobject>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>The Location pane's context menu contains these shortcuts:<indexterm>
          <primary>context menu</primary>

          <secondary>Location pane</secondary>
        </indexterm><indexterm>
          <primary>Moved Blocks functions</primary>
        </indexterm></para>

      <itemizedlist>
        <listitem>
          <para><guimenuitem>Goto Line 1</guimenuitem>: Moves the cursor to the
          top of the file.</para>
        </listitem>

        <listitem>
          <para><guimenuitem>Goto</guimenuitem>: Moves the cursor to a line you
          specify (described in <xref
          linkend="Compare_files_nav_functions" />).</para>
        </listitem>

        <listitem>
          <para><guimenuitem>No Moved Blocks</guimenuitem>: Turns off moved
          difference color for moved blocks.</para>
        </listitem>

        <listitem>
          <para><guimenuitem>All Moved Blocks</guimenuitem>: Turns on moved
          difference color for all moved blocks.</para>
        </listitem>

        <listitem>
          <para><guimenuitem>Moved Block for Current Diff</guimenuitem>: Turns
          on moved difference color only for current selected moved
          difference.</para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Diff pane<indexterm>
          <primary>Diff pane, File Compare window</primary>
        </indexterm></title>

      <para>The Diff pane shows the contents of the two sides of a selected
      difference.</para>

      <para>When you select a difference, the two versions are loaded in the
      upper and lower sides of the Diff pane. In this way, the Diff pane
      confirms which lines are included in a difference, and lets you examine
      them in isolation from the rest of the file.</para>

      <para>You can merge differences directly in the Diff pane by
      right-clicking in either the top or bottom side and choosing
      <function><guimenuitem>Copy to Right</guimenuitem></function> or
      <guimenuitem>Copy to Left</guimenuitem>.</para>
    </section>

    <section>
      <title>Status bars<indexterm>
          <primary>status bars</primary>

          <secondary>for File Compare window</secondary>
        </indexterm><indexterm>
          <primary>tabs</primary>

          <secondary>character encoding</secondary>
        </indexterm></title>

      <para>Each File pane contains a status bar at the bottom. The status bar
      contains several panes with different types of information about the
      document and your location in it:</para>

      <variablelist>
        <varlistentry>
          <term>Line status</term>

          <listitem>
            <itemizedlist>
              <listitem>
                <para><guilabel>Ln</guilabel>: Line number in the source
                file.</para>
              </listitem>

              <listitem>
                <para><guilabel>Col</guilabel>: Column location of the cursor
                and the total number of columns in the line.</para>

                <para><guilabel>Col</guilabel> counts tabs as
                <replaceable>n</replaceable> spaces, where
                <replaceable>n</replaceable> is the number of characters defined
                as the <guilabel>Tab size</guilabel> in the Editor page of
                WinMerge options (4 by default).</para>
              </listitem>

              <listitem>
                <para><guilabel>Ch</guilabel>: Character location of cursor and
                the total number of chars in the line.</para>

                <para><guilabel>Ch</guilabel> counts tabs as single tab
                characters.</para>
              </listitem>

              <listitem>
                <para><guilabel>EOL</guilabel>: Linefeed style of the current
                line (shown only when the <guilabel>Preserve original EOL
                chars</guilabel> option is enabled in the Editor page of
                WinMerge options).</para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Read-only status</term>

          <listitem>
            <para><guilabel>RO</guilabel> is shown in the pane if the file is
            set to read-only (as described in <xref
            linkend="protectingfiles" />). Otherwise the pane is empty.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>File encoding</term>

          <listitem>
            <para>Codepage number for ANSI files, Unicode encoding type for
            Unicode files.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>EOL style</term>

          <listitem>
            <para>EOL style of the file: <guilabel>Win</guilabel> for
            Windows/DOS files (CRLF), <guilabel>Unix</guilabel> (LF),
            <guilabel>Mac</guilabel> (CR), or Mixed.</para>

            <note>
              <para>When the per-line EOL style is used, the file EOL style is
              not shown (this pane is blank).</para>
            </note>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>When a File Compare window is open, the WinMerge window status bar
      shows one of these messages about the compared files:<itemizedlist>
          <listitem>
            <para><guilabel>Identical</guilabel>: The files contain no
            differences</para>
          </listitem>

          <listitem>
            <para><guilabel><replaceable>n</replaceable> Differences
            Found</guilabel>: The number of differences detected, displayed only
            when no difference is selected.</para>
          </listitem>

          <listitem>
            <para><guilabel>Difference <replaceable>x</replaceable> of
            <replaceable>n</replaceable></guilabel>: The selected difference's
            sequence number in the total number of differences, starting with
            1.</para>
          </listitem>
        </itemizedlist></para>
    </section>

    <section id="Compare_files_multiwin">
      <title>Working with multiple File Compare windows<indexterm>
          <primary>File Compare window</primary>

          <secondary>using multiple</secondary>
        </indexterm></title>

      <para>By default, the WinMerge window displays a single File Compare
      window. If you start another file comparison (by clicking <menuchoice>
          <guimenu>File</guimenu>

          <guimenuitem>Open</guimenuitem>
        </menuchoice> and selecting another pair of files) while a File Compare
      window is currently open, the current File Compare window is closed,
      unless WinMerge detects unsaved changes in the left or right file. If you
      have modified either file, WinMerge prompts you to save or discard your
      changes before opening a new File Compare window.</para>

      <!--We don't say that the old window is closed, even though most of the time that's what happens. 
If you click Cancel in the Save dialog, WinMerge does NOT close the current window, and you end up 
with multiple File Compare windows. The reasons why this behavior has not been fixed is discussed in 
https://sourceforge.net/forum/forum.php?thread_id=2001747&forum_id=41637-->

      <para>For example, in the next screen shot WinMerge gives you a chance to
      save changes detected in the right side file:</para>

      <mediaobject>
        <imageobject>
          <imagedata contentwidth="400" fileref="screenshots/save_mod1.png"
                     format="PNG" />
        </imageobject>

        <textobject>
          <phrase>Save modifed files? dialog</phrase>
        </textobject>
      </mediaobject>

      <para>If you plan to work with multiple compare operations simultaneously,
      consider setting (checking) the <guilabel>Enable multiple compare windows
      for File compare</guilabel> option, which is disabled by default. With
      this option enabled, you can open multiple File Compare windows without
      the intervening Save step.</para>
    </section>

    <section>
      <title>Using tabs with maximized Compare windows<indexterm>
          <primary>File Compare window</primary>

          <secondary>using tabs when maximizing</secondary>
        </indexterm></title>

      <para>By default, Compare windows are displayed as individually resizeable
      child windows within the WinMerge window, like this:</para>

      <mediaobject>
        <imageobject>
          <imagedata contentwidth="569" fileref="screenshots/multifilecomp1.png"
                     format="PNG" />
        </imageobject>

        <textobject>
          <phrase>Multiple File Compare windows: default display</phrase>
        </textobject>
      </mediaobject>

      <para>If you maximize your Compare window (by clicking its Maximixe
      button), the window fills all the available space in the WinMerge window,
      giving you the most room possible to work in. However, if you are working
      with multiple Compare windows, only one one maximized window is visible:
      any others are hidden. The screen shot below shows the header area of a
      maximized Compare window:</para>

      <mediaobject>
        <imageobject>
          <imagedata contentwidth="569" fileref="screenshots/multifilecomp2.png"
                     format="PNG" />
        </imageobject>

        <textobject>
          <phrase>Multiple File Compare windows: maximized</phrase>
        </textobject>
      </mediaobject>

      <para>To access other Compare windows, you could return to the default
      view by clicking the <inlinemediaobject>
          <imageobject>
            <imagedata contentwidth="15" fileref="screenshots/restore_btn.png" />
          </imageobject>

          <textobject>
            <phrase>Restore button</phrase>
          </textobject>
        </inlinemediaobject> Restore button. But a better solution is to enable
      tabs by setting (checking) <menuchoice>
          <guimenu>View</guimenu>

          <guimenuitem>Tab Bar</guimenuitem>
        </menuchoice>.</para>

      <para>When you display the Tab bar, each Compare window has a tab that
      shows the filenames of the two compared files. Now, you can easily
      identify the available Compare windows. To open any of them, just click
      its tab:</para>

      <mediaobject>
        <imageobject>
          <imagedata contentwidth="569" fileref="screenshots/multifilecomp3.png"
                     format="PNG" />
        </imageobject>

        <textobject>
          <phrase>Multiple File Compare windows: tabbed</phrase>
        </textobject>
      </mediaobject>
    </section>
  </section>

  <section id="Compare_files_nav">
    <title>Navigating differences<indexterm>
        <primary>difference navigation</primary>

        <secondary>File Compare window</secondary>
      </indexterm></title>

    <para>This section describes how to navigate and select differences in the
    File Compare window. Note that when you select a difference, it is always
    selected in both File panes.</para>

    <tip>
      <para>To save time, enable <guilabel>Automatically scroll to first
      difference</guilabel> in the General page of WinMerge options. Then you
      don't have to manually navigate to the first difference and select
      it.</para>
    </tip>

    <section id="Compare_files_nav_functions">
      <title>Navigation functions<indexterm>
          <primary>WinMerge functions</primary>

          <secondary>difference navigation in File Compare window</secondary>
        </indexterm><indexterm>
          <primary>navigation functions</primary>

          <secondary>file compare</secondary>
        </indexterm></title>

      <para>Here are the functions for navigating differences in the File
      Compare window, and their shortcuts in the toolbar and menus:</para>

      <variablelist>
        <varlistentry>
          <term>Difference in the Current Line/Select Line Difference<indexterm>
              <primary>Difference in the Current Line function</primary>
            </indexterm><indexterm>
              <primary>Select Line Difference function</primary>
            </indexterm></term>

          <listitem>
            <para>Enabled if you have clicked in (or selected) text within a
            difference in a File pane. Selects the word differences within the
            line. For example:</para>

            <mediaobject>
              <imageobject>
                <imagedata contentwidth="562" fileref="screenshots/linediff.png"
                           format="PNG" />
              </imageobject>

              <textobject>
                <phrase>Select Line Difference example</phrase>
              </textobject>
            </mediaobject>

            <para>If you want to select the difference block itself, use
            <command>Current Difference</command> instead.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/diff_inline_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Difference in the Current Line button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Edit</guimenu>

                <guimenuitem>Select Line Difference</guimenuitem>
              </menuchoice>, <keycap>F4</keycap>, context menu in File pane
            within a difference.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Next Difference<indexterm>
              <primary>Next Difference function</primary>

              <secondary>with Compare Files</secondary>
            </indexterm></term>

          <listitem>
            <para>Selects the next difference below your current cursor location
            in the document (not necessarily relative to the current
            difference). Use to step through differences sequentially from any
            point. Available except when the last difference is currently
            selected.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/nextdiff_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Next Difference button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Next Difference</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Down</keycap>
              </keycombo> (or <keycap>Down</keycap> in merge mode).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Previous Difference<indexterm>
              <primary>Previous Difference function</primary>

              <secondary>with Compare Files</secondary>
            </indexterm></term>

          <listitem>
            <para>Selects the previous difference above your current cursor
            location (not necessarily relative to the current difference). Use
            to step backwards sequentially through differences. Available except
            when the first difference is currently selected.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/prevdiff_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Previous Difference button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Previous Difference</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Up</keycap>
              </keycombo> (or <keycap>Up</keycap> in merge mode).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>First Difference<indexterm>
              <primary>First Difference function</primary>

              <secondary>with Compare Files</secondary>
            </indexterm></term>

          <listitem>
            <para>Use this to begin comparing or merging differences, or to
            locate the first difference from any other location. Available
            except when the first difference is currently selected. You can also
            select a difference by double-clicking its text.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/firstdiff_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>First Difference button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>First Difference</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Home</keycap>
              </keycombo>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Current Difference<indexterm>
              <primary>Current Difference function</primary>

              <secondary>with Compare Files</secondary>
            </indexterm></term>

          <listitem>
            <para>This function has two modes of action:</para>

            <para><itemizedlist>
                <listitem>
                  <simpara>If your cursor is inside a difference but no
                  difference is selected, this function selects the entire
                  difference. This is a very handy way to select a difference
                  using the keyboard.</simpara>
                </listitem>

                <listitem>
                  <simpara>When there is a current difference, the function
                  jumps to that location. This is handy if you have scrolled the
                  selected difference out of view, and want to quickly return to
                  its location.</simpara>
                </listitem>
              </itemizedlist></para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/currentdiff_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Current Difference button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Current Difference</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Enter</keycap>
              </keycombo>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Last Difference (<keycombo>
              <keycap>Alt</keycap>

              <keycap>End</keycap>
            </keycombo>)<indexterm>
              <primary>Last Difference function</primary>

              <secondary>with Compare Files</secondary>
            </indexterm></term>

          <listitem>
            <para>Enabled except when the last difference is currently
            selected.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/lastdiff_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Last Difference button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Last Difference</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>End</keycap>
              </keycombo>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Go To<indexterm>
              <primary>Go To function</primary>
            </indexterm></term>

          <listitem>
            <para>Enables you to jump to either a line number or a difference
            number (for example, difference 2 is the second difference). Opens
            the Go To dialog, where you specify the number, which file to use
            (either the left or right), and the type of location (either line or
            difference).</para>

            <tip>
              <para>The Go To line number can be useful when you need to merge
              the same change from one file to several target files. Jumping to
              a particular difference can be quicker than using
              <guimenuitem>Find</guimenuitem> to search text, or stepping
              through differences.</para>
            </tip>

            <para>Shortcuts: <menuchoice>
                <guimenu>Edit</guimenu>

                <guimenuitem>Go to</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Ctrl</keycap>

                <keycap>G</keycap>
              </keycombo>, context menu in File pane and Location pane.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Refresh</term>

          <listitem>
            <para>See <xref linkend="Compare_files_merge_functions" />.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>
  </section>

  <section id="Compare_files_merge">
    <title>Merging differences<indexterm>
        <primary>merging differences</primary>
      </indexterm></title>

    <para>Merging copies differences from one File pane to the other: either
    left to right, or right to left. This is different from directly editing
    text using WinMerge's editing functions (described earlier in this
    topic).</para>

    <section id="Compare_files_scan">
      <title>Rescanning files<indexterm>
          <primary>rescanning files</primary>
        </indexterm></title>

      <para>By default, the <guilabel>Automatic rescan</guilabel> option is
      enabled in the Editor page of WinMerge options. Rescanning keeps your your
      compare and merge operations up to date. Without rescanning, WinMerge
      differences does not detect changes that might occur to files while you
      are comparing them, for example in an external editor.</para>

      <para>Rescanning occurs when you perform certain actions (like merging a
      difference or editing a file) during a file compare. If a file has
      changed, WinMerge displays a dialog advising you that another application
      has updated the file, and asks whether you want to reload the file.</para>

      <para>Click <guibutton>Yes</guibutton> to reload the file before
      proceeding, or <guibutton>No</guibutton> to ignore the changes and work
      with the earlier loaded version of the file.</para>

      <important>
        <para>If <guilabel>Automatic rescan</guilabel> is disabled, or if you
        suspect that a file might have changed, we strongly advise that you run
        <guimenuitem>Refresh</guimenuitem> <emphasis>before</emphasis>
        performing any merge operation: click <menuchoice>
            <guimenu>Edit</guimenu>

            <guimenuitem>Refresh</guimenuitem>
          </menuchoice> or the <inlinemediaobject>
            <imageobject>
              <imagedata contentwidth="16" fileref="screenshots/refresh_btn.png" />
            </imageobject>

            <textobject>
              <phrase>Refresh button</phrase>
            </textobject>
          </inlinemediaobject> toolbar button, or press
        <keycap>F5</keycap>.</para>

        <para>If a merge result looks incorrect, click <menuchoice>
            <guimenu>Edit</guimenu>

            <guimenuitem>Undo</guimenuitem>
          </menuchoice> or press <keycombo>
            <keycap>Ctrl</keycap>

            <keycap>Z</keycap>
          </keycombo> to undo the merge. Then rescan the files and try merging
        again.</para>
      </important>
    </section>

    <section id="Compare_files_merge_functions">
      <title>Merge functions<indexterm>
          <primary>WinMerge functions</primary>

          <secondary>merging</secondary>
        </indexterm></title>

      <para>The merging functions can implicitly select differences based on a
      cursor location or text selection. For example, if you click anywhere in a
      difference and then click the <guibutton>Copy Right</guibutton> toolbar
      button, the entire difference block is merged. This makes it easy to merge
      many small differences. Similarly, if you select text that spans all or
      part of multiple differences, all the included differences are merged with
      a single merge command.</para>

      <para>If the result of a merge operation is not what you expected, you can
      click <guibutton>Undo</guibutton> to reverse the operation.</para>

      <para>Here are the merge functions and their shortcuts in the toolbar and
      menus:</para>

      <variablelist>
        <varlistentry>
          <term>Copy Right<indexterm>
              <primary>Copy Right function</primary>
            </indexterm></term>

          <listitem>
            <para>Copies one or more difference from left to right. Note that
            differences do not need to be fully selected: At its simplest, this
            means replacing text in the target difference with text in source
            difference. But because differences can also contain empty lines,
            new lines may be created or removed.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentwidth="17"
                             fileref="screenshots/copyr_button.png" />
                </imageobject>

                <textobject>
                  <phrase>Copy Right button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Right</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Right</keycap>
              </keycombo> ( or <keycap>Right</keycap> in merge mode), context
            menu in File pane within a difference, and in Diff pane.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Copy Left<indexterm>
              <primary>Copy Left function</primary>
            </indexterm></term>

          <listitem>
            <para>Copies the current difference from the right to the left File
            pane. See <command>Copy Righ</command>t description for
            details.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentwidth="17"
                             fileref="screenshots/copyl_button.png" />
                </imageobject>

                <textobject>
                  <phrase>Copy Left button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Left</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Left</keycap>
              </keycombo> (or <keycap>Left</keycap> in merge mode), context menu
            in File pane within a difference, and in Diff pane.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Copy Right and Advance<indexterm>
              <primary>Copy Right and Advance function</primary>
            </indexterm></term>

          <listitem>
            <para>Merges the current difference from the right to the left File
            pane, then selects the next difference (if one exists). Equivalent
            to <command>Copy Right</command> and <command>Next
            Difference</command> in one step.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/copyr_adv_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Copy Right and Advance button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Left</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Ctrl</keycap>

                <keycap>Alt</keycap>

                <keycap>Right</keycap>
              </keycombo>, context menu in File pane within a difference.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Copy Left and Advance<indexterm>
              <primary>Copy Left and Advance function</primary>
            </indexterm></term>

          <listitem>
            <para>Merges the current difference from left to right, then selects
            the next difference (if one exists). Equivalent to <command>Copy
            Left</command> and <command>Next Difference</command> in one
            step.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/copyl_adv_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Copy Left and Advance button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Left</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Ctrl</keycap>

                <keycap>Alt</keycap>

                <keycap>Left</keycap>
              </keycombo>, context menu in File pane within a difference.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>All Right<indexterm>
              <primary>All Right function</primary>
            </indexterm></term>

          <listitem>
            <para>Copies all differences from the left to the right File pane.
            Use to synchronize two files with one command. Similarly, you can
            back out the entire merge by clicking the<inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="11"
                             fileref="screenshots/undo_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Refresh button</phrase>
                </textobject>
              </inlinemediaobject> Undo or pressing <keycombo>
                <keycap>Ctrl</keycap>

                <keycap>Z</keycap>
              </keycombo>.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/allright_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>All Right button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Left</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Left</keycap>
              </keycombo>, context menu in File pane within a difference.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>All Left<indexterm>
              <primary>All Left function</primary>
            </indexterm></term>

          <listitem>
            <para>Copies all differences from the right to the left File pane.
            Effectively, replaces the content of the left File pane. See similar
            to <command>All Right</command>.</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentdepth="15"
                             fileref="screenshots/allleft_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>All Left button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>Merge</guimenu>

                <guimenuitem>Copy to Left</guimenuitem>
              </menuchoice>, <keycombo>
                <keycap>Alt</keycap>

                <keycap>Left</keycap>
              </keycombo>, context menu in File pane within a difference.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Refresh<indexterm>
              <primary>Refresh function</primary>

              <seealso>rescanning files</seealso>
            </indexterm></term>

          <listitem>
            <para>Rescans files to update differences. Use after changes are
            made to files, if automatic scanning is disabled (see <xref
            linkend="Compare_files_scan" /> for details).</para>

            <para>Shortcuts: <inlinemediaobject>
                <imageobject>
                  <imagedata contentwidth="16"
                             fileref="screenshots/refresh_btn.png" />
                </imageobject>

                <textobject>
                  <phrase>Refresh button</phrase>
                </textobject>
              </inlinemediaobject> button, <menuchoice>
                <guimenu>View</guimenu>

                <guimenuitem>Refresh</guimenuitem>
              </menuchoice>, <keycap>F5</keycap>.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="ResolveConflictFiles">
      <title>Resolving conflict files<indexterm>
          <primary>conflict files</primary>
        </indexterm></title>

      <para>You can use WinMerge to resolve conflict files that some version
      control systems produce during their merge operations. A conflict file is
      created when a merge encounters differences that cannot be automatically
      resolved. It is a single file containing the incompletely merged content
      of the two files. WinMerge separates the conflict file into separate files
      and opens those files in file Compare window. You can then use WinMerge's
      compare and merge functions to resolve the conflicts and save the merged
      result file.</para>

      <orderedlist>
        <listitem>
          <para>Click <menuchoice>
              <guimenu>File</guimenu>

              <guimenuitem>Open Conflict File</guimenuitem>
            </menuchoice>, and use the Open dialog to select the conflict file
          in your file system. The conflict file opens in the File Compare
          window:</para>

          <itemizedlist>
            <listitem>
              <para>The left File pane file header is titled, <guilabel>Theirs
              File</guilabel>. This side represents the file that is usually in
              the version control system's repository. This file usually cannot
              be edited, so WinMerge sets the left File pane to be read-only.
              This means that differences can be merged only from this file to
              the other file.</para>
            </listitem>

            <listitem>
              <para>The right File pane is titled, <guilabel>Mine
              File</guilabel>. This side is the working copy of the file. All
              changes should be done to this file, which is the result
              file.</para>

              <para>The <guilabel>Mine File</guilabel> side is set to modified
              after opening conflict file (you will notice the asterisk in the
              File pane header). This allows you to save the file quickly if the
              it does not require any changes. It also ensures that you do not
              forget to resolve the files. If you choose not to save the file,
              the original conflict file is not modified.</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Use all the normal compare and merge functions described earlier
          in this topic to resolve the conflicts in the Mine File pane.</para>
        </listitem>

        <listitem>
          <para>When you are done, click <keycombo>
              <keycap>Ctrl</keycap>

              <keycap>S</keycap>
            </keycombo> to save the <guilabel>Mine File</guilabel> side as the
          result file. By default, the new version overwrites the original
          conflict file. Alternatively, you can click <menuchoice>
              <guimenu>File</guimenu>

              <guimenuitem>Save Right</guimenuitem>

              <guimenuitem>Save As</guimenuitem>
            </menuchoice>, and choose a different file name.</para>
        </listitem>
      </orderedlist>

      <para>Many version control systems allow you to configure an external
      merge tool. If yours does, you might be able to have your version control
      system launch WinMerge automatically when a merge conflict occurs.</para>

      <para>You can also open a conflict file from the WinMerge command line,
      which accepts three filename parameters: <option>Theirs</option>,
      <option>Mine</option>, and optionally, <option>Resolved</option> (if you
      want a different result file from the conflict file). For more
      information, see <xref linkend="Command_line" />. Single path to the
      conflict file is also accepted in command line.</para>
    </section>
  </section>
</article>
