@@ -401,6 +401,51 @@ func (s *diffCommandLineMac) Report(approved, received string) bool {
401401 return launchProgram (programName , approved , args ... )
402402}
403403
404+ type sublimeMergeMac struct {}
405+
406+ func NewSublimeMergeMacReporter () Reporter {
407+ return & sublimeMergeMac {}
408+ }
409+
410+ func (s * sublimeMergeMac ) Report (approved , received string ) bool {
411+ if runtime .GOOS != goosDarwin {
412+ return false
413+ }
414+ programName := "/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge"
415+ args := []string {"mergetool" , received , approved }
416+ return launchProgram (programName , approved , args ... )
417+ }
418+
419+ type sublimeMergeWindows struct {}
420+
421+ func NewSublimeMergeWindowsReporter () Reporter {
422+ return & sublimeMergeWindows {}
423+ }
424+
425+ func (s * sublimeMergeWindows ) Report (approved , received string ) bool {
426+ if runtime .GOOS != goosWindows {
427+ return false
428+ }
429+ programName := expandProgramFiles ("{ProgramFiles}Sublime Merge\\ smerge.exe" )
430+ args := []string {"mergetool" , received , approved }
431+ return launchProgram (programName , approved , args ... )
432+ }
433+
434+ type sublimeMergeLinux struct {}
435+
436+ func NewSublimeMergeLinuxReporter () Reporter {
437+ return & sublimeMergeLinux {}
438+ }
439+
440+ func (s * sublimeMergeLinux ) Report (approved , received string ) bool {
441+ if runtime .GOOS != goosLinux {
442+ return false
443+ }
444+ programName := "/usr/bin/smerge"
445+ args := []string {"mergetool" , received , approved }
446+ return launchProgram (programName , approved , args ... )
447+ }
448+
404449type diffToolOnMac struct {}
405450
406451func NewDiffToolOnMacReporter () Reporter {
@@ -415,6 +460,7 @@ func NewDiffToolOnMacReporter() Reporter {
415460 NewVisualStudioCodeMacReporter (),
416461 NewAraxisMergeMacReporter (),
417462 NewDiffCommandLineMacReporter (),
463+ NewSublimeMergeMacReporter (),
418464 )
419465}
420466
@@ -433,6 +479,7 @@ func (s *diffToolOnMac) Report(approved, received string) bool {
433479 NewVisualStudioCodeMacReporter (),
434480 NewAraxisMergeMacReporter (),
435481 NewDiffCommandLineMacReporter (),
482+ NewSublimeMergeMacReporter (),
436483 ).Report (approved , received )
437484}
438485
@@ -452,6 +499,7 @@ func NewDiffToolOnWindowsReporter() Reporter {
452499 NewCodeCompareWindowsReporter (),
453500 NewKdiff3WindowsReporter (),
454501 NewVisualStudioCodeWindowsReporter (),
502+ NewSublimeMergeWindowsReporter (),
455503 )
456504}
457505
@@ -472,6 +520,7 @@ func (s *diffToolOnWindows) Report(approved, received string) bool {
472520 NewCodeCompareWindowsReporter (),
473521 NewKdiff3WindowsReporter (),
474522 NewVisualStudioCodeWindowsReporter (),
523+ NewSublimeMergeWindowsReporter (),
475524 ).Report (approved , received )
476525}
477526
@@ -483,6 +532,7 @@ func NewDiffToolOnLinuxReporter() Reporter {
483532 NewMeldMergeLinuxReporter (),
484533 NewKdiff3LinuxReporter (),
485534 NewDiffCommandLineLinuxReporter (),
535+ NewSublimeMergeLinuxReporter (),
486536 )
487537}
488538
@@ -495,6 +545,7 @@ func (s *diffToolOnLinux) Report(approved, received string) bool {
495545 NewMeldMergeLinuxReporter (),
496546 NewKdiff3LinuxReporter (),
497547 NewDiffCommandLineLinuxReporter (),
548+ NewSublimeMergeLinuxReporter (),
498549 ).Report (approved , received )
499550}
500551
@@ -600,6 +651,24 @@ func (s *kdiff3Group) Report(approved, received string) bool {
600651 ).Report (approved , received )
601652}
602653
654+ type sublimeMergeGroup struct {}
655+
656+ func NewSublimeMergeGroupReporter () Reporter {
657+ return NewFirstWorkingReporter (
658+ NewSublimeMergeMacReporter (),
659+ NewSublimeMergeWindowsReporter (),
660+ NewSublimeMergeLinuxReporter (),
661+ )
662+ }
663+
664+ func (s * sublimeMergeGroup ) Report (approved , received string ) bool {
665+ return NewFirstWorkingReporter (
666+ NewSublimeMergeMacReporter (),
667+ NewSublimeMergeWindowsReporter (),
668+ NewSublimeMergeLinuxReporter (),
669+ ).Report (approved , received )
670+ }
671+
603672type tortoiseGroup struct {}
604673
605674func NewTortoiseGroupReporter () Reporter {
0 commit comments