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.
A single dll or a scriptlet (sct
) file
Installed in the MergePlugins
subfolder. A number of plugins can be installed for you by WinMerge.
Easy to install: To install a plugin that is not included in the
WinMerge installation, just copy the plugin file to MergePlugins
. The plugin is available the
next time you open WinMerge. You can find more plugins on the web, written
by other developers.
Plugins are grouped into three main categories:
This type of plugin performs custom operations on selected text in the active editor (File pane) of the File Compare window.
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.
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.
Sometimes the unpacked file can be repacked (see the details in Available plugins 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.
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.
Example plugin: CompareMSExcelFiles displays the text contents of a Microsoft® Excel file.
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.
Example plugin: IgnoreColumns ignores the differences inside specified columns, while displaying the characters in these columns.
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 Available plugins section, under File filter). 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 suggested plugin.
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.
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.
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.
With your cursor in either File pane of the File Compare window, click
→ and choose one of these functions:Make Uppercase
Make Lowercase
Remove Duplicate Lines
Count Duplicate Lines
Sort Lines Ascending
Sort Lines Descending
Reverse Columns
Reverse Lines
Select Columns...
Select Lines...
Replace...
Apply Filter Command...
Tokenize...
Trim Spaces
Insert Date
Insert Time
The functions are contributed to the editor addin and insert datetime plugins.
menu by theEditor complement plugins are not available in the Folder Compare window.
Before applying unpacker plugins, you can set its mode to either automatic or manual mode.
To set automatic mode for this type of plugin, click
→ .To set manual mode, click
→ .Remember to click F5 to reload the Folder Compare window using the new setting.
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.
For example, suppose you right-click an MS Word
doc
file and choose
(also assume that the CompareMSWordFiles 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.
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.
To apply plugins when manual unpacking is set:
Select the file you want to compare.
Click
→ .This menu item is enabled only if the selected file's type is supported by an available unpacking plugin.
In the Select Unpacker dialog:
Configure automatic plugin selection or choose a plugin manually:
To use automatic mode (which applies the first available plugin), verify that <Automatic> is displayed in the File unpacker control.
To choose a different plugin (if available), use the File unpacker control to choose the plugin.
By default, this control lists only suggested plugins for the file type you selected to compare. To see all available plugins, enable the option, Display all packers, don't check the extension.
To launch the compare without using any plugin, choose File unpacker control.
in theClick
to close the Select Unpacker dialog.Click
to close the Select Unpacker dialog and launch the file comparison.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 Selecting an unpacker for file comparisons for details.
With prediffer plugins, you set the mode (<Automatic> or <None>) 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.
To set the mode for one or more files in the Folder Compare window, right-click the files and choose
→ , then choose one of the submenu options:selects the first prediffer plugin available for the file type.
means that no prediffer plugin is used.
Click F5 to update the window.
When you open a subfolder during a non-recursive compare, the mode is always reset to
.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.
In the File Compare window, you can apply a prediffer plugin by clicking
→ 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.Displays the text contents of a Microsoft® Excel file, stripping away all formatting and embedded objects.
*.xls
, *.xlsx
, *.xlsm
, *.xlsb
, *.xla
, *.xlax
, *.xltx
, *.xltm
Displays the text content of a Microsoft® PowerPoint file, stripping away all formatting and embedded objects.
*.ppt
, *.pptx
, *.pptm
, *.ppa
, *.ppam
, *.pot
, *.potx
, *.potm
Displays the text content of a Microsoft® Visio file, stripping away all formatting and embedded objects.
*.vsd
, *.vsdx
, *.vsdm
, *.vss
, *.vssx
, *.vssm
, *.vst
, *.vstx
, *.vstm
Displays the text content of a Microsoft® Word file, stripping away all formatting and embedded objects.
*.doc
, *.docx
, *.docm
, *.dot
, *.dotx
, *.dotm
HTML Prettier with tidy-html5
PrettifyHTML
[arguments
...]
arguments
Command line options passed to the tidy command
*.html
,
*.htm
XML Prettier with tidy-html5
PrettifyXML
[arguments
...]
arguments
Command line options passed to the tidy command
*.xml
JSON Prettier with jq command
PrettifyJSON
[arguments
...]
arguments
Filter or command line options passed to the jq command
*.json
YAML Prettier with yq command
PrettifyYAML
[arguments
...]
arguments
Filter or command line options passed to the yq command
*.yaml
,
*.yml
CSV Querier with q command
QueryCSV
[arguments
...]
arguments
SQL statement or command line options passed to the q command
*.csv
TSV Querier with q command
QueryTSV
[arguments
...]
arguments
SQL statement or command line options passed to the q command
*.tsv
JSON Querier with jq command
QueryJSON
[arguments
...]
arguments
Filter or command line options passed to the jq command
*.json
YAML Querier with yq command
QueryYAML
[arguments
...]
arguments
Filter or command line options passed to the yq command
*.yaml
,
*.yml
HTML Validator with tidy-html5
ValidateHTML
[arguments
...]
arguments
Command line options passed to the tidy command
*.html
,
*.htm
Graphviz Previewer
PreviewGraphviz
[arguments
...]
arguments
Command line options passed to the dot command
*.gv
,
,*.dot
Markdown Previewer
PreviewMarkdown
[arguments
...]
arguments
Command line options passed to the md2html command
*.md
,
,*.markdown
PlantUML Previewer
PreviewPlantUML
[arguments
...]
arguments
Command line options passed to the plantuml.jar command
General content extractor with Apache Tika
ApacheTika
[arguments
...]
arguments
Command line options passed to the tika-app.jar
*.*
JVM bytecode disassembler with javap
DisassembleJVM
[arguments
...]
arguments
Command line options passed to the javap command
*.class
IL code disassembler with ildasm
DisassembleIL
[arguments
...]
arguments
Command line options passed to the ildasm command
*.obj
,
*.lib
,
*.exe
,
*.dll
Native code disassembler with dumpbin
DisassembleNative
[arguments
...]
arguments
Command line options passed to the dumpbin command
*.obj
,
*.lib
,
*.exe
,
*.dll
Applys filter command
ExecFilterCommand
[command
]
command
command to execute. %1 in the command is replaced with the filename
*.nomatch
Makes characters uppercase
*.nomatch
Makes characters lowercase
*.nomatch
Removes duplicate lines
*.nomatch
Counts duplicate lines
*.nomatch
Sorts lines ascending
*.nomatch
Sorts lines descending
*.nomatch
Reverses columns
*.nomatch
Reverses lines
*.nomatch
Selects some columns
SelectColumns
[ranges
]
SelectColumns
[-v
] [-i
] [-g
] [-e
patterns
]
ranges
list of column ranges to select. (e.g. -3,5-10,30-)
patterns
regular expression
-v
select non-matching columns
-i
ignore case
-g
enable global flag
-e
use patterns
for matching
*.nomatch
Selects some lines
SelectLines
[ranges
]
SelectLines
[-v
] [-i
] [-e
patterns
]
ranges
list of line ranges to select. (e.g. -3,5-10,30-)
patterns
regular expression
-v
select non-matching lines
-i
ignore case
-e
use patterns
for matching
*.nomatch
Replaces text with another text
Replace
[-i
] [-e
] [text_to_find
] [text_to_replace
]
text_to_find
text to find
text_to_replace
text to replace
-i
ignore case (only for -e)
-e
treat the specified text as a regular expression
*.nomatch
Tokenizes selection
Tokenize
[patterns
]
patterns
regular expression for tokenizing. (e.g. [^\w]+)
*.nomatch
Trim spaces
*.nomatch
This plugin ignores characters at specified columns. The first column is number 1.
Note that this plugin does not support files with tabs: the plugin does not fail, but all tabs are be treated as normal characters.
To specify columns, use plugin settings dialog or rename the dll
using
following fields as parameters:
Example 1. IgnoreColumns
examples
IgnoreColumns _ 3 _ 10 - 20 _ 32 -
33.dll
IgnoreColumns_1,30 to 40.dll
*.txt
The plugin ignores comments within //
... and
/*
... */
delimiters in C, C++,
PHP and JavaScript files.
*.cpp
, *.cxx
, *.h
, *.hxx
, *.c
, *.php
, *.js
, *.cs
, *.ts
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.
To specify the delimiters, use plugin settings dialog or rename the dll
using
the same parameter fields used for IgnoreColumns.
*.csv
This plugin is for files that use fields and tabs as delimiters
(for example, Excel files saved in the *.txt
format). It ignores the delimiter
characters. The first field is number 1.
To specify the delimiters, use plugin settings dialog or rename the dll
using
the same parameter fields used for IgnoreColumns.
*.txt
This plugin ignores the leading line numbers in text files (for example, NC and BASIC files).
*.nc
Adds some functions to the
→ menu:Some editor complement plugins require this optional component from Microsoft®.
It should already be included in your version of Windows, unless you use some really old pre Windows XP version.
Some plugins require the Visual Basic runtime library to work.
You can use the Run-Time Redistribution Pack from Microsoft®. If you don't need the plugin, you can safely remove it.