summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--docs/Config.md5
-rw-r--r--docs/keybindings/Keybindings_en.md11
-rw-r--r--docs/keybindings/Keybindings_ja.md11
-rw-r--r--docs/keybindings/Keybindings_ko.md11
-rw-r--r--docs/keybindings/Keybindings_nl.md11
-rw-r--r--docs/keybindings/Keybindings_pl.md11
-rw-r--r--docs/keybindings/Keybindings_ru.md11
-rw-r--r--docs/keybindings/Keybindings_zh-CN.md11
-rw-r--r--docs/keybindings/Keybindings_zh-TW.md11
-rw-r--r--pkg/config/user_config.go6
-rw-r--r--pkg/gui/controllers/basic_commits_controller.go14
-rw-r--r--pkg/gui/controllers/helpers/cherry_pick_helper.go30
-rw-r--r--pkg/i18n/chinese.go1
-rw-r--r--pkg/i18n/dutch.go1
-rw-r--r--pkg/i18n/english.go2
-rw-r--r--pkg/i18n/japanese.go5
-rw-r--r--pkg/i18n/korean.go1
-rw-r--r--pkg/i18n/polish.go1
-rw-r--r--pkg/i18n/russian.go1
-rw-r--r--pkg/i18n/traditional_chinese.go1
-rw-r--r--pkg/integration/tests/cherry_pick/cherry_pick_range.go85
-rw-r--r--pkg/integration/tests/test_list.go1
-rw-r--r--schema/config.json8
24 files changed, 148 insertions, 104 deletions
diff --git a/README.md b/README.md
index ac45872e5..8aaf64850 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ You can also perform any these actions as a once-off (e.g. pressing `s` on a com
### Cherry-pick
-Press `c` on a commit to copy it and press `v` to paste (cherry-pick) it.
+Press `shift+c` on a commit to copy it and press `shift+v` to paste (cherry-pick) it.
![cherry_pick](../assets/demo/cherry_pick-compressed.gif)
diff --git a/docs/Config.md b/docs/Config.md
index 966fce0f4..dde60382a 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -249,9 +249,8 @@ keybinding:
amendToCommit: 'A'
pickCommit: 'p' # pick commit (when mid-rebase)
revertCommit: 't'
- cherryPickCopy: 'c'
- cherryPickCopyRange: 'C'
- pasteCommits: 'v'
+ cherryPickCopy: 'C'
+ pasteCommits: 'V'
tagCommit: 'T'
checkoutCommit: '<space>'
resetCherryPick: '<c-R>'
diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md
index b96d22ec6..04db47490 100644
--- a/docs/keybindings/Keybindings_en.md
+++ b/docs/keybindings/Keybindings_en.md
@@ -88,7 +88,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: Move commit down one
<kbd>&lt;c-k&gt;</kbd>: Move commit up one
- <kbd>v</kbd>: Paste commits (cherry-pick)
+ <kbd>V</kbd>: Paste commits (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Amend commit with staged changes
<kbd>a</kbd>: Set/Reset commit author
@@ -101,8 +101,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: Copy commit (cherry-pick)
- <kbd>C</kbd>: Copy commit range (cherry-pick)
+ <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: Search the current view by text
@@ -248,8 +247,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: Copy commit (cherry-pick)
- <kbd>C</kbd>: Copy commit range (cherry-pick)
+ <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View commits
@@ -316,8 +314,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: Copy commit (cherry-pick)
- <kbd>C</kbd>: Copy commit range (cherry-pick)
+ <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
diff --git a/docs/keybindings/Keybindings_ja.md b/docs/keybindings/Keybindings_ja.md
index 4365e3685..3f7f9fb01 100644
--- a/docs/keybindings/Keybindings_ja.md
+++ b/docs/keybindings/Keybindings_ja.md
@@ -70,8 +70,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: コミットをコピー (cherry-pick)
- <kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
+ <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
@@ -107,7 +106,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: コミットを1つ下に移動
<kbd>&lt;c-k&gt;</kbd>: コミットを1つ上に移動
- <kbd>v</kbd>: コミットを貼り付け (cherry-pick)
+ <kbd>V</kbd>: コミットを貼り付け (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: ステージされた変更でamendコミット
<kbd>a</kbd>: Set/Reset commit author
@@ -120,8 +119,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: コミットをコピー (cherry-pick)
- <kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
+ <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: 検索を開始
@@ -348,8 +346,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: コミットをコピー (cherry-pick)
- <kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
+ <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: コミットを閲覧
diff --git a/docs/keybindings/Keybindings_ko.md b/docs/keybindings/Keybindings_ko.md
index 7d60e1b07..df5024617 100644
--- a/docs/keybindings/Keybindings_ko.md
+++ b/docs/keybindings/Keybindings_ko.md
@@ -57,8 +57,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: 커밋을 복사 (cherry-pick)
- <kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
+ <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 커밋 보기
@@ -88,8 +87,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: 커밋을 복사 (cherry-pick)
- <kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
+ <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
@@ -270,7 +268,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: 커밋을 1개 아래로 이동
<kbd>&lt;c-k&gt;</kbd>: 커밋을 1개 위로 이동
- <kbd>v</kbd>: 커밋을 붙여넣기 (cherry-pick)
+ <kbd>V</kbd>: 커밋을 붙여넣기 (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Amend commit with staged changes
<kbd>a</kbd>: Set/Reset commit author
@@ -283,8 +281,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options
- <kbd>c</kbd>: 커밋을 복사 (cherry-pick)
- <kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
+ <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: 검색 시작
diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md
index 1a1d432d5..1ffd1ddcc 100644
--- a/docs/keybindings/Keybindings_nl.md
+++ b/docs/keybindings/Keybindings_nl.md
@@ -151,7 +151,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash bovenstaande commits
<kbd>&lt;c-j&gt;</kbd>: Verplaats commit 1 naar beneden
<kbd>&lt;c-k&gt;</kbd>: Verplaats commit 1 naar boven
- <kbd>v</kbd>: Plak commits (cherry-pick)
+ <kbd>V</kbd>: Plak commits (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Wijzig commit met staged veranderingen
<kbd>a</kbd>: Set/Reset commit author
@@ -164,8 +164,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties
- <kbd>c</kbd>: Kopieer commit (cherry-pick)
- <kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
+ <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden
<kbd>/</kbd>: Start met zoeken
@@ -227,8 +226,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties
- <kbd>c</kbd>: Kopieer commit (cherry-pick)
- <kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
+ <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk commits
@@ -316,8 +314,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties
- <kbd>c</kbd>: Kopieer commit (cherry-pick)
- <kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
+ <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden
diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md
index 3290d6e38..8b1061824 100644
--- a/docs/keybindings/Keybindings_pl.md
+++ b/docs/keybindings/Keybindings_pl.md
@@ -72,7 +72,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Spłaszcz wszystkie commity naprawcze powyżej zaznaczonych commitów (autosquash)
<kbd>&lt;c-j&gt;</kbd>: Przenieś commit 1 w dół
<kbd>&lt;c-k&gt;</kbd>: Przenieś commit 1 w górę
- <kbd>v</kbd>: Wklej commity (przebieranie)
+ <kbd>V</kbd>: Wklej commity (przebieranie)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Popraw commit zmianami z poczekalni
<kbd>a</kbd>: Set/Reset commit author
@@ -85,8 +85,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu
- <kbd>c</kbd>: Kopiuj commit (przebieranie)
- <kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
+ <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita
<kbd>/</kbd>: Search the current view by text
@@ -225,8 +224,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu
- <kbd>c</kbd>: Kopiuj commit (przebieranie)
- <kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
+ <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View commits
@@ -309,8 +307,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu
- <kbd>c</kbd>: Kopiuj commit (przebieranie)
- <kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
+ <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita
diff --git a/docs/keybindings/Keybindings_ru.md b/docs/keybindings/Keybindings_ru.md
index 76cec5c5f..b2904d335 100644
--- a/docs/keybindings/Keybindings_ru.md
+++ b/docs/keybindings/Keybindings_ru.md
@@ -127,8 +127,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса
- <kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick)
- <kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
+ <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть коммиты
@@ -153,7 +152,7 @@ _Связки клавиш_
<kbd>S</kbd>: Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)
<kbd>&lt;c-j&gt;</kbd>: Переместить коммит вниз на один
<kbd>&lt;c-k&gt;</kbd>: Переместить коммит вверх на один
- <kbd>v</kbd>: Вставить отобранные коммиты (cherry-pick)
+ <kbd>V</kbd>: Вставить отобранные коммиты (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Править последний коммит с проиндексированными изменениями
<kbd>a</kbd>: Установить/убрать автора коммита
@@ -166,8 +165,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса
- <kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick)
- <kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
+ <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента
<kbd>/</kbd>: Найти
@@ -224,8 +222,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса
- <kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick)
- <kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
+ <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента
diff --git a/docs/keybindings/Keybindings_zh-CN.md b/docs/keybindings/Keybindings_zh-CN.md
index 333cfada5..1496f8624 100644
--- a/docs/keybindings/Keybindings_zh-CN.md
+++ b/docs/keybindings/Keybindings_zh-CN.md
@@ -57,8 +57,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项
- <kbd>c</kbd>: 复制提交(拣选)
- <kbd>C</kbd>: 复制提交范围(拣选)
+ <kbd>C</kbd>: 复制提交(拣选)
<kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交
@@ -112,8 +111,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项
- <kbd>c</kbd>: 复制提交(拣选)
- <kbd>C</kbd>: 复制提交范围(拣选)
+ <kbd>C</kbd>: 复制提交(拣选)
<kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交的文件
@@ -153,7 +151,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: 压缩在所选提交之上的所有“fixup!”提交(自动压缩)
<kbd>&lt;c-j&gt;</kbd>: 下移提交
<kbd>&lt;c-k&gt;</kbd>: 上移提交
- <kbd>v</kbd>: 粘贴提交(拣选)
+ <kbd>V</kbd>: 粘贴提交(拣选)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: 用已暂存的更改来修补提交
<kbd>a</kbd>: Set/Reset commit author
@@ -166,8 +164,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项
- <kbd>c</kbd>: 复制提交(拣选)
- <kbd>C</kbd>: 复制提交范围(拣选)
+ <kbd>C</kbd>: 复制提交(拣选)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交的文件
<kbd>/</kbd>: 开始搜索
diff --git a/docs/keybindings/Keybindings_zh-TW.md b/docs/keybindings/Keybindings_zh-TW.md
index 81a2c4248..6243eafd4 100644
--- a/docs/keybindings/Keybindings_zh-TW.md
+++ b/docs/keybindings/Keybindings_zh-TW.md
@@ -57,8 +57,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項
- <kbd>c</kbd>: 複製提交 (揀選)
- <kbd>C</kbd>: 複製提交範圍 (揀選)
+ <kbd>C</kbd>: 複製提交 (揀選)
<kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視提交
@@ -153,8 +152,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項
- <kbd>c</kbd>: 複製提交 (揀選)
- <kbd>C</kbd>: 複製提交範圍 (揀選)
+ <kbd>C</kbd>: 複製提交 (揀選)
<kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案
@@ -194,7 +192,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>S</kbd>: 壓縮上方所有的“fixup!”提交 (自動壓縮)
<kbd>&lt;c-j&gt;</kbd>: 向下移動提交
<kbd>&lt;c-k&gt;</kbd>: 向上移動提交
- <kbd>v</kbd>: 貼上提交 (揀選)
+ <kbd>V</kbd>: 貼上提交 (揀選)
<kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: 使用已預存的更改修正提交
<kbd>a</kbd>: 設置/重設提交作者
@@ -207,8 +205,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項
- <kbd>c</kbd>: 複製提交 (揀選)
- <kbd>C</kbd>: 複製提交範圍 (揀選)
+ <kbd>C</kbd>: 複製提交 (揀選)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案
<kbd>/</kbd>: 開始搜尋
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index a966905d0..e9f739a1d 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -418,7 +418,6 @@ type KeybindingCommitsConfig struct {
PickCommit string `yaml:"pickCommit"`
RevertCommit string `yaml:"revertCommit"`
CherryPickCopy string `yaml:"cherryPickCopy"`
- CherryPickCopyRange string `yaml:"cherryPickCopyRange"`
PasteCommits string `yaml:"pasteCommits"`
MarkCommitAsBaseForRebase string `yaml:"markCommitAsBaseForRebase"`
CreateTag string `yaml:"tagCommit"`
@@ -812,9 +811,8 @@ func GetDefaultConfig() *UserConfig {
ResetCommitAuthor: "a",
PickCommit: "p",
RevertCommit: "t",
- CherryPickCopy: "c",
- CherryPickCopyRange: "C",
- PasteCommits: "v",
+ CherryPickCopy: "C",
+ PasteCommits: "V",
MarkCommitAsBaseForRebase: "B",
CreateTag: "T",
CheckoutCommit: "<space>",
diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go
index 551349466..2f120a0f4 100644
--- a/pkg/gui/controllers/basic_commits_controller.go
+++ b/pkg/gui/controllers/basic_commits_controller.go
@@ -14,6 +14,7 @@ var _ types.IController = &BasicCommitsController{}
type ContainsCommits interface {
types.Context
+ types.IListContext
GetSelected() *models.Commit
GetCommits() []*models.Commit
GetSelectedLineIdx() int
@@ -64,13 +65,8 @@ func (self *BasicCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
},
{
Key: opts.GetKey(opts.Config.Commits.CherryPickCopy),
- Handler: self.checkSelected(self.copy),
- Description: self.c.Tr.CherryPickCopy,
- },
- {
- Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange),
Handler: self.checkSelected(self.copyRange),
- Description: self.c.Tr.CherryPickCopyRange,
+ Description: self.c.Tr.CherryPickCopy,
},
{
Key: opts.GetKey(opts.Config.Commits.ResetCherryPick),
@@ -271,12 +267,8 @@ func (self *BasicCommitsController) checkout(commit *models.Commit) error {
})
}
-func (self *BasicCommitsController) copy(commit *models.Commit) error {
- return self.c.Helpers().CherryPick.Copy(commit, self.context.GetCommits(), self.context)
-}
-
func (self *BasicCommitsController) copyRange(*models.Commit) error {
- return self.c.Helpers().CherryPick.CopyRange(self.context.GetSelectedLineIdx(), self.context.GetCommits(), self.context)
+ return self.c.Helpers().CherryPick.CopyRange(self.context.GetCommits(), self.context)
}
func (self *BasicCommitsController) openDiffTool(commit *models.Commit) error {
diff --git a/pkg/gui/controllers/helpers/cherry_pick_helper.go b/pkg/gui/controllers/helpers/cherry_pick_helper.go
index 4f455ca30..61a37220b 100644
--- a/pkg/gui/controllers/helpers/cherry_pick_helper.go
+++ b/pkg/gui/controllers/helpers/cherry_pick_helper.go
@@ -5,6 +5,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking"
"github.com/jesseduffield/lazygit/pkg/gui/types"
+ "github.com/samber/lo"
)
type CherryPickHelper struct {
@@ -45,25 +46,30 @@ func (self *CherryPickHelper) Copy(commit *models.Commit, commitsList []*models.
return self.rerender()
}
-func (self *CherryPickHelper) CopyRange(selectedIndex int, commitsList []*models.Commit, context types.Context) error {
+func (self *CherryPickHelper) CopyRange(commitsList []*models.Commit, context types.IListContext) error {
+ startIdx, endIdx := context.GetList().GetSelectionRange()
+
if err := self.resetIfNecessary(context); err != nil {
return err
}
commitSet := self.getData().SelectedShaSet()
- // find the last commit that is copied that's above our position
- // if there are none, startIndex = 0
- startIndex := 0
- for index, commit := range commitsList[0:selectedIndex] {
- if commitSet.Includes(commit.Sha) {
- startIndex = index
- }
- }
+ allCommitsCopied := lo.EveryBy(commitsList[startIdx:endIdx+1], func(commit *models.Commit) bool {
+ return commitSet.Includes(commit.Sha)
+ })
- for index := startIndex; index <= selectedIndex; index++ {
- commit := commitsList[index]
- self.getData().Add(commit, commitsList)
+ // if all selected commits are already copied, we'll uncopy them
+ if allCommitsCopied {
+ for index := startIdx; index <= endIdx; index++ {
+ commit := commitsList[index]
+ self.getData().Remove(commit, commitsList)
+ }
+ } else {
+ for index := startIdx; index <= endIdx; index++ {
+ commit := commitsList[index]
+ self.getData().Add(commit, commitsList)
+ }
}
return self.rerender()
diff --git a/pkg/i18n/chinese.go b/pkg/i18n/chinese.go
index 0482f4046..8386bce1e 100644
--- a/pkg/i18n/chinese.go
+++ b/pkg/i