Skip to content

Commit 38552a1

Browse files
committed
feature: supports to copy multiple commits message (#1857)
Signed-off-by: leo <longshuang@msn.cn>
1 parent 85ca6b0 commit 38552a1

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/ViewModels/Histories.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,11 @@ public async Task InteractiveRebaseAsync(Models.Commit commit, Models.Interactiv
358358
await App.ShowDialog(new InteractiveRebase(_repo, on, prefill));
359359
}
360360

361-
public async Task CopyCommitFullMessageAsync(Models.Commit commit)
361+
public async Task<string> GetCommitFullMessageAsync(Models.Commit commit)
362362
{
363-
var message = await new Commands.QueryCommitFullMessage(_repo.FullPath, commit.SHA).GetResultAsync();
364-
await App.CopyTextAsync(message);
363+
return await new Commands.QueryCommitFullMessage(_repo.FullPath, commit.SHA)
364+
.GetResultAsync()
365+
.ConfigureAwait(false);
365366
}
366367

367368
public async Task<Models.Commit> CompareWithHeadAsync(Models.Commit commit)

src/Views/Histories.axaml.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,11 +438,29 @@ private ContextMenu CreateContextMenuForMultipleCommits(ViewModels.Repository re
438438
e.Handled = true;
439439
};
440440

441+
var copyMessage = new MenuItem();
442+
copyMessage.Header = App.Text("CommitCM.CopyCommitMessage");
443+
copyMessage.Icon = App.CreateMenuIcon("Icons.Info");
444+
copyMessage.Click += async (_, e) =>
445+
{
446+
var vm = DataContext as ViewModels.Histories;
447+
var messages = new List<string>();
448+
foreach (var c in selected)
449+
{
450+
var message = await vm.GetCommitFullMessageAsync(c);
451+
messages.Add(message);
452+
}
453+
454+
await App.CopyTextAsync(string.Join("\n-----\n", messages));
455+
e.Handled = true;
456+
};
457+
441458
var copy = new MenuItem();
442459
copy.Header = App.Text("Copy");
443460
copy.Icon = App.CreateMenuIcon("Icons.Copy");
444461
copy.Items.Add(copyShas);
445462
copy.Items.Add(copyInfos);
463+
copy.Items.Add(copyMessage);
446464
menu.Items.Add(copy);
447465
return menu;
448466
}
@@ -871,7 +889,8 @@ private ContextMenu CreateContextMenuForSingleCommit(ViewModels.Repository repo,
871889
copyMessage.Icon = App.CreateMenuIcon("Icons.Info");
872890
copyMessage.Click += async (_, e) =>
873891
{
874-
await vm.CopyCommitFullMessageAsync(commit);
892+
var message = await vm.GetCommitFullMessageAsync(commit);
893+
await App.CopyTextAsync(message);
875894
e.Handled = true;
876895
};
877896

0 commit comments

Comments
 (0)