<?xml version="1.0" encoding="UTF-8"?>
<article id="Plugins">
  <title>Plugins<indexterm>
      <primary>plugins</primary>
    </indexterm></title>

  <para>WinMerge plugins are custom dlls or scriptlets, written in the COM API,
  that preprocess data before a comparison. For example, you can use a plugin to
  extract text data from MS Word files for WinMerge to compare.</para>
  
  <para>Each plugin is:<indexterm>
      <primary>installing plugins</primary>
    </indexterm></para>

  <itemizedlist>
    <listitem>
      <para>A single dll or a scriptlet (<filename
      class="extension">sct</filename>) file</para>
    </listitem>

    <listitem>
      <para>Installed in the <filename class="directory">MergePlugins</filename>
      subfolder. A number of plugins can be installed for you by WinMerge.</para>
    </listitem>

    <listitem>
      <para>Easy to install: To install a plugin that is not included in the
      WinMerge installation, just copy the plugin file to <filename
      class="directory">MergePlugins</filename>. The plugin is available the
      next time you open WinMerge. You can find more plugins on the web, written
	  by other developers.</para>
    </listitem>
  </itemizedlist>

  <section>
    <title>Plugin Types</title>

    <para>Plugins are grouped into three main categories:</para>

    <variablelist>
      <varlistentry>
        <term>Editor complement<indexterm>
            <primary>editor complement plugins</primary>
          </indexterm></term>

        <listitem>
          <para>This type of plugin performs custom operations on selected text
          in the active editor (File pane) of the File Compare window.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Unpacker: transform a file to a text format<indexterm>
            <primary>unpacker plugins</primary>
          </indexterm></term>

        <listitem>
          <para>This type of plugin transforms a compressed file to a viewable
          format by decompressing it. The original file is not changed: a
          temporary transformed file is created and loaded in WinMerge.</para>

          <para>Unpacker plugins operate on entire files, not to selected text
          or diffs within files. Therefore, they are available only when you
          launch file comparisons, from either the Folder Compare window or the
          Select Files or Folders dialog. Unpacker plugins are not available in
          the File Compare window.</para>

          <para>Sometimes the unpacked file can be repacked (see the details in
          <xref linkend="Plugins_available" /> to check whether a plugin
          supports repacking). Then, you can merge and save the transformed
          file. The packing is done automatically in this case. To be safe, we
          suggest that you rename the transformed file when you save it.</para>

          <note>
            <para>When you compare folders, WinMerge can give different results
            for compressed and uncompressed files. For example, files that are
            identical when uncompressed might be different if they include the
            creation date. WinMerge applies the unpacker in all situations, and
            you are sure to have the same result when you compare a folder, or
            when you merge two versions of a file.</para>
          </note>

          <para>Example plugin: <xref linkend="CompareMSExcelFiles" />
          displays the text contents of a 
          <trademark class="registered">Microsoft</trademark>
          <application>Excel</application> file.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Prediffer: preprocess files to hide some differences<indexterm>
            <primary>prediffer plugins</primary>
          </indexterm></term>

        <listitem>
          <para>This type of plugin does not operate on the source files
          displayed in the Compare window. It operates instead on temporary
          copies of the files, and the copies are then scanned to create the
          difference list.</para>

          <para>Example plugin: <xref linkend="IgnoreColumns" /> ignores the
          differences inside specified columns, while displaying the characters
          in these columns.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>

  <section>
    <title>Suggested plugins and automatic modes</title>

    <para>How is WinMerge able to apply the right plugin for a given file? Each
    plugin specifies a list of file extensions (also listed in each plugin's
    <xref linkend="Plugins_available" /> section, under <citetitle>File
    filter</citetitle>). The extensions are used to associate one or more file
    types with the plugin: when a compared file's extension matches an extension
    in the plugin's list, the plugin is considered to be a <firstterm>suggested
    plugin. </firstterm></para>

    <para>There are separate WinMerge options for the unpacking and prediffer
    types, described later in this topic, that enable you to apply the plugins
    either manually or automatically. There is no automatic mode for editor
    complement plugins.</para>

    <para>When you apply plugins to a selected file using automatic mode,
    WinMerge searches its list of suggested plugins for that file type, and
    applies the first plugin whose name matches. The search is performed in
    alphabetical order, so if there are multiple suggested plugins for a file
    type, only the first one found is applied.</para>
  </section>

  <section>
    <title>Applying plugins</title>

    <para>The following subsections describe how to apply each type of plugin.
    The methods are different for each type of plugin, and also vary depending
    on whether you are comparing folders or files.</para>

    <section>
      <title>Applying editor complement plugins in the File Compare
      window</title>

      <para>With your cursor in either File pane of the File Compare window,
      click <menuchoice>
          <guimenu>Plugins</guimenu>

          <guisubmenu>Scripts</guisubmenu>
        </menuchoice> and choose one of these functions:</para>

      <itemizedlist>
        <listitem>
          <para><function>Make Uppercase</function></para>
        </listitem>

        <listitem>
          <para><function>Make Lowercase</function></para>
        </listitem>

        <listitem>
          <para><function>Remove Duplicate Lines</function></para>
        </listitem>

        <listitem>
          <para><function>Count Duplicate Lines</function></para>
        </listitem>

        <listitem>
          <para><function>Sort Lines Ascending</function></para>
        </listitem>

        <listitem>
          <para><function>Sort Lines Descending</function></para>
        </listitem>

        <listitem>
          <para><function>Reverse Columns</function></para>
        </listitem>

        <listitem>
          <para><function>Reverse Lines</function></para>
        </listitem>

        <listitem>
          <para><function>Select Columns...</function></para>
        </listitem>

        <listitem>
          <para><function>Select Lines...</function></para>
        </listitem>

        <listitem>
          <para><function>Replace...</function></para>
        </listitem>

        <listitem>
          <para><function>Apply Filter Command...</function></para>
        </listitem>

        <listitem>
          <para><function>Tokenize...</function></para>
        </listitem>

        <listitem>
          <para><function>Trim Spaces</function></para>
        </listitem>

        <listitem>
          <para><function>Insert Date</function></para>
        </listitem>

        <listitem>
          <para><function>Insert Time</function></para>
        </listitem>
      </itemizedlist>

      <para>The functions are contributed to the
      <guisubmenu>Scripts</guisubmenu> menu by the <xref
      linkend="EditorAddin" /> and <xref linkend="Plugins_datetime" />
      plugins.</para>

      <note>
        <para>Editor complement plugins are not available in the Folder Compare
        window.</para>
      </note>
    </section>

    <section>
      <title>Applying unpacker plugins in the Folder Compare window</title>

      <para>Before applying unpacker plugins, you can set its mode to either
      automatic or manual mode.</para>

      <itemizedlist>
        <listitem>
          <para>To set automatic mode for this type of plugin, click <menuchoice>
              <guimenu>Plugins</guimenu>

              <guimenuitem>Automatic Unpacking</guimenuitem>
            </menuchoice>.</para>
        </listitem>

        <listitem>
          <para>To set manual mode, click <menuchoice>
              <guimenu>Plugins</guimenu>

              <guimenuitem>Manual Unpacking</guimenuitem>
            </menuchoice>.</para>
        </listitem>
      </itemizedlist>

      <para>Remember to click <keycap>F5</keycap> to reload the Folder Compare
      window using the new setting.</para>

      <section>
        <title>Using automatic mode</title>

        <para>To apply plugins when automatic unpacking is set, simply launch a
        compare operation on a file in the Folder Compare window. If the file's
        type suggested unpacker plugin (if any) preprocesses the file before
        WinMerge opens it in the File Compare window.</para>

        <para>For example, suppose you right-click an MS Word
        <filename>doc</filename> file and choose
        <guimenuitem>Compare</guimenuitem> (also assume that the <xref
        linkend="Plugins_msword" /> plugin is available). WinMerge converts the
        doc file (or rather, a copy of it ) to a plain text file and opens it in
        the File Compare window.</para>
      </section>

      <section>
        <title>Using manual mode</title>

        <para>Manual mode enables you to choose a different unpacker plugin than
        the one that is selected for you in automatic mode. You can also launch
        the compare using no plugin.</para>

        <para>To apply plugins when manual unpacking is set:</para>

        <orderedlist>
          <listitem>
            <para>Select the file you want to compare.</para>
          </listitem>

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

                <guimenuitem>Edit with Unpacker</guimenuitem>
              </menuchoice>.</para>

            <para>This menu item is enabled only if the selected file's type is
            supported by an available unpacking plugin.</para>
          </listitem>

          <listitem>
            <para>In the Select Unpacker dialog:</para>

            <xi:include href="select_unpacker.xml"
                        xmlns:xi="http://www.w3.org/2001/XInclude"
                        xpointer="element(select-unpacker-proc)" />
          </listitem>

          <listitem>
            <para>Click <guibutton>OK</guibutton> to close the Select Unpacker
            dialog and launch the file comparison.</para>
          </listitem>
        </orderedlist>
      </section>
    </section>

    <section>
      <title>Applying unpacker plugins in the Select Files or Folders
      dialog</title>

      <para>You can use the Select Unpacker dialog to apply a plugin when you
      launch a file comparison from the Select Files or Folders dialog. See
      <xref linkend="Open_paths_unpacker" /> for details.</para>
    </section>

    <section>
      <title>Applying prediffer plugins in the Folder Compare window</title>

      <para>With prediffer plugins, you set the mode (<firstterm>&lt;Automatic&gt;
      </firstterm> or <firstterm>&lt;None&gt;</firstterm>) or the plugin name for
      individual files. (Contrast this with unpacker plugins, where you set the
      mode for all files.) That is, some files in the same folder have different
      prediffer modes.</para>

      <para>To set the mode for one or more files in the Folder Compare window,
      right-click the files and choose <menuchoice>
          <guimenu>Plugin Settings</guimenu>

          <guisubmenu>Prediffer Settings</guisubmenu>
        </menuchoice>, then choose one of the submenu options:</para>

      <itemizedlist>
        <listitem>
          <para><guisubmenu>&lt;Automatic&gt;</guisubmenu> selects the first
          prediffer plugin available for the file type.</para>
        </listitem>

        <listitem>
          <para><guisubmenu>&lt;None&gt;</guisubmenu> means that no prediffer
          plugin is used.</para>
        </listitem>
      </itemizedlist>

      <para>Click <keycap>F5</keycap> to update the window.</para>

      <note>
        <para>When you open a subfolder during a non-recursive compare, the mode
        is always reset to <guimenuitem>&lt;None&gt;</guimenuitem>.</para>
      </note>

      <para>When you open a file from the Folder Compare window, your prediffer
      setting for that file is applied before the File Compare window is
      opened.</para>
    </section>

    <section>
      <title>Applying prediffer plugins in the File Compare window</title>

      <para>In the File Compare window, you can apply a prediffer plugin by
      clicking <menuchoice>
          <guimenu>Plugins</guimenu>

          <guisubmenu>Prediffer</guisubmenu>
        </menuchoice> and choosing one of the plugins in the list. Suggested
      plugins are indicated at the top of the list. The files are compared again
      after the plugin is applied, so you don't need to rescan the files.</para>
    </section>
  </section>

  <section id="Plugins_available">
    <title>Available plugins<indexterm>
        <primary>Visual Basic dlls for plugins</primary>
      </indexterm><indexterm>
        <primary>plugins</primary>

        <secondary>Visual Basic dlls</secondary>
      </indexterm></title>

    <section id="CompareMSExcelFiles">
      <title><filename>CompareMSExcelFiles<indexterm>
          <primary>CompareMSExcelFiles plugin file</primary>
        </indexterm></filename></title>

      <para>Displays the text contents of a <trademark
      class="registered">Microsoft</trademark> <application>Excel</application>
      file, stripping away all formatting and embedded objects.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.xls</filename>, <filename
            class="extension">*.xlsx</filename>, <filename
            class="extension">*.xlsm</filename>, <filename
            class="extension">*.xlsb</filename>, <filename
            class="extension">*.xla</filename>, <filename
            class="extension">*.xlax</filename>, <filename
            class="extension">*.xltx</filename>, <filename
            class="extension">*.xltm</filename></seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Yes</seg>

            <seg><trademark class="registered">Microsoft</trademark>
            <application>Excel</application></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_powerpnt">
      <title><filename>CompareMSPowerPointFiles<indexterm>
          <primary>CompareMSPowerPointFiles plugin file</primary>
        </indexterm></filename></title>

      <para>Displays the text content of a <trademark
      class="registered">Microsoft</trademark> <application>PowerPoint</application>
      file, stripping away all formatting and embedded objects.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.ppt</filename>, <filename
            class="extension">*.pptx</filename>, <filename
            class="extension">*.pptm</filename>, <filename
            class="extension">*.ppa</filename>, <filename
            class="extension">*.ppam</filename>, <filename
            class="extension">*.pot</filename>, <filename
            class="extension">*.potx</filename>, <filename
            class="extension">*.potm</filename></seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Yes</seg>

            <seg><trademark class="registered">Microsoft</trademark>
            <application>PowerPoint</application></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_visio">
      <title><filename>CompareMSVisioFiles<indexterm>
          <primary>CompareMSVisioFiles plugin file</primary>
        </indexterm></filename></title>

      <para>Displays the text content of a <trademark
      class="registered">Microsoft</trademark> <application>Visio</application>
      file, stripping away all formatting and embedded objects.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.vsd</filename>, <filename
            class="extension">*.vsdx</filename>, <filename
            class="extension">*.vsdm</filename>, <filename
            class="extension">*.vss</filename>, <filename
            class="extension">*.vssx</filename>, <filename
            class="extension">*.vssm</filename>, <filename
            class="extension">*.vst</filename>, <filename
            class="extension">*.vstx</filename>, <filename
            class="extension">*.vstm</filename></seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Yes</seg>

            <seg><trademark class="registered">Microsoft</trademark>
            <application>Visio</application></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_msword">
      <title><filename>CompareMSWordFiles<indexterm>
          <primary>CompareMSWordFiles plugin file</primary>
        </indexterm></filename></title>

      <para>Displays the text content of a <trademark
      class="registered">Microsoft</trademark> <application>Word</application>
      file, stripping away all formatting and embedded objects.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

	    <seg><filename class="extension">*.doc</filename>, <filename
            class="extension">*.docx</filename>, <filename
            class="extension">*.docm</filename>, <filename
            class="extension">*.dot</filename>, <filename
            class="extension">*.dotx</filename>, <filename
            class="extension">*.dotm</filename></seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Yes</seg>

            <seg><trademark class="registered">Microsoft</trademark>
            <application>Word</application></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_PrettifyHTML">
      <title><filename>PrettifyHTML<indexterm>
          <primary>PrettifyHTML plugin file</primary>
        </indexterm></filename></title>

      <para>HTML Prettier with tidy-html5</para>

      <cmdsynopsis sepchar=" ">
        <command>PrettifyHTML</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the tidy command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.html</filename>,
            <filename class="extension">*.htm</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://www.html-tidy.org/">tidy-html5</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_PrettifyXML">
      <title><filename>PrettifyXML<indexterm>
          <primary>PrettifyXML plugin file</primary>
        </indexterm></filename></title>

      <para>XML Prettier with tidy-html5</para>

      <cmdsynopsis sepchar=" ">
        <command>PrettifyXML</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the tidy command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.xml</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://www.html-tidy.org/">tidy-html5</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_PrettifyJSON">
      <title><filename>PrettifyJSON<indexterm>
          <primary>PrettifyJSON plugin file</primary>
        </indexterm></filename></title>

      <para>JSON Prettier with jq command</para>

      <cmdsynopsis sepchar=" ">
        <command>PrettifyJSON</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Filter or command line options passed to the jq command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.json</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://stedolan.github.io/jq/">jq</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_PrettifyYAML">
      <title><filename>PrettifyYAML<indexterm>
          <primary>PrettifyYAML plugin file</primary>
        </indexterm></filename></title>

      <para>YAML Prettier with yq command</para>

      <cmdsynopsis sepchar=" ">
        <command>PrettifyYAML</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Filter or command line options passed to the yq command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.yaml</filename>,
              <filename class="extension">*.yml</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://stedolan.github.io/yq/">yq</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_QueryCSV">
      <title><filename>QueryCSV<indexterm>
          <primary>QueryCSV plugin file</primary>
        </indexterm></filename></title>

      <para>CSV Querier with q command</para>

      <cmdsynopsis sepchar=" ">
        <command>QueryCSV</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>SQL statement or command line options passed to the q command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.csv</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://harelba.github.io/q/">q</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_QueryTSV">
      <title><filename>QueryTSV<indexterm>
          <primary>QueryTSV plugin file</primary>
        </indexterm></filename></title>

      <para>TSV Querier with q command</para>

      <cmdsynopsis sepchar=" ">
        <command>QueryTSV</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>SQL statement or command line options passed to the q command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.tsv</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://harelba.github.io/q/">q</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_QueryJSON">
      <title><filename>QueryJSON<indexterm>
          <primary>QueryJSON plugin file</primary>
        </indexterm></filename></title>

      <para>JSON Querier with jq command</para>

      <cmdsynopsis sepchar=" ">
        <command>QueryJSON</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Filter or command line options passed to the jq command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.json</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://stedolan.github.io/jq/">jq</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_QueryYAML">
      <title><filename>QueryYAML<indexterm>
          <primary>QueryYAML plugin file</primary>
        </indexterm></filename></title>

      <para>YAML Querier with yq command</para>

      <cmdsynopsis sepchar=" ">
        <command>QueryJSON</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Filter or command line options passed to the yq command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.yaml</filename>,
              <filename class="extension">*.yml</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://mikefarah.gitbook.io/yq/">yq</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_ValidateHTML">
      <title><filename>ValidateHTML<indexterm>
          <primary>ValidateHTML plugin file</primary>
        </indexterm></filename></title>

      <para>HTML Validator with tidy-html5</para>

      <cmdsynopsis sepchar=" ">
        <command>ValidateHTML</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the tidy command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.html</filename>,
            <filename class="extension">*.htm</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://www.html-tidy.org/">tidy-html5</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_VisualizeGraphviz">
      <title><filename>VisualizeGraphviz<indexterm>
          <primary>VisualizeGraphviz plugin file</primary>
        </indexterm></filename></title>

      <para>Graphviz Visualizer</para>

      <cmdsynopsis sepchar=" ">
        <command>VisualizeGraphviz</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the dot command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.gv</filename>,
              <filename class="extension">,*.dot</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://graphviz.org/">Graphviz</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_ApacheTika">
      <title><filename>ApacheTika<indexterm>
          <primary>ApacheTika plugin file</primary>
        </indexterm></filename></title>

      <para>General content extractor with Apache Tika</para>

      <cmdsynopsis sepchar=" ">
        <command>ApacheTika</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the tika-app.jar</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.*</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://www.java.com/ja/download/ie_manual.jsp">Java</ulink>, <ulink url="https://tika.apache.org/">Apache Tika</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_DisassembleJVM">
      <title><filename>DisassembleJVM<indexterm>
          <primary>DisassembleJVM plugin file</primary>
        </indexterm></filename></title>

      <para>JVM bytecode disassembler with javap</para>

      <cmdsynopsis sepchar=" ">
        <command>DisassembleJVM</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the javap command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.class</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://www.java.com/ja/download/ie_manual.jsp">Java</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_DisassembleIL">
      <title><filename>DisassembleIL<indexterm>
          <primary>DisassembleIL plugin file</primary>
        </indexterm></filename></title>

      <para>IL code disassembler with ildasm</para>

      <cmdsynopsis sepchar=" ">
        <command>DisassembleIL</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the ildasm command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.obj</filename>,
            <filename class="extension">*.lib</filename>,
            <filename class="extension">*.exe</filename>,
            <filename class="extension">*.dll</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://visualstudio.microsoft.com/">Visual Studio</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_DisassembleNative">
      <title><filename>DisassembleNative<indexterm>
          <primary>DisassembleNative plugin file</primary>
        </indexterm></filename></title>

      <para>Native code disassembler with dumpbin</para>

      <cmdsynopsis sepchar=" ">
        <command>DisassembleNative</command>

        <arg choice="opt"
         rep="repeat"><replaceable>arguments</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>arguments</replaceable></option></term>
          <listitem>
            <para>Command line options passed to the dumpbin command</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.obj</filename>,
            <filename class="extension">*.lib</filename>,
            <filename class="extension">*.exe</filename>,
            <filename class="extension">*.dll</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><ulink url="https://visualstudio.microsoft.com/">Visual Studio</ulink></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_ExecFilterCommand">
      <title><filename>ExecFilterCommand<indexterm>
          <primary>ExecFilterCommand plugin file</primary>
        </indexterm></filename></title>

      <para>Applys filter command</para>

      <cmdsynopsis sepchar=" ">
        <command>ExecFilterCommand</command>

        <arg choice="opt"
         rep="norepeat"><replaceable>command</replaceable></arg>
      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>command</replaceable></option></term>
          <listitem>
            <para>command to execute. %1 in the command is replaced with the filename</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_MakeUpper">
      <title><filename>MakeUpper<indexterm>
          <primary>MakeUpper plugin file</primary>
        </indexterm></filename></title>

      <para>Makes characters uppercase</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_MakeLower">
      <title><filename>MakeLower<indexterm>
          <primary>MakeLower plugin file</primary>
        </indexterm></filename></title>

      <para>Makes characters lowercase</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_RemoveDuplicates">
      <title><filename>RemoveDuplicates<indexterm>
          <primary>RemoveDuplicates plugin file</primary>
        </indexterm></filename></title>

      <para>Removes duplicate lines</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_CountDuplicates">
      <title><filename>CountDuplicates<indexterm>
          <primary>CountDuplicates plugin file</primary>
        </indexterm></filename></title>

      <para>Counts duplicate lines</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_SortAscending">
      <title><filename>SortAscending<indexterm>
          <primary>SortAscending plugin file</primary>
        </indexterm></filename></title>

      <para>Sorts lines ascending</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_SortDescending">
      <title><filename>SortDescending<indexterm>
          <primary>SortDescending plugin file</primary>
        </indexterm></filename></title>

      <para>Sorts lines descending</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_ReverseColumns">
      <title><filename>ReverseColumns<indexterm>
          <primary>ReverseColumns plugin file</primary>
        </indexterm></filename></title>

      <para>Reverses columns</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_ReverseLines">
      <title><filename>ReverseLines<indexterm>
          <primary>ReverseLines plugin file</primary>
        </indexterm></filename></title>

      <para>Reverses lines</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_SelectColumns">
      <title><filename>SelectColumns<indexterm>
          <primary>SelectColumns plugin file</primary>
        </indexterm></filename></title>

      <para>Selects some columns</para>

      <cmdsynopsis sepchar=" ">
        <command>SelectColumns</command>

        <arg choice="opt"
         rep="norepeat"><replaceable>ranges</replaceable></arg>
      </cmdsynopsis>

      <cmdsynopsis sepchar=" ">
        <command>SelectColumns</command>

        <arg><option>-v</option></arg>

        <arg><option>-i</option></arg>

        <arg><option>-g</option></arg>

        <arg><option>-e</option> <replaceable>patterns</replaceable></arg>

      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>ranges</replaceable></option></term>
          <listitem>
            <para>list of column ranges to select. (e.g. -3,5-10,30-)</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option><replaceable>patterns</replaceable></option></term>
          <listitem>
            <para>regular expression</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-v</option></term>
          <listitem>
            <para>select non-matching columns</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-i</option></term>
          <listitem>
            <para>ignore case</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-g</option></term>
          <listitem>
            <para>enable global flag</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-e</option></term>
          <listitem>
            <para>use <replaceable>patterns</replaceable> for matching</para>
          </listitem>
        </varlistentry>

      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_SelectLines">
      <title><filename>SelectLines<indexterm>
          <primary>SelectLines plugin file</primary>
        </indexterm></filename></title>

      <para>Selects some lines</para>

      <cmdsynopsis sepchar=" ">
        <command>SelectLines</command>

        <arg choice="opt"
         rep="norepeat"><replaceable>ranges</replaceable></arg>
      </cmdsynopsis>

      <cmdsynopsis sepchar=" ">
        <command>SelectLines</command>

        <arg><option>-v</option></arg>

        <arg><option>-i</option></arg>

        <arg><option>-e</option> <replaceable>patterns</replaceable></arg>

      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>ranges</replaceable></option></term>
          <listitem>
            <para>list of line ranges to select. (e.g. -3,5-10,30-)</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option><replaceable>patterns</replaceable></option></term>
          <listitem>
            <para>regular expression</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-v</option></term>
          <listitem>
            <para>select non-matching columns</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-i</option></term>
          <listitem>
            <para>ignore case</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-e</option></term>
          <listitem>
            <para>use <replaceable>patterns</replaceable> for matching</para>
          </listitem>
        </varlistentry>

      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_Replace">
      <title><filename>Replace<indexterm>
          <primary>Replace plugin file</primary>
        </indexterm></filename></title>

      <para>Replaces text with another text</para>

      <cmdsynopsis sepchar=" ">
        <command>Replace</command>

        <arg><option>-i</option></arg>

        <arg><option>-e</option></arg>

        <arg rep="norepeat"><replaceable>text_to_find</replaceable></arg>

        <arg rep="norepeat"><replaceable>text_to_replace</replaceable></arg>

      </cmdsynopsis>


      <variablelist>
        <varlistentry>
          <term><option><replaceable>text_to_find</replaceable></option></term>
          <listitem>
            <para>text to find</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option><replaceable>text_to_replace</replaceable></option></term>
          <listitem>
            <para>text to replace</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-i</option></term>
          <listitem>
            <para>ignore case (only for -e)</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-e</option></term>
          <listitem>
            <para>treat the specified text as a regular expression</para>
          </listitem>
        </varlistentry>

      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_Tokenize">
      <title><filename>Tokenize<indexterm>
          <primary>Tokenize plugin file</primary>
        </indexterm></filename></title>

      <para>Tokenizes selection</para>

      <cmdsynopsis sepchar=" ">
        <command>Tokenize</command>

        <arg rep="norepeat"><replaceable>patterns</replaceable></arg>

      </cmdsynopsis>

      <variablelist>
        <varlistentry>
          <term><option><replaceable>patterns</replaceable></option></term>
          <listitem>
            <para>regular expression for tokenizing. (e.g. [^\w]+)</para>
          </listitem>
        </varlistentry>

      </variablelist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>Yes</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_Unpacker_Trim">
      <title><filename>Trim<indexterm>
          <primary>Trim plugin file</primary>
        </indexterm></filename></title>

      <para>Trim spaces</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Packing</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Dependency</segtitle>

          <seglistitem>
            <seg>Unpacker</seg>

            <seg><filename class="extension">*.nomatch</filename>
            </seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg>Windows Script Host</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="IgnoreColumns">
      <title><filename>IgnoreColumns<indexterm>
          <primary>IgnoreColumns plugin file</primary>
        </indexterm></filename></title>

      <para>This plugin ignores characters at specified columns. The first
      column is number 1.</para>

      <para>Note that this plugin does not support files with tabs: the plugin
      does not fail, but all tabs are be treated as normal characters.</para>

      <para>To specify columns, use plugin settings dialog or rename the <filename>dll</filename> using
      following fields as parameters:</para>

      <itemizedlist>
        <listitem>
          <simpara>Delimiters between ranges: _ or ,</simpara>
        </listitem>

        <listitem>
          <simpara>Delimiters between min and max: <emphasis>anything
          else</emphasis></simpara>
        </listitem>

        <listitem>
          <simpara>Min and max are included.</simpara>
        </listitem>

        <listitem>
          <simpara>When max = min, max can be omitted.</simpara>
        </listitem>
      </itemizedlist>

      <example>
        <title><filename>IgnoreColumns</filename> examples</title>

        <variablelist>
          <varlistentry>
            <term><filename>IgnoreColumns _ 3 _ 10 - 20 _ 32 -
            33.dll</filename></term>

            <listitem>
              <simpara>Ignore all characters at column 3, and in columns 10 to
              20, and 32 to 33.</simpara>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term><filename>IgnoreColumns_1,30 to 40.dll</filename></term>

            <listitem>
              <simpara>Ignore all the characters in column 1, and in columns 30
              to 40.</simpara>
            </listitem>
          </varlistentry>
        </variablelist>
      </example>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Prediffer</seg>

            <seg><filename class="extension">*.txt</filename></seg>

            <seg>Yes</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section>
      <title><filename>IgnoreCommentsC<indexterm>
          <primary>IgnoreCommentsC plugin file</primary>
        </indexterm></filename></title>

      <para>The plugin ignores comments within<constant> //</constant>... and
      <constant>/*</constant> ... <constant>*/</constant> delimiters in C, C++,
      PHP and JavaScript files.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Prediffer</seg>

            <seg><filename class="extension">*.cpp</filename>, <filename
            class="extension">*.cxx</filename>, <filename
            class="extension">*.h</filename>, <filename
            class="extension">*.hxx</filename>, <filename
            class="extension">*.c</filename>, <filename
            class="extension">*.php</filename>, <filename
            class="extension">*.js</filename>, <filename
            class="extension">*.cs</filename>, <filename
            class="extension">*.ts</filename></seg>

            <seg>No</seg>

            <seg>No</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section>
      <title><filename>IgnoreFieldsComma<indexterm>
          <primary>IgnoreFieldsComma plugin file</primary>
        </indexterm></filename></title>

      <para>This plugin is for files with fields and commas as delimiters (CSV
      files, for example). It ignores the delimiter characters. The first field
      is number 1.</para>

      <para>To specify the delimiters, use plugin settings dialog or rename the <filename>dll</filename> using
      the same parameter fields used for <xref
      linkend="IgnoreColumns" />.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Prediffer</seg>

            <seg><filename class="extension">*.csv</filename></seg>

            <seg>Yes</seg>

            <seg>Yes</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section>
      <title><filename>IgnoreFieldsTab<indexterm>
          <primary>IgnoreFieldsTab plugin file</primary>
        </indexterm></filename></title>

      <para>This plugin is for files that use fields and tabs as delimiters
      (<application>for example, Excel</application> files saved in the <filename
      class="extension">*.txt</filename> format). It ignores the delimiter
      characters. The first field is number 1.</para>

      <para>To specify the delimiters, use plugin settings dialog or rename the <filename>dll</filename> using
      the same parameter fields used for <xref
      linkend="IgnoreColumns" />.</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Prediffer</seg>

            <seg><filename class="extension">*.txt</filename></seg>

            <seg>Yes</seg>

            <seg>Yes</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section>
      <title><filename>IgnoreLeadingLineNumbers<indexterm>
          <primary>IgnoreLeadingLineNumbers plugin file</primary>
        </indexterm></filename></title>

      <para>This plugin ignores the leading line numbers in text files (for
      example, NC and BASIC files).</para>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Plugin arguments</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <segtitle>Requirement</segtitle>

          <seglistitem>
            <seg>Prediffer</seg>

            <seg><filename class="extension">*.nc</filename></seg>

            <seg>No</seg>

            <seg>No</seg>

            <seg><xref linkend="MSVBVM60" /></seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="EditorAddin">
      <title><filename>editor addin<indexterm>
          <primary>editor addin plugin file</primary>
        </indexterm></filename></title>

      <para>Adds some functions to the <menuchoice>
          <guimenu>Plugins</guimenu>

          <guisubmenu>Scripts</guisubmenu>
        </menuchoice> menu:</para>

      <itemizedlist>
        <listitem>
          <simpara><guimenuitem>Make Uppercase</guimenuitem> convert the selection to
          UPPER CASE.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Make Lowercase</guimenuitem> convert the selection to
          lower case.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Remove Duplicate Lines</guimenuitem> remove duplicate lines in the selection. 
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Count Duplicate Lines</guimenuitem> remove duplicate lines in the selection and insert the number of duplicate lines on the right. 
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Sort Lines Ascending</guimenuitem> sort the selection 
          in ascending order.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Sort Lines Descending</guimenuitem> sort the selection 
          in descending order.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Reverse Columns</guimenuitem> reverse columns in the selection.
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Reverse Lines</guimenuitem> reverse lines in the selection. 
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Select Columns...</guimenuitem> select some columns in the selection.
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Select Lines...</guimenuitem> select some lines in the selection.
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Replace...</guimenuitem> replace text in the selection with another text.
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Apply Filter Command...</guimenuitem> replace the selection 
          with the output of the specified filter command.
          Specifying %1 in the argument of the filter command replaces it with the filename of the active pane.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Tokenize...</guimenuitem> replaces the token delimiter with a newline in the selection.
          </simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Trim Spaces</guimenuitem> remove spaces at the beginning and end of lines in the selection.
          </simpara>
        </listitem>
      </itemizedlist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>
          <segtitle>File filter</segtitle>
          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Editor complement</seg>
            <seg>*</seg>
            <seg>No</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>

    <section id="Plugins_datetime">
      <title><filename>insert datetime<indexterm>
          <primary>insert datetime plugin file</primary>
        </indexterm></filename></title>

      <para>Adds two functions to the <menuchoice>
          <guimenu>Plugins</guimenu>

          <guisubmenu>Scripts</guisubmenu>
        </menuchoice> menu:</para>

      <itemizedlist>
        <listitem>
          <simpara><guimenuitem>Insert Date</guimenuitem> insert date in the
          current locale format.</simpara>
        </listitem>

        <listitem>
          <simpara><guimenuitem>Insert Time</guimenuitem> insert time in the
          current locale format.</simpara>
        </listitem>
      </itemizedlist>

      <para><segmentedlist>
          <segtitle>Category</segtitle>

          <segtitle>File filter</segtitle>

          <segtitle>Settings dialog support</segtitle>

          <seglistitem>
            <seg>Editor complement</seg>

            <seg>*</seg>

            <seg>No</seg>
          </seglistitem>
        </segmentedlist></para>
    </section>
  </section>

  <section>
    <title>Requirements<indexterm>
        <primary>plugins</primary>

        <secondary>Windows Script Host requirement</secondary>
      </indexterm></title>

    <section>
      <title>Windows Script Host</title>

      <para>Some editor complement plugins require this optional component from
      <trademark class="registered">Microsoft</trademark>.</para>

      <para>It should already be included in your version of Windows, 
	  unless you use some really old pre Windows XP version.</para>
    </section>

    <section id="MSVBVM60">
      <title><application>Visual Basic</application> runtime library<indexterm>
          <primary>Visual Basic dlls for plugins</primary>
        </indexterm><indexterm>
          <primary>plugins</primary>

          <secondary>Visual Basic dlls</secondary>
        </indexterm><indexterm>
          <primary>msvbvm60.dll plugin file</primary>
        </indexterm><indexterm>
          <primary>Run-Time Redistribution Pack, for Visual Basic
          library</primary>
        </indexterm></title>

      <para>Some plugins require <application>the Visual Basic</application>
      runtime library to work.</para>

      <para>You can use the <ulink
      url="https://www.microsoft.com/en-us/download/details.aspx?id=24417">Run-Time
      Redistribution Pack</ulink> from <trademark
      class="registered">Microsoft</trademark>. If you don't need the plugin,
      you can safely remove it.</para>
    </section>
  </section>
</article>
