Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.snk binary
*.bin binary
*.png binary
*.docx binary

src/Verify/EmptyFiles/* binary

Expand Down
62 changes: 62 additions & 0 deletions docs/diff-tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ Non-MDI tools are preferred since it allows [DiffEngineTray](tray.md) to track a
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_BeyondCompare`
* Supported binaries: .7z, .bcpkg, .bin, .bmp, .bz, .bz2, .cab, .chm, .deb, .ear, .gif, .gz, .ico, .img, .iso, .iso, .jar, .jpeg, .jpg, .kmz, .nupkg, .pdf, .png, .rar, .rpm, .rtf, .svg, .swm, .tar, .tbz, .tbz2, .tbz2, .tgz, .tif, .tiff, .war, .webp, .wim, .xlsx, .xz, .zip, .zipx

Expand Down Expand Up @@ -216,6 +217,7 @@ DiffTools.UseOrder(DiffTool.BeyondCompare);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_DeltaWalker`
* Supported binaries: .bmp, .bz2, .doc, .docx, .ear, .gif, .gz, .htm, .html, .ico, .j2k, .jar, .jp2, .jpg, .pbm, .pct, .pdf, .pgm, .pic, .pict, .png, .pnm, .ppm, .ppt, .psd, .rtf, .svg, .tar, .tbz2, .tgz, .tif, .xls, .xlsx, .zip

Expand Down Expand Up @@ -268,6 +270,7 @@ DiffTools.UseOrder(DiffTool.DeltaWalker);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Diffinity`
* Supported binaries: .svg

Expand Down Expand Up @@ -302,6 +305,7 @@ DiffTools.UseOrder(DiffTool.Diffinity);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_ExamDiff`
* Supported binaries: .bin, .svg

Expand Down Expand Up @@ -342,6 +346,7 @@ DiffTools.UseOrder(DiffTool.ExamDiff);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Guiffy`
* Supported binaries: .bmp, .gif, .jpeg, .jpg, .png, .svg, .wbmp

Expand Down Expand Up @@ -397,6 +402,7 @@ DiffTools.UseOrder(DiffTool.Guiffy);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Kaleidoscope`
* Supported binaries: .bin, .bmp, .gif, .ico, .jpeg, .jpg, .png, .svg, .tif, .tiff

Expand Down Expand Up @@ -428,6 +434,7 @@ DiffTools.UseOrder(DiffTool.Kaleidoscope);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_KDiff3`
* Supported binaries: .svg

Expand Down Expand Up @@ -476,13 +483,53 @@ DiffTools.UseOrder(DiffTool.KDiff3);
* `/Applications/kdiff3.app/Contents/MacOS/kdiff3`
* `%PATH%kdiff3`

### [MsWordDiff](https://github.com/SimonCropp/MsWordDiff)

* Cost: Free
* Is MDI: False
* Supports auto-refresh: False
* Supports text files: False
* Use shell execute: False
* Create no window: True
* Environment variable for custom install location: `DiffEngine_MsWordDiff`
* Supported binaries: .doc, .docx

#### Tool order:

Use [tool order](diff-tool.order.md) to prioritise MsWordDiff over other tools.

```
DiffTools.UseOrder(DiffTool.MsWordDiff);
```

#### Notes:

* Install via `dotnet tool install -g MsWordDiff`
* Requires Microsoft Word to be installed
* Uses Word's built-in document comparison feature

#### Windows settings:

* Example target on left arguments:
```
"targetFile.txt" "tempFile.txt"
```
* Example target on right arguments:
```
"tempFile.txt" "targetFile.txt"
```
* Scanned paths:
* `%USERPROFILE%\.dotnet\tools\diffword.exe`
* `%PATH%diffword.exe`

### [Neovim](https://neovim.io/)

* Cost: Free with option to sponsor
* Is MDI: False
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Neovim`
* Supported binaries: .svg

Expand Down Expand Up @@ -545,6 +592,7 @@ DiffTools.UseOrder(DiffTool.Neovim);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_P4Merge`
* Supported binaries: .bmp, .gif, .jpeg, .jpg, .pbm, .pgm, .png, .ppm, .svg, .tif, .tiff, .xbm, .xpm

Expand Down Expand Up @@ -630,6 +678,7 @@ DiffTools.UseOrder(DiffTool.P4Merge);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Rider`
* Supported binaries: .svg

Expand Down Expand Up @@ -698,6 +747,7 @@ DiffTools.UseOrder(DiffTool.Rider);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_TkDiff`
* Supported binaries: .svg

Expand Down Expand Up @@ -730,6 +780,7 @@ DiffTools.UseOrder(DiffTool.TkDiff);
* Supports auto-refresh: False
* Supports text files: False
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_TortoiseGitIDiff`
* Supported binaries: .bmp, .gif, .ico, .jpeg, .jpg, .png, .tif, .tiff

Expand Down Expand Up @@ -764,6 +815,7 @@ DiffTools.UseOrder(DiffTool.TortoiseGitIDiff);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_TortoiseGitMerge`
* Supported binaries: .bin, .svg

Expand Down Expand Up @@ -798,6 +850,7 @@ DiffTools.UseOrder(DiffTool.TortoiseGitMerge);
* Supports auto-refresh: False
* Supports text files: False
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_TortoiseIDiff`
* Supported binaries: .bmp, .gif, .ico, .jpeg, .jpg, .png, .tif, .tiff

Expand Down Expand Up @@ -832,6 +885,7 @@ DiffTools.UseOrder(DiffTool.TortoiseIDiff);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_TortoiseMerge`
* Supported binaries: .svg

Expand Down Expand Up @@ -866,6 +920,7 @@ DiffTools.UseOrder(DiffTool.TortoiseMerge);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Vim`
* Supported binaries: .svg

Expand Down Expand Up @@ -922,6 +977,7 @@ DiffTools.UseOrder(DiffTool.Vim);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_WinMerge`
* Supported binaries: .bin, .bmp, .bw, .cut, .dds, .exr, .g3, .gif, .hdp, .hdr, .ico, .iff, .j2c, .j2k, .jif, .jng, .jp2, .jpe, .jpeg, .jpg, .jxr, .koa, .lbm, .mng, .pbm, .pcd, .pct, .pcx, .pfm, .pgm, .pic, .pict, .png, .ppm, .psd, .ras, .rgb, .rgba, .sgi, .svg, .targa, .tga, .tif, .tiff, .wap, .wbm, .wbmp, .wdp, .webp, .xbm, .xpm

Expand Down Expand Up @@ -969,6 +1025,7 @@ DiffTools.UseOrder(DiffTool.WinMerge);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_AraxisMerge`
* Supported binaries: .bmp, .dib, .emf, .gif, .j2c, .j2k, .jif, .jp2, .jpc, .jpeg, .jpg, .jpx, .pbm, .pcx, .pgm, .png, .ppm, .ras, .svg, .tga, .tif, .tiff, .wmf

Expand Down Expand Up @@ -1024,6 +1081,7 @@ DiffTools.UseOrder(DiffTool.AraxisMerge);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: False
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Cursor`
* Supported binaries: .bin, .svg

Expand Down Expand Up @@ -1089,6 +1147,7 @@ DiffTools.UseOrder(DiffTool.Cursor);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_Meld`
* Supported binaries: .svg

Expand Down Expand Up @@ -1155,6 +1214,7 @@ DiffTools.UseOrder(DiffTool.Meld);
* Supports auto-refresh: False
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_SublimeMerge`
* Supported binaries: .svg

Expand Down Expand Up @@ -1220,6 +1280,7 @@ DiffTools.UseOrder(DiffTool.SublimeMerge);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: True
* Create no window: False
* Environment variable for custom install location: `DiffEngine_VisualStudio`
* Supported binaries: .svg

Expand Down Expand Up @@ -1263,6 +1324,7 @@ DiffTools.UseOrder(DiffTool.VisualStudio);
* Supports auto-refresh: True
* Supports text files: True
* Use shell execute: False
* Create no window: False
* Environment variable for custom install location: `DiffEngine_VisualStudioCode`
* Supported binaries: .bin, .svg

Expand Down
45 changes: 23 additions & 22 deletions docs/diff-tool.order.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,30 @@ To change this file edit the source file and then run MarkdownSnippets.

## Default

* **[BeyondCompare](/docs/diff-tool.md#beyondcompare)** Win/OSX/Linux (Cost: Paid)<!-- include: defaultOrder. path: /src/DiffEngine.Tests/defaultOrder.include.md -->
* **[P4Merge](/docs/diff-tool.md#p4merge)** Win/OSX/Linux (Cost: Free)
* **[BeyondCompare](/docs/diff-tool.md#beyondcompare)** Windows/OSX/Linux (Cost: Paid)<!-- include: defaultOrder. path: /src/DiffEngine.Tests/defaultOrder.include.md -->
* **[P4Merge](/docs/diff-tool.md#p4merge)** Windows/OSX/Linux (Cost: Free)
* **[Kaleidoscope](/docs/diff-tool.md#kaleidoscope)** OSX (Cost: Paid)
* **[DeltaWalker](/docs/diff-tool.md#deltawalker)** Win/OSX (Cost: Paid)
* **[WinMerge](/docs/diff-tool.md#winmerge)** Win (Cost: Free with option to donate)
* **[TortoiseGitMerge](/docs/diff-tool.md#tortoisegitmerge)** Win (Cost: Free)
* **[TortoiseGitIDiff](/docs/diff-tool.md#tortoisegitidiff)** Win (Cost: Free)
* **[TortoiseMerge](/docs/diff-tool.md#tortoisemerge)** Win (Cost: Free)
* **[TortoiseIDiff](/docs/diff-tool.md#tortoiseidiff)** Win (Cost: Free)
* **[KDiff3](/docs/diff-tool.md#kdiff3)** Win/OSX (Cost: Free)
* **[DeltaWalker](/docs/diff-tool.md#deltawalker)** Windows/OSX (Cost: Paid)
* **[WinMerge](/docs/diff-tool.md#winmerge)** Windows (Cost: Free with option to donate)
* **[TortoiseGitMerge](/docs/diff-tool.md#tortoisegitmerge)** Windows (Cost: Free)
* **[TortoiseGitIDiff](/docs/diff-tool.md#tortoisegitidiff)** Windows (Cost: Free)
* **[TortoiseMerge](/docs/diff-tool.md#tortoisemerge)** Windows (Cost: Free)
* **[TortoiseIDiff](/docs/diff-tool.md#tortoiseidiff)** Windows (Cost: Free)
* **[KDiff3](/docs/diff-tool.md#kdiff3)** Windows/OSX (Cost: Free)
* **[TkDiff](/docs/diff-tool.md#tkdiff)** OSX (Cost: Free)
* **[Guiffy](/docs/diff-tool.md#guiffy)** Win/OSX (Cost: Paid)
* **[ExamDiff](/docs/diff-tool.md#examdiff)** Win (Cost: Paid)
* **[Diffinity](/docs/diff-tool.md#diffinity)** Win (Cost: Free with option to donate)
* **[Rider](/docs/diff-tool.md#rider)** Win/OSX/Linux (Cost: Paid with free option for OSS)
* **[Vim](/docs/diff-tool.md#vim)** Win/OSX (Cost: Free with option to donate)
* **[Neovim](/docs/diff-tool.md#neovim)** Win/OSX/Linux (Cost: Free with option to sponsor)
* **[AraxisMerge](/docs/diff-tool.md#araxismerge)** Win/OSX (Cost: Paid)
* **[Meld](/docs/diff-tool.md#meld)** Win/OSX/Linux (Cost: Free)
* **[SublimeMerge](/docs/diff-tool.md#sublimemerge)** Win/OSX/Linux (Cost: Paid)
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Win/OSX/Linux (Cost: Free)
* **[Cursor](/docs/diff-tool.md#cursor)** Win/OSX/Linux (Cost: Free and Paid)
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Win (Cost: Paid and free options)<!-- endInclude -->
* **[Guiffy](/docs/diff-tool.md#guiffy)** Windows/OSX (Cost: Paid)
* **[ExamDiff](/docs/diff-tool.md#examdiff)** Windows (Cost: Paid)
* **[Diffinity](/docs/diff-tool.md#diffinity)** Windows (Cost: Free with option to donate)
* **[Rider](/docs/diff-tool.md#rider)** Windows/OSX/Linux (Cost: Paid with free option for OSS)
* **[Vim](/docs/diff-tool.md#vim)** Windows/OSX (Cost: Free with option to donate)
* **[Neovim](/docs/diff-tool.md#neovim)** Windows/OSX/Linux (Cost: Free with option to sponsor)
* **[AraxisMerge](/docs/diff-tool.md#araxismerge)** Windows/OSX (Cost: Paid)
* **[Meld](/docs/diff-tool.md#meld)** Windows/OSX/Linux (Cost: Free)
* **[SublimeMerge](/docs/diff-tool.md#sublimemerge)** Windows/OSX/Linux (Cost: Paid)
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Windows/OSX/Linux (Cost: Free)
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)<!-- endInclude -->


## Custom order
Expand All @@ -52,5 +53,5 @@ For example `VisualStudio,Meld` will result in VisualStudio then Meld then all o
```cs
DiffTools.UseOrder(DiffTool.VisualStudio, DiffTool.AraxisMerge);
```
<sup><a href='/src/DiffEngine.Tests/DiffToolsTest.cs#L183-L187' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseOrder' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/DiffEngine.Tests/DiffToolsTest.cs#L189-L193' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseOrder' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->
43 changes: 22 additions & 21 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,29 +63,30 @@ DiffEngine manages launching and cleanup of diff tools. It is designed to be use

## [Supported Tools](/docs/diff-tool.md#supported-tools)

* **[BeyondCompare](/docs/diff-tool.md#beyondcompare)** Win/OSX/Linux (Cost: Paid)<!-- include: diffToolList. path: /src/DiffEngine.Tests/diffToolList.include.md -->
* **[P4Merge](/docs/diff-tool.md#p4merge)** Win/OSX/Linux (Cost: Free)
* **[BeyondCompare](/docs/diff-tool.md#beyondcompare)** Windows/OSX/Linux (Cost: Paid)<!-- include: diffToolList. path: /src/DiffEngine.Tests/diffToolList.include.md -->
* **[P4Merge](/docs/diff-tool.md#p4merge)** Windows/OSX/Linux (Cost: Free)
* **[Kaleidoscope](/docs/diff-tool.md#kaleidoscope)** OSX (Cost: Paid)
* **[DeltaWalker](/docs/diff-tool.md#deltawalker)** Win/OSX (Cost: Paid)
* **[WinMerge](/docs/diff-tool.md#winmerge)** Win (Cost: Free with option to donate)
* **[TortoiseGitMerge](/docs/diff-tool.md#tortoisegitmerge)** Win (Cost: Free)
* **[TortoiseGitIDiff](/docs/diff-tool.md#tortoisegitidiff)** Win (Cost: Free)
* **[TortoiseMerge](/docs/diff-tool.md#tortoisemerge)** Win (Cost: Free)
* **[TortoiseIDiff](/docs/diff-tool.md#tortoiseidiff)** Win (Cost: Free)
* **[KDiff3](/docs/diff-tool.md#kdiff3)** Win/OSX (Cost: Free)
* **[DeltaWalker](/docs/diff-tool.md#deltawalker)** Windows/OSX (Cost: Paid)
* **[WinMerge](/docs/diff-tool.md#winmerge)** Windows (Cost: Free with option to donate)
* **[TortoiseGitMerge](/docs/diff-tool.md#tortoisegitmerge)** Windows (Cost: Free)
* **[TortoiseGitIDiff](/docs/diff-tool.md#tortoisegitidiff)** Windows (Cost: Free)
* **[TortoiseMerge](/docs/diff-tool.md#tortoisemerge)** Windows (Cost: Free)
* **[TortoiseIDiff](/docs/diff-tool.md#tortoiseidiff)** Windows (Cost: Free)
* **[KDiff3](/docs/diff-tool.md#kdiff3)** Windows/OSX (Cost: Free)
* **[TkDiff](/docs/diff-tool.md#tkdiff)** OSX (Cost: Free)
* **[Guiffy](/docs/diff-tool.md#guiffy)** Win/OSX (Cost: Paid)
* **[ExamDiff](/docs/diff-tool.md#examdiff)** Win (Cost: Paid)
* **[Diffinity](/docs/diff-tool.md#diffinity)** Win (Cost: Free with option to donate)
* **[Rider](/docs/diff-tool.md#rider)** Win/OSX/Linux (Cost: Paid with free option for OSS)
* **[Vim](/docs/diff-tool.md#vim)** Win/OSX (Cost: Free with option to donate)
* **[Neovim](/docs/diff-tool.md#neovim)** Win/OSX/Linux (Cost: Free with option to sponsor)
* **[AraxisMerge](/docs/diff-tool.md#araxismerge)** Win/OSX (Cost: Paid)
* **[Meld](/docs/diff-tool.md#meld)** Win/OSX/Linux (Cost: Free)
* **[SublimeMerge](/docs/diff-tool.md#sublimemerge)** Win/OSX/Linux (Cost: Paid)
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Win/OSX/Linux (Cost: Free)
* **[Cursor](/docs/diff-tool.md#cursor)** Win/OSX/Linux (Cost: Free and Paid)
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Win (Cost: Paid and free options)<!-- endInclude -->
* **[Guiffy](/docs/diff-tool.md#guiffy)** Windows/OSX (Cost: Paid)
* **[ExamDiff](/docs/diff-tool.md#examdiff)** Windows (Cost: Paid)
* **[Diffinity](/docs/diff-tool.md#diffinity)** Windows (Cost: Free with option to donate)
* **[Rider](/docs/diff-tool.md#rider)** Windows/OSX/Linux (Cost: Paid with free option for OSS)
* **[Vim](/docs/diff-tool.md#vim)** Windows/OSX (Cost: Free with option to donate)
* **[Neovim](/docs/diff-tool.md#neovim)** Windows/OSX/Linux (Cost: Free with option to sponsor)
* **[AraxisMerge](/docs/diff-tool.md#araxismerge)** Windows/OSX (Cost: Paid)
* **[Meld](/docs/diff-tool.md#meld)** Windows/OSX/Linux (Cost: Free)
* **[SublimeMerge](/docs/diff-tool.md#sublimemerge)** Windows/OSX/Linux (Cost: Paid)
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Windows/OSX/Linux (Cost: Free)
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)<!-- endInclude -->


## Launching a tool
Expand Down
3 changes: 2 additions & 1 deletion src/DiffEngine.Tests/DefinitionsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ static string GetOsSupport(OsSupport osSupport)
var builder = new StringBuilder();
if (osSupport.Windows != null)
{
builder.Append("Win/");
builder.Append("Windows/");
}

if (osSupport.Osx != null)
Expand Down Expand Up @@ -125,6 +125,7 @@ static void AddTool(StreamWriter writer, Definition tool)
* Supports auto-refresh: {tool.AutoRefresh}
* Supports text files: {tool.SupportsText}
* Use shell execute: {tool.UseShellExecute}
* Create no window: {tool.CreateNoWindow}
* Environment variable for custom install location: `DiffEngine_{tool.Tool}`
""");

Expand Down
6 changes: 6 additions & 0 deletions src/DiffEngine.Tests/DiffToolsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,12 @@ static async Task AddToolAndLaunch()
}
/**

[Fact]
public Task LaunchSpecificDocxDiff() =>
DiffRunner.LaunchAsync(DiffTool.MsWordDiff,
Path.Combine(SourceDirectory, "input.temp.docx"),
Path.Combine(SourceDirectory, "input.target.docx"));

[Fact]
public Task LaunchSpecificBinaryDiff() =>
DiffRunner.LaunchAsync(DiffTool.VisualStudioCode,
Expand Down
Loading