From 8d2a2e00b4b778da7daabd30b6588399758cbe94 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 13 Nov 2025 07:51:25 +1100 Subject: [PATCH 1/2] Add Cursor support --- src/DiffEngine.Tests/defaultOrder.include.md | 1 + src/DiffEngine.Tests/diffToolList.include.md | 1 + src/DiffEngine.Tests/diffTools.include.md | 57 ++++++++++++++++++++ src/DiffEngine/Definitions.cs | 1 + src/DiffEngine/DiffTool.cs | 3 +- src/DiffEngine/Implementation/Cursor.cs | 36 +++++++++++++ 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/DiffEngine/Implementation/Cursor.cs diff --git a/src/DiffEngine.Tests/defaultOrder.include.md b/src/DiffEngine.Tests/defaultOrder.include.md index 22c88b41..f2656296 100644 --- a/src/DiffEngine.Tests/defaultOrder.include.md +++ b/src/DiffEngine.Tests/defaultOrder.include.md @@ -19,4 +19,5 @@ * **[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) diff --git a/src/DiffEngine.Tests/diffToolList.include.md b/src/DiffEngine.Tests/diffToolList.include.md index 22c88b41..f2656296 100644 --- a/src/DiffEngine.Tests/diffToolList.include.md +++ b/src/DiffEngine.Tests/diffToolList.include.md @@ -19,4 +19,5 @@ * **[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) diff --git a/src/DiffEngine.Tests/diffTools.include.md b/src/DiffEngine.Tests/diffTools.include.md index c1327fba..0016fbef 100644 --- a/src/DiffEngine.Tests/diffTools.include.md +++ b/src/DiffEngine.Tests/diffTools.include.md @@ -738,6 +738,63 @@ Non-MDI tools are preferred since it allows [DiffEngineTray](tray.md) to track a * `/Applications/Araxis Merge.app/Contents/Utilities/compare` * `%PATH%compare` +### [Cursor](https://cursor.com) + + * Cost: Free and Paid + * Is MDI: True + * Supports auto-refresh: True + * Supports text files: True + * Use shell execute: False + * Environment variable for custom install location: `DiffEngine_Cursor` + * Supported binaries: .bin, .svg + +#### Notes: + + * [Command line reference](https://cursor.com/docs/configuration/shell) + +#### Windows settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `%ProgramFiles%\Cursor\Cursor.exe` + * `%ProgramW6432%\Cursor\Cursor.exe` + * `%ProgramFiles(x86)%\Cursor\Cursor.exe` + * `%PATH%Cursor.exe` + +#### OSX settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `/Applications/Cursor.app/Contents/MacOScursor` + * `%PATH%cursor` + +#### Linux settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `%PATH%cursor` + ### [Meld](https://meldmerge.org/) * Cost: Free diff --git a/src/DiffEngine/Definitions.cs b/src/DiffEngine/Definitions.cs index 1ec78961..5127fb74 100644 --- a/src/DiffEngine/Definitions.cs +++ b/src/DiffEngine/Definitions.cs @@ -28,6 +28,7 @@ static Definitions() => Implementation.Meld(), Implementation.SublimeMerge(), Implementation.VisualStudioCode(), + Implementation.Cursor(), Implementation.VisualStudio() ]; } \ No newline at end of file diff --git a/src/DiffEngine/DiffTool.cs b/src/DiffEngine/DiffTool.cs index d1b0a33c..13301ec0 100644 --- a/src/DiffEngine/DiffTool.cs +++ b/src/DiffEngine/DiffTool.cs @@ -23,5 +23,6 @@ public enum DiffTool Meld, SublimeMerge, VisualStudioCode, - VisualStudio + VisualStudio, + Cursor } \ No newline at end of file diff --git a/src/DiffEngine/Implementation/Cursor.cs b/src/DiffEngine/Implementation/Cursor.cs new file mode 100644 index 00000000..bab81c8e --- /dev/null +++ b/src/DiffEngine/Implementation/Cursor.cs @@ -0,0 +1,36 @@ +static partial class Implementation +{ + public static Definition Cursor() + { + var launchArguments = new LaunchArguments( + Left: (temp, target) => $"--diff \"{target}\" \"{temp}\"", + Right: (temp, target) => $"--diff \"{temp}\" \"{target}\""); + return new( + Tool: DiffTool.Cursor, + Url: "https://cursor.com", + AutoRefresh: true, + IsMdi: true, + SupportsText: true, + UseShellExecute: false, + RequiresTarget: true, + Cost: "Free and Paid", + BinaryExtensions: + [ + ".svg", + ".bin" + ], + OsSupport: new( + Windows: new( + "Cursor.exe", + launchArguments, + @"%ProgramFiles%\Cursor\"), + Linux: new( + "cursor", + launchArguments), + Osx: new( + "cursor", + launchArguments, + "/Applications/Cursor.app/Contents/MacOS")), + Notes: " * [Command line reference](https://cursor.com/docs/configuration/shell)"); + } +} \ No newline at end of file From 19f31ae478f83a6781b30a6c9d44420fc4bda6c1 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 12 Nov 2025 20:51:45 +0000 Subject: [PATCH 2/2] Docs changes --- docs/diff-tool.md | 57 +++++++++++++++++++++++++++++++++++++++++ docs/diff-tool.order.md | 1 + readme.md | 1 + 3 files changed, 59 insertions(+) diff --git a/docs/diff-tool.md b/docs/diff-tool.md index 99c9c11c..124b6a12 100644 --- a/docs/diff-tool.md +++ b/docs/diff-tool.md @@ -873,6 +873,63 @@ Non-MDI tools are preferred since it allows [DiffEngineTray](tray.md) to track a * `/Applications/Araxis Merge.app/Contents/Utilities/compare` * `%PATH%compare` +### [Cursor](https://cursor.com) + + * Cost: Free and Paid + * Is MDI: True + * Supports auto-refresh: True + * Supports text files: True + * Use shell execute: False + * Environment variable for custom install location: `DiffEngine_Cursor` + * Supported binaries: .bin, .svg + +#### Notes: + + * [Command line reference](https://cursor.com/docs/configuration/shell) + +#### Windows settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `%ProgramFiles%\Cursor\Cursor.exe` + * `%ProgramW6432%\Cursor\Cursor.exe` + * `%ProgramFiles(x86)%\Cursor\Cursor.exe` + * `%PATH%Cursor.exe` + +#### OSX settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `/Applications/Cursor.app/Contents/MacOScursor` + * `%PATH%cursor` + +#### Linux settings: + + * Example target on left arguments: + ``` + --diff "targetFile.txt" "tempFile.txt" + ``` + * Example target on right arguments: + ``` + --diff "tempFile.txt" "targetFile.txt" + ``` + * Scanned paths: + * `%PATH%cursor` + ### [Meld](https://meldmerge.org/) * Cost: Free diff --git a/docs/diff-tool.order.md b/docs/diff-tool.order.md index 0251c032..226aea96 100644 --- a/docs/diff-tool.order.md +++ b/docs/diff-tool.order.md @@ -31,6 +31,7 @@ To change this file edit the source file and then run MarkdownSnippets. * **[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) diff --git a/readme.md b/readme.md index 810f987b..7a6a4ce9 100644 --- a/readme.md +++ b/readme.md @@ -84,6 +84,7 @@ DiffEngine manages launching and cleanup of diff tools. It is designed to be use * **[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)