Skip to content

Commit ab14e81

Browse files
committed
refactor: simplify the invocation of external merge/diff tool
Signed-off-by: leo <longshuang@msn.cn>
1 parent 8ce5455 commit ab14e81

File tree

13 files changed

+133
-136
lines changed

13 files changed

+133
-136
lines changed

src/Commands/DiffTool.cs

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,36 @@
1-
using System.IO;
2-
3-
namespace SourceGit.Commands
1+
namespace SourceGit.Commands
42
{
53
public class DiffTool : Command
64
{
7-
public DiffTool(string repo, int type, string exec, Models.DiffOption option)
5+
public DiffTool(string repo, Models.DiffOption option)
86
{
97
WorkingDirectory = repo;
108
Context = repo;
11-
12-
_merger = Models.ExternalMerger.Supported.Find(x => x.Type == type);
13-
_exec = exec;
149
_option = option;
1510
}
1611

1712
public void Open()
1813
{
19-
if (_merger == null)
14+
var tool = Native.OS.GetDiffMergeTool(true);
15+
if (tool == null)
2016
{
2117
App.RaiseException(Context, "Invalid merge tool in preference setting!");
2218
return;
2319
}
2420

25-
if (_merger.Type == 0)
21+
if (string.IsNullOrEmpty(tool.Cmd))
2622
{
2723
Args = $"difftool -g --no-prompt {_option}";
2824
}
29-
else if (File.Exists(_exec))
30-
{
31-
var cmd = $"{_exec.Quoted()} {_merger.DiffCmd}";
32-
Args = $"-c difftool.sourcegit.cmd={cmd.Quoted()} difftool --tool=sourcegit --no-prompt {_option}";
33-
}
3425
else
3526
{
36-
App.RaiseException(Context, $"Can NOT find external diff tool in '{_exec}'!");
37-
return;
27+
var cmd = $"{tool.Exec.Quoted()} {tool.Cmd}";
28+
Args = $"-c difftool.sourcegit.cmd={cmd.Quoted()} difftool --tool=sourcegit --no-prompt {_option}";
3829
}
3930

4031
Exec();
4132
}
4233

43-
private Models.ExternalMerger _merger;
44-
private string _exec;
4534
private Models.DiffOption _option;
4635
}
4736
}

src/Commands/MergeTool.cs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,38 @@
1-
using System.IO;
2-
using System.Threading.Tasks;
1+
using System.Threading.Tasks;
32

43
namespace SourceGit.Commands
54
{
65
public class MergeTool : Command
76
{
8-
public MergeTool(string repo, int type, string exec, string file)
7+
public MergeTool(string repo, string file)
98
{
109
WorkingDirectory = repo;
11-
Context = exec;
12-
13-
_merger = Models.ExternalMerger.Supported.Find(x => x.Type == type);
14-
_exec = exec;
10+
Context = repo;
1511
_file = string.IsNullOrEmpty(file) ? string.Empty : file.Quoted();
1612
}
1713

1814
public async Task<bool> OpenAsync()
1915
{
20-
if (_merger == null)
16+
var tool = Native.OS.GetDiffMergeTool(false);
17+
if (tool == null)
2118
{
2219
App.RaiseException(Context, "Invalid merge tool in preference setting!");
2320
return false;
2421
}
2522

26-
if (_merger.Type == 0)
23+
if (string.IsNullOrEmpty(tool.Cmd))
2724
{
2825
Args = $"mergetool {_file}";
2926
}
30-
else if (File.Exists(_exec))
31-
{
32-
var cmd = $"{_exec.Quoted()} {_merger.Cmd}";
33-
Args = $"-c mergetool.sourcegit.cmd={cmd.Quoted()} -c mergetool.writeToTemp=true -c mergetool.keepBackup=false -c mergetool.trustExitCode=true mergetool --tool=sourcegit {_file}";
34-
}
3527
else
3628
{
37-
App.RaiseException(Context, $"Can NOT find external merge tool in '{_exec}'!");
38-
return false;
29+
var cmd = $"{tool.Exec.Quoted()} {tool.Cmd}";
30+
Args = $"-c mergetool.sourcegit.cmd={cmd.Quoted()} -c mergetool.writeToTemp=true -c mergetool.keepBackup=false -c mergetool.trustExitCode=true mergetool --tool=sourcegit {_file}";
3931
}
4032

4133
return await ExecAsync().ConfigureAwait(false);
4234
}
4335

44-
private Models.ExternalMerger _merger;
45-
private string _exec;
4636
private string _file;
4737
}
4838
}

src/Models/ExternalMerger.cs

Lines changed: 47 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@
77

88
namespace SourceGit.Models
99
{
10-
public class ExternalMerger
10+
public class ExternalMerger(string icon, string name, string finder, string mergeCmd, string diffCmd)
1111
{
12-
public int Type { get; set; }
13-
public string Icon { get; set; }
14-
public string Name { get; set; }
15-
public string Exec { get; set; }
16-
public string Cmd { get; set; }
17-
public string DiffCmd { get; set; }
12+
public string Icon { get; } = icon;
13+
public string Name { get; } = name;
14+
public string Finder { get; } = finder;
15+
public string MergeCmd { get; } = mergeCmd;
16+
public string DiffCmd { get; } = diffCmd;
1817

1918
public Bitmap IconImage
2019
{
@@ -32,74 +31,69 @@ static ExternalMerger()
3231
if (OperatingSystem.IsWindows())
3332
{
3433
Supported = new List<ExternalMerger>() {
35-
new ExternalMerger(0, "git", "Use Git Settings", "", "", ""),
36-
new ExternalMerger(1, "vscode", "Visual Studio Code", "Code.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
37-
new ExternalMerger(2, "vscode_insiders", "Visual Studio Code - Insiders", "Code - Insiders.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
38-
new ExternalMerger(3, "vs", "Visual Studio", "vsDiffMerge.exe", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" /m", "\"$LOCAL\" \"$REMOTE\""),
39-
new ExternalMerger(4, "tortoise_merge", "Tortoise Merge", "TortoiseMerge.exe;TortoiseGitMerge.exe", "-base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\"", "-base:\"$LOCAL\" -theirs:\"$REMOTE\""),
40-
new ExternalMerger(5, "kdiff3", "KDiff3", "kdiff3.exe", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
41-
new ExternalMerger(6, "beyond_compare", "Beyond Compare", "BComp.exe", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
42-
new ExternalMerger(7, "win_merge", "WinMerge", "WinMergeU.exe", "\"$MERGED\"", "-u -e -sw \"$LOCAL\" \"$REMOTE\""),
43-
new ExternalMerger(8, "codium", "VSCodium", "VSCodium.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
44-
new ExternalMerger(9, "p4merge", "P4Merge", "p4merge.exe", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
45-
new ExternalMerger(10, "plastic_merge", "Plastic SCM", "mergetool.exe", "-s=\"$REMOTE\" -b=\"$BASE\" -d=\"$LOCAL\" -r=\"$MERGED\" --automatic", "-s=\"$LOCAL\" -d=\"$REMOTE\""),
46-
new ExternalMerger(11, "meld", "Meld", "Meld.exe", "\"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
47-
new ExternalMerger(12, "cursor", "Cursor", "Cursor.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
34+
new ExternalMerger("git", "Use Git Settings", "", "", ""),
35+
new ExternalMerger("vscode", "Visual Studio Code", "Code.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
36+
new ExternalMerger("vscode_insiders", "Visual Studio Code - Insiders", "Code - Insiders.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
37+
new ExternalMerger("vs", "Visual Studio", "vsDiffMerge.exe", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" /m", "\"$LOCAL\" \"$REMOTE\""),
38+
new ExternalMerger("tortoise_merge", "Tortoise Merge", "TortoiseMerge.exe;TortoiseGitMerge.exe", "-base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\"", "-base:\"$LOCAL\" -theirs:\"$REMOTE\""),
39+
new ExternalMerger("kdiff3", "KDiff3", "kdiff3.exe", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
40+
new ExternalMerger("beyond_compare", "Beyond Compare", "BComp.exe", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
41+
new ExternalMerger("win_merge", "WinMerge", "WinMergeU.exe", "\"$MERGED\"", "-u -e -sw \"$LOCAL\" \"$REMOTE\""),
42+
new ExternalMerger("codium", "VSCodium", "VSCodium.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
43+
new ExternalMerger("p4merge", "P4Merge", "p4merge.exe", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
44+
new ExternalMerger("plastic_merge", "Plastic SCM", "mergetool.exe", "-s=\"$REMOTE\" -b=\"$BASE\" -d=\"$LOCAL\" -r=\"$MERGED\" --automatic", "-s=\"$LOCAL\" -d=\"$REMOTE\""),
45+
new ExternalMerger("meld", "Meld", "Meld.exe", "\"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
46+
new ExternalMerger("cursor", "Cursor", "Cursor.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
4847
};
4948
}
5049
else if (OperatingSystem.IsMacOS())
5150
{
5251
Supported = new List<ExternalMerger>() {
53-
new ExternalMerger(0, "git", "Use Git Settings", "", "", ""),
54-
new ExternalMerger(1, "xcode", "FileMerge", "/usr/bin/opendiff", "\"$BASE\" \"$LOCAL\" \"$REMOTE\" -ancestor \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
55-
new ExternalMerger(2, "vscode", "Visual Studio Code", "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
56-
new ExternalMerger(3, "vscode_insiders", "Visual Studio Code - Insiders", "/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
57-
new ExternalMerger(4, "kdiff3", "KDiff3", "/Applications/kdiff3.app/Contents/MacOS/kdiff3", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
58-
new ExternalMerger(5, "beyond_compare", "Beyond Compare", "/Applications/Beyond Compare.app/Contents/MacOS/bcomp", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
59-
new ExternalMerger(6, "codium", "VSCodium", "/Applications/VSCodium.app/Contents/Resources/app/bin/codium", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
60-
new ExternalMerger(7, "p4merge", "P4Merge", "/Applications/p4merge.app/Contents/Resources/launchp4merge", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
61-
new ExternalMerger(8, "cursor", "Cursor", "/Applications/Cursor.app/Contents/Resources/app/bin/cursor", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
52+
new ExternalMerger("git", "Use Git Settings", "", "", ""),
53+
new ExternalMerger("xcode", "FileMerge", "/usr/bin/opendiff", "\"$BASE\" \"$LOCAL\" \"$REMOTE\" -ancestor \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
54+
new ExternalMerger("vscode", "Visual Studio Code", "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
55+
new ExternalMerger("vscode_insiders", "Visual Studio Code - Insiders", "/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
56+
new ExternalMerger("kdiff3", "KDiff3", "/Applications/kdiff3.app/Contents/MacOS/kdiff3", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
57+
new ExternalMerger("beyond_compare", "Beyond Compare", "/Applications/Beyond Compare.app/Contents/MacOS/bcomp", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
58+
new ExternalMerger("codium", "VSCodium", "/Applications/VSCodium.app/Contents/Resources/app/bin/codium", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
59+
new ExternalMerger("p4merge", "P4Merge", "/Applications/p4merge.app/Contents/Resources/launchp4merge", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
60+
new ExternalMerger("cursor", "Cursor", "/Applications/Cursor.app/Contents/Resources/app/bin/cursor", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
6261
};
6362
}
6463
else if (OperatingSystem.IsLinux())
6564
{
6665
Supported = new List<ExternalMerger>() {
67-
new ExternalMerger(0, "git", "Use Git Settings", "", "", ""),
68-
new ExternalMerger(1, "vscode", "Visual Studio Code", "/usr/share/code/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
69-
new ExternalMerger(2, "vscode_insiders", "Visual Studio Code - Insiders", "/usr/share/code-insiders/code-insiders", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
70-
new ExternalMerger(3, "kdiff3", "KDiff3", "/usr/bin/kdiff3", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
71-
new ExternalMerger(4, "beyond_compare", "Beyond Compare", "/usr/bin/bcomp", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
72-
new ExternalMerger(5, "meld", "Meld", "/usr/bin/meld", "\"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
73-
new ExternalMerger(6, "codium", "VSCodium", "/usr/share/codium/bin/codium", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
74-
new ExternalMerger(7, "p4merge", "P4Merge", "/usr/local/bin/p4merge", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
75-
new ExternalMerger(8, "cursor", "Cursor", "cursor", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
66+
new ExternalMerger("git", "Use Git Settings", "", "", ""),
67+
new ExternalMerger("vscode", "Visual Studio Code", "/usr/share/code/code", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
68+
new ExternalMerger("vscode_insiders", "Visual Studio Code - Insiders", "/usr/share/code-insiders/code-insiders", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
69+
new ExternalMerger("kdiff3", "KDiff3", "/usr/bin/kdiff3", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
70+
new ExternalMerger("beyond_compare", "Beyond Compare", "/usr/bin/bcomp", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
71+
new ExternalMerger("meld", "Meld", "/usr/bin/meld", "\"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""),
72+
new ExternalMerger("codium", "VSCodium", "/usr/share/codium/bin/codium", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
73+
new ExternalMerger("p4merge", "P4Merge", "/usr/local/bin/p4merge", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""),
74+
new ExternalMerger("cursor", "Cursor", "cursor", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""),
7675
};
7776
}
7877
else
7978
{
8079
Supported = new List<ExternalMerger>() {
81-
new ExternalMerger(0, "git", "Use Git Settings", "", "", ""),
80+
new ExternalMerger("git", "Use Git Settings", "", "", ""),
8281
};
8382
}
8483
}
8584

86-
public ExternalMerger(int type, string icon, string name, string exec, string cmd, string diffCmd)
87-
{
88-
Type = type;
89-
Icon = icon;
90-
Name = name;
91-
Exec = exec;
92-
Cmd = cmd;
93-
DiffCmd = diffCmd;
94-
}
95-
96-
public string[] GetPatterns()
85+
public string[] GetPatternsToFindExecFile()
9786
{
9887
if (OperatingSystem.IsWindows())
99-
return Exec.Split(';');
88+
return Finder.Split(';', StringSplitOptions.RemoveEmptyEntries);
10089

101-
var choices = Exec.Split(';', StringSplitOptions.RemoveEmptyEntries);
102-
return Array.ConvertAll(choices, Path.GetFileName);
90+
return [Path.GetFileName(Finder)];
10391
}
10492
}
93+
94+
public class DiffMergeTool(string exec, string cmd)
95+
{
96+
public string Exec { get; } = exec;
97+
public string Cmd { get; } = cmd;
98+
}
10599
}

src/Models/ExternalTool.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ namespace SourceGit.Models
1212
{
1313
public class ExternalTool
1414
{
15-
public string Name { get; private set; }
16-
public Bitmap IconImage { get; private set; } = null;
15+
public string Name { get; }
16+
public string ExecFile { get; }
17+
public Bitmap IconImage { get; }
1718

1819
public ExternalTool(string name, string icon, string execFile, Func<string, string> execArgsGenerator = null)
1920
{
2021
Name = name;
21-
_execFile = execFile;
22+
ExecFile = execFile;
2223
_execArgsGenerator = execArgsGenerator ?? (repo => repo.Quoted());
2324

2425
try
@@ -38,13 +39,12 @@ public void Open(string repo)
3839
Process.Start(new ProcessStartInfo()
3940
{
4041
WorkingDirectory = repo,
41-
FileName = _execFile,
42+
FileName = ExecFile,
4243
Arguments = _execArgsGenerator.Invoke(repo),
4344
UseShellExecute = false,
4445
});
4546
}
4647

47-
private string _execFile = string.Empty;
4848
private Func<string, string> _execArgsGenerator = null;
4949
}
5050

src/Native/OS.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@ public static List<Models.ExternalTool> ExternalTools
7676
set;
7777
} = [];
7878

79+
public static int ExternalMergerType
80+
{
81+
get;
82+
set;
83+
} = 0;
84+
85+
public static string ExternalMergerExecFile
86+
{
87+
get;
88+
set;
89+
} = string.Empty;
90+
7991
public static bool UseSystemWindowFrame
8092
{
8193
get => OperatingSystem.IsLinux() && _enableSystemWindowFrame;
@@ -158,6 +170,33 @@ public static void SetShellOrTerminal(Models.ShellOrTerminal shell)
158170
ShellOrTerminal = _backend.FindTerminal(shell);
159171
}
160172

173+
public static Models.DiffMergeTool GetDiffMergeTool(bool onlyDiff)
174+
{
175+
if (ExternalMergerType < 0 || ExternalMergerType >= Models.ExternalMerger.Supported.Count)
176+
return null;
177+
178+
if (ExternalMergerType != 0 && (string.IsNullOrEmpty(ExternalMergerExecFile) || !File.Exists(ExternalMergerExecFile)))
179+
return null;
180+
181+
var tool = Models.ExternalMerger.Supported[ExternalMergerType];
182+
return new Models.DiffMergeTool(ExternalMergerExecFile, onlyDiff ? tool.DiffCmd : tool.MergeCmd);
183+
}
184+
185+
public static void AutoSelectExternalMergeToolExecFile()
186+
{
187+
if (ExternalMergerType >= 0 && ExternalMergerType < Models.ExternalMerger.Supported.Count)
188+
{
189+
var merger = Models.ExternalMerger.Supported[ExternalMergerType];
190+
var externalTool = ExternalTools.Find(x => x.Name.Equals(merger.Name, StringComparison.Ordinal));
191+
if (externalTool != null)
192+
ExternalMergerExecFile = externalTool.ExecFile;
193+
else if (!OperatingSystem.IsWindows() && File.Exists(merger.Finder))
194+
ExternalMergerExecFile = merger.Finder;
195+
else
196+
ExternalMergerExecFile = string.Empty;
197+
}
198+
}
199+
161200
public static void OpenInFileManager(string path, bool select = false)
162201
{
163202
_backend.OpenInFileManager(path, select);

0 commit comments

Comments
 (0)