<?xml version="1.0" encoding="UTF-8"?>
<article id="Configuration">
  <title>
    Options and configuration<indexterm>
      <primary>options</primary>
    </indexterm>
  </title>

  <para>
    The Options dialog enables you to customize many WinMerge features. To
    set WinMerge options:
  </para>

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

          <guimenuitem>Options</guimenuitem>
        </menuchoice> in the menu or the <inlinemediaobject>
          <imageobject>
            <imagedata contentwidth="16" fileref="screenshots/options_btn.png" />
          </imageobject>

          <textobject>
            <phrase>WinMerge Options button</phrase>
          </textobject>
        </inlinemediaobject> <guibutton>Options</guibutton> button in the
        toolbar.
      </para>

      <para>
        The Options dialog contains a number of pages, each containing a
        group of related options. You can open any page by clicking its title in
        the <guilabel>Categories</guilabel> list, on the left side of the
        dialog.
      </para>
    </listitem>

    <listitem>
      <para>
        Configure the options you want to change using one or both of these
        methods:
      </para>

      <itemizedlist>
        <listitem>
          <para>Directly in the options pages.</para>
        </listitem>

        <listitem>
          <para>
            Importing an options <filename>.ini</filename> file that you
            exported previously (see <xref linkend="Configuration_importexport" />
            for details).
          </para>
        </listitem>
      </itemizedlist>
    </listitem>

    <listitem>
      <para>
        When you have set all your options, click <guibutton>OK</guibutton>
        to save them and dismiss the dialog.
      </para>
    </listitem>
  </orderedlist>

  <para>
    This topic describes the options in detail. There is a section for each
    page in the Options dialog.
  </para>

  <section id="Configuration_importexport">
    <title>
      Importing and Exporting options<indexterm>
        <primary>importing options files</primary>
      </indexterm><indexterm>
        <primary>exporting options files</primary>
      </indexterm>
    </title>

    <para>
      If you change options frequently for different compare or merge
      scenarios, or if you want to share your settings with other WinMerge users,
      consider saving your settings by exporting them to an options file. Then,
      whenever you want to use those settings, you can simply import the options
      file instead of setting options manually.
    </para>

    <variablelist>
      <varlistentry>
        <term>To import options</term>

        <listitem>
          <para>
            When you want to reuse your saved options, click
            <guibutton>Import</guibutton>. In the Select file for import dialog,
            navigate to the saved <filename>ini</filename> file and click
            <guibutton>Open</guibutton>.
          </para>

          <para>
            The values in your imported options file replace all existing
            settings.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>To export options</term>

        <listitem>
          <para>
            When you have set your options the way you want them, click
            <guibutton>Export</guibutton>. In the Select file for export dialog,
            specify a path and name for your options file (the type
            <filename>ini</filename> is automatically appended), and click
            <guibutton>Save</guibutton>.
          </para>

          <para>
            In the generated text <filename>ini</filename> file, each line
            contains a name-value pair that defines a single option.
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>

  <section id="Configuration_general">
    <title>General page</title>

    <para>The General page has these options:</para>

    <section>
      <title>
        Automatically scroll to first difference<indexterm>
          <primary>autoscrolling to first difference</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Compare window opens to the
            top of the folder or file, with no difference selected.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: When it first opens, the Compare
            window selects the first difference, scrolling to the location if
            necessary.
          </para>

          <itemizedlist>
            <listitem>
              <para>
                For a folder compare, selects the first different file or
                folders.
              </para>
            </listitem>

            <listitem>
              <para>
                For a file compare, selects the first difference block in
                the files.
              </para>
            </listitem>
          </itemizedlist>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Automatically scroll to first inline difference<indexterm>
          <primary>autoscrolling to first inline difference</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): When moving to a difference block, does not automatically scroll to the first inline difference within the lines of text.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: When moving to a difference block, automatically scrolls to the first inline difference within the lines of text.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Close Windows with '<keycap>Esc</keycap>'<indexterm>
          <primary>closing windows using Esc key</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>MDI child window or main window</option> (default): Lets you use the
            <keycap>Esc</keycap> key to close WinMerge windows. Pressing
            <keycap>Esc</keycap> once closes one window, so with one File Compare
            window open, it takes three key presses to close WinMerge: first the
            File Compare window, then the Folder Compare window, and finally the
            WinMerge window.
          </para>

          <para>
            Note that in the WinMerge command line, the
            <parameter>-e</parameter> parameter enables you to close WinMerge by
            pressing <keycap>Esc</keycap> just once.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>MDI child window only</option>: Pressing <keycap>Esc</keycap>
            closes a child window, but not the last remaining main window.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Close main window if there is on one MDI child window</option>: Pressing <keycap>Esc</keycap>
            closes a child window, and if there is only one child window, it will also close the main window.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: Pressing <keycap>Esc</keycap> does
            not close any WinMerge windows.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Automatically verify paths in Open dialog</title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): The Select Files or Folders
            dialog checks both or all three paths as you enter them. The
            <guibutton>Compare</guibutton> button remains disabled until both or
            all three paths are validated. Note that this checking can cause some
            delay.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: The <guibutton>Compare</guibutton> button
            in the Select Files or Folders dialog is always enabled, and attempts
            to open any paths you specify. Since there is no delay during
            validation, this can speed up the selection of paths. However, if the
            path cannot be opened, an error dialog is displayed.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Single instance mode<indexterm>
          <primary>WinMerge window</primary>

          <secondary>limiting instances</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): You can run multiple
            WinMerge instances. For example, if WinMerge is currently running and
            you click the WinMerge desktop shortcut, a new WinMerge window is
            opened.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Allow only one instance to run</option>: Limits the WinMerge program to one
            instance:
          </para>

          <itemizedlist>
            <listitem>
              <para>
                If WinMerge is currently running and you try to start a new
                instance, no new application window is opened: the current
                WinMerge window is used instead.
              </para>
            </listitem>

            <listitem>
              <para>
                If you start a new instance with paths (for example on the
                command line), a new Compare window is opened in the existing
                WinMerge window.
              </para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>
            <option>Allow only one instance; wait for termination</option>: Similar to the "Allow only one instance to run" option, this setting restricts WinMerge to a single application window. However, it also ensures that the WinMerge process does not terminate until the application window is closed. This is useful for situations where external applications, like SourceTree, need to wait for WinMerge to finish before they can safely delete temporary files.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Ask when closing multiple windows</title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): If you exit WinMerge while
            multiple Compare windows are open, WinMerge prompts you to confirm
            whether to close all the windows.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: If you click
            <guibutton>Exit</guibutton> and there are no pending file changes,
            WinMerge closes immediately.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Preserve file time in file compare<indexterm>
          <primary>timestamps</primary>

          <secondary>preserving</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): If you save changes to a
            file in WinMerge, the timestamp of the file is updated.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: If you save changes to a file in
            WinMerge, the timestamp of the file is not changed in your file
            system.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Show "Select Files or Folders" dialog on startup<indexterm>
          <primary>Select Files or Folders dialog</primary>

          <secondary>opening automatically</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): The WinMerge window opens
            when you launch WinMerge. You must then click <menuchoice>
              <guimenu>File</guimenu>

              <guimenuitem>Open</guimenuitem>
            </menuchoice> to open Select Files or Folders.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: The Select Files or Folders dialog
            opens along with the WinMerge window when you launch WinMerge.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Close "Select Files or Folders" dialog on clicking Compare button<indexterm>
          <primary>Select Files or Folders dialog</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): When you click <guibutton>Compare</guibutton> button, the Select File or Folders dialog will remain open instead of closing.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Clicking <guibutton>Compare</guibutton> button closes the Select Files or Folders dialog.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Open dialog Auto completion<indexterm>
          <primary>MRU list</primary>
        </indexterm>
      </title>

      <para>Choose one of these options:</para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>Disabled</guilabel>: No autocompletion is
            performed when you enter paths in the Select Files or Folders
            dialog.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>From file system</guilabel> (default): Checks paths as you type.
            It attempts to locate paths in the file system that match the letters
            you type, and if a matching path is found, completes the path.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>From Most Recent Used list</guilabel>: Checks paths only from the
            most recently used (MRU) list. This is handy when you have a limited
            set of paths to compare.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Auto-reload modified files<indexterm>
          <primary>Auto-reload</primary>
        </indexterm>
      </title>

      <para>Choose one of these options:</para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>Disabled</guilabel>: Disables automatic reloading.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Only on window activated</guilabel> (default): When the WinMerge window is activated,
            if the file has been modified, it will reload the file.
            However, a message box asking if you want to reload the file will be displayed at this time.
            If you do not want to see this message box,
            check "Don't ask this question again" and press the Yes button.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Immediately</guilabel>: Reloads the file immediately when it has been modified.
            However, a message box asking if you want to reload the file will be displayed at this time.
            If you do not want to see this message box,
            check "Don't ask this question again" and press the Yes button.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Language<indexterm>
          <primary>Language</primary>
        </indexterm>
      </title>

      <para>
        See <xref linkend="Locales_changing" />.
      </para>

    </section>
  </section>

  <section id="Configuration_compare">
    <title>Compare &gt; General page</title>

    <para>
      The options in this page enable you to change some of the ways that
      WinMerge detects differences, such as comparing only file size, or ignoring
      some types of differences, like case.
    </para>

    <important>
      <para>
        Customizing difference detection can be useful during comparisons,
        when you might not be interested in some differences. However, these
        options also affect merging. For example, if you ignore whitespace
        changes, then indentation changes in source code files are not preserved
        when you merge.
      </para>

      <para>
        For this reason, before you merge any differences, we strongly
        recommend resetting the options on this page to their default settings,
        especially the ignore options. To reset all the options on this page,
        click the <guibutton>Defaults</guibutton> button.
      </para>
    </important>

    <section>
      <title>
        About ignore options<indexterm>
          <primary>ignored differences</primary>
        </indexterm>
      </title>

      <para>
        A number of options in the Compare page (described later in this
        section) enable you to ignore certain differences. Ignored differences are
        treated in special ways in WinMerge:
      </para>

      <itemizedlist>
        <listitem>
          <para>They are marked with the Ignored Difference color.</para>
        </listitem>

        <listitem>
          <para>Ignored differences cannot be merged.</para>
        </listitem>

        <listitem>
          <para>Ignored differences are not included in difference counts.</para>
        </listitem>

        <listitem>
          <para>
            Files containing only ignored differences are marked as
            identical in a folder comparison.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Whitespaces<indexterm>
          <primary>whitespaces</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <para>
        Whitespace is the space between words and lines. It is represented
        in text files by special, nonprinting characters like spaces, tabs, and
        linefeeds. The significance of whitespace depends on how you want to read
        or process differences. It might be important to detect all changes in
        whitespace. Conversely, you might prefer to treat all whitespace the same
        whether one space, two spaces, an indent, or a tab. And in some structured
        documents (like comma-separated lists), you might want to disregard all
        whitespace.
      </para>

      <note>
        <para>
          The effects of whitespace on changes within lines are visible only
          when <option>View line differences</option> is enabled. This is in
          contrast to difference blocks, which are always highlighted.
        </para>
      </note>

      <example>
        <title>Lines with different whitespace</title>

        <para>
          One space between words:<screen format="linespecific">Two Words</screen>
        </para>

        <para>
          Two spaces between words:<screen format="linespecific">Two  Words</screen>
        </para>

        <para>
          Tab between words:<screen format="linespecific">Two	Words</screen>
        </para>

        <para>
          No spaces between words:<screen format="linespecific">TwoWords</screen>
        </para>
      </example>

      <para>
        You can control whitespace detection by choosing one of these
        options:
      </para>

      <variablelist>
        <varlistentry>
          <term>Compare</term>

          <listitem>
            <para>
              All whitespace is compared (default). If you are not sure
              which option your document requires, this is probably the safest
              choice. In the example, all lines are detected as different.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Ignore change</term>

          <listitem>
            <para>
              Compares differences in whitespace. In the example, the first
              three lines have different whitespace, but are detected as
              identical: tabs and multiple are treated as if they are single
              space. The last line has no whitespace, so the difference is
              <emphasis>not</emphasis> ignored (in effect, the words in the last
              two lines are different):
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Ignore all</term>

          <listitem>
            <para>
              Ignores all whitespace characters, except linefeeds (so lines
              are detected and preserved in a merge). All lines in the example are
              detected as identical.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>

      <note>
        <title>Related topics</title>

        <para>
          The effects of whitespace settings on line differences is
          described in <xref linkend="CompareFiles_linediff-highlight" />.
        </para>

        <para>
          The Options dialog Editor page contains related options that
          control how whitespace is used to detect breaks between words. See <xref
        linkend="Configuration_viewlinediffs" /> for details.
        </para>
      </note>
    </section>

    <section>
      <title>
        Ignore blank lines<indexterm>
          <primary>blank lines</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Empty lines in the source
            files are detected and represented in the File Compare window as blank
            lines with the Deleted Difference colors.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Empty lines in the source files are
            ignored. They are represented in the File Compare window as blank
            lines with the Ignored Difference colors. However the difference
            cannot be merged.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore case<indexterm>
          <primary>case (letter), detecting and ignoring differences</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Comparisons are
            case-sensitive. For example, <literal>LowerCase</literal>,
            <literal>LOWERCASE</literal>, and <literal>lowercase</literal> are all
            different.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Differences between lowercase and
            uppercase letters are ignored.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore carriage return differences (Windows/Unix/Mac)<indexterm>
          <primary>EOL</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): End of line (EOL) style
            differences are detected. For example, if you compare two lines that
            have the same contents but different line endings, the lines are
            considered to be different. When this happens, WinMerge displays a
            dialog prompting you to confirm whether to detect or ignore the
            difference.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: EOL differences are ignored.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore numbers<indexterm>
          <primary>numbers</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Numeric differences are detected.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Numeric differences are ignored.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore codepage differences<indexterm>
          <primary>codepage</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): File encoding differences are detected. Also, differences between the presence and absence of BOM are detected.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: File encoding differences are ignored.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore comment differences<indexterm>
          <primary>filters</primary>

          <secondary>comments</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge compares comments
            in code, along with other content.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: This option optimizes comparisons by
            detecting comments in certain programming language file types (such as
            C++ and Java), and ignoring them.
            The detection is based on syntax highlighting, so it has no effect on file types that are not supported by WinMerge.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore missing trailing EOL<indexterm>
          <primary>filters</primary>
          <secondary>EOL</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Differences in the presence or absence of trailing EOL characters are detected as differences, even if the content of the lines matches.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: When one file ends with an EOL character (e.g., LF or CRLF) and the other does not, but the line content matches, these differences are ignored.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore line breaks (treat as spaces)<indexterm>
          <primary>filters</primary>
          <secondary>line breaks</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Line breaks (EOL characters) are not treated as spaces.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Within a diff hunk, line breaks are treated as spaces. For example, the following difference is ignored:
            <screen>Left:
abc def

Right:
abc
def
</screen>
            <note>
              Useful when combined with whitespace options such as
              <option>Whitespaces → Ignore change</option> or
              <option>Whitespaces → Ignore all</option>.
            </note>
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Enable moved block detection<indexterm>
          <primary>moved differences</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge does not detect
            when differences are due to moved lines.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: WinMerge tries to detect lines that
            are moved (in different locations in each file). Moved blocks are
            indicated by the <guilabel>Moved</guilabel> and <guilabel>
              Selected
              Moved
            </guilabel> difference colors. If the Location bar is displayed,
            corresponding difference locations in the left and right location bars
            are connected with a line. Showing moved blocks can make it easier to
            visualize changes in files, if there are not too many.
          </para>

          <para>
            For an example, see the Location pane description in <xref
          linkend="Compare_files" />.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Align similar lines<indexterm>
          <primary>similar lines, aligning</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Lines within difference
            blocks are shown as they occur in the source files.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: WinMerge tries to detect lines within
            a difference blocks that are similar, and adds blank lines in the File
            panes to align them. This option is most effective when lines are
            quite similar; less effective if lines are too different.
          </para>

          <para>
            For an example, see the <citetitle>Similar lines</citetitle>
            description in <xref linkend="CompareFiles_diffcolors" />.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Diff algorithm<indexterm>
          <primary>algorithm</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>default</option> (default): The basic greedy diff
            algorithm.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>minimal</option>: Spend extra time to make sure the
            smallest possible diff is produced.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>patience</option>: Use "patience diff" algorithm when
            generating diff.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>histogram</option>: This algorithm extends the patience
            algorithm to "support low-occurrence common elements".
          </para>
        </listitem>

        <listitem>
          <para>
            <option>none</option>: This algorithm does not detect insertions
            or deletions of lines.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Enable indent heuristic<indexterm>
          <primary>indent heuristic</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default):
            Enable the heuristic that shifts diff hunk boundaries to make diffs easier to read.
            It has no effect if the Diff algorithm is default.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: Disable the heuristic.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Completely unhighlight the ignored differences<indexterm>
          <primary>unhighlight ignored differences</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default):
            Difference lines ignored by line filters and substitution filters are
            displayed in the color of Ignored Difference.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>:
            Makes the color of the different lines ignored by line filters and substitution
            filters the same as the color of the identical lines.
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_compare_folder">
    <title>Compare &gt; Folder page</title>

    <section id="Configuration_compmethod">
      <title>
        Compare method<indexterm>
          <primary>comparing files</primary>

          <secondary>detection options</secondary>
        </indexterm>
      </title>

      <para>
        This option lets you determine how complete your file comparisons
        are. Choose one of these five choices:
      </para>

      <variablelist>
        <varlistentry>
          <term>Full Contents</term>

          <listitem>
            <para>
              Default: Full comparison of files by content, with all the
              bells and whistles. This method invokes plugins and uses the
              diffutils engine for fully accurate differencing and moved block
              detection. This is the most complete and recommended method.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Quick Contents</term>

          <listitem>
            <para>
              Slimmed-down comparison of files by content. This method uses
              streamlined file comparison code which skips plugins and moved block
              detection. This method is faster than <guilabel>
                Full
                Contents
              </guilabel>, because it does not load the files.
            </para>

            <para>
              Its drawback is that line filters are not applied when
              comparing. For example, this method sees file as different even if
              line filters are set to ignore all differences in the files.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Binary Contents</term>

          <listitem>
            <para>
              This method is faster than the Quick contents
              compare method. However, it does not apply any plugins, line filters,
              'Ignore case' option, etc. First, it compares the file sizes, and
              if they are different, it treats the contents of the file as
              different without comparing them. If the file sizes match,
              it simply compares the contents of the file in bytes.
              No file encoding detection, EOL detection, or binary file detection is performed.
              This compare method is good for comparing files against backed up files.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>
            Modified Date<indexterm>
              <primary>timestamps</primary>

              <secondary>comparing</secondary>
            </indexterm>
          </term>

          <listitem>
            <para>
              Compares only the modification dates on the files, so it is
              far faster than either of the contents methods. But obviously, it is
              only as accurate as the modification dates.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Modified Date and Size</term>

          <listitem>
            <para>
              Similar to <guilabel>Modified Date</guilabel>, but also checks
              file sizes when dates are identical.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>
            Size<indexterm>
              <primary>file sizes</primary>

              <secondary>comparing</secondary>
            </indexterm>
          </term>

          <listitem>
            <para>
              Compares only file sizes, so it is fast but not as accurate as
              the contents methods.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Existence</term>

          <listitem>
            <para>
              Compares only whether files exist on both sides. If a file exists
              on both the left and right, they are considered identical, without
              checking contents, size, or timestamps.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section>
      <title>
        Stop after first difference<indexterm>
          <primary>comparing files</primary>

          <secondary>stopping after first difference</secondary>
        </indexterm><indexterm>
          <primary>comparing folders</primary>

          <secondary>stopping after first difference</secondary>
        </indexterm>
      </title>

      <para>
        This option is enabled only when the <guilabel>
          Quick
          Contents
        </guilabel> compare method is selected.
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge examines all
            differences in the files.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: This option optimizes comparisons by
            examining files only until the first difference is found, instead
            always scanning the entire files.
          </para>

          <para>
            The drawback is that WinMerge may be unable to identify binary
            files as binary. This is likely to happen if the first difference is
            near the beginning of the file. If you know what kind of files you are
            comparing (for example, which are binary files), this option can be a
            good way to speed up comparisons. However, don't enable this option if
            you are not sure what kind of files you are comparing.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore time differences less than 3 seconds<indexterm>
          <primary>timestamps</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Files with different
            timestamps are detected as different.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Sometimes (for example, when you use
            network shares) small differences in timestamps are not significant.
            To get more meaningful results in such situations, this option enables
            you to ignore time differences smaller than three seconds.
          </para>

          <para>
            This option works only with the <guimenuitem>
              Modified
              Date
            </guimenuitem> and <guimenuitem>
              Modified Date and
              Size
            </guimenuitem> compare methods (described in <xref
          linkend="Configuration_compmethod" />). It has no effect with other
            methods.
          </para>

          <warning>
            <para>
              This option should be enabled only when the time difference is
              detected. Otherwise, it can cause incorrect compare results.
            </para>
          </warning>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Include subfolders<indexterm>
          <primary>include subfolders</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): WinMerge doing a recursive comparing and also includes subfolders.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: WinMerge only comparing the files in the root folder.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Expand subfolders after comparison<indexterm>
          <primary>expand subfolders</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Do not expand</option> (default): Subfolders remain collapsed after comparison.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Expand all subfolders</option>: All subfolders are expanded after comparison.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Expand different subfolders</option>: Only subfolders with differences are expanded after comparison.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Expand identical subfolders</option>: Only subfolders without differences are expanded after comparison.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Include unique subfolders contents<indexterm>
          <primary>include unique subfolders</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): WinMerge also shows the content from unique subfolders.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: WinMerge ignore unique subfolders when comparing folders.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Ignore reparse points<indexterm>
          <primary>reparse points</primary>

          <secondary>detecting and ignoring differences</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Compares the contents of reparse point folders as if they were normal folders.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Ignores the contents of folders that are reparse points. For example, C:\Users\All Users is a symbolic link to C:\ProgramData, and enabling this option will skip comparing the C:\Users\All Users folder.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Switch to quick compare when size exceeds (MB)<indexterm>
          <primary>Quick compare</primary>

          <secondary>limit</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option>: Is not active unless the Compare method
            is set to other than <guilabel>Full Contents</guilabel> compare method.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Is active when the Compare method
            is set to <guilabel>Full Contents</guilabel> compare method.
          </para>

          <para>
            Threshold size for switching to <guilabel>Quick Contents</guilabel> compare method.
            When <guilabel>Full Contents</guilabel> compare method is selected, files bigger (in mega bytes) than this
            value are compared using <guilabel>Quick Contents</guilabel> compare method.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Switch to binary compare when size exceeds (MB)<indexterm>
          <primary>Binary compare</primary>

          <secondary>limit</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option>: Is not active unless the Compare method
            is set to other than <guilabel>Full Contents</guilabel> and <guilabel>Quick Contents</guilabel> compare method.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Is active when the Compare method
            is set to <guilabel>Full Contents</guilabel> or <guilabel>Quick Contents</guilabel> compare method.
          </para>

          <para>
            Threshold size for switching to Binary Contents compare method.
            When <guilabel>Full Contents</guilabel> or <guilabel>Quick Contents</guilabel> compare method is selected, files bigger (in mega bytes) than this
            value are compared using <guilabel>Binary Contents</guilabel> compare method.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        CPU cores to use<indexterm>
          <primary>compare threads</primary>
        </indexterm>
      </title>

      <para>
        Number of threads which use to comparing. With a negative value WinMerge
        will use addition of the number of available CPU cores.
      </para>
    </section>

    <section>
      <title>
        Additional comparison conditions<indexterm>
          <primary>filter expression</primary>
        </indexterm>
      </title>

      <para>
        Allows specifying additional comparison conditions using filter expressions when comparing folders.
        For example, even if files are considered identical by the selected comparison method (such as Full Contents),
        you can add conditions like <screen>allequal(Date)</screen> or <screen>LeftDate = RightDate</screen>
        to require that file modification dates also match.
        When you click the <guilabel>=</guilabel> button to the right of the input field,
        a menu appears with items such as <guilabel>Compare Size</guilabel> and <guilabel>Compare Date</guilabel>.
        Selecting <guilabel>Compare Date</guilabel> automatically inserts <literal>allequal(Date)</literal> into the field.
      </para>
    </section>

    <section>
      <title>
        Rename/move detection<indexterm>
          <primary>rename detection</primary>
        </indexterm><indexterm>
          <primary>move detection</primary>
        </indexterm>
      </title>
 
      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge does not detect renamed or moved files/folders.
          </para>
        </listitem>
 
        <listitem>
          <para>
            <option>Rename detection</option>: Detects files or folders with different names but matching detection keys within the same directory.
            Files/folders are grouped together when they share the same detection key.
          </para>
        </listitem>
 
        <listitem>
          <para>
            <option>Rename and move detection</option>: Detects files or folders with different names or in different directories but matching detection keys.
            This mode detects both renamed items (same directory) and moved items (different directories).
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Rename/move detection keys<indexterm>
          <primary>rename detection keys</primary>
        </indexterm><indexterm>
          <primary>move detection keys</primary>
        </indexterm>
      </title>

      <para>
        Specifies the filter expression used to generate detection keys for matching files/folders across sides.
        Items with matching keys are grouped together as potentially renamed or moved items.
        For example, setting the key to <literal>Size</literal> will group files with the same size,
        while <literal>Name</literal> will group files with the same filename (useful for detecting moves).
      </para>

      <para>
        When you click the <guilabel>=</guilabel> button to the right of the input field,
        a helper menu appears with common detection key expressions:
      </para>

      <section>
        <title>Basic Detection Keys</title>
        <variablelist>
          <varlistentry>
            <term>Name</term>
            <listitem>
              <para>
                Matches files/folders by name. Useful for detecting files that have been moved to different directories but kept the same name.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Base name (without extension)</term>
            <listitem>
              <para>
                Matches files by name without extension. For example, "file.txt" and "file.doc" would match.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Normalized Unicode Name</term>
            <listitem>
              <para>
                Inserts <literal>normalizeUnicode(Name, "NFC")</literal> which matches files by normalized Unicode filename. 
                Useful for detecting files with equivalent names but different Unicode representations (e.g., composed vs. decomposed characters).
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Relative Path</term>
            <listitem>
              <para>
                Matches files by their relative path from the comparison root. Useful for detecting files that have been renamed but maintain their relative directory structure.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Size</term>
            <listitem>
              <para>
                Matches files by size. Useful for detecting files that have been renamed but have the same size.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Date</term>
            <listitem>
              <para>
                Matches files by modification date/time.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Hash (MD5)</term>
            <listitem>
              <para>
                Inserts <literal>if(IsFolder, Name, prop("Hash.MD5"))</literal>.
                For folders, matches by name. For files, matches by MD5 hash of content.
                This is the most accurate method for detecting renamed files, but requires computing MD5 hashes which can be slow for large files.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Additional Properties...</term>
            <listitem>
              <para>
                Opens a submenu providing access to Windows file properties such as <literal>System.Author</literal>,
                <literal>System.Title</literal>, <literal>System.Keywords</literal>, etc. 
                You can use these to match files based on their metadata.
                The inserted expression will be <literal>if(IsFolder, Name, prop("PropertyName"))</literal>.
              </para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>String Transformation Functions</title>
        <para>
          The menu includes string transformation functions that can be applied to detection keys.
          When selected, these functions wrap the current expression (or <literal>Name</literal> if empty):
        </para>

        <variablelist>
          <varlistentry>
            <term>Insert replace() Function</term>
            <listitem>
              <para>
                Inserts <literal>replace(expression, "from", "to")</literal> to replace literal text strings in the key.
                You need to edit the placeholder strings "from" and "to" to specify what text to search for and what to replace it with.
                Example: <literal>replace(Name, ".backup", "")</literal> removes ".backup" from filenames.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Insert regexReplace() Function</term>
            <listitem>
              <para>
                Inserts <literal>regexReplace(expression, "pattern", "replacement")</literal> to replace text using regular expressions.
                Supports backreferences ($1, $2, etc.) in the replacement string.
                Example: <literal>regexReplace(Name, "^(\d+)_(.+)$", "$2")</literal> removes a leading number and underscore from filenames.
              </para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>Replace Lists</title>
        <para>
          The Replace Lists submenu provides access to batch string replacement functionality using external files:
        </para>

        <variablelist>
          <varlistentry>
            <term>Create String Replace List and Insert...</term>
            <listitem>
              <para>
                Creates a new tab-separated values (TSV) file with a template for string replacements.
                The file is stored in <filename>%APPDATA%\WinMerge\ReplaceLists</filename> (or <filename>Documents\WinMerge\ReplaceLists</filename> depending on your settings).
                After creation, the file opens in your default text editor and the function <literal>replaceWithList(expression, "filepath")</literal> is inserted.
              </para>
              <para>
                The file format is one replacement per line: <literal>search_string&lt;TAB&gt;replacement_string</literal>.
                Lines starting with <literal>#</literal> are comments.
              </para>
              <para>
                Example file content:
<screen># Replace version numbers in filenames
v1.0	v2.0
beta	release</screen>
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Create Regex Replace List and Insert...</term>
            <listitem>
              <para>
                Similar to Create String Replace List, but for regular expression replacements.
                Creates a template file in <filename>%APPDATA%\WinMerge\RegexReplaceLists</filename> (or <filename>Documents\WinMerge\RegexReplaceLists</filename>).
                Inserts <literal>regexReplaceWithList(expression, "filepath")</literal>.
              </para>
              <para>
                The file format is: <literal>regex_pattern&lt;TAB&gt;replacement</literal> with support for backreferences.
              </para>
              <para>
                Example file content:
<screen># Normalize date formats
(\d{4})-(\d{2})-(\d{2})	$1_$2_$3
\d+	NUMBER</screen>
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>String Replace Lists / Regex Replace Lists</term>
            <listitem>
              <para>
                These submenus list all TSV files found in the respective ReplaceLists folders.
                Selecting a file from the list inserts the corresponding <literal>replaceWithList()</literal> or 
                <literal>regexReplaceWithList()</literal> function with the file's path.
                This allows you to quickly reuse previously created replacement lists.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Open String Replace Lists Folder... / Open Regex Replace Lists Folder...</term>
            <listitem>
              <para>
                Opens Windows Explorer at the folder where replacement list files are stored,
                allowing you to manage (edit, delete, organize) your replacement list files directly.
              </para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>Text Normalization</title>
        <para>
          The Text Normalization submenu provides functions to normalize text for more flexible matching:
        </para>

        <variablelist>
          <varlistentry>
            <term>Lowercase / Uppercase</term>
            <listitem>
              <para>
                Inserts <literal>toLower(expression)</literal> or <literal>toUpper(expression)</literal> to convert all characters to lowercase or uppercase.
                Useful for case-insensitive matching.
                Example: <literal>toLower(Name)</literal> matches "File.txt", "FILE.TXT", and "file.txt" as identical.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Half-width / Full-width</term>
            <listitem>
              <para>
                Inserts <literal>toHalfWidth(expression)</literal> or <literal>toFullWidth(expression)</literal>.
                Converts between half-width and full-width characters (primarily for Japanese text).
                Example: <literal>toHalfWidth(Name)</literal> converts "ファイル" (full-width katakana) to "ﾌｧｲﾙ" (half-width).
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Chinese Conversion</term>
            <listitem>
              <para>
                Provides <literal>toSimplifiedChinese(expression)</literal> and <literal>toTraditionalChinese(expression)</literal> functions.
                Converts between Simplified and Traditional Chinese characters.
                Useful for matching files with names in different Chinese character sets.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Japanese Conversion</term>
            <listitem>
              <para>
                Provides <literal>toHiragana(expression)</literal> and <literal>toKatakana(expression)</literal> functions.
                Converts between Hiragana and Katakana Japanese characters.
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Normalize Unicode</term>
            <listitem>
              <para>
                Inserts <literal>normalizeUnicode(expression)</literal> which normalizes Unicode text to NFC (Normalization Form Canonical Composition) form.
                This is useful for matching files whose names may use different Unicode encodings for the same characters
                (e.g., a single é character vs. e + combining acute accent).
              </para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <para>
        You can combine multiple keys using the <literal>+</literal> operator with a separator.
        For example, <literal>Name + "|" + Size</literal> will create a composite key combining both filename and size.
      </para>

      <note>
        <para>
          The detection key expression is evaluated for each side of a file/folder comparison to produce a key.
          Items are grouped when their keys match. For example, with the key <literal>Size</literal>,
          a file of 1024 bytes on the left and a file of 1024 bytes on the right (even with different names) will be grouped together.
        </para>
      </note>
    </section>
 
    <section>
      <title>
        Merge renames and moves<indexterm>
          <primary>merge renamed items</primary>
        </indexterm><indexterm>
          <primary>merge moved items</primary>
        </indexterm>
      </title>
 
      <para>
        Specifies how renamed and moved items detected by the rename/move detection feature should be merged into single entries in the folder comparison tree.
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Renamed/moved items remain as separate entries in the folder comparison tree.
            The items are grouped together (indicated by a common group ID), but each side's file/folder is shown separately.
          </para>
        </listitem>
 
        <listitem>
          <para>
            <option>Merge renames</option>: Items that have been detected as renamed but are in the same directory are merged into a single entry.
            This simplifies the comparison tree by showing a single item that exists on multiple sides with different names.
            Items in different directories (moved items) are not merged.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Merge renames and moves</option>: Both renamed items (same directory, different names) and moved items (different directories) are merged into single entries when detected.
            This provides the most compact view of renamed and relocated files/folders.
          </para>
        </listitem>
      </itemizedlist>
 
      <note>
        <para>
          Merging only occurs when each side has at most one item in the group and the items satisfy the merge criteria (same directory for renames, or any directory for moves).
          If multiple files match on one side (ambiguous case), they are not merged.
        </para>
      </note>
    </section>
  </section>

  <section id="Configuration_compare_table">
    <title>
      Compare &gt; Table page<indexterm>
        <primary>table files</primary>
      </indexterm>
    </title>
    <section>
      <title>CSV file patterns</title>
      <para>
        Specifies file name pattern for comma-separated values files to open in table format.
        To specify multiple items, separate them with a semicolon.
        By default, *.csv is specified. If you do not want to open the files with the extension .csv in table format. Delete the *.csv.
      </para>
    </section>

    <section>
      <title>TSV file patterns</title>
      <para>
        Specifies file name pattern for tab-separated values files to open in table format.
        To specify multiple items, separate them with a semicolon.
        By default, *.tsv is specified. If you do not want to open the files with the extension .tsv in table format. Delete the *.tsv.
      </para>
    </section>

    <section>
      <title>Custom Delimiter-Separated Values</title>
      <para>
        If you want to open text files, with values separated by characters other than commas or tabs, in tabular format,
        specify the file name pattern and delimiter.
      </para>
    </section>

    <section>
      <title>Allow newlines in quotes</title>
      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default):
            If there is a newline character between the quote character and the next quote character,
            the newline character is treated as part of a value.
            Enable this option if you want to process CSV/TSV files that contain multiple lines in one field.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>:
            Disable the above.
            Disable this option when opening files with incorrect quotes.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Quote character</title>
      <para>
        Specifies the character that is treated as quotation marks.
        Delimiters within the text range enclosed by the characters specified here are treated as part of a value.
        This field can be empty.
        To open files in which the quotation marks are mere values,
        leave it empty or specify a character that does not exist in the file.
      </para>
    </section>
  </section>

  <section id="Configuration_compare_binary">
    <title>Compare &gt; Binary page</title>
    <section>
      <title>
        Binary file patterns<indexterm>
          <primary>binary files</primary>
        </indexterm>
      </title>
      <para>
        Specifies file name patterns for binary files to be opened in the binary compare window.
        To specify multiple items, separate them with a semicolon.
        By default, *.bin is specified. If you do not want files with the .bin extension to be opened in the binary compare window, remove *.bin from the list.
      </para>
    </section>
    <section>
      <title>
        Frhed settings<indexterm>
          <primary>frhed</primary>
        </indexterm>
      </title>
      <variablelist>
        <varlistentry>
          <term>View Settings...</term>

          <listitem>
            <para>Here you can choose:</para>
            <itemizedlist>
              <listitem>
                <para>The number of bytes to display per line of hexdump (only applies
                if &quot;Automatically adjust number of bytes per line&quot; is
                disabled)</para>
              </listitem>
              <listitem>
                <para>If the &quot;Automatically adjust number of bytes per line&quot;-
                checkbox is checked, then the number of bytes displayed per hexdump
                line is adjusted in such a way that the whole window width is used at
                all times.</para>
              </listitem>
              <listitem>
                <para>The number of digits for the offset length (only applies if
                &quot;Adjust offset length&quot; is disabled)</para>
              </listitem>
              <listitem>
                <para>If the offset length should be automatically adjusted to that of
                the maximum offset (enabled) or right-padded with spaces (disabled)
                </para>
              </listitem>
              <listitem>
                <para>How to display the values at the caret position, either as signed
                or as unsigned integer values</para>
              </listitem>
              <listitem>
                <para>If read-only mode should be automatically set after opening
                files.</para>
              </listitem>
              <listitem>
                <para>The name of the text editor that will be called by the
                <menuchoice><guimenu>Edit</guimenu><guimenuitem>Open in text editor
                </guimenuitem></menuchoice> command.</para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Binary Mode...</term>

          <listitem>
            <para>What kind of byte order to use: Either Little-endian, as used in
            Intel-computers or Big-endian, used for example in computers with a
            Motorola processor. The difference between these modes is thus: Consider a
            longword, which is 4 bytes (named A to D) long.</para>

            <screen>Longword in processor register = ABCD.</screen>

            <para>The least significant bit, which has the value 1, is found in byte
            "D". In a processor register the longword is ordered in this way. If this
            value is written to a position in memory, then by Intel convention the
            longword is written in this way, with the growing offsets to the right:
            </para>

            <screen>Longword in memory = DCBA.</screen>

            <para>That is, the bytes making up the longword are written in reverse
            order as they are found in a processor register.</para>

            <para>This means that a file written by a Big-endian machine will contain
            wrong longword and word values if read by a Little-endian machine without
            conversion.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Character Set...</term>

          <listitem>
            <para>Here you can choose the character set for displaying and writing
            characters, either ANSI (the Windows character set) or OEM (the DOS
            character set). The font size in points can also be chosen.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>
  </section>

  <section id="Configuration_compare_image">
    <title>
      Compare &gt; Image page<indexterm>
        <primary>image files</primary>
      </indexterm>
    </title>
    <section>
      <title>Image file patterns</title>
      <para>
        Specifies file name patterns for image files to be opened in the image compare window.
        To specify multiple items, separate them with a semicolon.
        By default, the .pdf, .svg, .wmf, and .emf extensions are not in the list.
        Add them if you want files with these extensions to be displayed in the image compare window.
      </para>
    </section>

    <section>
      <title>Enable image compare in folder compare</title>
      <para>
        When this option is enabled, folder comparisons will compare files that match the specified patterns as images.
        Metadata differences will be ignored, and a color distance threshold will be applied to determine visual differences between images.
      </para>
    </section>

    <section>
      <title>OCR result</title>
      <itemizedlist>
        <listitem>
          <para>
            <option>Text only</option> (default):
            Shows only the text recognized from the image.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Line-by-line position and text</option>:
            Shows the recognized text line by line with its position in the original image.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Word-by-word position and text</option>:
            Shows the recognized text word by word with its position in the original image.
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_compare_webpage">
    <title>
      Compare &gt; Webpage page<indexterm>
        <primary>webpages</primary>
      </indexterm>
    </title>

    <section>
      <title>
        URL pattern to include (Regular expression)<indexterm>
        </indexterm>
      </title>
      <para>
        Enter a regular expression in this field to specify the file paths or URLs that should be opened in the webpage compare window.
        For example, if you enter the regular expression <code>.*\.html?|https?://.*</code>,
        files with the .html or .htm extension and URLs starting with http:// or https:// will be opened in the webpage compare window.
      </para>
    </section>

    <section>
      <title>
        URL pattern to exclude (Regular expression)<indexterm>
        </indexterm>
      </title>
      <para>
        Enter a regular expression to exclude certain file paths or URLs from the Webpage Comparison window.
        This applies to items that match the "URL pattern to include" field.
        Use this to exclude specific patterns you don't want to include.
      </para>
    </section>

    <section>
      <title>
        User data folder location<indexterm>
        </indexterm>
      </title>
      <itemizedlist>
        <listitem>
          <para>
            <option>AppData folder</option> (default): Stores cookies, browsing history, and cache data in the %APPDATA%\WinMerge\WinWebDiff folder.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Install folder</option>: Saves data in the WinMerge installation directory, which usually requires administrator permissions to write. This is generally not recommended.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Separate user data folders for each pane<indexterm>
        </indexterm>
      </title>
      <para>Creates distinct data folders for each pane, preventing data overlap between them.</para>
    </section>
  </section>

  <section id="Configuration_messageboxes">
    <title>
      Message Boxes page<indexterm>
        <primary>message boxes</primary>
      </indexterm>
    </title>

    <section>
      <title>Reset</title>

      <para>
        WinMerge allows you to suppress some common message boxes. For
        example, when two identical files are opened, the message box titled,
        <guilabel>The files are identical</guilabel>, is normally opened. If you
        don't want this box to display any more, you can enable (check) the option
        in that message box to not show the message again.
      </para>

      <para>
        Later, you might decide that you want to see those messages again.
        If so, click the <guibutton>Reset</guibutton> button to make the message
        boxes display again.
      </para>

      <note>
        <para>
          We recommend that you not suppress messages when updating WinMerge
          to a newer version. The installer enables their display automatically,
          but if you don't use the installer, then remember to enable message
          display by using the <guibutton>Reset</guibutton> button.
        </para>
      </note>
    </section>
  </section>

  <section id="Configuration_editor_general">
    <title>
      Editor &gt; General page<indexterm>
        <primary>editing</primary>

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

    <section id="Configuration_syntaxhighlight">
      <title>
        Highlight syntax<indexterm>
          <primary>syntax highlighting</primary>

          <secondary>enabling and disabling</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): WinMerge can syntax
            highlight many programming language and web formats. To see the
            formats that are supported by default, click <menuchoice>
              <guimenu>View</guimenu>

              <guimenuitem>Syntax Highlight</guimenuitem>
            </menuchoice>.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: Syntax highlighting consumes some
            processing power, so if WinMerge screen updating seems to be slow,
            turning off this option might help.
          </para>
        </listitem>
      </itemizedlist>

      <para>
        <option>Highlight mode</option> determines which syntax parser is
        used for syntax highlighting.
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <option>Built-in only</option>: Use only WinMerge's built-in
            syntax parser.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Built-in first</option>: Prefer the built-in syntax
            parser. If it does not support the current file type,
            Tree-sitter is used.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Tree-sitter first</option>: Prefer Tree-sitter. If
            Tree-sitter does not support the current file type, the built-in
            syntax parser is used.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Tree-sitter only</option>: Use only Tree-sitter for
            syntax highlighting.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Preserve original EOL<indexterm>
          <primary>EOL</primary>

          <secondary>preserving</secondary>
        </indexterm><indexterm>
          <primary>end of line</primary>

          <see>EOL</see>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): Assumes that files are
            meant to be Windows files. If a file does not use the standard Windows
            line ending, WinMerge considers this to be an error. It silently
            changes the line endings to the Windows style instead of detecting
            them as differences. Thus, the File Compare window status bar shows
            the EOL style as <guilabel>Win</guilabel>.
          </para>

          <para>
            For most situations you should leave this option disabled: the
            default behavior works even when comparing two files that have
            different line ending styles.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Prevents WinMerge from automatically
            changing line endings, so that it detects different EOL styles for
            every line. This might be useful for handling files from systems with
            different EOL styles (for example, Windows and Unix).
          </para>

          <important>
            <para>
              This is an advanced option for users who are familiar with EOL
              bytes and who want to compare files with different EOL styles inside
              <emphasis>one</emphasis> file. We recommend that you not enable this
              option unless you need this advanced functionality. Remember, this
              option is not required to compare two files with different EOL
              styles.
            </para>
          </important>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Tabs<indexterm>
          <primary>tabs</primary>

          <secondary>editing options</secondary>
        </indexterm>
      </title>

      <variablelist>
        <varlistentry>
          <term>Tab size</term>

          <listitem>
            <para>
              Width of a tab space. Specify a value
              <replaceable>n</replaceable>: the resulting width is equivalent to
              that of <replaceable>n</replaceable> characters. Default: 4. The
              maximum value is 64.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Tab insert options</term>

          <listitem>
            <para>
              Determines what kind of character is used when you insert a
              tab in text. Only one of these options can be enabled:
            </para>

            <itemizedlist>
              <listitem>
                <para>
                  <guilabel>Insert Tabs</guilabel> (default): Uses a single
                  tab character.
                </para>
              </listitem>

              <listitem>
                <para>
                  <guilabel>Insert Spaces</guilabel>: Uses one or more
                  spaces (determined by the <option>Tab size</option>) instead of
                  a tab character. For example, with the default tab size, four
                  spaces are inserted.
                </para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section>
      <title>
        Rendering Mode<indexterm>
          <primary>rendering</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>GDI</option> (default): Renders text using the Graphics Device Interface (GDI).
          </para>
        </listitem>

        <listitem>
          <para>
            <option>DirectWrite Modes</option>: Renders text using various DirectWrite rendering modes, including support for colored emojis on Windows 8.1 and later. Available only in the 64-bit version of WinMerge. See <ulink url="https://learn.microsoft.com/en-us/windows/win32/api/dwrite/ne-dwrite-dwrite_rendering_mode#constants">DirectWrite Rendering Modes</ulink> for details.
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_editor_comparemerge">
    <title>
      Editor &gt; Compare/Merge page<indexterm>
        <primary>editing</primary>

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

    <section>
      <title>
        Automatic rescan<indexterm>
          <primary>rescanning files</primary>

          <secondary>enabling and disabling autoscan</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge rescans
            automatically when you merge a difference, or if you manually rescan
            (for example, click the <guibutton>Rescan</guibutton> button).
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: Forces WinMerge to rescan after every
            edit event (a change to files, like typing).
          </para>

          <note>
            <para>
              To avoid slowing down your editing, WinMerge delays automatic
              rescanning a little: it waits one second after each edit event.
              Because each new edit event resets the timer, no rescans occur until
              you pause or stop editing.
            </para>
          </note>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Copy granularity for selected differences<indexterm>
          <primary>copy granularity</primary>
        </indexterm>
      </title>

      <para>
        Specifies the copy granularity when copying to another pane by
        clicking the <guimenuitem>Copy to right</guimenuitem> menu item etc.
        with text selected.
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <option>Diff hunk</option>: Copies diff hunks within
            the selected text.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Inline diff</option>: Copies inline diffs within
            the selected text.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Line</option>: Copies the differences within the
            selected text line by line.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Character</option> (default): Copies the differences within
            the selected text character by character.
          </para>
        </listitem>

      </itemizedlist>
    </section>

    <section id="Configuration_viewlinediffs">
      <title>
        Line Difference Coloring<indexterm>
          <primary>line differences</primary>

          <secondary>viewing options</secondary>
        </indexterm>
      </title>

      <para>
        These settings enable and configure the detection of <glossterm>
          line
          differences
        </glossterm> (changes within the lines of difference
        blocks):
      </para>

      <variablelist>
        <varlistentry>
          <term>View line differences</term>

          <listitem>
            <itemizedlist>
              <listitem>
                <para>
                  <option>Enabled</option> (default): WinMerge highlights
                  differences within lines. Also enables the <menuchoice>
                    <guimenu>View</guimenu>

                    <guimenuitem>View Line Differences</guimenuitem>
                  </menuchoice> menu item.
                </para>

                <para>Choose one of these suboptions:</para>

                <itemizedlist>
                  <listitem>
                    <para>
                      <guilabel>Character level</guilabel>: Highlights individual
                      characters that are different. This option can be useful if you
                      are looking for changes within words, or for file formats that do
                      not have clear word breaks.
                    </para>
                  </listitem>

                  <listitem>
                    <para>
                      <guilabel>Word-level</guilabel> (default): Highlights
                      entire words that are different.
                    </para>

                    <itemizedlist>
                      <listitem>
                        <para>
                          <guilabel>Break at whitespace</guilabel> (default):
                          Words are assumed to be separated by whitespace characters.
                          This usually works for typical text files.
                        </para>
                      </listitem>

                      <listitem>
                        <para>
                          <guilabel>Break at whitespace or punctuation</guilabel>:
                          Considers both whitespace and punctuation characters to be
                          word breaks. This can useful for handling lists that are
                          separated with punctuation (like comma-separated
                          lists).
                        </para>
                      </listitem>
                    </itemizedlist>
                  </listitem>
                </itemizedlist>
              </listitem>

              <listitem>
                <para>
                  <option>Disabled</option>: WinMerge does not highlight line
                  differences, and all settings for the level and whitespace options are
                  ignored. Also disables the <menuchoice>
                    <guimenu>View</guimenu>

                    <guimenuitem>View Line Differences</guimenuitem>
                  </menuchoice> menu item.
                </para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>
        <varlistentry>
          <term>Word break characters</term>

          <listitem>
            <para>Specifies the symbols that are treated as
            non-whitespace word separators when
            <guilabel>Break at whitespace or punctuation</guilabel>
            is selected.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <note>
        <title>Related topic</title>

        <para>
          <xref linkend="CompareFiles_linediff-highlight" /> explains in
          more detail how WinMerge detects and marks line differences.
        </para>
      </note>
    </section>

  </section>

  <section id="Configuration_editor_syntax">
    <title>
      Editor &gt; Syntax page<indexterm>
        <primary>editing</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      TBD
    </para>
  </section>

  <section id="Configuration_colors_colorschemes">
    <title>
      Colors &gt; Color Schemes page<indexterm>
        <primary>color schemes</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      The Color Schemes page allows you to customize the overall color appearance of WinMerge, including support for light and dark modes. You can select and manage color schemes for each mode, and save or delete your own custom schemes.
    </para>

    <variablelist>
      <varlistentry>
        <term>Color mode</term>
        <listitem>
          <para>
            Selects the color mode for the application. Choose from:
          </para>
          <itemizedlist>
            <listitem>
              <para>
                <option>Light</option> (default): Uses the color scheme specified for light mode. When selected, the appearance of dialog windows, menus, and other UI elements will be shown in a light style.
              </para>
            </listitem>
            <listitem>
              <para>
                <option>Dark</option>: Uses the color scheme specified for dark mode. When selected, the appearance of dialog windows, menus, and other UI elements will be shown in a dark style.
              </para>
            </listitem>
            <listitem>
              <para>
                <option>Follow system</option>: Automatically switches between light and dark mode based on your operating system's setting.
              </para>
            </listitem>
          </itemizedlist>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Light mode scheme</term>
        <listitem>
          <para>
            Selects the color scheme to use when <guilabel>Color mode</guilabel> is set to Light. Available schemes include <option>Default</option> (default), <option>Modern</option>, and any user-defined schemes you have saved.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Dark mode scheme</term>
        <listitem>
          <para>
            Selects the color scheme to use when <guilabel>Color mode</guilabel> is set to Dark. Available schemes include <option>VS Dark</option> (default), <option>Solarized Dark</option>, and any user-defined schemes you have saved.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Save current scheme</term>
        <listitem>
          <para>
            Saves the current color settings as a new scheme. The scheme is saved as an INI file. <emphasis>
              Only schemes saved in the <filename>Documents/WinMerge/ColorSchemes</filename> folder will appear in the <guilabel>Light mode scheme</guilabel> and <guilabel>Dark mode scheme</guilabel> lists.
            </emphasis>
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Delete current scheme</term>
        <listitem>
          <para>
            Deletes the currently selected color scheme. This button is only enabled for user-defined schemes (not for built-in schemes like Default or VS Dark).
          </para>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>
      Use these options to tailor the WinMerge interface to your preferences or to match your system theme. Custom color schemes make it easy to share or reuse your preferred color settings.
    </para>
  </section>

  <section id="Configuration_colors_differences">
    <title>
      Colors &gt; Differences page<indexterm>
        <primary>difference colors</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      Use this page if you want to change any of the difference colors used
      in the File Compare window. You can set the background, deleted, and text
      color.
    </para>

    <para>
      To change a color, click in its box to open a standard Color chooser
      dialog. Choose one of the predefined colors or define your own custom color,
      then click <guibutton>OK</guibutton> to load the new color in the
      box.
    </para>

    <para>
      To revert to the default colors of a scheme, choose a different scheme
      and return to the modified scheme.
    </para>
  </section>

  <section id="Configuration_colors_syntax">
    <title>
      Colors &gt; Syntax page<indexterm>
        <primary>syntax highlighting</primary>

        <secondary>color options</secondary>
      </indexterm>
    </title>

    <para>
      By default, the WinMerge File Compare window marks the syntax of
      certain kinds of source code, as described in <xref
    linkend="Configuration_syntaxhighlight" />. This page lists the syntax
      elements that are recognized, and enables you to change their text color and
      weight.
    </para>

    <para>
      To revert to the default colors of a scheme, choose a different scheme
      and return to the modified scheme.
    </para>
  </section>

  <section id="Configuration_colors_text">
    <title>
      Colors &gt; Text page<indexterm>
        <primary>text colors</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      Use this page to change the colors used for text. First, check the
      option, <guilabel>Use customized text colors</guilabel>. This activates the
      text options. There is an option for three kinds of text: whitespace,
      regular text, and selected text. For each kind of text , you can choose a
      color for the background and the text.
    </para>
  </section>

  <section id="Configuration_colors_marker">
    <title>
      Colors &gt; Markers page<indexterm>
        <primary>marker colors</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>TBD</para>
  </section>

  <section id="Configuration_colors_foldercompare">
    <title>
      Colors &gt; Folder Compare page<indexterm>
        <primary>folder compare colors</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      By default, the WinMerge Folder Compare window use background colors
      to show the status from a item (equal, different, not exists on all sides
      or filtered).
    </para>

    <para>
      To change a color, click in its box to open a standard Color chooser
      dialog. Choose one of the predefined colors or define your own custom color,
      then click <guibutton>OK</guibutton> to load the new color in the
      box.
    </para>

    <para>
      To revert to the default colors of a scheme, choose a different scheme
      and return to the modified scheme.
    </para>
  </section>

  <section id="Configuration_archive">
    <title>
      Archive Support page<indexterm>
        <primary>archiving files</primary>

        <secondary>configuring support after installation</secondary>
      </indexterm>
    </title>

    <para>
      This page contains options for configuring archive support
      using 7-Zip.
    </para>

    <section>
      <title>
        Enable archive file support<indexterm>
          <primary>7-Zip archives</primary>

          <secondary>enabling and disabling integration</secondary>
        </indexterm>
      </title>

      <para>
        This option controls how WinMerge handles archive files (based on
        7-Zip integration).
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): WinMerge recognizes 7-Zip
            archives.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: Turns off 7-Zip archive
            integration.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>
        Detect archive type from file signature<indexterm>
          <primary>detecting archive types</primary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge recognizes only
            archives whose file extension is known on your system (for example, in
            the registry or through a file association).
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: WinMerge can recognize archive files
            even if their file extension is not known. To recognize an archive,
            WinMerge searches the beginning of the file for the archive signature
            bytes.<tip>
              <para>
                You can use this option to enable WinMerge to recognize Open
                Office files.
              </para>
            </tip>
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_Project">
    <title>
      Project page<indexterm>
        <primary>project files</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      TBD
    </para>
  </section>

  <section id="Configuration_system">
    <title>System page</title>

    <section>
      <title>
        Send deleted files to Recycle Bin<indexterm>
          <primary>deleting files</primary>

          <secondary>options</secondary>
        </indexterm>
      </title>

      <itemizedlist>
        <listitem>
          <para>
            <option>Enabled</option> (default): Files and folders that you
            delete in a Folder Compare window are moved to the Recycle Bin, if it
            is available.
          </para>

          <important>
            <para>
              Remember: if the Recycle Bin on your system has been
              deactivated, this option does not work, and deleted files are
              lost!
            </para>
          </important>
          <para></para>
        </listitem>

        <listitem>
          <para>
            <option>Disabled</option>: Files and folders deleted in a
            directory compare actually deleted.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section id="Configuration_external_editor">
      <title>
        External editor<indexterm>
          <primary>external editor</primary>

          <secondary>configuring</secondary>
        </indexterm>
      </title>

      <para>
        The WinMerge File Compare window provides common editing functions.
        If you prefer using your favorite, full-featured editor, you can configure
        WinMerge to open an external editor from the Folder Compare context
        menu.
      </para>

      <para>
        Installation configures Notepad as the default external editor,
        because it is found on all Windows systems. To configure a different
        external editor, enter the full path to its executable file.
      </para>

      <tip>
        <para>
          Along with the path, you can include any command line parameters
          supported by the external tool, in this format:
          <command>
            <replaceable>path to executable</replaceable>
          </command>
          <option>-option1</option> <option>-option2</option>
          <option>
            <replaceable>...</replaceable>
          </option>
        </para>
      </tip>

      <para>
        To use the configured external editor, right-click a file in the
        Folder Compare window and choose <menuchoice>
          <guimenuitem>Open Left</guimenuitem>

          <guimenuitem>With External Editor</guimenuitem>
        </menuchoice> or <menuchoice>
          <guimenuitem>Open Right</guimenuitem>

          <guimenuitem>With External Editor</guimenuitem>
        </menuchoice>.
      </para>
    </section>

    <section>
      <title>
        Store user data in<indexterm>
          <primary>user data</primary>
          <secondary>storage location</secondary>
        </indexterm>
      </title>
    
      <para>
        Specifies where WinMerge stores user data such as filters, plugins,
        color schemes, and configuration logs.
      </para>
    
      <itemizedlist>
        <listitem>
          <para>
            <guilabel>AppData (Roaming) folder</guilabel> (default): Stores user data
            in the roaming application data folder of your user profile.
          </para>
        </listitem>
    
        <listitem>
          <para>
            <guilabel>Documents folder</guilabel>: Stores user data in the
            <filename>WinMerge</filename> subfolder of your Documents directory.
          </para>
        </listitem>
      </itemizedlist>
    
      <para>
        This setting affects newly created user data only.
      </para>
    </section>

    <section>
      <title>
        Filter folder<indexterm>
          <primary>Filters folders</primary>

          <secondary>specifying default private folder</secondary>
        </indexterm>
      </title>

      <para>
        Use this field to specify your own private folder for file filters.
        By default this folder is your user profile directory (for example,
        <filename>Documents</filename> on Windows 10). When you create a file
        filter, it is automatically added to this folder.
      </para>
    </section>

    <section>
      <title>
        Temporary files folder<indexterm>
          <primary>temporary files, folder used</primary>
        </indexterm>
      </title>

      <para>
        Specify the folder where WinMerge stores temporary files. Either one
        of these options is available:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>System's temp folder</guilabel> (default): For example, this might be
            <filename>C:\Windows\Temp</filename> on your system.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Custom folder</guilabel>: Click <guibutton>Browse</guibutton> and select a
            different folder where you have write access.
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_backup">
    <title>
      Backup Files page<indexterm>
        <primary>backup files, options</primary>
      </indexterm>
    </title>

    <para>
      This page allows you to control how WinMerge creates backup
      files.
    </para>

    <section>
      <title>Create backup files for</title>

      <para>
        Specify when WinMerge should create backup files. You can enable or
        disable each of these options independently:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>Folder compare</guilabel> (disabled by default):
            Backup files are create whenever files are overwritten
            (copied).
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>File compare</guilabel> (enabled by default): Backup
            files are created whenever files are saved.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Create backup files in</title>

      <para>
        Specify where backup files are created. Only one of these options
        can be enabled:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>Original file's folder</guilabel> (enabled by
            default): Backup files are created in the same folder as the source
            file. This is usually a good choice. The down side is that cleaning up
            backup files in big folders can take a lot of work.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Global backup folder</guilabel> (disabled by default):
            All backup files are created in one global folder. This makes them
            easy to clean up. But, if there are multiple source files with same
            file name, then the most recent backup file overwrites the previous
            one of the same name.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Backup filename</title>

      <para>
        When WinMerge creates a backup file, it appends an extension to the
        source file name. You can choose either or both of these extension
        schemes:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>Append .bak extension</guilabel> (enabled by
            default): For example, the <filename>file.txt</filename> is backed up
            to <filename>file.txt.bak</filename>.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Append timestamp</guilabel> (enabled by default):
            Timestamps are almost always unique, so this option usually avoids
            duplicating backup file names when the source files have the same
            names.
          </para>

          <para>
            Also, storing a copy of a file each time you save it provides a
            way to track changes to the file. However, you should consider that
            this option can create a lot of files.
          </para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section id="Configuration_codepage">
    <title>
      Codepage page<indexterm>
        <primary>codepage</primary>

        <secondary>options</secondary>
      </indexterm>
    </title>

    <para>
      WinMerge detects handles file encoding transparently, and in most
      cases you should not need to change the default settings.This page allows
      you to specify the codepages of certain file formats, should you need to.
    </para>

    <note>
      <para>
        A full explanation of text encoding and Windows codepages is beyond
        the scope of WinMerge documentation. Fortunately, there is lots of
        information about them on the Internet. For example, here are some
        places to start:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <ulink url="https://en.wikipedia.org/wiki/Code_pages">
              Wikipedia:
              Code pages
            </ulink>, <ulink
url="https://en.wikipedia.org/wiki/Character_encoding">
              Character
              encoding
            </ulink>
          </para>
        </listitem>

        <listitem>
          <para>
            <ulink
      url="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-ucoderef/28fefe92-d66c-4b03-90a9-97b473223d43">
              Microsoft: Code Pages Supported by Windows
            </ulink>
          </para>
        </listitem>
      </itemizedlist>
    </note>

    <section>
      <title>Default Codepage</title>

      <para>
        Choose one of these radio buttons to set the default codepage that
        WinMerge uses when handling ANSI files:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            <guilabel>System codepage</guilabel> (default):The codepage used
            by your Windows system. This default is usually the best choice.
            However if you know that you are comparing files that do not use the
            system codepage, consider one of the other options.
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>According to WinMerge User Interface</guilabel>: The
            encoding used by your installation of WinMerge.<!--This is just a guess - don't find any info on this option.-->
          </para>
        </listitem>

        <listitem>
          <para>
            <guilabel>Custom codepage</guilabel>: Enter the codepage number
            explicitly. For example, <userinput>UTF-8</userinput> or
            <userinput>ISO-8851-1</userinput>.
          </para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Detect codepage info for these files: .html, .rc, .xml</title>

      <important>
        <para>
          Uncheck this option in <filename>WinMerge.exe</filename>.
          Characters conversions can result in lossy conversions and the risk is
          very high. <filename>WinMerge.exe</filename> can display files only with
          your current codepage.<!--What option? The one in the Options page? If it should always be unchecked, 
why is the option there? Also, should we mention WinMergeU.exe when we mention WinMerge.exe,
or is this understood?-->
        </para>
      </important>

      <itemizedlist>
        <listitem>
          <para>
            <option>Disabled</option> (default): WinMerge does not read
            codepage information from the source files. It uses the default
            codepage setting instead.
          </para>
        </listitem>

        <listitem>
          <para>
            <option>Enabled</option>: WinMerge detects the codepage for
            these extensions: <filename class="extension">html</filename>,
            <filename class="extension">rc</filename> (resource files for VC++)
            and <filename class="extension">xml</filename>. The detected codepage
            overrides the setting for the default codepage option.
          </para>

          <para>
            This option is of interest when your documents use a codepage
            that is different from the codepage of your Windows
            configuration.
          </para>

          <para>
            For example, you might merge two Slovak or two Japanese files in
            an English environment. With this option enabled (and with the
            required fonts), your Slovak, or Japanese, the files are displayed
            using Slovak, or Japanese, characters.
          </para>

          <para>
            WinMerge also detects a codepage difference between the
            left/right files. To avoid lossy conversions when you merge, copy, or
            paste, we suggest that you ignore the codepage information.
          </para>

          <caution>
            <para>
              When you copy or paste text to an external application, the
              external application must use the same codepage as WinMerge does.
              Refer to the documentation for your external editor. For copying to
              WinMerge, Internet Explorer offers codepage selection. If your
              external editor does not support custom codepages, disable this
              option.
            </para>
          </caution>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Detect codepage for text files using mlang.dll</title>

      <para>TBD</para>

    </section>
  </section>

  <section id="Configuration_shell-integ">
    <title>Shell Integration page</title>

    <section id="Configuration_winexplorer-integ">
      <title>
        Explorer<indexterm>
          <primary>integration</primary>

          <secondary>with Windows shell</secondary>
        </indexterm>
      </title>

      <para>
        The <option>Add to context menu</option> option enables you to
        launch WinMerge directly from Windows Explorer, comparing items that you
        have selected there. It is enabled or disabled by default during WinMerge
        installation. If enabled, you can also enable one or both of these
        options:
      </para>

      <variablelist>
        <varlistentry>
          <term>Enable advanced menu</term>

          <listitem>
            <itemizedlist>
              <listitem>
                <para>
                  <option>Disabled</option> (default): Only the
                  <guimenuitem>WinMerge</guimenuitem> shortcut is included in the
                  Windows Explorer context menu.
                </para>
              </listitem>

              <listitem>
                <para>
                  <option>Enabled</option>: Replaces the
                  <guimenuitem>WinMerge</guimenuitem> shortcut in the Explorer
                  context menu with <guimenuitem>Compare</guimenuitem>
                  shortcuts.
                </para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>
        <varlistentry>
          <term>Enable Compare As menu</term>

          <listitem>
            <itemizedlist>
              <listitem>
                <para>
                  <option>Disabled</option> (default): Removes
                  <guimenuitem>Compare As</guimenuitem> menu item
                  from Explorer context menu.
                </para>
              </listitem>

              <listitem>
                <para>
                  <option>Enabled</option>: Adds
                  <guimenuitem>Compare As</guimenuitem> menu item
                  to Explorer context menu.
                </para>
              </listitem>
            </itemizedlist>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>
        <xref linkend="OpenPaths_shell-integ" /> describes how to use the
        WinMerge and Compare shortcuts.
      </para>
    </section>
  </section>
</article>
